diff --git a/Cargo.toml b/Cargo.toml index 9b2a13c7ef..d1bb36da0d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -102,7 +102,7 @@ default-members = [ "explorer-api", ] -exclude = ["explorer", "contracts", "clients/webassembly", "nym-wallet", "nym-connect/mobile/src-tauri", "nym-connect/desktop", "cpu-cycles"] +exclude = ["explorer", "contracts", "clients/webassembly", "nym-wallet", "nym-connect/mobile/src-tauri", "nym-connect/desktop", "cpu-cycles", "lib-25519"] [workspace.package] authors = ["Nym Technologies SA"] diff --git a/lib-25519/Cargo.lock b/lib-25519/Cargo.lock new file mode 100644 index 0000000000..e9e13729f0 --- /dev/null +++ b/lib-25519/Cargo.lock @@ -0,0 +1,23 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "lib_25519" +version = "0.1.0" +dependencies = [ + "cfg-if", + "libc", +] + +[[package]] +name = "libc" +version = "0.2.146" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" diff --git a/lib-25519/Cargo.toml b/lib-25519/Cargo.toml new file mode 100644 index 0000000000..b42fe2ce8b --- /dev/null +++ b/lib-25519/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "lib_25519" +version = "0.1.0" +edition = "2021" +build = "build.rs" +links = "25519" + +[dependencies] +libc = "0.2.140" + +[build-dependencies] +cfg-if = "1" \ No newline at end of file diff --git a/lib-25519/build.rs b/lib-25519/build.rs new file mode 100644 index 0000000000..dccf7dd11d --- /dev/null +++ b/lib-25519/build.rs @@ -0,0 +1,69 @@ +use std::{env, path::PathBuf, process::Command}; + +fn main() { + let out_dir = env::var("OUT_DIR").unwrap(); + let out_path = PathBuf::from(&out_dir); + let source_path = PathBuf::from("lib25519") + .canonicalize() + .expect("cannot canonicalize path"); + + cfg_if::cfg_if! { + if #[cfg(not(any(target_arch = "x86", target_arch = "x86_64", target_arch = "mips", target_arch = "powerpc", target_arch = "powerpc64", target_arch = "arm")))] { + panic!("Unsupported architecture - {}!", env::var("CARGO_CFG_TARGET_ARCH").unwrap(), ) + } + }; + + let mut compile_o_command = Command::new("./configure"); + let compile_o_command = compile_o_command + .current_dir(&source_path) + .arg(format!("--prefix={out_dir}")); + + match compile_o_command.output() { + Ok(output) => { + if !output.status.success() { + panic!("{:?}", unsafe { + std::str::from_utf8_unchecked(&output.stderr) + }) + } + } + Err(e) => panic!("{e}"), + } + + let mut compile_o_command = Command::new("make"); + let compile_o_command = compile_o_command + .current_dir(&source_path) + .arg("-j8") + .arg("install"); + + match compile_o_command.output() { + Ok(output) => { + if !output.status.success() { + panic!("{:?}", unsafe { + std::str::from_utf8_unchecked(&output.stderr) + }) + } + } + Err(e) => panic!("{e}"), + } + + println!( + "cargo:rustc-link-search=native={}", + out_path.join("lib").to_str().unwrap() + ); + println!("cargo:rustc-link-lib=static=25519"); + println!("cargo:rustc-link-lib=static=randombytes_kernel"); + + let mut compile_o_command = Command::new("make"); + let compile_o_command = compile_o_command.current_dir(source_path).arg("clean"); + + match compile_o_command.output() { + Ok(output) => { + if !output.status.success() { + panic!("{:?}", unsafe { + std::str::from_utf8_unchecked(&output.stderr) + }) + } + } + Err(e) => panic!("{e}"), + } +} diff --git a/lib-25519/lib25519/.reuse/dep5 b/lib-25519/lib25519/.reuse/dep5 new file mode 100644 index 0000000000..f27f713741 --- /dev/null +++ b/lib-25519/lib25519/.reuse/dep5 @@ -0,0 +1,9 @@ +Files: * +Copyright: 2022 Kaushik Nath +Copyright: 2011-2022 Daniel J. Bernstein +Copyright: 2015 Tung Chou +Copyright: 2011-2014 Peter Schwabe +Copyright: 2011 Niels Duif +Copyright: 2011 Tanja Lange +Copyright: 2011 Bo-Yin Yang +License: CC0-1.0 diff --git a/lib-25519/lib25519/CONTRIBUTORS b/lib-25519/lib25519/CONTRIBUTORS new file mode 100644 index 0000000000..993c53b0e2 --- /dev/null +++ b/lib-25519/lib25519/CONTRIBUTORS @@ -0,0 +1,297 @@ +lib25519 draws on many previous implementations listed below, plus new +speedups from Kaushik Nath and new infrastructure work and factoring +from Daniel J. Bernstein. All software is in the public domain. Since +some organizations require licenses, lib25519 is also CC0-licensed. + +Some code was originally copied from public-domain code in the SUPERCOP +benchmarking framework. See https://bench.cr.yp.to/supercop.html for +SUPERCOP releases. The following small changes from code available in +SUPERCOP are made in lib25519 without further comment: + + * Returning void rather than int for functions that never fail in + lib25519. + * Message lengths long long rather than unsigned long long. + * Defining various constants in .c files (to simplify PIC handling) + instead of .S files. + * Moving some C files to shared-*.c (which in lib25519 means that + these files are compiled by only one compiler). + * Using CRYPTO_SHARED_NAMESPACE rather than CRYPTO_NAMESPACE for + symbols defined in *.S and shared-*.c. + * Adding various "linker define" and "linker use" lines. + +Larger changes from code in SUPERCOP, such as new code divisions across +lib25519 primitives, are indicated below. + +Sources of Curve25519 software (this is not a comprehensive list, just +the software that lib25519 is derived from): + + * Daniel J. Bernstein. "Curve25519: new Diffie-Hellman speed + records." Pages 207–228 in Public key cryptography—PKC 2006, 9th + international conference on theory and practice in public-key + cryptography, New York, NY, USA, April 24–26, 2006, proceedings, + edited by Moti Yung, Yevgeniy Dodis, Aggelos Kiayias, Tal Malkin, + Lecture Notes in Computer Science 3958, Springer, 2006, ISBN + 3-540-33851-9. + + This is the source of the Curve25519 design, the X25519 design, and + various speedups. Most of the software from that paper is specific + to a variety of 32-bit platforms (radix 2^25.5 or radix 2^21.25), + but the portable supercop/crypto_scalarmult/curve25519/ref10 (radix + 2^25.5) is derived from this. + + lib25519/crypto_nP/montgomery25519/ref10 starts with + supercop/crypto_scalarmult/curve25519/ref10, and tweaks the API to + provide crypto_nP instead of crypto_scalarmult. Inversion is + factored out, producing crypto_pow/inv25519/ref10. The trivial + crypto_scalarmult_base wrapper is factored out, producing + crypto_nG/montgomery25519/ref/base.c; lib25519 has faster nG + functions, but intentionally provides ref for situations where + speed is outweighed by simplicity, assurance, code size, etc. + + * supercop/crypto_scalarmult/curve25519/donna_c64 (radix 2^51) from + Adam Langley. + + lib25519/crypto_nP/montgomery25519/donna_c64 starts from this and + tweaks the API to provide crypto_nP instead of crypto_scalarmult + (and removes crypto_scalarmult_base). crypto_pow/inv25519/donna_c64 + is factored out. + + * Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, Bo-Yin + Yang. "High-speed high-security signatures." Pages 124–142 in + Cryptographic hardware and embedded systems—CHES 2011, 13th + international workshop, Nara, Japan, September 28–October 1, 2011, + proceedings, edited by Bart Preneel, Tsuyoshi Takagi, Lecture Notes + in Computer Science 6917, Springer, 2011, ISBN 978-3-642-23950-2. + Journal version: Journal of Cryptographic Engineering 2 (2012), + 77–89. + + This is the source of the Ed25519 design and various X25519/Ed25519 + speedups for 64-bit Intel/AMD platforms, in particular producing + supercop/crypto_{scalarmult/curve,sign/ed}25519/amd64-{51,64}* + (radix 2^51 and radix 2^64 respectively). Peter Schwabe led the + implementation work. + + lib25519/crypto_nP/montgomery25519/amd64-51 starts from + supercop/crypto_scalarmult/curve25519/amd64-51 and tweaks the API + to provide crypto_nP instead of crypto_scalarmult (and removes + crypto_scalarmult_base). crypto_nG/merged25519/amd64-51 (for + fixed-base-point multiplication), crypto_mGnP/ed25519/amd64-51 (for + double-scalar multiplication), and crypto_sign/ed25519/amd64 (for + the remaining signing components) factor + supercop/crypto_sign/ed25519/amd64-51 into smaller pieces. + crypto_pow/inv25519/amd64-51 is also factored out. "SMALLTABLES" + support is removed. Support for batch verification is removed, + although it could reappear in a subsequent lib25519 release. + + Similar comments apply to amd64-64 and ref10. A compiler warning + is eliminated (window size 64 in amd64-64-24k/sc25519.h). + + * Tung Chou. "Sandy2x: New Curve25519 Speed Records." SAC 2015. + + This is the source of various X25519 speedups using 256-bit vector + instructions, specifically AVX vector instructions in Intel's Sandy + Bridge, in particular producing + supercop/crypto_scalarmult/curve25519/sandy2x (radix 2^25.5). + + lib25519/crypto_{nP,nG}/montgomery25519/sandy2x start from + supercop/crypto_scalarmult/curve25519/sandy2x, and tweak the API to + provide crypto_nP and crypto_nG instead of crypto_scalarmult and + crypto_scalarmult_base respectively. The top bit of the incoming + point is cleared. crypto_pow/inv25519/sandy2x is factored out. + + * Kaushik Nath and Palash Sarkar, "Efficient arithmetic in + (pseudo-)Mersenne prime order fields", Advances in Mathematics of + Communications 16 (2022), pages 303–348. + + Original release: + https://github.com/kn-cs/pmp-farith/tree/master/gf-p2-255-19/SL + https://github.com/kn-cs/pmp-farith/tree/master/gf-p2-255-19/USL1 + + The "SL" software is the source of various speedups to the amd64-64 + software, producing the "maa4" versions of fe25519_mul.S, + fe25519_square.S, and fe25519_nsquare.S. These .S files are used + inside the following lib25519 directories: + crypto_mGnP/ed25519/amd64-avx2-10l-maa4 + crypto_mGnP/ed25519/amd64-avx2-9l-maa4 + crypto_mGnP/ed25519/amd64-maa4 + crypto_nG/merged25519/amd64-avx2-10l-maa4 + crypto_nG/merged25519/amd64-avx2-9l-maa4 + crypto_nG/merged25519/amd64-maa4 + crypto_nP/montgomery25519/amd64-avx2-hey10l-maa4 + crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4 + crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4 + crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4 + crypto_nP/montgomery25519/amd64-maa4 + crypto_pow/inv25519/amd64-maa4 + + The "USL" software is the source of various speedups to the + amd64-51 software, producing the "maa5" versions of fe25519_mul.S + and fe25519_nsquare.S. These .S files are used inside the following + lib25519 directories: + crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5 + crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5 + crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5 + crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5 + crypto_pow/inv25519/amd64-maa5 + + * Kaushik Nath and Palash Sarkar, "Security and efficiency trade-offs + for elliptic curve Diffie-Hellman at the 128-bit and 224-bit + security levels." J. Cryptogr. Eng. 12(1): 107-121 (2022). + + Original release: + https://github.com/kn-cs/x25519/tree/master/intel64-mxaa-4limb + https://github.com/kn-cs/x25519 + + This "mxaa-4limb" software is the source of various speedups to + "maa4" on CPUs supporting BMI2 instructions (e.g., Intel Haswell + from 2013), in particular producing the "mxaa" versions of + fe25519_mul.S and fe25519_nsquare.S. These .S files are used inside + the following lib25519 directories: + crypto_mGnP/ed25519/amd64-avx2-10l-mxaa + crypto_mGnP/ed25519/amd64-avx2-9l-mxaa + crypto_mGnP/ed25519/amd64-mxaa + crypto_nG/merged25519/amd64-avx2-10l-mxaa + crypto_nG/merged25519/amd64-avx2-9l-mxaa + crypto_nG/merged25519/amd64-mxaa + crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa + crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa + crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa + crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa + crypto_nP/montgomery25519/amd64-mxaa + crypto_pow/inv25519/amd64-mxaa + + This software is also the source of the following three different + Montgomery-ladder functions, where the third also builds on the + "maax" work listed below: + crypto_nP/montgomery25519/amd64-maa4/mladder.S + crypto_nP/montgomery25519/amd64-mxaa/mladder.S + crypto_nP/montgomery25519/amd64-maax/mladder.S + + * Kaushik Nath and Palash Sarkar, "Efficient arithmetic in + (pseudo-)Mersenne prime order fields", Advances in Mathematics of + Communications 16 (2022), pages 303–348. Original release: + https://github.com/kn-cs/pmp-farith/tree/master/gf-p2-255-19/SLDCC + + This is the source of various speedups to "mxaa" on CPUs that also + support ADX instructions (e.g., Intel Broadwell from 2014), in + particular producing the "maax" versions of fe25519_mul.S, + fe25519_square.S, and fe25519_nsquare.S. These .S files are used + inside the following lib25519 directories: + crypto_mGnP/ed25519/amd64-avx2-10l-maax + crypto_mGnP/ed25519/amd64-avx2-9l-maax + crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax + crypto_mGnP/ed25519/amd64-maax + crypto_nG/merged25519/amd64-avx2-10l-maax + crypto_nG/merged25519/amd64-avx2-9l-maax + crypto_nG/merged25519/amd64-avx512ifma-5l-maax + crypto_nG/merged25519/amd64-maax + crypto_nP/montgomery25519/amd64-avx2-hey10l-maax + crypto_nP/montgomery25519/amd64-avx2-hey9l-maax + crypto_nP/montgomery25519/amd64-avx2-ns10l-maax + crypto_nP/montgomery25519/amd64-avx2-ns9l-maax + crypto_nP/montgomery25519/amd64-avx512-hey10l-maax + crypto_nP/montgomery25519/amd64-avx512-hey9l-maax + crypto_nP/montgomery25519/amd64-avx512-ns10l-maax + crypto_nP/montgomery25519/amd64-avx512-ns9l-maax + crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax + crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax + crypto_nP/montgomery25519/amd64-maax + crypto_pow/inv25519/amd64-maax + + * Kaushik Nath and Palash Sarkar, "Efficient 4-Way Vectorizations of + the Montgomery Ladder". IEEE Trans. Computers 71(3): 712-723 + (2022). Original release: + https://github.com/kn-cs/vec-ladder/tree/master/Curve25519 + + This is the source of the "hey10l" (radix 2^25.5), "hey9l" (radix + 2^29), "ns10l" (radix 2^25.5), and "ns9l" (radix 2^29) versions of + mladder.S for CPUs that also support 256-bit AVX2 instructions + (e.g., Intel Haswell from 2013). In lib25519, these four .S files + are used in 16 directories: + crypto_nP/montgomery25519/amd64-avx2-hey10l-{maa4,maa5,maax,mxaa} + crypto_nP/montgomery25519/amd64-avx2-hey9l-{maa4,maa5,maax,mxaa} + crypto_nP/montgomery25519/amd64-avx2-ns10l-{maa4,maa5,maax,mxaa} + crypto_nP/montgomery25519/amd64-avx2-ns9l-{maa4,maa5,maax,mxaa} + + * Kaushik Nath, new Montgomery-ladder code new in lib25519 (no paper + yet) for CPUs supporting AVX-512 instructions (e.g., Intel + Skylake-X from 2017). These are six files in lib25519: + crypto_nP/montgomery25519/amd64-avx512-hey10l-maax + crypto_nP/montgomery25519/amd64-avx512-hey9l-maax + crypto_nP/montgomery25519/amd64-avx512-ns10l-maax + crypto_nP/montgomery25519/amd64-avx512-ns9l-maax + crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax + crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax + + * Kaushik Nath, nine versions of fixed-base-point + scalar-multiplication code new in lib25519 (no paper yet) for + various platforms: + crypto_nG/merged25519/amd64-avx2-10l-maa4/ge25519_base.S + crypto_nG/merged25519/amd64-avx2-10l-maax/ge25519_base.S + crypto_nG/merged25519/amd64-avx2-10l-mxaa/ge25519_base.S + crypto_nG/merged25519/amd64-avx2-9l-maa4/ge25519_base.S + crypto_nG/merged25519/amd64-avx2-9l-maax/ge25519_base.S + crypto_nG/merged25519/amd64-avx2-9l-mxaa/ge25519_base.S + crypto_nG/merged25519/amd64-avx512ifma-5l-maax/ge25519_base.S + crypto_nG/merged25519/amd64-maa4/ge25519_base.S + crypto_nG/merged25519/amd64-maax/ge25519_base.S + crypto_nG/merged25519/amd64-mxaa/ge25519_base.S + + * Kaushik Nath, ten versions of double-scalar-multiplication code new + in lib25519 (no paper yet) for various platforms. Each version has + precompute.S and process.S: + + crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_double_scalarmult_precompute.S + crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_double_scalarmult_precompute.S + crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_double_scalarmult_precompute.S + crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_double_scalarmult_precompute.S + crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_double_scalarmult_precompute.S + crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_double_scalarmult_precompute.S + crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_double_scalarmult_precompute.S + crypto_mGnP/ed25519/amd64-maa4/ge25519_double_scalarmult_precompute.S + crypto_mGnP/ed25519/amd64-maax/ge25519_double_scalarmult_precompute.S + crypto_mGnP/ed25519/amd64-mxaa/ge25519_double_scalarmult_precompute.S + + crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_double_scalarmult_process.S + crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_double_scalarmult_process.S + crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_double_scalarmult_process.S + crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_double_scalarmult_process.S + crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_double_scalarmult_process.S + crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_double_scalarmult_process.S + crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_double_scalarmult_process.S + crypto_mGnP/ed25519/amd64-maa4/ge25519_double_scalarmult_process.S + crypto_mGnP/ed25519/amd64-maax/ge25519_double_scalarmult_process.S + crypto_mGnP/ed25519/amd64-mxaa/ge25519_double_scalarmult_process.S + +Almost all of the crypto_pow/inv25519 implementations use exponentiation, +but there is also a different implementation from the following source: + + * Daniel J. Bernstein, Bo-Yin Yang. "Fast constant-time gcd + computation and modular inversion." IACR Transactions on + Cryptographic Hardware and Embedded Systems 2019 issue 3 (2019), + 340–398. + + This is the source of the "safegcd" algorithm and software. Further + speedups (no paper yet; ideas from Peter Dettman, Gregory Maxwell, + and Pieter Wuille) have produced the "inverse25519skylake" software + available here: https://gcd.cr.yp.to/software.html + + lib25519/crypto_pow/inv25519/amd64-safegcd is inverse25519skylake, + tweaked to provide the crypto_pow API and to clear the top bit of + the input. + +For lower-layer SHA-512 functions: + + * Daniel J. Bernstein, supercop/crypto_hash*/sha512/*. In lib25519, + some unused variables are removed in crypto_hashblocks/sha512/avx + to eliminate compiler warnings. + +Most of the lib25519 infrastructure, such as the run-time implementation +selector automatically guided by CPU type and previous benchmarks, is +new in lib25519 from Daniel J. Bernstein. Portions of autogen-speed +(generating lib25519-speed.c) and autogen-test (generating +lib25519-test.c) are based on benchmarking software and test software in +SUPERCOP by Daniel J. Bernstein. The symmetric-cryptography code for +generating pseudorandom test inputs and hashing test outputs is adapted +from TweetNaCl, a library by Daniel J. Bernstein, Wesley Janssen, Tanja +Lange, and Peter Schwabe. diff --git a/lib-25519/lib25519/INSTALL b/lib-25519/lib25519/INSTALL new file mode 100644 index 0000000000..f56c2a3bc9 --- /dev/null +++ b/lib-25519/lib25519/INSTALL @@ -0,0 +1,53 @@ +Prerequisites: python3; gcc and/or clang. + +For sysadmins, to install in /usr/local/{include,lib,bin}: + + ./configure && make -j8 install + +For users, to install in $HOME/{include,lib,bin}: + + ./configure --prefix=$HOME && make -j8 install + +For distributors creating a package: Run + + ./configure --prefix=/usr && make -j8 + +and then follow your usual packaging procedures for the .h files in +build/0/package/include, the libraries in build/0/package/lib, and the +test programs in build/0/package/bin. + +The long-term plan is to split off some components of lib25519 into +their own packages, and distributors may already wish to package these +components accordingly: + + * -lcpucycles will be its own package. + + * -lrandombytes_kernel will be its own package. + + * -lrandombytes will be an indirection layer providing randombytes.h + and supporting an ecosystem of randombytes() implementations (via, + e.g., Debian's /etc/alternatives), such as -lrandombytes_kernel, + -lrandombytes_per_process_rng, etc. + + * -l25519 will be the main lib25519 package, using -lrandombytes and + -lcpucycles. + +lib25519-test already uses -l25519 without -lrandombytes: it substitutes +its own knownrandombytes() to generate test vectors. + +More options: You can run + + ./configure --host=amd64 + +to override ./configure's guess of the architecture that it should +compile for. The architecture controls which implementations to try +(see crypto_*/*/*/architectures) and which compilers to try (see +compilers/*). + +Inside the build directory, 0 is symlinked to amd64 for --host=amd64. +Running "make clean" removes build/amd64. Re-running ./configure +automatically starts with "make clean". + +A subsequent ./configure --host=arm will create build/arm and symlink +0 -> arm, without touching an existing build/amd64. However, +cross-compilers aren't yet selected automatically. diff --git a/lib-25519/lib25519/INTERNALS.md b/lib-25519/lib25519/INTERNALS.md new file mode 100644 index 0000000000..3abf284897 --- /dev/null +++ b/lib-25519/lib25519/INTERNALS.md @@ -0,0 +1,405 @@ +This file explains the internal structure of lib25519, and explains how +to add new instruction sets and new implementations. + +## Primitives + +The directories `crypto_*/*` inside lib25519 define the following +primitives (see also `autogen-test` for Python versions of the +mathematical primitives): + +* `crypto_verify/32`: `crypto_verify_32(s,t)` returns 0 when the 32-byte + arrays `s` and `t` are equal, otherwise `-1`. This function takes + constant time. + +* `crypto_hashblocks/sha512`: `crypto_hashblocks_sha512(h,x,xlen)` + updates an intermediate SHA-512 hash `h` using all of the full + 128-byte blocks at the beginning of the `xlen`-byte array `x`, and + returns the number of bytes left over, namely `xlen` mod 128. This + function takes time that depends on `xlen` but not on the contents of + `h` or `x`. + +* `crypto_hash/sha512`: `crypto_hash_sha512(h,x,xlen)` computes the + SHA-512 hash `h` of the `xlen`-byte array `x`. This function takes + time that depends on `xlen` but not on the contents of `x`. + +* `crypto_pow/inv25519`: `crypto_pow_inv25519(y,x)` computes the + 2^255^−21 power `y` of an integer `x` modulo 2^255^−19. This is the + same as the inverse of `x` modulo 2^255^−19 if `x` is not divisible by + 2^255^−19. The integers `x` and `y` are represented as a 32-byte array + in little-endian form. This function takes constant time. + + This function guarantees that the output `y` is frozen modulo + 2^255^−19, i.e., completely reduced to the range 0,1,...,2^255^−20. The + caller is expected to freeze `x` before calling this function. The + function accepts `x` in the range {0,1,...,2^256^−1} while ignoring the + top bit (the coefficient of 2^255^ in binary): i.e., the function + reduces `x` modulo 2^255^ and then modulo 2^255^−19. + +* `crypto_nP/montgomery25519`: `crypto_nP_montgomery25519(nP,n,P)` + computes the X25519 function: in short, if a Curve25519 point has + x-coordinate `P` then the `n`th multiple of the point has x-coordinate + `nP`. The inputs and outputs are represented as 32-byte arrays in + little-endian form. This function takes constant time. + + X25519 is defined for `n` in the range 2^254^ + 8{0,1,2,3,...,2^251^−1}. + `crypto_nP_montgomery25519` allows `n` in the wider range + {0,1,...,2^256^−1}, and in all cases computes `m`th multiples where `m` + is defined as follows: make a copy of `n`, clear the top bit, set the + next bit, and clear the bottom three bits. + + X25519 guarantees that the output `nP` is frozen. It does not require + the input to be frozen; also, it allows the input to be on the twist, + and to have small order. + + `crypto_nP_montgomery25519` clears the top bit of `P` before applying + the X25519 function. Callers that want the X25519 function on `P` with + the top bit set have to reduce modulo 2^255^−19 for themselves. + +* `crypto_nG/merged25519`: `crypto_nG_merged25519(nG,n)` reads an + integer `n` in the range {0,1,...,2^256^−1} and outputs a frozen + integer `nG` modulo 2^255^−19, possibly with the top bit set (i.e., + adding 2^255^) as described below. Both `n` and `nG` are represented + as 32-byte arrays in little-endian form. This function takes constant + time. + + If the top bit of `n` is clear then `nG` is the Edwards y-coordinate + of the `n`th multiple of G, and the top bit is set exactly when the + Edwards x-coordinate is odd. Otherwise `nG` is the Montgomery + x-coordinate of the (`n`−2^255^)th multiple of G, and the top bit is + clear. Here G is the standard Curve25519 base point, which has + Montgomery x-coordinate 9, Edwards y-coordinate 4/5, and even Edwards + x-coordinate. + +* `crypto_nG/montgomery25519`: `crypto_nG_montgomery25519(nG,n)` is + the same as `crypto_nP_montgomery(nG,n,G)` where `G` is the array + {9,0,0,...,0}. This function takes constant time. + + The point of `crypto_nG` is to save time (using a small table + precomputed from `G`) compared to the more general `crypto_nP`. This + has the disadvantage of being more complicated, which is particularly + important given that lib25519 has not yet been verified, and in any + case increases code size noticeably for X25519. There is a `ref` + implementation of `crypto_nG` that simply calls `crypto_nP`, and + setting sticky bits on the other implementation directories + (`chmod +t crypto_nG/montgomery25519/*; chmod -t crypto_nG/montgomery25519/ref`) + will force lib25519 to use `ref`. + +* `crypto_mGnP/ed25519`: `crypto_mGnP_ed25519(mGnP,m,n,P)` computes + `(m mod L)G−(n mod L)P` in Edwards coordinates, where `L` is the prime + number 2^252^+27742317777372353535851937790883648493 and `G` is the + same standard base point. This function takes time that depends on the + inputs. + + The input `m` is an integer in the range {0,1,...,2^256^−1} + represented as a 32-byte array in little-endian form. Any `m` outside + the range {0,1,...,L−1} triggers a failure, which is reported as + described below. + + The input `n` is an integer in the range {0,1,...,2^512^−1} + represented as a 64-byte array in little-endian form. + + The input point `P` is represented as a 32-byte array as follows: the + (frozen) Edwards y-coordinate of `P` in {0,1,...,2^255^−20} is stored + in little-endian form, and then the top bit is set exactly when the + (frozen) Edwards x-coordinate of `P` is odd. An input 32-byte array + that does not have this form is instead interpreted as the point `P` + with Edwards coordinates (...8,26), and triggers a failure, reported + as described below. + + The output is a 33-byte array. The first 32 bytes are the output point + `(m mod L)G−(n mod L)P`, represented the same way as `P`. The last + byte is 1 on success and 0 on failure. + +* `crypto_dh/x25519`: `crypto_dh_x25519_keypair(pk,sk)` generates a + 32-byte X25519 public key `pk` and the corresponding 32-byte secret + key `sk`. This function is the composition of `randombytes` to + generate `sk` and `crypto_nG_montgomery25519` to generate `pk`. + + `crypto_dh_x25519(k,pk,sk)` generates a 32-byte shared secret `k` + given a public key `pk` and a secret key `sk`. This function is the + same as `crypto_nP_montgomery25519`. + +* `crypto_sign/ed25519`: `crypto_sign_ed25519_keypair(pk,sk)` generates + a 32-byte Ed25519 public key `pk` and the corresponding 64-byte secret + key `sk`. This function takes constant time. + + `crypto_sign_ed25519(sm,&smlen,m,mlen,sk)` generates an `smlen`-byte + signed message `sm` given an `mlen`-byte message `m` and a secret key + `sk`. The caller is required to allocate `mlen+64` bytes for `sm`. The + function always sets `smlen` to `mlen+64`. This function takes time + that depends on `mlen` but not on the other inputs. + + `crypto_sign_ed25519_open(m,&mlen,sm,smlen,pk)` generates an + `mlen`-byte message `m` given an `smlen`-byte signed message `sm` and + a public key `pk`, and returns 0. However, if `sm` is invalid, this + function returns `-1`, sets `mlen` to `-1`, and clears `m`. The caller is + required to allocate `smlen` (not just `smlen-64`) bytes for `m`, for + example using the same array for `sm` and `m`. This function takes time + that depends on its inputs. + +lib25519 includes a command-line utility `lib25519-test` that runs some +tests for each of these primitives, and another utility `lib25519-speed` +that measures cycle counts for each of these primitives. + +The stable lib25519 API functions are built from the above primitives: + +* `lib25519_dh_keypair` is `crypto_dh_x25519_keypair`. +* `lib25519_dh` is `crypto_dh_x25519`. +* `lib25519_sign_keypair` is `crypto_sign_ed25519_keypair`. +* `lib25519_sign` is `crypto_sign_ed25519`. +* `lib25519_sign_open` is `crypto_sign_ed25519_open`. + +Some changes are anticipated in the list of primitives, but these API +functions will remain stable. + +As in SUPERCOP and NaCl, message lengths intentionally use `long long`, +not `size_t`. In lib25519, message lengths are signed. + +## Implementations + +A single primitive can, and usually does, have multiple implementations. +Each implementation is in its own subdirectory. The implementations are +required to have exactly the same input-output behavior, and to some +extent this is tested, although it is not yet formally verified. + +Different implementations typically offer different tradeoffs between +portability, simplicity, and efficiency. For example, +`crypto_nP/montgomery25519/ref10` is portable; +`crypto_nP/montgomery25519/amd64-maax` is faster and less portable. + +Each unportable implementation has an `architectures` file. Each line in +this file identifies a CPU instruction set (and ABI) where the +implementation works. For example, +`crypto_nP/montgomery25519/amd64-maax/architectures` has one line +`amd64 bmi2 adx`, meaning that the implementation works on CPUs that +have the Intel/AMD 64-bit instruction set with the BMI2 and ADX +instruction-set extensions. The top-level `compilers` directory shows +(among other things) the allowed instruction-set names such as `bmi2`. + +At run time, lib25519 checks the CPU where it is running, and selects +an implementation where `architectures` is compatible with that CPU. +Each primitive makes its own selection once per program startup, using +the compiler's `ifunc` mechanism. This type of run-time selection means, +for example, that an `amd64` CPU without AVX2 can share binaries with an +`amd64` CPU with AVX2. However, correctness requires instruction sets to +be preserved by migration across cores via the OS kernel, VM migration, +etc. + +The compiler has a `target` mechanism that makes an `ifunc` selection +based on CPU architectures. Instead of using the `target` mechanism, +lib25519 uses a more sophisticated mechanism that also accounts for +benchmarks collected in advance of compilation. + +## Compilers + +lib25519 tries different C compilers for each implementation. For +example, `compilers/default` lists the following compilers: + + gcc -Wall -fPIC -fwrapv -O2 + clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 + +Sometimes `gcc` produces better code, and sometimes `clang` produces +better code. + +As another example, `compilers/amd64+avx` lists the following compilers: + + gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge + clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge + +The `-mavx` option tells these compilers that they are free to use the +AVX instruction-set extension. + +Code compiled using the compilers in `compilers/amd64+avx` will be +considered at run time by the lib25519 selection mechanism if the +`supports()` function in `compilers/amd64+avx.c` returns nonzero. This +function checks whether the run-time CPU supports AVX (and SSE and so on, +and OSXSAVE with XMM/YMM being saved; +[https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85100](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85100) +says that all versions of gcc until 2018 handled this incorrectly in +`target`). Similar comments apply to other `compilers/*` files. + +If some compilers fail (for example, clang is not installed, or the +compiler version is too old to support the compiler options used in +lib25519), the lib25519 compilation process will try its best to produce +a working library using the remaining compilers, even if this means +lower performance. + +## Trimming + +By default, to reduce size of the compiled library, the lib25519 +compilation process trims the library down to the implementations that +are selected by lib25519's selection mechanism (across all CPUs; the +library remains portable, not tied to the compilation CPU). + +This trimming is handled at link time rather than compile time to +increase the chance that, even if some implementations are broken by +compiler "upgrades", the library will continue to build successfully. + +To avoid this trimming, pass the `--notrim` option to `./configure`. +All implementations that compile are then included in the library, +tested by `lib2519-test`, and measured by `lib25519-speed`. You'll want +to avoid trimming if you're adding new instruction sets or new +implementations (see below), so that you can run tests and benchmarks of +code that isn't selected yet. + +## How to recompile after changes + +If you make changes in the lib25519 source directory, you have to run +`./configure` again to repopulate the build directory. Simply running +`make` again doesn't suffice. + +By default, `./configure` cleans the build directory first, so `make` +will recompile everything. This can be on the scale of seconds if you +have enough cores, but maybe you're developing on a slower machine. Two +options are currently available to accelerate the edit-compile cycle: + + * There is an experimental `--noclean` option to `./configure` that, + for some simple types of changes, can produce a successful build + without cleaning. + + * You can disable the implementations you're not using by setting + sticky bits on the source directories for those implementations: + e.g., `chmod +t crypto_nG/*/*avx2*`. + +Make sure to reenable all implementations and do a full clean build if +you're collecting data to add to the source `benchmarks` directory. + +## How to add new instruction sets + +Adding another file `compilers/amd64+foo`, along with a `supports()` +implementation in `compilers/amd64+foo.c`, will support a new +instruction set. Do not assume that the new `foo` instruction set +implies support for older instruction sets (the idea of "levels" of +instruction sets); instead make sure to include the older instruction +sets in `+` tags, as illustrated by +`compilers/amd64+avx+bmi2+avx2+adx+avx512f+avx512vl+avx512ifma`. + +In the compiler options, always make sure to include `-fPIC` to support +shared libraries, and `-fwrapv` to switch to a slightly less dangerous +version of C. + +The `foo` tags don't have to be instruction sets. For example, if a CPU +has the same instruction set but wants different optimizations because +of differences in instruction timings, you can make a tag for those +optimizations, using, e.g., CPU IDs or benchmarks in the corresponding +`supports()` function to decide whether to enable those optimizations. +Benchmarks tend to be more future-proof than a list of CPU IDs, but the +time taken for benchmarks at program startup has to be weighed against +the subsequent speedup from the resulting optimizations. + +To see how well lib25519 performs with the new compilers, run +`lib25519-speed` on the target machine and look for the `foo` lines in +the output. If the new performance is better than the performance shown +on the `selected` lines: + + * Copy the `lib25519-speed` output into a file on the `benchmarks` + directory, typically named after the hostname of the target + machine. + + * Run `./prioritize` in the top-level directory to create `priority` + files. These files tell lib25519 which implementations to select + for any given architecture. + + * Reconfigure (again with `--notrim`), recompile, rerun + `lib25519-test`, and rerun `lib25519-speed` to check that the + `default` lines now use the `foo` compiler. + +If the `foo` implementation is outperformed by other implementations, +then these steps don't help except for documenting this fact. The same +implementation might turn out to be useful for subsequent `foo` CPUs. + +## How to add new implementations + +Taking full advantage of the `foo` instruction set usually requires +writing new implementations. Sometimes there are also ideas for taking +better advantage of existing instruction sets. + +Structurally, adding a new implementation of a primitive is a simple +matter of adding a new subdirectory with the code for that +implementation. Most of the work is optimizing the use of `foo` +intrinsics in `.c` files or `foo` instructions in `.S` files. Make sure +to include an `architectures` file saying, e.g., `amd64 avx2 foo`. + +Names of implementation directories can use letters, digits, dashes, and +underscores. Do not use two implementation names that are the same when +dashes and underscores are removed. + +All `.c` and `.S` files in the implementation directory are compiled and +linked. There is no need to edit a separate list of these files. You can +also use `.h` files via the C preprocessor. + +If an implementation is actually more restrictive than indicated in +`architectures` then the resulting compiled library will fail on some +machines (although perhaps that implementation will not be used by +default). Putting unnecessary restrictions into `architectures` will not +create such failures, but can unnecessarily limit performance. + +Some, but not all, mistakes in `architectures` will produce warnings +from the `checkinsns` script that runs automatically when lib25519 is +compiled. Running the `lib25519-test` program tries all implementations, +but only on the CPU where `lib25519-test` is being run, and `lib25519-test` +does not guarantee code coverage: for example, other message lengths +being signed could involve other code paths. + +`amd64` implies little-endian, and implies architectural support for +unaligned loads and stores. Beware, however, that the Intel/AMD +vectorized `load`/`store` intrinsics (and the underlying `movdqa` +instruction) require alignment; if in doubt, use `loadu`/`storeu` (and +`movdqu`). The `lib25519-test` program checks unaligned inputs and +outputs, but can miss issues with unaligned stack variables. + +To test your implementation, compile everything, check for compiler +warnings and errors, run `lib25519-test` (or just `lib25519-test nG` to +test a `crypto_nG` implementation), and check for a line saying `all +tests succeeded`. To use AddressSanitizer (for catching, at run time, +buffer overflows in C code), add `-fsanitize=address` to the `gcc` and +`clang` lines in `compilers/*`. + +To see the performance of your implementation, run `lib25519-speed`. +If the new performance is better than the performance shown on the +`default` lines, follow the same steps as for a new instruction set: +copy the `lib25519-speed` output into a file on the `benchmarks` +directory; run `./prioritize` in the top-level directory to create +`priority` files; reconfigure (again with `--notrim`); recompile; rerun +`lib25519-test`; rerun `lib25519-speed`; check that the `default` lines +now use the new implementation. + +## How to handle namespacing + +As in SUPERCOP and NaCl, to call `crypto_hash_sha512()`, you have to +include `crypto_hash_sha512.h`; but to write an implementation of +`crypto_hash_sha512()`, you have to instead include `crypto_hash.h` and +define `crypto_hash`. Similar comments apply to other primitives. + +The function name that's actually linked might end up as, e.g., +`lib25519_hash_sha512_blocksplusavx_C2_hash` where `blocksplusavx` +indicates the implementation and `C2` indicates the compiler. Don't try +to build this name into your implementation. + +If you have another global symbol `x` (for example, a non-`static` +function in a `.c` file, or a non-`static` variable outside functions in +a `.c` file), you have to replace it with `CRYPTO_NAMESPACE(x)`, for +example with `#define x CRYPTO_NAMESPACE(x)`. + +For global symbols in `.S` files and `shared-*.c` files, use +`CRYPTO_SHARED_NAMESPACE` instead of `CRYPTO_NAMESPACE`. For `.S` files +that define both `x` and `_x` to handle platforms where `x` in C is `_x` +in assembly, use `CRYPTO_SHARED_NAMESPACE(x)` and +`_CRYPTO_SHARED_NAMESPACE(x)`; `CRYPTO_SHARED_NAMESPACE(_x)` is not +sufficient. + +lib25519 includes a mechanism to recognize files that are copied across +implementations (possibly of different primitives) and to unify those +into a file compiled only once, reducing the overall size of the +compiled library and possibly improving cache utilization. To request +this mechanism, include a line `// linker define x` for any global +symbol `x` defined in the file, and a line `// linker use x` for any +global symbol `x` used in the file from the same implementation (not +`crypto_*` subroutines that you're calling, `randombytes`, etc.). This +mechanism tries very hard, perhaps too hard, to avoid improperly +unifying files: for example, even a slight difference in a `.h` file +included by a file defining a used symbol will disable the mechanism. + +Typical namespacing mistakes will produce either linker failures or +warnings from the `checknamespace` script that runs automatically when +lib25519 is compiled. diff --git a/lib-25519/lib25519/LICENSES/CC0-1.0.txt b/lib-25519/lib25519/LICENSES/CC0-1.0.txt new file mode 100644 index 0000000000..0e259d42c9 --- /dev/null +++ b/lib-25519/lib25519/LICENSES/CC0-1.0.txt @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/lib-25519/lib25519/Makefile b/lib-25519/lib25519/Makefile new file mode 100644 index 0000000000..8968a9bf80 --- /dev/null +++ b/lib-25519/lib25519/Makefile @@ -0,0 +1,8 @@ +default: + cd build && $(MAKE) + +install: + cd build && $(MAKE) install + +clean: + cd build && $(MAKE) clean diff --git a/lib-25519/lib25519/README b/lib-25519/lib25519/README new file mode 100644 index 0000000000..eecc99409a --- /dev/null +++ b/lib-25519/lib25519/README @@ -0,0 +1,28 @@ +lib25519 is a microlibrary for the X25519 encryption system and the +Ed25519 signature system, both of which use the Curve25519 elliptic +curve. Curve25519 is the fastest curve in TLS 1.3, and the only curve in +Wireguard, Signal, and many other applications (see Nicolai Brown's page +https://ianix.com/pub/curve25519-deployment.html). + +lib25519 has a very simple stateless API based on the SUPERCOP API, with +wire-format inputs and outputs, providing functions that directly match +the central cryptographic operations in X25519 and Ed25519: + + lib25519_dh_keypair(pk,sk): X25519 key generation + lib25519_dh(k,pk,sk): shared-secret generation + + lib25519_sign_keypair(pk,sk): Ed25519 key generation + lib25519_sign(sm,&smlen,m,mlen,sk): signing + lib25519_sign_open(m,&mlen,sm,smlen,pk): verification + message recovery + +Internally, lib25519 includes implementations designed for performance +on various CPUs, implementations designed to work portably across CPUs, +and automatic run-time selection of implementations. + +lib25519 is intended to be called by larger multi-function libraries, +including libraries in other languages via FFI. The idea is that +lib25519 will take responsibility for the details of X25519/Ed25519 +computation, including optimization, timing-attack protection, and +eventually verification, freeing up the calling libraries to concentrate +on application-specific needs such as protocol integration. Applications +can also call lib25519 directly. diff --git a/lib-25519/lib25519/SECURITY b/lib-25519/lib25519/SECURITY new file mode 100644 index 0000000000..b691e1aba6 --- /dev/null +++ b/lib-25519/lib25519/SECURITY @@ -0,0 +1,87 @@ +Security model: X25519 is designed to be strong as a component of +various well-known "hashed DH" applications, and in particular is +designed to make the CDH problem difficult with respect to the standard +base. Ed25519 is designed to provide EUF-CMA, the standard notion of +unforgeability of a signature system under chosen-message attacks. +However, some applications need other security notions that are not +provided by X25519 and Ed25519. + +Security level: X25519 and Ed25519 are more difficult to break by any +known attacks than a typical 128-bit cipher. They have an extremely +stable security track record, with two decades of research changing +security levels by only a fraction of a bit. They also proactively avoid +various potential risks. However, large quantum computers will break +both X25519 and Ed25519. + +Software verification: lib25519 is intended to become a central target +for verification of full functional correctness of implementations of +X25519 and Ed25519. However, only certain portions have been verified so +far, and at this point the code should be presumed to have critical +bugs. + +Timing attacks: lib25519 is designed to avoid all data flow from secret +data to memory addresses and branch conditions. Fully protecting the +user against timing attacks requires addressing more issues, such as the +following: + + * Other common instructions used by lib25519 take variable time on + some CPUs. In particular, there are some embedded CPUs with + variable-time multipliers. + + * Many CPUs include dynamic frequency-selection mechanisms such as + Turbo Boost, exposing power information via timing information. + Fortunately, these CPUs are normally shipped with simple options to + disable Turbo Boost etc., closing this leak; unfortunately, Turbo + Boost is enabled by default on CPUs that support it. + + * Cryptographic keys are normally handled by cryptographic software, + but other user secrets are handled by many different pieces of + software. + +See https://timing.attacks.cr.yp.to for a timing-attack survey and many +references. + +Speculative-execution attacks: Some countermeasures against +speculative-execution attacks are planned but are not included in the +current version of lib25519. Full protection again requires addressing +issues at other system layers. + +Further side-channel attacks: Even if all legitimate user sensors are +successfully kept isolated from attackers, attackers can set up their +own power sensors, electromagnetic sensors, acoustic sensors, etc. +Keeping cryptographic operations physically separated from sensors tends +to make such attacks much more expensive but is often infeasible. +"Masking" cryptographic computations seems to help and can be +affordable, although the security of masking is difficult to evaluate +and there are many broken masked implementations. Currently lib25519 +does not include any masked implementations, so presumably it is easily +breakable by power attacks in environments where attackers can see power +consumption. + +Further attacks: lib25519 creates an Ed25519 signing nonce as a hash of +the message, a long-term secret, and new randomness (specifically, the +nonce is a keyed hash of the message, where the key is the hash of the +long-term secret and new randomness). The literature identifies various +advantages and disadvantages of including these hash inputs: + + * Including the message and a long-term secret protects against + signing-time RNG failures. This is a standard feature of Ed25519 + signers. + + * To the extent that the RNG works, including new randomness has the + advantage of stopping (e.g.) fault attacks that rely on a nonce + being reused for multiple signatures of the same message. + + * Including new randomness has the disadvantage of requiring state + for the RNG. However, lib25519 runs within an OS that in any case + maintains state and provides an RNG. + + * Including new randomness also has the disadvantage of interfering + with the use of test vectors. This disadvantage does not apply to + lib25519: lib25519's test vectors already handle randomness. + +lib25519 includes a few further steps that could be useful in stopping +fault attacks (for example, signature verification internally converts +invalid public keys to the key (...,26), which does not have a known +discrete logarithm), but in general lib25519 should be presumed +breakable by fault attacks. diff --git a/lib-25519/lib25519/TODO b/lib-25519/lib25519/TODO new file mode 100644 index 0000000000..df2d20ac3e --- /dev/null +++ b/lib-25519/lib25519/TODO @@ -0,0 +1,17 @@ +track history more precisely in documentation for individual source files +consider symlinks from files in build tree to source tree (via a build/source symlink so build can link elsewhere) +allow shared-* for API functions (requires tweaking dispatch) +speedups for more architectures +speedups for more microarchitectures +consider faster PRF for the keyed hash giving the nonce +merge subroutines in source to the extent possible +scan for and remove any unused functions and files +restructure for more merging at object-code level +sort object files (for, e.g., improved cache utilization) +optionally allow post-installation patching of current cpu as an exceptional cpuid + (based on benchmarks and, with more CPU time, full functionality tests) +dispatch: eliminate, e.g., avx2 if avx is higher priority +speed up dispatch cpuid tests (lazy evaluation, merging cpuid calls) +randombytes: support getrandom, getentropy +verify constbranch, constindex +full functional verification diff --git a/lib-25519/lib25519/api b/lib-25519/lib25519/api new file mode 100644 index 0000000000..72b15d91a8 --- /dev/null +++ b/lib-25519/lib25519/api @@ -0,0 +1,51 @@ +crypto_verify/32 +#define crypto_verify_32_BYTES 32 +int crypto_verify(const unsigned char *,const unsigned char *); + +crypto_hashblocks/sha512 f0bc623a9033f9f648336540e11e85be21aeb60905c7d8808d10ea20b39d58d1 f1a2c46c9ce7fa4cd22f180907d77b6f7189badef4b9a1b5284d6fb9db859b76 +#define crypto_hashblocks_sha512_STATEBYTES 64 +#define crypto_hashblocks_sha512_BLOCKBYTES 128 +int crypto_hashblocks(unsigned char *,const unsigned char *,long long); + +crypto_hash/sha512 8220572f58bd4730be165c9739d8d4b0fd2e0229dbe01e25b4aed23f00f23b70 c1e322b7cbfc941260c5508967ba05bce22eeee94d425e708b7c3301ea1d5e2e +#define crypto_hash_sha512_BYTES 64 +void crypto_hash(unsigned char *,const unsigned char *,long long); + +crypto_pow/inv25519 ad2062946e82718da820226504991a85c5fe56bdbff959c1313f837ee13b37be 59b3045a01e1fca2a86a0280aee8b985c5e040afdc0d3e85ed87eb97a46a4dd6 +#define crypto_pow_inv25519_BYTES 32 +void crypto_pow(unsigned char *,const unsigned char *); + +crypto_nP/montgomery25519 b861d66109b42359e5994ed57ae566827c345b65a9d0671700320b82888397ec 740924011f3448f65299f61b087f74a6eb9651a4203dfbf621d2bec54e149405 +#define crypto_nP_montgomery25519_SCALARBYTES 32 +#define crypto_nP_montgomery25519_POINTBYTES 32 +void crypto_nP(unsigned char *,const unsigned char *,const unsigned char *); + +crypto_nG/merged25519 a4e761839798a07817484e97605bd63215b4938934ed9ce01935bbced48155bc 0a01c09fc8a8c7e8c18f841b2e1b2da9c156868737d194d223b03531cf2db731 +#define crypto_nG_merged25519_SCALARBYTES 32 +#define crypto_nG_merged25519_POINTBYTES 32 +crypto_nG/montgomery25519 5c8a5d8b32e3d26b33071779ce9191095d7bd4ab3bb6a40b68976e41a98cfc3b 2becc8cd065820fcf82e53a03c5b5235582480fc11d072f2bd15153aebd4e057 +#define crypto_nG_montgomery25519_SCALARBYTES 32 +#define crypto_nG_montgomery25519_POINTBYTES 32 +void crypto_nG(unsigned char *,const unsigned char *); + +crypto_mGnP/ed25519 dc80be44fb0d482c5ae430779e76fe612c53fcd9e5847254bf27ab34e90745f4 9e1a3b7015c8fdb12763fd88494f5bfe9e2565ead4d3407d5ecf7ff6ca24c1d0 +#define crypto_mGnP_ed25519_MBYTES 32 +#define crypto_mGnP_ed25519_NBYTES 64 +#define crypto_mGnP_ed25519_PBYTES 32 +#define crypto_mGnP_ed25519_OUTPUTBYTES 33 +void crypto_mGnP(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *); + +crypto_dh/x25519 2c8a73ec86d5d4c4bc838f49cfd78c87b60b534ae6fff59ce3bea0c32cdc1450 b09016b3a1371786b46a183085133338159e623c5eb9cbc5eaa4f8b62d6c5aea +#define crypto_dh_x25519_SECRETKEYBYTES 32 +#define crypto_dh_x25519_PUBLICKEYBYTES 32 +#define crypto_dh_x25519_BYTES 32 +void crypto_dh_keypair(unsigned char *,unsigned char *); +void crypto_dh(unsigned char *,const unsigned char *,const unsigned char *); + +crypto_sign/ed25519 ce11fd7c1eac4dd0bc5eec49b26ad1e91aef696fae50ce377dbd806dc394da01 2ed857f17c917a8185e6c296303a11772ae45683a5e7cb5b095489bad65fffde +#define crypto_sign_ed25519_SECRETKEYBYTES 64 +#define crypto_sign_ed25519_PUBLICKEYBYTES 32 +#define crypto_sign_ed25519_BYTES 64 +void crypto_sign_keypair(unsigned char *,unsigned char *); +void crypto_sign(unsigned char *,long long *,const unsigned char *,long long,const unsigned char *); +int crypto_sign_open(unsigned char *,long long *,const unsigned char *,long long,const unsigned char *); diff --git a/lib-25519/lib25519/autogen-speed b/lib-25519/lib25519/autogen-speed new file mode 100755 index 0000000000..e8b327191e --- /dev/null +++ b/lib-25519/lib25519/autogen-speed @@ -0,0 +1,338 @@ +#!/usr/bin/env python3 + +output = r'''/* WARNING: auto-generated (by autogen-speed); do not edit */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "cpucycles.h" /* -lcpucycles */ +#include "lib25519.h" /* -l25519 */ +#include "randombytes.h" /* -lrandombytes_kernel */ + +static const char *targeto = 0; +static const char *targetp = 0; +static const char *targeti = 0; + +#include "limits.inc" + +static unsigned char *alignedcalloc(unsigned long long len) +{ + unsigned char *x = (unsigned char *) calloc(1,len + 128); + if (!x) abort(); + /* will never deallocate so shifting is ok */ + x += 63 & (-(unsigned long) x); + return x; +} + +#define TIMINGS 15 +static long long t[TIMINGS+1]; + +static void t_print(const char *op,long long impl,long long len) +{ + long long median = 0; + + printf("%s",op); + if (impl >= 0) + printf(" %lld",impl); + else + printf(" selected"); + printf(" %lld",len); + for (long long i = 0;i < TIMINGS;++i) + t[i] = t[i+1]-t[i]; + for (long long j = 0;j < TIMINGS;++j) { + long long belowj = 0; + long long abovej = 0; + for (long long i = 0;i < TIMINGS;++i) if (t[i] < t[j]) ++belowj; + for (long long i = 0;i < TIMINGS;++i) if (t[i] > t[j]) ++abovej; + if (belowj*2 < TIMINGS && abovej*2 < TIMINGS) { + median = t[j]; + break; + } + } + printf(" %lld ",median); + for (long long i = 0;i < TIMINGS;++i) + printf("%+lld",t[i]-median); + printf("\n"); + fflush(stdout); +} + +#define MAXTEST_BYTES 65536 + +static void measure_cpucycles(void) +{ + printf("cpucycles selected persecond %lld\n",cpucycles_persecond()); + printf("cpucycles selected implementation %s\n",cpucycles_implementation()); + + for (long long i = 0;i <= TIMINGS;++i) + t[i] = cpucycles(); + t_print("cpucycles",-1,0); +} + +static void measure_randombytes(void) +{ + unsigned char *m = alignedcalloc(MAXTEST_BYTES); + long long mlen = 0; + + while (mlen < MAXTEST_BYTES) { + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + randombytes(m,mlen); + } + t_print("randombytes",-1,mlen); + mlen += 1+mlen/2; + } +} +''' + +# XXX: integrate todo into api +todo = ( + ('verify',( + ('x','lib25519_verify_BYTES'), + ('y','lib25519_verify_BYTES'), + ),( + ('crypto_verify','x','y'), + )), + ('hashblocks',( + ('h','lib25519_hashblocks_STATEBYTES'), + ('m','MAXTEST_BYTES'), + ('mlen',None), + ),( + ('crypto_hashblocks','h','m','mlen'), + )), + ('hash',( + ('h','lib25519_hash_BYTES'), + ('m','MAXTEST_BYTES'), + ('mlen',None), + ),( + ('crypto_hash','h','m','mlen'), + )), + ('pow',( + ('n','lib25519_pow_BYTES'), + ('ne','lib25519_pow_BYTES'), + ),( + ('crypto_pow','ne','n'), + )), + ('nP',( + ('n','lib25519_nP_SCALARBYTES'), + ('P','lib25519_nP_POINTBYTES'), + ('nP','lib25519_nP_POINTBYTES'), + ),( + ('crypto_nP','nP','n','P'), + )), + ('nG',( + ('n','lib25519_nP_SCALARBYTES'), + ('nG','lib25519_nP_POINTBYTES'), + ),( + ('crypto_nG','nG','n'), + )), + ('mGnP',( + ('mGnP','lib25519_mGnP_OUTPUTBYTES'), + ('m','lib25519_mGnP_MBYTES'), + ('n','lib25519_mGnP_NBYTES'), + ('P','lib25519_mGnP_PBYTES'), + ),( + ('crypto_mGnP','mGnP','m','n','P'), + )), + ('dh',( + ('pka','lib25519_dh_PUBLICKEYBYTES'), + ('ska','lib25519_dh_SECRETKEYBYTES'), + ('pkb','lib25519_dh_PUBLICKEYBYTES'), + ('skb','lib25519_dh_SECRETKEYBYTES'), + ('ka','lib25519_dh_BYTES'), + ),( + ('crypto_dh_keypair','pka','ska'), + ('crypto_dh_keypair','pkb','skb'), + ('crypto_dh','ka','pkb','ska'), + )), + ('sign',( + ('pk','lib25519_sign_PUBLICKEYBYTES'), + ('sk','lib25519_sign_SECRETKEYBYTES'), + ('m','MAXTEST_BYTES+lib25519_sign_BYTES'), + ('sm','MAXTEST_BYTES+lib25519_sign_BYTES'), + ('m2','MAXTEST_BYTES+lib25519_sign_BYTES'), + ('mlen',None), + ('smlen',None), + ('m2len',None), + ),( + ('crypto_sign_keypair','pk','sk'), + ('crypto_sign','sm','&smlen','m','mlen','sk'), + ('crypto_sign_open','m2','&m2len','sm','smlen','pk'), + )), +) + +operations = [] +primitives = {} +sizes = {} +exports = {} +prototypes = {} + +with open('api') as f: + for line in f: + line = line.strip() + if line.startswith('crypto_'): + x = line.split() + x = x[0].split('/') + assert len(x) == 2 + o = x[0].split('_')[1] + if o not in operations: operations += [o] + p = x[1] + if o not in primitives: primitives[o] = [] + primitives[o] += [p] + continue + if line.startswith('#define '): + x = line.split(' ') + x = x[1].split('_') + assert len(x) == 4 + assert x[0] == 'crypto' + o = x[1] + p = x[2] + if (o,p) not in sizes: sizes[o,p] = '' + sizes[o,p] += line+'\n' + continue + if line.endswith(');'): + fun,args = line[:-2].split('(') + rettype,fun = fun.split() + fun = fun.split('_') + o = fun[1] + assert fun[0] == 'crypto' + if o not in exports: exports[o] = [] + exports[o] += ['_'.join(fun[1:])] + if o not in prototypes: prototypes[o] = [] + prototypes[o] += [(rettype,fun,args)] + +for t in todo: + o,vars,benches = t + + for p in primitives[o]: + + output += '\n' + output += 'static void measure_%s_%s(void)\n' % (o,p) + output += '{\n' + + output += ' if (targeto && strcmp(targeto,"%s")) return;\n' % o + output += ' if (targetp && strcmp(targetp,"%s")) return;\n' % p + + varsize = {} + for v,size in vars: + if size is None: + output += ' long long %s;\n' % v + else: + size = size.replace('lib25519_'+o,'lib25519_'+o+'_'+p) + output += ' unsigned char *%s = alignedcalloc(%s);\n' % (v,size) + varsize[v] = size + output += '\n' + + output += ' for (long long impl = -1;impl < lib25519_numimpl_%s_%s();++impl) {\n' % (o,p) + for rettype,fun,args in prototypes[o]: + output += ' %s (*%s)(%s);\n' % (rettype,'_'.join(fun),args) + + output += ' if (targeti && strcmp(targeti,lib25519_dispatch_%s_%s_implementation(impl))) continue;\n' % (o,p) + + output += ' if (impl >= 0) {\n' + for rettype,fun,args in prototypes[o]: + f2 = ['lib25519','dispatch',o,p]+fun[2:] + output += ' %s = %s(impl);\n' % ('_'.join(fun),'_'.join(f2)) + output += r' printf("%s_%s %%lld implementation %%s compiler %%s\n",impl,lib25519_dispatch_%s_%s_implementation(impl),lib25519_dispatch_%s_%s_compiler(impl));' % (o,p,o,p,o,p) + output += '\n' + output += ' } else {\n' + for rettype,fun,args in prototypes[o]: + f2 = ['lib25519',o,p]+fun[2:] + output += ' %s = %s;\n' % ('_'.join(fun),'_'.join(f2)) + output += r' printf("%s_%s selected implementation %%s compiler %%s\n",lib25519_%s_%s_implementation(),lib25519_%s_%s_compiler());' % (o,p,o,p,o,p) + output += '\n' + output += ' }\n' + + for v,size in vars: + if size is not None: + size = size.replace('lib25519_'+o,'lib25519_'+o+'_'+p) + output += ' randombytes(%s,%s);\n' % (v,size) + + alreadybenched = set() + alreadybenched.add('assert') + + for b in benches: + if b[0] in alreadybenched: + output += ' %s(%s);\n' % (b[0],','.join(b[1:])) + continue + + fun = b[0].split('_') + shortfun = '_'.join([o,p]+fun[2:]) + alreadybenched.add(b[0]) + + if 'mlen' in b[1:] or 'smlen' in b[1:]: + output += ' mlen = 0;\n' + output += ' while (mlen <= MAXTEST_BYTES) {\n' + output += ' randombytes(m,mlen);\n' + + if shortfun == 'sign_ed25519_open': # XXX: put this into todo + output += ' lib25519_sign(sm,&smlen,m,mlen,sk);\n' + + output += ' for (long long i = 0;i <= TIMINGS;++i) {\n' + output += ' t[i] = cpucycles();\n' + output += ' %s(%s);\n' % (b[0],','.join(b[1:])) + output += ' }\n' + output += ' t_print("%s",impl,mlen);\n' % (shortfun) + + if shortfun == 'sign_ed25519_open': # XXX: put this into todo + output += ' /* this is, in principle, not a test program */\n' + output += ' /* but some checks here help validate the data flow above */\n' + output += ' assert(m2len == mlen);\n' + output += ' assert(!memcmp(m,m2,mlen));\n' + + if o == 'sign': # XXX: put this into todo + output += ' mlen += 1+mlen/4;\n' + else: + output += ' mlen += 1+mlen/2;\n' + output += ' }\n' + else: + output += ' for (long long i = 0;i <= TIMINGS;++i) {\n' + output += ' t[i] = cpucycles();\n' + output += ' %s(%s);\n' % (b[0],','.join(b[1:])) + output += ' }\n' + output += ' t_print("%s",impl,%s);\n' % (shortfun,varsize[b[1]]) + + output += ' }\n' + output += '}\n' + +output += r''' +#include "print_cpuid.inc" + +int main(int argc,char **argv) +{ + printf("lib25519 version %s\n",lib25519_version); + printf("lib25519 arch %s\n",lib25519_arch); + print_cpuid(); + + if (*argv) ++argv; + if (*argv) { + targeto = *argv++; + if (*argv) { + targetp = *argv++; + if (*argv) { + targeti = *argv++; + } + } + } + + measure_cpucycles(); + measure_randombytes(); + limits(); +''' + +for t in todo: + o,vars,benches = t + for p in primitives[o]: + output += ' measure_%s_%s();\n' % (o,p) + +output += r''' + return 0; +} +''' + +with open('command/lib25519-speed.c','w') as f: + f.write(output) diff --git a/lib-25519/lib25519/autogen-test b/lib-25519/lib25519/autogen-test new file mode 100755 index 0000000000..19a34bd7b8 --- /dev/null +++ b/lib-25519/lib25519/autogen-test @@ -0,0 +1,1217 @@ +#!/usr/bin/env python3 + +import random + +p = 2**255-19 +two255 = 2**255 + +def inv(x): + return pow(x,p-2,p) + +def littleendian(x,bytes): + return [255&(x>>(8*i)) for i in range(bytes)] + +def bit(x,i): + return 1&(x>>i) + +def cswap(x,y,bit): + assert bit in (0,1) + if bit == 1: return y,x + return x,y + +montbase = 9 + +def montgomery(x1,n): # copied from gfverif + A = 486662 + x2,z2,x3,z3 = 1,0,x1,1 + for i in reversed(range(255)): + ni = bit(n,i) + x2,x3 = cswap(x2,x3,ni) + z2,z3 = cswap(z2,z3,ni) + x3,z3 = 4*(x2*x3-z2*z3)**2,4*x1*(x2*z3-z2*x3)**2 + x2,z2 = (x2**2-z2**2)**2,4*x2*z2*(x2**2+A*x2*z2+z2**2) + x3,z3 = x3%p,z3%p + x2,z2 = x2%p,z2%p + x2,x3 = cswap(x2,x3,ni) + z2,z3 = cswap(z2,z3,ni) + return (x2*pow(z2,p-2,p))%p + +d = (-121665*inv(121666))%p +sqrtm1 = pow(2,(p-1)//4,p) + +def isoncurve(P): + x,y = P + return (y*y-x*x-1-d*x*x*y*y) % p == 0 + +def decompress(y): + y %= p + xsq = (y*y-1)*inv(d*y*y+1) + x = pow(xsq,(p+3)//8,p) + if (x*x-xsq)%p: x *= sqrtm1 + assert (x*x-xsq)%p == 0 + x %= p + if x&1: x = p-x + P = x,y + assert isoncurve(P) + return P + +edbase = decompress(4*inv(5)) +assert edbase[0]%2 == 0 +point10 = decompress(10) +point26 = decompress(26) + +def edwards(P1,P2): + assert isoncurve(P1) + assert isoncurve(P2) + x1,y1 = P1 + x2,y2 = P2 + x3 = (x1*y2+y1*x2) * inv(1+d*x1*x2*y1*y2) + y3 = (y1*y2+x1*x2) * inv(1-d*x1*x2*y1*y2) + P3 = x3%p,y3%p + assert isoncurve(P3) + return P3 + +def scalarmult(P,n): + assert n >= 0 + assert isoncurve(P) + if n == 0: return 0,1 + if n == 1: return P + P2 = edwards(P,P) + Q = scalarmult(P2,n//2) + if n & 1: Q = edwards(P,Q) + assert isoncurve(Q) + return Q + +# ----- the mathematical primitives + +def pow_inv25519(x): + assert x >= 0 + assert x < 2**256 + y = inv(x % two255) + assert y >= 0 + assert y < p + return {'q':littleendian(y,32),'p':littleendian(x,32)} + +def nP_montgomery25519(n,P): + assert n >= 0 + assert n < 2**256 + assert P >= 0 + assert P < 2**256 + m = n % two255 + m |= 2**254 + m &= ~7 + assert m >= 2**254 + assert m <= 2**254 + 8*(2**251-1) + assert m%8 == 0 + mP = montgomery(P % two255,m) + assert mP >= 0 + assert mP < p + return {'q':littleendian(mP,32),'n':littleendian(n,32),'p':littleendian(P,32)} + +def nG_merged25519(n): + assert n >= 0 + assert n < 2**256 + if n&two255: + nG = montgomery(montbase,n-two255) + assert nG >= 0 + assert nG < p + else: + x,y = scalarmult(edbase,n) + nG = y + assert nG >= 0 + assert nG < p + if x&1: nG |= two255 + return {'q':littleendian(nG,32),'n':littleendian(n,32)} + +def nG_montgomery25519(n): + result = nP_montgomery25519(n,montbase) + assert result['p'] == [9]+[0]*31 + return {'q':result['q'],'n':result['n']} + +primeorder = 2**252+27742317777372353535851937790883648493 + +def mGnP_ed25519(m,n,P): + assert m >= 0 + assert m < 2**256 + assert n >= 0 + assert n < 2**512 + assert P >= 0 + assert P < 2**256 + + mrep = littleendian(m,32) + nrep = littleendian(n,64) + Prep = littleendian(P,32) + + ok = 1 + if m >= primeorder: ok = 0 + m %= primeorder + n %= primeorder + + parity = P>>255 + y = P & ~two255 + try: + # assertion failures here are for invalid P + assert y < p + x,y = decompress(y) + if parity: x = (-x)%p + assert x&1 == parity + except AssertionError: + ok = 0 + x,y = point26 + x = (-x)%p # negative of point26 + + assert x >= 0 + assert x < p + assert y >= 0 + assert y < p + + # now want mG-n(x,y) + x = (-x)%p + + # now want mG+n(x,y) + Qx,Qy = edwards(scalarmult(edbase,m),scalarmult((x,y),n)) + + assert Qx >= 0 + assert Qx < p + assert Qy >= 0 + assert Qy < p + if Qx&1: Qy += two255 + Qrep = littleendian(Qy,32)+[ok] + return {'Q':Qrep,'m':mrep,'n':nrep,'P':Prep} + +# ----- precomputed test vectors + +precomputed = {} + +# the list of small-order montgomery x-coordinates from the curve25519 page: +corners = [ + 0, + 1, + 325606250916557431795983626356110631294008115727848805560023387167927233504, + 39382357235489614581723060781553021112529911719440698176882885853963445705823, + 2**255 - 19 - 1, + 2**255 - 19, + 2**255 - 19 + 1, + 2**255 - 19 + 325606250916557431795983626356110631294008115727848805560023387167927233504, + 2**255 - 19 + 39382357235489614581723060781553021112529911719440698176882885853963445705823, + 2*(2**255 - 19) - 1, + 2*(2**255 - 19), + 2*(2**255 - 19) + 1, +] +# and some edwards y-coordinates of order 8: +corners += [ + 2707385501144840649318225287225658788936804267575313519463743609750303402022, + 55188659117513257062467267217118295137698188065244968500265048394206261417927, + 2**255 - 19 + 2707385501144840649318225287225658788936804267575313519463743609750303402022, + 2**255 - 19 + 55188659117513257062467267217118295137698188065244968500265048394206261417927, +] +# and all small numbers mod 2**255-19 and mod 2**255: +corners += list(range(32)) +corners += list(range(2**255-32,2**255+32)) +corners += list(range(2**256-64,2**256)) + +random.seed('pow_inv25519') +T = corners + [random.randrange(2**256) for loop in range(128)] +precomputed['pow','inv25519'] = [pow_inv25519(x) for x in sorted(set(T))] + +random.seed('nP_montgomery25519') +T = corners + [random.randrange(2**256) for loop in range(128)] +results = [nP_montgomery25519(random.randrange(2**256),P) for P in sorted(set(T))] +for nmult in range(8): + for n in range(nmult*primeorder-2,nmult*primeorder+3): + if n < 0: continue + results += [nP_montgomery25519(n,16)] + results += [nP_montgomery25519(n|two255,16)] +precomputed['nP','montgomery25519'] = results + +random.seed('nG_merged25519') +results = [nG_merged25519(random.randrange(2**256)) for loop in range(128)] +for nmult in range(8): + for n in range(nmult*primeorder-2,nmult*primeorder+3): + if n < 0: continue + results += [nG_merged25519(n)] + results += [nG_merged25519(n|two255)] +precomputed['nG','merged25519'] = results + +random.seed('nG_montgomery25519') +results = [nG_montgomery25519(random.randrange(2**256)) for loop in range(128)] +for nmult in range(8): + for n in range(nmult*primeorder-2,nmult*primeorder+3): + if n < 0: continue + results += [nG_montgomery25519(n)] + results += [nG_montgomery25519(n|two255)] +precomputed['nG','montgomery25519'] = results + +random.seed('mGnP_ed25519') +results = [] +T = corners + [random.randrange(2**256) for loop in range(128)] +for P in sorted(set(T)): + m = random.randrange(2**256) + n = random.randrange(2**512) + results += [mGnP_ed25519(m,n,P)] +for mmult in range(16): + for m in range(mmult*primeorder-2,mmult*primeorder+3): + if m < 0: continue + n = random.randrange(2**512) + results += [mGnP_ed25519(m,n,point10[1])] +for nmult in range(16): + for n in range(nmult*primeorder-2,nmult*primeorder+3): + if n < 0: continue + m = random.randrange(2**256) + results += [mGnP_ed25519(m,n,point10[1])] +results += [mGnP_ed25519(0,0,point10[1])] +precomputed['mGnP','ed25519'] = results + +# ----- + +Z = r'''/* WARNING: auto-generated (by autogen-test); do not edit */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "crypto_uint8.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" +#include "lib25519.h" /* -l25519 */ +#include "randombytes.h" + +static const char *targeto = 0; +static const char *targetp = 0; +static const char *targeti = 0; + +static int ok = 1; + +#define fail ((ok = 0),printf) + +/* ----- kernelrandombytes */ + +static int kernelrandombytes_fd = -1; + +static void kernelrandombytes_setup(void) +{ + kernelrandombytes_fd = open("/dev/urandom",O_RDONLY); + if (kernelrandombytes_fd == -1) { + fprintf(stderr,"lib25519-test: fatal: unable to open /dev/urandom: %s",strerror(errno)); + exit(111); + } +} + +static void kernelrandombytes(unsigned char *x,long long xlen) +{ + int i; + + while (xlen > 0) { + if (xlen < 1048576) i = xlen; else i = 1048576; + + i = read(kernelrandombytes_fd,x,i); + if (i < 1) { + sleep(1); + continue; + } + + x += i; + xlen -= i; + } +} + +/* ----- rng and hash, from supercop/try-anything.c */ + +typedef crypto_uint8 u8; +typedef crypto_uint32 u32; +typedef crypto_uint64 u64; + +#define FOR(i,n) for (i = 0;i < n;++i) + +static u32 L32(u32 x,int c) { return (x << c) | ((x&0xffffffff) >> (32 - c)); } + +static u32 ld32(const u8 *x) +{ + u32 u = x[3]; + u = (u<<8)|x[2]; + u = (u<<8)|x[1]; + return (u<<8)|x[0]; +} + +static void st32(u8 *x,u32 u) +{ + int i; + FOR(i,4) { x[i] = u; u >>= 8; } +} + +static const u8 sigma[17] = "expand 32-byte k"; + +static void core_salsa(u8 *out,const u8 *in,const u8 *k) +{ + u32 w[16],x[16],y[16],t[4]; + int i,j,m; + + FOR(i,4) { + x[5*i] = ld32(sigma+4*i); + x[1+i] = ld32(k+4*i); + x[6+i] = ld32(in+4*i); + x[11+i] = ld32(k+16+4*i); + } + + FOR(i,16) y[i] = x[i]; + + FOR(i,20) { + FOR(j,4) { + FOR(m,4) t[m] = x[(5*j+4*m)%16]; + t[1] ^= L32(t[0]+t[3], 7); + t[2] ^= L32(t[1]+t[0], 9); + t[3] ^= L32(t[2]+t[1],13); + t[0] ^= L32(t[3]+t[2],18); + FOR(m,4) w[4*j+(j+m)%4] = t[m]; + } + FOR(m,16) x[m] = w[m]; + } + + FOR(i,16) st32(out + 4 * i,x[i] + y[i]); +} + +static void salsa20(u8 *c,u64 b,const u8 *n,const u8 *k) +{ + u8 z[16],x[64]; + u32 u,i; + if (!b) return; + FOR(i,16) z[i] = 0; + FOR(i,8) z[i] = n[i]; + while (b >= 64) { + core_salsa(x,z,k); + FOR(i,64) c[i] = x[i]; + u = 1; + for (i = 8;i < 16;++i) { + u += (u32) z[i]; + z[i] = u; + u >>= 8; + } + b -= 64; + c += 64; + } + if (b) { + core_salsa(x,z,k); + FOR(i,b) c[i] = x[i]; + } +} + +static void increment(u8 *n) +{ + if (!++n[0]) + if (!++n[1]) + if (!++n[2]) + if (!++n[3]) + if (!++n[4]) + if (!++n[5]) + if (!++n[6]) + if (!++n[7]) + ; +} + +static unsigned char testvector_n[8]; + +static void testvector_clear(void) +{ + memset(testvector_n,0,sizeof testvector_n); +} + +static void testvector(unsigned char *x,unsigned long long xlen) +{ + const static unsigned char testvector_k[33] = "generate inputs for test vectors"; + salsa20(x,xlen,testvector_n,testvector_k); + increment(testvector_n); +} + +static unsigned long long myrandom(void) +{ + unsigned char x[8]; + unsigned long long result; + testvector(x,8); + result = x[7]; + result = (result<<8)|x[6]; + result = (result<<8)|x[5]; + result = (result<<8)|x[4]; + result = (result<<8)|x[3]; + result = (result<<8)|x[2]; + result = (result<<8)|x[1]; + result = (result<<8)|x[0]; + return result; +} + +static unsigned char canary_n[8]; + +static void canary(unsigned char *x,unsigned long long xlen) +{ + const static unsigned char canary_k[33] = "generate pad to catch overwrites"; + salsa20(x,xlen,canary_n,canary_k); + increment(canary_n); +} + +static void double_canary(unsigned char *x2,unsigned char *x,unsigned long long xlen) +{ + canary(x - 16,16); + canary(x + xlen,16); + memcpy(x2 - 16,x - 16,16); + memcpy(x2 + xlen,x + xlen,16); +} + +static void input_prepare(unsigned char *x2,unsigned char *x,unsigned long long xlen) +{ + testvector(x,xlen); + canary(x - 16,16); + canary(x + xlen,16); + memcpy(x2 - 16,x - 16,xlen + 32); +} + +static void input_compare(const unsigned char *x2,const unsigned char *x,unsigned long long xlen,const char *fun) +{ + if (memcmp(x2 - 16,x - 16,xlen + 32)) { + fail("failure: %s overwrites input\n",fun); + } +} + +static void output_prepare(unsigned char *x2,unsigned char *x,unsigned long long xlen) +{ + canary(x - 16,xlen + 32); + memcpy(x2 - 16,x - 16,xlen + 32); +} + +static void output_compare(const unsigned char *x2,const unsigned char *x,unsigned long long xlen,const char *fun) +{ + if (memcmp(x2 - 16,x - 16,16)) { + fail("failure: %s writes before output\n",fun); + } + if (memcmp(x2 + xlen,x + xlen,16)) { + fail("failure: %s writes after output\n",fun); + } +} + +/* ----- knownrandombytes */ + +static const int knownrandombytes_is_only_for_testing_not_for_cryptographic_use = 1; +#define knownrandombytes randombytes + +#define QUARTERROUND(a,b,c,d) \ + a += b; d = L32(d^a,16); \ + c += d; b = L32(b^c,12); \ + a += b; d = L32(d^a, 8); \ + c += d; b = L32(b^c, 7); + +static void core_chacha(u8 *out,const u8 *in,const u8 *k) +{ + u32 x[16],y[16]; + int i,j; + FOR(i,4) { + x[i] = ld32(sigma+4*i); + x[12+i] = ld32(in+4*i); + } + FOR(i,8) x[4+i] = ld32(k+4*i); + FOR(i,16) y[i] = x[i]; + FOR(i,10) { + FOR(j,4) { QUARTERROUND(x[j],x[j+4],x[j+8],x[j+12]) } + FOR(j,4) { QUARTERROUND(x[j],x[((j+1)&3)+4],x[((j+2)&3)+8],x[((j+3)&3)+12]) } + } + FOR(i,16) st32(out+4*i,x[i]+y[i]); +} + +static void chacha20(u8 *c,u64 b,const u8 *n,const u8 *k) +{ + u8 z[16],x[64]; + u32 u,i; + if (!b) return; + FOR(i,16) z[i] = 0; + FOR(i,8) z[i+8] = n[i]; + while (b >= 64) { + core_chacha(x,z,k); + FOR(i,64) c[i] = x[i]; + u = 1; + FOR(i,8) { + u += (u32) z[i]; + z[i] = u; + u >>= 8; + } + b -= 64; + c += 64; + } + if (b) { + core_chacha(x,z,k); + FOR(i,b) c[i] = x[i]; + } +} + +#define crypto_rng_OUTPUTBYTES 736 + +static int crypto_rng( + unsigned char *r, /* random output */ + unsigned char *n, /* new key */ + const unsigned char *g /* old key */ +) +{ + static const unsigned char nonce[8] = {0}; + unsigned char x[32+crypto_rng_OUTPUTBYTES]; + chacha20(x,sizeof x,nonce,g); + memcpy(n,x,32); + memcpy(r,x+32,crypto_rng_OUTPUTBYTES); + return 0; +} + +static unsigned char knownrandombytes_g[32]; +static unsigned char knownrandombytes_r[crypto_rng_OUTPUTBYTES]; +static unsigned long long knownrandombytes_pos = crypto_rng_OUTPUTBYTES; + +static void knownrandombytes_clear(void) +{ + memset(knownrandombytes_g,0,sizeof knownrandombytes_g); + memset(knownrandombytes_r,0,sizeof knownrandombytes_r); + knownrandombytes_pos = crypto_rng_OUTPUTBYTES; +} + +void knownrandombytes(unsigned char *x,long long xlen) +{ + assert(knownrandombytes_is_only_for_testing_not_for_cryptographic_use); + + while (xlen > 0) { + if (knownrandombytes_pos == crypto_rng_OUTPUTBYTES) { + crypto_rng(knownrandombytes_r,knownrandombytes_g,knownrandombytes_g); + knownrandombytes_pos = 0; + } + *x++ = knownrandombytes_r[knownrandombytes_pos]; xlen -= 1; + knownrandombytes_r[knownrandombytes_pos++] = 0; + } +} + +/* ----- checksums */ + +static unsigned char checksum_state[64]; +static char checksum_hex[65]; + +static void checksum_expected(const char *expected) +{ + long long i; + for (i = 0;i < 32;++i) { + checksum_hex[2 * i] = "0123456789abcdef"[15 & (checksum_state[i] >> 4)]; + checksum_hex[2 * i + 1] = "0123456789abcdef"[15 & checksum_state[i]]; + } + checksum_hex[2 * i] = 0; + + if (strcmp(checksum_hex,expected)) + fail("failure: checksum mismatch: %s expected %s\n",checksum_hex,expected); +} + +static void checksum_clear(void) +{ + memset(checksum_state,0,sizeof checksum_state); + knownrandombytes_clear(); + testvector_clear(); + /* not necessary to clear canary */ +} + +static void checksum(const unsigned char *x,unsigned long long xlen) +{ + u8 block[16]; + int i; + while (xlen >= 16) { + core_salsa(checksum_state,x,checksum_state); + x += 16; + xlen -= 16; + } + FOR(i,16) block[i] = 0; + FOR(i,xlen) block[i] = x[i]; + block[xlen] = 1; + checksum_state[0] ^= 1; + core_salsa(checksum_state,block,checksum_state); +} + +#include "limits.inc" + +static unsigned char *alignedcalloc(unsigned long long len) +{ + unsigned char *x = (unsigned char *) calloc(1,len + 256); + long long i; + if (!x) abort(); + /* will never deallocate so shifting is ok */ + for (i = 0;i < len + 256;++i) x[i] = random(); + x += 64; + x += 63 & (-(unsigned long) x); + for (i = 0;i < len;++i) x[i] = 0; + return x; +} + +/* ----- catching SIGILL, SIGBUS, SIGSEGV, etc. */ + +static void forked(void (*test)(long long),long long impl) +{ + fflush(stdout); + pid_t child = fork(); + int childstatus = -1; + if (child == -1) { + fprintf(stderr,"fatal: fork failed: %s",strerror(errno)); + exit(111); + } + if (child == 0) { + ok = 1; + limits(); + test(impl); + if (!ok) exit(100); + exit(0); + } + if (waitpid(child,&childstatus,0) != child) { + fprintf(stderr,"fatal: wait failed: %s",strerror(errno)); + exit(111); + } + if (childstatus) + fail("failure: process failed, status %d\n",childstatus); + fflush(stdout); +} + +/* ----- verify, derived from supercop/crypto_verify/try.c */ + +static int (*crypto_verify)(const unsigned char *,const unsigned char *); +#define crypto_verify_BYTES lib25519_verify_BYTES + +static unsigned char *test_verify_x; +static unsigned char *test_verify_y; + +static void test_verify_check(void) +{ + unsigned char *x = test_verify_x; + unsigned char *y = test_verify_y; + int r = crypto_verify(x,y); + + if (r == 0) { + if (memcmp(x,y,crypto_verify_BYTES)) + fail("failure: different strings pass verify\n"); + } else if (r == -1) { + if (!memcmp(x,y,crypto_verify_BYTES)) + fail("failure: equal strings fail verify\n"); + } else { + fail("failure: weird return value\n"); + } +} + +void test_verify_impl(long long impl) +{ + unsigned char *x = test_verify_x; + unsigned char *y = test_verify_y; + + if (targeti && strcmp(targeti,lib25519_dispatch_verify_implementation(impl))) return; + if (impl >= 0) { + crypto_verify = lib25519_dispatch_verify(impl); + printf("verify %lld implementation %s compiler %s\n",impl,lib25519_dispatch_verify_implementation(impl),lib25519_dispatch_verify_compiler(impl)); + } else { + crypto_verify = lib25519_verify; + printf("verify selected implementation %s compiler %s\n",lib25519_verify_implementation(),lib25519_verify_compiler()); + } + + kernelrandombytes(x,crypto_verify_BYTES); + kernelrandombytes(y,crypto_verify_BYTES); + test_verify_check(); + memcpy(y,x,crypto_verify_BYTES); + test_verify_check(); + y[myrandom() % crypto_verify_BYTES] = myrandom(); + test_verify_check(); + y[myrandom() % crypto_verify_BYTES] = myrandom(); + test_verify_check(); + y[myrandom() % crypto_verify_BYTES] = myrandom(); + test_verify_check(); +} + +static void test_verify(void) +{ + if (targeto && strcmp(targeto,"verify")) return; + if (targetp && strcmp(targetp,"32")) return; + + test_verify_x = alignedcalloc(crypto_verify_BYTES); + test_verify_y = alignedcalloc(crypto_verify_BYTES); + + for (long long offset = 0;offset < 2;++offset) { + printf("verify offset %lld\n",offset); + for (long long impl = -1;impl < lib25519_numimpl_verify();++impl) + forked(test_verify_impl,impl); + ++test_verify_x; + ++test_verify_y; + } +} +''' + +checksums = {} +operations = [] +primitives = {} +sizes = {} +exports = {} +prototypes = {} + +with open('api') as f: + for line in f: + line = line.strip() + if line.startswith('crypto_'): + line = line.split() + x = line[0].split('/') + assert len(x) == 2 + o = x[0].split('_')[1] + if o not in operations: operations += [o] + p = x[1] + if o not in primitives: primitives[o] = [] + primitives[o] += [p] + if len(line) > 1: + checksums[o,p] = line[1],line[2] + continue + if line.startswith('#define '): + x = line.split(' ') + x = x[1].split('_') + assert len(x) == 4 + assert x[0] == 'crypto' + o = x[1] + p = x[2] + if (o,p) not in sizes: sizes[o,p] = '' + sizes[o,p] += line+'\n' + continue + if line.endswith(');'): + fun,args = line[:-2].split('(') + rettype,fun = fun.split() + fun = fun.split('_') + o = fun[1] + assert fun[0] == 'crypto' + if o not in exports: exports[o] = [] + exports[o] += ['_'.join(fun[1:])] + if o not in prototypes: prototypes[o] = [] + prototypes[o] += [(rettype,fun,args)] + +todo = ( + ('hashblocks',( + ('h','crypto_hashblocks_STATEBYTES','crypto_hashblocks_STATEBYTES'), + ('m',None,'4096'), + ),( + ('loops','4096','32768'), + ('maxtest','128','4096'), + ),( + ('',(),('h',),('m','mlen')), + )), + ('hash',( + ('h','crypto_hash_BYTES','crypto_hash_BYTES'), + ('m',None,'4096'), + ),( + ('loops','64','512'), + ('maxtest','128','4096'), + ),( + ('',('h',),(),('m','mlen')), + )), + ('pow',( + ('q','crypto_pow_BYTES','crypto_pow_BYTES'), + ('p','crypto_pow_BYTES','crypto_pow_BYTES'), + ),( + ('loops','64','512'), + ),( + ('',('q',),(),('p',)), + )), + ('nP',( + ('q','crypto_nP_POINTBYTES','crypto_nP_POINTBYTES'), + ('n','crypto_nP_SCALARBYTES','crypto_nP_SCALARBYTES'), + ('p','crypto_nP_POINTBYTES','crypto_nP_POINTBYTES'), + ),( + ('loops','64','512'), + ),( + ('',('q',),(),('n','p')), + )), + ('nG',( + ('q','crypto_nG_POINTBYTES','crypto_nG_POINTBYTES'), + ('n','crypto_nG_SCALARBYTES','crypto_nG_SCALARBYTES'), + ),( + ('loops','64','512'), + ),( + ('',('q',),(),('n',)), + )), + ('mGnP',( + ('Q','crypto_mGnP_OUTPUTBYTES','crypto_mGnP_OUTPUTBYTES'), + ('m','crypto_mGnP_MBYTES','crypto_mGnP_MBYTES'), + ('n','crypto_mGnP_NBYTES','crypto_mGnP_NBYTES'), + ('P','crypto_mGnP_PBYTES','crypto_mGnP_PBYTES'), + ),( + ('loops','128','1024'), + ),( + ('',('Q',),(),('m','n','P')), + )), + ('dh',( + ('a','crypto_dh_SECRETKEYBYTES','crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES'), + ('b','crypto_dh_SECRETKEYBYTES','crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES'), + ('c','crypto_dh_PUBLICKEYBYTES','crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES'), + ('d','crypto_dh_PUBLICKEYBYTES','crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES'), + ('e','crypto_dh_BYTES','crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES'), + ('f','crypto_dh_BYTES','crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES'), + ),( + ('loops','64','512'), + ),( + ('_keypair',('c','a'),(),()), + ('_keypair',('d','b'),(),()), + ('',('e',),(),('d','a')), + ('',('f',),(),('c','b')), + )), + ('sign',( + ('p','crypto_sign_PUBLICKEYBYTES','4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES'), + ('s','crypto_sign_SECRETKEYBYTES','4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES'), + ('m',None,'4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES'), + ('c',None,'4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES'), + ('t',None,'4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES'), + ),( + ('loops','8','64'), + ('maxtest','128','4096'), + ),( + ('_keypair',('p','s'),(),()), + ('',('c','&clen'),(),('m','mlen','s')), + ('_open',('t','&tlen'),(),('c','clen','p')), + )), +) + +for t in todo: + o,vars,howmuch,tests = t + + Z += '\n' + Z += '/* ----- %s, derived from supercop/crypto_%s/try.c */\n' % (o,o) + + for p in primitives[o]: + Z += 'static const char *%s_%s_checksums[] = {\n' % (o,p) + Z += ' "%s",\n' % checksums[o,p][0] + Z += ' "%s",\n' % checksums[o,p][1] + Z += '} ;\n' + Z += '\n' + + for rettype,fun,args in prototypes[o]: + Z += 'static %s (*%s)(%s);\n' % (rettype,'_'.join(fun),args) + + for line in sizes[o,p].splitlines(): + psize = line.split()[1] + size1 = psize.replace('crypto_%s_%s_'%(o,p),'crypto_%s_'%o) + size2 = psize.replace('crypto_','lib25519_') + Z += '#define %s %s\n' % (size1,size2) + Z += '\n' + + for v,initsize,allocsize in vars: + Z += 'static unsigned char *test_%s_%s_%s;\n' % (o,p,v) + for v,initsize,allocsize in vars: + Z += 'static unsigned char *test_%s_%s_%s2;\n' % (o,p,v) + Z += '\n' + + if (o,p) in precomputed: + Z += '#define precomputed_%s_%s_NUM %d\n' % (o,p,len(precomputed[o,p])) + Z += '\n' + for v,initsize,allocsize in vars: + Z += 'static const unsigned char precomputed_%s_%s_%s[precomputed_%s_%s_NUM][%s] = {\n' % (o,p,v,o,p,allocsize) + for precomp in precomputed[o,p]: + Z += ' {%s},\n' % ','.join(str(c) for c in precomp[v]) + Z += '} ;\n' + Z += '\n' + + Z += 'static void test_%s_%s_impl(long long impl)\n' % (o,p) + Z += '{\n' + for v,initsize,allocsize in vars: + Z += ' unsigned char *%s = test_%s_%s_%s;\n' % (v,o,p,v) + for v,initsize,allocsize in vars: + Z += ' unsigned char *%s2 = test_%s_%s_%s2;\n' % (v,o,p,v) + for v,initsize,allocsize in vars: + if initsize is None: + Z += ' long long %slen;\n' % v + else: + Z += ' long long %slen = %s;\n' % (v,initsize) + Z += '\n' + + Z += ' if (targeti && strcmp(targeti,lib25519_dispatch_%s_%s_implementation(impl))) return;\n' % (o,p) + + Z += ' if (impl >= 0) {\n' + for rettype,fun,args in prototypes[o]: + f2 = ['lib25519','dispatch',o,p]+fun[2:] + Z += ' %s = %s(impl);\n' % ('_'.join(fun),'_'.join(f2)) + Z += ' printf("%s_%s %%lld implementation %%s compiler %%s\\n",impl,lib25519_dispatch_%s_%s_implementation(impl),lib25519_dispatch_%s_%s_compiler(impl));\n' % (o,p,o,p,o,p) + Z += ' } else {\n' + for rettype,fun,args in prototypes[o]: + f2 = ['lib25519',o,p]+fun[2:] + Z += ' %s = %s;\n' % ('_'.join(fun),'_'.join(f2)) + Z += ' printf("%s_%s selected implementation %%s compiler %%s\\n",lib25519_%s_%s_implementation(),lib25519_%s_%s_compiler());\n' % (o,p,o,p,o,p) + Z += ' }\n' + + Z += ' for (long long checksumbig = 0;checksumbig < 2;++checksumbig) {\n' + + maxtestdefined = False + for v,small,big in howmuch: + Z += ' long long %s = checksumbig ? %s : %s;\n' % (v,big,small) + if v == 'maxtest': maxtestdefined = True + Z += '\n' + Z += ' checksum_clear();\n' + Z += '\n' + Z += ' for (long long loop = 0;loop < loops;++loop) {\n' + + wantresult = False + for f,output,inout,input in tests: + cof = 'crypto_'+o+f + for rettype,fun,args in prototypes[o]: + if cof == '_'.join(fun): + if rettype != 'void': + wantresult = True + if wantresult: + Z += ' int result;\n' + + if maxtestdefined: + Z += ' mlen = myrandom() % (maxtest + 1);\n' + Z += '\n' + + initialized = set() + for f,output,inout,input in tests: + cof = 'crypto_'+o+f + + cofrettype = None + for rettype,fun,args in prototypes[o]: + if cof == '_'.join(fun): + cofrettype = rettype + + expected = '0' + unexpected = 'nonzero' + if cof == 'crypto_hashblocks': + expected = 'mlen % crypto_hashblocks_BLOCKBYTES' + unexpected = 'unexpected value' + + if cof == 'crypto_sign': + Z += ' clen = mlen + %s_BYTES;\n' % cof + if cof == 'crypto_sign_open': + Z += ' tlen = clen;\n' + + for v in output: + if len(v) == 1: + Z += ' output_prepare(%s2,%s,%slen);\n' % (v,v,v) + # v now has CDE where C is canary, D is canary, E is canary + # v2 now has same CDE + # D is at start of v with specified length + # C is 16 bytes before beginning + # E is 16 bytes past end + for v in input+inout: + if len(v) == 1: + if v in initialized: + Z += ' memcpy(%s2,%s,%slen);\n' % (v,v,v) + Z += ' double_canary(%s2,%s,%slen);\n' % (v,v,v) + else: + Z += ' input_prepare(%s2,%s,%slen);\n' % (v,v,v) + # v now has CTE where C is canary, T is test data, E is canary + # v2 has same CTE + initialized.add(v) + + args = ','.join(output+inout+input) + if cofrettype == 'void': + Z += ' %s(%s);\n' % (cof,args) + else: + Z += ' result = %s(%s);\n' % (cof,args) + Z += ' if (result != %s) fail("failure: %s returns %s\\n");\n' % (expected,cof,unexpected) + + if cof == 'crypto_sign': + extrabytes = cof+'_BYTES' + Z += ' if (clen < mlen) fail("failure: %s returns smaller output than input\\n");\n' % cof + Z += ' if (clen > mlen + %s) fail("failure: %s returns more than %s extra bytes\\n");\n' % (extrabytes,cof,extrabytes) + if cof == 'crypto_sign_open': + Z += ' if (tlen != mlen) fail("failure: %s does not match mlen\\n");\n' % cof + Z += ' if (memcmp(t,m,mlen) != 0) fail("failure: %s does not match m\\n");\n' % cof + + for v in output+inout: + if len(v) == 1: + Z += ' checksum(%s,%slen);\n' % (v,v) + # output v,v2 now has COE,CDE where O is output; checksum O + initialized.add(v) + for v in output+inout: + if len(v) == 1: + if cof == 'crypto_sign_open' and v == 't': + Z += ' output_compare(%s2,%s,%slen,"%s");\n' % (v,v,'c',cof) + else: + Z += ' output_compare(%s2,%s,%slen,"%s");\n' % (v,v,v,cof) + # output_compare checks COE,CDE for equal C, equal E + for v in input: + if len(v) == 1: + Z += ' input_compare(%s2,%s,%slen,"%s");\n' % (v,v,v,cof) + # input_compare checks CTE,CTE for equal C, equal T, equal E + + deterministic = True + if inout+input == (): deterministic = False + if cof == 'crypto_sign': deterministic = False + + if deterministic: + Z += '\n' + for v in output+inout+input: + if len(v) == 1: + Z += ' double_canary(%s2,%s,%slen);\n' % (v,v,v) + # old output v,v2: COE,CDE; new v,v2: FOG,FDG where F,G are new canaries + # old inout v,v2: COE,CTE; new v,v2: FOG,FTG + # old input v,v2: CTE,CTE; new v,v2: FTG,FTG + + args = ','.join([v if v[-3:] == 'len' else v+'2' for v in output+inout+input]) + if cofrettype == 'void': + Z += ' %s(%s);\n' % (cof,args) + else: + Z += ' result = %s(%s);\n' % (cof,args) + Z += ' if (result != %s) fail("failure: %s returns %s\\n");\n' % (expected,cof,unexpected) + + for w in output + inout: + if len(w) == 1: + # w,w2: COE,COE; goal now is to compare O + Z += ' if (memcmp(%s2,%s,%slen) != 0) fail("failure: %s is nondeterministic\\n");\n' % (w,w,w,cof) + + overlap = deterministic + if inout != (): overlap = False + + if overlap: + for y in output: + if len(y) == 1: + Z += '\n' + for v in output: + if len(v) == 1: + Z += ' double_canary(%s2,%s,%slen);\n' % (v,v,v) + for v in input: + if len(v) == 1: + Z += ' double_canary(%s2,%s,%slen);\n' % (v,v,v) + for x in input: + if len(x) == 1: + # try writing to x2 instead of y, while reading x2 + args = ','.join([x+'2' if v==y else v for v in output] + [x+'2' if v==x else v for v in input]) + + if cofrettype == 'void': + Z += ' %s(%s);\n' % (cof,args) + else: + Z += ' result = %s(%s);\n' % (cof,args) + Z += ' if (result != %s) fail("failure: %s with %s=%s overlap returns %s\\n");\n' % (expected,cof,x,y,unexpected) + + Z += ' if (memcmp(%s2,%s,%slen) != 0) fail("failure: %s does not handle %s=%s overlap\\n");\n' % (x,y,y,cof,x,y) + Z += ' memcpy(%s2,%s,%slen);\n' % (x,x,x) + + if cof == 'crypto_sign_open': + Z += '\n' + for tweaks in range(3): + Z += ' c[myrandom() % clen] += 1 + (myrandom() % 255);\n' + Z += ' if (%s(t,&tlen,c,clen,p) == 0)\n' % cof + Z += ' if ((tlen != mlen) || (memcmp(t,m,mlen) != 0))\n' + Z += ' fail("failure: %s allows trivial forgeries\\n");\n' % cof + + if cof == 'crypto_dh' and output == ('f',): + Z += '\n' + Z += ' if (memcmp(f,e,elen) != 0) fail("failure: %s not associative\\n");\n' % cof + + Z += ' }\n' + Z += ' checksum_expected(%s_%s_checksums[checksumbig]);\n' % (o,p) + Z += ' }\n' + + # ----- test vectors computed by python + + for f,output,inout,input in tests: + cof = 'crypto_'+o+f + if (o,p) in precomputed: + Z += ' for (long long precomp = 0;precomp < precomputed_%s_%s_NUM;++precomp) {\n' % (o,p) + for v,initsize,allocsize in vars: + if v in output: + Z += ' output_prepare(%s2,%s,%s);\n' % (v,v,allocsize) + if v in input+inout: + Z += ' input_prepare(%s2,%s,%s);\n' % (v,v,allocsize) + Z += ' memcpy(%s,precomputed_%s_%s_%s[precomp],%s);\n' % (v,o,p,v,allocsize) + Z += ' memcpy(%s2,precomputed_%s_%s_%s[precomp],%s);\n' % (v,o,p,v,allocsize) + + args = ','.join(output+inout+input) + Z += ' %s(%s);\n' % (cof,args) + + for v,initsize,allocsize in vars: + if v in output+inout: + Z += ' if (memcmp(%s,precomputed_%s_%s_%s[precomp],%s)) {\n' % (v,o,p,v,allocsize) + Z += ' fail("failure: %s fails precomputed test vectors\\n");\n' % cof + Z += ' printf("expected %s: ");\n' % v + Z += ' for (long long pos = 0;pos < %s;++pos) printf("%%02x",precomputed_%s_%s_%s[precomp][pos]);\n' % (allocsize,o,p,v) + Z += ' printf("\\n");\n' + Z += ' printf("received %s: ");\n' % v + Z += ' for (long long pos = 0;pos < %s;++pos) printf("%%02x",%s[pos]);\n' % (allocsize,v) + Z += ' printf("\\n");\n' + Z += ' }\n' + + for v,initsize,allocsize in vars: + if v in output+inout: + Z += ' output_compare(%s2,%s,%s,"%s");\n' % (v,v,allocsize,cof) + if v in input: + Z += ' input_compare(%s2,%s,%s,"%s");\n' % (v,v,allocsize,cof) + + Z += ' }\n' + + Z += '}\n' + Z += '\n' + + Z += 'static void test_%s_%s(void)\n' % (o,p) + Z += '{\n' + Z += ' if (targeto && strcmp(targeto,"%s")) return;\n' % o + Z += ' if (targetp && strcmp(targetp,"%s")) return;\n' % p + + for v,initsize,allocsize in vars: + Z += ' test_%s_%s_%s = alignedcalloc(%s);\n' % (o,p,v,allocsize) + for v,initsize,allocsize in vars: + Z += ' test_%s_%s_%s2 = alignedcalloc(%s);\n' % (o,p,v,allocsize) + Z += '\n' + + Z += ' for (long long offset = 0;offset < 2;++offset) {\n' + Z += ' printf("%s_%s offset %%lld\\n",offset);\n' % (o,p) + Z += ' for (long long impl = -1;impl < lib25519_numimpl_%s_%s();++impl)\n' % (o,p) + Z += ' forked(test_%s_%s_impl,impl);\n' % (o,p) + for v,initsize,allocsize in vars: + Z += ' ++test_%s_%s_%s;\n' % (o,p,v) + for v,initsize,allocsize in vars: + Z += ' ++test_%s_%s_%s2;\n' % (o,p,v) + + Z += ' }\n' + + Z += '}\n' + + for line in sizes[o,p].splitlines(): + psize = line.split()[1] + size1 = psize.replace('crypto_%s_%s_'%(o,p),'crypto_%s_'%o) + Z += '#undef %s\n' % size1 + Z += '\n' + + +Z += r'''/* ----- top level */ + +#include "print_cpuid.inc" + +int main(int argc,char **argv) +{ + setvbuf(stdout,0,_IOLBF,0); + kernelrandombytes_setup(); + printf("lib25519 version %s\n",lib25519_version); + printf("lib25519 arch %s\n",lib25519_arch); + print_cpuid(); + + if (*argv) ++argv; + if (*argv) { + targeto = *argv++; + if (*argv) { + targetp = *argv++; + if (*argv) { + targeti = *argv++; + } + } + } + +''' + +Z += ' test_verify();\n' +for t in todo: + o,vars,howmuch,tests = t + for p in primitives[o]: + Z += ' test_%s_%s();\n' % (o,p) + +Z += r''' + if (!ok) { + printf("some tests failed\n"); + return 100; + } + printf("all tests succeeded\n"); + return 0; +} +''' + +with open('command/lib25519-test.c','w') as f: + f.write(Z) diff --git a/lib-25519/lib25519/benchmarks/ausone b/lib-25519/lib25519/benchmarks/ausone new file mode 100644 index 0000000000..4355035805 --- /dev/null +++ b/lib-25519/lib25519/benchmarks/ausone @@ -0,0 +1,1112 @@ +lib25519 version 20221221 +lib25519 arch amd64 +cpuid 756e6547 6c65746e 49656e69 65746e49 2952286c 726f4320 4d542865 51203229 20646175 20555043 51202020 30303636 20402020 30342e32 007a4847 000006fb 03040800 0000e3bd bfebfbff 00000000 00000000 00000000 00000000 00000000 00000000 00000001 20100800 00000000 00000000 00000000 00000000 00000000 +cpucycles selected persecond 2394000000 +cpucycles selected implementation amd64-tsc +cpucycles selected 0 117 +9+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 0 117 +30708+9+9+0+0+9+0+0+9+0+0+9+0+0+9 +randombytes selected 1 3762 +6993+621+9+81+0+0+0-9+0+0+0+0+0-9+0 +randombytes selected 2 3771 +450+0-9+0-9+0-9+0-9+0-9+0-9+0+0 +randombytes selected 4 4239 +342+0+0+0+0+0+0+0+0+0+0+0+0+0+9 +randombytes selected 7 4239 +297+0+0+0+0+0+0+0+0+0+0+0+0+0+9 +randombytes selected 11 3798 +369+0-9+0+0+0+0+0-9+0+0+0+0+0+0 +randombytes selected 17 3798 +315+0+0+9+0+0+9+0+0+9+0+0+9+0+9 +randombytes selected 26 3816 +252-9+0-9+0-9+0-9+0-9+0-9+0-9+0 +randombytes selected 40 4788 +342+0-9+0+0-9+0+0-9+0+0-9+0+0+0 +randombytes selected 61 5265 +342+0+0+0+0+0+0+0+0+0+0+0+0+0+9 +randombytes selected 92 6264 +423+0-9+0-9+0-9+0-9+0-9+0-9+0+0 +randombytes selected 139 6831 +351+72+63+0+0+0-9+0+0+0+0+0-9+0+9 +randombytes selected 209 7830 +360+117+0+0+9+0+0+9+0+0+9+0+0+9+9 +randombytes selected 314 8838 +432+63+9+0+0+0+0+0+9+0+0+0+0+0+9 +randombytes selected 472 11853 +432+72+0+0+0+0+0+0+0+0+0+0+0+0+9 +randombytes selected 709 16272 +441+45+0+0-9+0+0-9+0+0-9+0+0-9+9 +randombytes selected 1064 20889 +450+72+0+0+0+0+0+0+0+0+0+0+0+0+9 +randombytes selected 1597 29340 +288+0+0+0+0+0+9+0+0+0+0+0+9+0+0 +randombytes selected 2396 42372 +252+0+0+0-9+0-9+0-9+0-9+0-9+0+0 +randombytes selected 3595 61002 +360+72-9+0+0-9+0+0-9+0+0-9+0+0+0 +randombytes selected 5393 89190 +441+9+0+9+0+9+9+0-9-9-9-9-9-9+0 +randombytes selected 8090 131346 +441+54+26496+342-9+36+27+36+0+0+0+0+0+0-9 +randombytes selected 12136 194715 +297+9+0+9+0+9+0+18-36-45-36-36-36-45-36 +randombytes selected 18205 290394 +369+0+9+9+0+9+0+9+0+0+0+9+0+0+60057 +randombytes selected 27308 433161 +21294+54+27+92934+513+45-18-27+0-9-9+0-9-9+0 +randombytes selected 40963 648018 +78732+594+90+23571+270+18-9+0-9-9-9-9-9+0-9 +randombytes selected 61445 969354 +18+16911+162-9+0+0-9+0+0-9+0+32742+567+54+63 +verify_32 selected implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 selected 32 243 +17865+9-9+0+0+0+0+0+0+0-9+0+0+0+0 +verify_32 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 0 32 288 +17649+0+9+0+0+9+0+0+9+0+0+9+0+0+9 +verify_32 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 1 32 243 +126+0+36+0+0+0+0-9+0+0+0+0+0-9+0 +hashblocks_sha512 selected implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 selected 0 117 +423+81+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 1 117 +90+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 2 117 +72+0+0+0+0+0+0+45+0+0+0+45+0+45+45 +hashblocks_sha512 selected 4 117 +63+0+0+0+0+0+0+54+0+0+0+45+0+45+45 +hashblocks_sha512 selected 7 117 +72+0+0+0+0+0+0+45+0+0+0+45+0+45+45 +hashblocks_sha512 selected 11 117 +63+0+0+0+0+0+0+54+0+0+0+45+0+45+45 +hashblocks_sha512 selected 17 117 +72+0+0+0+0+0+0+45+0+0+0+45+0+45+45 +hashblocks_sha512 selected 26 117 +72+0+0+0+0+0+0+45+0+0+0+45+0+45+45 +hashblocks_sha512 selected 40 117 +63+0+0+0+0+0+0+54+0+0+0+45+0+45+45 +hashblocks_sha512 selected 61 117 +117+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 92 117 +72+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 139 2574 +19854+189+0+0+0+0+0+0+9+0+0+0+0+0+9 +hashblocks_sha512 selected 209 2574 +468+9+0+0+0+0+0+9+0+0+0+0+0+9+0 +hashblocks_sha512 selected 314 4959 +414+63+0-9+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 472 7344 +414+54+36+0+0-9+0+0-9+0+0+0+0+0-9 +hashblocks_sha512 selected 709 12114 +432+36-9+0-9-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 selected 1064 19260 +414+36+0+0+0+0-9+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 1597 28791 +396+45+0+0+0+9+0+0+0+9+0+0+9+0+0 +hashblocks_sha512 selected 2396 43092 +423+45+0+0+0+9+0+0+0+9+0+0+9+0+0 +hashblocks_sha512 selected 3595 66933 +432+36-9+0-9+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 selected 5393 100296 +603+45+0+0+0+9+0+0+0+9+0+0+9+0+0 +hashblocks_sha512 selected 8090 150354 +522+36+0+0-9+0+0+0-9+0+0+0+0+0-9 +hashblocks_sha512 selected 12136 224280 +486+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 18205 338688 +540+0+0+124749+261+0+0-9+0+0+0+0+0-9+0 +hashblocks_sha512 selected 27308 507897 +783+9+0+0+9+0+0+9+0+36450+396+0+0+9+0 +hashblocks_sha512 selected 40963 763839 +774-45-36-27-36-36-27+14706+27+0+0+0+0+0-9 +hashblocks_sha512 selected 61445 1145475 +756+15660+144+0-9+0-9+0+0-9+31185+0+9+9+9 +hashblocks_sha512 0 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 0 0 369 +37530+27+0-9+0+0-9+0-9+0-9+0+0-9+0 +hashblocks_sha512 0 1 369 +189-9+0+0-9+0+0-9+0+0-9+0+0-9+0 +hashblocks_sha512 0 2 369 +99+0+0-9+0+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 0 4 369 +99-9+0+0-9+0+0-9+0+0-9+0+0-9+0 +hashblocks_sha512 0 7 369 +99+0+0-9+0+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 0 11 369 +99+0-9+0+0-9+0+0-9+0+0-9+0+0-9 +hashblocks_sha512 0 17 369 +99-9+0+0-9+0+0-9+0+0-9+0+0-9+0 +hashblocks_sha512 0 26 369 +99-9+0+0-9+0+0-9+0+0-9+0+0-9+0 +hashblocks_sha512 0 40 369 +99-9+0+0-9+0+0-9+0+0-9+0+0-9+0 +hashblocks_sha512 0 61 369 +99+0-9+0+0-9+0+0-9+0+0-9+0+0-9 +hashblocks_sha512 0 92 369 +99+0-9+0+0-9+0+0-9+0+0-9+0+0-9 +hashblocks_sha512 0 139 2817 +2520+36+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 0 209 2817 +504+0+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 0 314 5274 +522+54+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 0 472 7731 +504+54+18+9+0+0+9+0+0+9+0+0+9+0+0 +hashblocks_sha512 0 709 12645 +549+27+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 0 1064 20016 +486+27+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 0 1597 29844 +549+18+0+9+0+0+9+0+15696+9+0+0+9+0+0 +hashblocks_sha512 0 2396 44586 +558+27+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 0 3595 69156 +486+18+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 0 5393 103554 +495+18+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 0 8090 155151 +513+18+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 0 12136 231336 +477+0+9+0+0+18+0+0+9+0+0+19188+0+0+9 +hashblocks_sha512 0 18205 349272 +567+0+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 0 27308 523728 +486-9-9-9+44469+36+0+0+0+0+0+0+9+0+0 +hashblocks_sha512 0 40963 786645 +585-18-27+15642+0+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 0 61445 1179765 +522-27-18-27-18-27-18+29430+27+9+0+0+9+0+0 +hashblocks_sha512 1 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 1 0 270 +1116+0+27+0+9+0+0+9+9+9+0+0+9+0+0 +hashblocks_sha512 1 1 270 +261+9+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 1 2 270 +234+9+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 1 4 270 +270+0+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 1 7 270 +243+0+0+9+0+0+9+0+0+9+0+0+9+0+0 +hashblocks_sha512 1 11 270 +234+0+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 1 17 270 +234+9+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 1 26 270 +243+0+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 1 40 270 +243+9+0+0+9+0+0+9+9+9+0+0+9+0+0 +hashblocks_sha512 1 61 270 +225+0+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 1 92 270 +252+9+0+0+9+0+0+9+9+0+9+0+0+9+0 +hashblocks_sha512 1 139 2898 +1773+153+9+9+0+9+0+9+0+27-18-18-18-18-18 +hashblocks_sha512 1 209 2907 +531+0+0+9-9+0-9+0-9+0-9+18-27-27-27 +hashblocks_sha512 1 314 5490 +522+72+18+27+18+45+27+0-9-9+0-9-9+0-9 +hashblocks_sha512 1 472 8091 +612+99+54+54-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 1 709 13293 +684+90+0+0+0-9+0+0+0+0+0-9+0+0+0 +hashblocks_sha512 1 1064 21114 +684+18+0-9+0+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 1 1597 31527 +684+18+0-9+0-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 1 2396 47142 +648+18+0-9+0-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 1 3595 73161 +657+27+0+0+0+0+0+9+0+0+0+0+0+9+0 +hashblocks_sha512 1 5393 109611 +657+18+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 8090 164268 +693+18+0-9+0-9+0-9+0+15840+27+0-9+0-9 +hashblocks_sha512 1 12136 244980 +846-9+0+0-9+0+0-9+0+0-9+0+0-9+0 +hashblocks_sha512 1 18205 369927 +648-9+0+0-9+0+0-9+9+0-9+30438-45-72-72 +hashblocks_sha512 1 27308 554733 +981+0-9+0-9+0-9+0+0+0-9+0-9+15174-36 +hashblocks_sha512 1 40963 833121 +1098+0+0+0-9+0+0+0+14715+90-36-27-36-27-36 +hashblocks_sha512 1 61445 1249515 +1197+27+39114-36-9+0+9+0+9+13221+198-9+0-9+0 +hashblocks_sha512 2 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 2 0 369 +21762+27+0+0-9+0+0-9+0-9+0+0-9+0+0 +hashblocks_sha512 2 1 369 +135+0+0-9+0+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 2 2 369 +72+0+0-9+0+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 2 4 369 +72+0+0-9+0+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 2 7 369 +72+0+0-9+0+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 2 11 369 +81-9+0+0-9+0+0-9+0+0-9+0+0-9+0 +hashblocks_sha512 2 17 369 +72+0-9+0+0-9+0+0-9+0+0-9+0+0-9 +hashblocks_sha512 2 26 369 +81-9+0+0-9+0+0-9+0+0-9+0+0-9+0 +hashblocks_sha512 2 40 369 +90+0+0-9+0+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 2 61 369 +81+0-9+0+0-9+0+0-9+0+0-9+0+0-9 +hashblocks_sha512 2 92 369 +90-9+0+0-9+0+0-9+0+0-9+0+0-9+0 +hashblocks_sha512 2 139 4509 +1071+81+27+18-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 2 209 4509 +225+0+36+36-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 2 314 8640 +216+117+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 472 12780 +441+63+9+0-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 2 709 21051 +297+9+0-9+0-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 2 1064 33453 +288+9+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 1597 49995 +288+9+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 2396 74808 +297+18+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 3595 116163 +297+9+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 5393 174060 +279+9+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 8090 260910 +288+9+0-9+0+28692+45-9+0-9+0-9+0-9+0 +hashblocks_sha512 2 12136 389196 +261+0+0-9+0+0-9+0+0-9+0+0+0+0+36360 +hashblocks_sha512 2 18205 587619 +639+9+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 2 27308 881316 +549+9+0+0+9+0+0+0+9+0+27954+45+9+0+0 +hashblocks_sha512 2 40963 1323747 +495+0-9+25353+36-9-9+0-9-9+19584+54-9-9+0 +hashblocks_sha512 2 61445 1985508 +33660+45-9-9-9+23670+27+0-9-9+11196+45+27-9+0 +hashblocks_sha512 3 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 3 0 270 +963+9+27+0+0+9+0+0+18+9+0+0+9+0+0 +hashblocks_sha512 3 1 270 +270+9+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 3 2 270 +189+0+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 3 4 270 +225+0+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 3 7 270 +198+0+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 3 11 270 +207+0+0+9+0+0+9+0+0+9+0+0+9+0+0 +hashblocks_sha512 3 17 270 +207+9+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 3 26 270 +216+0+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 3 40 270 +216+0+0+9+0+0+9+0+0+9+0+0+9+0+0 +hashblocks_sha512 3 61 270 +288+0+0+0+9+0+0+9+18+0+9+0+0+9+0 +hashblocks_sha512 3 92 270 +243+0+0+9+0+0+9+0+0+9+0+0+9+0+0 +hashblocks_sha512 3 139 4230 +927+333+0+0+0+9+0+9+0+0+0+0+0+0-9 +hashblocks_sha512 3 209 4230 +369+18+0+0+0+9+0+9+0+9+0+9+0+0+0 +hashblocks_sha512 3 314 8154 +459+45-18-9+18+0+0-9+0+0-9+0+0-9+0 +hashblocks_sha512 3 472 12096 +432+72-9+9+0+0+0+0+0+9+0+0+0+0+0 +hashblocks_sha512 3 709 19935 +504-9+0-9+0-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 3 1064 31662 +585+9+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 3 1597 47349 +549+18+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 2396 70848 +675+18+0-9+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 3595 110016 +558+18+0-9+0+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 3 5393 164880 +693+18+9+0+15732-27+0+9-9+9+0+0+9+0+0 +hashblocks_sha512 3 8090 247158 +792+18+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 3 12136 368631 +684+0+0+0+0-9+0+0+0+14265-207-225-72-225-225 +hashblocks_sha512 3 18205 557010 +612-252-225+0+0+9+0+0-63+0+0+9+29034-684-585 +hashblocks_sha512 3 27308 835029 +378+0-108+27+171+171+207+243+14346-882-432-432-441-432-432 +hashblocks_sha512 3 40963 1252674 +702-225+17100-63-81+0+0+9+0+26208-18+153-153-144-144 +hashblocks_sha512 3 61445 1878588 +20106+477+297+0+0+11727+81+18-225-27+26703-126-63-9-9 +hashblocks_sha512 4 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 4 0 351 +20646+45+18-9+0-9+0-9+9+0-9+0-9+0-9 +hashblocks_sha512 4 1 342 +135+0+9+0+9+0+9+0+9+0+9+0+9+0+0 +hashblocks_sha512 4 2 351 +108-9+0-9+0-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 4 4 351 +99+0-9+0-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 4 7 351 +99+0-9+0-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 4 11 351 +108-9+0-9+0-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 4 17 351 +99+0-9+0-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 4 26 351 +99-9+0-9+0-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 4 40 351 +99+0-9+0-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 4 61 351 +99+0-9+0-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 4 92 351 +99-9+0-9+0-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 4 139 4932 +729+72+153+0-9+0+0-9+0+0-9+0+0-9+0 +hashblocks_sha512 4 209 4932 +99+9+153-9+0+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 4 314 9468 +180+207+9+0+0+0+0+0+9+0+0+0+0+0+9 +hashblocks_sha512 4 472 13995 +126+225+27+0-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 4 709 23049 +117+180+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 4 1064 36639 +54+180+0-9+0+0+0+0+0-9+0+0+0+0+0 +hashblocks_sha512 4 1597 54558 +171+117+0+0-9+0+0-9+0+0-9+0+0-9+0 +hashblocks_sha512 4 2396 81486 +360+27+0+0-9+0+0-9+0+0-9+0+0-9+0 +hashblocks_sha512 4 3595 126360 +423+36+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 4 5393 189288 +459+27+0+0-9+0+0+14715+162+0-9+0+0-9+0 +hashblocks_sha512 4 8090 283536 +495+27+0-9+0+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 4 12136 422784 +504-9+0+0-9+0+0+28773+144+0+0-9+0+0-9 +hashblocks_sha512 4 18205 638370 +558-9+0+0-9+0+0-9+14985+315+0+0-9+0+0 +hashblocks_sha512 4 27308 957393 +720-45-54-54+14733+378+0+0+9+0+0+0+0+0+25362 +hashblocks_sha512 4 40963 1438254 +801-9+0+0-9+15435+144-9+0+0-9+0+11772+36-9 +hashblocks_sha512 4 61445 2157174 +711+28971+99-135-135+12762+306-135-135-135+11466+0-135-135+23796 +hashblocks_sha512 5 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 5 0 252 +1350+0+27+0+0+0+0+0+18+0+0+0+0+0+9 +hashblocks_sha512 5 1 252 +162+0+0+9+0+0+0+0+0+9+0+0+0+0+0 +hashblocks_sha512 5 2 252 +108+9+0+0+0+0+0+9+0+0+0+0+0+9+0 +hashblocks_sha512 5 4 252 +117+0+0+9+0+0+0+0+0+9+0+0+0+0+0 +hashblocks_sha512 5 7 252 +108+0+0+0+9+0+0+0+0+0+9+0+0+0+0 +hashblocks_sha512 5 11 252 +108+0+9+0+0+0+0+0+9+0+0+0+0+0+9 +hashblocks_sha512 5 17 252 +117+0+0+0+0+9+0+0+0+0+0+9+0+0+0 +hashblocks_sha512 5 26 252 +108+0+0+0+9+0+0+0+0+0+9+0+0+0+0 +hashblocks_sha512 5 40 252 +234+0+9+0+0+0+0+0+9+0+0+0+0+0+9 +hashblocks_sha512 5 61 252 +144+0+0+9+0+0+0+0+0+9+0+0+0+0+0 +hashblocks_sha512 5 92 252 +135+9+0+0+0+0+0+9+0+0+0+0+0+9+0 +hashblocks_sha512 5 139 4311 +432+216+45+27+0-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 5 209 4311 +234+63+45-9+0-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 5 314 8397 +324+270+207+9+0+9+0-18+0-9-9+0-9-9+0 +hashblocks_sha512 5 472 12465 +333+315+270+234+36+36-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 5 709 20601 +387+324+288-9+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 5 1064 32877 +369+279+162+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 1597 49158 +459+198+153+9+0+0+9+0+0+9+0+0+9+0+0 +hashblocks_sha512 5 2396 73584 +477+198+162+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 5 3595 114300 +468+189+162-9+0+0-9+0+0-9+0+0-9+0+18009 +hashblocks_sha512 5 5393 171351 +603+189+162+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 8090 256842 +468+198+162+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 12136 383301 +279+0+0-9+0+15174+108+0+0+0+0-9+0+0-9 +hashblocks_sha512 5 18205 578898 +603-9-9-18-9-9-18-9+0+30969+162+90+99+90+99 +hashblocks_sha512 5 27308 868410 +1233-144-216-216-216+15309+1476+0+18+0+0+0+0+9+0 +hashblocks_sha512 5 40963 1307547 +15363+36-27+0-27-27-18+25785+36+0+0+0+0+18+18603 +hashblocks_sha512 5 61445 1961181 +144-126-126+16524-54-72-63-27+24696+9+0-9+27+12618+36 +hashblocks_sha512 6 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 6 0 333 +981+0+36+0+9+0+9+0+9+0-9+0-9+0-9 +hashblocks_sha512 6 1 333 +135+9+0+9+0+9+0+9-9+0-9+0-9+0-9 +hashblocks_sha512 6 2 333 +117+0+9+0+9+0+9+0+0-9+0-9+0-9+0 +hashblocks_sha512 6 4 333 +117+0+9+0+9+0+9+0+0-9+0-9+0-9+0 +hashblocks_sha512 6 7 333 +117+0+9+0+9+0+9+0+0-9+0-9+0-9+0 +hashblocks_sha512 6 11 333 +126+0+9+0+9+0+9+0+0-9+0-9+0-9+0 +hashblocks_sha512 6 17 333 +117+9+0+9+0+9+0+9-9+0-9+0-9+0-9 +hashblocks_sha512 6 26 333 +117+9+0+9+0+9+0+9-9+0-9+0-9+0-9 +hashblocks_sha512 6 40 333 +117+0+9+0+9+0+9+0+0-9+0-9+0-9+0 +hashblocks_sha512 6 61 333 +117+0+9+0+9+0+9+0+0-9+0-9+0-9+0 +hashblocks_sha512 6 92 333 +117+9+0+9+0+9+0+9-9+0-9+0-9+0-9 +hashblocks_sha512 6 139 3258 +18621+126+0-9+0-9+0-9-9+180+0-9+0-9+0 +hashblocks_sha512 6 209 3258 +306+0-9+0-9+0-9+0+180+0-9+0-9+0-9 +hashblocks_sha512 6 314 6210 +225+0+0-9+0+189+0-18-9-18+180-9-18+54+0 +hashblocks_sha512 6 472 9072 +405+117+72+0+0+0-9-9+189+0+0+0-9+0-18 +hashblocks_sha512 6 709 14877 +387+99+90+9+0+0+0+0-9+180-9-18-18-18-18 +hashblocks_sha512 6 1064 23580 +378+135+72+0+9+0+9+0-9+180-9-18-18-9-18 +hashblocks_sha512 6 1597 35190 +405+108+0+9+0+9+0-18-9-27+189-18-18-9-18 +hashblocks_sha512 6 2396 52596 +468+27+18+9+18+9-9+0-9-9+0-18+198-9-9 +hashblocks_sha512 6 3595 81630 +486+18+14697+36+0+0+0+0-9+9+0-18+198-9-9 +hashblocks_sha512 6 5393 122265 +477+18+0+0+0+9+0-9-9+0-9-9+189-9+0 +hashblocks_sha512 6 8090 183222 +477+9-9-9+0+9+0+0+0+0+0-9+198+0+0 +hashblocks_sha512 6 12136 273195 +468+9+0+0+0+0+0+9+0+0+0+50373+90+0+9 +hashblocks_sha512 6 18205 412542 +531-18-18-18-9+18+0+9+9+0+9+0+9+0+9 +hashblocks_sha512 6 27308 618597 +549+17487+108+0-9-9-9-9-9+0+9-9-9+0+9 +hashblocks_sha512 6 40963 929142 +693+0+0+0-9+0+0-9+0+0+27063+63-9+0+0 +hashblocks_sha512 6 61445 1393542 +576+30843+15237+28764+54-9-18-18+0+13536+36-9-18-18-9 +hashblocks_sha512 7 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 7 0 252 +972+0+27+0+0+0+0+9+9+0+9+0+0+0+0 +hashblocks_sha512 7 1 252 +162+9+0+0+0+0+0+9+0+0+0+0+0+9+0 +hashblocks_sha512 7 2 252 +126+0+9+0+0+0+0+0+9+0+0+0+0+0+9 +hashblocks_sha512 7 4 252 +153+0+0+0+0+0+9+0+0+0+0+0+9+0+0 +hashblocks_sha512 7 7 252 +126+0+0+0+0+0+9+0+0+0+0+0+9+0+0 +hashblocks_sha512 7 11 252 +126+0+0+0+9+0+0+0+0+0+9+0+0+0+0 +hashblocks_sha512 7 17 252 +126+0+0+0+9+0+0+0+0+0+9+0+0+0+0 +hashblocks_sha512 7 26 252 +234+0+0+0+0+0+9+0+0+0+0+0+9+0+0 +hashblocks_sha512 7 40 252 +153+0+9+0+0+0+0+0+9+0+0+0+0+0+9 +hashblocks_sha512 7 61 252 +126+9+0+0+0+0+0+9+0+0+0+0+0+9+0 +hashblocks_sha512 7 92 252 +126+9+0+0+0+0+0+9+0+0+0+0+0+9+0 +hashblocks_sha512 7 139 3015 +351+117+36+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 7 209 3015 +144+0+0+9+0+0+9+0+0+9+0+0+9+0+0 +hashblocks_sha512 7 314 5778 +180+54+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 472 8541 +180+54+27-9+0+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 7 709 14058 +180+27+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 1064 22338 +180+27+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 1597 33381 +180+27-9+0+0-9+0+0-9+0+0-9+0+0-9 +hashblocks_sha512 7 2396 49941 +180+18+0-9+0+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 7 3595 77535 +180+27+0+9+0+0+9+0+0+9+0+0+9+0+0 +hashblocks_sha512 7 5393 116172 +180+27+0+0+0+0+9+0+0+0+0+0+9+0+0 +hashblocks_sha512 7 8090 174132 +171+27+18-9+0+0-9+0+0-9+0+0-9+15624+18 +hashblocks_sha512 7 12136 259713 +24030+36+0-9+0+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 7 18205 392175 +261+0-9+0-9+0-9+0-9+0-9+14454+9-18-18 +hashblocks_sha512 7 27308 588114 +207+0-9+0-9+0-9+0-9+0-9+0+29763+18-18 +hashblocks_sha512 7 40963 883377 +423+30861+27-9-9-9-18+14868+144+0-9+0-9+0-9 +hashblocks_sha512 7 61445 1324944 +14949+252+0-9+0-9+0-9+25452+45+0+0-9+0+0 +hashblocks_sha512 8 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 8 0 270 +20997+54+0+0+0+0+9+0+9+0+0+0+0+0+9 +hashblocks_sha512 8 1 270 +243+0+27+9+0+0+0+0+0+9+0+0+0+0+0 +hashblocks_sha512 8 2 270 +216+0+0+0+9+0+0+0+0+0+9+0+0+0+0 +hashblocks_sha512 8 4 270 +225+0+0+0+0+9+0+0+0+0+0+9+0+0+0 +hashblocks_sha512 8 7 270 +225+0+0+0+0+9+0+0+0+0+0+9+0+0+0 +hashblocks_sha512 8 11 270 +225+0+0+0+0+9+0+0+0+0+0+9+0+0+0 +hashblocks_sha512 8 17 270 +216+9+0+0+0+0+0+9+0+0+0+0+0+9+0 +hashblocks_sha512 8 26 270 +216+0+0+9+0+0+0+0+0+9+0+0+0+0+0 +hashblocks_sha512 8 40 270 +216+0+0+0+9+0+0+0+0+0+9+0+0+0+0 +hashblocks_sha512 8 61 270 +216+0+0+9+0+0+0+0+0+9+0+0+0+0+0 +hashblocks_sha512 8 92 270 +216+9+0+0+0+0+0+9+0+0+0+0+0+9+0 +hashblocks_sha512 8 139 2799 +8613+54+0+0+0+9+0+0+0+0+0+9+0+0+0 +hashblocks_sha512 8 209 2799 +3960+9+27+0+9+0+0+0+0+0+9+0+0+0+0 +hashblocks_sha512 8 314 5319 +3987+90+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 472 7857 +3996+27+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 709 12915 +3987+63+45+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 1064 20493 +4023+72+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 1597 30618 +4086+27-9+0-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 8 2396 45792 +4014+27-9+0-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 8 3595 71082 +4023+18+0-9+0-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 8 5393 106479 +4014+27-9+0-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 8 8090 159579 +4041+18+0-9+0-9+32877+126+0-9+17055+36-9+0-9 +hashblocks_sha512 8 12136 238005 +3969-9+0-9+0-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 8 18205 359379 +4122-9+0-9+0-9+0-9+0-9+0-9+33417+180+9 +hashblocks_sha512 8 27308 538911 +4311+0-9+0-9+0-9+0+27+0-9+0-9+0+17478 +hashblocks_sha512 8 40963 809514 +4464+18+0+0+0+0+0+9+0+16875+216+63+0+0+0 +hashblocks_sha512 8 61445 1214055 +4941+27+36+32949+36+0-9-27-54-54+15651+486-99-108-90 +hashblocks_sha512 9 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 9 0 234 +936+27+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 1 234 +189+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 2 234 +135+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 4 234 +135+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 7 234 +135+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 11 234 +135+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 17 234 +135+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 26 234 +162+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 40 234 +270+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 61 234 +180+27+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 92 234 +144+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 139 2979 +10188+45+0+9+0+0+0+0+0+9+0+0+0+0+0 +hashblocks_sha512 9 209 2979 +4320+0+9+0+0+0+0+0+9+0+0+0+0+0+9 +hashblocks_sha512 9 314 5724 +4347+9+0+0-9+0+0-9+0+0-9+0+0-9+0 +hashblocks_sha512 9 472 8451 +4383+54+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 9 709 13941 +4374+36+9-9+0-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 9 1064 22158 +4374+63+18+0+0+0+0-9+0+0+0+0+0-9+0 +hashblocks_sha512 9 1597 33111 +4437+27+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 2396 49563 +4383+27+0-9+17946-153-9+0-9-9+0-9+0-9+0 +hashblocks_sha512 9 3595 76968 +4338+36+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 9 5393 115326 +4230+27+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 8090 172881 +4149+27+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 9 12136 257877 +4077+0+0+0+0+0+0+0+0+0+32364+18+0+0+0 +hashblocks_sha512 9 18205 388404 +4626+0+0+9+0+0+9+0+0+9+99+0+9+0+0 +hashblocks_sha512 9 27308 582516 +4518+17757+0+9+0-9+0-9+99-9+0-9+0-9+0 +hashblocks_sha512 9 40963 874332 +23184+729-36+18+81-27+0+9+0+0+0+30699+792-36-36 +hashblocks_sha512 9 61445 1311237 +6390+198+189+18225+720+0+0+0+0+0+13311+3807+0+0+0 +hashblocks_sha512 10 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 10 0 270 +21069+18+0+9+0+0+0+0+9+0+0+9+0+0+0 +hashblocks_sha512 10 1 270 +297+0+0+0+9+0+0+0+0+0+9+0+0+0+0 +hashblocks_sha512 10 2 270 +225+0+0+9+0+0+0+0+0+9+0+0+0+0+0 +hashblocks_sha512 10 4 270 +234+0+0+0+0+0+9+0+0+0+0+0+9+0+0 +hashblocks_sha512 10 7 270 +234+0+0+0+0+9+0+0+0+0+0+9+0+0+0 +hashblocks_sha512 10 11 270 +234+0+0+0+0+9+0+0+0+0+0+9+0+0+0 +hashblocks_sha512 10 17 270 +225+0+0+9+0+0+0+0+0+9+0+0+0+0+0 +hashblocks_sha512 10 26 270 +225+9+0+0+0+0+0+9+0+0+0+0+0+9+0 +hashblocks_sha512 10 40 270 +225+0+0+0+9+0+0+0+0+0+9+0+0+0+0 +hashblocks_sha512 10 61 270 +234+0+0+0+0+9+0+0+0+0+0+9+0+0+0 +hashblocks_sha512 10 92 270 +225+0+0+9+0+0+0+0+0+9+0+0+0+0+0 +hashblocks_sha512 10 139 2799 +9351+36+0+0-9+0+0+0+0+0-9+0+0+0+0 +hashblocks_sha512 10 209 2799 +3951+0+0+0-9+0+0+0+0+0-9+0+0+0+0 +hashblocks_sha512 10 314 5301 +3960+54+0+0-9+0+0+0+0+0-9+0+0+0+0 +hashblocks_sha512 10 472 7803 +3996+144+0+0+0-9+0+0+0+0+0-9+0+0+0 +hashblocks_sha512 10 709 12807 +3978+81+54+0+0-9+0+0+0+0+0-9+0+0+0 +hashblocks_sha512 10 1064 20349 +4032+135+54-9+0-9+0-9+0-9+0-9+0-9+0 +hashblocks_sha512 10 1597 30321 +4068+36-9+0-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 10 2396 45279 +4626+36+0-9+0-9+0-9-72-9+0-9+0-9+0 +hashblocks_sha512 10 3595 70209 +4176+36-9+0-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 10 5393 105147 +4176+36+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 8090 157500 +4347+45+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 12136 234864 +4464+0+34308+306-9+0+29106+729-72+0-9+17964+783-9+0 +hashblocks_sha512 10 18205 354609 +4932+0+0-9+0+0+0+0+0-9+0+0+144+0+0 +hashblocks_sha512 10 27308 532296 +5796-432-603-603+19278+1260+0+0-99+0+0+0+0+0+0 +hashblocks_sha512 10 40963 804600 +2448-513-459+31635-153+0+0+0+0-9+0+0+0+0+0 +hashblocks_sha512 10 61445 1205631 +2853-189-198-189-198-198+16083-540-9+0+0+0+0+0+29070 +hashblocks_sha512 11 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 11 0 234 +1566+18-9+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 1 234 +279+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 2 234 +252+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 4 234 +252+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 7 234 +252+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 11 234 +252+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 17 234 +261+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 26 234 +333-9+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 40 234 +261-9+36+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 61 234 +261+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 92 234 +261+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 139 2961 +9666+27+0+9+0+0+9+0+0+9+0+0+9+0+0 +hashblocks_sha512 11 209 2961 +4473+9+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 11 314 5688 +4527+63+18+18-9+0-9-9+0-9-9+0-9-9+0 +hashblocks_sha512 11 472 8397 +4590+90+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 709 13833 +4554+27-9+0+0-9+0+0-9+0+0-9+0+0-9 +hashblocks_sha512 11 1064 22032 +4680+54+0+9+0+0+0+0+0+9+0+0+0+0+0 +hashblocks_sha512 11 1597 32904 +4743+135+0+9+0+0+0+0+0+9+0+0+0+0+0 +hashblocks_sha512 11 2396 49203 +4671+27+9+0+0+0+0+0+9+0+0+0+0+0+9 +hashblocks_sha512 11 3595 76374 +4698+27-9+0-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 11 5393 114462 +4707+27+0+0-9+0+0+0+0+0-9+0+0+0+0 +hashblocks_sha512 11 8090 171513 +4770+27+19386+108+0-9-9+0+18-9+0-9-9+0-9 +hashblocks_sha512 11 12136 255807 +4689+0+0+0+0+0+9+0+0+0+0+0+9+0+0 +hashblocks_sha512 11 18205 386703 +4599-378-387-378-387-378+17577+846+27+0+0+0+0+0+33966 +hashblocks_sha512 11 27308 579573 +5805+0-135-135-135-135-135-135-108+35505+1809+180+180+189+180 +hashblocks_sha512 11 40963 873585 +5580+288+279+288+279+18108+333-54-54+0-54-54-54-72-63 +hashblocks_sha512 11 61445 1310292 +5841+0+27+0+9+0+9+31374-189-216-198-207-225-216+16740 +hashblocks_sha512 12 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 12 0 117 +144+0+0+0+0+0+0+0+36+0+0+0+18+0+0 +hashblocks_sha512 12 1 117 +81+0+0+0+0+0+0+45+0+0+0+45+0+45+54 +hashblocks_sha512 12 2 117 +72+0+0+0+0+0+0+45+0+0+0+45+0+45+45 +hashblocks_sha512 12 4 117 +72+0+0+0+0+0+0+45+0+0+0+45+0+54+45 +hashblocks_sha512 12 7 117 +72+0+0+0+0+0+0+45+0+0+0+45+0+45+45 +hashblocks_sha512 12 11 117 +72+0+0+0+0+0+0+45+0+0+0+45+0+45+54 +hashblocks_sha512 12 17 117 +72+0+0+0+0+0+0+45+0+0+0+45+0+45+45 +hashblocks_sha512 12 26 117 +72+0+0+0+0+0+0+45+0+0+0+45+0+45+54 +hashblocks_sha512 12 40 117 +72+0+0+0+0+0+0+45+0+0+0+54+0+45+45 +hashblocks_sha512 12 61 117 +72+0+0+0+0+0+0+45+0+0+0+45+0+45+45 +hashblocks_sha512 12 92 117 +72+0+0+0+0+0+0+45+0+0+0+45+0+45+45 +hashblocks_sha512 12 139 2574 +1026+99+0+0+0+0+9+0+0+0+0+0+9+0+0 +hashblocks_sha512 12 209 2574 +405+0+0+0+0+0+0+0+0+9+0+0+0+0+0 +hashblocks_sha512 12 314 4959 +459+63+0-9+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 472 7344 +459+54+36+0+0-9+0+0-9+0+0+0+0+0-9 +hashblocks_sha512 12 709 12114 +441+27+0-9-9+0-9+0-9+0-9+0-9+0-9 +hashblocks_sha512 12 1064 19260 +432+36+0+0-9+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 1597 28791 +468+45+0+0+9+0+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 12 2396 43092 +459+45+0+9+0+0+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 12 3595 66933 +468+36-9+0-9+0-9+0+0-9+0+0-9+0+0 +hashblocks_sha512 12 5393 100296 +477+45+0+0+0+9+0+0+0+9+0+0+9+0+0 +hashblocks_sha512 12 8090 150354 +504+36+0-9+0+0+14688+63+0+0-9+0+0+0+0 +hashblocks_sha512 12 12136 224280 +558+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 18205 338688 +540+0+0+0+0+30195+81+0+0+0+0+29439+243+0-9 +hashblocks_sha512 12 27308 507897 +873+0+0+9+0+0+9+0+0+9+0+0+9+0+0 +hashblocks_sha512 12 40963 763812 +783-18-9+0-9-9+0-9-9+0-9+14265+63+54+54 +hashblocks_sha512 12 61445 1145484 +756-18-9-18+28701+54+0+0+0-9+0+0+12294+108-18 +hashblocks_sha512 13 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 13 0 117 +432+36+0+9+0+0+0+0+45+0+0+0+0+0+9 +hashblocks_sha512 13 1 117 +90+0+9+0+0+0+0+45+0+0+0+36+9+36+36 +hashblocks_sha512 13 2 117 +90+0+9+0+0+0+0+45+0+0+0+36+9+36+36 +hashblocks_sha512 13 4 117 +90+9+0+0+0+0+0+45+0+0+0+45+0+36+36 +hashblocks_sha512 13 7 117 +90+0+0+0+9+0+0+36+0+9+0+36+0+45+36 +hashblocks_sha512 13 11 117 +99+0+0+0+0+0+9+36+0+0+0+45+0+36+45 +hashblocks_sha512 13 17 117 +117+0+0+0+0+9+0+0+0+0+0+9+0+0+0 +hashblocks_sha512 13 26 117 +90+0+9+0+0+0+0+0+9+0+0+0+0+0+9 +hashblocks_sha512 13 40 117 +90+9+0+0+0+0+0+45+0+0+0+45+0+36+36 +hashblocks_sha512 13 61 117 +90+0+9+0+0+0+0+45+0+0+0+36+9+36+36 +hashblocks_sha512 13 92 117 +90+0+0+0+0+9+0+36+0+0+9+36+0+36+45 +hashblocks_sha512 13 139 2601 +2088+117+45+0+0-9+0+0+0+0+0-9+0+0+0 +hashblocks_sha512 13 209 2601 +639-9+0+0+0+0+0-9+0+0+0+0+0-9+0 +hashblocks_sha512 13 314 5031 +648+54+0+0-9+0+0+0+0+0-9+0+0+0+0 +hashblocks_sha512 13 472 7461 +684+45+0+0-9+0+0+0+0+0-9+0+0+0+0 +hashblocks_sha512 13 709 12321 +657+81-9+0+0+0+0+0-9+0+0+0+0+0+0 +hashblocks_sha512 13 1064 19611 +675+27+9+0+0+9+0+0+9+0+0+9+0+0+9 +hashblocks_sha512 13 1597 29331 +657+36+0+9+0+0+9+0+0+9+0+0+9+0+9 +hashblocks_sha512 13 2396 43911 +684+27+0+9+0+0+9+0+0+9+0+0+9+0+9 +hashblocks_sha512 13 3595 68211 +603+36+0+0+9+0+0+9+0+0+9+0+0+9+0 +hashblocks_sha512 13 5393 102240 +648+27-9+0+9+0-9+15093+153+0-9+0+0+0+0 +hashblocks_sha512 13 8090 153270 +639+27+0+0+0+0-9+0+0+0+0+0-9+0+9 +hashblocks_sha512 13 12136 228636 +612+0-9+0+0-9+0-333+0-9+0-9+0-9+0 +hashblocks_sha512 13 18205 345366 +594-153-153-153-153+29511+117-1242-63+9+0+9+0+9+0 +hashblocks_sha512 13 27308 517743 +729-63+0-9-9-9-9-9+9+0+15210+360+297+297+297 +hashblocks_sha512 13 40963 778869 +828-189-180-189-189-189-198+14562+432+9+0+9+0+9+0 +hashblocks_sha512 13 61445 1168038 +936+28431+738-27-36-9+0+0-9+0+12933+99-27-18-9 +hash_sha512 selected implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 selected 0 2817 +47493+135+18+0+0+0-9+0+0-9+0+0-9+0+0 +hash_sha512 selected 1 2817 +1116+72+0+9+0+9+0+0+9+0+0+9+0+0+9 +hash_sha512 selected 2 2826 +765+54+54+0+0+0+0+0+0-9+0+0+0+0+0 +hash_sha512 selected 4 2835 +792+45+0+0-9+0-9+0-9+0-9+0-9+0-9 +hash_sha512 selected 7 2817 +792+54+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 11 2835 +801+126+0+0+0-9+0+0-9+0+0-9+0+0-9 +hash_sha512 selected 17 2889 +792+36+0+0+0-9+0+0-9+0+0-9+0+0-9 +hash_sha512 selected 26 2916 +756+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 40 2853 +828+153+0+0+0-9+0+0-9+0+0-9+0+0-9 +hash_sha512 selected 61 2880 +846+27+0+0+9+0+0+0+0+9+0+0+0+0+0 +hash_sha512 selected 92 2916 +765+18-18+9-18+0-18+9-18+9-18+0-18+9-18 +hash_sha512 selected 139 5319 +747+27+0-9+0-9+0-9+0-9+0-9+0-9+0 +hash_sha512 selected 209 5337 +801+81+0+0+9+0+0+0+0+0+9+0+0+0+0 +hash_sha512 selected 314 7731 +819+36-9+0+9+0+0+0+0+0+9+0+0+0+0 +hash_sha512 selected 472 10188 +711+72+9+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 709 14895 +729+0+0+9+0+0+9+15210+27+0+9+0+0+9+0 +hash_sha512 selected 1064 22113 +882+45+0+0+0+0-9+0+0+0+0+0-9+0+0 +hash_sha512 selected 1597 31689 +765+0-9+0-9+0-9+0-9+0-9+0-9+0-9 +hash_sha512 selected 2396 45972 +873+81+9+0+0+9+0+0+9+0+0+9+0+0+9 +hash_sha512 selected 3595 69777 +873+108+18-9+0-9+0-9+0-9+0-9+0-9+0 +hash_sha512 selected 5393 103203 +882+9-9+0+0-9+0+0-9+0+0-9+0+0-9 +hash_sha512 selected 8090 153288 +900+0-9+0-9+0-9+0-9+0-9+0-9+0-9 +hash_sha512 selected 12136 227034 +999+27+36+0+9+0+0+0+30078+180+0+0+0+0+0 +hash_sha512 selected 18205 341622 +1287+63-9+0+0-9+0+0-9+0+0-9+0+0-9 +hash_sha512 selected 27308 510804 +1998+63+18+15606+315+0-9+0+0-9+0-9+0-9+0 +hash_sha512 selected 40963 766611 +1197+45+0+14850+81+0-9+0+0-9+0-9+0-9+0 +hash_sha512 selected 61445 1148301 +1233+9+0-9+0+0-9+14976+81+0-9-9+0-9-9 +hash_sha512 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 0 0 3681 +1710-36+0+0+0+0+0+9+0+0+0+0+0+9+0 +hash_sha512 0 1 3681 +909+36-9+0-9+0-9+0-9+0-9+0-9+0-9 +hash_sha512 0 2 3627 +720-54+9+0+0+0+0+0+9+0+0+0+0+0+9 +hash_sha512 0 4 3645 +603-63+0+0+0+0+0-9+0+0+0+0+0-9+0 +hash_sha512 0 7 3663 +585-63+0-9+0+0-9+0+0-9+0+0-9+0+0 +hash_sha512 0 11 3672 +1134-72+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 17 3636 +693-54+0+9+0+0+0+0+0+9+0+0+0+0+0 +hash_sha512 0 26 3636 +648-54+0-9+0+0+0+0+0-9+0+0+0+0+0 +hash_sha512 0 40 3645 +567-72+0-9+0+0+0+0+0-9+0+0+0+0+0 +hash_sha512 0 61 3618 +666-81+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 92 3636 +540-81+18+0-9+0-9+0-9+0-9+0-9+0-9 +hash_sha512 0 139 6111 +594-54+0+9+0+9+0+9+0+9+0+9+0+9+0 +hash_sha512 0 209 6075 +648+9+9+0+0+0-9+0+0+0+0+0-9+0+0 +hash_sha512 0 314 8442 +684-18+18+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 472 10935 +612-36+9+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 709 15687 +657-18+0+0+0+0+0+9+0+0+0+0+0+9+0 +hash_sha512 0 1064 22842 +648-54+9+0+0+9+0+0+9+0+0+9+0+0+9 +hash_sha512 0 1597 32355 +657-36+0+0+9+0+0+9+0+0+9+0+0+9+0 +hash_sha512 0 2396 46674 +630-36+27+0+0+9+0+0+0+0+0+9+0+0+0 +hash_sha512 0 3595 70542 +648-54+0+0+0+0+0+9+0+0+0+0+0+9+0 +hash_sha512 0 5393 103887 +675-27+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 8090 153945 +729-36+0-9+0+0-9+30591+63+0+0-9+0+0-9 +hash_sha512 0 12136 227808 +882-63+0-9+0-9+0-9+0-9+0-9+0-9+0 +hash_sha512 0 18205 342243 +945-63+0-9-9+0-9-9+0-9-9+0+14823+63+0 +hash_sha512 0 27308 511614 +1035-63+0-9+0+0-9+0+0-9+0+0-9+0+0 +hash_sha512 0 40963 767331 +972-63-27-9+0-9+0-9+0-9+0+29799+63+9+9 +hash_sha512 0 61445 1149075 +963-9-9+0+14688+45-9+0+0+0+0+0+11142+90+0 +hash_sha512 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 1 0 2817 +1467+117+0+0-9+0+0-9+0+0-9+0+0-9+0 +hash_sha512 1 1 2817 +1053+81+9+0+9+0+9+0+0+9+0+0+9+0+0 +hash_sha512 1 2 2826 +783+54+54+0+0+0+0-9+0+0+0+0+0-9+0 +hash_sha512 1 4 2835 +756+45+0+0-9+0-9+0-9+0-9+0-9+0-9 +hash_sha512 1 7 2817 +801+81+9+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 11 2835 +864+72+0+0+0-9+0+0-9+0+0-9+0+0-9 +hash_sha512 1 17 2889 +855+45+0+0+0-9+0+0-9+0+0-9+0+0-9 +hash_sha512 1 26 2916 +846+0+0+0+9+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 40 2853 +864+54+0+0+0-9+0+0-9+0+0-9+0+0-9 +hash_sha512 1 61 2880 +864+27+9+0+0+0+9+0+0+0+0+0+9+0+0 +hash_sha512 1 92 2925 +774+18-27+0-27+0-27+0-36+0-27+0-27+0-36 +hash_sha512 1 139 5319 +765+27+0-9+0-9+0-9+0-9+0-9+0-9+0 +hash_sha512 1 209 5337 +855+81+0+9+0+0+0+0+0+9+0+0+0+0+0 +hash_sha512 1 314 7731 +810+27+0+0+0+0+0+9+0+0+0+0+0+9+0 +hash_sha512 1 472 10188 +747+72+9+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 709 14895 +720+36+0+0+9+0+0+9+0+0+9+0+0+9+0 +hash_sha512 1 1064 22113 +828+45+0+0+0+0-9+0+0+0+0+0-9+0+0 +hash_sha512 1 1597 31689 +765+0-9+0-9+0-9+0-9+0-9+0-9+0-9 +hash_sha512 1 2396 45972 +864+90+0+0+9+0+0+9+0+0+9+0+0+9+0 +hash_sha512 1 3595 69777 +864+99+18+0-9+0-9+0-9+0-9+0-9+0-9 +hash_sha512 1 5393 103203 +1638+9+0+0-9+0+0-9+9+0+0-9+0+0-9 +hash_sha512 1 8090 153288 +927-9+0-9+0-9+0-9+9+0-9+0-9+0-9 +hash_sha512 1 12136 227034 +1035+99+9+0+0+0+0+0+9+0+0+0+0+0+9 +hash_sha512 1 18205 341649 +1062+72+0+15516+117+0+0+0+0-9+0+0+0+0+0 +hash_sha512 1 27308 510804 +1458+54+18-18-18-9-9-9+0+15255+468+0+0-9+0 +hash_sha512 1 40963 766629 +1152+54+0+0+0+0+0+29070+99+0+9+0+0+9+0 +hash_sha512 1 61445 1148310 +1242+15165+126+0+0+0+0+0+0+11520+180+0+0+0+0 +pow_inv25519 selected implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 selected 32 37143 +7029+306-18+0-9+0-9+0-9+0-9+0-63-9+0 +pow_inv25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 0 32 44109 +46962+756+279-27-36-27-36-27-36+135+0+0+0+0+0 +pow_inv25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 1 32 44136 +19944+360+90+0+0+0+0+0-9+0+0+0+0+0-9 +pow_inv25519 2 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 2 32 43758 +65025+1278+0-36-36+32058+432+63-45-36-36-36-36+225+207 +pow_inv25519 3 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 3 32 43785 +22644+288-126-135-126-126-153+216+0+63+54+63+54-144-441 +pow_inv25519 4 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 4 32 44172 +29088+396+0-27-198-9-27-27+0+45+18+27+18+18-126 +pow_inv25519 5 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 5 32 43740 +1764+171+234+63+252+135-27+0+0+0-9+0+0+0+0 +pow_inv25519 6 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 6 32 35901 +22527+279+18+9+0+0+9+0+0+9+0+0+9+0+0 +pow_inv25519 7 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 7 32 37143 +2367+108-9+0-9+0-9+0-9+0-9+0-9+0-9 +pow_inv25519 8 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 8 32 68085 +2538+135+0+9+0+0+9+0+0+9+0+0+9-27+18 +pow_inv25519 9 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 9 32 69327 +3438+270-18+0+189+189+198+189+189-351-432-549-387-765-756 +nP_montgomery25519 selected implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 selected 32 459747 +16326-162-351+0+0+0+16749+2133+18+0+0+0+9+63+63 +nP_montgomery25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 0 32 497511 +15129+1629-18-9+0-9+81-63-54-54+16668+1530+1188-9+0 +nP_montgomery25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 1 32 497322 +5346+612+513+504+18-9+0-9+0-9-27+0-9+32850+639 +nP_montgomery25519 2 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 2 32 469341 +10908+153-18-36-27-36-36-27+0+0+0+0+0+0+279 +nP_montgomery25519 3 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 3 32 483021 +3942+17136+45-9+0+0-9+0+9+81+0+0+0+0+0 +nP_montgomery25519 4 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 4 32 460503 +5256-522+0+34155-117+16074-9+0+9+0+9+0+9-153-144 +nP_montgomery25519 5 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 5 32 459756 +3699+0-9-9-9-9+63+54+63+63+32994+360-9-9-9 +nP_montgomery25519 6 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 6 32 474174 +28242-2376+153-3087+279-621+0-2484+288-2952+261-2835+288-837+15624 +nP_montgomery25519 7 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 7 32 550935 +13401+189-81-9+0-9+9-9+0-9+0-9+0-9+0 +nP_montgomery25519 8 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 8 32 957303 +21627+36+18-9+0-9+0-9+0-9+31149+72-9+0-9 +nP_montgomery25519 9 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 9 32 904338 +9558+1035+18-9+17172-9+9+9-9+0-9-9-9-9+14760 +nG_merged25519 selected implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 selected 32 139680 +31059+1089+801+459+297+198+0+99-279-333-117-603-315-414-297 +nG_merged25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 0 32 164475 +54360+1341+135+747+828+702-45+216-360+0-423-207-9-414-450 +nG_merged25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 1 32 164880 +7749+630+225+54-99+9+108+0+108-504-405-135-153-117-198 +nG_merged25519 2 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 2 32 140247 +6696+639-54+36-396+38142+1296+45+0+342-90-648-513-459-540 +nG_merged25519 3 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 3 32 139707 +5382+729+837+855+774-81+171-171+45-153-270+0-270-531-162 +nG_merged25519 4 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 4 32 140976 +56907+468+0-126+54+396-153-279+18+126+189-207-144-207-90 +nG_merged25519 5 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 5 32 140760 +4779+0+135-27+189-36-45+513+351+351+360-216-225-180-189 +nG_merged25519 6 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 6 32 361746 +12636+693+19881+1773+252+252+243+0-180-1224-2232-2223-2493-3744-3618 +nG_merged25519 7 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 7 32 316215 +9441+324+9+18-18-18+9+9+0-108+225-72-90-99-99 +nG_montgomery25519 selected implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 selected 32 139689 +10953+810+387+738+540+360+315-162-297-342-36-279-234+0-90 +nG_montgomery25519 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 0 32 459846 +10494+135-9+0-9+0-9+0-18+9+9+0+9+162+9 +nG_montgomery25519 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 1 32 459846 +3519+0-9+0-9+0-9+0-9+0+9+9+0+9+9 +nG_montgomery25519 2 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 2 32 140220 +5859+144+36+0-468-387-216-513-342-342-693+15615+3294+468+288 +nG_montgomery25519 3 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 3 32 139653 +5328+576+783+693+567-144-108-216-18+135-369+0-684+72-225 +mGnP_ed25519 selected implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 selected 33 546363 +54207+1692+162+882+1026-117-144-144-153-144-153-135+20790+594+0 +mGnP_ed25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 0 33 575145 +29286+558-1305+540+0-135-189-108+81-1764-2142-3951+31896+2898+171 +mGnP_ed25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 1 33 563787 +18990+2862+1989+1359-369+153-666+0-468-666-504-612-558+29169+2583 +mGnP_ed25519 2 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 2 33 546642 +10143+1314+1053+216+126-207-198-387-342-99-54-90+27+0+18333 +mGnP_ed25519 3 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 3 33 540063 +11268+1080+2727+225+126+441-180+0+9-585-387-369-378-369-378 +mGnP_ed25519 4 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 4 33 549972 +68328+2466+0+504+684+639+486+1116-738-1161-1170-1161-1170-1071-1233 +mGnP_ed25519 5 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 5 33 559908 +3843+18666+360-1161-171-153+27+0+9+0+0-9-9-1062-1341 +mGnP_ed25519 6 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 6 33 1076490 +30357+13572-2115-4761-5040+0+261+0+153+81+27711-4248-1881-1116-1107 +mGnP_ed25519 7 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 7 33 1037142 +14373+720+40644+18918+1098+0+36-9-63-2682-2745-2853+14454-387-2322 +dh_x25519 selected implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair selected 32 146970 +11673+657-153+99-459+126-459+117+36-621+0-468+9-612-9 +dh_x25519 selected 32 459837 +558-1098-972-981-972+31716+1089+35739-162+0+9+0+9+0+9 +dh_x25519 0 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 0 32 146754 +2520+135+72+9+45+0+45+9-153-189-144-189-153-189-153 +dh_x25519 0 32 459837 +405-1665-972-981-972-981+17082+891-90+9+0+9+0+108+0 +dh_x25519 1 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 1 32 146844 +2034+144-72+0+99-9-90+0+18-198-90-198+9-189+90 +dh_x25519 1 32 459837 +33309+1098+0+9+0+15957-144+0-81+9+0+9-9+0+9 +sign_ed25519 selected implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair selected 32 151542 +9288+765+108+207+0+0+0+32688+3240-270-387-387-387-387-387 +sign_ed25519 selected 0 161649 +15966+1323+279+45-36-36-243-36-108+0+0+0+0-9+0 +sign_ed25519 selected 1 161811 +2808-216-27-9+27-135-180-180-144+0+27+36+27+36+27 +sign_ed25519 selected 2 161685 +2718-45+36+18+9+0-9-126+0-9+0-9-99+0-9 +sign_ed25519 selected 3 162162 +2574-153+19179+369+0+0+54+36-351-342-351-486-351+243-351 +sign_ed25519 selected 4 161757 +2745+243+216-162+54-162+27-126+306-315+0-324+0-342+0 +sign_ed25519 selected 6 161604 +2403+108-225-225-225-225-225-225+0+0+0+0+0+0+126 +sign_ed25519 selected 8 161802 +2367+216+0+0-9-9+0-9-9+0-9-9+0+16857+432 +sign_ed25519 selected 11 161946 +2376-108+0-270+27-243+18-225+18-180+27-72+27-261+9 +sign_ed25519 selected 14 161631 +2781+216-234-234-234-234-234-234+0+9+9+18+0+9+9 +sign_ed25519 selected 18 162036 +2286+225+27+9+0+9+0+9-216-207-198-207-207-216-207 +sign_ed25519 selected 23 161703 +2601+261+162+0-54+0+0+34101+1521+648+378-27-126-36-126 +sign_ed25519 selected 29 161838 +2610+288-72-108+54-108+54+90-9+90-9+90-18-198+0 +sign_ed25519 selected 37 161307 +2844+558-108+18-108+9+27+18-126+0-126+0-126+0-126 +sign_ed25519 selected 47 161478 +2952+567-162-18-189-27-198-18+0+189+0+189+0+189+0 +sign_ed25519 selected 59 164349 +2673+16983+1593-27+9-45-9-54+0-45+9-54+333-45+0 +sign_ed25519 selected 74 164493 +2610+117-171-207+9-216+9-207+0-279+0-270+0-279+0 +sign_ed25519 selected 93 166725 +2934-99-234-351-342-342-351-342+45+54+45+45+54+45+0 +sign_ed25519 selected 117 167004 +2241-198+198+0+27+0+9+0-126-135-126+17262+972+18-81 +sign_ed25519 selected 147 166842 +2655+0-216+81+81+81+81+81-297-297-306-297-297-306+108 +sign_ed25519 selected 184 169542 +2232+351+189-54-171+72-171-54-234+54-243+54+0+54-369 +sign_ed25519 selected 231 171729 +2043+189-153-153-45-36-36-45-162+9+9+0+9+9+0 +sign_ed25519 selected 289 171783 +2169+0+30573+2322+72-126-63+0-306+45-306+54-306+45-306 +sign_ed25519 selected 362 176976 +2115+0+0+18+18+18+27+18-207-198-207-198-207-198-207 +sign_ed25519 selected 453 178776 +2781+297+36+45+99+0+432+9-36-207-54-36-36-54-54 +sign_ed25519 selected 567 184086 +2169+81-9-135-54-261-45-261+17379+1026-27+0+18+18+18 +sign_ed25519 selected 709 188343 +2808+243-252-54-54-54-54-63+0+0+0+0+0+0-9 +sign_ed25519 selected 887 195921 +1962+198+243+0+0+0+0+0-324-90-387-324-324-81-324 +sign_ed25519 selected 1109 205668 +2160+108+9-207-216-207-207-216-441+16830+567-45+0+72+72 +sign_ed25519 selected 1387 215055 +2628-63+81+27+81+81+72+81-261-252-261-261+0-261-261 +sign_ed25519 selected 1734 226845 +2448+162-378-36-81-63-81-63+0+9+0+9+0+9+0 +sign_ed25519 selected 2168 243846 +2799+270-99+30636+2700+0+216+126-153-162-162-162-162+171-162 +sign_ed25519 selected 2711 263268 +2043+360-405+72-9-216-9+72+0+72+0+72-9+72-9 +sign_ed25519 selected 3389 289593 +2448+450+0-189+270-189-171+16074+2268+54+378-45-27-72-36 +sign_ed25519 selected 4237 320904 +2025+54+342+0+0+0+0+0-45-63-63-63-63-63-63 +sign_ed25519 selected 5297 361701 +1836-18-90+0-81+16929+720+54-45+171-90+162-45+171-45 +sign_ed25519 selected 6622 412353 +2097+72+324-45+0-9-18+270+0-27-117-18-18+32328+1197 +sign_ed25519 selected 8278 474453 +2475+252-81+0+423+423+414+423-54-54-45-54+180-54-45 +sign_ed25519 selected 10348 551718 +17397+2268-234-207+9-45+9-252+9-90+9-81+0-81+9 +sign_ed25519 selected 12936 647730 +2250+15543+2403+153-243+54+0+9-36+18-36-36-36-36-36 +sign_ed25519 selected 16171 768186 +34047+252-117-18-423+126-405+0-486+63-450+90+17325+1053-54 +sign_ed25519 selected 20214 922518 +2457+270+0-153-153-180-162+17460+729-216+45-126+0+99+0 +sign_ed25519 selected 25268 1112697 +32355+2808-108-216-108-153-99-153+126+17325+864-63+207+0+342 +sign_ed25519 selected 31586 1351116 +2916+17334+486-225-180-342-198-279+38025+1071-27+72+9-9+0 +sign_ed25519 selected 39483 1647585 +2871+279-261-297-252+17037+342-171-198-126+29358+1980+18-27+0 +sign_ed25519 selected 49354 2017701 +18603+324+0-324+14616+1746-135-396-171+31158+2340-279-216-297+16803 +sign_ed25519 selected 61693 2483127 +2187-936+16983-351-1197-1197+30924+0-1161+14013+945-972-1017+76644+1440 +sign_ed25519_open selected 0 550566 +12924+927+144+54+0+0+35514+990-1368-1269-702-477-630-621-621 +sign_ed25519_open selected 1 553797 +3195+783+81+198-486-468+0+17757+1440+81-1269-513-1062-1179-1116 +sign_ed25519_open selected 2 549774 +3285+567+0-135-234+189+135+405+18612+1026-189-684-1485-1701-1116 +sign_ed25519_open selected 3 539073 +3528+1413+522+1053+1053-1512-1557-747-738-783+34623+1827-351-135+0 +sign_ed25519_open selected 4 551259 +3069+783+684+0+0-639-684-747-1116-981-963+19107+918+72-774 +sign_ed25519_open selected 6 550575 +3717+558+576+0-900+567+504-936-855-846-819-954+18504+666-558 +sign_ed25519_open selected 8 541764 +4338+891+171+135+0-126+9-540-342-333-306-405-306+34380+3033 +sign_ed25519_open selected 11 547956 +3546+1008-225+18+0+54+90-720-522-486-495-243-297+9+19107 +sign_ed25519_open selected 14 541494 +3042-432-981-981-261-189-72-54+0+792+855+864+828+846+864 +sign_ed25519_open selected 18 546345 +4482-360+0+0+18+36+45+243+1629-504-765-774-513-522-513 +sign_ed25519_open selected 23 550872 +36873+2772+441+333-882-306-288-18+0-63+0-99+252+198+252 +sign_ed25519_open selected 29 553932 +5040+20637+3249+999+675+171+243-63-126-108-135+0-153-135-45 +sign_ed25519_open selected 37 551124 +4158+1512+19629+1998-99-72-1107-351+144-225-54+0+9+0+9 +sign_ed25519_open selected 47 545247 +4752+1746+1197+33345+3483+603+594-270-657-324-126-36-126-126+0 +sign_ed25519_open selected 59 544851 +3969+801+882+864+0+19359+738-531+333-180-333-378-513-558-594 +sign_ed25519_open selected 74 553131 +2583-234+342+0+54+54+19179+2061+18-990-522-576-891-990-981 +sign_ed25519_open selected 93 552942 +2862-585-135+54+108+135+1656+35001+1575-297+0-315-72-108-1071 +sign_ed25519_open selected 117 558351 +2457-225-531+171+315+0+27+18+19431+1089-900-63-72-675-594 +sign_ed25519_open selected 147 556542 +3375+369+18-108-531-585-180-837+16533+2808+837+1026-792-135+0 +sign_ed25519_open selected 184 553410 +3015-180+54-27-666-603-450-351-711+32976+1935+99+288+216+0 +sign_ed25519_open selected 231 558477 +3312-414-450+315+387+0+9-180-162-162+18783+1620-72-279+135 +sign_ed25519_open selected 289 549801 +3375-342-927-576+1683+1098+198-216+0-945-567+56430+3042+180-441 +sign_ed25519_open selected 362 561870 +4932+0+45+288+1107-414-207-225-252-270-279-243+37665+2295+450 +sign_ed25519_open selected 453 555651 +3618+450+324+0+117+45-126-180-90-909-792-189-18+19143+720 +sign_ed25519_open selected 567 562131 +3465+360+0+189+126+189-567-567-216-414-531-468-774+17829+1152 +sign_ed25519_open selected 709 566838 +3573+333+315+729+783+126-189-243-207-639-9+0-504-549+35136 +sign_ed25519_open selected 887 569655 +4257+1332+1188+1008+171+297+0-198-180-225-198-198-180-333+18477 +sign_ed25519_open selected 1109 566433 +4311+612+108+0+306+351+360+378-594-594-621-837-945-1080-828 +sign_ed25519_open selected 1387 577602 +3816-45-378-18+0-18-225-9+36+9+162+54+90+72-1512 +sign_ed25519_open selected 1734 581724 +5301+1701+1269+738+414+279-666+72-126+0-144-279-558-1800-1530 +sign_ed25519_open selected 2168 597213 +4050+1197+342+702+729-567-630-657-432+18-36+0-36-81+18054 +sign_ed25519_open selected 2711 594468 +4734+1224+864+684+675+810+0-171-144-216-144-207-144-45+35532 +sign_ed25519_open selected 3389 616320 +4734+594+378+225+36-189-162-153-198-162+0-72-675+18909+2007 +sign_ed25519_open selected 4237 628398 +4122+927+333+369+252-522-360-234+0-81-90+16533+4545-54-576 +sign_ed25519_open selected 5297 654534 +3870+72+0+81-45-216+38367-72-171+31419+4626-270+72-621-621 +sign_ed25519_open selected 6622 676926 +5274+72-540+0+315+360+801+20493+1710-36-603-117-450-927-900 +sign_ed25519_open selected 8278 705231 +4410+513+540-189+20457+1935+0+135+81-531-765-297-441-1008-747 +sign_ed25519_open selected 10348 745236 +36801+6480-135+270-27+162+135+0-198-180-216-171-225+19071+3249 +sign_ed25519_open selected 12936 794430 +4338+495-45+81-414-234-288-63+19422+2511-261+0+144+333-1377 +sign_ed25519_open selected 16171 851598 +4356+918+342+36630+2241-63+441+0-432-936-927-936-954-954+19305 +sign_ed25519_open selected 20214 931716 +4743+1170-9+0+369+423+225+20034+2493-54-324-1098-207-9-171 +sign_ed25519_open selected 25268 1037448 +39015+864-144-396-99+99+63-549-648+20718+468-180+0-468+9 +sign_ed25519_open selected 31586 1155690 +23454+1944+657-738+126-90-522+9+0+36252+918-810-90-675-531 +sign_ed25519_open selected 39483 1308924 +5895+630+540-684-333-216+18369+1440+153-585+0-630-333-990+35604 +sign_ed25519_open selected 49354 1496826 +3429+1071+19809+1539+54+0+0+234-144+18450-180-306-423-306-234 +sign_ed25519_open selected 61693 1735704 +3078+1044+882+23976-90-747-612-621+19314+1701+0-207-117-405+34191 +sign_ed25519 0 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 0 32 151236 +3564+441+207+0-9+0-9+0+0+0+0+0+0+0+0 +sign_ed25519 0 0 162009 +4356+0+144+81+81+18666+270-279+162-144-144-144-135-144-90 +sign_ed25519 0 1 161865 +2934+90+153+0+9+9+9+9-171-171-171-180-171-171-180 +sign_ed25519 0 2 161919 +2304-45+252+72+72+63+234+63-9+0-9-9-9-9-9 +sign_ed25519 0 3 162261 +2097-351-414-90-90-90-99-90+0+9+0+9+0+9+0 +sign_ed25519 0 4 161982 +3015-36+126+117+108+117+108+189-351-351-351-360-351-351+0 +sign_ed25519 0 6 161973 +2619+0+432+216+216+216+216+216-252-243-252+0-252-243-9 +sign_ed25519 0 8 161784 +2826+261-81+63+63+63+63+63-9+0-9-9+0-9-9 +sign_ed25519 0 11 162216 +1890-306-378-252-261-252-162-153+36+36+33885+729+117+0+18 +sign_ed25519 0 14 162072 +2385-216+369+243+306+27+234+234+0+0+0+0+0-9+0 +sign_ed25519 0 18 161910 +2277-90+171+72+63+63+342+225+0+0-9+0+0-9+0 +sign_ed25519 0 23 162108 +2439-27+0-72-72-72-72-72-90+153+144+153+144+153+144 +sign_ed25519 0 29 162243 +2214-288+27-558+16731+2205-441-432+0-198-81+9+0+9+9 +sign_ed25519 0 37 161919 +2502+360-72+0+0+0+0+0-90+270-72-72-81-72-72 +sign_ed25519 0 47 161757 +2655+603+585+0-27+0-27+0+0+36+0+36+0+36+9 +sign_ed25519 0 59 164736 +2358-333-198-216-225-216-216-225+9+0+9+0+9+0+9 +sign_ed25519 0 74 164736 +2376+108+72-45-108-45-45-54+0+0+0-9+0-9+0 +sign_ed25519 0 93 167238 +2205+63+171-261-252-261-252-261+27+0+9+54+0-180-324 +sign_ed25519 0 117 167211 +2475+90-54-9-18-9-18-9+9-27+0+9+0+0+0 +sign_ed25519 0 147 167418 +1926-288-162-54-45-45-54+29232+33687+990+0+135+477-63+153 +sign_ed25519 0 184 169713 +2250+414+234+261-162-27+378+135+135-63-108-369-135+0-63 +sign_ed25519 0 231 172062 +2223+0+72+306-117-18-288+18+117+90-63+45-234-333-162 +sign_ed25519 0 289 172062 +1944-99+207-189+72-90+0-252+207+180+153+171-198-144-459 +sign_ed25519 0 362 177039 +2529+369+162+36-90-18-27+27-288+63-153+0-315+144-288 +sign_ed25519 0 453 179271 +2511+495+153-36-54+225-54+162-18-54-261+90+0+90-18 +sign_ed25519 0 567 184185 +2511-117-27+90-99-234-270-279+11709+234+99+0+63+351-243 +sign_ed25519 0 709 189171 +2385+243+72+17244+612-351+0+0+54-36-360+270-297-324-324 +sign_ed25519 0 887 196425 +2079+126+27-9+0-198-135-198+27+54+9+63-117-144-72 +sign_ed25519 0 1109 205812 +2286+126+45-63+108-441-9-180+18-36+261-162+81+0-117 +sign_ed25519 0 1387 215730 +2034+54+33525+972+36-558+0-45-63-342+63+36-54-351-126 +sign_ed25519 0 1734 227367 +2556+351-252+0-108-126+162+0-189+13509+441-45-54+135-162 +sign_ed25519 0 2168 244341 +2070-90+99-225-171+81-90-351+99-351+0+16695+2304+108-423 +sign_ed25519 0 2711 263304 +2646+630+162+9-9-36+126+108-135-9+0-171-9+9-153 +sign_ed25519 0 3389 289980 +2538+117+9+0+0-9-99-63-18-252+54+9+90-324+17730 +sign_ed25519 0 4237 320967 +2187+117-27+54-126-180+108-117+81+180-36+0-216+9-126 +sign_ed25519 0 5297 361971 +2007+0+99-279-9-90-405-171-18-81+33282+1377+207+36+252 +sign_ed25519 0 6622 412569 +2385+333+7245+90-207+135+81+18-45-378+0-36-18-171-63 +sign_ed25519 0 8278 474939 +2277+17676+540-153-54-477+9-180+45+0-90+18-198+9423-72 +sign_ed25519 0 10348 552213 +2070+423+32337+1692+17622+756-243-162-153+144-45-378+0-45-45 +sign_ed25519 0 12936 647838 +2367+369+144+333+32328+2322+27+0-9+0-9+0-27-27+0 +sign_ed25519 0 16171 769122 +1953-423+17514-18-450+0-423+99-477+27-504+27-414+27+14247 +sign_ed25519 0 20214 922860 +2934+585+225+0-144+0+9+0-144+32679+1062-18-108+189-189 +sign_ed25519 0 25268 1113129 +3564-306+18918+558-135+45-99+81-108-63-108+16749+936-180+0 +sign_ed25519 0 31586 1351260 +3033+243+30690+2808+189-45-45-180-99+14787+2367+0-63-54-45 +sign_ed25519 0 39483 1647990 +21708+603+0-180-198-207+32715+657+0-99-72+14895+2295-324-207 +sign_ed25519 0 49354 2018673 +5580+17037+0-666-666+29025+2160+22626-297-693+15597+1359-720-540-531 +sign_ed25519 0 61693 2485134 +1503-2412+36207+396-1998-2538+14535+144-2502-2601+12222+0-2493-2493+29511 +sign_ed25519_open 0 0 550683 +5553+99+153+0-27+0-918-891-918-900+20115+1206+216-225+54 +sign_ed25519_open 0 1 535932 +3699+117+306+468+351-117-648-657-567-648-567+19620+1647-900+0 +sign_ed25519_open 0 2 548055 +3627+225+297+0+297+585-306-333-297-1296-1395-1296+34614+2079-117 +sign_ed25519_open 0 3 546912 +5049+1197-288-180-234-288-270-288+432+1548+1584-99+0+18873+2430 +sign_ed25519_open 0 4 548208 +4518+1566+27-216+54+0+54+0-495-675-603-657-603+35208+19953 +sign_ed25519_open 0 6 547713 +4572+2556+2295+918+918+1296-234+18+0-81-108-81-90-72-1377 +sign_ed25519_open 0 8 552510 +4644+954+432+99-18+54-18+45+0+36-702-567-585-549-1116 +sign_ed25519_open 0 11 547974 +23238+2115+720-54-252-378-189+0-108-117-108+9+18+9+27 +sign_ed25519_open 0 14 548154 +3708+18558+2457+1377+1314+0+513-18-405-315-396-459+36-252-144 +sign_ed25519_open 0 18 553617 +4185+819+39420+2124-279+0+1719+4725-702+13626-1071-1377-1107-1035-783 +sign_ed25519_open 0 23 554787 +4968+711-936+26064+1323-486-315+18+0-72+342-1179-333-477+11997 +sign_ed25519_open 0 29 548595 +4446+837+243+459+26019+1404+0-243-342+27-495-486-117-432-99 +sign_ed25519_open 0 37 558216 +3942+1485+864+792+40437+48060+1521+0-207-468-666-693-675-873-576 +sign_ed25519_open 0 47 547713 +4257+936+9+423-999-1197+24102+1341-90+0-882-261+0-324-1593 +sign_ed25519_open 0 59 554868 +4185+27+0-234-117-1098-1026+23913+2259+774+270+855-333-18-63 +sign_ed25519_open 0 74 550719 +3366+297-423+0+189-540-513-639+35946+2493+135-36+180-945-1179 +sign_ed25519_open 0 93 552141 +3600+747+567+585-171-306-234-162-306+18783+1683+450+0-99-774 +sign_ed25519_open 0 117 554418 +3717+288+0-423+405+207-72-387-603-639+19197+2241-180+324-648 +sign_ed25519_open 0 147 550089 +3033+63-45+9-486-153-81-171+0-243-18+34911+2538+1143+765 +sign_ed25519_open 0 184 559188 +2898+0+720+261+648+171-1413-1962-1503-1422-414-810+20043+1359-126 +sign_ed25519_open 0 231 556128 +3654+441-9-207-9+45+27-36+0-90-144-27+18+20709+2277 +sign_ed25519_open 0 289 546561 +3969+27-540-585-288+387+279+0-189-198-36+243+9-216+36405 +sign_ed25519_open 0 362 553149 +4824+369+153+837+135+9+189-252+0-360-45-198-243-144-981 +sign_ed25519_open 0 453 560367 +3546+1359+1179+837+108-90+54-108+0+63-531-117-63-189-765 +sign_ed25519_open 0 567 565623 +3906+801+684+594+180-360+99+189-351-396-279-153+0-45-2223 +sign_ed25519_open 0 709 560961 +6957+801+234+963+774+882+225-171-207+0-81-315-729-1035-1017 +sign_ed25519_open 0 887 566010 +23679+2304+1422+558+1053-90+198+126+0-171-180-279-135+0-675 +sign_ed25519_open 0 1109 564831 +3897+21411+1503+0+486-450-9-90-162-468+288-504+81-279+99 +sign_ed25519_open 0 1387 570861 +4977+36612+2754+684+1260+549+693-18-360-180-171-342-54+0-27 +sign_ed25519_open 0 1734 585594 +4329+21636+2556+45+1107+432-171-675+135-315+0-765-819-747-567 +sign_ed25519_open 0 2168 587655 +4518+26352+1332+486-621+0-900-540-621-621-693-531+37665+4599+81 +sign_ed25519_open 0 2711 603225 +4230+37953+2745+468+738+189-54+342+0-405-684-468-279-387-378 +sign_ed25519_open 0 3389 613908 +25407+2610+1323+567+693-54+522+216-126-36-243-297-468-297+0 +sign_ed25519_open 0 4237 625068 +5058+990+468+162-81+18-243+0-54-54+9-54-54-747+35739 +sign_ed25519_open 0 5297 655524 +4563+2052+1485-324-198+441-180-153-27+18-27+0+19431+1566+0 +sign_ed25519_open 0 6622 680346 +3393+612-540+117+108-504-450-486-459-1053+19953+360+0+9-1359 +sign_ed25519_open 0 8278 708201 +4788+513+180+657-234-387+34272+2943+0+387-270-171-297-1278-1314 +sign_ed25519_open 0 10348 749295 +3654+684+0+20835+441+27-423-675-576-783-738-810+35514+1854-135 +sign_ed25519_open 0 12936 801315 +3996+549+90+99+0+54-360-810-873-765+35658+2223-747-918-1179 +sign_ed25519_open 0 16171 856188 +4374+684-108-576+15993+7425+531-405-567-117-99+0+27+99-90 +sign_ed25519_open 0 20214 940464 +4770+1359+342+0+90-783-765-1035-828+36135+666-675+126+0+0 +sign_ed25519_open 0 25268 1031454 +3474+21609-225-927+45+0-153+0-468-1404+19611+1746+486-486-36 +sign_ed25519_open 0 31586 1155897 +3690+36549+2934+315-1035-1242-162-441+171+0+20574+189-1206-1773-1917 +sign_ed25519_open 0 39483 1301184 +27396+414-216+108-117-1440-2043+34344+774+648+153-423+0-1260-1089 +sign_ed25519_open 0 49354 1496565 +3879+414+39537+23157+990-1017-117+0-513-666+37035-585-1413-999+38367 +sign_ed25519_open 0 61693 1728243 +3744+27-1368-531+21330+558+315-540+81+94842-666-630-90+0-1764 +sign_ed25519 1 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 1 32 151443 +2916+441-324+423+585-162-234+72-63-90-513+0+144-153+135 +sign_ed25519 1 0 161775 +3330+162+0-441+117-27-162+0-234+126+171-144-99-144+18297 +sign_ed25519 1 1 161676 +2295+225-279-72+180+126-81+0+72-135-72+162-162-495+63 +sign_ed25519 1 2 161586 +1755+0+360+99+207+54+9-99-54+135-18-351-63-189-153 +sign_ed25519 1 3 161829 +1782+153-27+63-153+63-234+9-261-27+405+0-72+171-72 +sign_ed25519 1 4 161856 +2214+90-702-459+180-630-369-684+144+34011+135-117+0+0-180 +sign_ed25519 1 6 161721 +2223+36+216-117-189-81-72+108-18-180+153+18+0-63+162 +sign_ed25519 1 8 161838 +1908+0-252-135+81-27-396+54+180+0-486+360-369+99-450 +sign_ed25519 1 11 161541 +2403+90-9+369+234-198-333+162-252-72+0+261-126+153-270 +sign_ed25519 1 14 161973 +1512-54-603+17955+828+72-189-243+0+54+351-252+297-90-261 +sign_ed25519 1 18 161658 +2421+324+0-468+54+486+171-369-81+126+117-117-135-99-423 +sign_ed25519 1 23 161793 +2106+522+0+72+54-99-63-225+162+279-351-315+108-504-63 +sign_ed25519 1 29 161820 +2349+0-99+243-45-144-207-81+81-153+198-90+153+81+16452 +sign_ed25519 1 37 161757 +1773+63-513-144+45-81-405+54-225-36+0+450+126+18-207 +sign_ed25519 1 47 161802 +2205+477-27+135-135-144-558+216+63+0-27-351+270-612+54 +sign_ed25519 1 59 164187 +2412+351-279+9+0-45+144-216+117-144+297-36-261+27-162 +sign_ed25519 1 74 164286 +1665+207-63-288+126-63+108-99+34407+1053+0-180-72-333+171 +sign_ed25519 1 93 166968 +2448+72+162-99+99-162-198+153-162-126+0-90+36+351-108 +sign_ed25519 1 117 166797 +2412+612+297-81+135-162+315-369+0-117-27-54+306+72-135 +sign_ed25519 1 147 166752 +2502+18-90-9-297+45-333-261+144+27+0-135+72-270+216 +sign_ed25519 1 184 169551 +25542+621+45-45+279+198+198+0-90-45+135-54-243-63-81 +sign_ed25519 1 231 171612 +2646+18+378-135-180+567-234-36+36+0+54-522-117+171-99 +sign_ed25519 1 289 171549 +3573+36-162-90-36-135-9+0+117-9-99+198+63+117+9 +sign_ed25519 1 362 177156 +1458-594-477-540+33813+198-459+34290+648+189-45-36+261+0-270 +sign_ed25519 1 453 179028 +3024+279+333+189-387+171+117-288+0+225-108-99-99-180-252 +sign_ed25519 1 567 183924 +2502+216-54-18-198-18-207-18+0+207+0+207+0+207-45 +sign_ed25519 1 709 188406 +2466+270-18+0+0-9+0+0-54-54-63+40968+1350+441+252 +sign_ed25519 1 887 195525 +2898+765+0+261+252+252+261+135-162-153-162-162-153-135-162 +sign_ed25519 1 1109 205335 +2862+567+0+72+72+72+72+72-189-198-198-189-198-198-189 +sign_ed25519 1 1387 215064 +2160+279+0-63-54-63-54-63-297+18801+2124+126+216+0+117 +sign_ed25519 1 1734 226917 +2493+171+135-477-522-513-522-513+0-9+0+0+0+0+0 +sign_ed25519 1 2168 243657 +2448+684+162+18+216+342-45-45+0+0+0-18-63+270-63 +sign_ed25519 1 2711 175455 +89883+87822+41400+144+63-81-81-81-153+0-162+207-72+0-162 +sign_ed25519 1 3389 193005 +1665+306-9-18+315+9+315-18+0-18+0-18+0-18+0 +sign_ed25519 1 4237 213759 +1539+144+234+0+9+36+0+0+9+0+0-9-54+0+0 +sign_ed25519 1 5297 241173 +1431+27189+1971+369-54+9+45+9-207-9-216+0-225+0-216 +sign_ed25519 1 6622 274977 +1467+153+135-252-144-63-234-243+9+0+9+0+0+0+0 +sign_ed25519 1 8278 316485 +1476+0-117+0+13158+1602+135-27+0-45-54-45-54-234+45 +sign_ed25519 1 10348 367695 +1728+279+180+18-36+0-36+27-81-117-72+9-72+54-54 +sign_ed25519 1 12936 431784 +2745+387+0+36-27-63-18-27+0+81+0+90-9+63+54 +sign_ed25519 1 16171 512073 +3087+288-63-27+27495+2034+216+162+99+0-9+0+0-9+0 +sign_ed25519 1 20214 615033 +2205+162+0-108-117+13023+1287-135+162-72+0-45-27-117+0 +sign_ed25519 1 25268 742059 +2052+198+33048+10665+1098-90-306+0-135-126-351+27-351+27-351 +sign_ed25519 1 31586 900765 +23679+954+36-162-36+36-18-27+0-27+0+11160+477-90+0 +sign_ed25519 1 39483 1098396 +2835+153-45-126+11277+315-117-18-27+0-9+0+19584+1422-18 +sign_ed25519 1 49354 1344969 +4275-54-36+36+11682+405+9-36+0+0+0+11124+360-27+0 +sign_ed25519 1 61693 1654848 +4797+20079+2277-54-90+0-126+11808+486-216-225-198-243+11682+441 +sign_ed25519_open 1 0 362565 +11295+963+657-45+0-117-162-45+36+9-99-387-594+22824+1476 +sign_ed25519_open 1 1 369477 +3123+360-36-72+234-72-18-216+0+18+0+18-9-216+45 +sign_ed25519_open 1 2 368856 +2511+450-63+162-180-117+12087+1548-99+0+171-540+252-558-612 +sign_ed25519_open 1 3 366192 +3015+567+171+459+45-72-27+0-72+9+9-18-63-36-54 +sign_ed25519_open 1 4 362214 +17019+2142+1251+1413+1413+603+0-144-99+9-27-90-144-36+0 +sign_ed25519_open 1 6 366489 +2844+630+297+0-333-225-405-450-414-423+23832+1305+315+108-441 +sign_ed25519_open 1 8 366192 +3555+711+531+531+90-9-18+9-27+0-18+9-9-9-27 +sign_ed25519_open 1 11 372438 +3411+981+954+13086+1647+801+495+0-36-18-18-144-198-126-216 +sign_ed25519_open 1 14 364320 +2772-81-135+99+54+0+0+0+0+0+0+0-126+12591+1359 +sign_ed25519_open 1 18 367029 +3159+315+9-27+90-45+27+36-90+0-9+0-9+0-9 +sign_ed25519_open 1 23 362151 +2574+918+315+585+0+18+20529+3132-99-63-162-162-432-234-243 +sign_ed25519_open 1 29 368181 +3060+639+99-351-72-9+0+0+0+81+0-99-72+225-621 +sign_ed25519_open 1 37 372186 +14787+1629+567-531+333+0+18-27+9-54+9-54+0-9-153 +sign_ed25519_open 1 47 365616 +2241+36-261-153+0-369-522-531-522-396+13167+378+18+9+198 +sign_ed25519_open 1 59 371745 +2142-504-396-630-684+423+162+135+162+135+162-207+0-153-126 +sign_ed25519_open 1 74 368802 +2097+36+18+23346+1647+774+225-315+0-243-189-315-189-324-207 +sign_ed25519_open 1 93 363825 +2052-216-135+594-36-18+0+0-27+0+45+0-9+13923+1080 +sign_ed25519_open 1 117 369063 +2574+603+360+27-72+9-72+0+0-54-9+9-63-45-135 +sign_ed25519_open 1 147 367218 +1818-153+378+288+0-612+12393+1485+405+243-90-90-54-45-18 +sign_ed25519_open 1 184 370089 +3123+522+252+1935+18-9-9+0+0+0+9-243-81-117-99 +sign_ed25519_open 1 231 368883 +3375+504+189+1197+270-180+0-45-9-36+9-342+27-81-333 +sign_ed25519_open 1 289 367767 +2043-441-234-162-135-117+18+0+0+12573+1071+180+99-567-1413 +sign_ed25519_open 1 362 372582 +3024+90-81-180-288+9+126-36+108+0+117+45-18-450-1062 +sign_ed25519_open 1 453 374094 +1809+234+12483+738-225-414-540-135-9+18+0+18+0+18+0 +sign_ed25519_open 1 567 376047 +3123+180+27+0-207-207-207-216-207-297-369+22383+1314+0+243 +sign_ed25519_open 1 709 381681 +2862+117+162+351+72+72-144+0-90-90-90+0-45-261-828 +sign_ed25519_open 1 887 373833 +3150+1314+909+12591+2142+351+261-261-27+0+0+0-162-72-63 +sign_ed25519_open 1 1109 382815 +2664+162+513-135-9-270-288-315+36+0+0+18+12294+792-225 +sign_ed25519_open 1 1387 377865 +2529+315+63-198+9+0+27+45-243-117-207-171+9-207-774 +sign_ed25519_open 1 1734 388809 +2583+567+189+288+234+51462+1710+0-648-855-837-828-261-252-207 +sign_ed25519_open 1 2168 393831 +2367+252+306+36+90+0-162-171-117-162-99-495+12276+1440-360 +sign_ed25519_open 1 2711 405099 +2646+756+9+315+27-9+0-27+0-9+0-9-315-324-774 +sign_ed25519_open 1 3389 408015 +3141+729+612+13446+1683+153+54+0-99-108-99-108-27-18-18 +sign_ed25519_open 1 4237 424134 +3591+954+45+90+0-9+612-81-81+22572+2061-45-522-468-585 +sign_ed25519_open 1 5297 431739 +3312+648-135+18+36+72-126-45-18-45-18-63+36+0+72 +sign_ed25519_open 1 6622 448470 +4365+1026+36+54+423+0+27-162-126-153+72-162-252-315-630 +sign_ed25519_open 1 8278 477495 +3546+765+16470+1998+252+153-279+0+9-270-144-27-27-144-117 +sign_ed25519_open 1 10348 498789 +3699+279+387+0-54+27828+1629+216+495-558-387-234-207-198-324 +sign_ed25519_open 1 12936 528318 +3654+1071+297+297-72-72-54+16596+594-18+306+0-288-243-270 +sign_ed25519_open 1 16171 572265 +3276+783+297+0-387+153-189+16542+1827+135-135-27-90-711-414 +sign_ed25519_open 1 20214 619938 +3438+846+603+0+9-297+26577+603+522-216-189-576-513-513-513 +sign_ed25519_open 1 25268 1036665 -341532-344232-344565-155601+1944+216+36-720-342+189-162+0+20034+3186+792 +sign_ed25519_open 1 31586 1158228 +4491+45+873+40374+1908+180+0-792-324-306-639-216+20970-189-351 +sign_ed25519_open 1 39483 1314495 +6120+53415+5040+288+99+0-603-387-765+35838+297-414-450-297-432 +sign_ed25519_open 1 49354 1494693 +4653+0+468+342-477+20520+675-423-666-864-1161+35541+729-1116-972 +sign_ed25519_open 1 61693 1729989 +7803+1143+144+0-1467+21141+180-747-522-747+35793+279-612-675-1089 +sign_ed25519 2 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 2 32 151776 +3339+396+0+18+18+18+18+18-324-306-315-315-315-315-279 +sign_ed25519 2 0 165573 +5490+90+9-45-27+0-27+0+54+45+54-225-225-225-225 +sign_ed25519 2 1 165519 +1377+18+0+36-63+0+0-9+54+17397+27-90-99-99-99 +sign_ed25519 2 2 165636 +927-432+18+0+9+9+0+9-45+63-45-45-54-45-45 +sign_ed25519 2 3 165573 +1233-180+45+54+45-225-225+108+9-9+0-9-9+0-18 +sign_ed25519 2 4 165510 +1593-261+0-270+81+0+9-306+31527+315+9+0+0+0+9 +sign_ed25519 2 6 165438 +2061-126+33948+801+0-54-36-45+27+0-279+0-288+0-279 +sign_ed25519 2 8 165528 +1431+0+108+117+108+108+108+216-99-252-90-99-90-99-90 +sign_ed25519 2 11 165555 +1413+45+18+9-342+18+18+18-9+0-171+0-162-9-162 +sign_ed25519 2 14 165663 +909+0-225-180+0-225-180+0-27+0+0+17478-450+144+99 +sign_ed25519 2 18 165690 +1125-279+207+198+207+207+198+207-9+0-9+0-9+0-9 +sign_ed25519 2 23 165573 +1377-81-108-27-36-27-27-36+9+252+243+234+0+252+234 +sign_ed25519 2 29 165627 +846-288-306-306+0-306-306-306-18+261+261+252+261+261+261 +sign_ed25519 2 37 165168 +1629+90+9+9+22365+720+54+0-18-9-9-9-9-9-18 +sign_ed25519 2 47 165564 +1737-369-18-45-171-171-171-171+36+0+0+0+0+0+0 +sign_ed25519 2 59 168093 +1476+315-288-270-288-270-144-279+9+0+0+9+0-99+9 +sign_ed25519 2 74 168174 +1386-261-198-9+0+0+432-9+18-594+0-288-135+32328+342 +sign_ed25519 2 93 170982 +693-72-297-522+9+0+9+0+0-216+0-171-243+0+0 +sign_ed25519 2 117 170838 +1521-252+0-9+72-135+0+81+117-324+162-126+324-108-522 +sign_ed25519 2 147 170298 +1305+495-81-72-81+450+72-72-36+657+765-9+0+0-9 +sign_ed25519 2 184 173124 +1755+288+90+351+17604+504+0+0-558-459-495-495-765-270-495 +sign_ed25519 2 231 175509 +1422+333-180+180+162+162+0-621-18-18-18-18+18-216+171 +sign_ed25519 2 289 175311 +1458-162+396+180+189+396-9+189+0+0-36-315+9+0-63 +sign_ed25519 2 362 180567 +1215+243+99-306-180-99-36-126-513-216+16569+0+63+180+189 +sign_ed25519 2 453 182754 +1476-180-351+261-189-378-378-477+18+0+0+0+324+225+9 +sign_ed25519 2 567 187704 +1440+252-261-261-270+360-252-243+54+342+9-477+0+135-297 +sign_ed25519 2 709 192303 +855-216+108-63-585-297+180+72-306+126-9+0-198+32958+639 +sign_ed25519 2 887 199458 +1890+585-306+18+189-279+252+225-513-18+135-108-306+0-504 +sign_ed25519 2 1109 209304 +1431+99-54+297-36-45-72-45+18-9+0+297+0+306-9 +sign_ed25519 2 1387 219276 +522+54+63+9+0+0+0+0-189-189+16686+441-306-324-585 +sign_ed25519 2 1734 230886 +1107+378-504-522-522+162-522-522+90+9+144-9-135+0+9 +sign_ed25519 2 2168 247626 +1242+189+36+9+0+0+9+0-306+360-306-306+351-297-306 +sign_ed25519 2 2711 266859 +873+324+17343-306+27+450+441-288+18+0+0-63-27+0+0 +sign_ed25519 2 3389 294120 +1161-486-585-567-567-558-603-567+81+54+0+54+63+54+54 +sign_ed25519 2 4237 324360 +1197+0-180+31572+729+261+198+180+342-171-171-171-81-351-171 +sign_ed25519 2 5297 366084 +720-189-324-306-306-306-306-306+27+0+9+0+0+9+16866 +sign_ed25519 2 6622 415890 +936+0+558+459-45-45+468-45-414+135-459-459+198-468+207 +sign_ed25519 2 8278 478026 +1683+378+81-108+17235+531-198-252+54+0-162-9-207+9-117 +sign_ed25519 2 10348 555264 +1197+198-216-630-666-252+29664+1908-135+450-90+351+0+423-9 +sign_ed25519 2 12936 651519 +1026+549-54-9-288-9+15516+1269+18+0+0+72-9+0+0 +sign_ed25519 2 16171 771939 +1530+9+72-45+17244+306-63+72-9+0-9+0+0-9+0 +sign_ed25519 2 20214 926145 +31788+981+9+72+0+0+0-9-72+774+17001+801-27-27-90 +sign_ed25519 2 25268 1116783 +2682-450-540+16191+468-468+0+9-108-117-108-108+31833+495+63 +sign_ed25519 2 31586 1354572 +2421+153+0+17388+189-54-63-63-108+108+15165+1206-27-36-27 +sign_ed25519 2 39483 1651437 +30204+3762-90-45-45-279+15228+801-135+0-126+0+14922+837-135 +sign_ed25519 2 49354 2021391 +2043+30456+1413+0-135-36+16659+108-153-72-162+16164+144-153-81 +sign_ed25519 2 61693 2486151 +2007+0-585+16776-108-693-207+16245+27-288-189+30897+279-144+15093 +sign_ed25519_open 2 0 553482 +5328+1242+0-117-81+90-261-225-234-225-234+15534+6039+1359+1386 +sign_ed25519_open 2 1 546984 +4158+648+576+306-378-414-603-468+0-9+0-9+0+34074+1071 +sign_ed25519_open 2 2 541953 +4779+1296+612-1224+0+207-108+198+45-36-45-45-1746-1827+24021 +sign_ed25519_open 2 3 553266 +4860+1809+675+63+36+0+9+0+0+9+0-1323-1602-1611-1602 +sign_ed25519_open 2 4 549828 +4644+1494+1206+603+1620-63+0-72+0-72-9-207-126+387+459 +sign_ed25519_open 2 6 546102 +37458+3177+1512+459+774+954-261-162-279+0-63-9-63+63-90 +sign_ed25519_open 2 8 543546 +4995+22185+2907+1656+1854+504+108+0-99-288-387-333-369-729-459 +sign_ed25519_open 2 11 541386 +5067+1422+20286+2223+873+558+0+135-675-279-1107-171-1053-171-1017 +sign_ed25519_open 2 14 549801 +3303+1044+828+35082+1863+369+0+378-180-333-414-351-423-369-423 +sign_ed25519_open 2 18 550935 +3357+423+567+0+17919+2106+144+117-486-1071-603-873-1125-1224-1467 +sign_ed25519_open 2 23 552393 +4023+828+702-144-162+17532+2502+738+342-684-279-252+0-783-909 +sign_ed25519_open 2 29 550989 +4221+1359+972-117-612-828+31428+2637+0+360+72-135-405-441-1071 +sign_ed25519_open 2 37 559998 +3627+585-414-693-315-1062-1026+17541+1566+0-36+171+99+144-189 +sign_ed25519_open 2 47 552285 +3195+144+135+702-900-387-549-2412+17199+2241-81+0+45-513-1422 +sign_ed25519_open 2 59 553050 +4977+1674+162-369-297-333-459-468-468+33462+2403+594+279+0-207 +sign_ed25519_open 2 74 551691 +4149+18-684+999-396-468-468-1800-1782-2115+17730+2376+558+0+45 +sign_ed25519_open 2 93 557361 +3798+0+756+486-216-180-153-1458-909-594-693+18468+1926+486+216 +sign_ed25519_open 2 117 554940 +4590+1179+846+234+0-72+0-963-837-720-846-900+35568+3645+1323 +sign_ed25519_open 2 147 557271 +4545+792+576+657+36+0-1350-1386-1350-1377-1818-1863-1800+19575+2637 +sign_ed25519_open 2 184 550656 +3546+441-63-603-90-72-171+90-18+27+0+27+0-2124+19575 +sign_ed25519_open 2 231 552375 +4257+864+1215+1935+1773+1971+1872+0+0-36-18-468-720-765-711 +sign_ed25519_open 2 289 555966 +3753+0-225-270+477+612+198-1791-1719-1764-1728-1467+567+567+504 +sign_ed25519_open 2 362 557019 +6201+3177+1890+1782+1269+1836+1683-225-99-180-162-189-135-144+0 +sign_ed25519_open 2 453 557172 +22356+2682+1080+1269+0+594+603+549-18-216-198-180-414-450-387 +sign_ed25519_open 2 567 559620 +5031+36432+2610+846+396-180-189-108+0-18+18-18+18-9-72 +sign_ed25519_open 2 709 566955 +5238+19188+3582+621+1152+0+99+9-153-603-648-558-603-585-720 +sign_ed25519_open 2 887 569907 +4842+990+19413+2160+270+0+396+126-162-432-423-486-558-594-567 +sign_ed25519_open 2 1109 575811 +3375+549+34290+1548+81+891+603-819+0-180-486-459-549-666-540 +sign_ed25519_open 2 1387 576720 +4410+1080+70326+2916+360+531+459-261-243-279-243-279-252-279+0 +sign_ed25519_open 2 1734 584982 +4563+1521+19566+2583+720+729+135+0-621-549-558-603-594-612-765 +sign_ed25519_open 2 2168 596367 +4347+828+35703+1863+0+432-189+27-99+90-414-414-405-423-369 +sign_ed25519_open 2 2711 599418 +4464+369+19431+747-279+189+207+108+0-540-855-882-828-891-738 +sign_ed25519_open 2 3389 615384 +4419+20205+963-441-1629-315-414-369-414-54+9+45+0+45+9 +sign_ed25519_open 2 4237 631404 +38853+3582+756+1224+1026+126+0+0-252-288-324-810-666-801-774 +sign_ed25519_open 2 5297 654687 +4716+1197+918+234+135-9+0-54-36-72-36-54-27+19719+1467 +sign_ed25519_open 2 6622 675504 +4140+0+486+468-99-1035-1035-1305-1197-1278+39402+3537-54+297+63 +sign_ed25519_open 2 8278 714492 +4608+387+189+54-414-432-585+18540+2115+126+0-9-954-1035-1080 +sign_ed25519_open 2 10348 749457 +4950+981+468+20061+3042+567+657-378+0-792-693-1044-864-864-864 +sign_ed25519_open 2 12936 790758 +5850+1638+945+738+0-27-639-1683-1377-1323-1395+19359+2664+225-18 +sign_ed25519_open 2 16171 852012 +3933+828+0+450+414+19350+2709-180-495-621+9-702-972-1548-1647 +sign_ed25519_open 2 20214 941823 +7317+837-117-972-135-63-207+0+0+19845+2583+189+207-441+297 +sign_ed25519_open 2 25268 1039500 +3726+828+20988+234-972-513-252-36+72774+1863-180+21114+0-99-1035 +sign_ed25519_open 2 31586 1149003 +3663+1305+21960+558-126-666-936-693-351-225+18900+1989+0+198-504 +sign_ed25519_open 2 39483 1309689 +34857+5418+540+0+261-648-531-423+20196+567+522-477-819-864-801 +sign_ed25519_open 2 49354 1494198 +5022+1854+1926+0+35352+783-945-387-612-441+19845+540-1134-414-990 +sign_ed25519_open 2 61693 1731690 +2934+0-468-1296+34614+27-432-909-2250+16353+1224+387+72-216-2682 +sign_ed25519 3 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 3 32 151146 +3294+981+180+198-351-360+207+198+0+0-9+0-9+0+216 +sign_ed25519 3 0 166428 +5220+288+27+81+36+0+36+36-243-252-243-252-234-252-234 +sign_ed25519 3 1 166500 +1089+9+32517+612+45+45+0+0-450-468-459-468-459-468-90 +sign_ed25519 3 2 166554 +1080+180+0+27-9-9-9-18+9+0+0+0+0+0-18 +sign_ed25519 3 3 166617 +1089+261+0+45+54+54+54+45-252-261-261-261-261-261-252 +sign_ed25519 3 4 166419 +1377+171+0+72-9+0-9+0-207+189-198+15714+189-279+99 +sign_ed25519 3 6 166446 +1710+252+27+54+0+9+9+0-189-198-189-198-189-198-189 +sign_ed25519 3 8 166563 +1251+144-36-9-45-36-45-45+0+9+0+0+0+0+0 +sign_ed25519 3 11 166626 +1467+144-27+18-36-36-36-36+0+0+0+0+0+0+0 +sign_ed25519 3 14 166446 +1629+225+45+16632+693+54+54+0-162-279-279-153-279-279-279 +sign_ed25519 3 18 166716 +1269+54-27+9-45-27-45-36+9+0+9+0+9+0+9 +sign_ed25519 3 23 166554 +1314+225+36+72+9+0+9+54-108-99-108-99-108-108-108 +sign_ed25519 3 29 166698 +1377+162+9+72+0-9-9+0-162-72-162-63+37638+684+423 +sign_ed25519 3 37 166365 +1827+171-99-36-90+99-90-90+0+0+0+0+0+0+0 +sign_ed25519 3 47 166518 +1413+369+0+72+9+9+18+9-225-252-225-252-243-243-243 +sign_ed25519 3 59 169155 +1359+36-234-27-252-243-243-252+9+0+0+9+0+0+9 +sign_ed25519 3 74 168957 +1629+432-54+0-63+18999+1035-144-9-117+18-117+9-108+9 +sign_ed25519 3 93 171684 +1638+450+216+207+162+180-9+180+0-90-81-81-90-81-90 +sign_ed25519 3 117 171909 +873+270+54+54+9+9+9+0-189-126-189-126-198-126-189 +sign_ed25519 3 147 171477 +1449+162-72-45-54-90-54-18+369+369+369+369+20916-63+0 +sign_ed25519 3 184 174168 +1611+144-63-108-108-108-117+0+9+9+9+0+9-135+9 +sign_ed25519 3 231 176454 +1206+252-27+36-9-9-18-18+9+0+0+0+0+0+234 +sign_ed25519 3 289 176400 +1467+81+33507+360+0-18+31527-315-117+90+0+9-108-108-108 +sign_ed25519 3 362 181458 +1368+33147+927+0-135-99-162-153+63+54-108-108+45+54-108 +sign_ed25519 3 453 183834 +1548+486+72-117+0+36+0+9+27-144-144+207-144-144-144 +sign_ed25519 3 567 188775 +1593+306+72+54+0-9+0+0-36-36-36-36+387-36+387 +sign_ed25519 3 709 193464 +1080+432-387-360+21528+225-117+207+9-81-81+0+0-81+0 +sign_ed25519 3 887 200475 +1530+306+27-63-36-45-36-36+0-9+144-81+0+153+144 +sign_ed25519 3 1109 210267 +1458+261+63+36-36-36-126-36+0+0+0+0+0+0+0 +sign_ed25519 3 1387 220068 +900-72-306+15849+0-459-153-207-189+180+171+171+261+171-243 +sign_ed25519 3 1734 231957 +1161+0-270-270-333-333-324-324+0+9+0+9+0+9+0 +sign_ed25519 3 2168 248751 +1323+306+72-261+0+0+0+9-108-99-108+34353+1305-234-297 +sign_ed25519 3 2711 268137 +1323-81-297-261+324-306-306-297+0+9+9+9+0-9+9 +sign_ed25519 3 3389 294597 +1260+288+0+36-99-27-27-18+54-36-27+36-27+15606+396 +sign_ed25519 3 4237 325386 +1098+279-27+9-36+0-36-45+9+0-9+0+0-9+0 +sign_ed25519 3 5297 366291 +1323+225-54-45-117+45+225-126+9+21195+1080+0-18-90-99 +sign_ed25519 3 6622 416889 +1476+315+27-9+18-54-45-54+99+0+0+0-243+0+0 +sign_ed25519 3 8278 479043 +32679+1755+486+171-9+0+45+18-18-117+189-126-63-54-63 +sign_ed25519 3 10348 556515 +630+54-207+17316+162-99-45-270-171-162+0+0+0+0+0 +sign_ed25519 3 12936 652284 +1152+648-207+15390+126+99+9-252-9-9-99-252+0-108+32139 +sign_ed25519 3 16171 772776 +1449+31662+1332+297-27-18+45-45+0-36-36-27+27-27+16938 +sign_ed25519 3 20214 926946 +1386+459-27+9-45+189-36+30870+16839+324-18+0+0-9-9 +sign_ed25519 3 25268 1117683 +2142+31941+819+108-144-27-81-54-72-108+35613+477+18-36+0 +sign_ed25519 3 31586 1355724 +1989+324+17082-171-108+45-252-54-72+31356+540-306-297+0+63 +sign_ed25519 3 39483 1652301 +2529+27-279-198+99+15174+342+0-9-225-126+31419+216-207-180 +sign_ed25519 3 49354 2022210 +17244+666-441+31482+270+16668-225-351-423-486+36459+0-396-378+15219 +sign_ed25519 3 61693 2486763 +1755+81+16929-171-126-63+31320+0-261-180+16110+45-243-126+16551 +sign_ed25519_open 3 0 547371 +6192+1575-459+270-1422-1620-1638-1629+33606+1683+0+45+621-945-783 +sign_ed25519_open 3 1 549306 +4653+1170+441-882-675-684-684+72+108+19728+2340-54+0-828-864 +sign_ed25519_open 3 2 552636 +4365+1395+1035+1125-27-513-603-594-594-594+19098+2079+81+0-675 +sign_ed25519_open 3 3 555327 +4788+1944+0+1206-270-261-567-711-747-711-747+34686+2502+1323+1152 +sign_ed25519_open 3 4 552303 +5337+1485+630-270-9+0+0-9+0-9-351-1107+18792+1611+423 +sign_ed25519_open 3 6 548658 +4698+2124+99+504-144-9-27-9+36+0-918-666-540+19278+2358 +sign_ed25519_open 3 8 543555 +4662+1404+432-954-747+0+36+18+27-144-369-369-369-369+33831 +sign_ed25519_open 3 11 557757 +4302+1683+1170+810-207-63+0-36-9-36+0-36+0-36+0 +sign_ed25519_open 3 14 556524 +5544+2025+1494+999+225+0+0-9+0+855-9+0-9-27-684 +sign_ed25519_open 3 18 545004 +6111+1215+1476-108+171+351+378-162-81-108-72-99-72+27+0 +sign_ed25519_open 3 23 542925 +4302+35586+2475+801+513-144-162-315+9-9+0-18+0+27-9 +sign_ed25519_open 3 29 544194 +3816+1395+23301+2007+810+0-1233-1062-396-594-576+36+36-9+0 +sign_ed25519_open 3 37 550998 +4239+1314+99+21780+1755+9+198-495-153-261-216-594-36-99+0 +sign_ed25519_open 3 47 546777 +3222-45-270-1368+67041+2502+504+900+459-387-126-261-108+0+126 +sign_ed25519_open 3 59 550359 +4329+2034+1107-369-117+18558+2682+1098+594-207-9+0-153-243-243 +sign_ed25519_open 3 74 557820 +3591+297+0-126-981-891+18099+2709+1035+972+18-144-108-126-675 +sign_ed25519_open 3 93 552348 +3933+1278+936-54-144-126-135+34416+3240+1737+990-711-72-72+0 +sign_ed25519_open 3 117 546264 +3600+612+0-153-972-423-387-432+18846+3222+1566+1332+657-90-351 +sign_ed25519_open 3 147 548865 +3798+837+0-468-405-180-288+0+36+18801+2538+504+684-153-1161 +sign_ed25519_open 3 184 564732 +4338+405+0-450-315-90-459-468-477-477+33687+2610+540+873+306 +sign_ed25519_open 3 231 555525 +3789+396+198+414-828-297+0-27+0-9+0+19215+2934+495-333 +sign_ed25519_open 3 289 550386 +3465+1233+819+711-1008-1080-324+0-27-45-45-45+50634+3051+1080 +sign_ed25519_open 3 362 560187 +4077+621+594+1134+0-198-117-108+18-171-45-171-45+36126+2043 +sign_ed25519_open 3 453 558864 +4257+1404+864+486+522-18+0-198-81-126-486-513-495+18567+1917 +sign_ed25519_open 3 567 562392 +3861+1026+864+594-126-144-108-54-234-72+27+0+72-9+19152 +sign_ed25519_open 3 709 561528 +4950+1503+1179+333+315+234+324-135-45-54+0-27-18-18-324 +sign_ed25519_open 3 887 570807 +3753+972+531+504+702+72-189-189-198-171-180+0-99+99-1179 +sign_ed25519_open 3 1109 575154 +4140+1053+1215-36-18-9-117+0-126-9+837+144+567+639-639 +sign_ed25519_open 3 1387 575217 +4185+108+45+189-477-864+9-9-63+0-63+9-45+18-36 +sign_ed25519_open 3 1734 588132 +4626+1053+810-387-423-432-423+612+720+171+0-36+9-927-963 +sign_ed25519_open 3 2168 587304 +4950+1035+855+1251+9-18+0-36-63-99-81-108+54+153-837 +sign_ed25519_open 3 2711 602118 +4176+711+873+846+540-477-819-864-1305+0-279-270-135+18+34173 +sign_ed25519_open 3 3389 616986 +4734+1530+864+0-279-144-279-162+279+378-18-81-144+19116+2781 +sign_ed25519_open 3 4237 628290 +4509+1332+567+495-18-81-63-72-108-90-108+0+19341+2169+540 +sign_ed25519_open 3 5297 653787 +4860+1116+198+774-72+27+0-81-198-180+35019+1746-252-81-288 +sign_ed25519_open 3 6622 671679 +4617+873+909-9+0-126-522+17361+3672+513+387-207-315-981-1116 +sign_ed25519_open 3 8278 706599 +4329+774+0+351+16011+5337+693+396-594-450-1305-1161-1188-1557-1584 +sign_ed25519_open 3 10348 745434 +5589+36000+2862+999+594+0+396-72-234-216-225-216-234-369+20043 +sign_ed25519_open 3 12936 799875 +5202+1998+657+567-1053+54-27-216-198+20583+855+0-918-792-342 +sign_ed25519_open 3 16171 844506 +5409+1629+495+36603+2952-63+540+81+0-351-306-351-360-351-360 +sign_ed25519_open 3 20214 933228 +4887+1134+981+954+801-27-189-117+20376+747+0-909-837-495-360 +sign_ed25519_open 3 25268 1031625 +43371+3060+369+18-801-576-837-585-441+19071+2718+0+99-1044-558 +sign_ed25519_open 3 31586 1158318 +5004+20457+567+702+477-765-576-783-846+35748+612+0-522-450-342 +sign_ed25519_open 3 39483 1307610 +5553+18+198-990-747-342-657+19737+0+72+252-576-468-117+34740 +sign_ed25519_open 3 49354 1499922 +3726+450+0+20934+153-567-1791-1845-1683+19728+117+171-1323-1566-1575 +sign_ed25519_open 3 61693 1726335 +2808+45-45+20610-1008-1044-1602-1710+14391+3150+0+63-882-1728+35136 diff --git a/lib-25519/lib25519/benchmarks/nucnuc b/lib-25519/lib25519/benchmarks/nucnuc new file mode 100644 index 0000000000..a087449996 --- /dev/null +++ b/lib-25519/lib25519/benchmarks/nucnuc @@ -0,0 +1,1112 @@ +lib25519 version 20221221 +lib25519 arch amd64 +cpuid 756e6547 6c65746e 49656e69 20202020 6e492020 286c6574 50202952 69746e65 52286d75 50432029 4e202055 30303733 20402020 30362e31 007a4847 000406c3 06100800 43d8e3bf bfebfbff 00000000 00002282 00000000 0c000000 00000000 00000000 00000101 28100800 00000000 00000000 00000000 00000000 00000000 +cpucycles selected persecond 1600000000 +cpucycles selected implementation amd64-pmc +cpucycles selected 0 67 +6+25+19+28+0+16+28+0+0+0+0+0+0+0+0 +randombytes selected 0 118 +10377+85+0+22+12+0+0+0+0+0+0+0+0+0+0 +randombytes selected 1 710 +5520+18+30+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 2 710 +99+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 4 710 +64+12+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 7 710 +55+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 11 710 +78+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 17 710 +34+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 26 710 +74+12+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 40 710 +83+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 61 710 +45+11+1+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 92 710 +80+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 139 710 +42+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 209 710 +75+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 314 710 +82+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 472 710 +61+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 709 710 +53+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 1064 710 +55+42+1+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 1597 710 +40+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 2396 710 +21+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 3595 722 +20+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 5393 722 +47+0+0+0+0+0+201+50-12-12-12-12-12-12-12 +randombytes selected 8090 710 +134+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 12136 775 +100+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 18205 887 +110+15+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 27308 928 +46+31+124+69+3+0+0+0+0+0+0+0+0+0+0 +randombytes selected 40963 928 +158+52+12+0+0+0+0+0+0+139+14+0+0+0+0 +randombytes selected 61445 928 +60+101+46+0+0+0+0+78+50+0+0+0+0+0+134 +verify_32 selected implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 selected 32 115 +1437+7+13+14+27+0+27+0+0+0+0+0+0+0+0 +verify_32 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 0 32 164 +2033+5+1+15+1+1+1+0+0+0+0+0+0+0+0 +verify_32 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 1 32 115 +89+27+13+27+13+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected implementation compact compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 selected 0 269 +1912+71+28+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 1 269 +197+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 2 269 +288+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 4 269 +219+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 7 269 +254+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 11 269 +269+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 17 269 +257+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 26 269 +246+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 40 269 +250+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 61 269 +234+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 92 269 +272+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 139 3176 +9527+181+88+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 209 3176 +1657+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 314 6072 +1320+12+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 472 8951 +1259+15+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 709 14709 +1370+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 1064 23346 +1288+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 1597 34862 +1228+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 2396 52136 +1349+0+0+0+0+0+2219+101+8+0+0+0+0+0+0 +hashblocks_sha512 selected 3595 80926 +1633+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 5393 121232 +1437+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 8090 181691 +1380+0+0+0+0+0+0+0+0+0+0+0+2478+74+0 +hashblocks_sha512 selected 12136 270940 +1885+0+0+0+0+0+0+0+0+0+0+60+0+0+0 +hashblocks_sha512 selected 18205 409252 +1554+2366+319+0+0+0+0+0+1+0+0+0+0+0+0 +hashblocks_sha512 selected 27308 613800 +3605+50+0+0+0+0+0+0-9-9+1621+215+0+62+0 +hashblocks_sha512 selected 40963 921821 +1840+183+2065+72+0+0+0+0+0+2145+24-49-49-49-49 +hashblocks_sha512 selected 61445 1382549 +2221-51-47-47+1453+0-16-16+1434+45-43+16-43+1585+14 +hashblocks_sha512 0 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 0 0 269 +272+39+28+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 1 269 +201+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 2 269 +247+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 4 269 +219+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 7 269 +283+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 11 269 +247+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 17 269 +269+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 26 269 +214+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 40 269 +227+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 61 269 +207+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 92 269 +202+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 139 3176 +2233+16+10+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 209 3176 +1399+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 314 6072 +1374+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 472 8951 +1264+15+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 709 14709 +1250+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 1064 23346 +1093+0+0+0+0+0+0+0+0+0+1916+69+0+0+0 +hashblocks_sha512 0 1597 34862 +1871+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 2396 52136 +1358+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 3595 80926 +1098+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 5393 121232 +1459+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 8090 181691 +1305+0+0+0+0+1973+135+0+0+0+58+0+0+0+0 +hashblocks_sha512 0 12136 270940 +2062+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 18205 409164 +2311+0+0+0+0+0+0+0+0+0+0+0+0+0+1817 +hashblocks_sha512 0 27308 613811 +1788-35-3-3-3-3+55-3+2065+108+8+0+0+0+0 +hashblocks_sha512 0 40963 921845 +1829+2018+210+12+0+0+0+0+1407+200+46-16-16-16-16 +hashblocks_sha512 0 61445 1382506 +2033-8-4+2243+105-8-8+1843+118+0+0+0+2014+40-21 +hashblocks_sha512 1 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 1 0 193 +2068+39+21+15+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 1 193 +228+15+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 2 193 +220+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 4 193 +184+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 7 193 +140+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 11 193 +202+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 17 193 +200+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 26 193 +199+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 40 193 +198+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 61 193 +192+0+0+0+0+0+1028+74+0+0+0+0+0+0+0 +hashblocks_sha512 1 92 193 +292+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 139 3187 +6328+54+42+6+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 209 3187 +1404+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 314 6146 +1525+24+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 472 9127 +1235+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 709 15071 +1300+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 1064 23981 +1197+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 1597 35861 +1422+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 2396 53681 +1352+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 3595 83381 +1260+0+0+0+0+0+0+0+0+0+0+60+0+0+0 +hashblocks_sha512 1 5393 124965 +1373+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 8090 187335 +1887+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 12136 279409 +1368+0+0+0+0+0+0+0+0+0+2230+109+18+18+18 +hashblocks_sha512 1 18205 421986 +1922+4+0+0+0+0+0+0+0+0+2356+316+3+3+63 +hashblocks_sha512 1 27308 633104 +1771-57+0+27+0+1841-15-69+24-3+24-3+24-3+24 +hashblocks_sha512 1 40963 950819 +1878+102+0-27+96+1903+145-25-25-25-25-25+1682+87-21 +hashblocks_sha512 1 61445 1426159 +1868+2202+0-22-112+1355+153-90-63-90+1608+19-90-63+1255 +hashblocks_sha512 2 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 2 0 269 +3340+96+47+5+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 1 269 +255+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 2 269 +296+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 4 269 +298+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 7 269 +283+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 11 269 +279+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 17 269 +294+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 26 269 +286+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 40 269 +260+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 61 269 +265+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 92 269 +278+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 139 5247 +4344+50+16+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 209 5247 +616+6+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 314 10206 +673+10+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 472 15140 +584+14+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 709 25018 +667+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 1064 39835 +501+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 1597 59591 +626+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 2396 89225 +668+0+1703+78+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 3595 138615 +716+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 5393 207761 +654+0+0+0+0+0+0+0+0+0+0+0+1361+114+0 +hashblocks_sha512 2 8090 311480 +708+0+0+0+0+0+0+0+0+0+0+0+62+0+0 +hashblocks_sha512 2 12136 464589 +2172+364+0+0+0+0+0+0+0+0+0+0+0+0+1418 +hashblocks_sha512 2 18205 701793 +956-34-40-40-40-40-40+1490+211+0+46+0+0+0+0 +hashblocks_sha512 2 27308 1052582 +776-32+0+0+0+1317+25-40-42-42-42+25+1270-21-34 +hashblocks_sha512 2 40963 1581229 +1814-153-168-168+948-274-264-200+974-158+28+31+28+820+0 +hashblocks_sha512 2 61445 2371533 +1756+0+1167-202-190+945-57+5+1004-82-77+829-7+1266-107 +hashblocks_sha512 3 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 3 0 197 +4756+69+28+16+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 1 197 +284+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 2 197 +343+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 4 197 +268+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 7 197 +273+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 11 197 +303+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 17 197 +361+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 26 197 +293+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 40 197 +256+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 61 197 +305+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 92 197 +340+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 139 4650 +3022+149+32+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 209 4650 +786+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 314 9122 +711+11+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 472 13567 +759+11+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 709 22469 +613+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 1064 35822 +645+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 1597 53626 +608+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 2396 80332 +698+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 3595 124842 +587+0+0+0+0+0+0+0+0+0+0+0+0+1551+70 +hashblocks_sha512 3 5393 187156 +710+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 8090 280627 +758+0+0+0+0+0+0+0+0+1453+94+71+0+0+0 +hashblocks_sha512 3 12136 418608 +806+0+0+0+0+0+0+0+0+0+1462+116+0+0+0 +hashblocks_sha512 3 18205 632298 +937-38-42-42-42+1539+311+7+0+0+0+0+0+56+0 +hashblocks_sha512 3 27308 948579 +921+0+0+0+0+0+1357-26-16-16-16-16+1242-55+11 +hashblocks_sha512 3 40963 1424737 +800+1626+23+0+0+0+1361+25-14-14+1267+15+0+0+0 +hashblocks_sha512 3 61445 2136999 +684-6+1296+101-13+1246+0-13+1493-20-74+1166-46-74+1025 +hashblocks_sha512 4 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 4 0 302 +3434+71+14+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 1 302 +307+13+13+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 2 302 +327+13+13+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 4 302 +193+13+13+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 7 302 +245+18+13+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 11 302 +241+13+13+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 17 302 +270+18+13+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 26 302 +241+13+13+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 40 302 +261+13+13+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 61 302 +282+13+13+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 92 302 +281+18+13+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 139 5141 +4770+67+35+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 209 5141 +660+2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 314 10008 +764+0-11+0-11+0-11+0-11+0-11+0-11+0-11 +hashblocks_sha512 4 472 14829 +726+31+0+0+0+0+1365+88+0+0+0+0+0+0+0 +hashblocks_sha512 4 709 24485 +744+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 1064 38969 +723+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 1597 58281 +723+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 2396 87249 +748+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 3595 135529 +598+0+0+0+0+0+0+0+0+115+0+0+0+0+0 +hashblocks_sha512 4 5393 203132 +744+1421+84+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 8090 304520 +740+0+0+0+0+0+0+0+0+0+1684+244+139+0+0 +hashblocks_sha512 4 12136 454199 +825+0+0+0+0+0+0+0+0+1453+115+0+0+0+0 +hashblocks_sha512 4 18205 685982 +1278+25+25+25+1789+1095+0+0+0+0+0+0+0+0+2221 +hashblocks_sha512 4 27308 1029522 +4036+5+0+0+2347+230-15-15-15-15+1497+304-11-11-11 +hashblocks_sha512 4 40963 1546671 +4470+59+0-41+1782+63-161-161+1620-1-98-98+1813+237-98 +hashblocks_sha512 4 61445 2320022 +4744-369+1826-14-220+1748-212-382+2254-210+937+435-261+1433+0 +hashblocks_sha512 5 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 5 0 194 +3636+67+14+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 1 194 +306+12+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 2 194 +244+14+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 4 194 +228+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 7 194 +187+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 11 194 +191+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 17 194 +214+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 26 194 +274+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 40 194 +244+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 61 194 +210+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 92 194 +292+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 139 4915 +3203+75+128+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 209 4915 +448+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 314 9758 +395+11+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 472 14569 +367+15+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 709 24211 +295+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 1064 38674 +329+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 1597 57958 +327+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 2396 86884 -1+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 3595 135094 +28+0+0+0+0+0+0+0+0+0+977-87+0+0+0 +hashblocks_sha512 5 5393 202588 +191+15+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 8090 303829 +14+0+0+0+0+0+1142-1826+0+0+0+0+0+0+0 +hashblocks_sha512 5 12136 453280 -516+0+12+0+12+0+12-1573-2420+0+12+0+12+0+12 +hashblocks_sha512 5 18205 683074 -4544+999+1035-1903-1714+0+0+0+146+146+146+146-995-3894+294 +hashblocks_sha512 5 27308 1021695 -587+2105-125-496-903+211+303+296+296-228-1608-148+0+0+0 +hashblocks_sha512 5 40963 1540127 -5452-4479-1377+3460-2028-1541-1541-1365+1923+2618+2618+3574+0+840+846 +hashblocks_sha512 5 61445 2308264 -4844-12+4168-313+0+3675-98+721+700+1920+4266-851-3+4140-419 +hashblocks_sha512 6 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 6 0 301 +1818+100+26+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 1 301 +253+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 2 301 +308+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 4 301 +174+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 7 301 +288+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 11 301 +257+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 17 301 +261+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 26 301 +274+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 40 301 +271+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 61 301 +223+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 92 301 +312+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 139 3724 +3716+133+38+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 209 3724 +575+26+14+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 314 7156 +433+27+3+0-11+0-11+0-11+0-11+0-11+0-11 +hashblocks_sha512 6 472 10539 +448+43+14+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 709 17339 +535+26+14+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 1064 27539 +482+26+14+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 1597 41139 +485+26+14+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 2396 61539 +492+26+14+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 3595 95547 +498+26+14+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 5393 143147 +439+26+1326+67+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 8090 214555 +625+26+14+0+0+63+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 12136 319963 +489+1336+132+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 18205 483180 +694+17+17+1485+34+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 27308 724758 +1034+26+14+0+0-7+0+0+1208+53-51-51-51-51-51 +hashblocks_sha512 6 40963 1088622 +2083+114-1-19+49+1193+270-1+0-2-2+1104+177-9-9 +hashblocks_sha512 6 61445 1632751 +2401+171-42-60+1428+84-59-57+1332+13-51-51+1299+0-51 +hashblocks_sha512 7 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 7 0 196 +3394+90+39+7+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 1 196 +253+11+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 2 196 +300+18+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 4 196 +213+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 7 196 +291+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 11 196 +254+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 17 196 +260+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 26 196 +286+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 40 196 +245+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 61 196 +404+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 92 196 +310+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 139 3436 +3406+120+48+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 209 3436 +467+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 314 6697 +561+26+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 472 9935 +487+21+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 709 16413 +410+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 1064 26130 +488+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 1597 39086 +391+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 2396 58520 +480+4+8+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 3595 90910 +439+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 5393 136256 +384+1312+107+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 8090 204275 +491+14+0+0+0+0+0+0+0+57+0+0+0+0+0 +hashblocks_sha512 7 12136 304684 +522+0+1486+276+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 18205 460473 +575-275-289-289+1495+23+9+9+0+0+0+0+0+0+0 +hashblocks_sha512 7 27308 691054 +1509-539+65+0+0+0+0+0-9+1223-548-37-37-37-37 +hashblocks_sha512 7 40963 1036907 +793+1619+67-1-1-1+70+1276+69+0+0+0+0+1211-13 +hashblocks_sha512 7 61445 1555297 +716+1169+142+0-71+1053+117-86-87-87+1248-63-79-79+1385 +hashblocks_sha512 8 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 8 0 175 +3089+33+24+19+24+33+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 1 175 +266+3+5+17+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 2 175 +355+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 4 175 +354+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 7 175 +331+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 11 175 +354+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 17 175 +375+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 26 175 +341+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 40 175 +358+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 61 175 +302+0-6+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 92 175 +333+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 139 3093 +19091+690+44+38+14+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 209 3093 +7834+1123+13+13+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 314 5996 +8519+375+103+7+13+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 472 8888 +8258+183+44+31+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 709 14686 +7802+211+58+31+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 1064 23380 +8342+251+36+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 1597 34998 +8029+279-11-25+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 2396 52374 +9213+73+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 3595 81354 +9103+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 5393 121927 +8295+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 8090 182786 +8284+234+0+0+0+0+0+0+0+0+7331+160+0+0+0 +hashblocks_sha512 8 12136 272625 +8638+80+0+0+0+0+0+0+0+0+0+0+59+0+0 +hashblocks_sha512 8 18205 411775 +16388+1007+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 27308 618657 +9546+148+6-2-2-2-2-2-1+6384+569+6+0+70+0 +hashblocks_sha512 8 40963 929865 +9473+7116+341-1-1-1-1-1+5672+398+173+0+0+0+0 +hashblocks_sha512 8 61445 1394973 +9179+0-149+7836+441-116-143-143+6550+14-81-142+7512+320-126 +hashblocks_sha512 9 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 9 0 213 +4073+11+13+13+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 1 212 +399+10-3-3+13+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 2 213 +417+11+0+0+13+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 4 213 +511+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 7 212 +385+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 11 213 +516+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 17 212 +479+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 26 213 +387+0+0-4+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 40 213 +422+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 61 213 +508+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 92 212 +402+1-3-3+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 139 3502 +16882+1040+270+159+60+0+0+0+0+0+0+0+0+0+5720 +hashblocks_sha512 9 209 3502 +8637+619+46+28+60+32+100+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 314 6793 +9019+204+137+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 472 10083 +8908+417+87+29+15+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 709 16665 +9244+208+129+14+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 1064 26538 +8627+293+56+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 1597 39709 +8589+431+106+115+41+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 2396 59463 +8877+244+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 3595 94473 +8554+354+76+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 5393 138446 +8815+150+0+0+0+0+0+0+0+0+0+9464+324+0+0 +hashblocks_sha512 9 8090 207557 +9646+59+58+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 12136 314456 +4150-4701-4877-4877-4877-4877+6952+383+23+0+0+0+0+0+0 +hashblocks_sha512 9 18205 467683 +10003+166-133-133-133-133+8283+784+65+0+0+0+0+0+0 +hashblocks_sha512 9 27308 702987 +9939+10578+1066+23+0+12-104-104-102-102+6932+864-88-101-101 +hashblocks_sha512 9 40963 1056606 +9823+8404+427+0+73+0+0+0+5941+310-2-2-2-2+7323 +hashblocks_sha512 9 61445 1585089 +9696-9+7465+414-105-123+8440+0-165-165+6454+165-99-165+6614 +hashblocks_sha512 10 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 10 0 175 +2325+9+24+17+24+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 1 175 +271+4+4+0-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 2 175 +327+11+0+0-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 4 175 +369+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 7 175 +363+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 11 175 +374+63+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 17 175 +257+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 26 175 +369+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 40 175 +314+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 61 175 +340+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 92 175 +367+43+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 139 3061 +16485+692+37+51+13+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 209 3061 +7373+468+177+40+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 314 5932 +8351+12+4-6+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 472 8795 +7823+197+39+42+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 709 14568 +8894+137+140+81+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 1064 23169 +7662+274+52+12+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 1597 34637 +7854+150+30+0+0+0+0+0+0+0+0+0+0+7071+330 +hashblocks_sha512 10 2396 51851 +8357+186+8+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 3595 80521 +8347+269+31+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 5393 120698 +8527+10+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 8090 180905 +8060+243+0+0+0+0+0+0+0+8500+429+0+0+0+0 +hashblocks_sha512 10 12136 269821 +8924+138+88+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 18205 407410 +15647+1058+58+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 27308 612412 +9438+171+0+0+0+0+0+0-3+5975+809-16-25-25-25 +hashblocks_sha512 10 40963 920631 +9901+253+7704+290+0+0+0+0+6134+319-1-1+64-2-1 +hashblocks_sha512 10 61445 1381278 +8901+77-320+6749+130-210-213-205+6521+0-351-351+5250+104-317 +hashblocks_sha512 11 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 11 0 209 +3999+0+23+10+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 1 209 +439+0+10+10+13+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 2 209 +380+0+0+0+13+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 4 209 +526+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 7 209 +388+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 11 209 +419+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 17 209 +500+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 26 209 +331+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 40 209 +409+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 61 209 +390+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 92 209 +439+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 139 3504 +18075+1088+96+71+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 209 3504 +7978+711+180+70+134+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 314 6800 +9078+243+23+23+20+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 472 10197 +8798+332+57+19+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 709 16685 +9541+617+166+37+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 1064 26570 +9118+140+40+17+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 1597 39750 +9369+504+15+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 2396 59539 +8542+451+147+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 3595 92487 +8643+287+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 5393 138687 +8744+309+0+0+0+0+59+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 8090 207812 +9849+311+55+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 12136 309957 +9680+287+0+0+0+0+0+0+8471+321+0+0+0+0+0 +hashblocks_sha512 11 18205 468535 +9334-137-378-378-378-378-378+9085+950+55+0+0+0+58+0 +hashblocks_sha512 11 27308 703775 +10201+0+8075+1124+28-66-66-66-67-67-67+8058+890+110-1 +hashblocks_sha512 11 40963 1058001 +10129+107+8122+361-60-57-60-60+7298+491+0-86-120-120+7149 +hashblocks_sha512 11 61445 1587259 +31779-208+8247+0-424-424+6668+61-385-426+7577+44-400-400+6781 +hashblocks_sha512 12 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 12 0 119 +3083+25+12+11+11+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 1 119 +106+23+12+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 2 119 +151+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 4 119 +100+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 7 119 +152+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 11 119 +85+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 17 119 +145+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 26 119 +144+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 40 119 +144+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 61 119 +140+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 92 119 +136+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 139 3087 +7485+156+23+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 209 3087 +1240+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 314 5992 +1130+14+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 472 8892 +1083+11+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 709 14680 +898+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 1064 23362 +1039+43+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 1597 34938 +1188+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 2396 52302 +973+0+0+0+0+0+0+1604+162+0+0+0+0+0+0 +hashblocks_sha512 12 3595 81242 +1095+13+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 5393 121758 +1078+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 8090 182532 +1003+0+0+0+0+0+0+0+0+58+7+0+1717+311+3 +hashblocks_sha512 12 12136 272246 +1409+37+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 18205 411291 +1641+1739+954+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 27308 617770 +3204+133-4-4-4+64-4-4+0+0+1350+237+6+0+3 +hashblocks_sha512 12 40963 928394 +2181+99+1789+69-1-1-1-1+0+1477+102+0+0+0+0 +hashblocks_sha512 12 61445 1392409 +2392-94-106+1182+384-55-54+10+1376+137-46-46-46+1494+0 +hashblocks_sha512 13 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 13 0 114 +3087+36+24+11+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 1 114 +84+11+24+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 2 114 +33+0+13+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 4 114 +116+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 7 114 +111+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 11 114 +91+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 17 114 +16+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 26 114 +54+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 40 114 +54+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 61 114 +81+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 92 114 +81+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 139 3226 +6454+172+26+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 209 3226 +1265+25+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 314 6303 +1049+25+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 472 9370 +1157+15+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 709 15505 +996+0+0+0+0+0+0+0+0+0+0+0+0+0+1532 +hashblocks_sha512 13 1064 24694 +1264+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 1597 36946 +1116+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 2396 55324 +1106+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 3595 85954 +1067+0+0+60+7+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 5393 128848 +1132+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 8090 193171 +1006+0+1948+314+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 12136 288136 +1477+53+0+0+0+0+0+0+0+0+0+0+2360+324+0 +hashblocks_sha512 13 18205 435259 +2118+15+0+0+0+0+0+0+0+0+0+2772+859+302+299 +hashblocks_sha512 13 27308 654801 +1664-18-43-43-40+1839+906+15+0+0+0+0+0+0+0 +hashblocks_sha512 13 40963 984515 +1865+136+0+19-40+1765+71-15-17-17-17+1351+252-17-16 +hashblocks_sha512 13 61445 1476725 +3326+420+0-65-69+1538-11-69-71+1345+243-71-71+2290+375 +hash_sha512 selected implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 selected 0 3446 +12542+134+23+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 1 3453 +2581+80+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 2 3462 +2159+134+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 4 3487 +2160+136+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 7 3477 +2281+47+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 11 3489 +2122+159+14+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 17 3510 +1848+72+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 26 3536 +1919+75+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 40 3486 +2318+114+18+18+18+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 61 3553 +1915+153+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 92 3554 +2229+78+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 139 6386 +1996+100+19+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 209 6423 +1879+74+61+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 314 9331 +1960+62+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 472 12328 +1668+48+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 709 17967 +1929+68-24-24+2223+250+15+0+0+0+0+0+0+0+0 +hash_sha512 selected 1064 26582 +2543+89+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 1597 38165 +2040+42+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 2396 55442 +1785+104+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 3595 84184 +2046+84+5+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 5393 124492 +2051+67+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 8090 185043 +2008+2678+142+4+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 12136 274229 +2744+162+0+0+0+0+0+0+0+0+0+0+2414+298-23 +hash_sha512 selected 18205 412442 +2833+81+0+0+0+0+0+0+0+0+0+0+2979+396-13 +hash_sha512 selected 27308 618180 +2845+98-18-28-28-28-28+2889+171+0+0+3+0+0+0 +hash_sha512 selected 40963 927266 +5230+152-24+3+0+0+0+2529+0-61-44-44-2+1704+164 +hash_sha512 selected 61445 1389347 +3236-41+2674+107-31-39-39+2053+92-90-66+2130+195+0-8 +hash_sha512 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 0 0 3670 +9016+222+37+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 1 3663 +2441+152+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 2 3666 +2116+151+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 4 3665 +2778+207+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 7 3663 +2223+134+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 11 3715 +2099+111+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 17 3715 +1971+145+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 26 3716 +1918+177+5+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 40 3715 +1843+124+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 61 3720 +1712+150+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 92 3720 +1886+123+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 139 6612 +1875+162+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 209 6616 +1858+105+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 314 9507 +1905+105+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 472 12428 +1711+105+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 709 18184 +1694+69+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 1064 26812 +1744+110+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 1597 38333 +1812+104+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 2396 55607 +1910+97+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 3595 84392 +1992+110+0+0+0+0+0+0+0+0+0+0+62+1878+54 +hash_sha512 0 5393 124704 +2362+105+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 8090 185170 +2409+104+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 12136 274408 +1884+105+2442+161+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 18205 412655 +2539+99-32-32-32+2862+539-6+0+0+0+0+0+0+69 +hash_sha512 0 27308 618031 +3042+242+2669+270-5-3-3+0-5-5-5-5+1654+622+154 +hash_sha512 0 40963 927292 +3138-50-3+2280+320+36-38-38-40-40+2091+324+0+0+3 +hash_sha512 0 61445 1389341 +5318+283-23-22+1614+452-3+0-5+1852+204-5-5-2+1829 +hash_sha512 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 1 0 3446 +4760+57+4+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 1 3453 +2049+121+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 2 3462 +2074+36+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 4 3468 +2187+75+6+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 7 3477 +2052+107+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 11 3489 +1864+52+10+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 17 3510 +1994+66+1+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 26 3536 +1606+44+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 40 3486 +1806+134+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 61 3553 +2086+30+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 92 3554 +2117+68+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 139 6386 +1782+60+19+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 209 6423 +1943+85+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 314 9331 +1729+50+1+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 472 12253 +1672+55+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 709 17943 +1818+48+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 1064 26600 +1948+98-17+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 1597 38165 +1721+68+2393+101+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 2396 55442 +2495+72+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 3595 84184 +1986+118+5+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 5393 124509 +1855+62+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 8090 185041 +1840-11-45-45-45-45+2839+94+4+0+0+0+0+0+0 +hash_sha512 1 12136 274229 +2651+43+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 18205 412425 +2850+98+0+0+0+0+0+0+0+0+0+0+0+0+3030 +hash_sha512 1 27308 618237 +2769+80-125-117-117-117-117-117+2536+255+7+0+0+3+0 +hash_sha512 1 40963 927240 +2965+2786+83+24+0+0+0+2714+300-54-54-54-54-54+1867 +hash_sha512 1 61445 1389284 +3136-51-78+2663+120-26-26+1967+237+0-8-11+1940+116-3 +pow_inv25519 selected implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 selected 32 39827 +16844+570+78+26+0+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 0 32 54156 +16921+493+117+32+0+1775+349+26+0+0+0+0+0+0+0 +pow_inv25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 1 32 54069 +9801+273+0+0+0+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 2 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 2 32 39913 +11155+300+20+0+0+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 3 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 3 32 39827 +1986+137+0+0+0+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 4 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 4 32 44288 +16649+165+49+10+0+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 5 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 5 32 44293 +4332+159+7+0+0+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 6 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 6 32 58739 +21392+347+24+0+0+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 7 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 7 32 58849 +24643+765+186+67+0+0+0+0+0+0+0+0+2124+3761+479 +pow_inv25519 8 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 8 32 55199 +9970+157+27+0+0+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 9 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 9 32 59589 +12774+324+0+0+0+0+0+0+0+0+0+0+0+0+0 +nP_montgomery25519 selected implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 selected 32 449895 +23391+864+159+113+14-7-7-7-7+4345+526+0-7-7-7 +nP_montgomery25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 0 32 650121 +28544+868-137-183+5120+645+67+38+0-58-65-65-65-65+3385 +nP_montgomery25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 1 32 650120 +12066+947-34-53-53-53-53-53+4375+760+79+0+53+0+53 +nP_montgomery25519 2 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 2 32 450129 +11380+566-11+4440+313+59+0+0+0+0+0+0+0+0+119 +nP_montgomery25519 3 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 3 32 449888 +7306+2547+162+0+0+0+0+0+0+0+0+0+0+0+0 +nP_montgomery25519 4 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 4 32 505892 +21998+645+60+7-33-50-50-50-50-50-50+3666+469+32+0 +nP_montgomery25519 5 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 5 32 505815 +10506+512-28-48-48-48-48-48+4936+781+99+101+64+0+0 +nP_montgomery25519 6 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 6 32 750875 +32027+2439-14+6003+2323+1030+0-276-304-304-304+4815+1234-39-236 +nP_montgomery25519 7 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 7 32 835718 +36029+2091-872+7046+1957-221-1017-1186-1629-1814-1757+6113+2850+0+358 +nP_montgomery25519 8 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 8 32 795932 +10190+248+4332+257+0+0+0+0+0+0+2665+91-60-60-60 +nP_montgomery25519 9 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 9 32 748905 +11972+318+4258+347-18+63-39-39-39-39-39+3063+312+0+0 +nG_merged25519 selected implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 selected 32 142131 +62017+1312+147+111+52+12+0+0+0+0+0+0+0+0+0 +nG_merged25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 0 32 206545 +66777+7758+3971+1184+234+27-38-66+0-82-23-42-39-68+0 +nG_merged25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 1 32 205499 +23697+2714+656+122+50+0+53-12-15-15-15-15-15-14+81 +nG_merged25519 2 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 2 32 142694 +21974+488-3+17-6+0-28+51-45+17-6+0-28+39-45 +nG_merged25519 3 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 3 32 142086 +7232+689+87+6+0+5+20+14-5-2-5-5-5-5-5 +nG_merged25519 4 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 4 32 155477 +50538+983-37+3-81-34-42-35-93+0+4746+761+49+78-6 +nG_merged25519 5 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 5 32 154747 +9936+851+43+0+0+3+0+0-3-3+0-3-3-3+1 +nG_merged25519 6 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 6 32 314274 +41175+488-114-119-119-119-119-119+3905+1520+29+0+2+0+0 +nG_merged25519 7 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 7 32 250861 +24054+356-3-1+103+26+7+7+0+0+0+0+0+0+0 +nG_montgomery25519 selected implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 selected 32 142189 +34467+611+186+44+0+0+0+0-5-5-5-2-5-5-5 +nG_montgomery25519 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 0 32 449891 +13140+372+26+0+0+0+0+0+4358+550+25+0+0+0+0 +nG_montgomery25519 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 1 32 449891 +8103+513+0+0+0+0+4825+505+12+83+7+0+0+0+0 +nG_montgomery25519 2 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 2 32 142213 +9956+700+89+8+3+0+3+2-2-3-3-3-3-3-3 +nG_montgomery25519 3 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 3 32 142155 +6578+482+69+0+0+0+0+0-5-5-5-5-5-5-5 +mGnP_ed25519 selected implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 selected 33 540651 +104928+3112+258-174-338-322+6922+3729+685+141+0-233-227-233-227 +mGnP_ed25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 0 33 741017 +80093+11110+5181+1212-631-857-1142-1124-1082-1176+4992+4830+946+0-552 +mGnP_ed25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 1 33 741221 +43365+4054+6780+4419+0-977-1695-1531-1969-2109-2345+3506+3609+303-1297 +mGnP_ed25519 2 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 2 33 534405 +30908+2547+502-78-44+6447+3800+757+275+0-144-253-260-253-260 +mGnP_ed25519 3 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 3 33 531425 +23795+10593+2708+438+0-198-212-316-348-297-227-356+4683+8187+1817 +mGnP_ed25519 4 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 4 33 616333 +83247+572+2329-1713+0-163-384+14835+2557-2803+1662-874-260-693+1539 +mGnP_ed25519 5 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 5 33 615714 +16887+14871+4187-428-866-3538-1097+244-3076-2073+95+2150+4629-755+0 +mGnP_ed25519 6 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 6 33 893184 +34338+1798-74-479+4199+2306+44-6-619-697-714+3390+1590+0-581 +mGnP_ed25519 7 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 7 33 873172 +31764+334+3875+1692-743-1311-1400-1406-1399+3161+3063+576-25-9+0 +dh_x25519 selected implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair selected 32 144463 +36861+1206+380+47-15+3771+1911+164-117-226-53+0-161-3-79 +dh_x25519 selected 32 449999 +10165+186+18-3-3-3-3-3-2-3+3983+375+0+0+0 +dh_x25519 0 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 0 32 144449 +5525+1075+162+137+621-39-83-29-280-19+27-30-12+0+92 +dh_x25519 0 32 449892 +3084+180+4223+518+78+0+0+0+1+0+0+0+0+0+0 +dh_x25519 1 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 1 32 144451 +5476+4712+1689+417-59-10+90+0+166-41+165-224-65-141-67 +dh_x25519 1 32 449899 +3139+42+14-7-7-7-7-7+4888+2363+67+71+0-7-7 +sign_ed25519 selected implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair selected 32 148472 +46961+2214+666+234+10+10+3+0-212-101-368-205-393-226-444 +sign_ed25519 selected 0 161393 +28308+2802+840+702-315+0+52-617-176-186-37-31+45+17-146 +sign_ed25519 selected 1 161664 +8086+1353+6691+1903+669+319+190-94+0-101-349-302-274-303-278 +sign_ed25519 selected 2 161327 +8790+2045+493+123-30+204-81+223+192-161-186-296-246+0-268 +sign_ed25519 selected 3 162089 +7540+990+161-99-375-616-865-744+5579+1819+348+0+90-417-86 +sign_ed25519 selected 4 161633 +9521+1728+495+305-139-120-162+0+43-140-200-245+13-14+153 +sign_ed25519 selected 6 161833 +7909+1445+369+636+3+0-207-485-299-183-209-431-170+6336+1864 +sign_ed25519 selected 8 161917 +8174+1736+760+524+234+283+308-107+0-387-423-253-225-136-131 +sign_ed25519 selected 11 161773 +8180+927+379+773+0+4+338-159-490-328-135-410+206-122-291 +sign_ed25519 selected 14 161798 +7782+1228-56+6674+2662+1144+370+337-43-522-386-495-137+0-59 +sign_ed25519 selected 18 161627 +8687+1399+501+0+14-180+76+8+11-269-30-152-214-29-191 +sign_ed25519 selected 23 161794 +7605+1214+0-178-195-163-106+177+4457+3784+589+199-310-221-370 +sign_ed25519 selected 29 162111 +7903+1242+194+452+345+117-175+0-158-390+153-375-451-545-723 +sign_ed25519 selected 37 161622 +8507+1726+471+32+127+229+0-196-512-630-479-178-107-282+6318 +sign_ed25519 selected 47 161643 +8468+1686+13-182-27-187-104-234-244+332+0-77+74+184+99 +sign_ed25519 selected 59 164736 +8214+2104+443+207+373+428+254+0-229-183-417-275-301-209-355 +sign_ed25519 selected 74 164716 +7623+1351-22+12274+3479+863+911+313-83-524-14+0-234-47-129 +sign_ed25519 selected 93 167686 +8184+892+433-251+102+257-141+0-63-45+249+99-119-153-192 +sign_ed25519 selected 117 167708 +8367+1100+158+172-36-164-527+6605+1959+0-107-186-98+165-157 +sign_ed25519 selected 147 167790 +8655+1395+527+578+101-357+38-13-86+262+0-321-46-161-35 +sign_ed25519 selected 184 170311 +8258+2298+1012+0-176-37-105-101-305-175-664+5625+2524+864+824 +sign_ed25519 selected 231 173314 +8487+1242+8+235+473+55-632+0-375-519-324+299-60-252-163 +sign_ed25519 selected 289 173462 +7881+1141+455+633+165-16-74-240-16-351-326+0+10-232+4131 +sign_ed25519 selected 362 179441 +8215+1372+673-176+108+110+0+252-48+149-399-398-494-443-565 +sign_ed25519 selected 453 182025 +8596+1148+583+0+216+14-142+329+137-16-320-206-342-526-298 +sign_ed25519 selected 567 188039 +12623+3352+1128+427+4+20-392-178+53+0-1-129-301-462-378 +sign_ed25519 selected 709 193538 +8597+1906+470+397+34-102-63-348-322+133+0+201-111-154-83 +sign_ed25519 selected 887 202735 +12198+2870+483+0-105-47+108-101+46-393+124-205-471-455+7 +sign_ed25519 selected 1109 214387 +8270+1458+170+58-313+1+0+119-448-181-50-520-198-249+6349 +sign_ed25519 selected 1387 225360 +8444+2276+1063+461+415+221+279+0-226-327-194-290-229-102-206 +sign_ed25519 selected 1734 240541 +7607+1343+333-61-506-254-542-620+6371+2486+326-11+17-34+0 +sign_ed25519 selected 2168 260672 +8539+1066+243-223-122-104+329+260+0+79-66-13-391+194-76 +sign_ed25519 selected 2711 283649 +13172+3192+802+2+50-174-228+0+68-268-37-325-217-162+130 +sign_ed25519 selected 3389 315956 +7982+1604+284-231-674+5297+2435+102+0+330-538-594-719-641-485 +sign_ed25519 selected 4237 353563 +8234+1007+298+83-44-344-231-687+5687+1736+164-77-50-87+0 +sign_ed25519 selected 5297 402655 +8607+1608+387-154-360-315-463-330+6523+2478+89+0-536+55-107 +sign_ed25519 selected 6622 463735 +8629+662+131-326-285-254+4201+3718+529+104+0-183-258-441-55 +sign_ed25519 selected 8278 538565 +9010+1481+252+5138+1809+270+0-258-244-46+9-81-199-45-72 +sign_ed25519 selected 10348 631819 +10740+997+150-99-773-620-491-564+2227+4014+852+0-121+59-237 +sign_ed25519 selected 12936 748426 +7907+553+7532+1982+13-1002-628-1233-470-1147+5129+1673+0-631-425 +sign_ed25519 selected 16171 894262 +10472+0+5339+1011+105+146-822-582-547+5143+674-800-1378-899-1077 +sign_ed25519 selected 20214 1080123 +10916+394+240-749-936+1999+2475-27-1265-1200-956+1671+2825+0-645 +sign_ed25519 selected 25268 1309753 +13151+3968+239-539-1176+1713+2494+0-771-957+1810+2618-688-755-812 +sign_ed25519 selected 31586 1597055 +11043+0-1419+5234+595-452-1320+4434+552-543-1536+4267+475-610-1389 +sign_ed25519 selected 39483 1955307 +9074-1200+5514-263-1597+12542+0-1089+887+1244-1061+691+807-1675-2041 +sign_ed25519 selected 49354 2403382 +7390+681+416-3127+1551-1844-963+479-2156+0+74-2203+2204-2198-102 +sign_ed25519 selected 61693 2963674 +16233+1501-1887+2425-2232+1952-2021+1267-2318+3449-830-466+583+0-374 +sign_ed25519_open selected 0 537470 +72906+3639+946+0-560-499-691-674-556-790+3559+11383+2270+653-38 +sign_ed25519_open selected 1 538593 +13361+3020+903+26-441-463+6501+6288+1367+0-47-22-346-408-568 +sign_ed25519_open selected 2 534679 +15948+11223+6471+1836+283-251+0-121-260-168-410-418-381+6047+5792 +sign_ed25519_open selected 3 539001 +9117+2894+877+0-159-102-205-222+6758+6605+1906+282-188-275-505 +sign_ed25519_open selected 4 547987 +9583+2506+152-342+7870+5046+1346+821+0-356-640-550-948-755-947 +sign_ed25519_open selected 6 541837 +9128+3160+504+0-616-672-982-1054-1000-1133-1117+6903+5076+1846+352 +sign_ed25519_open selected 8 542425 +9720+2970+821+0-205-190+7362+7522+1712+899-11-185-497-465-542 +sign_ed25519_open selected 11 538837 +9471+9714+6424+2303+552+0-225-237-292-343-326-358-365+6398+5705 +sign_ed25519_open selected 14 546034 +9315+2442+1037+515-101-769-844-834+7523+7103+1223+0-594-614-790 +sign_ed25519_open selected 18 535431 +8976+2795+798-277+8035+5193+1193+543+0-374-621-884-767-903-785 +sign_ed25519_open selected 23 537724 +9841+2980+818+22-410-543-692-712-713-706-719+7026+7154+1935+0 +sign_ed25519_open selected 29 533839 +9140+3042+630-238-1143-1266+6051+6237+1730+285+0-586-641-578-595 +sign_ed25519_open selected 37 541139 +9508+3242+8294+6432+1374+227-181-100-188-275-114-196+0-220+7544 +sign_ed25519_open selected 47 537363 +9351+3577+524-33+0-476-550-640-595+6229+6466+2176+613-254-214 +sign_ed25519_open selected 59 542035 +9422+2933+818+375+6626+5293+1652+0-515-572-868-694-576-524-703 +sign_ed25519_open selected 74 542800 +17503+6085+1483+0-677-803-1034-1234-1200-1275-1323+4850+5813+1851+115 +sign_ed25519_open selected 93 551443 +10737+3361+1186+0-546-673-664+8159+5215+1215+304-125-125-438-257 +sign_ed25519_open selected 117 545150 +9027+2968+9196+6630+2155+0-163-388-527-574-651-713-809+6773+6141 +sign_ed25519_open selected 147 545926 +9063+2801+398-139-517-1093-1181-1090-1158+8003+5185+499+668+0-525 +sign_ed25519_open selected 184 547226 +9541+3018+871-99+8179+7441+2397+561-138+0-166-220-446-464-526 +sign_ed25519_open selected 231 546690 +9833+3179+1108+52-225-858-641-773-807-844-858+6948+5996+1621+0 +sign_ed25519_open selected 289 544944 +10281+3145+949+507-253-516+6369+6265+1921+0-492-889-934-926-934 +sign_ed25519_open selected 362 546471 +9206+10721+6555+1746+285+0-241-235-441-410-530-561-628+6385+5960 +sign_ed25519_open selected 453 549242 +9441+2888+692+0-108+38-85-294+7030+6621+721-183-428-400-623 +sign_ed25519_open selected 567 554370 +8432+2758+2704+6792+5064+909-87+0-505-367-679-904-1080-1085+1698 +sign_ed25519_open selected 709 554392 +8921+3188+1076-37-380-652-643-579-589+4233+7436+1903+368+0-654 +sign_ed25519_open selected 887 561825 +9773+3118+593+0+7483+6266+1765+632-9-135-41-319-350-344-339 +sign_ed25519_open selected 1109 568140 +9176+2494+1043-192-131+0-415-517-470-845+6671+5925+1297+95-678 +sign_ed25519_open selected 1387 573388 +9260+3352+663-143-492+7059+5943+1772+217+0-298-768-1114-1133-994 +sign_ed25519_open selected 1734 583816 +10702+3053+907-180-921-847-952-968-1035-997+7368+6990+3019+1370+0 +sign_ed25519_open selected 2168 593801 +10082+2990+649+131-52+10878+3423+1608+0-502-940-892-923-965-988 +sign_ed25519_open selected 2711 597730 +9515+3230+730+0-887-851-887-789-761+7045+6492+2186+873-256-488 +sign_ed25519_open selected 3389 619275 +9020+2687+0+6125+5544+1175-312-855-1017-1079-946-971-1191+6711+5706 +sign_ed25519_open selected 4237 637932 +11942+2992+1044+686+0-374-435+11406+3139+622-220-565-391-348-319 +sign_ed25519_open selected 5297 663529 +12383+5374+1164+343+0-104-240-510-510+6767+5657+1469-112-590-715 +sign_ed25519_open selected 6622 693059 +11445+2084+7151+5300+0-933-1159-1282-1476-1489-1476+5736+3848+390-911 +sign_ed25519_open selected 8278 733180 +11099+2196-251+6102+5262+1298-310-921-1143-1165-1178-1315+8838+1815+0 +sign_ed25519_open selected 10348 778725 +9770+3468+1240+6431+4999+0-1673-1866-2216-2285-2283+4943+3691-867-2032 +sign_ed25519_open selected 12936 841450 +10842+1878+11360+2677+208-874-1238-1540-1442+6224+5510+0-631-758-1155 +sign_ed25519_open selected 16171 909034 +13153+2273+0-515-1386-1362+1859+7070+1233-413-771-1086-1059+1961+7792 +sign_ed25519_open selected 20214 1006469 +11238+2054-201+9993+2057+0-893-1292-1332+8898+2147+36-1028-1199-1474 +sign_ed25519_open selected 25268 1130840 +14349+1478-1071+5735+3803+0-1534-2696-3050+6485+975-1306-2032-2046+720 +sign_ed25519_open selected 31586 1261275 +7325+55+8549+157-1979-2246-2900+6941+100-1471-2744-2747+7606+0-1720 +sign_ed25519_open selected 39483 1444844 +9743+737-1089+5757+3905+0-1973-2901+6975-13-1924-2780+4118+3398-468 +sign_ed25519_open selected 49354 1670483 +9815+932+6944+4896-491-1063+7145-527-1381-2575+6371+0-1086-1929+7371 +sign_ed25519_open selected 61693 1956945 +15800-77+220+6351+0-2135+6930-1158-3024+6235-842-2311+3179+3263-2315 +sign_ed25519 0 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 0 32 148727 +19677+2150+758+86-82+28+87+22+0-530-251-368-478-417-364 +sign_ed25519 0 0 162387 +17649+1981+4664+3367+928+199+423-513+0-21-683-647-517-495-286 +sign_ed25519 0 1 162235 +8264+1835+604+251-19+0-49+8-241+260-193-171+99-178-133 +sign_ed25519 0 2 162184 +7714+1705+775+168+0-261-196-362+7179+2586+634-93-277-8-455 +sign_ed25519 0 3 162024 +8205+1514+779+0+263+114+494-84+113-62-388-335-321-82-150 +sign_ed25519 0 4 162179 +7369+1805+655+164+0-191+160+159-340-11-308-118-109-62+6944 +sign_ed25519 0 6 162222 +8202+1676+604+807+323-350-75-342-190-260+113+0-66+260-164 +sign_ed25519 0 8 162206 +7517+1832+673+199-45-80-9+143+54+0-198-315+97-263-5 +sign_ed25519 0 11 162482 +7128+1766+797+5901+2172+434+0-78-142-286+107-242-83-476-204 +sign_ed25519 0 14 162129 +8309+1659+294+544+667-198+0-112+137-271-282-45+142-94-412 +sign_ed25519 0 18 162556 +6918+1481+0+298-116-370+32-281+4157+3021+1164-97-68-211-214 +sign_ed25519 0 23 162090 +8540+1407+536+132+5-256-99-361-184-289+123-283+114-180+0 +sign_ed25519 0 29 162130 +7749+2353+482+675-135+467-77+190-72-97+0-330-277-284+6068 +sign_ed25519 0 37 162077 +8206+1501+452-155+0-22+50-473-232-218+66-189-150+151+107 +sign_ed25519 0 47 161936 +8385+1622+516+856+400-37-145+0+186-4+4-196-86-258-71 +sign_ed25519 0 59 165766 +6883+586-517+4041+3247+767+62+0+50-222-145-138-428-766-580 +sign_ed25519 0 74 165009 +8398+1706+883+148-128+0+40-299-97-184-158-296+131+37-147 +sign_ed25519 0 93 168338 +7219+1394-178-441-228-158-377-367+5848+2170+630+416+0-103+22 +sign_ed25519 0 117 168125 +8173+1540+779+183+253+22+92-152-69+0-149-353-163-435-478 +sign_ed25519 0 147 168284 +7668+1650+234+0-130+3-368-235-420-511-792-377+3898+3369+827 +sign_ed25519 0 184 171087 +8181+2179+856+425+269-109-517+185-257-39+0-222+57-149-23 +sign_ed25519 0 231 173851 +8114+2191+415+211-240-97+334+32-154-33-172-290+117-3+0 +sign_ed25519 0 289 173462 +9846+1849+623-167-63+0-47+61-181-17+106-309-306+71+117 +sign_ed25519 0 362 180015 +7770+1741+1008+425+376+185+0+281-250-402-369-336-426-714-738 +sign_ed25519 0 453 182541 +7961+1574+6557+2730+737+321+88-259+0-113-413-162-299-358-227 +sign_ed25519 0 567 188670 +8498+1816+481+89+156+396+435-132-545-108-372-124-509+0-145 +sign_ed25519 0 709 194482 +7764+1759+756+6841+1814+188+330+0-338-693-631-348-65-457-406 +sign_ed25519 0 887 203021 +8387+1946+813+326+6+0-345-301-146-61-175+246+239-288-193 +sign_ed25519 0 1109 215012 +6946+7027+3204+488+187-581-374+95-38+21-398-302+0-413-360 +sign_ed25519 0 1387 226248 +8382+1815+302+134+0-63+68-621-212-158-205-246-528+5045+1930 +sign_ed25519 0 1734 240299 +8392+1282+869+552+201+37-5+22-226-65-159-393+0-460-119 +sign_ed25519 0 2168 261351 +7128+1170-260-740-474-227+6199+2554+327+0+259-132-247-385+30 +sign_ed25519 0 2711 284125 +8686+1804+962+280+0-247-461-411-274-466-78-260+990+5942+1142 +sign_ed25519 0 3389 316021 +8142+1860+996+461+388+427-278+47-81-88+0-290-10-302-57 +sign_ed25519 0 4237 353868 +12803+3152+1037+131-226-138-210+176-110+100-16+0+311-180-285 +sign_ed25519 0 5297 402890 +8106+7682+3390+733+231+0+158-2-110+136-43-490-413-241-221 +sign_ed25519 0 6622 464094 +10607+4423+1321+737+205+0+15-295-630-687-708-797-789-883+5453 +sign_ed25519 0 8278 539153 +8848+1090-38+103-98-311-594-369-699+2228+3761+415-177+49+0 +sign_ed25519 0 10348 632178 +11880+1021+52+410+6073+1484+0-754-1129-1073-854-969-920-426+4806 +sign_ed25519 0 12936 748335 +8449+674+0-98-125-453+2780+3503+1191+361+260-302-763-359-411 +sign_ed25519 0 16171 893345 +8483+1416-134-125-420-360+14334+1779+418-64+0-523-163+5671+1602 +sign_ed25519 0 20214 1079586 +8259+1293-540+6121+1070+0-487-780-224+5601+1257-325-551-1080+2367 +sign_ed25519 0 25268 1310263 +6574+0-1389+1354+2017-1246-1840-1372+5413+809-749-1217-1794+4657+844 +sign_ed25519 0 31586 1596962 +9272+5433+77-1057-1556+5069+203-1181-923+4366+0-391-1829+3497-176 +sign_ed25519 0 39483 1955489 +10171+1399-2264-2352+3464-578-2382+2485-1418-2767+1776+0-2393+5+629 +sign_ed25519 0 49354 2402031 +15195-11-2751+2812-2126+160+0-1732+2804-1940-2837+4312-1878+614+828 +sign_ed25519 0 61693 2961681 +8072-1492+3630-1657+3126-1272+3410-1883+251+0+702-146+1338-426-2339 +sign_ed25519_open 0 0 543558 +31950+3140+180-425-1188+6068+5985+1478+355+0-167-65-244-372-375 +sign_ed25519_open 0 1 542280 +17227+9770+5726+1678+0-502-785-1100-1018-1382-1177-1232+2714+6617+1992 +sign_ed25519_open 0 2 541513 +9893+3245+1394+0-204-551-504-531+6527+6650+1286+546-260-166-58 +sign_ed25519_open 0 3 535220 +9806+3477+895+6926+6453+1735+435-49-227-417-415+0-402-475-377 +sign_ed25519_open 0 4 541199 +10216+3530+360-52-74-193-257-447-384-350+8144+6770+1794+613+0 +sign_ed25519_open 0 6 538572 +9292+3039+774+0-682-754+6160+5898+775+262-39-360-484-428-441 +sign_ed25519_open 0 8 529658 +9816+10696+6503+1639+714+0-162-482-410-464-549-364-580+6296+5720 +sign_ed25519_open 0 11 532470 +9214+2957+1261+0-613-805-794-1002-1066+6312+5915+1561+437-298-621 +sign_ed25519_open 0 14 543280 +9114+3100+1138+235+7337+6050+1408+0-366-778-688-712-841-782-782 +sign_ed25519_open 0 18 549845 +9754+2822+687+0-415-457-765-819-894-894-911+5735+5512+958+30 +sign_ed25519_open 0 23 541338 +9744+3583+594-588-747-880+6107+5792+822+5+0-456-878-865-909 +sign_ed25519_open 0 29 541892 +10184+2981+7656+6288+1589+0-37-340-546-542-555-548-549+5001+6182 +sign_ed25519_open 0 37 534101 +9479+2731+277+0-271-596-539-524-686+6651+5635+1997+43-472-637 +sign_ed25519_open 0 47 543972 +8734+3130+674+0+7182+6337+1954+239-165-381-383-481-488-447-635 +sign_ed25519_open 0 59 539356 +11653+5180+942+0-825-877-1056-1121-1314-1495-1490+6059+5318+870+122 +sign_ed25519_open 0 74 539007 +8827+1892+783+153-236-472-234+7398+5580+1390-1+0-514-415-731 +sign_ed25519_open 0 93 542194 +10078+3171+8311+6451+2029+774+0-349-705-488-577-466-496-389+6595 +sign_ed25519_open 0 117 549417 +9302+3416+1598+97-74-107-455-500-334+6467+6328+1505+0-713-804 +sign_ed25519_open 0 147 544949 +10019+2928+672-249+7127+5521+1172+189+0-371-363-755-865-1008-1016 +sign_ed25519_open 0 184 548700 +12590+3459+826+0-798-951-753-766-965-758-788+6476+5256+1530+38 +sign_ed25519_open 0 231 551187 +9809+3269+716+58-190-70+7146+5667+1251+0-357-480-452-483-497 +sign_ed25519_open 0 289 545706 +10096+10649+6385+2668+881+0-255-461-546-577-592-577-592+6263+5101 +sign_ed25519_open 0 362 551060 +9712+3935+1699+434-364-249-399-281+7511+6138+1735+0-534-670-257 +sign_ed25519_open 0 453 554110 +9267+3221+1187+8464+6033+1784+186+0-334-447-424-63-192-201-216 +sign_ed25519_open 0 567 558906 +8718+3184+859-258-851-996-984-985-1382-1144+6465+4857+1407+109+0 +sign_ed25519_open 0 709 556436 +9405+3036+673-172+0+9771+6242+1804+29-33-23-81-156-173-188 +sign_ed25519_open 0 887 557970 +12487+3733+809+0-503-528-551-797-861-991-975+6864+5341+980+189 +sign_ed25519_open 0 1109 568069 +8863+2753+206-325-96-166+6663+6466+2041+519+0-207-508-707-864 +sign_ed25519_open 0 1387 565886 +16763+6491+1377+335+0-668-663-521-346-814-859-945+7117+3762+773 +sign_ed25519_open 0 1734 583549 +9166+3367+1134+0-508-769+6793+5955+1482+176-374-314-482-472-665 +sign_ed25519_open 0 2168 584845 +15961+6288+1138+28+0-862-1136-1238-1447-1484-1617+5401+5044+918-598 +sign_ed25519_open 0 2711 597560 +9123+2022+605-624-892+6578+5752+1199+151-42+0-272-337-397-322 +sign_ed25519_open 0 3389 627346 +9305+2821+665+129-58-315-201-685-843+2216+7782+1958+0-350-714 +sign_ed25519_open 0 4237 640571 +9034+2402+0+7890+5049+587+0-767-799-1018-953-1288-1226+7134+4092 +sign_ed25519_open 0 5297 655913 +8843+3303+614+35-453-789+10458+2759+583+0-293-559-827-656-757 +sign_ed25519_open 0 6622 693831 +11590+3054+1241-245+388-143-367-321+10016+2479+0-471+1851-1323-1413 +sign_ed25519_open 0 8278 735049 +12388+3122+806+0-453-567-377-576+6338+5809+998+253-298-271-565 +sign_ed25519_open 0 10348 779721 +16164+3238+30-773-1047-934-987-1076+6608+5751+1999+630-256+0-484 +sign_ed25519_open 0 12936 838831 +9325+1918+44-900-984-1004+9580+6695+1273-158+0-341-477-586+6807 +sign_ed25519_open 0 16171 911576 +10815+2313+176-289+10640+5801+0-814-840-984-1116+9076+1614-344-611 +sign_ed25519_open 0 20214 1001429 +13624+5345+466-705-936-886+6994+5598+0-916-886-1532-1399+8750+1411 +sign_ed25519_open 0 25268 1120960 +6348+8294+4892+0-1782-2096-1789+9334+1146-1143-1971-1857+3726+4474-306 +sign_ed25519_open 0 31586 1254310 +11530+4546-509-1518-1957+5568+5037+0-1033-1755+6119+5182+909-1457-2299 +sign_ed25519_open 0 39483 1452175 +8124+337+9150+1076-1954-1559+4796+2363-1350-1546-2427+6879+0-993-1842 +sign_ed25519_open 0 49354 1672029 +7661+8929+736-2367-2428+6304-219-1565-2412+6702+0-2361+3424+3204-889 +sign_ed25519_open 0 61693 1949202 +10973+8868+3821-147-1822+7749+0-1690+6611-228-2815+7131-902-2338+4795 +sign_ed25519 1 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 1 32 148877 +19661+2134+0+123+72+3622+3341+109-125-646-534-587-168-427-505 +sign_ed25519 1 0 161441 +11676+1467+485+253+184-61-75+0-274+68+115-311-453-499-227 +sign_ed25519 1 1 161829 +7163+1126+692-18-187-66-126-126-236+0-211+2215+4411+669+85 +sign_ed25519 1 2 161320 +9163+2183+324+296+0+79-40-364-328-61-186+131+290-94-165 +sign_ed25519 1 3 161656 +7984+1414+535+320+140+195+0-160-168+90-290-303-684-371-399 +sign_ed25519 1 4 161500 +8415+7186+2602+768+104+86-21+45-206-125-72-106-204+0-156 +sign_ed25519 1 6 161734 +8456+2448+523-14+174-151+0-2+30+15-458-275-157+127-815 +sign_ed25519 1 8 161829 +7914+1917+616+354-134-5+606+5966+2217+0-558-332-476-369-345 +sign_ed25519 1 11 161546 +8363+2021+585-5+111+173-84+30+0-176-67-302-27-4+109 +sign_ed25519 1 14 162081 +7447+1665+323+208-139+0-242-137-281-724-551-24+3710+2753+173 +sign_ed25519 1 18 161573 +8148+1645+240+108+107+0-327-306-344-39+133+291-210-488-420 +sign_ed25519 1 23 161761 +7757+1333+0-77+174+294+72-354-497+134+44-429-198-81-143 +sign_ed25519 1 29 161544 +8535+2089+6352+2306+663+0-174+53-114-121+350-101-51-4-33 +sign_ed25519 1 37 161610 +8307+1409+80+165-6-479-206-3+45-131+4+3-222-232+0 +sign_ed25519 1 47 162031 +8222+1510+465+291-205-543+0-303+5392+2169+356-112-256-605-263 +sign_ed25519 1 59 164658 +9034+1648+536+227+54-290-13+455-40-135-125+0-118-121+237 +sign_ed25519 1 74 164271 +8450+1296+397-273-237-421+129+276-169-21+0-143-342+6170+2559 +sign_ed25519 1 93 167591 +8248+1744+298+545+172+150-214+163-169-314-371+0-15-664-635 +sign_ed25519 1 117 167456 +8463+1250+551+646+358-48+53-67+182+0-200-161-472-87-177 +sign_ed25519 1 147 167449 +8164+7028+3018+563+398-100-70+0+89-40-212-25-299-129+5 +sign_ed25519 1 184 170582 +8501+1361+219+48+553+444-140+0-76-331-297-58+173-117-281 +sign_ed25519 1 231 173550 +7943+1855+276+0-121+6014+1969+216+288-19-302-465-220-384-400 +sign_ed25519 1 289 173476 +8465+1008+606+183+124+465+203-374-548+0-381-340-229-655-233 +sign_ed25519 1 362 179236 +8484+1367+374+296-581-770-909-513+7298+2675+1018-110-389-262+0 +sign_ed25519 1 453 182125 +8114+1512+839+375+182-35-42+221+0-5-242-250+256-268-316 +sign_ed25519 1 567 188302 +8296+1760+175-288+0-422-329-482-300+4382+3521+774-12+9-431 +sign_ed25519 1 709 193630 +8512+2040+1213+92+377+163-187-70-171+0-130-422+55-208-64 +sign_ed25519 1 887 202658 +8295+1545+738-229-342+77-67-453+3054+4474+1602-50-257+0-153 +sign_ed25519 1 1109 214242 +8232+1304+57+304-150-153+201+0+96-490-323-46+70-154-422 +sign_ed25519 1 1387 225912 +8239+1193+444+130-144+5564+2193+304+0-23-222-243-484-207-508 +sign_ed25519 1 1734 240203 +8278+989+232-178-315+61-498-170+47-203-245+0+84-455+2 +sign_ed25519 1 2168 260120 +9242+2213+755+376+171-104+89-20+27-276-138-337-307-135+0 +sign_ed25519 1 2711 283947 +8614+1120+502-35-131+0+4999+1838+180+389-288-191-330-224-383 +sign_ed25519 1 3389 315564 +8734+1615+244-122+0-167-731-385-348-124-212+5395+2226+706+449 +sign_ed25519 1 4237 353543 +8243+1311+224+274+0-354-560-457+56-73-188-90-359+6639+949 +sign_ed25519 1 5297 402172 +9136+1665+730+0-209+285-152-504-548-377-372-511+4092+3762+1099 +sign_ed25519 1 6622 463469 +8452+1549+330-313-323-474-87-424-232-277+5912+3020+691+75+0 +sign_ed25519 1 8278 539191 +8226+900+125-256-672-741+5638+2143+492+0-166-85-278-388+30 +sign_ed25519 1 10348 632293 +7820+6785+2160+155+0-467-898-651-472-387-650+3674+2801+180-442 +sign_ed25519 1 12936 748187 +8242+819-177+0+6245+1118-313-617-520-508-549-693+2478+3438+795 +sign_ed25519 1 16171 893507 +8403+1105-198-587+7606+2466+0-247-526-673-350+6281+1707+65-498 +sign_ed25519 1 20214 1079911 +8341+6352+1908-725-685-1185-600+4318+561+0-737-600-762+5165+1611 +sign_ed25519 1 25268 1309978 +7037+0+5233+1783-460-844-1758+5041+586-1065-1502+1391+2195-922-1371 +sign_ed25519 1 31586 1597081 +12622+673-1285-1473+4301+0-983-1002+4328+153-1001-1073+4309+382-883 +sign_ed25519 1 39483 1954561 +15673-323-1164+4696-49-1425+4065+0-1377+2100+2823-558+1666+2597-628 +sign_ed25519 1 49354 2402806 +8527-2505+2893-864-2501+2424-1241+1116+1208-2533+3377-1208+0+196-1993 +sign_ed25519 1 61693 2964516 +4323+2629-1684-732+0+329+41-644-291-3486+2382-2158+1212-3137+3511 +sign_ed25519_open 1 0 528769 +24865+3062+7443+6708+1665+138+0-437-515-535-483-435-351-433+6879 +sign_ed25519_open 1 1 540356 +8472+2325+0-893-1037-1181-1417-1328-1388+1231+7995+2353+613+125-989 +sign_ed25519_open 1 2 543243 +9782+3325+383-300-677+7496+5948+1141+0+20-342-470-450-511-511 +sign_ed25519_open 1 3 537300 +16085+6980+1920+715+0-485-346-544-552-634-606-700+6884+5987+1013 +sign_ed25519_open 1 4 539486 +9684+3371+1190-34-622-713-954+6280+6607+2116+828+0-391-620-641 +sign_ed25519_open 1 6 541300 +9016+2685+0+7463+5867+1201+126-638-898-1023-1042-1088-1042-1071+1566 +sign_ed25519_open 1 8 539296 +9811+3447+110-590-750-705-512-795-777-843+6126+5160+1009+256+0 +sign_ed25519_open 1 11 545624 +8733+2624+780+0-381+7126+6005+1419-90-865-1417-1505-1574-1574+5862 +sign_ed25519_open 1 14 538709 +19567+7186+2409+1158+0-166-894-904-908-1006-954-865+6020+5481+1270 +sign_ed25519_open 1 18 534907 +9254+2856+562-66-904-1132-1058-1042+8417+5933+1512+513+0-274-331 +sign_ed25519_open 1 23 537517 +9126+2851+340+8310+6166+2149+765+0-434-286-734-1069-1039-1000-992 +sign_ed25519_open 1 29 540714 +9059+3327+752+352+0-409-429-484-551-508+6911+5412+1463-189-566 +sign_ed25519_open 1 37 536614 +9809+2639+913+250-57-23+8210+5906+1496+0-648-1007-1035-1113-1108 +sign_ed25519_open 1 47 542168 +10089+10065+6531+3026+776-22+0-203-133-262-252-160-248+7139+6716 +sign_ed25519_open 1 59 542950 +8912+2671+572+0-582-1036-875-516+6765+8822+1882+276-109-510-670 +sign_ed25519_open 1 74 543806 +9081+3163+286+6776+5620+1330+912+0-460-323-661-649-941-970-893 +sign_ed25519_open 1 93 542992 +9014+3413+1392+0-750-876-624-704-640-778+6855+6522+1617+600-504 +sign_ed25519_open 1 117 545271 +9092+2085+426-700-1200-1205+6831+5206+1045+172+0-359-266-410-451 +sign_ed25519_open 1 147 544147 +9654+10384+6005+2059+880+0-305-556-422-690-606-713-797+7387+4520 +sign_ed25519_open 1 184 541202 +8749+2741+1052+0-172-254-226-150+7381+5565+1550+429-300-396-388 +sign_ed25519_open 1 231 544565 +9644+3495+1020+7230+6079+1954+492+0-333-404-540-645-661-715-752 +sign_ed25519_open 1 289 543908 +10021+2798+946-17+0-305-349-218-268-315+7169+5577+1531+343-441 +sign_ed25519_open 1 362 544749 +10220+3860+1472-22+0+7439+6683+1485+637-63-337-534-418-323-430 +sign_ed25519_open 1 453 550922 +9525+13250+3283+539+0-307-207-308-625-695-620-684+6457+6543+2370 +sign_ed25519_open 1 567 545684 +10177+3679+1222+769-71-105+0+7270+6641+1365-135-140-372-499-665 +sign_ed25519_open 1 709 552013 +9096+3744+7849+6092+1586+647-89+0-272-570-649-776-637-753+5949 +sign_ed25519_open 1 887 558327 +9488+2908+865+305+0-173-259-390-523+6334+4859+777-322-382-631 +sign_ed25519_open 1 1109 574735 +10397+3293+116-524+9661+2988+1106+92+0-366-443-400-573-477-619 +sign_ed25519_open 1 1387 568033 +9230+3053+838+0-267-406-648-697-863+6416+5168+1482+93-600-677 +sign_ed25519_open 1 1734 583503 +9942+3346+1464+665+7196+6376+1477+0-252-395-624-735-784-740-784 +sign_ed25519_open 1 2168 591709 +11834+3232+656+229-261+0-175-222-241+6961+6004+1208-76-304-622 +sign_ed25519_open 1 2711 604280 +8843+2101+0+7675+5667+861-951-1524-1739-1711-1704-1711-1704+5259+5378 +sign_ed25519_open 1 3389 614902 +9567+3064+682+0-440-540-507+6659+5992+1574+167-552-455-514-587 +sign_ed25519_open 1 4237 635233 +9562+11697+2805+891+0-552-623-561-561-558-561+10772+3330+934-105 +sign_ed25519_open 1 5297 658110 +9571+3038+604-495+9902+1897+0-77-280-409-519-548-355+6209+5492 +sign_ed25519_open 1 6622 690098 +9055+2668+923+314+0-256+11757+4102+1410-289-985-913-1009-1163-1163 +sign_ed25519_open 1 8278 724753 +12332+2873+1001+611-399-486-556+10001+3535+1094+0-415-690-805-815 +sign_ed25519_open 1 10348 774720 +12338+3317+320+0-727-657-843+11012+3011+455+251-79-272-570-685 +sign_ed25519_open 1 12936 833272 +11820+2083+0-218-376+6713+5231+1136-297-585-1070-1044-1046+7501+4913 +sign_ed25519_open 1 16171 911802 +10628+1979+76+11160+3435+0-445-1387-1528-1467+10209+2551-118-897-1307 +sign_ed25519_open 1 20214 1007062 +11922+2252+0-1457-1260+5590+5080+8-773-1331-1488-1510+8510+1345-1184 +sign_ed25519_open 1 25268 1123780 +15906+6118+1136-338-529-966+9219+1605+0-801-1027-1054+9291+2409-88 +sign_ed25519_open 1 31586 1261424 +10009+999-1394-2308+5046+3170-719-1606-1900+4447+3630+0-1511-2098+476 +sign_ed25519_open 1 39483 1442465 +8786+8657+3625-565-662-996+7514+0-1282-1634+7414+541-1445-2116+5884 +sign_ed25519_open 1 49354 1680058 +14984+3819+213-1958+6198+1396-1589-2570+6952-40-2510-3062+7579+0-2344 +sign_ed25519_open 1 61693 1961433 +10329+8530-1227-4085+4795-2009-4041+4133+509-1884+0+3311-1521-3857+12918 +sign_ed25519 2 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 2 32 148543 +30104+2310+864+103+228-41-119-162-141+1+0+18-144-143-39 +sign_ed25519 2 0 164095 +20085+3232+1865+1409+450+256-181-517-686-274-513+0+360-329-444 +sign_ed25519 2 1 164917 +8587+1550+181+9179+1439+46+372-381+0-507-279-853-968-494-666 +sign_ed25519 2 2 164281 +9228+2737+837+287+852+735+0+25-87-105-164-14-89-294-88 +sign_ed25519 2 3 164728 +8446+2695+500-132-575-577-737-651+6133+1703+585-406+0-286+204 +sign_ed25519 2 4 164212 +8833+2450+464+539+320+274-197-731-90-536-91+4-56+0-563 +sign_ed25519 2 6 164546 +8160+2011+11+278-249-315-451-30-316+0+226-213-508+6294+3333 +sign_ed25519 2 8 164445 +9087+2235+1429+1162+408+132+71-127-169+0-647-222-510-488-213 +sign_ed25519 2 11 163953 +9746+3147+1359+799+398-133-106-34-50+0+71-572-96-189+33 +sign_ed25519 2 14 164559 +9231+2320+7986+2351+906-21+0+281+31-531-365-548-692-603-857 +sign_ed25519 2 18 164388 +9548+2476+1081+63+245+117+655-209-489-127-513-211+0-289-655 +sign_ed25519 2 23 164705 +8929+1364+515-212-367-172+0+6574+2368+1178+405-122-761-477-587 +sign_ed25519 2 29 164514 +9369+2617+1172+1232+390+577-148-66+0-402+117-368-408-507-556 +sign_ed25519 2 37 164545 +8734+2260+959+0-157-353-657+149-568-926-1068-888+6936+1974+1053 +sign_ed25519 2 47 164814 +8501+2528+1057+31-466+317+242+394-39+0-410-557-850-705-651 +sign_ed25519 2 59 167599 +8830+2900+953+313+328-19+238-117+81-54-34-281-176+0-351 +sign_ed25519 2 74 167398 +13386+3550+1638+1209+200+0+220-176-207-170-520-2-253-369+143 +sign_ed25519 2 93 169986 +9407+2754+1317+640+483+0+166-85-478-375+206-472-842-233-315 +sign_ed25519 2 117 170502 +7851+2003+1170+57+5875+4088+1164+0-523-198-37-1268-519-793-890 +sign_ed25519 2 147 170429 +11680+2711+859+372+227+675+0+0-333-195-179-378-115-598-297 +sign_ed25519 2 184 173938 +8665+2412+1039+165-234-406-255-537+6158+2297+718+0-315-325-752 +sign_ed25519 2 231 176401 +9016+2667+958+636+307-449+0+120-409-369-39-313-764-433+4 +sign_ed25519 2 289 176736 +8143+2190+874-208-1042-966-593-762-352-957+3049+4614+831+123+0 +sign_ed25519 2 362 181606 +13190+3507+1542+1120+437+461+0-334-60+3-63-467-214-502-192 +sign_ed25519 2 453 185626 +8505+1591+444+28+0-9-461-631-1021-891-939-1214+6257+2365+184 +sign_ed25519 2 567 191060 +8596+2162+933+295+85+23-26-146+139-329+0-465-201-564-559 +sign_ed25519 2 709 197046 +8131+1947+933+0-199-202-383-619-1012-557-932+5013+3901+1029+234 +sign_ed25519 2 887 205121 +9021+2488+1729+207+269+0-462-365+279+4-277-217-257-243-387 +sign_ed25519 2 1109 217483 +8527+1743+308-577-464-140+0-383-903+5979+2357+759+149-212-1164 +sign_ed25519 2 1387 228637 +9220+2938+1125+489+504+105+363-86-638-274+0-213-273-656-51 +sign_ed25519 2 1734 243131 +8430+2573+563+4071+4514+1590-24+366+0-277-168-116-867-804-194 +sign_ed25519 2 2168 263433 +8763+2180+1175+529+0-492-160-380-534-503-404-163+6805+3460+1126 +sign_ed25519 2 2711 286411 +9131+2853+1116+618+602+72+191-407-47+0-65-420-529-587-420 +sign_ed25519 2 3389 318519 +8654+8811+2807+1190+237-72-310+0+92+294-560-694-552-396-506 +sign_ed25519 2 4237 355746 +9146+3158+1049-98+6869+2707+970+288+0-5-207-146-464-127-605 +sign_ed25519 2 5297 405238 +8978+2579+1400+579+4556+4380+2035-120-85-9+0-186-725-685-661 +sign_ed25519 2 6622 466909 +8536+1660+0+5601+3856+1212+287+66-628-1017-827-1175-1247-1528-1681 +sign_ed25519 2 8278 541517 +12754+4374+763+586+0-63-624-800-524-673-515-1078+6215+2169+371 +sign_ed25519 2 10348 634741 +8620+1108+45+646+0-329+6222+2287+595-488-704-788-1363-1108-1162 +sign_ed25519 2 12936 750419 +9848+1501+852+116-347+0-126-262+7091+2552+223-682-820-1118-872 +sign_ed25519 2 16171 895718 +12421+2671+347-146-323-621-543+6738+2364+130+0-221-700-899+6241 +sign_ed25519 2 20214 1082392 +8714+664+0-957+6975+1910-422-618-1527-1331+6036+1708+566-325-565 +sign_ed25519 2 25268 1311634 +8641+1641+0-1231+5771+1102-777-1623-1627+5530+1506-390-785-1186+5059 +sign_ed25519 2 31586 1600461 +8574+0+6547+1029-1206-2658+3288-272-1157-2982+4077+149-2101-2492+3574 +sign_ed25519 2 39483 1957771 +8711+5120-1002-2666+3166+0-2067+1584+1480-1029-2829+3166-991-2754+2906 +sign_ed25519 2 49354 2404868 +11029+641-2716+1852-94-2992+2697-1826+839+0-2207+3742-1189-2799+3036 +sign_ed25519 2 61693 2965044 +8495-372+3345-1970+0-590+370-110+745+18-1671+3087-2032+2835-2276 +sign_ed25519_open 2 0 541151 +18212+828-1880-2646-3001-3531-3498+4143+3678+8848+0+2237+934-1065-2084 +sign_ed25519_open 2 1 541621 +10170+3308+8334+6803+2280+1141+0-690-1005-1039-1009-1081-1104-1095+6720 +sign_ed25519_open 2 2 535433 +9184+2705+1008+0-457-518-714-681-1112+2045+8723+2519+119-440-1013 +sign_ed25519_open 2 3 543091 +9564+2340+390+0-614+7132+5416+1656+86-213-547-708-608-738-618 +sign_ed25519_open 2 4 544750 +15764+7014+1716+65+0-211-236-381-23-130-113-592+7071+6754+1439 +sign_ed25519_open 2 6 542750 +9456+2923+1101-120-220-394-374+8119+6915+1835+811+0-805-869-863 +sign_ed25519_open 2 8 540630 +9126+2214+8003+6183+1369+0+24-264-644-674-662-515-634-676+5629 +sign_ed25519_open 2 11 543898 +9529+2997+1291-69-68-213-331-422-383+2254+9741+2269+356+0-79 +sign_ed25519_open 2 14 536784 +8798+2611+456-166-564+6359+5621+1630+571+0-450-608-511-521-585 +sign_ed25519_open 2 18 540592 +15159+6766+1730+873+0-32-253-365-423-424-406-441+6725+5645+2727 +sign_ed25519_open 2 23 532413 +8841+2493+778+66+0-689-1069-1082+7575+3880+605-428-556-374-574 +sign_ed25519_open 2 29 539644 +9438+3655+717+8170+6166+1986+916+0-42-711-860-1054-1081-1065-1131 +sign_ed25519_open 2 37 534796 +9506+3740+1114-257-212-468-647-580-143-665+7316+6790+1344+198+0 +sign_ed25519_open 2 47 545373 +8304+1879-218-497-1131-1022+9529+5578+359-824-909-1523+2788+2236+0 +sign_ed25519_open 2 59 551295 +8619+9295+5852+1732+0-1030-1209-1269-1284-1343-1415-1418+4693+4343+448 +sign_ed25519_open 2 74 537116 +9263+1980+445+0-305-467-508-337+7608+6901+1905+609-72-373-450 +sign_ed25519_open 2 93 542752 +9206+3480+930+13082+7078+1566+459+0-216-403-555-395-620-783-601 +sign_ed25519_open 2 117 548187 +11792+3012+653+0-348-501-645-547-651-734+6809+5639+1690+4-393 +sign_ed25519_open 2 147 536022 +9747+3075+708+173-176+7247+6572+1562-176+0-508-590-608-577-577 +sign_ed25519_open 2 184 545133 +9275+11159+3243+187+0-337-445-530-493-371-460-533+6526+5600+1549 +sign_ed25519_open 2 231 550289 +9660+2765+448+0-539-475-696+6785+6144+1894+132-884-963-1274-1269 +sign_ed25519_open 2 289 545509 +9112+2413+7490+5716+1485+522+0-561-269-605-471-689-798-762+5417 +sign_ed25519_open 2 362 551815 +9777+3055+1020+0-313-521-216-641-587+7347+6008+2070+443-305-229 +sign_ed25519_open 2 453 551401 +9163+2726+1016+0+6994+6663+1478+270-537-768-905-961-928-1020-1012 +sign_ed25519_open 2 567 547324 +10019+3650+668+0-11-477-705-729-461-767-566+6515+5518+2549+1013 +sign_ed25519_open 2 709 557632 +8648+2616+391+179-251-965+7285+5392+1084+0-748-1292-1724-1708-1705 +sign_ed25519_open 2 887 567392 +8792+11000+6053+1492+0-520-690-977-1262-1338-1318-1425+6660+5291+1168 +sign_ed25519_open 2 1109 565228 +9308+3324+2172+156-466-414-811+7475+6112+2027+0-433-732-427-529 +sign_ed25519_open 2 1387 571210 +9133+5455+8209+2145+371+0-378-483-349-364-528-496-542+7502+3378 +sign_ed25519_open 2 1734 585831 +8748+2649+1000+0-343-587-563+7277+6168+1956+686-352-365-922-981 +sign_ed25519_open 2 2168 592501 +9558+10565+5228+1114+0-643-705-599-739-812-820-812+6040+5343+967 +sign_ed25519_open 2 2711 608076 +9653+3842+1199+0-486-555+6720+4742+1135+37-409-305-468-859-733 +sign_ed25519_open 2 3389 622522 +12539+5264+1378-14-509-344-587-809-824-1051+6916+5459+1129+323+0 +sign_ed25519_open 2 4237 638909 +7820+2493+0+6710+4673+29-354-1002-1000-1371-1229-1117-1125+6132+4814 +sign_ed25519_open 2 5297 658892 +9003+3162+644+26-678-741+6900+6182+1714+0-469-180-509-582-547 +sign_ed25519_open 2 6622 699241 +9457+1892+646-387-674-860-860-862+6162+5446+920+183+0-97-432 +sign_ed25519_open 2 8278 739539 +20120+7499+1361+283-238-236-569-477-353+9927+2425+680+0-357-759 +sign_ed25519_open 2 10348 780983 +15948+6579+2064+337+0-551-385-687+5896+4849+889-317-769-677-731 +sign_ed25519_open 2 12936 838132 +11512+2305+488+0-652-759-753+9851+1991+495-14-172-733-1040+5739 +sign_ed25519_open 2 16171 905292 +10099+1035-1217-1897+7153+3775+0-1075-1336-1923-2118+4171+3628+601-206 +sign_ed25519_open 2 20214 1000204 +17069+5408+1172-165-685-1087-772+10086+2271+0-747-1445-1363+7070+5467 +sign_ed25519_open 2 25268 1129994 +7774+9296+4864-394-992-1482-1865+7547+2457+0-1009-2217-2132+7203+86 +sign_ed25519_open 2 31586 1273382 +17340+5402+536-863-775+6036+4475+0-1349-1397+6589+3199-1133-1822-2340 +sign_ed25519_open 2 39483 1443250 +9534+988+9402+1526-1073-1197+6040+3784-442-1412-1400+7306+0-1462-1720 +sign_ed25519_open 2 49354 1672286 +8374+9407+249-1832-2358+6833-422-1815-2149+6904+0-1536+3935+2624-881 +sign_ed25519_open 2 61693 1956743 +10860+7018+2738-1318-2574+7171+0-3408+8010-764-2889+5737-1181-2840+2852 +sign_ed25519 3 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 3 32 148712 +15046+1599+319+0+3116+3464+1332+36-240-438-322-180-360-213-357 +sign_ed25519 3 0 165067 +19986+2772+1047+1070+503+198-374+0+4-458-95-533-445-689-224 +sign_ed25519 3 1 165500 +9178+3280+1315+359-356-340-123-22-271-873+6515+3182+1260+0-36 +sign_ed25519 3 2 165183 +9282+2754+591+115+0+0+72+422-251-206-455-556-562-340-625 +sign_ed25519 3 3 165060 +8686+2179+1418+928+127+0+492+116-211-496-357-262-168-428-148 +sign_ed25519 3 4 165348 +9326+2401+1197+142+47+0+77-389-387-132+65-849-767-878-737 +sign_ed25519 3 6 164703 +9741+4032+1572+979-379+62-297+46+218+0-227-431-23-420-412 +sign_ed25519 3 8 165803 +8975+2590+540+6437+4022+1178+620-208+0-786-786-1074-366-544-1205 +sign_ed25519 3 11 164711 +10126+3419+1254+573+0-55+577+290-339-224-115-573-363-98+26 +sign_ed25519 3 14 166298 +8428+2943+136+139+0-947-1181-1645+4634+2862+401-376-645-770-1021 +sign_ed25519 3 18 165203 +9762+3221+1676+853+897+0+402+76-462-843-609-695-547-604-1030 +sign_ed25519 3 23 165363 +9991+2975+1386+1276+676-508+0-51-619-287-426-588-731+7233+3440 +sign_ed25519 3 29 165079 +9130+3256+1499+379+233+139-117-44+0-276+84-483-751-613-811 +sign_ed25519 3 37 165222 +9394+2212+1054+895+735+9+0-505+353-69-239-305-515-201-239 +sign_ed25519 3 47 165072 +8926+2914+8969+2781+1313+388-86+0-284+463-232-693-354-425-412 +sign_ed25519 3 59 168204 +9929+3608+893+225+599-275+558-122-237-48-376-508-374+0+54 +sign_ed25519 3 74 168731 +9101+2521+1297+651+0-300+6926+2305+827-243-351-1226-1190-1095-999 +sign_ed25519 3 93 171317 +9252+2860+1139+778+224+261-345+284-118-550+0-229-353-266-414 +sign_ed25519 3 117 171874 +8760+2215+1362+349+0-957-877-919-954+2680+4014+712-62-374-1020 +sign_ed25519 3 147 170745 +9924+4002+564+349+375-51+0-30-102-376-537+188-39+303-242 +sign_ed25519 3 184 174161 +9869+3420+1060+598+0-478-577-186-145+532-113-716-846+7294+2887 +sign_ed25519 3 231 176915 +9873+2756+1101+816+789+0-85+393-329-31-252-221-640+94-433 +sign_ed25519 3 289 176877 +9468+3659+1559+647+447-87+511+0-109-197+68-155-505-409-405 +sign_ed25519 3 362 182967 +9598+2347+1210+313+191+185-596+32+0-135-239-182-520-606-858 +sign_ed25519 3 453 185375 +9684+3216+1962+1379+1013+371+549-145+0-420-91-169-662-703-565 +sign_ed25519 3 567 191776 +14272+4321+702+945+243+0-180+512+190-413-113-67-413-391-183 +sign_ed25519 3 709 197660 +9393+2496+1093+1269+867+132-66+181-122-311+0-531-781-138-385 +sign_ed25519 3 887 206650 +9778+2871+1113+977+416+25+131-312-152-672-916-820-581-595+0 +sign_ed25519 3 1109 218107 +9268+2788+1040+0+324-51-61-701-393-231-870-780+3491+4688+1827 +sign_ed25519 3 1387 228874 +10036+3473+1488+927+602-1+7-6-486+0-445+3-312-284-190 +sign_ed25519 3 1734 244417 +8648+2122+481+12+154-86-396+6512+2118+0-532-616-1014-1010-1193 +sign_ed25519 3 2168 264453 +9475+3607+1085+844+1057+344+157+0-622-649-784-903-641-846-1009 +sign_ed25519 3 2711 287792 +9267+3035+1115+498+217+124-359+122-46-413-571-632+0-909-755 +sign_ed25519 3 3389 320166 +8715+2290+331+4760+3351+1053+70+0-631-834-620-920-1211-1219-989 +sign_ed25519 3 4237 356956 +9088+2705+617-248+258+0+6600+2119+865-129-189-906-928-941-1341 +sign_ed25519 3 5297 406790 +8594+1769+86-465-1330-1153+4795+3051+583+0-296+47-770-1159-1328 +sign_ed25519 3 6622 467205 +9396+2375+904+0-122+7118+2384+956+119-305-708-741-1055-1143-1346 +sign_ed25519 3 8278 542644 +9815+6359+4522+2229+521+0-873-761-825-889-571-1287-1429+6153+2693 +sign_ed25519 3 10348 635299 +9625+3017+487-104-222-499-994+8822+2564+727+265-194+0-9-1131 +sign_ed25519 3 12936 751492 +12903+4739+1398-81+0-453-986-904-864+6824+2179+71+21-834-1091 +sign_ed25519 3 16171 896856 +9566+8571+2699+1576-1-324+52-1243+6881+2386+0-419-978-785-2052 +sign_ed25519 3 20214 1083714 +8687+1611+0-1168+2943+3145+1278-350-318-1569+2489+2419-714-1272-1896 +sign_ed25519 3 25268 1313667 +10631+1340-1157-2425+1844+1821-1064-1852-1712+1335+2010+0-1527-2489+1912 +sign_ed25519 3 31586 1601394 +9376+0+4997-43-2560-2350+4740+394-1254-2167+4659+64-1778-2038+3517 +sign_ed25519 3 39483 1959803 +8600+3735+411-3240+0+341-2989-3727+3241-1891-3730+4091-924-3825+1833 +sign_ed25519 3 49354 2406538 +5182+4078-2231+820-789-3911+2572-2221-3302+3255-1767+518+0-3172+2760 +sign_ed25519 3 61693 2966526 +22804-1725+960-130+1354-260+631+0-3669+3645-2251+2300-2823+2610-2336 +sign_ed25519_open 3 0 541024 +31006+3491+905+0-102-709-817-909+7666+6885+1161+568-500-683-786 +sign_ed25519_open 3 1 538210 +9880+2663+477+6922+6284+1450+543+0-457-491-540-467-471-568-369 +sign_ed25519_open 3 2 536962 +9155+3396+890-62-373-592-655-565-662-848+1842+8662+2312+394+0 +sign_ed25519_open 3 3 535003 +9384+2386+532+0-120-648+6735+5757+1638+296-528-903-1092-1110-1218 +sign_ed25519_open 3 4 539338 +8988+10062+5695+1345+29+0-296-415-439-792-839-816-857+6004+5207 +sign_ed25519_open 3 6 536179 +9163+3242+0-290-797-780-921-1121-1206+6626+6051+1910+610+495-294 +sign_ed25519_open 3 8 536874 +9024+2225+0+93+7506+6799+1529+70-437-688-838-1014-932-996-930 +sign_ed25519_open 3 11 539418 +12766+5068+799+0-348-778-996-1031-1050-1046-1050+6253+5556+1348+338 +sign_ed25519_open 3 14 546495 +8826+2322+468+0-99-333-295+7807+5368+1822+678-32-219-179-145 +sign_ed25519_open 3 18 543647 +9344+3093+8321+6377+1268+399+0-84-182-432-446-446-446-446+7300 +sign_ed25519_open 3 23 543950 +9313+2376+617+0-413-652-857-911-968+6166+5340+1106+25-199-568 +sign_ed25519_open 3 29 532468 +9478+2762+0-440+7462+6550+1854+231+110-552-638-847-783-864-712 +sign_ed25519_open 3 37 537017 +15366+6794+1046+908+0-90-444-432-450-438-444-432+7399+4755+795 +sign_ed25519_open 3 47 533868 +9695+3211+392-342-508-740-786+6859+5721+2581+481+0-56-47-278 +sign_ed25519_open 3 59 541205 +9692+2963+4014+8713+2437+260+0-561-745-710-568-673-712-692+6529 +sign_ed25519_open 3 74 540613 +9416+2355+0+322-73-325-431-66-208-292+8913+4484+1701+592-332 +sign_ed25519_open 3 93 546677 +9236+2474+97+220-360+7132+5332+982+0-524-262-189-589-856-847 +sign_ed25519_open 3 117 542674 +15528+6982+1904+955-182+0-227-503-381-513-560-587+6227+5982+2209 +sign_ed25519_open 3 147 541850 +8993+3157+1545+582-239-586-464+6263+5217+1840+0-513-681-804-999 +sign_ed25519_open 3 184 549406 +9043+3009+9441+6709+1274+443+0-514-585-604-781-869-911-830+6011 +sign_ed25519_open 3 231 547021 +9097+2698+211-406-826-1006-1039-1023-1049+6475+6354+1461+62+0-576 +sign_ed25519_open 3 289 540062 +9117+3151+1363+0+6826+5258+1860+777-159-530-590-756-783-576-840 +sign_ed25519_open 3 362 543607 +16419+7142+1993+328-238-545-577-792-722-739-749+6612+5679+968+0 +sign_ed25519_open 3 453 548811 +9133+2662+1001+17-321-702-931+8169+4896+797+0-382-473-713-1064 +sign_ed25519_open 3 567 554458 +8545+2158+9559+5198+439+0-649-763-822-944-1194-1023-1223+5455+5113 +sign_ed25519_open 3 709 553933 +9363+3895+1039+0-204-307-539-574+6387+6192+1075+30-577-732-646 +sign_ed25519_open 3 887 565209 +9376+3297+663+6928+5398+1430+0-201-650-445-738-738-577-823+5735 +sign_ed25519_open 3 1109 565764 +9410+2803+677-287-561-577-583-598-562+6900+6743+2060+627-148+0 +sign_ed25519_open 3 1387 569104 +9518+2502+306-383+6087+5573+1351+177+0-421-558-733-611-923-903 +sign_ed25519_open 3 1734 583922 +9100+2508+40+0-410-881-806-732-878+6925+5243+977+280-166-211 +sign_ed25519_open 3 2168 596490 +9222+1930+0+2049+8388+1468+79-935-1087-1126-1244-1308-1319-1310+6446 +sign_ed25519_open 3 2711 605697 +9114+2770+341+313-358-649-893-938+6560+5991+1212+0-80-775-908 +sign_ed25519_open 3 3389 622415 +8509+1580+7307+5560+1024-1069-1463-1407-1541-1750-1662-1639+6862+4725+0 +sign_ed25519_open 3 4237 631977 +9319+2520+1011+0-445+7018+6561+1504+33-173-112-475-548-599-598 +sign_ed25519_open 3 5297 664117 +11226+3228+723+0-340-929-1139-1286+6065+6269+1717+53-708-1531-1829 +sign_ed25519_open 3 6622 692817 +8836+9614+4290+1062+0-655-1390-1259-1624-1642+5253+4383+205-435-589 +sign_ed25519_open 3 8278 725491 +9475+2492+7981+5088+986-572-867-973-1168-1468-1574+8898+2114+0-725 +sign_ed25519_open 3 10348 783406 +8877+2959+7326+4994+594-397-510-1388-1540-1465+4958+4596+0-504-1513 +sign_ed25519_open 3 12936 839747 +8642+9012+5502+973+46-925-1211-1464-1558+9129+2349+0-613-547-1181 +sign_ed25519_open 3 16171 907574 +8090+1204-135+0-701-1101+9681+1998+50-410-1252-931-1136+10512+3244 +sign_ed25519_open 3 20214 999575 +7770+1885+10720+1834+0-895-1075-678+8323+4974+1611-424-453-761-1130 +sign_ed25519_open 3 25268 1124320 +4943+0-2415+8872+826-1859-2224-2646+722+6397+224-2434-1963-2498+4567 +sign_ed25519_open 3 31586 1268221 +4755-606+7533+0-1939+4753-325+8338+1977-1411-3053-3590+6228+1447-2254 +sign_ed25519_open 3 39483 1450301 +9171+1094-941+8582-103-1728-2485+0+5668+322-1825-2567+7316+476-1586 +sign_ed25519_open 3 49354 1679633 +7459+0+8909-635-2428-3319+6237-846-2163-3081+7741+662-2987+3768+3200 +sign_ed25519_open 3 61693 1957156 +14829+394+6651-836-2957+4225+3133-2110-3194+7288+0-2458+6624-439-2409 diff --git a/lib-25519/lib25519/benchmarks/samba b/lib-25519/lib25519/benchmarks/samba new file mode 100644 index 0000000000..133993cbf6 --- /dev/null +++ b/lib-25519/lib25519/benchmarks/samba @@ -0,0 +1,4538 @@ +lib25519 version 20221221 +lib25519 arch amd64 +cpuid 756e6547 6c65746e 49656e69 65746e49 2952286c 6f655820 2952286e 55504320 2d334520 30323231 20357620 2e332040 48473030 0000007a 00000000 000506e3 06100800 7ffafbff bfebfbff 00000000 029c6fbf 00000000 bc002e00 00000000 00000000 00000121 2c100800 0000001f 00000000 00000000 00000000 00000000 +cpucycles selected persecond 3000000000 +cpucycles selected implementation amd64-pmc +cpucycles selected 0 45 +55+25+26+0+0+0+0+0+24+0+0+0+0+0+0 +randombytes selected 0 51 +4428+65+57+31-2+0+0-1-1-1-1+1-1+1-1 +randombytes selected 1 129 +2580+66+39+4+0+3+2+4+0-2+0-3+0-1-4 +randombytes selected 2 129 +50+1-3+1+0-3+1-2-3+0-1-2-2+2+0 +randombytes selected 4 125 +16+0-3-6+0+1+0+2+1-4-2-7+0-1-3 +randombytes selected 7 129 +7-4-1-2+0-3+1-2-1-2+0+0+3+2+4 +randombytes selected 11 123 +15-1-4-4-3+0+0+1-4+0-3+1+0+0-2 +randombytes selected 17 122 +10-1+0-3+1-3+0-3-2-5+3+5+4-2+0 +randombytes selected 26 124 +14+5+3+4+4+0+1+0-3+0-4-6-2+0+0 +randombytes selected 40 123 +12-2-1+3+4-9+8+4+0-4+0-3+1+0+1 +randombytes selected 61 123 +17+1+0-3+1-2-1-1-2+0+1-2+2+2-3 +randombytes selected 92 130 +10-1-2+1-3+1-1+7+0+0-1-1+2+1-2 +randombytes selected 139 128 +33+7-2+0-3+4+0+0+1-3-1+3-1-1+5 +randombytes selected 209 129 +39+3+2+0+1-1-1+0-1+1+0+0-2+0+1 +randombytes selected 314 130 +10-2-4+0+1+0-1-2+1+0-3+0+1-3+4 +randombytes selected 472 129 +13+2+0-1+1-2+1-2+3+0-2+0-2-1-5 +randombytes selected 709 125 +16+8+0+1-1+5-1-1+0-1+2-1+2+2+0 +randombytes selected 1064 122 +37+3+2-1-2-3-2-2+1+0-4-4+2+5+6 +randombytes selected 1597 125 +42-5+4-2-4-3+40+2-3-5+36+1+0+0+29 +randombytes selected 2396 160 +111+41-29-31+1+1+0-32-33-1+2-1-32+0+1 +randombytes selected 3595 157 +17+11+1+0+1+0-1+0+0+0-3+1+1+4-2 +randombytes selected 5393 159 +16+8+0+15+9+0-2-3-2-3+3-4-1+1-1 +randombytes selected 8090 159 +33+0-7-8-3-21+16+10+0+0+5+3+2+0+2 +randombytes selected 12136 165 +14+5-27+2+0-1-1-3+8+1+5-29+0-1+22 +randombytes selected 18205 168 +10-4-10+52+18+7+7+0+1-32+6+0+0+0+0 +randombytes selected 27308 202 -23+37+17+2-19+0+0-11-30+2+1+0-7+3+2 +randombytes selected 40963 176 +5+3-1-34+3+0-35+0-32+4+3-27+4+1-32 +randombytes selected 61445 206 +75+3+35-40-64+2-65+0-60+2+31+15-40-65-2 +verify_32 selected implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 selected 32 54 +1426+46+50+20-2+0+1+0+0+0+0+0+0+0+0 +verify_32 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 0 32 77 +387+53-1+4-1+1+0-2-1-1+0+1-1+0-1 +verify_32 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 1 32 57 +69+44+36+1+0+0+0+0+0+0+0+0+0+0+0 +verify_32 2 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 2 32 77 +1259+49+32+22+15+0+1+1-2-2+0+0-1+0-1 +verify_32 3 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 3 32 57 +400+44+41+21+1+0+0+0+0+0+0+0+0+0+0 +verify_32 4 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 4 32 77 +1478+50+54+29+29+29+29-2+0-3+0+0+0-1-2 +verify_32 5 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 5 32 57 +1247+43+38+22+0+0+0+0+0+0+0+0+0+0+0 +verify_32 6 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 6 32 77 +1435+47+24+19+14-1-1-1+0+2+2-2-2-2-2 +verify_32 7 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 7 32 53 +116+25+23+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected implementation avx2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 selected 0 52 +335+72+24+0-3-1+1+0+0+1+0+0-1-1-1 +hashblocks_sha512 selected 1 51 +53+44-1+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 2 51 +4+29-2+1-1+0-1+1-1+1+2+0+0+0+0 +hashblocks_sha512 selected 4 51 +1-1+1-2+30-2+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 7 51 +0+1+1+2+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 11 51 +0+1+1+1+1+2+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 17 51 +1+1+1+2+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 26 51 +2+1+1+2+3+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 40 51 +1-2-1-1-1+1-2+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 61 51 +0+1+1+1+1+2+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 92 51 +1-1+1+0+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 139 780 +6868+114+58+5-5-9-9+1-9+0-8-7+1-10+0 +hashblocks_sha512 selected 209 779 +46+3+0+52-3+0-4+5+1-6-9-4-7+0+11 +hashblocks_sha512 selected 314 1452 +114+5+1+7+0-10-2+39+5-2-2-11-1+37-1 +hashblocks_sha512 selected 472 2125 +131+21+3+14-10-2+3-6-17+0-8+0+10+1-13 +hashblocks_sha512 selected 709 3469 +159+39+0+74+3-3-11+1-20+0-12+7-8+1-21 +hashblocks_sha512 selected 1064 5488 +115+41+41+0-9+13-5-19-37-13-12-31+4+36+10 +hashblocks_sha512 selected 1597 8158 +236+82+59+23-12+1-6-9+6-21-4+0-12-33+8 +hashblocks_sha512 selected 2396 12197 +133+91+95+29+4-18+0-17-14-9+15+103-3-22-11 +hashblocks_sha512 selected 3595 18927 +140-43+34-31+0-2+5+20-6+30-20+24+20-15-29 +hashblocks_sha512 selected 5393 28322 +222+87+54-13+0+74-24-14-3+2+23-4-28+72-23 +hashblocks_sha512 selected 8090 42419 +164-17+18+52-13+0-18+16+51+5-15+0-38-18+32 +hashblocks_sha512 selected 12136 63216 +309+24+52-8-18-8+62-61+86-8+14+56-50-27+0 +hashblocks_sha512 selected 18205 95453 +322+1+43+21-54-50-17+26+8+6-140-55-60+0-16 +hashblocks_sha512 selected 27308 143115 +365+0+82-6-24+120-51+1462+130+62-81-34-33+113-102 +hashblocks_sha512 selected 40963 215498 +193-55-82+41+168+5-138+29+0+48-150+9-106-182-12 +hashblocks_sha512 selected 61445 323294 +488-66-50+4+0+236-78-70+34-36+0-96+90-256+12 +hashblocks_sha512 0 implementation avx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 0 0 51 +96+28+2+4+23+0+0+3+0+0+3+0+0+0+0 +hashblocks_sha512 0 1 53 +32+27-2+0+2-2+3-2+3-2+0+2-2+3-2 +hashblocks_sha512 0 2 53 +4-1-1-1+31+0+1+1+0-2+0+2-2+3-2 +hashblocks_sha512 0 4 53 +6-1+0+5+0+3+2-2+0-2-2+0+1+22+22 +hashblocks_sha512 0 7 54 +1-2-2-2-1+2+2-3+0-1+1-3+2+31+27 +hashblocks_sha512 0 11 52 +7+0+0+0+0+0+4+3-1+2-1-1-1+25+23 +hashblocks_sha512 0 17 53 +2-1+0+5+0+3+2-2+0-2-2-2-2+34+25 +hashblocks_sha512 0 26 53 +7-1+0+5+0+3+2-2+0-2-2+0+1+22+22 +hashblocks_sha512 0 40 53 +3-1+1-1-1-2+5+0+3+0-2-2+0+35+23 +hashblocks_sha512 0 61 53 +6-1+0+5+0+3+2-2+0-2-2-2-2+24+22 +hashblocks_sha512 0 92 51 +27+1+1+2+4+0+0+0+0+0+0+0+0+36+25 +hashblocks_sha512 0 139 1005 +3253+121+32+5-4+0-2-8+5+2-5-6-3+60-2 +hashblocks_sha512 0 209 1004 +78+9+4+2+4+9-4-4+0-2-6-5+0+0+5 +hashblocks_sha512 0 314 1913 +85+25-5-4-16+3-10-2+44+29+0-7-6+1+19 +hashblocks_sha512 0 472 2814 +133+39+6-8+1-5+8+4+0+4-4-6-7+0-8 +hashblocks_sha512 0 709 4624 +62+41+25+59-2-10-13+1-11-1-6-7+2+2+0 +hashblocks_sha512 0 1064 7333 +105+4-4+20+2+0-28-4+4-7+2+2-1-8+0 +hashblocks_sha512 0 1597 10948 +58+15+49-15-20-12+29-12+0-13+3-7+11-9+0 +hashblocks_sha512 0 2396 16407 +42-29-9-5-12-8+5+20-19+30+26+14+0-9+34 +hashblocks_sha512 0 3595 25462 +41+12-25+3+47-24-15+25-27+10+7-25+0+0-18 +hashblocks_sha512 0 5393 38144 +46-3+31-23+31-12+10-18-8-29-11+4+37+35+0 +hashblocks_sha512 0 8090 57142 +91+13+1+17+0-16-29+55+42-4-10+58-5-17-25 +hashblocks_sha512 0 12136 85189 +43+89+3+0-19+19+34-46-23-76+21-115+62-66-15 +hashblocks_sha512 0 18205 128611 -37+97+23+44-25+89+0+158-26+123+2-17-33-15-86 +hashblocks_sha512 0 27308 192812 +97+0-107-246+2+12+13-62-48+144+8-13-65-7+79 +hashblocks_sha512 0 40963 289707 +27+83-17+3+11+78-15+0+26-74-81-11+20-68-86 +hashblocks_sha512 0 61445 434615 -206-7+46-106-48-236-35+39-116+0+110+76+31+233+33 +hashblocks_sha512 1 implementation avx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 1 0 51 +1333+52+49+22+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 1 51 +60-2+0+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 2 53 +23-4-1-3-1+1+0+0+0+0-1+1-1+1-1 +hashblocks_sha512 1 4 51 +3+0+2+34-1+1+0+23+0+0+0+0+0+0+0 +hashblocks_sha512 1 7 53 +1-2+0-4-2+0+0+1-1+1-1+1-1+1-1 +hashblocks_sha512 1 11 51 +2+3-2+0+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 17 53 +1-2+0-2-1+0+0+1-1+1-1+1-1+1-1 +hashblocks_sha512 1 26 53 +1-2+0-2-1+0+0+1-1+1-1+1-1+1-1 +hashblocks_sha512 1 40 51 +3-2-1-1-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 61 53 +1-2+0-2-1+0+0+1-1+1-1+1-1+1-1 +hashblocks_sha512 1 92 53 +1-2+0-2-1+0+0+1-1+1-1+1-1+1-1 +hashblocks_sha512 1 139 1111 +3511+71+1+6-12-16-14+2+0+12-1-9-19+1-10 +hashblocks_sha512 1 209 1108 +51-15-17+0-13+4+0+10+6+0-8+4+18+1-24 +hashblocks_sha512 1 314 2124 +140+26+14-2+8-9-9-24+12-14-1+10+0+17+0 +hashblocks_sha512 1 472 3140 +120+128+12+11+0-6-9-46+13-6-19+8-34+7-7 +hashblocks_sha512 1 709 5171 +132+34+18+48+48-50+13-27-17-46+0+0-11-5-46 +hashblocks_sha512 1 1064 8220 +147+20+28+8+13-5-21+17+0-11-14-2+19-7-41 +hashblocks_sha512 1 1597 12270 +170+64+64+0+12-29-3-20-66+31-31+3-33-4+17 +hashblocks_sha512 1 2396 18379 -27+138+40+24+36-4-66+0-17-30-30+56+2-8+3 +hashblocks_sha512 1 3595 28578 +36-6+52+37+0-84-49-60+60-30-18+9-1+7+41 +hashblocks_sha512 1 5393 42769 +148+29+66-16-32+17+24+59-76-70-31-60+31+0-14 +hashblocks_sha512 1 8090 64114 +293-82-1+39+19+128-35+50+0+101-89-6+146-30-77 +hashblocks_sha512 1 12136 95596 +565-46+0+113-46+100+53+27-115-107+68-89-52+16-115 +hashblocks_sha512 1 18205 144260 +1405-9-26+60-141+35+33-30-34-41-1+0+46+1054+1044 +hashblocks_sha512 1 27308 217299 +1154-125-313+79-118+0+65+2+40-311+61+24-101-299-20 +hashblocks_sha512 1 40963 328733 +440-81+565+0-102+473+148-34-48-59+62-158+104-122+97 +hashblocks_sha512 1 61445 493124 +44-292-48-50+54-110+34+280+148-357+0-106-107+318+256 +hashblocks_sha512 2 implementation avx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 2 0 53 +1791+51+26+0+2-2+0+2-2+3-2+0+2-2+0 +hashblocks_sha512 2 1 51 +67+57+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 2 51 +27+25+0+4+0+4+0+0+0+0+0+0+0+35+0 +hashblocks_sha512 2 4 51 +26+1+1+1+2+2+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 7 51 +27-1+1+0+0+0+4+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 11 52 +4-2+1+0+0+0+1+3-1+4-1-1+1+3-1 +hashblocks_sha512 2 17 52 +4-2+1+0+0+0+1+3-1+4-1-1+1+3-1 +hashblocks_sha512 2 26 52 +4+0+0+0+0+0+1+3-1+4-1+1+3-1+4 +hashblocks_sha512 2 40 52 +4+0+0+0+0+0+1+3-1+4-1+1+3-1+4 +hashblocks_sha512 2 61 52 +4-2+1+0+0+0+1+3-1+4-1-1+1+3-1 +hashblocks_sha512 2 92 52 +4-2+1+0+0+0+1+3-1+4-1-1+1+3-1 +hashblocks_sha512 2 139 987 +2842+95+3+59+1+39+0-3-7-3-10+51-1+0-2 +hashblocks_sha512 2 209 983 +82-5-5+4+3-1+4+51+0+0-10-4-10-3+0 +hashblocks_sha512 2 314 1874 +62+14+27-7+21+25-6-14+0+36+41-6-1-15-4 +hashblocks_sha512 2 472 2751 +44+80-11-11+18+8-1+0+71+1-6-10+0-2-1 +hashblocks_sha512 2 709 4518 +134+18-8+36-12-15-4-23+0-12+1-19+47+26+48 +hashblocks_sha512 2 1064 7166 +133+0+34+8-23-7-27-13+3+15-4-7+11+47-2 +hashblocks_sha512 2 1597 10702 +199+165-34+41+21-18+0+39+19-30+30-20-15-43-3 +hashblocks_sha512 2 2396 16053 +56-28+28+10+15-2-11+25-40+26+4-17-5+0-17 +hashblocks_sha512 2 3595 24906 +72+61-69-18+7+10-15-33+41+0-18+96-11-75+15 +hashblocks_sha512 2 5393 37288 +120-26+3+0-28+83+29+106+53-68-44+24-13-22-4 +hashblocks_sha512 2 8090 55834 +66-50-2-12-15-26+17-61+47-62+49+19+0+16+53 +hashblocks_sha512 2 12136 83203 +378-3-35+149+51-70-36+79+0+24-30-39+72+4-6 +hashblocks_sha512 2 18205 125709 +43-24+34-166+0+122+193-20+75+129-184-38-60-14+75 +hashblocks_sha512 2 27308 188523 +162-22-34+130+0-44-57+67+33-168+33-128+10-26+79 +hashblocks_sha512 2 40963 283382 +123+118+265-24-126+83-9-22-289-15+9+109+0+138-209 +hashblocks_sha512 2 61445 425979 -492-161-71+65+177-63+217+195-189+8-24+306+18-319+0 +hashblocks_sha512 3 implementation avx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 3 0 51 +1385+52+50+25+1+2+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 1 52 +69+23+0-1-1-1+0-1+0-1+0-1+0-1+0 +hashblocks_sha512 3 2 51 +35-1+1-1+1+5+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 4 51 +38-1+1-1+0+3+0+2+0+1+0+0+0+0+0 +hashblocks_sha512 3 7 51 +1-1+1-2+1+3+0+0+0+1+2+1+0+0+0 +hashblocks_sha512 3 11 51 +1-1+1-2+1+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 17 51 +1-1+1-2+1+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 26 51 +1+2-1+1-2+2+3+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 40 51 +1-1+1-2+1+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 61 51 +2-2+1-2+1+0+0+0+1+2+1+3+0+0+0 +hashblocks_sha512 3 92 51 +1-1+1-2+1+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 139 1120 +2597+55+31-12-19-4+0-11+11-29-25-28+4+8+0 +hashblocks_sha512 3 209 1105 +19+2+0+1+30-10-2-7-6-21-9-2+14+9+1 +hashblocks_sha512 3 314 2129 +98+68+49-30-1-16+3+3+0-3+4-14-34-8+9 +hashblocks_sha512 3 472 3138 +90+60+7+9+0-10-18-17+24-38+10+37-34-1-47 +hashblocks_sha512 3 709 5181 +91+44+35+0-48-25-1-25-29-16-8+2+5+10+2 +hashblocks_sha512 3 1064 8208 +54+34+55-26+8-9-39+0+0+4-20+12-8-49-14 +hashblocks_sha512 3 1597 12253 +255+115+34+16+29+4+0-11-61-25-19-1-16-9+30 +hashblocks_sha512 3 2396 18374 +38+91+136-11+42-42-63+4-16-27+10-74-27+0+19 +hashblocks_sha512 3 3595 28588 -25+86+0+10-35+43-48-35+66-7-32+2+54-33+8 +hashblocks_sha512 3 5393 42750 +264-9+29+52+23+159+0-84-64-10-45-64+58-8+62 +hashblocks_sha512 3 8090 64160 +183+0-30-6-111-2+37-95-37+57+5+41+96+0-198 +hashblocks_sha512 3 12136 95571 +631+0-65-134+924+356-80+61-86+122-108-20+54-14+41 +hashblocks_sha512 3 18205 144435 +938-197+12-130+0-158-99+237+61+255-28-91+44-7+252 +hashblocks_sha512 3 27308 217186 +1401+8-167-170+116-20+8-133-199+0+60+18-211+124-99 +hashblocks_sha512 3 40963 328936 +279+48+54-288+139+312-82+350+165-195-184-221-384-11+0 +hashblocks_sha512 3 61445 493194 +441-373-170-214+0+283-41-65+185+172+196-184-91+3+52 +hashblocks_sha512 4 implementation avx2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 4 0 51 +1566+55+52+0+2+0+0+0+0+3+0+0+0+0+0 +hashblocks_sha512 4 1 53 +35+32-2+1-2+0-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 2 51 +37+1+1+0+24+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 4 52 +5+0+0+0+0+1+0-1-1-1-1-1-1+32-1 +hashblocks_sha512 4 7 51 +11+1+0+2+4+1+3+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 11 53 +5-1-1-2-2+3-2+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 17 51 +11+1+0+2+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 26 53 +5-1-1-2+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 40 51 +11+1+0+2+2+3+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 61 53 +5-1-1-2+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 92 52 +10+0+2+0+0+1+0+1-1-1-1-1-1-1-1 +hashblocks_sha512 4 139 777 +761+44+52+0-7-11-3-8-8-3+4-7+21+5+8 +hashblocks_sha512 4 209 780 +54+5+52+49-4-2+2-5-8-4-8+0+51+0-2 +hashblocks_sha512 4 314 1455 +110+20-4+1-4+3+1+7+0-7-6-4-14+6-8 +hashblocks_sha512 4 472 2128 +112+29-4+0-12+14+2-3+5-1-3-8+1-1+43 +hashblocks_sha512 4 709 3467 +130+40+34+38+0+3-15+11-17-6-12-13-2-5+62 +hashblocks_sha512 4 1064 5482 +116+64+30+11+3-7-9+5+13-8-34-7+0-18-20 +hashblocks_sha512 4 1597 8159 +168+94+66-2-3+0+9+22+2-3-1-10-12-5+0 +hashblocks_sha512 4 2396 12181 +163+76+64+51+25-10+9-7-24+0-4-10-24-12+3 +hashblocks_sha512 4 3595 18928 +176+94+42+53+55-39+17-49-10-20-5-28-46+2+0 +hashblocks_sha512 4 5393 28318 +186-3+4-9+2+8+4-3+1+0-37-52+28-11-8 +hashblocks_sha512 4 8090 42410 +247+4-50-42-42+67+24+0+3-7+34-5-51+23-40 +hashblocks_sha512 4 12136 63188 +301-52+19+0+47-17-23+72-44-4+20+31-8-19+55 +hashblocks_sha512 4 18205 95425 +408-11+124-36+72-28+0-62+6+34-44-9-7+63+13 +hashblocks_sha512 4 27308 143091 +539+27+69-21-8+176+0-15+54-32-40+28-120-16+21 +hashblocks_sha512 4 40963 215465 +90-70+112-192-77+58+127-95+0+41+168-34+209-16-47 +hashblocks_sha512 4 61445 324711 -683-195+132-168+11+153+117-10+0-157-215+43+176-123+46 +hashblocks_sha512 5 implementation avx2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 5 0 51 +1318+54+48-1+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 1 51 +63+36-2+0+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 2 51 +35-2+0+1+25+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 4 51 +38-2+0+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 7 51 +36-2-1-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 11 51 +3-2-1-1-1-1+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 17 52 +2-3-2-2+0-3+0+3+0+2+1+0-1-1-1 +hashblocks_sha512 5 26 52 +2-3-2-2+0-3+0+3+0+2+1+0-1-1-1 +hashblocks_sha512 5 40 52 +1+0+0+0+1-2+0-1+0+2+1+0-1-1-1 +hashblocks_sha512 5 61 52 +1+0+0+0+1-2+0-1+0+2+1+0-1-1-1 +hashblocks_sha512 5 92 52 +1+0+0+0+1-2+0-1+0+2+1+0-1-1-1 +hashblocks_sha512 5 139 777 +625+51+7-1-7+4-5-2+0-4+0-3-3+2+53 +hashblocks_sha512 5 209 776 +37+9+2+5+5-4+3+0+0+0-3-5-4+2-2 +hashblocks_sha512 5 314 1454 +93+47+0+1-15+2-3-5+0-6+1-9-8-6+52 +hashblocks_sha512 5 472 2131 +104+33-21-12+0+67+6+0+2-12-7-3+1+6-16 +hashblocks_sha512 5 709 3464 +157+118+47+43+33-9+3-5-5-5+0+6-1-1-3 +hashblocks_sha512 5 1064 5483 +125+38+66+18-9-24-5+2-4+0+1-13-10+12-20 +hashblocks_sha512 5 1597 8163 +129+29+28-20+5+5+0-4-19+4-4+11-18-2-26 +hashblocks_sha512 5 2396 12220 +102+58+9+1+0-39-11+37-10-28+0-30-29-47+74 +hashblocks_sha512 5 3595 18939 +132-36-38+0+15-21-53+9-21+6+7-27-5+1+0 +hashblocks_sha512 5 5393 28329 +171+18+2+2+6-73+0-28-26-17-33-53-48+4+4 +hashblocks_sha512 5 8090 42387 +220+6-39+56+40-25+0-48-13+0-14+44+54+53-25 +hashblocks_sha512 5 12136 63211 +272-81+0+11-59-29+127-80-100+29+23+39+10+0-134 +hashblocks_sha512 5 18205 95458 +364-84+99+6-77-9-101+8+16+0-86+51-76-26+24 +hashblocks_sha512 5 27308 143142 +582-223-82+116+43+25-48+61-98+61-138+0+94-130-48 +hashblocks_sha512 5 40963 215394 +239+54+47-96-50+53+53-102-49+188+0-60-4+90-73 +hashblocks_sha512 5 61445 323302 +64+0+118-50+65-77+140-112-46+106-202-98+62-24+76 +hashblocks_sha512 6 implementation avx2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 6 0 51 +317+27+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 1 51 +27+35+0+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 2 53 +3+28-1-1-2-2+0+2-2+0+0-2+0+2-2 +hashblocks_sha512 6 4 52 +1-1+0+0+0+0-1-1+1+3-1+1+1+34-1 +hashblocks_sha512 6 7 52 +1-1+0+0+0+0-1-1+1+3-1+1+1-1+1 +hashblocks_sha512 6 11 52 +1-1+0+0+0+0-1-1+1+3-1+1+1-1+1 +hashblocks_sha512 6 17 53 +1-3+0-2-1-2+1+0+2-2+0+2-2+0+0 +hashblocks_sha512 6 26 52 +1-1+0+0+0+0-1-1+1+3-1+1+1-1+1 +hashblocks_sha512 6 40 52 +1-1+0+0+0+0-1-1+1+3-1+1+1-1+1 +hashblocks_sha512 6 61 52 +1-1+0+0+0+0-1-1+1+3-1+1+1-1+1 +hashblocks_sha512 6 92 53 +1-3+0-2-1-2+1+0+2-2+0+2-2+0+0 +hashblocks_sha512 6 139 778 +200+64+53-3+0+0-6+1+2+0-5-1-4-2+2 +hashblocks_sha512 6 209 782 +29+5+1-7-3-2-6+0-8-3+0+0-4+3+6 +hashblocks_sha512 6 314 1451 +102+79+68-3+44-7-6+0-4+71-1+7-3+0-8 +hashblocks_sha512 6 472 2121 +146+41+7-7-5+10+6-8+0+0-1-6-2+17+2 +hashblocks_sha512 6 709 3466 +112+65+65+76-3+0+3-1-4+0-10+6-5-2-13 +hashblocks_sha512 6 1064 5488 +110+101+47-2+6+39-4-22-6-15-19+0+27-23+21 +hashblocks_sha512 6 1597 8160 +166+92+0+9+3+9-24-13-10+2-10+49-10+0-1 +hashblocks_sha512 6 2396 12199 +145+35+41+10+7-29+42+0-12-52-13-11+42-25-54 +hashblocks_sha512 6 3595 18919 +240+57+68+71+0-13-12-16-19+26-39-11+56-55+1 +hashblocks_sha512 6 5393 28336 +151-21+28+52-6+69+31-17+0-41-16+43+11-7-28 +hashblocks_sha512 6 8090 42430 +190+27-18+1-52+36+3+53-11+0-62-40-24-9+48 +hashblocks_sha512 6 12136 63208 +432-43+71+23-12+31-21+0-21-43+32+48-39-19+55 +hashblocks_sha512 6 18205 95471 +389+0+56+1-10-79-91-11+1-58+18+55-2-16+117 +hashblocks_sha512 6 27308 143136 +487+0-48+8+78-70+71-113+33-34-96+164-25-95+86 +hashblocks_sha512 6 40963 215436 +218+27-11+30+54+74-16+160+0-20-2-8-104+123-127 +hashblocks_sha512 6 61445 323381 +161-8-8-49+27+76+4+0-108-109+121-86+112-88+210 +hashblocks_sha512 7 implementation avx2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 7 0 51 +107+49+29+0+0+0+0+0+0+0+1+0+0+0+1 +hashblocks_sha512 7 1 51 +24-1-2+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 2 51 +33-2-1-1+1+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 4 51 +34-2+0+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 7 51 +33-2+0+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 11 51 +2+2+2+2+2+2+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 17 51 +0+1+1+1+1+2+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 26 51 +0+1+1+1+1+2+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 40 51 +0+1+1+1+2+1-2+1+0+0+0+0+0+0+0 +hashblocks_sha512 7 61 51 +0+1+1+1+2+1-2+1+0+0+0+0+0+0+0 +hashblocks_sha512 7 92 51 +2+1+1+1+2+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 139 776 +124+65+24+0-5-4-3+0+3-2-1+5-4+2-2 +hashblocks_sha512 7 209 777 +48+7+0-1-2-1+4+0+2-1+1-5-3-6+6 +hashblocks_sha512 7 314 1450 +106+61+39+9+46-3+7+20+0-7-3-5-8-12-5 +hashblocks_sha512 7 472 2132 +75+44+6+0-16+14+55-24-18-18+35+4-24-18-5 +hashblocks_sha512 7 709 3480 +113+60+0+8+22-3+24+1-5-28-15+1-25-23-2 +hashblocks_sha512 7 1064 5471 +128+36+60+22+12-5-3-8-8-1+6-17+19-2+0 +hashblocks_sha512 7 1597 8151 +149+20+0+8-1-8-5+21+0-21-12+6+18-4+5 +hashblocks_sha512 7 2396 12210 +144+13+30+12-7+11-17-9-26-6+45+12-23+0-6 +hashblocks_sha512 7 3595 18912 +198+8-6-3-5+31-5+5+25-15+0+27+7-4-56 +hashblocks_sha512 7 5393 28320 +151+10-10+59+4-27-30-21-68-43+0-42+11+8+6 +hashblocks_sha512 7 8090 42404 +202+11-35+52-35+5+27+0-42-48-19+36-36+26-20 +hashblocks_sha512 7 12136 63184 +345-111+2-6-5-3-9+16+8+0+71-7+101+16-14 +hashblocks_sha512 7 18205 95392 +369-108-34+12-49+25+57+0+48-2-19+36+34-104-49 +hashblocks_sha512 7 27308 143114 +487+82+14-117-33-76+25+58-37+69-38+95-109-120+0 +hashblocks_sha512 7 40963 215504 +100+64-18-41-117-168+125+8+77-55-73-74+0+14+660 +hashblocks_sha512 7 61445 323324 +170-8+108+100+14-74-100+0-199+189+14-15-80+31-42 +hashblocks_sha512 8 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 8 0 146 +965+99+40+0+0+0+0+0+16-4+0+0+0+0+0 +hashblocks_sha512 8 1 146 +57+6-1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 2 146 +80+2+4-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 4 146 +27+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 7 146 +27+1+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 11 146 +20+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 17 146 +27+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 26 146 +13+2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 40 146 +14+2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 61 146 +13+2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 92 146 +27+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 139 1361 +3565+114+16+2-7-2+0-1-3-6+2+0+1-4-2 +hashblocks_sha512 8 209 1366 +87+16+13+8+9+11-4+0-4-2-8-6+1-8-9 +hashblocks_sha512 8 314 2560 +135+64+51+1+2-3+24-9-3-2+0-3+10-1-4 +hashblocks_sha512 8 472 3810 +49-2-6+1+9+3+3+4+0-12-13-6+9+0-16 +hashblocks_sha512 8 709 6194 +180+64+37+43+10-3-14+9+26-4-5-5+0-13-15 +hashblocks_sha512 8 1064 9795 +106+20+20+2+39-14-33-5-9-20+0+63-20-11+4 +hashblocks_sha512 8 1597 14624 +101+52+77+17-13-37-19-27+0+18-7-7+8-18+0 +hashblocks_sha512 8 2396 21873 +169+0-4-54-50-12-82-36+26+91+36+89+20-19+26 +hashblocks_sha512 8 3595 33951 +212-94-66+8+42-55-37-40+11-10+0+2+8+3-14 +hashblocks_sha512 8 5393 50771 +315-157-51+11+9+12-4+11+6+0-11-31-2-14+1 +hashblocks_sha512 8 8090 75976 +207+1+62-82-158-147+34+0+23-105+20-88-51-98+6 +hashblocks_sha512 8 12136 113394 +62+59+48+23+150+32-45+63-179-153-242-260+0-217-123 +hashblocks_sha512 8 18205 171195 +297+114-91-28+0-58-39+14-5+0+73+72+91+7-54 +hashblocks_sha512 8 27308 256089 +596+307+455+616+538-237-18-232+694+0-247-310-3+336-133 +hashblocks_sha512 8 40963 385604 -406-918-889+60-85-100-129-715+31+263+43+0+48+25+24 +hashblocks_sha512 8 61445 578518 -113-135-171-7+145+218-13+46-47+49+38+130+0+72-88 +hashblocks_sha512 9 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 9 0 100 +275+55-1+1-1+0-1+0+18+1-1+0+0+1+1 +hashblocks_sha512 9 1 100 +40-1-2+4+24-1+1+1+0-2+1+1-1+0+0 +hashblocks_sha512 9 2 100 +21+0-3+0+0-2-1-1-2-1-2+0+6+14+1 +hashblocks_sha512 9 4 100 +11-1-1+1+0-3-1+0-2+1+1-1+0+0+1 +hashblocks_sha512 9 7 100 +11-1+0+0+0-2+2+0+0+0-2+1+1-1+0 +hashblocks_sha512 9 11 100 +11+0-2+0-1+1+0+0+1+1+0+1+1+1-1 +hashblocks_sha512 9 17 100 +10-2-1+0-1-1+2+0-1+0-2+0+0+1-1 +hashblocks_sha512 9 26 100 +11+0+0+0+0-2+2-1+14+1+0-2+1+1-1 +hashblocks_sha512 9 40 99 +15-1+1+0-2+0+0+0+2-1+1-1+2+2+0 +hashblocks_sha512 9 61 100 +11-1+0-1+0-1-1+0-2-1+0+0-2+0+0 +hashblocks_sha512 9 92 100 +11+0-1+0+1+0-1+0+0+1-2+1+1-1+0 +hashblocks_sha512 9 139 1163 +754+58+3-1+13+10-10-10+0-3-2+5-11+3-15 +hashblocks_sha512 9 209 1164 +51+13+13+0+1+1-14-10-12-1-9+1-6+10-7 +hashblocks_sha512 9 314 2213 +117+34+18+1+0-1-13+0-2-4-9-6-8+4+7 +hashblocks_sha512 9 472 3265 +82+37+9+0+0+0+0-15+6-10-10+6-4-19-2 +hashblocks_sha512 9 709 5361 +150+35-15+16+23+31+5-38-10-3-23-34+0+16+0 +hashblocks_sha512 9 1064 8507 +125+22-4+23-6+30-12+0+13-12+36-32+22-5-11 +hashblocks_sha512 9 1597 12698 +133+29+32+5-15-2-4+15-32-12+9+4-20-7+0 +hashblocks_sha512 9 2396 18991 +134-8-13-1+30+27-1+39-23-29+16-10+49+38+0 +hashblocks_sha512 9 3595 29542 +82+2-41-11+37+14-22-39-44+18+0+8-77-66+6 +hashblocks_sha512 9 5393 44211 +148+76+45+0+22-89-30-18-56+9-16+84+90-94-93 +hashblocks_sha512 9 8090 66199 +85+57+72+123-96-26-5+0-86+43-6-13-7+132+72 +hashblocks_sha512 9 12136 98762 +169+50+31-79-52+110-2-134-113-18+115-22+0+96+25 +hashblocks_sha512 9 18205 149086 +451+0+90-10-110+24-338-165+17-32-56-4+115+73+57 +hashblocks_sha512 9 27308 223589 +256-77+37+76+189-144-62+65-87-35+141+3+0-123-5 +hashblocks_sha512 9 40963 336118 +91-390-182+57-12+4-67-156+84+77+78+0+54-14-42 +hashblocks_sha512 9 61445 504209 +364+205-285-615+92-113-326+321+121+0+148+235-177-246-31 +hashblocks_sha512 10 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 10 0 147 +848+107+46+24+0+1-1+2+14-4+0-1-1-1-1 +hashblocks_sha512 10 1 156 +77+0+11-1+0-4+0-4+0-4+0-4+0-4+0 +hashblocks_sha512 10 2 149 +74-1+0+2-1+0+1-2+1-2+1-2+1-2+1 +hashblocks_sha512 10 4 156 +6+1+28-1-1+1+0-2-1+1+0-2-1+1+0 +hashblocks_sha512 10 7 155 +21-2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 11 149 +26+4+8+8-2-1-1-1-1+0+1-2+1-2+1 +hashblocks_sha512 10 17 147 +27+5+10-1-1+2+0+0-1+2+0+0-1+2+0 +hashblocks_sha512 10 26 155 +20-4-1+2+1-1+0+2+8-4+0+2+1-1+0 +hashblocks_sha512 10 40 155 +21-1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 61 155 +20-2+0+0+0+0+0+0+8-3+0+0+0+0+0 +hashblocks_sha512 10 92 155 +20-2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 139 1190 +982+95+21+9+11-21+8-18-9-33+0-32+8-24-23 +hashblocks_sha512 10 209 1203 +115+22+11-15-8-3-2+8-8-7+12+0+0+4-28 +hashblocks_sha512 10 314 2203 +288+18+0+8-1+1-20-8-18-13-15-8+8+21+31 +hashblocks_sha512 10 472 3241 +213+35+30+0-45+0+11+14-34-2-25+15-6+4-8 +hashblocks_sha512 10 709 5303 +247+149+44+88-20-23-8+10-2-10-11+2+0-2+12 +hashblocks_sha512 10 1064 8347 +167+93+109+0-37-38-49-71+12-58-46-79+26+9+63 +hashblocks_sha512 10 1597 12423 +272+67-28-2-94+201+41+21-21+0-19-9+8-46+0 +hashblocks_sha512 10 2396 18577 +228+62+0+33-29+71+114+82+105-10-39-31-37-29-12 +hashblocks_sha512 10 3595 28903 +120-54+27-78+23+3+0-59-115+29-35-30+6-42+22 +hashblocks_sha512 10 5393 42677 +744+3+149-34+12+22-6-6-14-1+15+6+0-3+0 +hashblocks_sha512 10 8090 63925 +711+21+43-33+18-25+15-44-37+5+0-15+43+0-39 +hashblocks_sha512 10 12136 96580 +506+200+440+406-137+367+0+81+753-1002-1326-1248-1321-1291-1306 +hashblocks_sha512 10 18205 143870 +2705+2295+304+13-46+0-28+10-42-102-55+65-16+95-29 +hashblocks_sha512 10 27308 215815 +2611+1920+1861+1919-25-8+60+21-41+0+27-78-17-42-63 +hashblocks_sha512 10 40963 324665 +4675+4450+4483+5142+4716+3756+223-88-170-176-57-112-142+0-88 +hashblocks_sha512 10 61445 491252 +2164+2378+2086+2867+2609+2283+1527-115-129-36-57+0-110-162-91 +hashblocks_sha512 11 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 11 0 168 +427+30+7-6+1-11+1-9-6-11+1-10+0-7+0 +hashblocks_sha512 11 1 168 +36+9-9+0-10+0-11+0-12+1-9+0-11+1-8 +hashblocks_sha512 11 2 167 +26+0-5+0+9+3-9+1-6+2-11+2-8+1-10 +hashblocks_sha512 11 4 165 +0+3-7+3-3+8-7+3-8+3-4+3-4+18-6 +hashblocks_sha512 11 7 167 +1+2-9+5-5+2-9+5-9+0-8+2-10+1-7 +hashblocks_sha512 11 11 166 +0+6-8+1-4+2-7+2-9+1-8+3-7+2-9 +hashblocks_sha512 11 17 167 +1+0-9+0-8+2-8+2-8+2-7+1-10+2-9 +hashblocks_sha512 11 26 166 +0+3-8+6-4+3-7+1-7+2-9+2-5+2-5 +hashblocks_sha512 11 40 167 +6+0-9+0-9+0-7+1-10+2-8+1-9+0-7 +hashblocks_sha512 11 61 168 +2+0-10+4-6+5-10+0-11+0-7+0-7+0-7 +hashblocks_sha512 11 92 167 +2+0-6+0-5+1-8+1-10+2-7+1-10+0-5 +hashblocks_sha512 11 139 1207 +1713+74+8-8+7-7+1-4+2-1-1+0+8-8+0 +hashblocks_sha512 11 209 1210 +105+7+0+4-7+10-3-2-14+1-3+5-10+4-6 +hashblocks_sha512 11 314 2226 +138+39+12-11-10+0+3+2-15+5-17+0-8-2+1 +hashblocks_sha512 11 472 3251 +175+13-2-4-3+21-11+4+0+1-14+12-8+8-16 +hashblocks_sha512 11 709 5299 +180+0-5+19+9+29-3-12+8+2-10+5-42-9-18 +hashblocks_sha512 11 1064 8365 +185+41+17-37+9-16+0-46-33-21+4+31-9+0-2 +hashblocks_sha512 11 1597 12439 +189+17-6-11-20+34-12+14-22+14+11+0+11-18-16 +hashblocks_sha512 11 2396 18578 +183+27-3+26-32+5+48-3-24-57+30+0-8-19+12 +hashblocks_sha512 11 3595 28810 +199-3+31+36-44-20+59+11-48+34-12+0+11-1-4 +hashblocks_sha512 11 5393 43157 +209+78+3+40+16-61+0-36-4-72-11+4-8-68+15 +hashblocks_sha512 11 8090 64598 +313-19+7-7-41-37+68-40+26+100+0-21-30+32+58 +hashblocks_sha512 11 12136 96310 +537+114+86-65-49-55+95+43-77+0-10-77-41+94+50 +hashblocks_sha512 11 18205 145364 +684+45+0-48+39-65+47-81+51+12-85+16-1-96-108 +hashblocks_sha512 11 27308 218347 +1032-119-16+43+0+59-24+125+746+482-140-97-81+1-37 +hashblocks_sha512 11 40963 329155 +140-106+0+74-17+70-10-24+8-109+249-16+36+417-54 +hashblocks_sha512 11 61445 494646 -558-208+136+33-107-114+0-12-116+42+0-58+610+44+238 +hashblocks_sha512 12 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 12 0 147 +1714+106+48+4+2+2+0-1+15+0+0-1+0+0-1 +hashblocks_sha512 12 1 154 +73+28+0-1-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 12 2 147 +76+7-1+0+0-1+0-1+0-1+0-1+0-1+0 +hashblocks_sha512 12 4 147 +54+5+5+7-1-1-1+0+0-1+0-1+0-1+0 +hashblocks_sha512 12 7 147 +33+4+2+0-1+0+0-1+0-1+0-1+0-1+0 +hashblocks_sha512 12 11 151 +20+4+2+3+0+2+1+3-5-5-2-4-5-4-4 +hashblocks_sha512 12 17 151 +20+4+2+3+0+2+1+3-5-5-2-4-5-4-4 +hashblocks_sha512 12 26 151 +19+4+2+3+0+2+1+3-5-5-5-4-4-5-4 +hashblocks_sha512 12 40 151 +19+4+2+3+0+2+1+3-5-5-2-4-5-4-4 +hashblocks_sha512 12 61 152 +19+3+1+2-1+1+0+2+10-5-3-5-6-5-5 +hashblocks_sha512 12 92 147 +23+2+3-1-1-1+0-1+0-1+0-1+0-1+0 +hashblocks_sha512 12 139 1211 +1196+86+43+0-27-34-19+2-26-6-12+13+26-10+2 +hashblocks_sha512 12 209 1204 +121+33+2-15-32-28+0+4+5-8+1-14-25+4-13 +hashblocks_sha512 12 314 2247 +179+10-33+9-13+0-16+10+1-26-9+12+16-9-14 +hashblocks_sha512 12 472 3333 +87-28+48+10+37+67+0-38+5-46-10-1+16-27-10 +hashblocks_sha512 12 709 5357 +232+32+67+65-44-32+48-5-16+0-65+27+3-50-62 +hashblocks_sha512 12 1064 8478 +131+35+77+62+0-90-20+45+40-8+44-15-37-104-14 +hashblocks_sha512 12 1597 12606 +117+67+12-108+83+49-95+25-92+0-1+11-34-74-59 +hashblocks_sha512 12 2396 18864 +87-71-173+87-147+7-163-133+38+0+34+76-152+70-124 +hashblocks_sha512 12 3595 28945 +163+4-54+80-10-2+0+83-14+237-6+31-12-3+70 +hashblocks_sha512 12 5393 43379 +168+16-15+471+18+991+213+38-40-55-18-62-89+0-16 +hashblocks_sha512 12 8090 64849 +302+58+75+1070+91+41-10+4-6-15-1+0-3-3-10 +hashblocks_sha512 12 12136 96715 +372+8+27+32-43-25+0-10-3-29-12-12+3+10+6 +hashblocks_sha512 12 18205 145967 +514+78-9-16+30-1+48+0+11+8-14-47-51-21+46 +hashblocks_sha512 12 27308 218844 +292+255-34+56-6+0+65-29-35+0+53-47-30+0+35 +hashblocks_sha512 12 40963 328718 +4438+579-55+14-43-30-35-17-37+56+66+948+64-25+0 +hashblocks_sha512 12 61445 493073 +458+156+735+46+0+82-27-14+1028+103-93-157-136-165-172 +hashblocks_sha512 13 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 13 0 168 +1584+27+8+10-1-6+0-6-5-11+1-10+0-7+0 +hashblocks_sha512 13 1 167 +33+11-9+0-4+0-8+1-8+1-10+2-7+1-10 +hashblocks_sha512 13 2 168 +31+0-10+0-10+0-6+1-10+1-8+0-7+0-7 +hashblocks_sha512 13 4 167 +2+5-5+2-9+5-9+0-9+1-10+1-6+1-6 +hashblocks_sha512 13 7 167 +3+1-9+0-9+0-9+2-7+1-10+0-8+2-7 +hashblocks_sha512 13 11 167 +3+0-5+0-5+0-5+0-5+1-6+1-6+1-6 +hashblocks_sha512 13 17 167 +3+0-5+0-5+0-5+1-10+0-5+0-8+2-9 +hashblocks_sha512 13 26 167 +7+1-5+2-9+5-8+0-9+2-8+1-10+2-7 +hashblocks_sha512 13 40 167 +3+5-9+0-5+0-5+0-5+0-5+1-10+0-8 +hashblocks_sha512 13 61 167 +7+5-5+2-9+5-9+0-5+0-5+0-5+5-8 +hashblocks_sha512 13 92 167 +3+0-6+0-5+0-5+0-8+2-7+1-10+2-9 +hashblocks_sha512 13 139 1213 +1174+45+17+1-18+3-11-6-12+1-8+0-11+0-9 +hashblocks_sha512 13 209 1205 +61+19-8+3-9+3-2+3-7+14-1+10-6+0-12 +hashblocks_sha512 13 314 2229 +88+32+4+0+7-5+3-6-3+2+10-13-2-4-7 +hashblocks_sha512 13 472 3248 +113+26-2+6+0+0+10+34-12+14-11+12-2-10-26 +hashblocks_sha512 13 709 5308 +54+3+16+6+0-18-17+6-4+9-14-34+9-18-10 +hashblocks_sha512 13 1064 8357 +110+39-12-9-6-1+11-7+35-12+18+12+30+0-12 +hashblocks_sha512 13 1597 12439 +97-5+16-39+28-13+13-2+0-27+31+56-19+733-26 +hashblocks_sha512 13 2396 18581 +169-6+20-11-6-32+44-20-5+50+38-34+33+0+66 +hashblocks_sha512 13 3595 28839 +75-16+40-51-2+53-13+5+1+0-82-25+27-58+16 +hashblocks_sha512 13 5393 43133 +178-10-26+28-17-91+0-12+15+41-75+31+27-4+33 +hashblocks_sha512 13 8090 64611 +227+38+0-1-15+19-48+26+167-47-12+42+21-31-86 +hashblocks_sha512 13 12136 96310 +505-24+26-75+19-92-128+15-26+39+11+0-45+24-121 +hashblocks_sha512 13 18205 145422 +784+16-60+104+27-93-7-68+46+53-30-91+0-8+29 +hashblocks_sha512 13 27308 218452 +795-244+0-115+35+80+40+106-8+173-103+50-40-4-77 +hashblocks_sha512 13 40963 329061 +167-19+146-40+693-101+0+94-10-33+72+139-80-90+154 +hashblocks_sha512 13 61445 494436 -499-731-930-264-410+76+124+173+15+0+192-184-80+66+322 +hashblocks_sha512 14 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 14 0 150 +937+74+42+22+0+19-7+0+11-8-4-4-4-4-4 +hashblocks_sha512 14 1 146 +84+26+2-1+0+3+0+0+0+0+0+3+0+0+0 +hashblocks_sha512 14 2 146 +94+26+5-1+0+4+0+0+15-3+1+0+0+0+0 +hashblocks_sha512 14 4 146 +38+3+0+0+0+3+0+0+0+0+0+3+0+0+0 +hashblocks_sha512 14 7 146 +25+2-1+4+0+0+0+3+0+0+0+0+0+3+0 +hashblocks_sha512 14 11 146 +27+2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 14 17 146 +27+2+0+0+0+0+0+0+15-4+0+0+0+0+0 +hashblocks_sha512 14 26 146 +27+0+0+0+0+0+0+3+0+0+0+0+0+3+0 +hashblocks_sha512 14 40 146 +27+1-1+4+0+0+0+3+0+0+0+0+0+3+0 +hashblocks_sha512 14 61 146 +27+2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 14 92 146 +26+3+3+0+0+0+0+3+15-3+1+0+0+0+0 +hashblocks_sha512 14 139 1366 +901+115+68+12+13+4-5-5-8+0+3-9-7-4-6 +hashblocks_sha512 14 209 1366 +86+21+12+21+18+2-7+6-7+0-6+0-4-3-4 +hashblocks_sha512 14 314 2566 +155+102+67+68+4+0-5+17+2-5-1+0-1+0-5 +hashblocks_sha512 14 472 3810 +95+17+1+8-8+15-1+5+1-7+0-3+0-4-5 +hashblocks_sha512 14 709 6223 +129+53-6+11+6+3+13-7+0+0+0+7-7-3-3 +hashblocks_sha512 14 1064 9819 +98+36+49+5+4+0-22-2+3-16-16+3-14-9-1 +hashblocks_sha512 14 1597 14647 +306+69+68-15-54-8+0-3+3-5+1-9+14-10+19 +hashblocks_sha512 14 2396 21923 +234+28-29+56+0-33-7-50-3-34-69+53+10+24+22 +hashblocks_sha512 14 3595 33984 +182-25+5-5-3+0-2+11+9+1+5-3+8+0-5 +hashblocks_sha512 14 5393 50884 +183+113+129-33+89-40+0-7-51+28+19-50+37-26-1 +hashblocks_sha512 14 8090 76195 +0+72-2-6-20+25-5+24-18-5+26+8-2+33+21 +hashblocks_sha512 14 12136 113607 +123-233-359-394-279+20-1+5+20+66-11+10-1+50+0 +hashblocks_sha512 14 18205 171437 +87-548+100+367-7+54+149+142-23-23-48+0-14+21-523 +hashblocks_sha512 14 27308 256251 +1352+850+415+19+184+0+7-14-8-3+0-10-3-7-12 +hashblocks_sha512 14 40963 386526 +305+18+10-24+21+183-29-3-21+0-63-51+218+38-45 +hashblocks_sha512 14 61445 579808 +666+62-67+22+62-34-54-14+0+108-38-10+282+28-52 +hashblocks_sha512 15 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 15 0 105 +737+16+15-2-2+0-3-3-1+0-3+0+0-3+0 +hashblocks_sha512 15 1 103 +61+0+2+2-2+1-3-1+18-1+0+1-3+2-3 +hashblocks_sha512 15 2 103 +53-1+2-1+0+2+0-1+21-2-3+2-2+2-1 +hashblocks_sha512 15 4 104 +36-2+0-1+0-2+0+1+17+1+1-2+1-2-2 +hashblocks_sha512 15 7 103 +33+0+0-4+0-1-1+2+2-1+2-1-1-1+0 +hashblocks_sha512 15 11 103 +33+0+1-4+2-1+1+1-1-1-1-1+0+1-1 +hashblocks_sha512 15 17 103 +33+0+0-4+0-1-3-1-3+2+2+2-3+2-2 +hashblocks_sha512 15 26 103 +25+0+1-3-1+1+2-1+2-1-3+2-2+2-1 +hashblocks_sha512 15 40 102 +31+2+2-1-1+0-2+0-2+0-2+3+3+3-2 +hashblocks_sha512 15 61 103 +31+0+0-2-3+1+2-1+2-1-1-1+0+1-1 +hashblocks_sha512 15 92 102 +26+0+0-2+0+0-2+0+19+0-2+3+3+3-2 +hashblocks_sha512 15 139 1223 +738+124+40+27+7+6+0-4+2+0-3-7-6-7-9 +hashblocks_sha512 15 209 1225 +96+39+11+0+0-17-5+13-4-5-14+4-15+0+2 +hashblocks_sha512 15 314 2344 +141+59+44+21+1+26-26-24-26+0-29-28-24+8-23 +hashblocks_sha512 15 472 3425 +151+45+8+4-2+9-24-21+7-14-8+13-20-17+0 +hashblocks_sha512 15 709 5621 +167+22+62+20+34+21-42-2+0+8-30-19-4-22-18 +hashblocks_sha512 15 1064 8915 +167+40+1+0+2-5+4-5-24-7-6+5-18+27-14 +hashblocks_sha512 15 1597 13310 +255-21+3+36-38+12+141+141-27-14+0-18-4+0+18 +hashblocks_sha512 15 2396 19967 +198-67-46+0+48+316+211-82-71+246-56-74-52+188+131 +hashblocks_sha512 15 3595 30966 +88+0+224+122+68-25-30+86-114+61-62-17-74+166-56 +hashblocks_sha512 15 5393 46567 +0+83-218+182-45-49+53+22+2-219+242-258+23-276-61 +hashblocks_sha512 15 8090 69579 +112+101+38-183+41-38-21+32-152+227+425-246-99+0-110 +hashblocks_sha512 15 12136 103897 +292-123+103-243-402+139+60-91+90-207+0+208-152+20-25 +hashblocks_sha512 15 18205 156755 +753-174+161-138+94+124+297+358-365-114-204-138+384-180+0 +hashblocks_sha512 15 27308 235272 +115+1004-727-170+6-158+205+152-448+171-31+0-63-424+66 +hashblocks_sha512 15 40963 353858 +325-380-591+2-125+0+88-394+64-601+143+516-740-235+348 +hashblocks_sha512 15 61445 530701 +841-778+713+0+10-187-477+96-1-263-117+73+183-535+733 +hashblocks_sha512 16 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 16 0 146 +851+80+47+27+2+0+0+0+16-4+0+0+0+0+0 +hashblocks_sha512 16 1 146 +116+27+9+2+2+3+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 2 146 +54+10+3+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 4 150 +9+9-2+2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 7 146 +14+11+0+2+0+0+0+0+16-3+0+0+0+0+0 +hashblocks_sha512 16 11 150 +16+5+1-2+0+0+0+0+11-5+0+3+1-1-2 +hashblocks_sha512 16 17 146 +20+8+6+2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 26 146 +13+6+4+2+4+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 40 150 +10+8+1-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 61 146 +13+12+4+2+4+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 92 146 +13+13+3+2+3+0+0+0+16-3+0+0+0+0+0 +hashblocks_sha512 16 139 2200 +743+240+68+6-4-4+0+8+1-2-1-2-3-2+0 +hashblocks_sha512 16 209 2199 +100+23+4+6+1-2+0-1-1-2+0-3+0-2+1 +hashblocks_sha512 16 314 4291 +155+0+1+1-2-1-2-2+0+18+5+0+0-3+0 +hashblocks_sha512 16 472 6299 +137+34+1+4+0-2-4+3+0+44-1-1+2-5-4 +hashblocks_sha512 16 709 10383 +128+7+12+10+1+0-3-1+0-4+2-3-2+1-1 +hashblocks_sha512 16 1064 16516 +141+49+2+7+26+0-6-7+29-11-6-7+27-10-10 +hashblocks_sha512 16 1597 24704 +88+7+14+0-2-9+2-29-4-8+3-7+0-4+1 +hashblocks_sha512 16 2396 36957 +127+7+52+22-7+0-3+0-3-7-5+43+0-5+3 +hashblocks_sha512 16 3595 57380 +148+15-1-5+7+0+26-1-4+38-4-10+2-14+9 +hashblocks_sha512 16 5393 85980 +115+16-4+17-16+0+1-19-6-30+27-36+45-32+1 +hashblocks_sha512 16 8090 128892 +227+43-32-4-12-22+4+7-18-3+41+35-29+0+21 +hashblocks_sha512 16 12136 192181 +322+76-93+40+0-72-12+22+33+0-64-3+704+99-2 +hashblocks_sha512 16 18205 290205 +453+78-19-5+87-79+32-93+21+58+107-89-51+0-61 +hashblocks_sha512 16 27308 435304 +358-25-111+23+761+24+0+90-53-58+52-90+24-37-85 +hashblocks_sha512 16 40963 654183 +97-74+15-9+801-3+0-22+145+6+10-47-2-62+10 +hashblocks_sha512 16 61445 981392 +243-142+103-53+100-44+10+0+106+755+47-122-16-212-120 +hashblocks_sha512 17 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 17 0 101 +408+30+1-3+4+12+0-3+12-2+1-3-1-2+0 +hashblocks_sha512 17 1 101 +49+18+0-1-1-3+0-2+13+0-1+1+0+0+1 +hashblocks_sha512 17 2 100 +25-2+0-1+2-1+2+1+1-1+2-2+0+0-2 +hashblocks_sha512 17 4 101 +8+0-3+0-1-3-3+0+0-2-1-1+0+1+0 +hashblocks_sha512 17 7 101 +11-3-3-1-2+1+0+0+0+1+0+0+0+1+0 +hashblocks_sha512 17 11 100 +9+1-2+1+1-1-1+2-1+2+0-1-1-2+2 +hashblocks_sha512 17 17 101 +8-3-4+0-2+1-2+1+0+0-1+0+0-2+0 +hashblocks_sha512 17 26 101 +19-3-3+0-3+1-2+1+0+0+0+1+0+0+0 +hashblocks_sha512 17 40 101 +10-3-3+0-2+0+0-2-1+0-1-2+0+0+0 +hashblocks_sha512 17 61 100 +10+0-2-1+2-1-1+2-1+1+0+0-1+1+1 +hashblocks_sha512 17 92 101 +10-3-3+0-3+0-2+1+0+0-1+0+0-2+0 +hashblocks_sha512 17 139 1851 +1083+366+207+53+17-4-4+0-3-3+0-7-6+2-3 +hashblocks_sha512 17 209 1849 +196+5+0-1-3-3+0+0+0+0-2+2-2-3+2 +hashblocks_sha512 17 314 3612 +223+6+5-3-7+1+0-1+2+3+0-3-3-2+1 +hashblocks_sha512 17 472 5342 +132+54+39+14-6-6+0-5-2+1+5+8-3-7-9 +hashblocks_sha512 17 709 8827 +109+11+4-4-2+3+2-4-5-5+1-1-7+0+11 +hashblocks_sha512 17 1064 14074 +103+12+18+6+25+5-16-24-20-17-21+0+69-17-8 +hashblocks_sha512 17 1597 21076 +65+0-9+16+3-25-13+3-11-10+1+3-11-10+1 +hashblocks_sha512 17 2396 31550 +78-2+24-2-17-23+1+7-3-27+0+4+4-11+15 +hashblocks_sha512 17 3595 48996 +86+13-14-5-20+28+8+0-26-24+32+1-5+9-5 +hashblocks_sha512 17 5393 73427 +85+41-63+11+22-7-43+56-22+20-2+0-15-21+27 +hashblocks_sha512 17 8090 110073 +120+0-23-20+18+32+5-1-8+21-30-57-40+17+2 +hashblocks_sha512 17 12136 164164 +149-60+0-36+54+12+18-44-14+45+866+90-49-1-28 +hashblocks_sha512 17 18205 247974 +81-91+7+0+90+56-10-113+54-92+1-71+26-24-39 +hashblocks_sha512 17 27308 371855 +193-53-91-26+37+43+728+38+34-66-62+0-76-11+147 +hashblocks_sha512 17 40963 558672 +78+0+74+71+184-40-8+771+77-102-4+60-9-115-86 +hashblocks_sha512 17 61445 838071 +1123+9+123-26-68-116+161+41-160-67-11+185-38+67+0 +hashblocks_sha512 18 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 18 0 141 +1122+85+18+21+0+0+0+1+20+0+0+0+0+0+0 +hashblocks_sha512 18 1 154 +107+28+3+1+0+0+0+0+0-7-12-13-12-11-14 +hashblocks_sha512 18 2 154 +76+28+3+1+0+0+0+0+0-7-12-13-12-11-14 +hashblocks_sha512 18 4 154 +81+2+31-3+0+0+0+0+0-7-12-13-12-11-14 +hashblocks_sha512 18 7 142 +31+9+8+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 11 142 +31+11+8+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 17 142 +30+13+8+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 26 142 +30+15+8+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 40 142 +29+13+8+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 61 142 +31+9+8+0+0+0+0+0+20+2+0+0+0+0+0 +hashblocks_sha512 18 92 142 +31+9+8+0+0+0+0+0+20+2+0+0+0+0+0 +hashblocks_sha512 18 139 2006 +875+417+236+80+12+21-8+0-8+4-8-2-6-2-8 +hashblocks_sha512 18 209 2006 +159+31+27+35+12+11+11+0-7-1-5-3-5-2-7 +hashblocks_sha512 18 314 3900 +227+167+61-3-2+2+0+0-2+3+10+6-4-3-6 +hashblocks_sha512 18 472 5734 +202+140+45+6-4+40-5+6-6+0-8+3-2+0-8 +hashblocks_sha512 18 709 9448 +239+37+0+0-9+9+0+5+4-2+35-1-4+2-6 +hashblocks_sha512 18 1064 15045 +198+48+2+1-15+20-31-12-25-27+1-25+7+0-25 +hashblocks_sha512 18 1597 22486 +224+26+7+30-19-30-34+5-12+0-18+16-19-20+18 +hashblocks_sha512 18 2396 33617 +225+8+19-18+1-11-15+33-9+0-4+1-5-2+28 +hashblocks_sha512 18 3595 52200 +213+12+2+43+17-5-3-5+1-7-26+28+0-6-12 +hashblocks_sha512 18 5393 78234 +1167+0-23+44+24-32-10+16+8-5+25+14-35-25+0 +hashblocks_sha512 18 8090 117258 +253-18+0-19+13+18+4-27+31-17-2-42+17-15+17 +hashblocks_sha512 18 12136 174842 +292+20+55-16+27-6+21-41-9-7+0+43+8-18-34 +hashblocks_sha512 18 18205 264039 +266-29-67+46-21-13+45+956+42+23-30+7+0-114-106 +hashblocks_sha512 18 27308 396002 +407+17+8-8-121-56+51-17+0-16+0-16+0-16+0 +hashblocks_sha512 18 40963 595097 +216+38+26-102+34+0-97-44-1-3-22-39+63+664+96 +hashblocks_sha512 18 61445 892729 +181-28-87-197+839+169+66+157+70-35-199-155-86+0+23 +hashblocks_sha512 19 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 19 0 168 +740+36+3-6+1-9+2-9-5-7+1-9+0-6+0 +hashblocks_sha512 19 1 167 +55+4-8+0-5+1-8+2-6+2-6+1-6+1-8 +hashblocks_sha512 19 2 168 +29+0-7+0+0+0-10+0-10+0-7+1-7+0-9 +hashblocks_sha512 19 4 167 +31+0-5+1-8+0-8+1-8+0-8+2-6+1-6 +hashblocks_sha512 19 7 166 +0+1-4+2-5+3-5+3-7+3-5+2-7+2-4 +hashblocks_sha512 19 11 166 +0+2-4+2-7+1-4+2-8+2-5+3-5+2-7 +hashblocks_sha512 19 17 167 +2+0-5+1-8+0-5+1-9+1-6+2-6+1-8 +hashblocks_sha512 19 26 167 +2+2-9+1-8+0-5+1-6+2-6+2-6+1-8 +hashblocks_sha512 19 40 167 +6+2-6+0-5+1-8+1-6+2-8+1-5+1-5 +hashblocks_sha512 19 61 167 +7+1-8+0-5+1-8+1-6+2-6+2-6+1-8 +hashblocks_sha512 19 92 167 +0+1-5+2-6+1-6+1-6+1-6+2-6+1-6 +hashblocks_sha512 19 139 2243 +779+217+201+15-10-3-28-3+0-5+0-8+0-42+8 +hashblocks_sha512 19 209 2235 +125+34+20+9-1-5-2-4+8+62-7+8-10-25+0 +hashblocks_sha512 19 314 4282 +163-3-25+3+95+8+37+0-16-37+11+27-21-58-32 +hashblocks_sha512 19 472 6285 +145-4+112-44+65-19+35+60-34-40+36-32+0+31-31 +hashblocks_sha512 19 709 10352 +64+96+13-36-59-6+12-57+59-4-37+0-44+88+10 +hashblocks_sha512 19 1064 16484 +128+164-94+136-6-164+39+65+70-24+0+53-32-64-80 +hashblocks_sha512 19 1597 24662 +102+23-25-86+69+63-11+22+8+0-7+31-70-224-30 +hashblocks_sha512 19 2396 36871 +107-47-26-193+126-53+0-5+116+46-27+7+4-3+79 +hashblocks_sha512 19 3595 57209 +206+0+178-13+242-125+9-245-113-183+188-55-73+99+220 +hashblocks_sha512 19 5393 85737 +168+0-269+141-120+212-13-89+159+113-34+128-179+42-389 +hashblocks_sha512 19 8090 128611 +556+716+333+199+232-14+0-573-20-289+20-292-137+53-70 +hashblocks_sha512 19 12136 191721 +466+122+201+30-392+185-187+0-282+257-441-349+325-231-327 +hashblocks_sha512 19 18205 289354 +853-113+255+81-457-56+752-224-77-27+0+77-48+1067+178 +hashblocks_sha512 19 27308 433914 +680-256+576+362+163-742+74-261-12+0+586-768-144+421-200 +hashblocks_sha512 19 40963 652826 +15+107+433+451+594-412+140-151-404-565-164+0-281+728-218 +hashblocks_sha512 19 61445 979482 -115+744-620+0+205+4-168-267+49-687+589-247-53+82+856 +hashblocks_sha512 20 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 20 0 144 +761+100+14+0-2-2-3+5+18-2-1+0-2+5+4 +hashblocks_sha512 20 1 151 +79+26+46+5+1+0-1+0+0-1-2-7-7-9-2 +hashblocks_sha512 20 2 151 +51+5+3-1+1+1+0+0+0-1-3-7-9-10-8 +hashblocks_sha512 20 4 151 +22+2+3+3+1+0+0-2+1-1-3-9-2-7-9 +hashblocks_sha512 20 7 151 +22+2+3+3+1+0+0+1-1-1-2-7-7-7-7 +hashblocks_sha512 20 11 148 +25+5-1+0-4+0-4-6+1+0-4+0-4+0-4 +hashblocks_sha512 20 17 151 +22+2+3+3+1+0+0-2+1-1-3-9-2-7-9 +hashblocks_sha512 20 26 151 +22+2+4+2-1+1+0+0+1+2-3-7-9-8-7 +hashblocks_sha512 20 40 148 +25+5-1+0-4+0-4+0-4+0-4+0-4+0-4 +hashblocks_sha512 20 61 147 +26+0+0-3-5-6+2-5+2-5+2-5+2-5+2 +hashblocks_sha512 20 92 146 +27+2+0-2-2-4+3-4+15-4+3-4+3-4+3 +hashblocks_sha512 20 139 2004 +801+126+63+6-1-2-7-1-5+0-7+4+1+1-5 +hashblocks_sha512 20 209 2006 +142+45+11+8+1+9+0-6-11+0-11-5-8-1-8 +hashblocks_sha512 20 314 3894 +177+38+11+2+8+0-1-1-1+7-3-11-2-7+1 +hashblocks_sha512 20 472 5744 +138+36-17+8-9+2-5+0+2+2+1-27-19-22-22 +hashblocks_sha512 20 709 9422 +212+9-2+60-8+6-1+2-6-2+6-1-2+0+0 +hashblocks_sha512 20 1064 14996 +209-21+0+5-20+7-23-23+57+12+14-30-16+2-21 +hashblocks_sha512 20 1597 22404 +220-2+2+0-9+9+12+14-5+0+53+17-10-5-12 +hashblocks_sha512 20 2396 33513 +358+0-2+40+28-12+3-4-2-6-12+10-1+45+1 +hashblocks_sha512 20 3595 52031 +217+2-16-9+23+22+7-15+24+66+0-11-11-20-1 +hashblocks_sha512 20 5393 78008 +200+9-21+0-47+25-16+22-49-4+45+16-22+5-49 +hashblocks_sha512 20 8090 116877 +191+76-22-52+1-58+1-58+0-58+1-58+1-58+1 +hashblocks_sha512 20 12136 174290 +300+35+6-8+0+50-30-17-62+33+13+76-19-49-68 +hashblocks_sha512 20 18205 263200 +249+0-70-123+16-62-31-23+11-24+17-53+1031+171+201 +hashblocks_sha512 20 27308 394700 +516-75-91+58-51-12+143-89+0+8+10+22-130-110+104 +hashblocks_sha512 20 40963 593357 +71+37-128-121+160-265+0-16+18+30-66+133-79+33-54 +hashblocks_sha512 20 61445 890220 -71-33-183-140-130+22+781+301-45+510+20+33+361-52+0 +hashblocks_sha512 21 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 21 0 168 +692+36+14-7+0-6+0-7-5-9+0-10+0-6+0 +hashblocks_sha512 21 1 168 +45+12-7+1-10+0-7+3-7+0-10+0-7+0-7 +hashblocks_sha512 21 2 168 +33+0+10-1-10+0-7+1-7+0-7+0-7+1-7 +hashblocks_sha512 21 4 167 +32+1-7+0-9+1-9+2-9+2-6+1-6+1-8 +hashblocks_sha512 21 7 168 +1+1-7+1-7+2-7+1-9+1-8+0-10+0-7 +hashblocks_sha512 21 11 168 +2+1-7+1-7+2-7+1-9+1-9+0-7+0-7 +hashblocks_sha512 21 17 167 +0+1-8+0-2+3-9+1-6+1-9+1-5+1-6 +hashblocks_sha512 21 26 167 +3+2-8+2-9+1-6+0-6+1-9+1-5+1-6 +hashblocks_sha512 21 40 167 +5+2-8+2-4+1-6+0-5+1-6+2-8+1-6 +hashblocks_sha512 21 61 168 +2+0-6+1-7+2-7+1-9+1-9+0-7+0-7 +hashblocks_sha512 21 92 166 +8+2-5+2-7+2-8+1-7+3-5+0-7+1-7 +hashblocks_sha512 21 139 2237 +831+349+192-23-21+5+13+0-12+22-42+34-17-5-9 +hashblocks_sha512 21 209 2243 +172+13+6-16-21+22+0-41-33-25-38+0+16+14+0 +hashblocks_sha512 21 314 4270 +246-42+16-8-23+0-34+37-10+45+11-26+53-13+7 +hashblocks_sha512 21 472 6341 +1+69+43-16-29-40+16-2+24-30+62-66-33+19+0 +hashblocks_sha512 21 709 10437 -77+55-30-8+53-59-52+20-79+41+107+1+35+0-37 +hashblocks_sha512 21 1064 16596 -133-40-7+22+14+76+119+0-32-113-46+54+5-70+0 +hashblocks_sha512 21 1597 24800 -234+55+47-32+20-69+30-58-1+111+103-73+0+4-24 +hashblocks_sha512 21 2396 37087 -142+0+137-45+43-21+33-50-96-74+66+36+9-114+255 +hashblocks_sha512 21 3595 57543 +177+41-74-24+131+92+88-16-91-108-21-67+257+107+0 +hashblocks_sha512 21 5393 86318 +17+139-104+235-80-272-162-205+163+205+0-251+38-91+26 +hashblocks_sha512 21 8090 129350 -14+421-140+0-233+54+84-142+88-94+91+95+643-65-378 +hashblocks_sha512 21 12136 192860 +0-78-12+52+118-237+243-213+56+2-46+98-191+6-76 +hashblocks_sha512 21 18205 291211 +827+138+74-303+43-137-5-66-296+149+297-109+30+0-253 +hashblocks_sha512 21 27308 436890 +592+121-471-110+57+230+277+10-154+0-582+151-335-505-83 +hashblocks_sha512 21 40963 657097 +673-436+271+0-231-103+592-676-292+764-538+425+337-243+8 +hashblocks_sha512 21 61445 985995 -1673+26-48-510+289+499-627+452-476+721+675-936+0-327+825 +hashblocks_sha512 22 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 22 0 143 +762+94+36-1+0+4+6-2+18-2+0+5-2-3-2 +hashblocks_sha512 22 1 153 +96+29+3-1+1+0+0+0+0-6-6-5-12-10-5 +hashblocks_sha512 22 2 142 +49+22+38+4+0+0-1-1-2-1-1+1+6-1-2 +hashblocks_sha512 22 4 153 +42+1+2+1+1+0+0+0+0-6-6-5-12-10-5 +hashblocks_sha512 22 7 154 +20-1+3+0+0+0+0+0+9-6-12-12-12-12-12 +hashblocks_sha512 22 11 142 +32+5+3+0-1+0+1+7-1+1+6-1-2-1-1 +hashblocks_sha512 22 17 141 +34+6+6-1+8+0-1+0+0+2+7+0-1+0+0 +hashblocks_sha512 22 26 153 +22+0+2+1+1+0+0+0+0-6-6-5-12-10-5 +hashblocks_sha512 22 40 153 +22+0+2+1+1+0+0+0+0-6-6-5-12-10-5 +hashblocks_sha512 22 61 142 +33+5+3+0-1+0+1+7-1+1+6-1-2-1-1 +hashblocks_sha512 22 92 141 +33+6+6-1+8+0-1+0+0+2+7+0-1+0+0 +hashblocks_sha512 22 139 2191 +931+337+84-1-3+4-4+5-7+0-6+7-4+0-9 +hashblocks_sha512 22 209 2196 +203+22+10+3-3+3-3+2-7+5-9+0-13-4-13 +hashblocks_sha512 22 314 4269 +156+43+33+27+36+33-1-2-5-1-4+0+0+12-4 +hashblocks_sha512 22 472 6296 +152+64+5+0+0-5+3-7+1-7+3-9-5-12-8 +hashblocks_sha512 22 709 10376 +103+11+56-6+6-6+0-2+1-10+2-6+2-16-2 +hashblocks_sha512 22 1064 16505 +90+0+4+18+22-12-6+10+4-15-11-23+10-16-18 +hashblocks_sha512 22 1597 24674 +113+24+18-12-5+39-9+2-1-21+44+0-2+6-6 +hashblocks_sha512 22 2396 36924 +133+6+5-12+1-6-3-13-3+0+3+3+0-5-9 +hashblocks_sha512 22 3595 57334 +138-14+40+19+20-3-13+28-9+0-14+28-10+0-13 +hashblocks_sha512 22 5393 85918 +160+5+3-3+12+19-10+54-21+69-12-6-5+0-4 +hashblocks_sha512 22 8090 128806 +185+75+19+21-14-35+18+40+4-16+0-47-6-33-17 +hashblocks_sha512 22 12136 192046 +268+0-18+19+8-29+24+5-41+3-4+7-14-8-13 +hashblocks_sha512 22 18205 290018 +362+24-29+0-20-4+9+9-32+33-13+810+113-29-32 +hashblocks_sha512 22 27308 434972 +411+51+29+28-87-1-90+16-64-10-65+59-84+0+75 +hashblocks_sha512 22 40963 653937 +143+0+6-40-92-201+68+17-92-156+0-2+88+728-25 +hashblocks_sha512 22 61445 980900 +189+111-77+909+166-16+56+0-28-86+70-124+42-18-15 +hashblocks_sha512 23 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 23 0 105 +706+17-1-3+1-1+2+1+16-1-2-2+1-1+0 +hashblocks_sha512 23 1 105 +96-3+2+2+0+0+0-2+20+2-3-2-2+1-1 +hashblocks_sha512 23 2 105 +76+0+1+1-2-2+1+29-2+0+1-2+1-2-2 +hashblocks_sha512 23 4 106 +24-1+1+0-1+0+0+0+0-3+0-3-3+0+0 +hashblocks_sha512 23 7 104 +22+1-2-1-1+1+0+3+0+0+1-1-1+2+0 +hashblocks_sha512 23 11 104 +21+1+4+2+0+0-2-1-1+2+2-1+2-1-1 +hashblocks_sha512 23 17 104 +26+3+2+1+0+0+0+0+1-1-1+2+0+3+0 +hashblocks_sha512 23 26 104 +22-2-2-1-1+1+0+3+0+0+1-1-1+2+0 +hashblocks_sha512 23 40 105 +28-3+2+1+0+1-1-2-2+1-1+0+1-2+1 +hashblocks_sha512 23 61 104 +28-1+0+2+1-1+2-1-1+2+0+3+0-1-1 +hashblocks_sha512 23 92 106 +23-1-1+1-3-2+0+0+0-3+0-3-3+0+0 +hashblocks_sha512 23 139 1873 +711+306+227+22+0+0-4-2-2+0+0-2+1+0-5 +hashblocks_sha512 23 209 1872 +215+19+2-1+0-1+6-5+0-3+2+1-2-5-3 +hashblocks_sha512 23 314 3647 +162+8+1+0+1-3-6+3-4+2+0-6-2-5-5 +hashblocks_sha512 23 472 5384 +134+30+4-3+2-1+7+0+2+0-1+1-5-9-5 +hashblocks_sha512 23 709 8896 +143+31-9-9-1-2+0+7-2+2-9-1+1+4+4 +hashblocks_sha512 23 1064 14177 +64+31+20-19+2+3-21-10-6-20+1+9-22+0-15 +hashblocks_sha512 23 1597 21219 +87+45+11+0-14+0-7-8-14+7+7-18-15+10+48 +hashblocks_sha512 23 2396 31763 +110+5-14-8+1-18+0-2+62-11+39+9-6-5+4 +hashblocks_sha512 23 3595 49318 +102+5+3+75-1+0-24-21-7+12-14-5+22-17+18 +hashblocks_sha512 23 5393 73922 +123-64-23+0-49+27+3-30-18+10+32-52+726-36+41 +hashblocks_sha512 23 8090 110795 +253+31-19+8-26-24+37-53+14-15+16+0+0-3-16 +hashblocks_sha512 23 12136 165219 +242+10-27-8+4+13-17+43+0-24-34-20+89+38-9 +hashblocks_sha512 23 18205 249583 +317-4+17-87-50-18+9+37+74-39+0-8+713+53-78 +hashblocks_sha512 23 27308 374277 +400+168+9-54+50-6-31-124-3+0+27-57+44-15+8 +hashblocks_sha512 23 40963 562530 +179+27+69-78-22+32-23+21-78+0-14+67+158-35-17 +hashblocks_sha512 23 61445 843858 +324-60+31-63+0-52-92+830+7+12-32-4-11+23+14 +hashblocks_sha512 24 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 24 0 149 +479+77+43+28+3+0+0+0+18+1-2+0+0+0+0 +hashblocks_sha512 24 1 149 +80+27+4+1+0+0+0-1+0+0+0+0+0+0+0 +hashblocks_sha512 24 2 149 +82+24+3+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 24 4 149 +49+3+0-2+0+0+0+0+15+0-2+1+0+0+0 +hashblocks_sha512 24 7 149 +26+3+0+1+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 24 11 149 +26+3-1+1+3+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 24 17 149 +26-3-2+2+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 24 26 149 +26+3-2+1+4+0+0-1+0+0-1-1+1+0+0 +hashblocks_sha512 24 40 149 +26+3-2+1+4+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 24 61 149 +26+2+0+1+2+0+0+0+15+0-2+0+0+0+0 +hashblocks_sha512 24 92 155 +22-1+1+1+0+0+1+0+7+0+0-1+0+1+1 +hashblocks_sha512 24 139 2318 +359+110+41+20+0-2-3-2-3-2+0+0+0-2-3 +hashblocks_sha512 24 209 2315 +73-1+0+2+2+1+0+0+0+3+1+2-1+0-1 +hashblocks_sha512 24 314 4552 +120+54-1-3+1-3+1-1+0-4+0+4+3-4+4 +hashblocks_sha512 24 472 6699 +119+14+18+24-6-4+0-6-4+3+7+3-4-6-1 +hashblocks_sha512 24 709 11046 +97+77+27+17+22+24-3+5+0-11-9-16-16-17-1 +hashblocks_sha512 24 1064 17570 +98+101+71+1-6-6-9-33+4+0+9-2+0-6-32 +hashblocks_sha512 24 1597 26274 +93+17-1+0-6+7-7+2+28+0+1-21-14-5+35 +hashblocks_sha512 24 2396 39291 +99+1+2-1+25-10+0-5-10+7+3-7-9+2+0 +hashblocks_sha512 24 3595 61015 +79-14+35-8-4-38-9+6+27-18+0+29+16-32+27 +hashblocks_sha512 24 5393 91416 +189+9-41-14-4-16+34-2+35-42+36+0+16+31-7 +hashblocks_sha512 24 8090 137018 +407+0-50+28+26-43-27+1-20+21-24+9-35+40-17 +hashblocks_sha512 24 12136 204308 +707+9-45+23-67-72-58-61+37+11+19+5+0-97-34 +hashblocks_sha512 24 18205 308578 +834-12+38-80-16+113+29+0-79+2-2-91-30+109+29 +hashblocks_sha512 24 27308 462797 +1187-48-8-16-61+132+180-28+0+63+35+0+48+29-6 +hashblocks_sha512 24 40963 696603 +237+0+79+50-24+0-68+64-5-23+19+65-7-75+64 +hashblocks_sha512 24 61445 1044988 +210-128+20-38+710+44+40-66-128-122-116+40+18+0-67 +hashblocks_sha512 25 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 25 0 101 +340+41+15+15-1+0+1+0+17-2-2+0+0-1+0 +hashblocks_sha512 25 1 100 +70+18+0-2+0-2+0-2+14+0-2+1+0+2+0 +hashblocks_sha512 25 2 100 +46+17-2-1+0-1+1-1+0+0-1+2+1+0-1 +hashblocks_sha512 25 4 101 +28+13-1+0+0+9+0-1-2+1+0-1-2+1+0 +hashblocks_sha512 25 7 100 +12+19+0-1+0-2+0-1+18+2+1+0-1+2+1 +hashblocks_sha512 25 11 101 +10+9-2-1-2-1+2+1-2+1+0-1-2+1+0 +hashblocks_sha512 25 17 100 +14+17+0-2-1+1+0-1+1+0+1-1+1+1+0 +hashblocks_sha512 25 26 101 +12+9+0-3+0+1+10+0+0+0-1+0-1-2+0 +hashblocks_sha512 25 40 100 +16+20+0-2-1+0-1+2-1+0-1+2+1+0-1 +hashblocks_sha512 25 61 100 +13+21-1+0-1-1+0+2-1+2+1+0-1+2+1 +hashblocks_sha512 25 92 100 +14+17+0-2-1+1+0-1+15+0+1-1+1+1+0 +hashblocks_sha512 25 139 1963 +212+91+7+5+1+2-2-3+0-1+0-1-1-3-1 +hashblocks_sha512 25 209 1962 +46+11+0-2+0-1-1-1+0-2-2-1+1+1+19 +hashblocks_sha512 25 314 3826 +115+56+49+95+81+1-4-2-2-1-3-2-1+0+0 +hashblocks_sha512 25 472 5726 +77+11+44+6-1-4-1+1-2+0+0+2+1-3-1 +hashblocks_sha512 25 709 9488 +100+119+38+19+2-1-2-5-5+0-4-3+1-2+2 +hashblocks_sha512 25 1064 15122 +87+125+20+1-5+2+4-3+0+0+0-6-6-6-2 +hashblocks_sha512 25 1597 22647 +112+40-10+9-17-12+7-4+5-19+6-11+0-21+3 +hashblocks_sha512 25 2396 33926 +167+4-4+1+10-6+3+0-3-8+2-2-8-5+6 +hashblocks_sha512 25 3595 52710 +169-3+16+2+0+0-4-13-3+8+0-5-2+5+3 +hashblocks_sha512 25 5393 79013 +186+2+0+9+7-7+6-8-18-15+6-8-28-6+656 +hashblocks_sha512 25 8090 118465 +266+12+6-6-11+20+22-10+1+19-13-10-11-3+0 +hashblocks_sha512 25 12136 176704 +196+0+22-2+23-18-17-30+41-7+16-12+8-12+23 +hashblocks_sha512 25 18205 266870 +183+0-28-6-13+47-3-5+4+25-51+904+32-23+26 +hashblocks_sha512 25 27308 400273 +220+14-65-11+34-48+15+10-23-97-36-32+9+0+10 +hashblocks_sha512 25 40963 601358 +226-94-47+31-41-17+34+15-32-94+0+76-137+63+0 +hashblocks_sha512 25 61445 902134 +125+62+56+111-67+1264+118+3-6-62-174-143-9+0-200 +hashblocks_sha512 26 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 26 0 154 +656+90+21+20+16-2-3+0+10-1+0-2-3-2-3 +hashblocks_sha512 26 1 153 +74+2+5+5-2+2-1-1+0+0+0+0+0+0-2 +hashblocks_sha512 26 2 153 +69+6-1-2-2+0+0+0+12-3+0+1-2-3+1 +hashblocks_sha512 26 4 155 +37+4+2+0+2+2+6+0+1+0+0-1-4-4-4 +hashblocks_sha512 26 7 153 +41+5+5+7-1-3+0+0+0+0+0+0+0-1-3 +hashblocks_sha512 26 11 153 +22-1+5+5-2+2-1-1+0+0+0+0+0+0-2 +hashblocks_sha512 26 17 153 +25-1-1+4-2-1-1+0+11+3-3+0+0+0+0 +hashblocks_sha512 26 26 156 +23-1+3+3+1+0-1+3-4-1-1-2+0+0+0 +hashblocks_sha512 26 40 156 +19-3+2+3+1+0-1+3-4-1-1-2+0+0+0 +hashblocks_sha512 26 61 152 +23+0+5+6-1+3+0-1+12-1-1-1-1+0-1 +hashblocks_sha512 26 92 156 +20-3+2+3+1+0-1+3-4-1-1-2+0+0+0 +hashblocks_sha512 26 139 2092 +308+83+86+14-2+0-3-7-1+45-1-2+0+10+0 +hashblocks_sha512 26 209 2089 +115+12+23+1-1-1-1-1-1+2-1+15+2+0-1 +hashblocks_sha512 26 314 4066 +96+37-3+2-5-2+0+0+4-4-2+6-2+0-4 +hashblocks_sha512 26 472 6005 +125+55-8+4-5-3+1+1-10-7-1+5+0-8+27 +hashblocks_sha512 26 709 9885 +98+24+0+31+3-12-8+39+6-22+29+0-16-8-24 +hashblocks_sha512 26 1064 15708 +27+42+0-11+20-24+31+1-24-7+7-18-29+68-23 +hashblocks_sha512 26 1597 23471 +91+27-5+41-4-9+52-3-20-2+8+53+8-4+0 +hashblocks_sha512 26 2396 35103 +137-11+56-36-12+20+10-7+21-14-13+29-23+0+34 +hashblocks_sha512 26 3595 54528 +26+0-88-4+13-50+6-44+2-71+4+6-73+16-77 +hashblocks_sha512 26 5393 81654 +63+51+6-2-3+8-50-11+0+15+39-25-7+19-7 +hashblocks_sha512 26 8090 122334 +184+3+60+20+78-14-7+4+0+765-19-54-53-40-26 +hashblocks_sha512 26 12136 182404 +373+0+61+76-13+18-11-5+34-21-16-2+9-43+5 +hashblocks_sha512 26 18205 275480 +514-20+9-33-35+0+7+0-19+35+14+10-41-36+31 +hashblocks_sha512 26 27308 413255 +1083-4+12-19-20+82+0+105-62-60+11-36+38+21-30 +hashblocks_sha512 26 40963 622298 +149+78+11+0-40+2+15-131+180-68+27-76-12-58-50 +hashblocks_sha512 26 61445 933178 +490+136+438+348+377+434+908+0-296-348-210-281-193-16-270 +hashblocks_sha512 27 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 27 0 162 +1834+40+10-2+0-4-1+3-3-1+4+4+4-2-2 +hashblocks_sha512 27 1 159 +55-1+4-1-2+0+3+0+7-1+0+0+0+0+0 +hashblocks_sha512 27 2 159 +43+1+0+4-1-1+3+2-1+0+0+0+0+0+0 +hashblocks_sha512 27 4 159 +45+4-1+8-2+3+2-1+0+0+7-1+0+0+0 +hashblocks_sha512 27 7 159 +40+0-1-1-1+3+2-1+0+7+1+1+0+0+0 +hashblocks_sha512 27 11 160 +6-1+2+1-3+2+1-3+0+2+2+0+0+0+0 +hashblocks_sha512 27 17 159 +11-1+3-2+0+3+2+3+3+0-1+0-1+0-1 +hashblocks_sha512 27 26 159 +11+0-2-1+4+2-1-1+0+0+7+1+1+0+1 +hashblocks_sha512 27 40 160 +14+2+5+5+3-3+2+1-2-2+0+0+0+0+0 +hashblocks_sha512 27 61 160 +10-1+1-2+7-3+2+1-2-1-1+6+0+0-1 +hashblocks_sha512 27 92 159 +15+1-1-1-1+3+2-1-1+3-1+0+0+0+0 +hashblocks_sha512 27 139 1936 +846+21-1+6+0+5-2+3-4+7-2+0-4+3-6 +hashblocks_sha512 27 209 1936 +15+14+0-1-2+10-6+6-6+2+0+4-6+3+0 +hashblocks_sha512 27 314 3705 +52+60+47+29-1+6-1-4-5+6-1+2+0-4-6 +hashblocks_sha512 27 472 5496 +31+10-6-8+0+5-1+0-11+6-4+15-10+6-6 +hashblocks_sha512 27 709 9043 +57+11-8-14+8-8-8+5+0+8-6+10+0+1-10 +hashblocks_sha512 27 1064 14349 -8+8+28+0+16-1-15-4+9-13+6+0-5+0+0 +hashblocks_sha512 27 1597 21451 +40+14-16+11+6-12+9+0+5-3-4-12+11-6-3 +hashblocks_sha512 27 2396 32088 +18-9+13+13-4-6+0+30-3-10-11+0+2+18-5 +hashblocks_sha512 27 3595 49814 +51+19+17+0-35+4-11+0+9-23+13-8-41-20-10 +hashblocks_sha512 27 5393 74634 +63-14+10+1-4-16+14-46+7+14-57+22+0-22-23 +hashblocks_sha512 27 8090 111842 +205+46-20+0+40+100-59-100+10+23-17-88-30+35-18 +hashblocks_sha512 27 12136 166752 +368+49+65-8-70+55-10-37+0+31+55-84-58-30+61 +hashblocks_sha512 27 18205 251798 +687+45-13+186+44-168+72-7+0+229-78+55-210-23-6 +hashblocks_sha512 27 27308 377883 +687+84-90+79-28+98-9+50-131+275-81-11-91+187+0 +hashblocks_sha512 27 40963 568650 -15-57+830+72+0-144+58+35-21+243+60-64-102-81+45 +hashblocks_sha512 27 61445 853470 +57-91-455+432+348-16-298+460+144+2-228+1179-128-229+0 +hashblocks_sha512 28 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 28 0 152 +785+84+25+6-2+0-8+0+12-7-3+1-8+0+0 +hashblocks_sha512 28 1 156 +152+1+0+3+2+0+2+0+9-1+0-1-2-4-3 +hashblocks_sha512 28 2 156 +66-7+37+2+0+2+0+2+0+1+0-4-4-5-6 +hashblocks_sha512 28 4 155 +68-7+3+1+3-2+2+3+8+0-1-3-2-2-3 +hashblocks_sha512 28 7 156 +71-8+2-3+1+2+0+2+0+1-2-1-4-7-6 +hashblocks_sha512 28 11 156 +37-8+2+0+2-3+1+2+0+1+0-4-4-7-1 +hashblocks_sha512 28 17 155 +19+0+3+2+3+1+3-2+3+0-5-3-2-4-2 +hashblocks_sha512 28 26 156 +19-5+1+3+2+0+2+0+9-2+1-9-5-4-6 +hashblocks_sha512 28 40 157 +20-4-2+0+0+1+1+1+1+1-2-7-6-7-7 +hashblocks_sha512 28 61 154 +20+0+4+1+0+1-3-2-4-1-2+1-3-3+0 +hashblocks_sha512 28 92 154 +21-1+3+0+4+3+5+4+11-1-4-3-2-4-4 +hashblocks_sha512 28 139 2081 +337+104+45+3+81+0-4-3-7+0-4-5-3+34-5 +hashblocks_sha512 28 209 2077 +149+55+34+16+57-1-2-1+0-1+1+38-1-1-1 +hashblocks_sha512 28 314 4082 +156+38-41-6-41-39+30-5-7-4+2+6+5+0+4 +hashblocks_sha512 28 472 5994 +173+11+33-2+61+0-3+38-13-9-21+31-15+29-16 +hashblocks_sha512 28 709 9891 +63+44-37-35-32+28-48+0+1+0+4-39-47-50+1 +hashblocks_sha512 28 1064 15699 +104+31+17-58+2-20-4-10+63+854-41+0+53-66-28 +hashblocks_sha512 28 1597 23442 +148-35-3-1+20+0-2+21-32+3+29+5+16-65-36 +hashblocks_sha512 28 2396 35072 +102+17+5-39-37+48-36+80+27+14+0-40-34-54-3 +hashblocks_sha512 28 3595 54431 +260+3+34+60-14+46-16-55+68+56-11+0-8-42-10 +hashblocks_sha512 28 5393 81568 +156+19-40-54+0-96+45+41+40-30-51+6-26-75+19 +hashblocks_sha512 28 8090 122248 +368+107+50-24+41+1-7-57+44+2+0-78-36-22-1 +hashblocks_sha512 28 12136 182364 +491+30+26+0-31+5+56-257+60-86-80+17-150-33-18 +hashblocks_sha512 28 18205 275341 +860+5-72+41+41-51-58-124+75-181-24+0+135+67-82 +hashblocks_sha512 28 27308 412938 +1178+29-162-151-118-200-91+1016+435+259+89+0-121-86+69 +hashblocks_sha512 28 40963 621746 +369+0-86+234-60-45+398+410+82-26-124+122-43-67+59 +hashblocks_sha512 28 61445 932612 +295-9+37-52-110-4+120-72+0-44+2-7+586+30+8 +hashblocks_sha512 29 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 29 0 170 +463+35+20+7+11-2+2+0-5-2-1+0+0-1+3 +hashblocks_sha512 29 1 160 +66+21+2-2+3-1+6+0+0+2-2+0-1+0+0 +hashblocks_sha512 29 2 160 +61+0+2+2+2-1+2-2-1+0+0+0+0+0+0 +hashblocks_sha512 29 4 160 +11+6+0-1+2-2+3+3-2+2-2-2+2+0+0 +hashblocks_sha512 29 7 160 +10-1-1+2-2+3+3+0-1-1-2-1+0+0+0 +hashblocks_sha512 29 11 160 +11+6+0-1+2-2+3+3-2+2+0-1-1-1-1 +hashblocks_sha512 29 17 160 +11-1-1-1+2-2-1+0+0+6+0+0+0+0+0 +hashblocks_sha512 29 26 160 +14-2-1+2-2+3+3+0-1+0-1+0+0+0+0 +hashblocks_sha512 29 40 160 +14+0-1-1-1+2+2-1+6-2+2+0+0+0+0 +hashblocks_sha512 29 61 160 +11+6+0-1+2-2+3+3-2+2+0-1-1-1-1 +hashblocks_sha512 29 92 160 +14+2-2+3+3+0-1+0+0-1+0+0+0+2+2 +hashblocks_sha512 29 139 1941 +303+56-7+2-7+0-7+2-7+1-5+8-5+8-10 +hashblocks_sha512 29 209 1941 +27+0-9+6-8+6-1+2-10+4-4+6-6+4-9 +hashblocks_sha512 29 314 3705 +53+36+32+4-4+0+13+0-2-1-6+7+1-4-3 +hashblocks_sha512 29 472 5495 +25-2-6-5+0+9-3+11-4+11+0+24-1+6-1 +hashblocks_sha512 29 709 9042 +41+13-2+9-3-1-6+7+7+0-8+2-15+66-9 +hashblocks_sha512 29 1064 14350 +9+21+19+5+0-5+0-22-5+4+3-15+2-10-9 +hashblocks_sha512 29 1597 21444 +23+7+7-23-23+26+6-27+4-14-35+0+9-12-38 +hashblocks_sha512 29 2396 32079 +105+15+29-21-13+0-6+1+30+7+17-12+0-7-5 +hashblocks_sha512 29 3595 49797 +42+13+47+18-26-22-4-33-9-15+59+3-43+10+0 +hashblocks_sha512 29 5393 74601 +44+7-42+18-16+81+19-29-16+0-35-16-10+84+18 +hashblocks_sha512 29 8090 111809 +129+0+26+53-92+70+13-35-30+24-17-11-64+11-7 +hashblocks_sha512 29 12136 166682 +479+0-8+30-47-9+95-109-69+8-1+103+13+0+181 +hashblocks_sha512 29 18205 251944 +618+7+0-53+22-127+13-14+3-151-3-119+110-232+28 +hashblocks_sha512 29 27308 377969 +740-109+0+100+197-150-17+198-112-277-74-1+16+973+243 +hashblocks_sha512 29 40963 569162 +5+63+73-181+280+69-41-121-242-34-5+688-212+32+0 +hashblocks_sha512 29 61445 854808 -758-1069-924-134-112-34+443+653+17+655+581+419+317-51+0 +hashblocks_sha512 30 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 30 0 155 +758+95+34-3+0-6-2-2+11-6-4+0-5+3+1 +hashblocks_sha512 30 1 152 +153+5-1-3+0-1+1-2+12-2-1+0+1+1+2 +hashblocks_sha512 30 2 152 +84-1-1+0+2+0+0+0+2+0+0+0+0+0-1 +hashblocks_sha512 30 4 156 +38+0+33+0+0+2-1+2+10-4-3-5-5-6-5 +hashblocks_sha512 30 7 151 +37+1+0+0+2+0+0-1+0-1+0-1+0-1+0 +hashblocks_sha512 30 11 153 +24+0+4+3+2+6+5-1+1-1+0+0+0+0-2 +hashblocks_sha512 30 17 155 +20+0+6+0+2+5+6+0+4-3-4-4-2-5-2 +hashblocks_sha512 30 26 155 +20+0-1-1+0+0+6+1+3-4-4+0-5-5-1 +hashblocks_sha512 30 40 155 +20-1-1-1+0+0+2+2+2+1+2-1-2-3-4 +hashblocks_sha512 30 61 153 +22+2+0+1+2+1+6-2+2-2+0+0+0+0-2 +hashblocks_sha512 30 92 153 +21-1-5+1-3+0+0+1-3+0+2+5-2-1-2 +hashblocks_sha512 30 139 2319 +571+81+75-5-6+5+0+6+7-6+0-6-2-2-7 +hashblocks_sha512 30 209 2323 +75+4+1+2+3+71-3-3+21-3-1-3-3+0-3 +hashblocks_sha512 30 314 4522 +82+75+6+38-2+0-4+0+0+4-2-2-3+0+1 +hashblocks_sha512 30 472 6713 +51+18+55+18+1-2-3+3-9+0+0-3-7+0+5 +hashblocks_sha512 30 709 11063 +67+35-3-8+40-8+33-5+36-5+38-5+0-5+0 +hashblocks_sha512 30 1064 17611 +27-25+0+21+53+0+36-14+34-17-36-2-10+33-9 +hashblocks_sha512 30 1597 26333 +32+0+9+1+11+11+19-19-8-17-10+27-17-10-8 +hashblocks_sha512 30 2396 39379 +34+16+28+67-2-16-13+28-8-12+21-17+0+27-8 +hashblocks_sha512 30 3595 61157 +36-23+13-19+18-9-28+18+0+14-34+8+1-38-11 +hashblocks_sha512 30 5393 91532 +226+2-47-39+30+10-58+27+13+8-34-65-13+0-29 +hashblocks_sha512 30 8090 137138 +471+0-78+4-5+0-65-6-34+12+65-2+3+2-48 +hashblocks_sha512 30 12136 204414 +478-21+13-25+57-41+40+6-11+2+0-63-19-37+25 +hashblocks_sha512 30 18205 309185 +811+52+62-1+47+0+49+58+956-253-442-457-428-514-431 +hashblocks_sha512 30 27308 463243 +909-30+0-23+59-50+118-70+94-97+31-52+5-78+1248 +hashblocks_sha512 30 40963 697596 +833-77-13-149-17+32-65-61-71+0+1510+744+746+737+784 +hashblocks_sha512 30 61445 1047611 -1332+9-201-55-32+62+24-9-57+24+30+0+741-162+187 +hashblocks_sha512 31 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 31 0 104 +515+43+17-1-3-1+1-1+18+0+1-1-3+0+1 +hashblocks_sha512 31 1 104 +43-2+1+0+0+1+0-3+0+1+0-1+0+0-1 +hashblocks_sha512 31 2 103 +44-2+0+1+0+1+0+0+0+1+0+0+1+0+1 +hashblocks_sha512 31 4 103 +45+2+0-2+0+1+0+0+1+1+0+1+0+1+0 +hashblocks_sha512 31 7 103 +52+0-2-2+0+2+1+1+0+0+1+1+0+1+0 +hashblocks_sha512 31 11 103 +15+1+0+0-2+1+1+0+0+0+1+0+1+1+0 +hashblocks_sha512 31 17 103 +15+1+0+0-2+1+1+0+0+0+1+0+1+1+0 +hashblocks_sha512 31 26 103 +16+1+0+0-2+1+1+0+0+0+1+0+1+1+0 +hashblocks_sha512 31 40 104 +15+1+1-1+0+0-1+0-1+0-1-1+0-1+0 +hashblocks_sha512 31 61 103 +15+0+0+0-2+1+1+0+0+0+1+0+1+1+0 +hashblocks_sha512 31 92 104 +14-3-1-1-3+0+0+1+21+0-1+0-1-1+0 +hashblocks_sha512 31 139 1984 +178+85+32-1+0+0-5-5-1+0-1-4+0+0+1 +hashblocks_sha512 31 209 1984 +49+6+3+3+2+0+0-1-1+0+0+0-2-1+0 +hashblocks_sha512 31 314 3882 +88+40+39+9+5+0-2-1-2+1+0-3+2-1-2 +hashblocks_sha512 31 472 5750 +50+9-15-20-19-21-19-21+4+28+0+2+5+0+3 +hashblocks_sha512 31 709 9496 +71-18-16-6-24-25+0-25+0+22+3-25+1+27+1 +hashblocks_sha512 31 1064 15109 +38-12+4-22-25+28-2+5+56+4+6-4-28+0-6 +hashblocks_sha512 31 1597 22616 +14-9+26-6-26+20-4+18+22-28-6+0+16+18-3 +hashblocks_sha512 31 2396 33880 +26-1-18+4-1-21+8+1+0-22+0+2+1+0+3 +hashblocks_sha512 31 3595 52589 +21-11-7+3-19+4-22-22+1-21+0+1-19+1+3 +hashblocks_sha512 31 5393 78781 +26-2-4-11+5+7-18+27+7+0-6+4-1-7+26 +hashblocks_sha512 31 8090 118067 +75+0+0-5+12-8+24-3+1-10-1-14+4-13+0 +hashblocks_sha512 31 12136 176053 +131+29+53+1-1+18-2+0-2-1+3-5-3-2+2 +hashblocks_sha512 31 18205 265894 +152+0+4+4+1-3+3-7-10-5+6-12+4-3-3 +hashblocks_sha512 31 27308 398775 +216-11+8+11+0-3-1-10-10+9+851+145-14-1+3 +hashblocks_sha512 31 40963 599296 +92-22-18+7+0-69+0+8+8+757-26-12+8+26-9 +hashblocks_sha512 31 61445 899389 -261+364-279+180-20+88+18+0+60+0-24-33-25-31+552 +hashblocks_sha512 32 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 32 0 147 +616+76+17+19+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 1 147 +107+58+3+1+1+1+0+0+15-1+0+0+0+0+0 +hashblocks_sha512 32 2 147 +101+7+0+1-1-1+0+0+15-1+0+0+0+0+0 +hashblocks_sha512 32 4 147 +39+2+2+0+0+0+0+0+15-1-1+0+0+0+0 +hashblocks_sha512 32 7 147 +39+8+4+1+0+0+0+0+15-1-1+0+0+0+0 +hashblocks_sha512 32 11 147 +40+8+5+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 17 147 +40+8+4+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 26 147 +39+10+4+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 40 147 +39+8+5+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 61 147 +39+10+4+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 92 147 +15+10+4+1+0+0+0+0+15-1-1+0+0+0+0 +hashblocks_sha512 32 139 1608 +349+124+54+36+33+1-2+0+1+0+0+0-1-2-1 +hashblocks_sha512 32 209 1610 +81+0-2+2+1-4+0+2+3-4+0+2+3-4-5 +hashblocks_sha512 32 314 3118 +106+18+1+2-6-5-3-2+0-1+1-1-1+1+0 +hashblocks_sha512 32 472 4536 +89+35-10+0-3+3+0-2+5-1+8+0-3-2-3 +hashblocks_sha512 32 709 7439 +165+11+6+0-1-3+5+4+2+0-2+1-1+0-2 +hashblocks_sha512 32 1064 11798 +72+39+1+3-4-2-4-5+21-3+0+2-1-2+5 +hashblocks_sha512 32 1597 17632 +56+15-24+5+53-4+27+1-7-20+0-3-30+2-5 +hashblocks_sha512 32 2396 26330 +129+13+59+0-1-5+0-6-7+6+55-6-6+1+0 +hashblocks_sha512 32 3595 40848 +115+21+52+5+0+1-1+8-8+10-6-4+0-2-10 +hashblocks_sha512 32 5393 61211 +139+1-13-6+764-22-12+17-13+0+1-1-17+5+10 +hashblocks_sha512 32 8090 91756 +225-14-33+19-11+3-10+3+5-1-2+13+0+3-3 +hashblocks_sha512 32 12136 136740 +261-37-2-23+0-8-24+10+0+35-38+6+16-13+3 +hashblocks_sha512 32 18205 206452 +188+8-8-7-37+102-10-52+6+30-16+0+67-28+29 +hashblocks_sha512 32 27308 309567 +203-60+99-74+49-13-21-36+9+20+29-29-16+84+0 +hashblocks_sha512 32 40963 465046 +1028+108+40-28-32-18+18+65-16+8+0-3+72-23-8 +hashblocks_sha512 32 61445 697622 +458+72-3+16+0+86+28-44-134-246-92-36-162+16+747 +hashblocks_sha512 33 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 33 0 103 +630+55+22+21+14+12-4-3+12-1-4-2-4-2+0 +hashblocks_sha512 33 1 101 +39+27+0-2+1+0-2-2+0-2-1+0+1-2+0 +hashblocks_sha512 33 2 101 +11+1+0+2+32+0-2-2-1+0-1-2+0-2+0 +hashblocks_sha512 33 4 100 +13-1-2+0+2+1+2-1+15-1+0-1+1-1+1 +hashblocks_sha512 33 7 101 +12+1-3-1-2+0-2-2+0-2+0+2-1+0+1 +hashblocks_sha512 33 11 101 +12+1-2+2+0+0-2-2+0+2-1+0+1-2+0 +hashblocks_sha512 33 17 101 +11-1-2+2+0+0-2-2+0+2-1+0+1-2+0 +hashblocks_sha512 33 26 101 +11-3-3+0+1+2-1+1+0-2+0+2-1+0+1 +hashblocks_sha512 33 40 100 +13+0-2+1-1-1+1-1+15-1+1+3+0-1+1 +hashblocks_sha512 33 61 101 +9-1+0+0+1+0+1-2+14+2-1-2+0-2+0 +hashblocks_sha512 33 92 100 +16+0-2+1-1-1+1-1+1+3+0-1+1-1+1 +hashblocks_sha512 33 139 1402 +214+88+46+11+0-1+0+0+1+0+0+1+0+0+1 +hashblocks_sha512 33 209 1402 +82+0+0-1-1-2+0-2+0+0+0+1+1+0+1 +hashblocks_sha512 33 314 2704 +83+66+13+8+8+11-3-1-2-2+0-2-1-1+0 +hashblocks_sha512 33 472 4019 +55+1-6-4+4+4-4+6-1-1+0+0-4+0+3 +hashblocks_sha512 33 709 6616 +134+31-5-3+5-1-7+0+1-1+5+1+0-2+0 +hashblocks_sha512 33 1064 10527 +81+50+10-1+0-2+7+14-10+8+0-2-3+2-9 +hashblocks_sha512 33 1597 15749 +75+47+9-13-7-2+0-6+30+19+5-1+4-2-2 +hashblocks_sha512 33 2396 23596 +63+12+6-17-2+1-5+3-18+0-10-15+12+0-11 +hashblocks_sha512 33 3595 36650 +56+5-12-2-24+7+0-5-15+19+0+0+0+0+3 +hashblocks_sha512 33 5393 54917 +66+21-1-7-3-13-21-13+718-10+30+11+2+0+3 +hashblocks_sha512 33 8090 82293 +254+14+5+9-20-13-3-6-40-18+0+3+12+6-7 +hashblocks_sha512 33 12136 122702 +289-14+3+5-6-13-10+37-5-6+8+50+14-9+0 +hashblocks_sha512 33 18205 185333 +270-25+2+10+18-33+5+0+50-6-54+0+4-30-3 +hashblocks_sha512 33 27308 277959 +254+21-23-43+8+0-47-31-56+27-30-9+57+44+53 +hashblocks_sha512 33 40963 417553 +327+18-53+677+12+0+15+0-16-29+4-34-38-84-55 +hashblocks_sha512 33 61445 626600 +752-92-90+48-65+115+23-28-54+45-24+49+0+49-42 +hashblocks_sha512 34 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 34 0 149 +1641+78+37+61+18+0-5-1+13+1-5-5-5-5-5 +hashblocks_sha512 34 1 149 +79+7+1-1+3-2-2+0+13+0-2+0-3-1-2 +hashblocks_sha512 34 2 148 +80+8+2+0+4-1-2+1-1-1-1+0-1+1-2 +hashblocks_sha512 34 4 148 +42+8+2+1-1-3-3-3+14+1+1+0+0+0-4 +hashblocks_sha512 34 7 148 +43+8+2+2+4-1-2+1-1-1-1+0-1+1-2 +hashblocks_sha512 34 11 148 +13+3+2+0+4-1-1-1+0+0-4+1+1+1-4 +hashblocks_sha512 34 17 149 +11+2+0+0+2-2-1-2-2-1-5+0+0+0-5 +hashblocks_sha512 34 26 149 +12+5+0+0+2-2-1-2-2-1-5+0+0+0-5 +hashblocks_sha512 34 40 149 +11+2+0+0+2-2-1-2-2-1-5+0+0+0-5 +hashblocks_sha512 34 61 148 +13+3+2+0+4-1-1-1+0+0-4+1+1+1-4 +hashblocks_sha512 34 92 149 +12+2+0+0+2-2-1-2-2-1-5+0+0+0-5 +hashblocks_sha512 34 139 1405 +329+153+77+44+10+12+9+0-6-3-7-6-4-4-6 +hashblocks_sha512 34 209 1407 +99+97+6+9+9+9+9+0-7-8-10-6-7-8-6 +hashblocks_sha512 34 314 2696 +129+34+10-3-2+0-4+50-1+7+1+2-8-3-1 +hashblocks_sha512 34 472 3917 +131+37+9-5-1-1+0+0+51+0-1-7+3+99-4 +hashblocks_sha512 34 709 6437 +97+96+33-6+0+48-2-5-7-1+50+0+0+0+4 +hashblocks_sha512 34 1064 10200 +135+74+10-7+52-7+42-4+0+50-4-8-4+57-13 +hashblocks_sha512 34 1597 15217 +125+93+13+0+70-17-13+47-6+21-5-14-16-7+64 +hashblocks_sha512 34 2396 22759 +132+94+29+31+1+0-15+37-22+1-10-8-30-7-5 +hashblocks_sha512 34 3595 35321 +95+3+0+26+5-34-34+3-34-16-34-26+1-35+16 +hashblocks_sha512 34 5393 52878 +133-14-16+58+54-11-40-56+14+29-11+58+0-2+4 +hashblocks_sha512 34 8090 79195 +216-4+17+26+42-24+20-24+39+0-21+81-254-156-226 +hashblocks_sha512 34 12136 118129 +219-20-39-19+0-38+19-8-62-8+41+14+30+1+29 +hashblocks_sha512 34 18205 178357 +219+29+48-3+5-9+17-22-28+0-13-2+20+42-337 +hashblocks_sha512 34 27308 267521 +190+0+21-63-40-7+50+771+45+2-65-53-78+22-6 +hashblocks_sha512 34 40963 401804 +397+188+26-26-53+22+5-42-54+0-1-14-58+670+50 +hashblocks_sha512 34 61445 602977 +206+0+35+25+25+85+159+732-119-234-140-191-137-124-146 +hashblocks_sha512 35 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 35 0 171 +712+31+1-4+1-6+0-9-4-6+2-8+2-11+2 +hashblocks_sha512 35 1 166 +30+8-4+6-4+8-4+6+0-1-3+7-6+6+0 +hashblocks_sha512 35 2 172 +24+0+640+0-10+0-10-1-12+1-9+2-12+0-6 +hashblocks_sha512 35 4 170 +63+17-9+0-8+2-6+2-8+2-7+2-7+2-7 +hashblocks_sha512 35 7 170 +23+0-6+4-8+2-8+2-5+2-8+3-8+3-8 +hashblocks_sha512 35 11 169 +5+2-7+4-4+3-7+0-9+3-7+3-3+4-3 +hashblocks_sha512 35 17 171 +3+2-9+0-9+1-7+0-8+3-8+1-5+2-5 +hashblocks_sha512 35 26 171 +3+0-9+2-6+1-9+3-5+1-5+2-5+2-8 +hashblocks_sha512 35 40 171 +13+2-9+0-9+1-8+2-8+2-11+2-11+2-11 +hashblocks_sha512 35 61 171 +0+3-9+1-9+0-9+2-5+2-9+2-9+2-9 +hashblocks_sha512 35 92 169 +0+4-7+3-7+3-7+5-7+3-3+4-3+4-3 +hashblocks_sha512 35 139 1377 +278+39-2+0-1-4+1-3-3-3+0+0+0-3+2 +hashblocks_sha512 35 209 1375 +215+6-2+0-2+2+3-1+2+0-1+3-3-2-4 +hashblocks_sha512 35 314 2588 +63+40+19+1-8+0-9+2-6-1-7+5-1+3-8 +hashblocks_sha512 35 472 3805 +35+2+3+4+0+9-2+15-2-1+1-3-4-2-6 +hashblocks_sha512 35 709 6208 +77+6+3-3-1+12-5-1+0-6+2+1-3+0-7 +hashblocks_sha512 35 1064 9825 +13+13+46+10-2-3-10+11+0-4+3-2-3+15+0 +hashblocks_sha512 35 1597 14654 +53+5-21+26-19-8+2+0-19+4-17+9-24-5+7 +hashblocks_sha512 35 2396 21894 +54+23-5+9+11+4+0+6-4-7+4-5+0-8-6 +hashblocks_sha512 35 3595 33959 +244+17+9+8-5+12-5-4-12+16-8+25-9-6+0 +hashblocks_sha512 35 5393 50825 +112+25-13+9-22-1+0+8-5+33+9+8-4-6-22 +hashblocks_sha512 35 8090 76140 +155-20+3+11-13-18-15+5-31-6+0+0-17+12+11 +hashblocks_sha512 35 12136 113532 +431-8+24+17+13-45-22-22-48+10+40+0-21-7+0 +hashblocks_sha512 35 18205 171504 +495-81-31+1000+55+72-5-58+0+13+38-22+3-23-53 +hashblocks_sha512 35 27308 257526 +585+83-47+84-54+113+0-11+26-46-56-34-13+84+102 +hashblocks_sha512 35 40963 387520 +220+25-5-4-26-34+59+11-108+62-65+112-43+44+0 +hashblocks_sha512 35 61445 581445 +24-44-87+89+45+0-126+65+75+105-113+13-139+0-171 +hashblocks_sha512 36 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 36 0 144 +769+101+24+3+0+0+0+0+20+6+6+0+0+0+0 +hashblocks_sha512 36 1 148 +82+7+0-1+0-4+0-4+0-4+0+0-4-4-4 +hashblocks_sha512 36 2 147 +84+8+2+4+4+0+0+2+0+0+1+0+0+0+0 +hashblocks_sha512 36 4 149 +41+7+1+0+3-2-2+0+14+0+1-2-1-1-1 +hashblocks_sha512 36 7 148 +13+1+2+1+4-1+0-1-1-4-4+0-4+0+0 +hashblocks_sha512 36 11 148 +13+1+2+1+4-1+0-1-1-4-4+0-4+0+0 +hashblocks_sha512 36 17 147 +14+2+3+2+5+0+0+7+1-2-3-3-1-3-1 +hashblocks_sha512 36 26 148 +12+1+2+1+4-1+0-1-1-4-4+0-4+0+0 +hashblocks_sha512 36 40 148 +12+1+2+0+4-1+0-1-1-4-4+0-4+0+0 +hashblocks_sha512 36 61 147 +14+2+3+2+5+0+0+7+1-2-3-3-1-3-1 +hashblocks_sha512 36 92 148 +13+1+2+1+4-1+0-1-1-4-4+0-4+0+0 +hashblocks_sha512 36 139 1442 +658+108+54+13+18+2-14-15+0-23+10-10-18-15-4 +hashblocks_sha512 36 209 1442 +91+14+7+0+26+0-9+11-13-7-12+9-4-7-6 +hashblocks_sha512 36 314 2771 +31+24+12-9+0-8+0+3+67-14-10+4-2-20+7 +hashblocks_sha512 36 472 4038 +43-9-21+5+0-30-24-20+66+7+2+17-2-41+68 +hashblocks_sha512 36 709 6625 +51-3+0+38-21-18-12+18-40-29+49-24+1+30+3 +hashblocks_sha512 36 1064 10465 +55+64+0+37-21+10-7-18+27-19-24+67-18+74-24 +hashblocks_sha512 36 1597 15643 +77+4-30+60+42-2-47+0+31-5+9-22-43-20+22 +hashblocks_sha512 36 2396 23388 +7-5+0-9-29-35+36-27+23-45+62+43+96+49-58 +hashblocks_sha512 36 3595 36276 -40+90-33+68-12+85+104-23+50-18-54+0+34+8-52 +hashblocks_sha512 36 5393 54308 -16+0+19+54+131-131-5+2-5-40+69+11+77-83-6 +hashblocks_sha512 36 8090 81213 +131+177+766-92-6-54-5-102+0+62+4-10+16-118+18 +hashblocks_sha512 36 12136 120988 +253+26+121-83+100-10-28+6-82-39+0-16+33-61+175 +hashblocks_sha512 36 18205 182645 +538-61+13-19+89+213-75+203+0-147+72-90-87-112+200 +hashblocks_sha512 36 27308 274643 +68+176+4+83+0-52-85+17-107-232+35-137+214-787-831 +hashblocks_sha512 36 40963 411479 +982-270-30+0-219-175-90+604+286+107+83-78-126+198+65 +hashblocks_sha512 36 61445 617279 +673-243-9+1132+54-146-26-82+217+0-53+173-98+25+181 +hashblocks_sha512 37 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 37 0 172 +768+24+9-8+0-10+1-9-6-9+0-9+1-10+1 +hashblocks_sha512 37 1 171 +75+7-8+0-10+1-9+2-8+1-5+2-5+2-5 +hashblocks_sha512 37 2 172 +35+0-8+0-9+1-7+0-9+1-9+0-5+1-10 +hashblocks_sha512 37 4 172 +33+0-8+0-10+0-10+0-9+0-6+1-6+1-6 +hashblocks_sha512 37 7 170 +30+0-8+2-6+0-5+4-7+2-3+3-4+3-4 +hashblocks_sha512 37 11 170 +0+1-8+2-5+2-8+2-10+3-10+3-4+3-7 +hashblocks_sha512 37 17 168 +8+0-3+4-3+2-1+4-5+5-5+4-2+5-2 +hashblocks_sha512 37 26 171 +1+1-9+0-7+1-9+1-11+2-11+2-5+2-8 +hashblocks_sha512 37 40 172 +4+0-10+0-7+0-10+0-12+1-12+1-6+1-9 +hashblocks_sha512 37 61 172 +1+0-6+0-8+0-10+1-9+2-9+0-6+1-6 +hashblocks_sha512 37 92 172 +4+0-10+0-7+0-10+0-12+1-6+1-9+0-6 +hashblocks_sha512 37 139 1377 +344+19+1+1+2+1-4-5-5-4+2+0-3-4-2 +hashblocks_sha512 37 209 1375 +35-1+0+3-3+4-1-4+1-2+0+1+0+0+0 +hashblocks_sha512 37 314 2588 +86+32+16+0-6-1-3+5-7+0-5+0-9+4-6 +hashblocks_sha512 37 472 3818 +16+4+2-3+2+5+1+3+0-6-3-13+0-1-4 +hashblocks_sha512 37 709 6212 +21+7-6+4-3+18+4-5-5+0+4-5-5+3-6 +hashblocks_sha512 37 1064 9840 +11+4+3+9-10+3+0+3-8-5-3-5-12+0-10 +hashblocks_sha512 37 1597 14666 +102+24+0+21+5-6-6+4-14-6-27-2+5+6-1 +hashblocks_sha512 37 2396 21925 +37+78+11+0-2+4-6+1-13+9+13-17-18-12-3 +hashblocks_sha512 37 3595 34009 +60+7+4+18-3+0-13-7-1-11-10-9+5+8+6 +hashblocks_sha512 37 5393 50910 +84+88+12+2+6-10-16-5-5+0-8+29+0+7+0 +hashblocks_sha512 37 8090 76265 +117+83-4+32-48+9+19-5+16-16+0-17-23+46-16 +hashblocks_sha512 37 12136 113738 +326+14+1+27-2-31+23-17+21+0-20-29-17-4+826 +hashblocks_sha512 37 18205 171770 +436+50-16-37-5-1-6-15+48+35+8+0+44-2+52 +hashblocks_sha512 37 27308 257729 +535-46+57-15-27+1-15+0-116+19+6+17-93-91+6 +hashblocks_sha512 37 40963 387732 +220-36-34-67+112+5-25-112-9-23+142+0+51+37+41 +hashblocks_sha512 37 61445 581906 +106-117-168+58-23+32-165+0-101+97-163+29+590+13-47 +hashblocks_sha512 38 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 38 0 146 +597+87+27+69+0+0+0+0+16+2+0+0+0+0+0 +hashblocks_sha512 38 1 146 +87+36+9+0+54+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 2 146 +85+26+3+0+0+0+0+0+16+2+0+0+0+0+0 +hashblocks_sha512 38 4 146 +48+9+53+3+0+0+0+0+16+2+0+0+0+0+0 +hashblocks_sha512 38 7 146 +40+56+6+0-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 11 146 +28+5+53-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 17 146 +14+10+9+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 26 146 +14+11+2+0+3+0+0+0+16+2+0+0+0+0+0 +hashblocks_sha512 38 40 146 +14+13+63+8+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 61 146 +14+11+2+0+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 92 146 +28+3+4+1-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 139 1597 +518+136+70+24+29+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 209 1594 +83+11+4+1+1+0-4+0+0+1+0+0+0+1+0 +hashblocks_sha512 38 314 3081 +160+93+0+3-2-1+0-2-1-1+1-1+0-1+0 +hashblocks_sha512 38 472 4502 +115+28+3-4-5+2+3-8-10+1-2+0+3-10-9 +hashblocks_sha512 38 709 7388 +202+28+17+7+5+51-6-2-10-8-3+1+0-7-8 +hashblocks_sha512 38 1064 11714 +217+24+33-2-2+54+8-3+2-4-2+5+0-11-6 +hashblocks_sha512 38 1597 17498 +212+47+28-24+0+37-30-7-26-9+0+23-16+8-6 +hashblocks_sha512 38 2396 26171 +71+6+0-8+57+13+2+7-24-6-12+67-13-16-1 +hashblocks_sha512 38 3595 40625 +257-34+16-16-50-43+0-33+724+23+0+7+55+56+0 +hashblocks_sha512 38 5393 60800 +185+0+52-21+33+28-28+20-27-24-2+16-2+0-29 +hashblocks_sha512 38 8090 91143 +138+2-16+38+10+2-33-6+8-34-18-14+0-8+0 +hashblocks_sha512 38 12136 135892 +189-35+71+3+2+19-3-13-32+0-14-26+20+24-26 +hashblocks_sha512 38 18205 205227 +276+0-43-37-25-46-86+13+0-50-74+806+249+169+182 +hashblocks_sha512 38 27308 307777 +387+34+4-11+8-16-31-36+14+37+0+30-8-57-21 +hashblocks_sha512 38 40963 462701 +162-92-107-51+0-14-79-27-52+77+39+14+53+82+20 +hashblocks_sha512 38 61445 694033 +214-8+0+0-30-28+39-19-33+21+55-1-3+1001+193 +hashblocks_sha512 39 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 39 0 105 +427+36+12+10-1+0+0-1-3+0+0-1-3+1-1 +hashblocks_sha512 39 1 102 +82+0-2+0+1-1+1+2+0+0+0+0+0+0+0 +hashblocks_sha512 39 2 103 +42+0+2+2+1+1+2-2+2-2-2-2-2-2-2 +hashblocks_sha512 39 4 102 +43+1+4+3+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 7 104 +14-1+1+0-2+1-2+0-3+1+0-2+2+1+1 +hashblocks_sha512 39 11 104 +14-3-2-2-2+0-2+0+2+0+2+1+1+1+0 +hashblocks_sha512 39 17 104 +13-3-2-2-2+0-2+0+0+1+0-2+1+1-2 +hashblocks_sha512 39 26 104 +13-2-2-3-2-2+1+1-2+0+2+1+2+0+0 +hashblocks_sha512 39 40 104 +14-1+1+0+1+1+0-2+18+0+2+0+0+1+0 +hashblocks_sha512 39 61 105 +13-3+0+0+0+0-1-3+17-1-1+0-1-3+0 +hashblocks_sha512 39 92 104 +14-1+1+0-2+1-2+0+2+0+0+1+0-2+1 +hashblocks_sha512 39 139 1415 +527+81+18+15+1-3-4+3-3-3-3-3+0+0-3 +hashblocks_sha512 39 209 1415 +98-2-2-2+0-3+0+0+0+1+1-3+0-1+0 +hashblocks_sha512 39 314 2735 +100+30+0+1-3+2-5+1-6-5-2+3-1-2+8 +hashblocks_sha512 39 472 4031 +88+6+0-1-2+0+0-1+4+0+1+2+0+2+3 +hashblocks_sha512 39 709 6649 +73+0+9+26+2-1+0-1+1-2+3+0-1-2+1 +hashblocks_sha512 39 1064 10575 +99+6+11+23-3+12+0+0+0+2-3-3-3-1-1 +hashblocks_sha512 39 1597 15818 +59+3+29+17-4-3+12-11-8+0+7-10-8-3+8 +hashblocks_sha512 39 2396 23684 +58+13+16-7+2-2+2+2-12-18+0+0-2+0+2 +hashblocks_sha512 39 3595 36768 +102+26+3+11+2-4-2-4+0-1+0-2-2+6-4 +hashblocks_sha512 39 5393 55093 +147+24+12+3+1+0-6+2+48-1-12-18-19-22-19 +hashblocks_sha512 39 8090 82581 +124+40-2+4-6-8+2+1+11-9-8+11+0-18+0 +hashblocks_sha512 39 12136 123163 +112+14+17-4-10-3-3-2-1+6+3+5+0+4-8 +hashblocks_sha512 39 18205 186000 +73+24+21-7+4-9+15-2+1-3+0-9-1+6-8 +hashblocks_sha512 39 27308 278920 +93+46+29+4-1-3+8+13-19+2-17-3+0-4+0 +hashblocks_sha512 39 40963 418969 +143+806+36+17+13-10-16+0-28-7-23-23-19+0+11 +hashblocks_sha512 39 61445 628423 +126+24+6+0-21+5-55+5-49-1-5+5-52+15-61 +hashblocks_sha512 40 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 40 0 88 +753+63+33+3+6+0-3-3-4+0-4+1-3+1-3 +hashblocks_sha512 40 1 84 +46+9+6+2-2+1+0+0-1+0+0+0+0-4+0 +hashblocks_sha512 40 2 84 +52+0+8+1+30+1-4+0-3+0+1-1+0+0-4 +hashblocks_sha512 40 4 86 +41+2+9+3+2+1+1-3-2-6-5-2+0-2-2 +hashblocks_sha512 40 7 84 +17+12+3-1+1-1+3-2-1-1+2+0-2+2-2 +hashblocks_sha512 40 11 84 +14+11+1+1+2-2+0-2-2+0-1+3-1+3-2 +hashblocks_sha512 40 17 84 +14+11-1+0+3-2-1+3+0+3-1+0-2+0-1 +hashblocks_sha512 40 26 84 +12+9+4+0+1-1+3-2-1-1+2+0-2+2-2 +hashblocks_sha512 40 40 90 +5-2-2-4-3-1-2+0+0+0+0+0+0+0+0 +hashblocks_sha512 40 61 85 +17+11+1-3-1-3+1-3-3-1+8+2-4+0+0 +hashblocks_sha512 40 92 84 +12+13+3+0+0-1+0-2+0-1-3-1+0-2+0 +hashblocks_sha512 40 139 1446 +3017+54+26+13+11+4+0-1-1-2-2+0-3-3-3 +hashblocks_sha512 40 209 1446 +90+14+14+12+12+5+3+0-1-2-2-2-3-3-3 +hashblocks_sha512 40 314 2784 +117+89+62+18+5+3+0-2-3-7-7-9-11-9+0 +hashblocks_sha512 40 472 4112 +178+112+70+48+39+7+0-4-5+7-13-4-5-28-36 +hashblocks_sha512 40 709 6803 +161+135+57+13+6+16-12-11-41-41-41+15-44+0-40 +hashblocks_sha512 40 1064 10776 +197+67+35+30-5-36-23-2+0+26-42+23+7-30+0 +hashblocks_sha512 40 1597 16073 +273+98+46+0+22+54+26-19-14-36-2-7-21-24+18 +hashblocks_sha512 40 2396 24065 +328+86-11+24-57+0+27-33-18+32-59-27+34-30+28 +hashblocks_sha512 40 3595 37406 +342+26+72+8+64-54-1-75+0-67+45-29-37-25+50 +hashblocks_sha512 40 5393 55965 +415-18-4+31+62-26-24-18+32+99+87+115+0-44-27 +hashblocks_sha512 40 8090 83877 +741-70+38+0-6-48+93-12-5+142+9+711+100-80-80 +hashblocks_sha512 40 12136 125037 +573+87+0-37-19-57+5-36-51-36-20+53+0+46+53 +hashblocks_sha512 40 18205 188737 +887-61+19-12-38-19-35+12+31+60+0+69-16+0+99 +hashblocks_sha512 40 27308 283084 +1249+1006+550+35-33-55+0+13+70+73-122-46-8-58-19 +hashblocks_sha512 40 40963 427000 +348-151-240-10+30+118+0-265+898-49+273-17-20+484+357 +hashblocks_sha512 40 61445 640796 -15-192-141+458-550-658-434-426+298+0+338+40+105+57+542 +hashblocks_sha512 41 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 41 0 122 +2531+33+15+3-3-1-2+5+16-1+0+0-2-1+0 +hashblocks_sha512 41 1 121 +75+29+4+0+1-1+6-2+6+1-1-1-1-1-1 +hashblocks_sha512 41 2 121 +44+1-1+0+0+0+1-2+18-2-1-1+4-1-1 +hashblocks_sha512 41 4 121 +43+0+4+0-2+0+0+3+2-1+6-1-1-1+6 +hashblocks_sha512 41 7 122 +40-3+2-3-3+0+2+2-1-3+4+0+0-2+5 +hashblocks_sha512 41 11 121 +11-2+2+0-2+3+0+3+2-1+6-1-1-1-1 +hashblocks_sha512 41 17 120 +14+0+4-1+1+1+7+0+0-1+7+0-1+0-1 +hashblocks_sha512 41 26 122 +12+1+1-3-3-2+4+0+0+0-3-1-1-2+5 +hashblocks_sha512 41 40 120 +12+0+3+1+1+0+0-1-1+0+0-1+7+0+7 +hashblocks_sha512 41 61 122 +10+1+1-3-1-1+5-2+0+0+5-2-2-3+5 +hashblocks_sha512 41 92 120 +14+3+3-1+1+0+5-1+0+0+5+0+0+0-1 +hashblocks_sha512 41 139 1430 +5637+94+73+15+0-3+0+0-2-2-1+0+0+0-3 +hashblocks_sha512 41 209 1430 +63+34+0-4-3-4+0+1-2-1-1+0+1-2+0 +hashblocks_sha512 41 314 2745 +98+53+25+2-2-2+0+1+1+2-1+0+0+0-1 +hashblocks_sha512 41 472 4062 +157+82+78+41+0+0-2-4+0-1-4-8+38-1-2 +hashblocks_sha512 41 709 6689 +143+91+3+7+0+3+6+0-2-6+4-6-2-8-5 +hashblocks_sha512 41 1064 10627 +185+65+13+10+4+0+4-10-1-2+14-2-1-6-3 +hashblocks_sha512 41 1597 15876 +162+99+63+51+28+6+0-6-40+0-24+13-14-25-25 +hashblocks_sha512 41 2396 23769 +317+48+29+8+27-65-15-46+13-18-35-17+0+13-26 +hashblocks_sha512 41 3595 36905 +193+52+43+23-4+16-26-34+0+88-25-19-30+1-27 +hashblocks_sha512 41 5393 55274 +304+0-12+0+17+25-22+32-16+46-2-15-3+10-1 +hashblocks_sha512 41 8090 82890 +292-52-47+9+65-50-31+9+51+0-9+40+36-42-35 +hashblocks_sha512 41 12136 123621 +266-31+0-13+37+15-1+12+672-36+29-36-32-30+6 +hashblocks_sha512 41 18205 186721 +298+23+0+40-24-17+26-36-22-9+27-25+18-44+5 +hashblocks_sha512 41 27308 280047 +425-55+6+10-27+0+9-4+5-83-16+865+189-22-38 +hashblocks_sha512 41 40963 421316 +115+73-63-18-2-33+2-8-1+115+115+2+0+20-24 +hashblocks_sha512 41 61445 632169 -3-68-35-231-32+0-24-13+645+751+1280+1371+1236+1257+1318 +hashblocks_sha512 42 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 42 0 83 +955+66+7+2+2-2+0-1-3+0+0+0+0+0+0 +hashblocks_sha512 42 1 84 +83+6+6+8+7+1+6+0-1-1+0-2-3-4-3 +hashblocks_sha512 42 2 88 +42+36+2+4-3-1-2+0-2-1+1-1+1-1+1 +hashblocks_sha512 42 4 83 +54+6+8+10+40+50+0-1-2-4-1-4+0-2-4 +hashblocks_sha512 42 7 83 +46+12+8+5+0+1+2-1+0+0+0+0+0+0+0 +hashblocks_sha512 42 11 84 +16+7+8+4+6+0-1-1+1-3-1-1-1+5+0 +hashblocks_sha512 42 17 87 +13+2+2-2-1-2+4-3+1+0+0+2+0+2+0 +hashblocks_sha512 42 26 86 +7+11+5+4+3+0+0+1-3-2-4-3-3-3-5 +hashblocks_sha512 42 40 83 +17+10+6-1+1+1-2+1+1+0+0+0+0+0+0 +hashblocks_sha512 42 61 89 +11+1-2+2+0+0-2+1+2-1+0+0+2+0+0 +hashblocks_sha512 42 92 91 +7+0+0-1+0-3+0+2+0+2+0+2+0+2+0 +hashblocks_sha512 42 139 1111 +7796+189+11+9+7+4+0-2+60-12-12-15-17-18-8 +hashblocks_sha512 42 209 1107 +151+54+5+4+3+5+0+0-7-10-11-11-13-6-10 +hashblocks_sha512 42 314 2086 +159+70+27+18+11+0+2-1-2-5-1+3-7+0-5 +hashblocks_sha512 42 472 3083 +229+72+13+0-1+6-8-9+1+2-11-15+32-25-12 +hashblocks_sha512 42 709 5112 +215+51+61+46+6+0-1+3-4-13-6+19-40-50-50 +hashblocks_sha512 42 1064 8079 +225+95+66-25-24+2+0-44-21-22-38-70+44+104+127 +hashblocks_sha512 42 1597 12018 +172+11+23+26-23+2-6-29-34+0-13+22-48-45+13 +hashblocks_sha512 42 2396 18092 +319+0+22-184-115-116-191+10-198+91+193+135+184-172-181 +hashblocks_sha512 42 3595 27891 +302+1-46+377+304-25-9+150-27-27+2-49+70-95+0 +hashblocks_sha512 42 5393 41840 +360-29+0+234-63+113+11+124+62-64-65-105-32-60+453 +hashblocks_sha512 42 8090 62603 +233-186-123+75+114+57-48+154-164-112+40+0-119-86+5 +hashblocks_sha512 42 12136 93283 +455+250-36+312+274-125-240+174+32-33+0-82-53-3+103 +hashblocks_sha512 42 18205 140816 +1103+0-9-293+124-6+107+81-78-153+174-162+748+34-48 +hashblocks_sha512 42 27308 211211 +1406+179+4-69-5+64-49+1150+437-54+904+0-27-175-22 +hashblocks_sha512 42 40963 319297 +111-234+586+65-104+197-244+0-95-138+69-23+2095-126+6 +hashblocks_sha512 42 61445 479140 +328-328+183-302+206-392+216-158+372+0+170-176-264+158-316 +hashblocks_sha512 43 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 43 0 119 +711+36-1+1+2+0+0+0+20-1-1+1+1-1-1 +hashblocks_sha512 43 1 123 +59+37+1-4+1+2+2-4-6+0-3-3-6+0-3 +hashblocks_sha512 43 2 123 +43+0+2+2+38-3-1+2+2+2-4-4-6+0-3 +hashblocks_sha512 43 4 122 +15+2+0+2-2+3+3-3-3-5+1-2-2-5+1 +hashblocks_sha512 43 7 120 +12+4-2-1+5+3+0-2+19-1-3+3+0+0-3 +hashblocks_sha512 43 11 120 +15-2-1+4+3+8+3+0+0-3+3+0+0-3+3 +hashblocks_sha512 43 17 123 +13-5-3+2-4+2+2-5+16-3+2+2-4-6+0 +hashblocks_sha512 43 26 123 +11-1+1-1+2+5+2-4+16-5+0-3-5+0-3 +hashblocks_sha512 43 40 120 +12+2+4-1+5-1-1-3+3+0+0-3+3+0+0 +hashblocks_sha512 43 61 120 +12+2+4-1+5-1-1-3+3+0+0-3+3+0+0 +hashblocks_sha512 43 92 123 +13+1-4+1+0+2-5+0-3-5+0-6+0-3-3 +hashblocks_sha512 43 139 1185 +4343+82+27+4-4+0+2+5+2-2-2+0-2-2-3 +hashblocks_sha512 43 209 1185 +15-4-5-3-5-5+5+3+3+3+4-1+0+0-1 +hashblocks_sha512 43 314 2257 +68+51+80+47+0+1-3+0+5-1-4-6-9-8+0 +hashblocks_sha512 43 472 3321 +110+77+32-1+8+4+0+0-5-2+2-3-10+2-6 +hashblocks_sha512 43 709 5459 +113+47+46+5+11-4-9-14+0-4-17-11+5+3-8 +hashblocks_sha512 43 1064 8663 +129+54+30-5-4+2-8-11-11-1+2+1+0-9+1 +hashblocks_sha512 43 1597 12934 +208+59+18+0-23-22-14+0-5-15+13-10+0+6+2 +hashblocks_sha512 43 2396 19347 +306+18+31-23+1-9+0-24+7-5+36+0-27-17+13 +hashblocks_sha512 43 3595 30068 +148-11-9-38-5+4+20+12-11+19+18-28+28-2+0 +hashblocks_sha512 43 5393 45030 +152-40-13+0-2-38+14-32-7+8+10-7+59+35+11 +hashblocks_sha512 43 8090 67496 +148+67-28-4-35+19-30+2+29+38-21+0-32+34-24 +hashblocks_sha512 43 12136 100654 +168-12+17+0-56+65-30+21+5-27-55+6-86+28-50 +hashblocks_sha512 43 18205 151991 +332+11-19-69+12+28-43+79-72-71+16-51-15+46+0 +hashblocks_sha512 43 27308 227962 +558-28-4+4+3-73-47-2-11+22+5+9+26+0-4 +hashblocks_sha512 43 40963 343231 +219-8+93-48+106+33-196+24+51+0-24-62-40-124+121 +hashblocks_sha512 43 61445 514907 +169-125-87-97+9+102+114-76+0-100+174+13-35+129-16 +hashblocks_sha512 44 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 44 0 85 +1750+65+36+1+1+0+8-2+0-3+0-1-3+1-1 +hashblocks_sha512 44 1 84 +81+9+5+4+4+1-1-6+3-5-3-2-1+0+0 +hashblocks_sha512 44 2 84 +52+40+0+4-1-3-1-4+2+2-1+1-5+1+0 +hashblocks_sha512 44 4 86 +42+8+2-4+28-4-7-5+0-5-7+0+0+0+0 +hashblocks_sha512 44 7 84 +45+9+3+1-1-3-1-3-2+1+0+0+0-1+1 +hashblocks_sha512 44 11 88 +11+7+7+6+0-7-2-4-3-3+0+0-6+0+5 +hashblocks_sha512 44 17 90 +9+2+4+2+2-5-4-6+1+3-6-4-1-1+0 +hashblocks_sha512 44 26 89 +10+3+4+6+0-3-2-1-3-6+0+3+7-5-3 +hashblocks_sha512 44 40 90 +4+3+3+4+1-5+3-5-5-2-1+0-5+2-2 +hashblocks_sha512 44 61 89 +10+6+6+3+0-3+4-7-3-4-1+2+4-4+0 +hashblocks_sha512 44 92 90 +4+10+7+3+3-7-1+3-5-5-5+0-5+2-2 +hashblocks_sha512 44 139 1120 +4070+88+29+21+13+3+0+0-4-7-2-3-5-4-5 +hashblocks_sha512 44 209 1121 +79+15+8+11+10+12+3-1-5+0-6-6-8-8-9 +hashblocks_sha512 44 314 2115 +146+114+31+16+6+8+3+0-2-2-7-11-12-13-14 +hashblocks_sha512 44 472 3119 +168+123+55+10+11+2+1-9-11-17-20-11+0-19-16 +hashblocks_sha512 44 709 5140 +226+85+99+52+7+0-14-5+5-27-15-21-25+9-22 +hashblocks_sha512 44 1064 8130 +205+55+33+3-4+0-30+3+5-9-9-7-8+4-12 +hashblocks_sha512 44 1597 12158 +292+18-33-39-69-48+0+52+23-5+29-3-33+24+30 +hashblocks_sha512 44 2396 18156 +514+188-24-49+0+20-71+10+0+5-17-59+1-79+43 +hashblocks_sha512 44 3595 28135 +339-62-37+71-48-9-7+0-8+70+20+53+50-1+50 +hashblocks_sha512 44 5393 42161 +413-99+0-74+12-17-4+44+27-3+18-7+56+104-10 +hashblocks_sha512 44 8090 63175 +393-62-20-66+50-75-12+34+58+0+25-26+5-11+96 +hashblocks_sha512 44 12136 94140 +558+33-16+1365-65-22-12+26-50+26+0-31-5+56+55 +hashblocks_sha512 44 18205 142110 +926-35+10-32-106+9+109+76+0-27-11+2-110+91-122 +hashblocks_sha512 44 27308 213120 +1699-8-33-119+34+14-4+36+9+0+30-1+40-16-21 +hashblocks_sha512 44 40963 321753 +664+59-33+36-100+0+63-44+18-17-25-57+114+20-49 +hashblocks_sha512 44 61445 482800 +780-218-135-199+56+10-8-32+81-39+166+152+0+220-232 +hashblocks_sha512 45 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 45 0 124 +719+37+0+1-1-3+1-5+13-5-1+1-5+1-1 +hashblocks_sha512 45 1 124 +88+3+0+6+29-5-5-1+13-5-1+1-5-1+1 +hashblocks_sha512 45 2 119 +33-1+4+6+6+6+6+0+0+0+0+0+0+0+0 +hashblocks_sha512 45 4 125 +31+0-6+0+0-6+0+2+0+0-2+0-2+0-2 +hashblocks_sha512 45 7 124 +9-6-2+0+0+1+4+1-1+3-6-4+1-4-1 +hashblocks_sha512 45 11 123 +9-4-1+1-3+4-2+2+16+0+2-3+0+2-4 +hashblocks_sha512 45 17 125 +7-1-1-3+0+3+0+3+0-5-2+0-6-2+0 +hashblocks_sha512 45 26 125 +7-1-1-3+0+3+0+3+14-7+0-5-2+0-6 +hashblocks_sha512 45 40 121 +22-4-2+3-3-1+0+4-1-3-1+4+4+2+4 +hashblocks_sha512 45 61 123 +13+1-1+1-6-3+2+2+2-5-5-3+0+2-4 +hashblocks_sha512 45 92 124 +8+0+0-8-7-4+1-4+15+1+1-1+1-1+1 +hashblocks_sha512 45 139 1185 +4627+83-1-3+2+0+0+2+0-2-4+3+0+2+2 +hashblocks_sha512 45 209 1182 +12-1+0-1+4+4+0-1-1+4+1+0-1+0+0 +hashblocks_sha512 45 314 2256 +70+84+0+1-4-5-2-3+5+0+0+0-1+1-1 +hashblocks_sha512 45 472 3323 +141+106+28+10+0-2+4-1-1-2+5+1-6-6-2 +hashblocks_sha512 45 709 5465 +128+53+19+0+7+2-1-6-9-10+54-2+0-8-3 +hashblocks_sha512 45 1064 8666 +71+39+25-11-8+0-5-9-17-10+0+2+12+9-15 +hashblocks_sha512 45 1597 12938 +199+122+24-2-8-20-18+0-1+83-8+2+5+7-6 +hashblocks_sha512 45 2396 19360 +124+189-3-2+21+50+0-22-10+1+0-16+45-15-22 +hashblocks_sha512 45 3595 30083 +102-32-47-2+13-11+0-17+13+4-4-60+13+16+26 +hashblocks_sha512 45 5393 45054 +98-12+91-2-2+15-31+7+12+25-59-19+0+6-10 +hashblocks_sha512 45 8090 67526 +114+56-16-42+25-52+1+0-20+0-49+716-10+7-31 +hashblocks_sha512 45 12136 100640 +254-9+24-15+14-44-6-33-46-65+0+23+36+3+49 +hashblocks_sha512 45 18205 151942 +380+0+41-50+2-25-20-51+44+13+21-31-52+37-4 +hashblocks_sha512 45 27308 227906 +617+67+43-58-39-86+749+327-80-88+28-6+6-84+0 +hashblocks_sha512 45 40963 343135 +108+13-147-44-99-153-4+44+87-102-56+0+70+96+71 +hashblocks_sha512 45 61445 514883 +145+0-44-247-156-268-245+16-127+30+730+96+34+31-270 +hashblocks_sha512 46 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 46 0 86 +1715+82+59+2+2+1-1+7-2-2-2-1-4+0-2 +hashblocks_sha512 46 1 85 +42+8+10-1+2+3-5-3+6-6-6+1-6+0-5 +hashblocks_sha512 46 2 85 +42+5+4-3+38-2+2+0-1+1+0-2+2-2-1 +hashblocks_sha512 46 4 87 +7+6+5+1+0+4+0+4+0+0+4+0+0+0+0 +hashblocks_sha512 46 7 88 +6+6+2+3+1+0+4+0+0+0-1+0+4+0+0 +hashblocks_sha512 46 11 85 +10+11+5+3+1+0-2+2-3-3-3-1-1-3+3 +hashblocks_sha512 46 17 85 +9+10+5+3-1-3+1-1+1+0-4+0+0+0-2 +hashblocks_sha512 46 26 87 +8+6+0+2-3+0-3+0-8-5+0-4-4+0-4 +hashblocks_sha512 46 40 93 +0-1-1-7+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 46 61 85 +9+6+10+1+1-1-3+1-3+0+0+0+0-2+0 +hashblocks_sha512 46 92 86 +12+9+7-2+1-2+1-6+0-7+7-7-2+6-6 +hashblocks_sha512 46 139 1448 +3123+54+24+10+12+6+0+3-3-4-4-7-6-6-7 +hashblocks_sha512 46 209 1448 +69+14+9+12+12+11+3+0-1-1-1-4-3-3-4 +hashblocks_sha512 46 314 2778 +127+99+92+14+7+0+6+0+1-6-4-9-9-19-19 +hashblocks_sha512 46 472 4108 +142+83+57+50+12+1+4+0-1-10-24-26-21-33-28 +hashblocks_sha512 46 709 6791 +200+141+99+22+10+0-24-23-20-26-19+10+5-39-45 +hashblocks_sha512 46 1064 10769 +200+112+49+18+0-60-9+6-58-50-29-11+16+6-20 +hashblocks_sha512 46 1597 16077 +236+83-15-36+0-35+45+38-18+33+90+28-10-46-36 +hashblocks_sha512 46 2396 24011 +405+170+25-59+86+85-32-17+1-15-8-20+16+0-14 +hashblocks_sha512 46 3595 37313 +472+103+28+83+37-49-68+0+0+9-21-105-49-38-24 +hashblocks_sha512 46 5393 55841 +772+80-96+9+94-11-4+41-96+0+26-35-22-14+68 +hashblocks_sha512 46 8090 83708 +822+17+39+0+0-71+37-56+7+75+2-37-3-24-31 +hashblocks_sha512 46 12136 124819 +659+218-44-83+102+21-55+120+31-2-8+29-51+0-56 +hashblocks_sha512 46 18205 188560 +1029-132-72-74-53+41+0-2+82-36+120-15+883+644+94 +hashblocks_sha512 46 27308 282810 +1442+257-25-200-189+118+92-65-22+153-82-4+38+128+0 +hashblocks_sha512 46 40963 426756 +584+176-26+209+10-126-73-23+0-127+20-135+0-78+25 +hashblocks_sha512 46 61445 640644 -265-462+0-24+82-88-102+42-148+90+34+96+81+11-109 +hashblocks_sha512 47 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 47 0 122 +665+34+29+1-1+0+5-1+17-1+1+0-3-1-1 +hashblocks_sha512 47 1 120 +75-1+2+4+1-1+1-1+19+0+7+0+0+0+0 +hashblocks_sha512 47 2 123 +41+0+0-2+0-2+0-3+16-3+0-1+2-3-3 +hashblocks_sha512 47 4 121 +43+1+1+0-1+3-2-1+17-1-1+0-1+0-1 +hashblocks_sha512 47 7 122 +42+2+1-1-1+1-3-2+5-2+0+0+5-2-2 +hashblocks_sha512 47 11 121 +13-1+0-1+4-1+6-1-1-2+5+0+6-1+6 +hashblocks_sha512 47 17 120 +14+2+5+2+3+0-1+0+0+0+2+0+7+0+0 +hashblocks_sha512 47 26 122 +12+0-3-2+5-2+0+0-3-1+5-1+5-2+5 +hashblocks_sha512 47 40 120 +14+0+3+0-1+1+7+0+18+0+5+0+0-1+7 +hashblocks_sha512 47 61 121 +13-1+0-1+4-1+6-1-1-2+5+0+6-1+6 +hashblocks_sha512 47 92 121 +13+1-2+3+2-1+5-2+5-2+0+0+0-1+6 +hashblocks_sha512 47 139 1429 +7160+165+41+2+1+0-1-1+0-1+0-1+0+0-1 +hashblocks_sha512 47 209 1429 +14+35+1-3-2+0+5+1+0+0-2+0-1+0-1 +hashblocks_sha512 47 314 2745 +71+72+65+39+1+0+1-1-2-1-1+2-1-3-2 +hashblocks_sha512 47 472 4060 +76+43+2+0+3+2-1-1+0-3-3-3-7+0+0 +hashblocks_sha512 47 709 6689 +154+52+30+30+0-2+2+1-2-2-6-9+2-5+0 +hashblocks_sha512 47 1064 10631 +137+101+3+5+0+1-1-11-4-5-8-9-10+4+5 +hashblocks_sha512 47 1597 15881 +91+71+97+54+2+0-9-8-19+11-11+1-19-18-20 +hashblocks_sha512 47 2396 23760 +147+91+88+11+13-54-6+0-39-47-40-27+28-50+63 +hashblocks_sha512 47 3595 36928 +159+32-24-3+2+6-29+4+59-13-52-41+0-32+23 +hashblocks_sha512 47 5393 55290 +285+79-72+0+0-21+15-15-14+89-21+6+61-1+19 +hashblocks_sha512 47 8090 82889 +264-48-45+69-25+39+27+13+31+0-47-19+31-36-17 +hashblocks_sha512 47 12136 123643 +194-5+99+13-20+6-18-12-54+32+0+56-12-43+29 +hashblocks_sha512 47 18205 186716 +260+26-18+29+10-4+7+0+26-64-56-43-16+40-48 +hashblocks_sha512 47 27308 280032 +435-15-7+7-27+0+38+20-38-12+21+25+0+40-5 +hashblocks_sha512 47 40963 421331 +88+1-58+49-41+28+736+0-51-119-79+37-56+26-44 +hashblocks_sha512 47 61445 633124 -838-1097+31-5-4+10-98+16+8-92+8+0+38+28-74 +hashblocks_sha512 48 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 48 0 88 +978+30+3+1-2+5+0-3-1+3-3-1-1+3-3 +hashblocks_sha512 48 1 87 +47+4+3-1+4-1+2-3-4+0-2+1-3-4+0 +hashblocks_sha512 48 2 89 +42+5+0+0+34-1-1-3+4+0+0-2+4-1-1 +hashblocks_sha512 48 4 85 +45+10+9+0+6+8+0-1-1+0+0+1+1+0+0 +hashblocks_sha512 48 7 84 +12+7+10+1+3+0+0-2+4-1-3+0-2-1-1 +hashblocks_sha512 48 11 84 +12+10+6+5+5+0-1-2+4-1-3+0-2-1-1 +hashblocks_sha512 48 17 85 +18+2+4+2+2-1+2+0-4+0-1+1+0-2-2 +hashblocks_sha512 48 26 84 +13+9+7+5+7+0+3-1-3-2+1-3-1+0-2 +hashblocks_sha512 48 40 86 +15+5+5+2+0+2-4+0-3-2-4+0-4-5-3 +hashblocks_sha512 48 61 84 +13+10+6+5+5+0-1-2+0-2-3+1-2-2-3 +hashblocks_sha512 48 92 84 +17+8+4+6+4+2+0-2+4-3-1-1-1-1-1 +hashblocks_sha512 48 139 1427 +3184+48+49+2+0+2+2+0-4-7-10-14-16-18-20 +hashblocks_sha512 48 209 1427 +28+0+2+1+0+2+2+0-6-7-10-12-19-19-20 +hashblocks_sha512 48 314 2698 +110+117+107+64+17+9+2-1-4-8-8-15-16+0-18 +hashblocks_sha512 48 472 3980 +169+148+91+65+15+8+0-4-12-4-10-28-4-27+17 +hashblocks_sha512 48 709 6592 +222+180+80+20+5+38+0-7-35-48-10-24+9-9-11 +hashblocks_sha512 48 1064 10457 +307+265+230+76+5-5-45+7-38-24+56-32+0-8-21 +hashblocks_sha512 48 1597 15597 +417+85+6+16+0-29-5+27-36+29-13-8-5-4+30 +hashblocks_sha512 48 2396 23364 +620+402+123-38+0-8+65+146-59+13-25-24-47-41+45 +hashblocks_sha512 48 3595 36321 +415-194-35-8+0-5+29+16-47-10-28+6+20+18+23 +hashblocks_sha512 48 5393 54338 +307-38+126+57-5-56-57+35+24-24+0+16-13-38+37 +hashblocks_sha512 48 8090 81410 +439+98-15-28-110-21+47-63+59-98+28+12+21+0-42 +hashblocks_sha512 48 12136 121269 +973+112+76+1064+109+105-6-64-30-59+41-9-86-4+0 +hashblocks_sha512 48 18205 183123 +890+14+7+14-94-11-108+10+0-132-50-119+41-89+55 +hashblocks_sha512 48 27308 274511 +1477-63-66-156-161-195+0-119-47+1077+1293+24+86+94+67 +hashblocks_sha512 48 40963 414053 +1047-113-181+0+73-114-2+13+8-58-64+31+234-67+1066 +hashblocks_sha512 48 61445 621196 +7555+656-250-133-14-111-85+936-175+0-210+77+68+45+34 +hashblocks_sha512 49 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 49 0 123 +540+48+22+10+0-4+0+0+15-4+4+0+0-4-5 +hashblocks_sha512 49 1 123 +58+36-5-5-5-4+0+0+0+0+0-4+4+0+0 +hashblocks_sha512 49 2 123 +10-1+4-4-4+0+0+0+0+0-4+4+0+0-4 +hashblocks_sha512 49 4 123 +12-1-1-1+0+0-4+4+15+0+0-4-5+0+0 +hashblocks_sha512 49 7 123 +15-5-1-4+4+0+0+0+15+0+0+0+0-4+4 +hashblocks_sha512 49 11 123 +10-5-1-1+4+0+0+0+15+0+0+0+0-4-5 +hashblocks_sha512 49 17 123 +9+3+0-4-4+4+0+0+0-4-5+0-4-5+0 +hashblocks_sha512 49 26 123 +13-1+0+0+0-4+4-4+0-4-4-4-4+0+0 +hashblocks_sha512 49 40 123 +10+3-5-4+0+0+0-4+4+0+0+0-4-5+0 +hashblocks_sha512 49 61 123 +10-5-1-4-5+0-4+4+0+0+0-4-5+0+0 +hashblocks_sha512 49 92 123 +10-1-1+0+0+0+0-4+4+0+0+0-4-5+0 +hashblocks_sha512 49 139 1453 +3695+43+26+17-4-4+0+2+0+0-4-4+0-4-4 +hashblocks_sha512 49 209 1455 +13+34+0-2-6-4-4+0+0+2+0+2-2-6-6 +hashblocks_sha512 49 314 2796 +60+51+20-1+0-2-2+1-1+1-1+1-1+1-4 +hashblocks_sha512 49 472 4135 +64+53+4+2+0+0+0-2+0-2-3-1-6-7-6 +hashblocks_sha512 49 709 6802 +132+62+9+9+10+2+6+0-5-24-45-54-59-25-45 +hashblocks_sha512 49 1064 10785 +136+68+80+42+23-11+18-23-19-19+0+2+0-9-6 +hashblocks_sha512 49 1597 16100 +212+158+158+46+26-61-5+28-39-30-28+30-90+0-50 +hashblocks_sha512 49 2396 24072 +356+148+31+0-26-41+33+13-30+14-66+35-96-34-9 +hashblocks_sha512 49 3595 37372 +338+131-23+9-87+16+30-7-6+94-9-14+40+0-91 +hashblocks_sha512 49 5393 55958 +529+41-20+2-1+16-45+25-24-77+73-26-43+0+29 +hashblocks_sha512 49 8090 83921 +496-61-74+5-60-42+6-25-32+71+24+0+92+90-17 +hashblocks_sha512 49 12136 125215 +344-121-126+23-45+0-112+43+74-57+57-80+42+16-75 +hashblocks_sha512 49 18205 189136 +1208+55+0+36+1+44-48+0+3-37-28-7-8-38-11 +hashblocks_sha512 49 27308 283659 +420+0-29-21-83-36-27+95-11+39-3+126+61+6+103 +hashblocks_sha512 49 40963 426694 -312-728-329-356+73+0+17+22+65-3-25+45+38-8+59 +hashblocks_sha512 49 61445 640130 -530+46-205-189-86+22-92+0+33+126+67+189+694-201-326 +hashblocks_sha512 50 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 50 0 87 +964+69+0-2+1-3-2+0-1+1+0+0+0+0+0 +hashblocks_sha512 50 1 90 +119-3+1-2+5-4+0+3-1+1-1+1-1+1-1 +hashblocks_sha512 50 2 87 +41+3-2+3+40+1-3+0+0+0+0+0+0+0+0 +hashblocks_sha512 50 4 87 +38+7+4+4-2+2+0-1+1+0+0+0+0+0+0 +hashblocks_sha512 50 7 87 +37+10+0+3+50-2+0+0+1-3-1+0+0+0+0 +hashblocks_sha512 50 11 87 +11+2+5+1+0-7-3+0+0+0+0+0+0+0+0 +hashblocks_sha512 50 17 87 +5+4+4+1+0-3-4+1+0+0+0+0+0+0+0 +hashblocks_sha512 50 26 87 +8+7+5+2+1-2+0+1-2+0+0+0+0+0+0 +hashblocks_sha512 50 40 87 +7+7+4+1-1+1-6-3-2+0-1+1+0+0+0 +hashblocks_sha512 50 61 87 +6+7+5+0+3-2-4+1+0+0+0+0+0+0+0 +hashblocks_sha512 50 92 87 +6+5+3+1+0-6-3-2+0-1+1+0+0+0+0 +hashblocks_sha512 50 139 1099 +3792+89+3+2+0+5+9-1-2-6+42-13-13-14-14 +hashblocks_sha512 50 209 1098 +71+8+3+3+13+74+0+0+2-6-10-9-12-13-13 +hashblocks_sha512 50 314 2068 +129+64+64+29+12+0-2-6-4-11+41-10-4+6-17 +hashblocks_sha512 50 472 3037 +157+96+139+29+6+5+0+4-3-6-12-6-4-4-13 +hashblocks_sha512 50 709 5044 +234+79+23-14+31-30+29+55-34-43-28+0-16+27-21 +hashblocks_sha512 50 1064 7964 +240+116+0+38-45-38+11-24+20-29-26+16+76-19-15 +hashblocks_sha512 50 1597 11869 +235+27+68-29-32-16+0+44+94-19+19-22-17+32-23 +hashblocks_sha512 50 2396 17733 +271+0+29+36+34+0+17-54-2-13-8+44-11+1-24 +hashblocks_sha512 50 3595 27552 +206-39-57+56+44-13-3-38+37+60+0+52+48-70-52 +hashblocks_sha512 50 5393 41225 +699+0+15+104+74-50-55-25+21-83-77+40-14+58-20 +hashblocks_sha512 50 8090 61775 +553+202-14-205+71-15-12+88+15+17+0+116-34-96-89 +hashblocks_sha512 50 12136 92039 +877-40-40-8-34+63+0+33+23-61+10-30-13+0+151 +hashblocks_sha512 50 18205 138976 +1372+51+0+149-71-75+86+254-64-41+178-2-31+25-82 +hashblocks_sha512 50 27308 208362 +1717-61-79+82+0+44-80+134-70+22-23+146-31+4-61 +hashblocks_sha512 50 40963 314825 +631-7-41+60+0+45-84-34+47+114-51+1292-103-50+0 +hashblocks_sha512 50 61445 472869 +83-441-683-505-251-601-673-323+827+0+222+219+49+321+165 +hashblocks_sha512 51 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 51 0 123 +1647+43+19-4-1+5-1+0+16+5+0-5-4+5+0 +hashblocks_sha512 51 1 123 +65-5+0+0+0-1+5-4+0-4-4-5+5+0-5 +hashblocks_sha512 51 2 123 +46+27+5-1+1-1-5+0-4-4+5+0-5-4+5 +hashblocks_sha512 51 4 119 +42-1+5-1+0+4+9+4+5+0+0+0-1-1+9 +hashblocks_sha512 51 7 119 +47+3+9-2+5+4+6+4+0-1-1+0+0+0+0 +hashblocks_sha512 51 11 123 +15-1+4-7+5+2-2-4+5+0-5-4+5+0+1 +hashblocks_sha512 51 17 119 +19-1+4+2-1+4-1+4+5+0+0+0-1-1+9 +hashblocks_sha512 51 26 123 +11-5+0-7+4+0+1+0+0+0-1-5+0+0+0 +hashblocks_sha512 51 40 119 +15-1+4+2-1+4-1+4+5+0+0+0-1-1+9 +hashblocks_sha512 51 61 119 +15-1+4-3+9+0+5+4+5+0+0+0-1-1+9 +hashblocks_sha512 51 92 121 +22+0+2+1+2+2-2-2+7-2+3-2-2-2-2 +hashblocks_sha512 51 139 1200 +7117+145+30+17+0+25+1-4-3-3-3-1-2-3+0 +hashblocks_sha512 51 209 1199 +15-4+0+1+1+6+4+0+1-1-2-3-1-1+0 +hashblocks_sha512 51 314 2283 +70+70+27+3-2+3-1+0+0-2-2-3-2-1+0 +hashblocks_sha512 51 472 3370 +93+50+3-6+4+0+3+3-4+0-12-8-10-14-6 +hashblocks_sha512 51 709 5537 +139+28+3+7+10+3-10-1-13-10+0-12+3-6-13 +hashblocks_sha512 51 1064 8782 +97+47+30-2-19+2+2-17-4-9-13+0+5-6+10 +hashblocks_sha512 51 1597 13112 +218+40+32-20+6-18-7+2-13-12+0-14+2-13+19 +hashblocks_sha512 51 2396 19615 +265+22+25-15-18-27+0-13+12+44+11+7-14-4-3 +hashblocks_sha512 51 3595 30497 +111-30-27+6-7+23+0+15+20-9+0-31-23-23+6 +hashblocks_sha512 51 5393 45657 +187-33+44+128-43-13-41+18+12-14+0+35-13-9+11 +hashblocks_sha512 51 8090 68423 +191+6-28+10-41-22+13-4+5+11-30-3+0-5+14 +hashblocks_sha512 51 12136 102045 +396+79+43+9+7+0+57-23-71+24-19-37-25-23-27 +hashblocks_sha512 51 18205 153999 +466-50+78-77-78+57-19+35+8-25+31-13+22-15+0 +hashblocks_sha512 51 27308 230952 +673+0-45-6-14-36+64+7+79-1+38+94-45-32+46 +hashblocks_sha512 51 40963 347828 +248-93-55+721+38-54+81-63+167+33+0-54-8+42-34 +hashblocks_sha512 51 61445 521735 +193-93+882-65+96-22+41-53+73-22+0-35-59+185+78 +hashblocks_sha512 52 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 52 0 87 +717+41+5+8+3-3+1-6-1+0-2+0+0-2+6 +hashblocks_sha512 52 1 90 +73-1+1-2+0-1-4-3-2+1+2+3-2+1+2 +hashblocks_sha512 52 2 86 +44+5+8+3+41-3-1-1+0+0+0-1+1+0-1 +hashblocks_sha512 52 4 87 +8+8+4+2+2-3-3-4+1+4-6-3-1-2+0 +hashblocks_sha512 52 7 89 +5+3+0+1-1-2-1-2+0+4+0+0+0+0+0 +hashblocks_sha512 52 11 89 +5+1+2-3+5+1-3-3+0+0+0+1-1+0+0 +hashblocks_sha512 52 17 89 +7+2+0-3+4-2+2-7+2+1-1+0+0+0+1 +hashblocks_sha512 52 26 90 +4+0+2-3+3-3+1-8+1+0-2-1-1-1+0 +hashblocks_sha512 52 40 89 +47-2+3+1-2+4+1-2+0+0+4+0+0+0+0 +hashblocks_sha512 52 61 90 +39+4+0+1+5-2-1-4+0-3+1-5+1-1-1 +hashblocks_sha512 52 92 90 +4+4+3+2+0+0-4-2-5+0-2-1-1-1+0 +hashblocks_sha512 52 139 1118 +7285+101+36+7+7+6+5+0-4-3-7-8-9-8-10 +hashblocks_sha512 52 209 1117 +73+9+8+6+10+7+7+0-4-5-6-7-4-8-7 +hashblocks_sha512 52 314 2112 +96+99+61+23+8+4+0+1-3-6-6-7-12-9-13 +hashblocks_sha512 52 472 3115 +114+79+59+44+35+0-7-11-18-19-34-25-23+24+26 +hashblocks_sha512 52 709 5132 +210+109+101+48+23-17-27-26-13+7-23+19-12-10+0 +hashblocks_sha512 52 1064 8123 +158+52+27+8-15-20-14+0-23-14-41+0+81-26+9 +hashblocks_sha512 52 1597 12098 +241+61+65+0-10-1-9-26-6+4+44+76-40+94+0 +hashblocks_sha512 52 2396 18110 +233+64-10+19+3+0-57+45-20-66+43-22+39-24-78 +hashblocks_sha512 52 3595 28087 +271+40-8+32-84+31+24-88+0+48-8-49+26-17-94 +hashblocks_sha512 52 5393 42057 +349-134+0+36+94+59-94-88-10+25-19+161+44-88-67 +hashblocks_sha512 52 8090 62968 +243-82-1-21-154+11+273+161-7+0-9+242-17+221+26 +hashblocks_sha512 52 12136 93906 +265-185+160+107+206+77-219-32-11-66+0+372-40-93+4 +hashblocks_sha512 52 18205 141784 +1170-245+0+82+78-177+75-200+61-76+413-95-199+75-211 +hashblocks_sha512 52 27308 212603 +1579-145+0-170+287-304+181+55-149+39-119-78+336+228-372 +hashblocks_sha512 52 40963 321403 +86-46+266+40-452+955-531+0-30+151-190-203-353+213+295 +hashblocks_sha512 52 61445 482677 +297+689-331-146-295-497+0-584+220+106-559+7+144-32+253 +hashblocks_sha512 53 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 53 0 123 +1444+80-6+1+2-5+1+0+16+0-4+0+1-4-5 +hashblocks_sha512 53 1 123 +78-5-6-1+1+0+5+0+16+0-4+0+1-4-5 +hashblocks_sha512 53 2 119 +50+3+3-2+6+3+9-1+0+0-1+0+0+0+0 +hashblocks_sha512 53 4 119 +56-1+4+0-1+0+5+0+6+4+9+0+5+0+0 +hashblocks_sha512 53 7 123 +40-5-4-4+5+0+1+0+0-4+5+0+1-4-4 +hashblocks_sha512 53 11 122 +16-1+0-1+1+1+3-3-3-3-4-3+6+1+2 +hashblocks_sha512 53 17 123 +18-1+4-7+0-4-4-4+16+0+2+0+5-4+1 +hashblocks_sha512 53 26 122 +12+0+0-4+1-4+1-3+2+1+2-3-3-3-4 +hashblocks_sha512 53 40 119 +16-2-2-1+4-2+6+0+0+0-1+0+0+0+0 +hashblocks_sha512 53 61 119 +16-1+4-1+4+0-1+0+5+0+0+0+0+0+0 +hashblocks_sha512 53 92 119 +16-2-2-1+4+0-1-1+20+4+5+0+0+0+0 +hashblocks_sha512 53 139 1200 +5813+134+21+1+1+1+1-1-4+0-1-2-1-3-1 +hashblocks_sha512 53 209 1199 +15+33+3+4-2+2+5+0+0-1-1-1-2-2+1 +hashblocks_sha512 53 314 2283 +69+55+24+7+0-2+0+1+0+0-1+0-1-6-5 +hashblocks_sha512 53 472 3367 +72+85+24-2+3+0+0-3+7-7-6-13+4-11-7 +hashblocks_sha512 53 709 5534 +134+106+25+21+4-2+3-10-12-4-2+0+1-25-31 +hashblocks_sha512 53 1064 8781 +99+66+7+6-2+12+0-5-15-1+0-1-5+8-3 +hashblocks_sha512 53 1597 13123 +135+20+14-23-8-36-31+3-18+5-23+2+0+9-16 +hashblocks_sha512 53 2396 19620 +214+44+64+14+1-10-6-19-47+31+0-23-34-12+13 +hashblocks_sha512 53 3595 30490 +94+25+24+0-10-25-14+21-20+0-26+0+8+18-15 +hashblocks_sha512 53 5393 45656 +137+142+0-18-9-26+5-54+18-22-35+21-5+18+8 +hashblocks_sha512 53 8090 68436 +127+11-10-15-14+0-42+29+9-15+29-2+11+21-25 +hashblocks_sha512 53 12136 102037 +354-22+19-29+36+69-30+50+55+726-18-10-24-37+0 +hashblocks_sha512 53 18205 154081 +409-145+0-56+1+54-36+46+0+73+17-1-10-16+27 +hashblocks_sha512 53 27308 231112 +641-80+10-50-98+3-177-57+2-30+0+24+54-22+134 +hashblocks_sha512 53 40963 347961 +77-53-71-89+83-91+0+31-2-38-36+40+52+61+5 +hashblocks_sha512 53 61445 522142 +330+208-337-104-191+25+83+0-237-51+25-103-88+4+101 +hashblocks_sha512 54 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 54 0 88 +1635+54+4+3+3+0+0+3-2-2+0-3+0+1+0 +hashblocks_sha512 54 1 89 +40+47+0+0-2+1-2+1+3+4-4-1-4-1-1 +hashblocks_sha512 54 2 89 +40+0+1-2+31-6+0+3-2+2-4+1+3-3-5 +hashblocks_sha512 54 4 90 +39+2+1-3-4-2+5-1+0+1+2-3-2-1+0 +hashblocks_sha512 54 7 90 +39+1+2-3-4+0+5-2+0+0+0+0+0+0+0 +hashblocks_sha512 54 11 91 +5+1+0+2-1-1-2-6+0-4+0-4+0-4+0 +hashblocks_sha512 54 17 86 +11+7+6+4+4+2-1+0+0-4-5-4-4-2+2 +hashblocks_sha512 54 26 90 +7+5+3+3+0+0+1-3+4-5-2-1-1-3+1 +hashblocks_sha512 54 40 91 +6+2+1+2+2+1+0-5+3-6-3-2-2-4+0 +hashblocks_sha512 54 61 88 +9+0+2+1+2+2+5-6-1+0-4+0-6-4+0 +hashblocks_sha512 54 92 91 +5+1+0+2-1-1-2-6+0-4+0-4+0-4+0 +hashblocks_sha512 54 139 1434 +3279+31+8+3+2+0+1+39-2-4-5-12-16-17-20 +hashblocks_sha512 54 209 1432 +68+0+1+3+2+5+3+3-1-6-7-10-14-15-18 +hashblocks_sha512 54 314 2721 +125+107+74+47+32+22+8+0-13-13-14-19-22-26-29 +hashblocks_sha512 54 472 3999 +253+116+86+71+51+12+8+0-10-16-7-32-30-28-32 +hashblocks_sha512 54 709 6602 +220+168+77+22+0+20-32-30-12+6-44-19-40+25-13 +hashblocks_sha512 54 1064 10482 +253+78+8-3+23-71+1-51-39-29+21-16+0-6+39 +hashblocks_sha512 54 1597 15627 +453+161+33+4-5-5-27+7-31+33-2-22-8+0+58 +hashblocks_sha512 54 2396 23412 +392-9+8-66-96-15-37-50+0+15+57+10+146+32-62 +hashblocks_sha512 54 3595 36411 +900+102-100-19-77-13+79+95+19-57+23+7-57+0-127 +hashblocks_sha512 54 5393 54533 +558-193+0+58-86-65-68-87-11+135+37-21+51+134+54 +hashblocks_sha512 54 8090 81652 +717-63-135+51-200-9+56-1+0+211-72-141+52+103+32 +hashblocks_sha512 54 12136 121674 +678-80-89+240-41+130-103-112+277-15-88+297+98+251+0 +hashblocks_sha512 54 18205 183867 +1017-163+8+174+144-308-236+248-285+0-163-168+27+161-20 +hashblocks_sha512 54 27308 275714 +1302+84-472+165+59+0-270+165-206-21+145-432-263+5-119 +hashblocks_sha512 54 40963 415961 +348-95+202-132+293+1371+261+0-319+404-20+74-299-171-100 +hashblocks_sha512 54 61445 624068 +218+1079-91+344-408+104-520+290+0-177-43+201-125-643+135 +hashblocks_sha512 55 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 55 0 123 +716+30-5+0+0+0+0+0+15-4-4+0-4+0+4 +hashblocks_sha512 55 1 123 +73+37+3+7+0+4-5+0+0-4+0-3-4+0+0 +hashblocks_sha512 55 2 123 +29-4+0+0+0+0-4+4-4+0-4+4+0+0+0 +hashblocks_sha512 55 4 119 +14+0+3+3+3+4+0+8+0+0+0+0+0+0+0 +hashblocks_sha512 55 7 122 +11+0+0+0+0+5+1+1+16-3-3-3+1-3-4 +hashblocks_sha512 55 11 122 +9+0+0+0+0+0+5-3-3+5+5-3-3-3-3 +hashblocks_sha512 55 17 122 +11-3+0+0+0+1-3-3-3+5+5-3-3-3+1 +hashblocks_sha512 55 26 122 +11+0+0+0+4-4+5+5-3+5+5-3-3-3-3 +hashblocks_sha512 55 40 123 +8-5-6-1-1+4+0-4+0-3-4+0+0+0+0 +hashblocks_sha512 55 61 122 +9+0+0+0+0+0+5-3-3+1+1-3+1+1+1 +hashblocks_sha512 55 92 122 +11+0+0+0+0+0+5-3-3+1-2-3+1+1+1 +hashblocks_sha512 55 139 1453 +9171+113+32+0+3-1-1+1+0+0-3-2-2-2-2 +hashblocks_sha512 55 209 1453 +74+1+0-2+0+4+2+2-1-2-1+0+0+1-2 +hashblocks_sha512 55 314 2794 +113+64+60+41+0-3+0-4+1+1-4-5-6-7-6 +hashblocks_sha512 55 472 4129 +141+67+36+17+1+6+0-3-4-4-2-16-24-7+5 +hashblocks_sha512 55 709 6802 +207+42+9+8+11+0+1+0-13-48-15-67-23-9-24 +hashblocks_sha512 55 1064 10784 +185+91+38+36+26+7-22-17-26-30-21+2-18+0-8 +hashblocks_sha512 55 1597 16080 +366+172+130+29-39-14+54-46+0+0-26-49+34-10-66 +hashblocks_sha512 55 2396 24072 +429+154+31-2+22+0+27-33-62+20-13-49-114-159+139 +hashblocks_sha512 55 3595 37341 +447+192+0+17+17-53-13-59+11-37-50+86+50-12-20 +hashblocks_sha512 55 5393 55970 +535+77-71+37+49+39-35-5+64+0-66-106-105-38+121 +hashblocks_sha512 55 8090 83915 +498-64-48-29+55-51+45+0-23+83-12+18+61-37+15 +hashblocks_sha512 55 12136 125241 +338+1013-111-21-23+0+31-54+15-83+24-7-75+83+20 +hashblocks_sha512 55 18205 189084 +421-157+18+108-40+0-2+32+107+25-211-25+66-71-235 +hashblocks_sha512 55 27308 283751 +590-58-171-59+110-301+53+0+1176+78-176-4+113-57+210 +hashblocks_sha512 55 40963 426729 +2+70+0-465-103-14-393-105+65-268+12+26+734-252+36 +hashblocks_sha512 55 61445 639968 +630-163+715+724+166+870+1433+0+74-384-202-18-462-516-348 +hashblocks_sha512 56 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 56 0 51 +312+56+20+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 56 1 51 +41+1+3-1+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 56 2 51 +35+4+1+1+0+4+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 56 4 52 +38+0+0+0-1+0+1-1+1-1+1-1+1-1+1 +hashblocks_sha512 56 7 51 +35+1+1+1+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 56 11 52 +5+0+0+0+0+0-1-1-1-1+1-1-1-1+1 +hashblocks_sha512 56 17 52 +4+0+0+0+0+0+1-1+1-1-1-1-1-1-1 +hashblocks_sha512 56 26 52 +4+0+0+0+0+0+1-1+1+1-1-1-1-1-1 +hashblocks_sha512 56 40 52 +5+0+0+0+1+1+3-1-1+1-1-1-1-1-1 +hashblocks_sha512 56 61 51 +6+2+1+1+3+1+0+0+0+0+0+0+2+0+0 +hashblocks_sha512 56 92 51 +6+2+1+1+1+2+0+2+0+0+0+0+0+0+0 +hashblocks_sha512 56 139 1289 +3670+220+23+22+0+51-2-2+1-1-7+6-1-2-1 +hashblocks_sha512 56 209 1287 +61+4+8+11+2+0+0+0-5-2+0-4+2+0+2 +hashblocks_sha512 56 314 2481 +136+60+86+76+25+3+3-5-3-5+0-5-2-7-4 +hashblocks_sha512 56 472 3672 +234+157+127-4-3+6-3-1+0-2-5-2+13+42+4 +hashblocks_sha512 56 709 6058 +126+39+27+44-10+2-1+52+0-3-8-8+22-5-5 +hashblocks_sha512 56 1064 9643 +111+53+97+48-13+43-9+3+0-8+50-13-17-6-14 +hashblocks_sha512 56 1597 14443 +166+9+0+57-27+6+38-16-14-9+28-18-11+42-19 +hashblocks_sha512 56 2396 21632 +213+39+17-10-35+2-35+30-35+0-38-32+52-32+26 +hashblocks_sha512 56 3595 33589 +202-20+15-22+23+10-10-23+9-63+17-15+9-57+0 +hashblocks_sha512 56 5393 50320 +186-14+21+0-34-26+25-2+26+19-27+62+35-14-5 +hashblocks_sha512 56 8090 75402 +229-17-67+11-32+24+23-16-40+12-12+5-13+0+10 +hashblocks_sha512 56 12136 112420 +414+59+15+20-12-7+0+47+0-53-1+63-45+47-45 +hashblocks_sha512 56 18205 169768 +588+122+4-58-6-18+48-34+75+16-76+10+0-3-37 +hashblocks_sha512 56 27308 254771 +780+7+33-29-27-40+124-83-76-30-94+39+32+0+33 +hashblocks_sha512 56 40963 383666 +288+66+0+12+66-57+60-14-5-35-1+170+69-47-16 +hashblocks_sha512 56 61445 575827 +170+72-38+0-84-38+126-151+159-199+11+33-18+24-63 +hashblocks_sha512 57 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 57 0 51 +1027+69+23+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 57 1 51 +38+23+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 57 2 51 +38-2+1-2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 57 4 51 +37-2+1-2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 57 7 51 +5-2+1-1+1-2+1+2+0+0+0+0+0+0+0 +hashblocks_sha512 57 11 51 +4-2+1-1+1-2+1+2+0+0+0+0+0+0+0 +hashblocks_sha512 57 17 51 +5-2+1-2+1-2+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 57 26 51 +4-2+1-1+1-2+1+2+0+0+0+0+0+0+0 +hashblocks_sha512 57 40 51 +5-2+1-1+1-2+1+2+0+0+0+0+0+0+0 +hashblocks_sha512 57 61 51 +4-2+1-1+1-2+1+2+0+0+0+0+0+0+0 +hashblocks_sha512 57 92 51 +5-2+1-1+1-2+1+2-1+2-1+1+0+0+0 +hashblocks_sha512 57 139 1061 +913+147+32+52+0-1+0+0-1+0-1-6-1-6+0 +hashblocks_sha512 57 209 1060 +127+28+3-1+1+5+0+2+0+0+0+0+3+0+0 +hashblocks_sha512 57 314 2040 +217+34+25+23+4-7-1+0+15+2-8-6-7-3-6 +hashblocks_sha512 57 472 3016 +226+82+46-4-1+0-6+29+6+2-3-1-2+1-10 +hashblocks_sha512 57 709 4966 +167+24+43+0+25+19+0+2+4-1+0-1+0-1+0 +hashblocks_sha512 57 1064 7902 +207+19+29+51+21+0-5-4+11-10+0-7-4-1-8 +hashblocks_sha512 57 1597 11832 +138+53+21+47+14-7-4-3-1-5+0-6-1+3+4 +hashblocks_sha512 57 2396 17695 +120+29+29-7-5+2-6-6+4-4-1+0+23+19-7 +hashblocks_sha512 57 3595 27484 -52+11+25+1-1-2+5-3+2+19-6-2-4+0+19 +hashblocks_sha512 57 5393 41188 -142+5-1+1+0+1+1-1+0-2+0-2-1+1+0 +hashblocks_sha512 57 8090 61266 +151+446+889+3-6+7-8-15+0-18+0-5-5-17+16 +hashblocks_sha512 57 12136 91969 +263+27+8+0+3-3+2+0-4+0+0-3-2-1+2 +hashblocks_sha512 57 18205 138865 +299+19+11-1-1-1+2-2+10+0+7-2+0-1+2 +hashblocks_sha512 57 27308 206912 +1758+1404+1401+1383+1383+1395+1664-9+0-28-14-20-24-48-30 +hashblocks_sha512 57 40963 313202 -2012-2371+20+2-25+5+33+0-4+15+24+11-38-9-6 +hashblocks_sha512 57 61445 469888 -1654+24-28-69+21+62+53+0-29+8+38-3+23-1597-3773 +hashblocks_sha512 58 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 58 0 52 +558+49+6-1+0+0-1+0+0+0-1+0-1+0-1 +hashblocks_sha512 58 1 51 +73-1+4+1+0+2+0+0+3+0+0+0+0+0+0 +hashblocks_sha512 58 2 51 +39+1+4+1+0+5+0+0+0+0+0+0+0+26+0 +hashblocks_sha512 58 4 51 +38+1+4+1+0+5+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 58 7 51 +36+1+5+1+0+0+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 58 11 52 +5+0+0+0+1+1+1-1-1-1+1-1-1-1+1 +hashblocks_sha512 58 17 52 +4+0+0+0+0+0+3+1+1+2-1-1-1-1-1 +hashblocks_sha512 58 26 52 +5+0+0+0+0+1-1+1-1-1-1-1+1-1-1 +hashblocks_sha512 58 40 52 +4+0+2-2+4+0+1+4-1-1+1-1-1-1+1 +hashblocks_sha512 58 61 52 +4+0+0+0+0+1-1+1-1-1-1-1+1-1-1 +hashblocks_sha512 58 92 52 +5+0+0+0+1+0+1+4-1-1+1-1-1-1+1 +hashblocks_sha512 58 139 1134 +928+153+47+51-8+57+0-16-27-39-24-7-36+29+24 +hashblocks_sha512 58 209 1120 +157+21-4+12-17-1-1+15-5-6+0+2+0-9+4 +hashblocks_sha512 58 314 2145 +145-10+68+1+25-14-29+21-7+0-3+44-19-9+4 +hashblocks_sha512 58 472 3184 +206+71-23+69-7+2+3-42-11-4+24-41-57+6+0 +hashblocks_sha512 58 709 5274 +144+91-15-32-39+24-29-41-6+16+0-16+1+5+9 +hashblocks_sha512 58 1064 8362 +155+92-42-24-64+35+0-15+44+4+42-20-11-66+22 +hashblocks_sha512 58 1597 12507 +187-47-1-85-166-21-30+177+31+0+69+100+107-18+24 +hashblocks_sha512 58 2396 18692 +159-18+121+20+53+19-31-156+0-2+92+10-58-254-8 +hashblocks_sha512 58 3595 29024 +336+71-54-84-19-46+111+0+36+47+28-17-3+77-148 +hashblocks_sha512 58 5393 43467 +375+138-75-120-41+77+18+38-20-46-20+989+0+19-18 +hashblocks_sha512 58 8090 65114 -27-22+14+19+127+105-28+442+131+62+0-7-61-107-72 +hashblocks_sha512 58 12136 97177 +103+15-252-132+0+131+18+134-73+176+0-199-203-274+79 +hashblocks_sha512 58 18205 146582 +576+7-30+66-372+9-22+91-271-378-282+0+385-399+129 +hashblocks_sha512 58 27308 220265 +618+159-132+170+494-240-244+232-183-449-519+0-187+225+46 +hashblocks_sha512 58 40963 331702 +264+16-184-330-106+294-73-97+0+133+348-347+1265-579+228 +hashblocks_sha512 58 61445 497788 +308-352+111+150-527+91-393+0-144+32-258+433+107-1096-62 +hashblocks_sha512 59 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 59 0 51 +439+54-2+0+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 59 1 51 +35-1-1-1-1-1-1-1+0+0+0+0+0+0+0 +hashblocks_sha512 59 2 51 +24-1-1-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 59 4 51 +24-2+0+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 59 7 51 +1-1+1-2+0+1-2+1+0+0+0+0+0+0+0 +hashblocks_sha512 59 11 51 +1-1+1-2+0+1-2+1+0+0+0+0+0+0+0 +hashblocks_sha512 59 17 51 +3-2+1-2-1-1-1+1+0+1+0+0+0+0+0 +hashblocks_sha512 59 26 51 +2+0+2-2-1-1-1+1+0+1+0+0+0+0+0 +hashblocks_sha512 59 40 51 +4-2+1-1-1-1-1+1+0+1+0+0+0+0+0 +hashblocks_sha512 59 61 51 +3-2+1-1-1-1-1+1+0+1+0+0+0+0+0 +hashblocks_sha512 59 92 51 +1-1+1-2+0+1-2+1+0+0+0+0+0+0+0 +hashblocks_sha512 59 139 945 +829+76+1-3-3-3+0+1-4+6-3+3-3-1+2 +hashblocks_sha512 59 209 944 +94+7+1-3-5-1+3+3+4-2-7+0+1-3-7 +hashblocks_sha512 59 314 1805 +132+81+32-7-7+6-1-1+0-1+3-2+0-1+1 +hashblocks_sha512 59 472 2661 +75-4+11+0+2+8-8-11-5+0+11-1-1+8+8 +hashblocks_sha512 59 709 4384 +171+43-2+0-6-6-6+27+7+1+0+4+5-3-6 +hashblocks_sha512 59 1064 6963 +92+26+19+26+9-4+3-3+0-13-15+2-4-1-8 +hashblocks_sha512 59 1597 10426 +94-4-19+10-21+27+0+1-5+8+12+10-11-13-10 +hashblocks_sha512 59 2396 15581 +121+8-16+13-24-6+0+22+32-21-6-14+24+20-4 +hashblocks_sha512 59 3595 24193 +123-1-25-53+8+0+47-17+8-28+16+2-3-6+2 +hashblocks_sha512 59 5393 36248 +94+36-14+47-19+21-27+32-66-35+0+44-3-18+21 +hashblocks_sha512 59 8090 54291 +164-17-25+34-11+9+0+8-43+59-36+23+2-51-47 +hashblocks_sha512 59 12136 80941 +118-3+87+9-19-16-6+48+77-13+22-47+50+0-78 +hashblocks_sha512 59 18205 122261 +177+22-7+45-30-16-44-6+68+16-18+27+0+23-40 +hashblocks_sha512 59 27308 183277 +345+10-119+2-168+72-126-61-58+25-138+72-52+72+0 +hashblocks_sha512 59 40963 275366 +369+31-38-13-26+132-35+23+53+95-70-15+920-26+0 +hashblocks_sha512 59 61445 413174 +81-201+21-57+24+0-6-52+10+70-8+702-24-101+77 +hashblocks_sha512 60 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 60 0 51 +364+52+29+29+29+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 60 1 51 +42+1+0+1+1+1+1+0+1+0+0+0+0+0+0 +hashblocks_sha512 60 2 51 +38+1+1+1+1+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 60 4 51 +35+0+2+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 60 7 51 +5-1+2+1+1+0+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 60 11 51 +5-1+2+1+1+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 60 17 51 +10+0+1+1+1+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 60 26 51 +5+2+1+1+1+0+0+2+3+0+0+0+0+0+0 +hashblocks_sha512 60 40 53 +3+0-1-1-1-2+0+2-2+0+0+0+0+0+0 +hashblocks_sha512 60 61 51 +5-1+2+1+1+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 60 92 51 +5-1+2+1+1+1+2+3+0+0+0+0+0+0+0 +hashblocks_sha512 60 139 1112 +1867+164+33+3-9+0-8+45+21-21-11-1-18+13-16 +hashblocks_sha512 60 209 1106 +44+0+34-11+0-8+5-1-1-16-9-11+2+1+4 +hashblocks_sha512 60 314 2118 +111+86+74-4+4-18-10-20+53+19+0-8+12-13+0 +hashblocks_sha512 60 472 3141 +67+24+91+2-12+0-53-31-18+4-11-3+26+23-12 +hashblocks_sha512 60 709 5173 +83+40+57-47-14+30-40+12-54-46-3+0+20+21-8 +hashblocks_sha512 60 1064 8210 +45+140-19+41+4+0+31-55-10+8-2-26-36+67-59 +hashblocks_sha512 60 1597 12292 +139-8+73-39-41+18-29-6+38-39+4+0+14-2+69 +hashblocks_sha512 60 2396 18381 +102-41+24-45+0-62-41+64-57+21+4+3+8-66-42 +hashblocks_sha512 60 3595 28532 +111+11+43-106-70+35+80-67-67-16+0+25+2-11-11 +hashblocks_sha512 60 5393 42747 +156+16-134+24+14+120-51+0-40-25-129+36+59-72-13 +hashblocks_sha512 60 8090 64015 +320+69+22+0-6-36+142-48-42+120+66+137-78-12-14 +hashblocks_sha512 60 12136 95514 +410-9+66+102-236+107-35+31-196-29+68+116+0-134-202 +hashblocks_sha512 60 18205 144148 +599-60+91-90-84-28+70+25+135+50-12-69+0+1-91 +hashblocks_sha512 60 27308 216394 +915-25-181-60-28+0+129+72-50-186-218+12+56+90+156 +hashblocks_sha512 60 40963 326287 +90-239-322+161+222-294+177+33+0-55+392-37-182-208+211 +hashblocks_sha512 60 61445 489848 -400-173-674-645-482-434-728+555+188+306+211+0+359+346+415 +hashblocks_sha512 61 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 61 0 52 +1361+51+26-3-1+1+0+0+1+0+0-1-1-1-1 +hashblocks_sha512 61 1 51 +67-2+0+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 61 2 51 +37-1+1-2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 61 4 51 +36-1+1-2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 61 7 51 +36-2+1-2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 61 11 52 +5-3+0-2+0-3+2-1+1+0-1+0+0+1+0 +hashblocks_sha512 61 17 52 +5-3+0-2+0-3+2-1+1+0-1+0+0+1+0 +hashblocks_sha512 61 26 52 +5-3+0-2+0-3+2-1+1+0-1+0+0+1+0 +hashblocks_sha512 61 40 52 +2-1+1-1+1-2+0-2+0-3+0+1+0+0-1 +hashblocks_sha512 61 61 52 +5-3+0-2+0-3+2-1+1+0-1+0+0+1+0 +hashblocks_sha512 61 92 51 +4-1+1-2+1+2+0+2+0+1+0+0+0+0+0 +hashblocks_sha512 61 139 945 +885+102+17+3-6-6-3+0+16-6-2+0-2+1+2 +hashblocks_sha512 61 209 945 +65+5+14-4-6+0+8+4+14-2+0-4-4+7-7 +hashblocks_sha512 61 314 1802 +190+83-3+0+7+7+0-2+27+4-4-12+16-2-4 +hashblocks_sha512 61 472 2664 +137+37+18-1-6-3+11-4+5-9+1-6-1+0+8 +hashblocks_sha512 61 709 4382 +189+32-6+10+9+0+4-1-6+7+9-2-6-2-4 +hashblocks_sha512 61 1064 6963 +138+26+31+29-15-8-6-9+8-9-12+0+0-10+12 +hashblocks_sha512 61 1597 10413 +144+6+43+5-6-24-6-20-2-5-12+3+0+7+18 +hashblocks_sha512 61 2396 15585 +114-4-4-11-15-1-1+0+25+9-11+10+13+2+8 +hashblocks_sha512 61 3595 24204 +170-21+26-12+8+14-23+12+0+27-46-8-7+40-30 +hashblocks_sha512 61 5393 36243 +119-8+18-3+1-25-7+20+8-37+22+8-12-41+0 +hashblocks_sha512 61 8090 54313 +135+6-17+9-54+21+7-83-5-68+0+53-86+15-36 +hashblocks_sha512 61 12136 80965 +175+20+0+9+11+20-21-17-2-39-70-45+2-8+19 +hashblocks_sha512 61 18205 122239 +93+0+53-25-19-13+62-47-37+19+80-22+25-37+38 +hashblocks_sha512 61 27308 183302 +196+22+35-68+9-44+8+0+18-37-56-84+0-18-18 +hashblocks_sha512 61 40963 275404 +330-47-5-5-29+138+45+0+8-74+775-12+37-18+27 +hashblocks_sha512 61 61445 413189 +2-66+83+80+28-85+0-56+3+103+733-145-200-173-82 +hashblocks_sha512 62 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 62 0 54 +473+46+25+18+21-3+0-3+0-3-1-3-1-3+1 +hashblocks_sha512 62 1 52 +38+51+0+3+0+0+0+0+0+4+1+4+4-1-1 +hashblocks_sha512 62 2 51 +36+1+1+1+0+2+3+0+0+0+0+0+0+36+0 +hashblocks_sha512 62 4 52 +36+0+0+0-1+2-1+1-1+1-1+1-1+1-1 +hashblocks_sha512 62 7 52 +9-2+3+0+0+2-1+3-1-1+1-1-1-1+1 +hashblocks_sha512 62 11 52 +9+0+0+1+0+0-1-1-1-1+1-1-1-1+1 +hashblocks_sha512 62 17 52 +4+0+2+0+0+0+1+2-1-1-1-1+1-1-1 +hashblocks_sha512 62 26 52 +9+0+0+1+0+0-1-1-1-1+1-1-1-1+1 +hashblocks_sha512 62 40 52 +4+0+0+0+0+0-1-1-1-1+1-1-1-1+1 +hashblocks_sha512 62 61 52 +9+0+0+3+0+0-1-1-1-1+1-1-1-1+1 +hashblocks_sha512 62 92 52 +4+0+0+1+0+0+1-1-1-1+1-1-1-1+1 +hashblocks_sha512 62 139 1291 +1275+137+23+16+83+0-2-1+0+49+0+45-2-3-2 +hashblocks_sha512 62 209 1290 +135+25+1-1+3-1-3+0+1-2+1-3+1-1-1 +hashblocks_sha512 62 314 2491 +204+94+40-5+1-2-7-14+0-5-5+0-9+6+0 +hashblocks_sha512 62 472 3679 +234+61+88+0+2-8+6-2+47-3+0+0-3+5-2 +hashblocks_sha512 62 709 6073 +182+24-7+39+24-16-6-10+0-8+48+3-16-11+0 +hashblocks_sha512 62 1064 9668 +160+37+42+43+1+0+41-3-11-2-22-28-6+35-27 +hashblocks_sha512 62 1597 14458 +272+16+10+0+44-2-7+12+38-10-3-9-13+41-12 +hashblocks_sha512 62 2396 21654 +231+24+69-21-27-16+29-4-27+38+0-25+19-45+11 +hashblocks_sha512 62 3595 33647 +144-68+30+10-72+19+765-14-9-50+0-51+16-60+15 +hashblocks_sha512 62 5393 50351 +130+22+23-14-33+28-12-21+1-45-14+0+40+10-5 +hashblocks_sha512 62 8090 75448 +261+12+39-18-44+0-46+23+54+33-11-45+26-11-40 +hashblocks_sha512 62 12136 112485 +406+74-7+70-3+67-2-9+55-24-37+0-12+0+14 +hashblocks_sha512 62 18205 169948 +491+0+82-22-25+42-61+25+12+72-83-17+4-1-99 +hashblocks_sha512 62 27308 254930 +958+0-37-23+25+41-24-6+72+11-110-10+2-30+1 +hashblocks_sha512 62 40963 384074 +375+203+29+714+56-11-24-90+0-39-76+51+59-3-17 +hashblocks_sha512 62 61445 576784 -291+450+2+0-44+75+53-109+57-81-16+83-169+41-26 +hashblocks_sha512 63 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 63 0 51 +318+53+48+43-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 63 1 51 +65+55-2+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 63 2 51 +39-2+1-2+34+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 63 4 52 +4+0-3+0+1-2+0+1+0+0-1-1-1-1-1 +hashblocks_sha512 63 7 51 +4+0+2+0+2-1+1+2+1+1+0+0+0+0+0 +hashblocks_sha512 63 11 52 +2+1-2+0-3+0+1+0+0+1+0+0-1-1-1 +hashblocks_sha512 63 17 51 +5+0+2-2+1-2+1+2+1+1+0+0+0+0+0 +hashblocks_sha512 63 26 52 +4+0-3+0+1-2+0+1+0+0-1-1-1-1-1 +hashblocks_sha512 63 40 51 +4+0+2+0+2-1+1+2+1+1+0+0+0+0+0 +hashblocks_sha512 63 61 52 +4+0-3+0+1-2+0+1+0+0-1-1-1-1-1 +hashblocks_sha512 63 92 52 +4+0-3+0+1-2+0+1+0+0-1-1-1-1-1 +hashblocks_sha512 63 139 1170 +986+124+1+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 63 209 1169 +124+72+3+1+1+0+0+0+0-1+2+0+0+1+0 +hashblocks_sha512 63 314 2251 +222+24+0+19-1+1+0+1+2-1+0+0+0+1+0 +hashblocks_sha512 63 472 3335 +210+32-6-2+0-1+4-3+1-2-2-1+8+1+6 +hashblocks_sha512 63 709 5494 +251+25+7-3+1+1+0+0-4+11+0-2-1-4-2 +hashblocks_sha512 63 1064 8737 +176+21+17+23+22-2+0-4-3-9-4+0+1-3-3 +hashblocks_sha512 63 1597 13073 +222+44+18+26-1-6+8+0-6-4+0-13-3+4-16 +hashblocks_sha512 63 2396 19554 +210+20+29+9+1-14-3-3-5+18+20+0-4+0-11 +hashblocks_sha512 63 3595 30406 +180-12+25+14+0-24+0+15+17-14-36+19+16-9-24 +hashblocks_sha512 63 5393 45551 +252+0+23-1-6-4+1+4-1-2+2+13+2-10-3 +hashblocks_sha512 63 8090 68236 +430+13+17-19+0-19-4+17+1-25+0-25+10-13+4 +hashblocks_sha512 63 12136 101735 +763+24+23-1+0-16-9-3+1+0+760+236-3+6-15 +hashblocks_sha512 63 18205 153731 +1104+56-15+32-10+1+0-21+4+1-25-10+11-11-6 +hashblocks_sha512 63 27308 230711 +1921+51+0+4+3+30-7+2-34-9-21+53-22-39-49 +hashblocks_sha512 63 40963 349629 +235+33-8+1-18+16-1+7-6+0-6+0-6+6-68 +hashblocks_sha512 63 61445 524550 +185+31-40+34-3-3+5-43+0-24-5+19+24+8-27 +hash_sha512 selected implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 selected 0 796 +5922+97+51-4+7+93-5-1+20-4+0+4-4+0+0 +hash_sha512 selected 1 797 +3722+76+9+1+4-4-6-2+16-5-5-5-1+0+7 +hash_sha512 selected 2 801 +123+2+7+44+0+2+33-2-10-12-1-5+1-6-3 +hash_sha512 selected 4 803 +54+4+0-6-3+1-7+40-9+0-5+3-10+4-8 +hash_sha512 selected 7 801 +61+30+10+0+6+4-1-2-9+2+0-3-3-4-3 +hash_sha512 selected 11 804 +57+3+4+3+0+2-2-6-8-10-5-12+32-10+47 +hash_sha512 selected 17 802 +59+5+2+0+2+47-1+1+18-5-3-5-11-4-13 +hash_sha512 selected 26 807 +49+19+10+0+0-3+1-2-6-17-13-15+0-14+10 +hash_sha512 selected 40 796 +90+42+7+0+1+0+4-4-9+1-1+0-2+3-3 +hash_sha512 selected 61 800 +75+84+10+10+3+5+0-1+0-5+0-2-7+0-2 +hash_sha512 selected 92 803 +110+41+9-3-1+0-5-2+21-4+0-1+47-5+3 +hash_sha512 selected 139 1513 +77+33+23+12+32-8-9-16+0-2+39+7-3-4-14 +hash_sha512 selected 209 1510 +121+2-1-6+5-9-2+7+0-5+7+1-5+1-6 +hash_sha512 selected 314 2184 +128+14-4-18-11+39+0+0-3-11+45+2-5+47-13 +hash_sha512 selected 472 2860 +194+72+69-18-5+1-10+8+8-4+6-8-21+0-4 +hash_sha512 selected 709 4203 +162+59+51-7-8+0-9-13+9-9+11-1+19+22-4 +hash_sha512 selected 1064 6225 +142+16+39-15-2-3+19+70+0-11-33+9-22+29-27 +hash_sha512 selected 1597 8903 +205+93+4-2-2+0+29-15-1-17-2-13+18+7+3 +hash_sha512 selected 2396 12943 +183+61+0-17-2+22+12+4+19-45+3-72-5-38-15 +hash_sha512 selected 3595 19686 +138+48-39-10+30-17-39+12+62-17-69+57+0-36+50 +hash_sha512 selected 5393 29124 +107+96+40+5+45-57-39-55-53-83+21-67-33+3+0 +hash_sha512 selected 8090 43215 +219+95-110-47-94+66-12+854+43+68+22+0-9-34-2 +hash_sha512 selected 12136 64002 +293-14+26+7+19-71-95-96+70+106+17-96+0-59-86 +hash_sha512 selected 18205 96185 +457-35+0+62-6+66-9+8-61-41+97-48+54+21-38 +hash_sha512 selected 27308 143910 +492+44+0+128-59+46+12-82+74-98+25-71-30-31-58 +hash_sha512 selected 40963 216226 +282-49+31-67+139+0-85+109+64+77-25-19+37-85-5 +hash_sha512 selected 61445 323881 +215-90+150+9+17+0-31-67+134-82-244-76+124+75-63 +hash_sha512 0 implementation blocksplusavx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 0 0 798 +733+62+31-5-5-8+45-9+25-8-4+3+0-7+4 +hash_sha512 0 1 796 +131+35+8+0+0-3-7-2+15-1-2-1+2+2+11 +hash_sha512 0 2 796 +126+38+2-1+2+0+5+0-1+5+0-3+4-2-2 +hash_sha512 0 4 799 +162+40+76-1+6-1-4+3+20+0-3+0+2-4-5 +hash_sha512 0 7 806 +136+38+7+2+1+1-4-5-2+5+0-6-7-3-10 +hash_sha512 0 11 813 +121+86+35+11+0-1+5+3-5-4-4-5-1+2-8 +hash_sha512 0 17 825 +159+36+7+0+0+1-1-2+1-3+3+0-3+5+0 +hash_sha512 0 26 845 +74+54+52-2-1+1+29+9+2+0-4-5-8-7+0 +hash_sha512 0 40 871 +83+76+70+1-3+9+3-1-3+1-1-2-2+0-3 +hash_sha512 0 61 914 +79+77+32+22+18-1-1-5+0-3+4-3-2-5+0 +hash_sha512 0 92 977 +81+53+28+21+21-2-3-3+4+4-3-3+0-6-1 +hash_sha512 0 139 1522 +128+54+30+10-6-6+36-2-12-2+0-13-16+45+0 +hash_sha512 0 209 1653 +121+35+4-17+3-11-9+1-19+4-5-9+0+21-2 +hash_sha512 0 314 2277 +204+73+60-5+2+58-10+49-3-8-1-2+0+82-7 +hash_sha512 0 472 3027 +147+42+2-24+0-22+50-18-21-21+34+2-21+32-22 +hash_sha512 0 709 4337 +179+50+30+40+8-30+0-16-11-8-6-1+3+15-7 +hash_sha512 0 1064 6287 +193+97+22+18-2+10-8-26+38-11-9+23+0-3-11 +hash_sha512 0 1597 9024 +173+107+30+27+49+13-33-2-8+0-24-9-12+8-7 +hash_sha512 0 2396 13123 +236+123+53+6+25-23+0-37-24-35-10-31+22+48-9 +hash_sha512 0 3595 19737 +115+74+83+2-34-23+2+31-2+6-32-73+0-10-20 +hash_sha512 0 5393 29128 +132-28+124+77+38+7+54-28+0-27-47+69-17-6-40 +hash_sha512 0 8090 43227 +200-6+20+0-13+10-1+43+34-4+15+52-28-29-48 +hash_sha512 0 12136 64206 +234+76+0+5+67+28+27-92-41+60-22-1-54-120-35 +hash_sha512 0 18205 96296 +308+9+6-146-60+16-45-57+64+0+1060-27-107+73-41 +hash_sha512 0 27308 143994 +505-50-15-75+95+29-35-13-88-71+57+0+90+25+101 +hash_sha512 0 40963 216196 +234+234-21+76+0+77+151+88+768-480-419-695-696-542-712 +hash_sha512 0 61445 323860 -23+235-64+76+133+27-97+43+94-66-125+0+492-894-1034 +hash_sha512 1 implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 1 0 794 +205+53+0-1-3+0+0-7+20-7-7+0-10+3-5 +hash_sha512 1 1 838 +236+90+60+55-24-38+10+0+4+5-41-39-45-38-34 +hash_sha512 1 2 805 +200+108+51+16+34+34-9-5+17-12+0-12-4-12-2 +hash_sha512 1 4 801 +121+41+54+21+3-4-2-2-8+1+0-4-1-1+3 +hash_sha512 1 7 801 +121+17+0+2-2-2+3+0-9-12-1+1-12+0+0 +hash_sha512 1 11 799 +55+53+11+1-1-1-2+1-3-3+0-1-6+15+3 +hash_sha512 1 17 799 +136+40+2+0-4-5-4+0+1-1-4+8-1+4-2 +hash_sha512 1 26 797 +60+13+15+21+7-2-1+0-1-4-4-3+0-9+8 +hash_sha512 1 40 797 +69+40+33+0+20+5-3-2+2-2+0-1-4-3+8 +hash_sha512 1 61 801 +53+16+10+5+8-3-6-2+1+0-4-3+1-1+0 +hash_sha512 1 92 805 +103+59+38-8-5-2+5+3-9+3-1+0-3-3+0 +hash_sha512 1 139 1507 +85+9-8+19+0-3-10+41+0-7+1+6-12+3+0 +hash_sha512 1 209 1512 +92+52-11-14+42+3-4-8+15-5-6-2+35+5+0 +hash_sha512 1 314 2184 +105+73+26-1+11-7-13+0+5+44-3+42-13-14-10 +hash_sha512 1 472 2861 +167+41+77+7-3-14+8-4+0+5-2+6-10-17-3 +hash_sha512 1 709 4218 +111+15+21+36+1+51-19-27-5-24-5-10+0-2+0 +hash_sha512 1 1064 6223 +130+62+25-3-3+46+2-11+17+0-7-15-13+18-24 +hash_sha512 1 1597 8911 +161+23+20-25-1+13+2+1-25-52-21+0+12-12-26 +hash_sha512 1 2396 12945 +124+75+35+66-1-32+0+5-10-5+37-18-44+8-4 +hash_sha512 1 3595 19696 +115+23+69+14-86+0+21-22-28-12+6-13-38+131-25 +hash_sha512 1 5393 29118 +149+110+111+15+59+0+0-37+24-60-18-20-30-68+5 +hash_sha512 1 8090 43226 +147+14+69+3+0+80-53+16-64-84-42-25+32-120-21 +hash_sha512 1 12136 63976 +392+66+65-23+0+10+2-58-55-22-8-59+92-13+15 +hash_sha512 1 18205 96231 +370-68+144+133+32-10-23+25-18+113-86-28+75+0-38 +hash_sha512 1 27308 143948 +474+34-28+0-41-114+29-46-135-86+8+19+20-133+614 +hash_sha512 1 40963 216294 +210+6-15+0+23-103-54-62+17+95+0+34+48-130-75 +hash_sha512 1 61445 323911 +34-103-61-12+21+263+1-208+3-42-144+62+0-180+38 +hash_sha512 2 implementation blocksplusavx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 2 0 793 +668+86+48+1-3-1-7+2+22+0-3-7-2+3-2 +hash_sha512 2 1 795 +195+59+37+4+0+3-6-2-4+0-6-5-1+0-3 +hash_sha512 2 2 796 +103+76+52+2-1+43-6-3-3+0+0-3+1-3+31 +hash_sha512 2 4 797 +127+87+30-5-4-2-2-1-4+2-3+1+0+5+2 +hash_sha512 2 7 799 +103+49+6+2+0-3+8-4-6+57+4-1+0-3-1 +hash_sha512 2 11 805 +102+96+38-4-1-8+2-4-2-8+3+4-5+0+1 +hash_sha512 2 17 811 +105+99+9-4+2+4+1-2-1-6-2+0-8+0+3 +hash_sha512 2 26 821 +117+57+84+0-3+3-6+0-2-2+2+1+0-1-9 +hash_sha512 2 40 834 +125+35+12+1+29+1-6-12-2-6-3-6+0+1-8 +hash_sha512 2 61 857 +121+90+2-1+4+6-5-4+1+0+7-5+0-1-7 +hash_sha512 2 92 905 +84+43+21+0+1+2-2-4-1+4-5-5-6-3+2 +hash_sha512 2 139 1514 +126+35+2-2+0+2-9+5-3-6+10+16-10-3-13 +hash_sha512 2 209 1583 +126+34+0-6-4-10-10+2+6-6-15+4-2+32+2 +hash_sha512 2 314 2233 +199+70+6-8-6+9-5+1-12-2+9-7-10+0+4 +hash_sha512 2 472 2940 +206+46-14-19+2+2+46+2-2-6+0-1-12-16+2 +hash_sha512 2 709 4274 +161+30+3+2+14-4-21-3-12+0+28+29-23-6-23 +hash_sha512 2 1064 6252 +193+74+21+25+0-20-8+6+14-4-7-10-6+0+10 +hash_sha512 2 1597 8982 +159+124+24+13+29+0-18+6-50-8-25-19-18+21-13 +hash_sha512 2 2396 13033 +223+67+41+54+30+22-24-11-22+0-3+17-28-41-44 +hash_sha512 2 3595 19696 +133+93+71+50+36-53+9-17+0-33-17-22+1-52-26 +hash_sha512 2 5393 29113 +107+21+8+0+12-26+3-42-12-2+20-19+28-78-42 +hash_sha512 2 8090 43185 +241+66+33+43-21+21-29-4+40+28+0-18-51-17-36 +hash_sha512 2 12136 64088 +268+50-59+0+8+0+25+79-22-5-60-18-53+68+132 +hash_sha512 2 18205 96218 +399+849+48-80-100-4-55-64+0+32+31+42-31+69-23 +hash_sha512 2 27308 143962 +507-55+7-11+39+4+27-44+18-55-184+0-102-110+81 +hash_sha512 2 40963 215621 +648+631+555+455+627+954-48-121-100-91-59+0-58-179+15 +hash_sha512 2 61445 323817 +328+0-18+113+122-31+168+96+36+468-989-1127-1052-998-918 +hash_sha512 3 implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 3 0 794 +1202+100+55+0+3-7+0-4+25+1-6+0-6-9+45 +hash_sha512 3 1 803 +187+6+1+45+1-12-8+0-8+1+0-11-2-6+47 +hash_sha512 3 2 798 +103+68+7+1+5+0-5-2-1-5-7+0+0+5+5 +hash_sha512 3 4 810 +72+6+6+48-8+37+0-13+5-2-15+0-4-9-18 +hash_sha512 3 7 803 +52+23+21+4+3+12-3+5-8-7-9-6+0-7-3 +hash_sha512 3 11 800 +54+9+5+0-4+0+4-7-1+4-5-6+9+10+0 +hash_sha512 3 17 805 +49+7+13+3-7-3+3-8+5-6-6-3+0-2+1 +hash_sha512 3 26 805 +45+23+6+0+0-5+1-1-10-9-13-1+8-3+1 +hash_sha512 3 40 800 +75+35+11+0-3+0+0+4-3+0+48-7+9+5-1 +hash_sha512 3 61 799 +85+27+9+3+1+2-5-7-3-1-1-3-4+0+4 +hash_sha512 3 92 803 +69+46+3-4-3+0+5+3+2-3-4+0-2+14-1 +hash_sha512 3 139 1513 +95+21+46+0+37-15-20-15+5+9-3+0-7+6-2 +hash_sha512 3 209 1506 +76+37+26+35-6+49-2-3-5+1-5+0-8-4+9 +hash_sha512 3 314 2190 +135+48-4-8-13+0+6-8-14+78-10+2+14+5-16 +hash_sha512 3 472 2859 +141+30+28-9+56-4-11+10+0-9+2-9-8+4-7 +hash_sha512 3 709 4212 +76+20+20+5-12-8-13-22+39-10+15-4+17+0-13 +hash_sha512 3 1064 6228 +120+82+81-3+18-3-4-10+0-22-7-19+37+1+5 +hash_sha512 3 1597 8910 +145+75-18+14+3+10-10-11-1+16-19+13+0-17-16 +hash_sha512 3 2396 12935 +194+45-6-4+4-45-2+6+14+22-7+6-8+0-6 +hash_sha512 3 3595 19685 +130+0+79-4-7+39+3-86-18+18-8-17-13+20+20 +hash_sha512 3 5393 29114 +217+6+123+88+38-40-30+0-24-11-46+49-34+29-8 +hash_sha512 3 8090 43190 +233-37+4+78-47+35-19-101+4-66-83+13+16+0-24 +hash_sha512 3 12136 63993 +261+28-22-57-62-56+68+43-50-47+0-80+22+3+79 +hash_sha512 3 18205 96233 +419-69+7+168-15+65-142+36-41-54+78+0-3+85-94 +hash_sha512 3 27308 143948 +570+99-22-47+42-19-21-12+33+1007-23+63+32+0-62 +hash_sha512 3 40963 216276 +171+161-60-2-29-40-209+52+0-44+4+40+9-2+86 +hash_sha512 3 61445 323906 +180+54+138-203-196-129-105+42-39+27-35+0+148+30-59 +hash_sha512 4 implementation blocksplusavx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 4 0 791 +685+86+33-2+0-1+15-2+24-2+5-2-1-1+5 +hash_sha512 4 1 796 +127+31+25-5+1+0-2-7-6-8+1-1+0+46+3 +hash_sha512 4 2 794 +111+36+7-3+6-2-1+40-2+0-1-6+8+7-5 +hash_sha512 4 4 795 +98+35+67-2+0-5-4-3-1-2+2-3+9+1+8 +hash_sha512 4 7 802 +75+30-1+0+3-2+0-1-4-6-7-6+0+1+1 +hash_sha512 4 11 804 +77+62+1-5+0+0+0-1-5-6-7-4+1+6+3 +hash_sha512 4 17 809 +127+56+52-2+4+2-2-2-1-1-2+0-3+9+1 +hash_sha512 4 26 823 +78+84+30-1-4-5+4-1+2+3-1-4-5+0+5 +hash_sha512 4 40 833 +72+38+6-2-8+0+1-2+2-6-2-6-6+8+0 +hash_sha512 4 61 865 +96+55+34+3-16+0-5+1-7+3-17-2+2-4-5 +hash_sha512 4 92 886 +105+88+36-3-5+0+10+23+23-2-6-3-10-6+5 +hash_sha512 4 139 1518 +135+95+20+10-6-1-5-4+12+0+6-3+4-2-5 +hash_sha512 4 209 1578 +90+62+0-3-2-8+2-14+1+1-6-1+1-11+40 +hash_sha512 4 314 2230 +155+107+50-9+51-1+0+35-8-8-10-2+56+55+0 +hash_sha512 4 472 2935 +170+49-8+1-6+12-7-19+0+49-8+33+5-11-3 +hash_sha512 4 709 4263 +118+73+0+10-1-9-25+24-7-15+5-2-6+2+15 +hash_sha512 4 1064 6255 +119+118+10-15+8+27-18-11-10-10+25+0-20-15+4 +hash_sha512 4 1597 8961 +201+60-8-12+43-13-2+0+6-11-17+7+8-17+41 +hash_sha512 4 2396 13018 +231+78+43+62-23+18-31-8+0-33-32-24-24+2+3 +hash_sha512 4 3595 19682 +156+135-29+47+0-13-16+69-30+8-6+56+37-17-3 +hash_sha512 4 5393 29106 +124+38+71+0-10+3-15+74-7-34+21+59-24-28-36 +hash_sha512 4 8090 43204 +220+62+8+40+23-47-29-2+2-72-46+41-16-6+0 +hash_sha512 4 12136 64067 +288-62-1-2+85+10+0-7+17-60+39-35+66-53+64 +hash_sha512 4 18205 96266 +325+0+121-36+46-23-9-8+0+122+1+21-2+19-134 +hash_sha512 4 27308 143966 +512-120-79-33-26-20+25+36+53+23+0-51-20+0+91 +hash_sha512 4 40963 215557 +905+724-73+137+46-51-146+120-63+30-89-53+0+9-162 +hash_sha512 4 61445 323764 +378+63+173+122+141+149+0+188-784-734-692-933-958-871-627 +hash_sha512 5 implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 5 0 796 +498+61+8-2-14+1-1-4+19-8+0-7-11+0+2 +hash_sha512 5 1 813 +156+34+0-11+35+32+27-17+2-19-20+28-9-4-26 +hash_sha512 5 2 797 +126+14+10+5+12+0-3-1-6+0+0-3+12+0-6 +hash_sha512 5 4 797 +86+57+5+2-1+0+4+0-5-1+2-1+0+2-7 +hash_sha512 5 7 801 +65+22+11+28+1+6-5+12-4-2+0-6-3-3-3 +hash_sha512 5 11 800 +60+10+7+10+3+4-2-2-1-6-3-1+0-8+44 +hash_sha512 5 17 801 +86+8+7+7+7+8-7+3-3+0-12-6-6-6-9 +hash_sha512 5 26 802 +51+24+20+3+2+0+0-1+44-8-5-7-11-2+31 +hash_sha512 5 40 799 +131+73+1-1+0+2-6-1-6-10-1+5+7+0+6 +hash_sha512 5 61 803 +54+8+3-7+11+4-1-4-4-8+2+1-2+0-5 +hash_sha512 5 92 803 +65+37+8-2+4+1+5-4-1-2+0-1-7+0-7 +hash_sha512 5 139 1513 +86+22+25-11+37-10-19-1-14+0+1+1+47-2-7 +hash_sha512 5 209 1511 +96+2-4-12-9+0+9+10-14+4+3-7+0-4-8 +hash_sha512 5 314 2186 +171+39+2+5+0-8+11-5+26-16+0-18-8-19-14 +hash_sha512 5 472 2869 +134+29-8-7+4+4+0-12+1+3-8-1+4-14-7 +hash_sha512 5 709 4212 +125+13+54-3-2-21-21+0+3+3-3-10+25+10-6 +hash_sha512 5 1064 6219 +167+119+59-7+5-11-7-2+6-5+20+0+40-12-5 +hash_sha512 5 1597 8908 +156+53-11+11+85-4-49+21-25-14-13+38-27+4+0 +hash_sha512 5 2396 12937 +206+106+52-42+70-5-16-9-24+23-1+18+12+0-29 +hash_sha512 5 3595 19668 +837+26-24-45+39-4-47+27+0-8-39+74-10+22+5 +hash_sha512 5 5393 29126 +150+29+0+83+46-35-53+11+12-3-47+52-79-76-66 +hash_sha512 5 8090 43177 +255+36+8+58+12+0+42-45+25-5-35-8-21-37-14 +hash_sha512 5 12136 63972 +298-33+17-62+0+2-29+19-47+26-13-22-142+51+55 +hash_sha512 5 18205 96205 +390+92-22+11+104+71-6+0+49-70-18-22-50+34-4 +hash_sha512 5 27308 143945 +398+72+0+1082-17-60+48+11-20+50-120-30+63-85-63 +hash_sha512 5 40963 216297 +315-92-73+25+14+93-34-77-113+0+21-27+38+117-116 +hash_sha512 5 61445 323942 +270-77+203+82-126-25+177-155-265+60+32-157+10-227+0 +hash_sha512 6 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 6 0 1151 +862+184+112+59+45-23-32+17-29-17-31-35-29+0+21 +hash_sha512 6 1 1133 +290+39+79+25-2-10-6-10-11-5-5+0+28+26+16 +hash_sha512 6 2 1129 +200+71+36+29-1-5-1+0+0+1-7-1-1+11+7 +hash_sha512 6 4 1148 +122+35+0+14+7+5-1+6-2-5-6-5-8+26-4 +hash_sha512 6 7 1135 +159+101+59-1-3-11-1-3-13+0-11+3+23+9+26 +hash_sha512 6 11 1133 +122+41+104+3-4-1-14-8+0+3+40-11-11-8+12 +hash_sha512 6 17 1151 +106+23+12+2-6-7-5-14+29+16-25+5-17-28+0 +hash_sha512 6 26 1111 +131+76+14-2-1-3-2-2+4+1-4+0-3+15+16 +hash_sha512 6 40 1135 +121+14+8-5+4+6-5+9-9-15-10+0-11-3+0 +hash_sha512 6 61 1111 +124+36+9-11-9-19+2-23-17-9+0-7+0+40+3 +hash_sha512 6 92 1123 +133+41+48+3+0-20-34-41+2+1-21+4-7-22-27 +hash_sha512 6 139 1849 +136+51+33-15-25-36-12+23-19-23+2+0+6+19-11 +hash_sha512 6 209 1809 +150+62+0-9-21-10-16-9+0+12+10+1+19-4-8 +hash_sha512 6 314 2492 +222+40+78+13-14+2+6-12+0-9-26-13+4-17-13 +hash_sha512 6 472 3162 +193+33+46-27+11-22-8+4+2-4+0-7+40-3-23 +hash_sha512 6 709 4513 +202+11+3+6-4-12+8-11-3-12-9-21+0+19+42 +hash_sha512 6 1064 6537 +203+54+39+41-5-8-5-19-21+0+8-6+7+14-4 +hash_sha512 6 1597 9218 +240+97+78+59-17+59+59-7-15+7-1-9-22-30+0 +hash_sha512 6 2396 13258 +249+47+19+31+51-16+0-20-8+0+15-21-24-14-35 +hash_sha512 6 3595 20034 +184+92-55+12-4-2-10-5+0+8-17+26+1+15-21 +hash_sha512 6 5393 29437 +216+14-16+42-26+9-30+0-23+12+13-26-46+32-1 +hash_sha512 6 8090 43529 +360+25+105-46-24+0-18+0+2-6-13-52+11+48-26 +hash_sha512 6 12136 64340 +524+2-1-3-92+0+130+13+16-34-41+69-1+41-61 +hash_sha512 6 18205 96591 +614+104-78+24-119+14-19-47-34+27+0+0-20+20-16 +hash_sha512 6 27308 144330 +500-89-134-113+50+92+0-41+111+155-48-126+44+53-67 +hash_sha512 6 40963 216610 +331+66-32-42+3-38+8+33-13+0-59-160+103+6-15 +hash_sha512 6 61445 323350 +1147+742+887+810+950-142+0+23-58-273-73-108+144-226-25 +hash_sha512 7 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 7 0 811 +3396+131+0-2-5+5-2+4+4-1-6-7+7-3+5 +hash_sha512 7 1 814 +235+59+38+29+1-2-9+1-3-6-8+0-8+6-8 +hash_sha512 7 2 819 +83+47-4-1-6-4-7+1+0+0+0-3-3+0+0 +hash_sha512 7 4 819 +158+4+9-4-8-2-7+3-2+0-1+7+7+3-5 +hash_sha512 7 7 824 +81+68+59+0-3-2+4+8-4-1+2-4-4-7+7 +hash_sha512 7 11 829 +104+68+59+33+21+8-2+2-3-1-4-1-2+0-2 +hash_sha512 7 17 843 +65+62+57+5+1-1-4-1+2-3-5-9-10+0+8 +hash_sha512 7 26 867 +74+62+21+6-3-3+1-3-5-1-12+0+1-2+2 +hash_sha512 7 40 890 +127+58+2+1-1+41-6-7-5-6-6-6+0+3+0 +hash_sha512 7 61 977 +57+18+3+4+0-5+5+0-5+3-1+4-34-27-31 +hash_sha512 7 92 989 +130+74+10+0-1-6-1+1-1+4-2-7-4+3+9 +hash_sha512 7 139 1528 +179+169+80-4+42+0-17-4+4+8-7+1-4-12-5 +hash_sha512 7 209 1666 +162+89-3-4-15-3+0-14-9+36+59+1+1-3+5 +hash_sha512 7 314 2303 +216+108-11+37-16-15+11-19+1+1+0-6+44-14-3 +hash_sha512 7 472 3032 +229+102-2-7+9-2-8+46-15-12-1+8+5+0+0 +hash_sha512 7 709 4348 +154+121+0+16-16-28-24+1+0+45-16-5-16+3-11 +hash_sha512 7 1064 6303 +230+175+41+2-31+0+0+5+10-11+2-2-3-10-7 +hash_sha512 7 1597 9028 +209+71+0+749+17+11-28+0-1+0-34-8-21-8-7 +hash_sha512 7 2396 13115 +207+135+64+47+29+13-15+19-42-24-11-36-15-4+0 +hash_sha512 7 3595 19712 +159+52-46+17-17-10+41+0-36-23+1+26-58-19+147 +hash_sha512 7 5393 29138 +210+14-17-45+84+40+6+9+0-20-5-47-8-30+20 +hash_sha512 7 8090 43224 +175+0+66-14+57+74-6+41-15-16-31+42-30-2+28 +hash_sha512 7 12136 64160 +430+120-19-60-108-38+60+0+26-3+12-37-79+104+71 +hash_sha512 7 18205 96320 +237+33-40+27+58-8-131+17-149-81+59+14-66-101+0 +hash_sha512 7 27308 144051 +598+50+56-183-23-78+80-9-57+64+28-117-79+0+106 +hash_sha512 7 40963 216212 +264+6+125+0-50-6+62-27-52+57+5+21-1-98-39 +hash_sha512 7 61445 323956 +92-17+0-107-90+35-253+100-156+23-98+26+15-204+16 +hash_sha512 8 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 8 0 1097 +1161+69+80+45-2-18-11+9+0+52-28-17+3-19-3 +hash_sha512 8 1 1087 +207+49+1-1-11-12-2+3+8-1-1+5-1+16+0 +hash_sha512 8 2 1078 +170+30+16+8-1-7-2+1-3-1+0-5-4+11+5 +hash_sha512 8 4 1081 +152+48+45-3-5+0-1+8-5+1+2+2-2-5+0 +hash_sha512 8 7 1077 +131+27+13+5-1+0+3+2-2-1-3-4-4-4+8 +hash_sha512 8 11 1106 +117+36+35+45-8-8-4-15+0-7+3+18+9-22-15 +hash_sha512 8 17 1078 +122+116+43+9+4+0+6+2-9-2-3-7-6-4-1 +hash_sha512 8 26 1084 +168+34+0-7+41-7+40-9+37-5+1-10-19-14+23 +hash_sha512 8 40 1070 +182+72+83+10+3-4-2-7+15+3+0-9-10-18-13 +hash_sha512 8 61 1057 +155+59+4-1+0+1+17+4-3+21-19-7-6-6-10 +hash_sha512 8 92 1066 +159+80+19+18+0-17+4+14-19-17-16+13-3-19-3 +hash_sha512 8 139 1793 +147+40+13+6-11-4-28-16+4-12+6+0-6+5-11 +hash_sha512 8 209 1765 +181+20+14+6-2+46-10-7-6-3+1+0-11+9-11 +hash_sha512 8 314 2435 +255+83+30+12-21+15-9+20+0+1-12-2-9-1-13 +hash_sha512 8 472 3117 +239+65+42+9+42-17-9-13-9-20+0+7+14-16-4 +hash_sha512 8 709 4458 +257+30+29+55-2+0+14-16+43+6-9-11-12-3-2 +hash_sha512 8 1064 6507 +253+45+35+7-42-32-27-2+4-13+0+11-2+54-21 +hash_sha512 8 1597 9187 +259+3+62+37-37-37+5-2-15+9-34+0-10+9-21 +hash_sha512 8 2396 13204 +335+72+74+54-12-45-20-27+0-36+5-6+8+9-42 +hash_sha512 8 3595 19995 +210+40+14-46+45-18-24+130+0+28+45-15-5-44-11 +hash_sha512 8 5393 29399 +195-2+0+15-16-7+5+9-24+67+86+50-60-5-5 +hash_sha512 8 8090 43481 +340+17-25-18+37-29+23-26+62-16-80+6-32+0+26 +hash_sha512 8 12136 64283 +451+4-41-11+858+45-18-35-22+67+14-9-41+0+20 +hash_sha512 8 18205 96553 +474+61+59-121-18-34+21-60+60+46-102-19-10+0+2 +hash_sha512 8 27308 144249 +547+70+116+0-4+48+11-123-62+34+9-77-4-37-61 +hash_sha512 8 40963 215977 +907+108+162-36+85-31-60-3+0+91+60+52-28-8-224 +hash_sha512 8 61445 323195 +1354+1070+36+30+0-112+263-196+70+0-49-2-80-6+101 +hash_sha512 9 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 9 0 804 +279+107+8-4-2-1-4-5+14+6-4+44+0+2-1 +hash_sha512 9 1 815 +134+50+1-3+45-4+0-2-3+2-3-6-10+1+7 +hash_sha512 9 2 815 +79+57-2-3+0+1+0+0-2+3-6+12+8-6-1 +hash_sha512 9 4 818 +123+39+1-4-6-1-2+0-1+1-1+0+11+8-3 +hash_sha512 9 7 823 +119+4+6-1-2-3+0+4-2+0-1-4+6+5+4 +hash_sha512 9 11 832 +83+35+56+3-1-4-1+2-7-4-8+5-2+0+9 +hash_sha512 9 17 842 +78+102+81+1+3-4+7-1-5-1+0-1+0+1-9 +hash_sha512 9 26 863 +81+38+31+2-3+0-7+0-3-2-3-3+5+3-2 +hash_sha512 9 40 886 +83+105+6+11-3-5+0+0-1-4+6-4+2-2-6 +hash_sha512 9 61 937 +79+45+1+1+0-9-9-1-16-17-2-11+4+661+87 +hash_sha512 9 92 993 +169+14+4-2-3-2+0+3+7+6+7-1-3-5-4 +hash_sha512 9 139 1528 +186+60+70+66-3-11-11+51-9+15+0-13-2-1+2 +hash_sha512 9 209 1667 +90+38+0+1-9-13-17+0-4+14+12+4-2+49-4 +hash_sha512 9 314 2295 +207+149+19-6-5-2+0+15-5+3+64-5+0-8-3 +hash_sha512 9 472 3030 +206+84-3+0+12+4+53-14-8-5+46+48-8-13-15 +hash_sha512 9 709 4340 +177+73-8+55+63-16+56-15+11+0+0-1+5-8-15 +hash_sha512 9 1064 6308 +194+90+3+52+11-28+12+17-12-10-10-7-20-35+0 +hash_sha512 9 1597 9031 +156+44+7+22+6-7-5-3+14+0-25-6+7-17-26 +hash_sha512 9 2396 13163 +208+80+99+71+0+38-13-13+53+29-6-11-50-24-36 +hash_sha512 9 3595 19724 +175+73+47+8-70+3+26+0-43+2-17-67-39-33-40 +hash_sha512 9 5393 29149 +238+78+46+23+1-11+0-14-42+4-19-63-12-18+30 +hash_sha512 9 8090 43222 +373+86+62+79-3-19+0+71+19-45-26-11-28+25-39 +hash_sha512 9 12136 64221 +428+18+16-26-17+3-47-70+0-14+26-1+35-61+5 +hash_sha512 9 18205 96242 +482-61+108-49-30+33+195-55+0-6+65+106+7-8-30 +hash_sha512 9 27308 144073 +540+90+12+158-98+9-37+122-27-77-39+0+12-8-68 +hash_sha512 9 40963 216232 +288+49+75+20-63+50+0+9-79-68-49-61-80-110+82 +hash_sha512 9 61445 323916 +181+58-122+90-74-129-220-110+0+4+19-25-57+48+175 +hash_sha512 10 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 10 0 1113 +1082+83+0+0-23+6+6-9+4+36-38-41-41-27-29 +hash_sha512 10 1 1098 +147+35-4+10+1-4-5+0+8-3-15-16+4+28-15 +hash_sha512 10 2 1100 +161+12+15+13-4-4-4+41+34+0+24-4-21-21-2 +hash_sha512 10 4 1082 +163+43+71+8-4-2-14-3+0+0+21-5-9+18+22 +hash_sha512 10 7 1083 +127+82+29+45-3-5-9-2-8+0-17-9+13+23+22 +hash_sha512 10 11 1098 +111+46+16+11-3+0+17-23-24-22-26-16-21+9+13 +hash_sha512 10 17 1101 +101+32+50+7+32+16-29-22-20-17-20-23+0-3+12 +hash_sha512 10 26 1088 +104+62+28+4+13-29-26-20-24-15-39+26-25+0+0 +hash_sha512 10 40 1066 +147+63+23+39-3-8+1-1-10+0-8-7-6+26+19 +hash_sha512 10 61 1061 +126+109+41-14+2-11+0-14-4-12+3+16-8+6+0 +hash_sha512 10 92 1076 +134+44+11+11-28-28-25-12-20-20+0+2+24-36+5 +hash_sha512 10 139 1802 +141+74+11+29-33-32-1+21+0-16-24+1-4+5-7 +hash_sha512 10 209 1766 +174+14-11-15-15-18-22+7+7+0+7-15+1+4-5 +hash_sha512 10 314 2447 +255+62+7+9-23-14+2-21+0-8+27-18-15-1+1 +hash_sha512 10 472 3118 +226+43-22+0-3-32+1-16+27-15+0-17+6-9+14 +hash_sha512 10 709 4459 +221+57+46+28+23+0-10-15-10-19+17-22-14-1+2 +hash_sha512 10 1064 6511 +255+56+5+11-20+3+0+21+23-5-6-10-4-15-30 +hash_sha512 10 1597 9189 +232+89+57+85+31+1+17-4-16-17+0-17-1-24-37 +hash_sha512 10 2396 13211 +270+142+183+20+14+0+0-31+27-19+13-50-11-40-17 +hash_sha512 10 3595 19990 +252+66+14-17+5-35-23-20-40+15+0+68-42+1-35 +hash_sha512 10 5393 29394 +322+101-11+18-63-14+11-57-1-48+118+63-18+0+34 +hash_sha512 10 8090 43496 +290+61-46+10-35-34+0-32+66+22-51+60-44+97-18 +hash_sha512 10 12136 64316 +341+13+45-54+27-14+0-69+2-31-67-34-55+6+3 +hash_sha512 10 18205 96555 +454+8+62-85+46-130-40-60+12-10+0+71-18+11-62 +hash_sha512 10 27308 144282 +612-80+1-40+42-79-23+16+0+35-17-52-11+144+61 +hash_sha512 10 40963 216620 +321+19-192+23+0-524-94-483+15+9-5-89-21+24+11 +hash_sha512 10 61445 324188 +554-120+116-970+0+39+31+0-36+38+127+91-27-179-42 +hash_sha512 11 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 11 0 809 +677+133+28+0-2-7+8+4+3-1-4-10+0-7+1 +hash_sha512 11 1 815 +140+8+0-5-2+6-2+12+0+8+1-3-3+10-5 +hash_sha512 11 2 811 +80+15+1+51+1+5-2+0-3-2-3-4+6-5-9 +hash_sha512 11 4 816 +129+39+59-3-12-9+1+0-6-11+0-11-4+3+1 +hash_sha512 11 7 820 +69+108+43+33-4-6-3+5-2+3-6-12-9+0+7 +hash_sha512 11 11 819 +89+91+42+33-2-6+2-4-1-1-4-1+1+0+4 +hash_sha512 11 17 827 +175+38+38+0-2-5-5-3+0-3-6+22+2+0+11 +hash_sha512 11 26 839 +106+49+7+0-1-2+4+5-6+4+6-5-3-2-6 +hash_sha512 11 40 860 +106+52+7+1-6-6-2+39-1-5-7-8+0+3+3 +hash_sha512 11 61 887 +132+55+5-3+7-10-4+5+0-2+2+5-3-1-3 +hash_sha512 11 92 935 +241+15+3-3-17+1-1+0+4-5-4+0-13-2+5 +hash_sha512 11 139 1526 +155+79+75+42+42-5-12+1+5-4-9-6+0-4-10 +hash_sha512 11 209 1608 +144+36+2+52+2-4+0-8-2-3-3+7+5-4-2 +hash_sha512 11 314 2255 +207+96-5+12-15+37+8-4-11-3-7-2+0+59+7 +hash_sha512 11 472 2964 +254+157+6+0-2+4+0-4+30-6-6+3+7-7-11 +hash_sha512 11 709 4326 +173+29+18-20+5-23+0-35+5-38-26-31-22+15+31 +hash_sha512 11 1064 6291 +249+158-27-5+17-17-3+13+9-3+28-1+6+0-19 +hash_sha512 11 1597 9021 +184+33+15+7-6-6+0+37+12-13+21-23-34-22-18 +hash_sha512 11 2396 13085 +290+161+64+77-4-20+0+22-1-10-9+2-11+33-29 +hash_sha512 11 3595 19707 +179+73-17-15+40-9+0+61+18-10-24+26+67-27-6 +hash_sha512 11 5393 29131 +171-27-4+40+20-85-20-25+43+25+27+7-28+0-33 +hash_sha512 11 8090 43245 +238+85+11+15+61-6+10-28+13+0-76-21-66-58-48 +hash_sha512 11 12136 64144 +291-21+36+73+0+7-5+2-18+4-52-11-20+27-3 +hash_sha512 11 18205 96256 +404-6+29-18+62-5-44-27+126-15+21+0-74+86+31 +hash_sha512 11 27308 144020 +523+63+0+83-76-179+4-12-24-118+19-56+21-16+28 +hash_sha512 11 40963 216255 +122+2-5-74+64-55-91-121+171-34+17+29-150+361+0 +hash_sha512 11 61445 323926 +205+0+141+39-110+75-8+30+19-34-140+212-18-42-66 +hash_sha512 12 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 12 0 1158 +1176+163+97+58+38-7-2-8-10-3-12+0+19+2-4 +hash_sha512 12 1 1159 +182+48+89+4+0+0+7-6-4-6+41-11-3+12-5 +hash_sha512 12 2 1159 +185+62+40+26-5-7-9-2-7-8-9+7+0+17+19 +hash_sha512 12 4 1171 +149+27+6-4-10-19-23-18+0-29+36-14+7+4+2 +hash_sha512 12 7 1156 +185+80+22+5+7-1-7-4-7+0+0-6+0-11+75 +hash_sha512 12 11 1164 +115+46+74+2+0-5-11-11-14-14-17-14+0+8+2 +hash_sha512 12 17 1157 +101+79+47+8+1+4+0-2+1-2-5-4-6-2-9 +hash_sha512 12 26 1143 +112+84+10+2-5-1-9+0-7-8+5-5-9+10+11 +hash_sha512 12 40 1138 +134+61+18+4-1-2+0-3-3-2+11-2+13-5+35 +hash_sha512 12 61 1147 +125+52+111+22+28-9-4+3-1-16-15+0-6+3-7 +hash_sha512 12 92 1146 +128+67+26-4-9-7-19-16-11+26+67+39-10+0+22 +hash_sha512 12 139 1864 +171+102+11+6-19-15-8+15+12-6+0+74-2-11-10 +hash_sha512 12 209 1856 +175+39-22-9-12-8-3+2+53-8+41+0+3+6-4 +hash_sha512 12 314 2526 +236+95+14+3-9-7-12+0-20+36+3-12-17-7+4 +hash_sha512 12 472 3212 +201+36+0+16+5+21-13-4+1-1-30+1-26-7-20 +hash_sha512 12 709 4548 +192+96+47+49-8+50+7-14-20-14+15-13-3+0-19 +hash_sha512 12 1064 6566 +217+117+37-6-17-9-3+0+0+24-8+8-3-10+1 +hash_sha512 12 1597 9288 +240+107+31+20-1+0-44-29+32-24+49-60-48+32-35 +hash_sha512 12 2396 13302 +223+75+60-4+2-28+0-27-8+4+5-34-14-26+12 +hash_sha512 12 3595 20063 +243+72+3-6+0-28-12+16+25-7-46-26+38-6+16 +hash_sha512 12 5393 29488 +271+9+46+57-8-3+48+33-30+0-44+62-16-29-71 +hash_sha512 12 8090 43559 +295-18+23-6-58+56+726+28-4+0-11+4-43+28-9 +hash_sha512 12 12136 64356 +391+49+41-89+33-72-60-28+66+0-18-21+77+37-44 +hash_sha512 12 18205 96607 +476+138-76-2-70+95-71-27+70+62-85+0-30+176+48 +hash_sha512 12 27308 144313 +688+109+11+0-47-6+7-45-101+65-40-29+214+104-31 +hash_sha512 12 40963 216664 +99+172+111+20+0-158+41-29-58+180+15-18-142-84-98 +hash_sha512 12 61445 324310 +173-106-119-118+0+52-79+114+130+41-1+96-64+0-121 +hash_sha512 13 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 13 0 807 +711+123+78+3+7-3+0-1+1-10+0-5-7-6+4 +hash_sha512 13 1 808 +141+33+61-1-11-10+1-2-1+2-2+3+0+0+1 +hash_sha512 13 2 810 +124+43+10+3-2+0+12+0-5+2-3-5-4+5-8 +hash_sha512 13 4 816 +140+48+5+2+49-1-2-3-2-4+2-3-3+0+2 +hash_sha512 13 7 822 +164+44+37+2+0-3+0-1+4+14-4-4-3-3+4 +hash_sha512 13 11 829 +148+81+28+24+4+3-1-4+0+0+0+0-1+0+9 +hash_sha512 13 17 848 +70+50+43+37+0-3+0-3-7-3-4+3+3-5+6 +hash_sha512 13 26 862 +70+60+24+24+0-1+8+2-5-4-3-3-7-4+9 +hash_sha512 13 40 829 +163+88+11+0+45+3+5-1-7-1+2-1-5-3-9 +hash_sha512 13 61 872 +102+71+53+0+45-5+3-1-11-9-4-6-2+10+4 +hash_sha512 13 92 876 +171+47+9+5+0-3-12-13-7-6+6+3-14-11+8 +hash_sha512 13 139 1544 +169+84-5-9-19+0+46+11-3-1-10+6+2+34-10 +hash_sha512 13 209 1556 +184+116+32+0-3-9-7-6-1+2-4+8+1-10+10 +hash_sha512 13 314 2252 +165+34+1+55-1+9+0+61-9+0-2+4-3-2-12 +hash_sha512 13 472 2930 +221+65+95-17+31-18+7-10-14-11-5+10+46+0-15 +hash_sha512 13 709 4235 +192+85+15+4-9-4-18+0-7+4+12-7+2-11-8 +hash_sha512 13 1064 6270 +249+149+11+7-9+0-11+12+55-11-5-23+19-7-13 +hash_sha512 13 1597 8989 +215+159+0-20-2-12+29+17+15-3-22-12+41+0-1 +hash_sha512 13 2396 13011 +267+75+27-16+16+0+2+13-28-4-26-15+74-11-14 +hash_sha512 13 3595 19715 +255+8-3+17+17-10-33+3+62-38-21+0+9-25-41 +hash_sha512 13 5393 29176 +200+38+60-41-58+10+30-5+2-78-27+0-38+17-37 +hash_sha512 13 8090 43281 +295+18-22-26+6+43+0-12-9-6-39-50+5+11+9 +hash_sha512 13 12136 63994 +400+26-51+18-26-11+17-83+56+57+14-27+0-7-45 +hash_sha512 13 18205 96300 +333-56-60-64+84+0+21-61+108+1032+16-9-27+18-68 +hash_sha512 13 27308 144022 +495-20-3+18+0+66-65-46+51+35+22-23-62-4+10 +hash_sha512 13 40963 216235 +222+77-27+0+67+81+24+37+673-695-594-646-495-692-660 +hash_sha512 13 61445 323839 +289+281+204+6-115-20+87-57+11-61+0-49+155-942-949 +pow_inv25519 selected implementation amd64-safegcd compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 selected 32 4114 +4505+390+276+91-27+139+31-58-78-75-79-100-32+17+0 +pow_inv25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 0 32 12858 +10497+306+95+26-78-64-9-24+0+66+72-1-27-39+118 +pow_inv25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 1 32 13035 +1932+87+32-39+87-2-84+12-19-36-6+0+101+12-38 +pow_inv25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 2 32 12916 +1435+315+134-21-34-41+13-26+7-78+19+19-68+0-48 +pow_inv25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 3 32 13029 +1995+133-59-7+93+16-63+0-48+20+122-73+54-61-6 +pow_inv25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 4 32 12939 +1320+89+80+122-43+0-26-50-44+55-46+97+89-34-78 +pow_inv25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 5 32 12994 +1759+130-42+14+0-1+80+9-38+14-25+112-4-18-2 +pow_inv25519 6 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 6 32 12893 +1854+98+42+0+20+60-73-16-46-57+99-22-44-56+5 +pow_inv25519 7 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 7 32 12884 +1385+97-4+127+0+56-17-25-45-27+13-69+39+6-50 +pow_inv25519 8 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 8 32 13500 +7999+81+37-40+0-55-104+32+3-100+19+35-33-30+0 +pow_inv25519 9 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 9 32 13480 +1273+60+7+29-28-10+43-20+3-11-27+0-6+1-15 +pow_inv25519 10 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 10 32 13522 +1473+108-59-18-19-68+38+16+0-7+20+31-41-9+7 +pow_inv25519 11 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 11 32 13610 +3237+58-38-24-16+35-72+34-3+40-70+55+28+0-35 +pow_inv25519 12 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 12 32 13509 +2260+58+25+0-5+17+11-56+34-10-19-59-6-35+20 +pow_inv25519 13 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 13 32 13606 +1264+67+6-22+42+0+36-17-2+7-16-28-33+17-35 +pow_inv25519 14 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 14 32 13381 +3343+32+0+49+51+45+80-20-55-5-26-67-2-78+23 +pow_inv25519 15 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 15 32 13444 +2248-4+0+57+30-6-9+38+8-23-40-18+133+13-2 +pow_inv25519 16 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 16 32 12830 +7064+205+69+33-37-39-5-4-21-13+27+35-34+0+29 +pow_inv25519 17 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 17 32 12918 +1534+141+1+47-57+25-10-34-19-4+0+4-36+6+0 +pow_inv25519 18 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 18 32 12821 +1499+127+73+55+9-3-34-16-10+38-21-3+42-72+0 +pow_inv25519 19 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 19 32 12905 +1504+261-46-45-2+0-62+11+63-33+21+13+34-21-7 +pow_inv25519 20 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 20 32 12807 +1647+160-24+8+44-31-15+49+5+0-20+0+25-10-31 +pow_inv25519 21 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 21 32 12940 +862+29-5+18-31-66-69-23+0-84+4+6+6-10+9 +pow_inv25519 22 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 22 32 12802 +663+99+39+30+29-16-41-9+0+28-46-17-12-25+45 +pow_inv25519 23 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 23 32 12803 +418+68-12-30-57-1-41+4-58-33+2+1+0+1+5 +pow_inv25519 24 implementation amd64-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 24 32 12677 +3637+114+65+218+35-34-52-110-60+0-55-86-83+101+14 +pow_inv25519 25 implementation amd64-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 25 32 12764 +831+126-88+62+36-1-51+104+90-14+177-30+0-43-39 +pow_inv25519 26 implementation amd64-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 26 32 12703 +752-1-225+102-29+14-20+11+1+0+29-141-88+27-67 +pow_inv25519 27 implementation amd64-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 27 32 12814 +741+44+0+65-81-56-54-54-52+26+32-158+13-84+16 +pow_inv25519 28 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 28 32 9059 +5706+173+26+3-8+1-4-4-10-1-3+1+0+82-9 +pow_inv25519 29 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 29 32 9152 +554+58-1+0+26+6-9-2-1+12-6-16+14+22+0 +pow_inv25519 30 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 30 32 11118 +3980+123+53+0+82+42-29+122-64-68-47-88-105-39+0 +pow_inv25519 31 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 31 32 11202 +254+26+0+7+40-96-10-33-76+39+91-29+4+0-31 +pow_inv25519 32 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 32 32 11083 +502+48-59-58-30-25+13+30+80+71+0-44+11-38-85 +pow_inv25519 33 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 33 32 11194 +475+126+0+13-40-22+28-9-9-63+17+9-13-31+13 +pow_inv25519 34 implementation amd64-safegcd compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 34 32 4054 +931+339+337+76+54-29+93-20-37-71+0-70-73-113+53 +pow_inv25519 35 implementation amd64-safegcd compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 35 32 4090 +608+307+269+195+87+36+28-286-45-37-18-29+0-95-91 +pow_inv25519 36 implementation amd64-safegcd compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 36 32 4103 +509+175+70+108+42+0+112+32-70-81-108-93-200-57-144 +pow_inv25519 37 implementation amd64-safegcd compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 37 32 4109 +602+379+150+132+0-125-202+136-86+10-36-12-2-89+11 +pow_inv25519 38 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 38 32 13855 +3009+114-10-102-31+140+48+0-52+32+6-14-23-41+6 +pow_inv25519 39 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 39 32 14252 +2835-65+13+0+26+37-3-1-27-43-7-26+12+13+77 +pow_inv25519 40 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 40 32 14681 +1883+69-211-249-17-263+90+77-249+13-155+149+86-286+0 +pow_inv25519 41 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 41 32 14232 +4571+130+9-21+41+17-39-1-74-18+35-16+0-11+79 +pow_inv25519 42 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 42 32 14377 +1789+194+142+27+0-123-132+30-197+60+34-131-42-11-103 +pow_inv25519 43 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 43 32 14242 +4712-43+0+33-19+6+26-18+26+18-85-2-51+13-24 +pow_inv25519 44 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 44 32 13066 +3443+144+127+57-55+14-11-28-77-138-156+0+20-7+32 +pow_inv25519 45 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 45 32 14264 +2327-67-15-70+0-82+663-107+134-127+80+30-31+48+4 +pow_inv25519 46 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 46 32 25211 +1803+439-159-240+0+29+260+94-74+104-302-16-55+133-106 +pow_inv25519 47 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 47 32 29326 +1636+114+49+16-87-9-66+0+41-90-13-78+41-29+78 +pow_inv25519 48 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 48 32 25286 +1709-83+436-63-82+4+466+646+0-438-28+616-241+299-542 +pow_inv25519 49 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 49 32 29311 +2242+106-29-152+0-40+29-89+108+33+52+35-11-137-146 +pow_inv25519 50 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 50 32 26626 +1433+0+57+360+23+258-149-3+208-62-318-84-99+9-269 +pow_inv25519 51 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 51 32 29350 +1251+7-38+0-71+38+22-51+34+29-19+88-58-39-2 +pow_inv25519 52 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 52 32 26467 +1576+130+201-70-111-327+78-249-340-256-120+96+0+37+12 +pow_inv25519 53 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 53 32 29294 +1221+0-13+81-76-84-3+35+37-33+73-46+130+72+0 +pow_inv25519 54 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 54 32 12925 +4277+191+118-15-152+5+0+71+124+53-96-22-37-96-1 +pow_inv25519 55 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 55 32 12881 +733+224-59+0+172-80+13-71-97-15+186-53+41+42-78 +pow_inv25519 56 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 56 32 12878 +406+201-23-74-72+159-66-50+0+72-157+20+172+127-65 +pow_inv25519 57 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 57 32 13124 +438+80+53+103-111+0-55+32-100-33-267+82-125-127+104 +pow_inv25519 58 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 58 32 12833 +912+180-66+70+113-58-29-48-53+132+20-100+146-33+0 +pow_inv25519 59 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 59 32 13075 +394+56+13+12-86-1-323-52+0+178-123-111+109+23-35 +nP_montgomery25519 selected implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 selected 32 90826 +7697+165+374-28+25+421+16+137-50+0-186-320-195-67-131 +nP_montgomery25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 0 32 135712 +7235+8-3-142+195-444-279+0-15+211-671+227-213+9+477 +nP_montgomery25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 1 32 135484 +0-928+1042+493-951-188-322+844+694+1205+128+641-652-931-944 +nP_montgomery25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 2 32 134648 +424-456-336-945+459+863+696+758-220-212-226+626-494+870+0 +nP_montgomery25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 3 32 136171 +393-38+29+144-572+0+534+242-1340-183-1031+314+367-598-74 +nP_montgomery25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 4 32 137588 +584+126+318-985-502-74-75+121+358-51-285-401+100+194+0 +nP_montgomery25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 5 32 135203 +2024+742-83-1421-1175-1509-1786-510+433+176+984+1623+0-505+361 +nP_montgomery25519 6 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 6 32 136144 +450-268+218-671+545-1199+387+106-1189-137-313+0+749+33-758 +nP_montgomery25519 7 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 7 32 135099 +851-385-735-812-906-621+565+369+217-285+1128+475+0+666-378 +nP_montgomery25519 8 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 8 32 135638 +4930+10+162-403-505+25-139+0+152-70+250+15-370-636-388 +nP_montgomery25519 9 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 9 32 134400 +474+233+63+8-91-128-15-6-145-7+102+0+141+58-31 +nP_montgomery25519 10 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 10 32 134689 +762+441+29-165+15+160-370-263-378-484-30+161+0+213-174 +nP_montgomery25519 11 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 11 32 134205 +397+30+230-57-125+133-51+252-123-90+0+318-44+225-102 +nP_montgomery25519 12 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 12 32 134882 +1095+256+272-290-32-51+17-246+76-279+241+877+0-166-30 +nP_montgomery25519 13 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 13 32 134467 +826+602+400-4-127-101+122+41-280+72+118-241+0-39-221 +nP_montgomery25519 14 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 14 32 134486 +667+342+219-1-122+437-93+162-28+129-319-318+15+0-321 +nP_montgomery25519 15 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 15 32 134618 +1038-224-313+65+154+80-458+490+55-35-162+0-141+38-80 +nP_montgomery25519 16 implementation amd64-avx2-hey10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 16 32 91140 +9565+790+254+36-208-256+139-303+0-196+71+95-264-205-286 +nP_montgomery25519 17 implementation amd64-avx2-hey10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 17 32 90451 +1249+1081+299+801+176-216+411-170+0-28-230-251-329+15-144 +nP_montgomery25519 18 implementation amd64-avx2-hey10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 18 32 91175 +1368+701+208+523-192+253-161-390+71-175+52-100-622+0-313 +nP_montgomery25519 19 implementation amd64-avx2-hey10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 19 32 90846 +1066+618-314+364-181-37-24-576+0-82-61+2210+340+576+44 +nP_montgomery25519 20 implementation amd64-avx2-hey10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 20 32 90213 +5871+480+470+0+250-6-455+166-65+262-62-455+208-127-322 +nP_montgomery25519 21 implementation amd64-avx2-hey10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 21 32 89794 +1572+481+303+46+92-186-229+82-578-54-53+7+0-207-153 +nP_montgomery25519 22 implementation amd64-avx2-hey10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 22 32 90108 +1386+248+553+111+130+15-216+321-91-263-46-156+0-164-50 +nP_montgomery25519 23 implementation amd64-avx2-hey10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 23 32 89795 +1506+534+40-377-4+0-280-26-294+47+78-246+228-241+248 +nP_montgomery25519 24 implementation amd64-avx2-hey10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 24 32 91264 +2514+374+365-526+360-68-263+0-346+65-270-260+229-173+246 +nP_montgomery25519 25 implementation amd64-avx2-hey10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 25 32 90738 +1210+459+409-266+123-27-273+173-96+263-149+182-331-347+0 +nP_montgomery25519 26 implementation amd64-avx2-hey10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 26 32 91122 +3919+887+466-13+253-121+0+195-198+372-298-359+1-597-71 +nP_montgomery25519 27 implementation amd64-avx2-hey10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 27 32 90852 +1110+127+175-137+56-347-73-342-540+0-501+1079+406-43+309 +nP_montgomery25519 28 implementation amd64-avx2-hey10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 28 32 90994 +1385+916+400-101+391-179-143-173-316+274-124-259+259+0+8 +nP_montgomery25519 29 implementation amd64-avx2-hey10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 29 32 90742 +1432+586+0+386+73+113-238-243-246-345-265+48-7-56+24 +nP_montgomery25519 30 implementation amd64-avx2-hey9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 30 32 91444 +5431+161+164+233+952-28-117-3+817+853-206+0-44-116-110 +nP_montgomery25519 31 implementation amd64-avx2-hey9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 31 32 91162 +503-4+236+142+64-117-166+0-170+71-188-164+31-171+237 +nP_montgomery25519 32 implementation amd64-avx2-hey9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 32 32 91485 +1224+341-289+136+107-205-354-223-137-111+0-118+638+668+631 +nP_montgomery25519 33 implementation amd64-avx2-hey9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 33 32 90994 +922+0-144+9-192+79+894-167+72-125-15-163-56+151+265 +nP_montgomery25519 34 implementation amd64-avx2-hey9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 34 32 91709 +4716+416-153-94-107+34-132-13-241+38-81+0+3+173+96 +nP_montgomery25519 35 implementation amd64-avx2-hey9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 35 32 91390 +1131+58-104+0+60-29-34+1007-281+753-1+711-108-301+204 +nP_montgomery25519 36 implementation amd64-avx2-hey9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 36 32 91578 +2591+1091+0+89+69-102-139-43-107+22-175-66-245+202+241 +nP_montgomery25519 37 implementation amd64-avx2-hey9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 37 32 91559 +812+24-148-140+94+164-216+9-30+197-101-207+0-531+38 +nP_montgomery25519 38 implementation amd64-avx2-hey9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 38 32 91285 +2945+371+165+37+26-168-209+89-10-43+90-212-120-52+0 +nP_montgomery25519 39 implementation amd64-avx2-hey9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 39 32 91020 +805+0-94-88+69-141+29-6+170-103+123+72-221-36+311 +nP_montgomery25519 40 implementation amd64-avx2-hey9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 40 32 91368 +2501+285-102+60+0-212-189+180+122+192-123+29-180-188-56 +nP_montgomery25519 41 implementation amd64-avx2-hey9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 41 32 91094 +1593-67-64-49+18+182+62-21+0+342+959-63-158+143-1 +nP_montgomery25519 42 implementation amd64-avx2-hey9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 42 32 91541 +1316+4-196+210-36-98-367+152-19+186-171+188+572+0-147 +nP_montgomery25519 43 implementation amd64-avx2-hey9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 43 32 90999 +822-9-85+37+27-1-241-67-2+1145+960+0-59+180+126 +nP_montgomery25519 44 implementation amd64-avx2-ns10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 44 32 88648 +4582+616+387-225+22+210-258-845+281-242-235+0-362+164-572 +nP_montgomery25519 45 implementation amd64-avx2-ns10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 45 32 88190 +1038+766+312+129+539-283+0-33-491+284-351-23-365-700+130 +nP_montgomery25519 46 implementation amd64-avx2-ns10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 46 32 88526 +1211+305+703-134+4+422-365-19-91-143+175-59+0+243-245 +nP_montgomery25519 47 implementation amd64-avx2-ns10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 47 32 88021 +989+932+908+0+397-160+263+238-222-22-170-330+211-265-55 +nP_montgomery25519 48 implementation amd64-avx2-ns10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 48 32 88728 +6862+336+181+89+114+186+58-92-71-266+0-85-386-48-378 +nP_montgomery25519 49 implementation amd64-avx2-ns10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 49 32 88176 +1017+616+115+0+439+20+315-276-691-79-219-81-174-540+261 +nP_montgomery25519 50 implementation amd64-avx2-ns10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 50 32 88574 +1258+773+768+76-251+516-43-661+0-277+235-103-525+336-255 +nP_montgomery25519 51 implementation amd64-avx2-ns10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 51 32 88327 +1066+393+87-128-38-584+395+0-413+33-609-662-315+2784+272 +nP_montgomery25519 52 implementation amd64-avx2-ns10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 52 32 88696 +2767+584+361+287-324+180+62-506-35-83-311+126-189+0-97 +nP_montgomery25519 53 implementation amd64-avx2-ns10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 53 32 88123 +1059+621+610+88+176-112-478+274-157+0+141-616-326-472-29 +nP_montgomery25519 54 implementation amd64-avx2-ns10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 54 32 88608 +2869+664+187+655-571+116-374-522+312-377+26-5-431+0-515 +nP_montgomery25519 55 implementation amd64-avx2-ns10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 55 32 88345 +937+558+537+0+232-193-684+25-667-332+153-321+61-341-176 +nP_montgomery25519 56 implementation amd64-avx2-ns10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 56 32 88408 +1087+800-259+165-344+27-57-238+263-241+9+458-212+0-187 +nP_montgomery25519 57 implementation amd64-avx2-ns10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 57 32 88174 +1048+446+257+112+346-154-470+0-346+136-166-508+29-458-74 +nP_montgomery25519 58 implementation amd64-avx2-ns9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 58 32 91498 +4866+400+260+181+53+79-178-368+0-255-34+1-53-236-26 +nP_montgomery25519 59 implementation amd64-avx2-ns9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 59 32 91165 +1299+194+304+14-52-323+100-356+197-167-81-150+132-138+0 +nP_montgomery25519 60 implementation amd64-avx2-ns9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 60 32 91486 +1059+207-34+0-306-98-17-43-7-196+181+12+166+178+244 +nP_montgomery25519 61 implementation amd64-avx2-ns9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 61 32 91121 +788-17+175+23-39+209+219-24-202-77+118+55-34+0-198 +nP_montgomery25519 62 implementation amd64-avx2-ns9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 62 32 91715 +5168+24+288-155+146-142-273-329+79+0-46+71-472+115-244 +nP_montgomery25519 63 implementation amd64-avx2-ns9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 63 32 91338 +660+266+62+0+105-116+85+92+158-205-26-102-118-273-101 +nP_montgomery25519 64 implementation amd64-avx2-ns9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 64 32 91608 +1254+394-117-95+252-135-97-239+148+161-19+0-79+123+195 +nP_montgomery25519 65 implementation amd64-avx2-ns9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 65 32 91259 +584+358+36-67-67-135-62-92+150-33+76+37+0-17+39 +nP_montgomery25519 66 implementation amd64-avx2-ns9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 66 32 91360 +2935+732-11+188+0+116+7+23-228+60-348-36-71-156-45 +nP_montgomery25519 67 implementation amd64-avx2-ns9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 67 32 91239 +575+125+49+53+65+0-224-301+164-176-182-232-235-81+1180 +nP_montgomery25519 68 implementation amd64-avx2-ns9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 68 32 91489 +2645+72+301-112-110-26-57-74+164+31+43+0-68-300+61 +nP_montgomery25519 69 implementation amd64-avx2-ns9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 69 32 91180 +543+371+0-257-308+10-251-122+237+43+65-52+191-19-23 +nP_montgomery25519 70 implementation amd64-avx2-ns9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 70 32 91471 +797+260+273+241-29-191-89-185+44+44-216-135-160+173+0 +nP_montgomery25519 71 implementation amd64-avx2-ns9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 71 32 91124 +999+149+0+44-156+109+2+78-173-82-42+69-110-372-55 +nP_montgomery25519 72 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 72 32 115750 +4883+528+89+358+56-261+27-254-105-37-197+0+33-150-95 +nP_montgomery25519 73 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 73 32 115415 +5325+243+0+147+144+135+75-44-2+326-224-60-163-133-4 +nP_montgomery25519 74 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 74 32 115590 +581+175-238+195-201-134+108-155+87+0+46-46-57-47+175 +nP_montgomery25519 75 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 75 32 115543 +1181-200+13+30+12+8-91-19-107+0-136-193+27-313+113 +nP_montgomery25519 76 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 76 32 115562 +741+191+30-37-8-12-53+0-22+96-237+200-27+25+248 +nP_montgomery25519 77 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 77 32 115388 +324+195-29+99-13+95+21-89+30-226-333-434+117-55+0 +nP_montgomery25519 78 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 78 32 115736 +523+256+237-84+0-83+137-138+164-198+66-174-130+24-9 +nP_montgomery25519 79 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 79 32 115432 +429+20+156-267-159+87+9+0-114-270-175+61-116+104-172 +nP_montgomery25519 80 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 80 32 90847 +929+429-238-314+188+6+159-53+243+66-14+0-170-193-42 +nP_montgomery25519 81 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 81 32 90700 +732+405-37-2+0-398+147-37-182+146-104+85+746-171+134 +nP_montgomery25519 82 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 82 32 102782 +3348+410+40-195-106+164-395-106+58+150-159+39-46+0-141 +nP_montgomery25519 83 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 83 32 102493 +531-123+0-236+103+8-10-77+13+38+312+196-25-68-148 +nP_montgomery25519 84 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 84 32 102659 +645+219+0+19+408+10-18-66+82-20-54-121-224-212+27 +nP_montgomery25519 85 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 85 32 102499 +52+0-117-136-258+316-189-154-70-18+50+110+276+119+349 +nP_montgomery25519 86 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 86 32 159833 +4286+201-436-65-331+143+72-39+540+0-183+100-347+361-184 +nP_montgomery25519 87 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 87 32 206274 +7008-61+27-61+94-153-5+0-248+141+1900+140-3+116-17 +nP_montgomery25519 88 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 88 32 162407 +8320+0+399+655-333+278-301+247+345-46-483-46-202+186-1 +nP_montgomery25519 89 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 89 32 204100 +10593-38+406+140-620+62-2+110-1512+548+2+0-756-114-178 +nP_montgomery25519 90 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 90 32 162903 +3170+0-290+32-27-83+608-1025+147+373-1042+610-233+212-780 +nP_montgomery25519 91 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 91 32 205508 +5762-266+26-436-254+160-168-686+6-235+729-270+152+112+0 +nP_montgomery25519 92 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 92 32 157449 +4465-398+286+415+68+119+38-644-343-472+0+109-960-465-387 +nP_montgomery25519 93 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 93 32 199623 +5588+232+7-143-194-39-167+0+61-158-125+62-93+152+53 +nP_montgomery25519 94 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 94 32 335922 +1243+124+782-359-57+0-393+407+160+187+208-16-38-1097-901 +nP_montgomery25519 95 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 95 32 323366 +742-89-428+196-20-289-104-644+265+0+245+315+100+125-210 +nP_montgomery25519 96 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 96 32 340888 +1390-246+84+767-1039-1430-394-464-64+0+1000+750-1018+160+1085 +nP_montgomery25519 97 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 97 32 319761 +2142+410+502+66+3+107-6+341-245+0-209-115-455-301-163 +nP_montgomery25519 98 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 98 32 337123 +736+0+86-141-350+83+3-159-27-319+241-175+184-231+205 +nP_montgomery25519 99 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 99 32 320785 +292+181+160-32-738-245+234+0+41-675+852-601+163-1638-1145 +nP_montgomery25519 100 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 100 32 342912 +1703+1164-88+377+0-26-899-474+1302-177-592+228+58+249-248 +nP_montgomery25519 101 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 101 32 322450 +90-11+78+90+162-720-391+353+31-304+0+584-161-21-174 +nP_montgomery25519 102 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 102 32 157111 -24539+292-211-84+72+0+81+183-49+264-30+167+112-83-72 +nP_montgomery25519 103 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 103 32 127632 +462-183-1096+99+0+36+105-572-59+148-187+63+21-1-578 +nP_montgomery25519 104 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 104 32 157036 -29458-89+146+365+271+186-147+0-130+254+122-26+67-30-120 +nP_montgomery25519 105 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 105 32 127773 -318+0+91+120-471-37-349+96+221+84-422-483+110-16+255 +nP_montgomery25519 106 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 106 32 157076 -28742+116-202-306+81-227+106+558-160-113+7-44+151+0+182 +nP_montgomery25519 107 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 107 32 127650 +512+373-521+197+135-90+90-155-672+0-44-26-23+16+181 +nG_merged25519 selected implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 selected 32 28065 +14082+226+199+60-69+0-93-321-301-37+88+35-42-101+309 +nG_merged25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 0 32 41272 +13355+544+389-298+25-272+178+383-224-385-236+44-80+0-369 +nG_merged25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 1 32 40824 +3751+35-210-176+317+169+257-360+46-14+171+0-303-53-191 +nG_merged25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 2 32 41576 +3648+280+198-87-196+0+238-465+36-175+160+296-367-260-334 +nG_merged25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 3 32 40938 +2474+12+159+0-23-146+12+370-155-199+77-98+411-298-15 +nG_merged25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 4 32 41790 +2278+203+445+0+216-29-97+74-131-16-114+303-476+297-102 +nG_merged25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 5 32 40940 +2123+210+0+228-163-85+24+233-117-118-242+82-95-265+165 +nG_merged25519 6 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 6 32 41719 +2282+220+121-84-212-543-404+124+69+0-212+120-174+134-494 +nG_merged25519 7 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 7 32 41030 +2311+116+148+105-225+9-466-250+42+0-96+148-24-161-350 +nG_merged25519 8 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 8 32 36273 +14345+180+87-2-12-44-36-56+0-193+24+53+10+29-10 +nG_merged25519 9 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 9 32 35824 +1285-221-204+91+187+24-404-158+0-46-197+146+75+153-261 +nG_merged25519 10 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 10 32 36378 +1469+252+182-332-225-205-146+168-200+0-191+27-172+214+153 +nG_merged25519 11 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 11 32 35641 +752-29-38+39-72+48-146-88-8+0-421+291+4+275+668 +nG_merged25519 12 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 12 32 36698 +1954-436-50+226+117+161-793+2-114+0+13+32-758-824-213 +nG_merged25519 13 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 13 32 37463 +854-931+165+0+18+88-120+87-191-107+40-13-94-55+19 +nG_merged25519 14 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 14 32 36095 +1490+400+6-101-39+8+42-76+0-186-215+175-203-88+34 +nG_merged25519 15 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 15 32 35681 +1185+187+29+266-170-185-163-184-275-351+0-427+149+96+83 +nG_merged25519 16 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 16 32 33190 +8055+121+10+26-45+80+154-35-62+0-55+60-68-78-126 +nG_merged25519 17 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 17 32 32737 +682+138-245-123-49+14-141-116-57-117+33+83+0+65+30 +nG_merged25519 18 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 18 32 33126 +1043+352+38-72-69+110+47+0-123-99-92+4-10-25+62 +nG_merged25519 19 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 19 32 32719 +558-42-81-21-79-133+31+66+0+44+24-210-25+7+41 +nG_merged25519 20 implementation amd64-avx2-10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 20 32 31566 +5181+210+175+85+13+58-50-106-104-161-19+106+0-189-100 +nG_merged25519 21 implementation amd64-avx2-10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 21 32 31103 +1128+65+75-8-86-153-132-71-7-87+106+0+208+208+132 +nG_merged25519 22 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 22 32 31986 +12600+281+197-85-164+98-99-160+49+63+11-121+0-48-8 +nG_merged25519 23 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 23 32 31465 +1239+16+28-141+3-19-148-17-23-118+0-5+6+15+40 +nG_merged25519 24 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 24 32 31977 +842+97+79+69+51+0-67+16+22-118-99-120-91-250-162 +nG_merged25519 25 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 25 32 31550 +665-104+33+159+39+3-300-121-3-102+50-254-325+0+59 +nG_merged25519 26 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 26 32 32821 +5531+199+124-99+218-42+54+51+58-13-37+0-103-115-205 +nG_merged25519 27 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 27 32 32106 +890+38-2-35-14-73+157-12-129+34+109+52+0+50-19 +nG_merged25519 28 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 28 32 32682 +693+53-136-24+35+29-58-11+100-86-160+106+73-59+0 +nG_merged25519 29 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 29 32 32026 +512-53+100+0+42-3-3+115-57-63-46-16+84+90+93 +nG_merged25519 30 implementation amd64-avx2-9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 30 32 30958 +5130+204-33-178+48-69+70+79+0-6+125-6+25-93-51 +nG_merged25519 31 implementation amd64-avx2-9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 31 32 30506 +570+125+66+236+2-140-42+0-90-51+77+5-31-35-42 +nG_merged25519 32 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 32 32 31518 +5866+224+250-76-11-31-72-200+10-63+129-44+0+7+19 +nG_merged25519 33 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 33 32 30750 +1266+200+103+229+25-43-5-3-18-71-11+8+82-51+0 +nG_merged25519 34 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 34 32 31500 +1074+272+111-4+46-100-154-183+38+14+41+0-30-98-75 +nG_merged25519 35 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 35 32 31079 +777-20+95+12-226-83-18+9-97+77-146+49-4+0+43 +nG_merged25519 36 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 36 32 33408 +4989+463+243+170+64-43-170-56-110+267-47-129+164+0-54 +nG_merged25519 37 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 37 32 32925 +671+48-33+33+0-149+93+22-98-3+74-149+67-1-59 +nG_merged25519 38 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 38 32 33501 +997+88+233-145-114-37+0+110-185-188-19+114+83+65-56 +nG_merged25519 39 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 39 32 32958 +503+119-173-57+52-28+4893+5421+242-140-177-50+0-47+69 +nG_merged25519 40 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 40 32 33439 +799+86+124-72-48+92+0+96+11-261-116+35-21-71-247 +nG_merged25519 41 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 41 32 32905 +478+52-253+0-92-100+126+93-71-1-140-69+108+10+23 +nG_merged25519 42 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 42 32 33462 +921+79+153-185+0+103-44-109+54-2+28-132-85-143+143 +nG_merged25519 43 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 43 32 32840 +711+103+34+114+248+84+0-32-34-11-45-40-133+113-165 +nG_merged25519 44 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 44 32 28671 +1484+94-102+90-115-151-70-66+69+48+50+7+0-281-111 +nG_merged25519 45 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 45 32 28109 +413+12-23+22-213-85-133+148+0-80+44+44-125+55-81 +nG_merged25519 46 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 46 32 30809 +4032+432+374+46+144+0+129-127-171+10-51-26-10-109-11 +nG_merged25519 47 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 47 32 30358 +667+244-17+146+4+6-194+0-169+43-234-84-53-6+95 +nG_merged25519 48 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 48 32 30793 +1398+224+192+273+199+60+0-124-73-103-162-28+34-51-89 +nG_merged25519 49 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 49 32 30429 +1444+132+74+94-43+104-284-124-209-82-280+31-119+14+0 +nG_merged25519 50 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 50 32 121402 +5701+95+297+147-192-37-16-65+0+300-38+413+133-326-85 +nG_merged25519 51 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 51 32 98086 +3674+281-33+24+204-153-90+950-46+0-2-12+45-63+54 +nG_merged25519 52 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 52 32 121712 +3429-61+0-98+67+103-213-166-308+328+269-150-362+171+334 +nG_merged25519 53 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 53 32 97466 +3721+106+0-123-165+11+26-141-283+126-113+218-19-52+10 +nG_merged25519 54 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 54 32 119556 +3928+29-40-16-167+61+81+71-58-35+15-111+0+132-58 +nG_merged25519 55 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 55 32 97703 +4111+85-280-27+0+306+226-83+26-227-393-120+0-26+47 +nG_merged25519 56 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 56 32 121655 +4412+63+178-251+139-227-8-207+0-41+181-91+310-124+13 +nG_merged25519 57 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 57 32 106369 -3014+425+0-268+146+25-7-163-117+133-23+509-111+8+6 +nG_montgomery25519 selected implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 selected 32 28148 +4196+113-24-164+113+227-24+981+1+102-170-135-147+0-76 +nG_montgomery25519 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 0 32 90873 +3465+9-25+92+17-15+10-116+98+0-455-91-83+42-562 +nG_montgomery25519 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 1 32 90813 +184+41+0-203-6+15+31+261+2-290-190-86-271-90+336 +nG_montgomery25519 2 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 2 32 90781 +465+355-69+165-69-2+73-557+165+258+0-405+112-73-16 +nG_montgomery25519 3 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 3 32 90761 -75+35+411-72+47-179+246-276+21+162+74-136-209-343+0 +nG_montgomery25519 4 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 4 32 90860 +228+225+94+134+395-48-169+119-317-97+136+0-41-214-1 +nG_montgomery25519 5 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 5 32 90760 +196+177-17+120-233-37-300+395+0-494+444+14+696-50-151 +nG_montgomery25519 6 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 6 32 90828 +295+129+298-32-102-185-154+141-237+88+95-225+0+97-748 +nG_montgomery25519 7 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 7 32 90881 +45-130-282+172+207+112-33+105-205-72+0-191+165+945-6 +nG_montgomery25519 8 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 8 32 147169 -26425+142+255+256+160-5-54+187+0-54-38+251-78+371-90 +nG_montgomery25519 9 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 9 32 117146 +336+269+588+424-103+141-440-134+0-303+89-89-36-29+658 +nG_montgomery25519 10 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 10 32 147196 -29397+187-68-121+170-60+6+141+231-72-194+407-116+105+0 +nG_montgomery25519 11 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 11 32 117586 +198-95-466-122-149-494+225+140+0-44-193+390+132+277+3 +nG_montgomery25519 12 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 12 32 147211 -28590-249+136-27-122+190+20-11+121-96-287+71+216+0+199 +nG_montgomery25519 13 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 13 32 117422 -46+444+330-148+367-301+513+1087+253+87-38-43+0-274-164 +nG_montgomery25519 14 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 14 32 28065 +1150+208-69+40+70+66-113-2+0+90-58-235-20+157-62 +nG_montgomery25519 15 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 15 32 28214 +74+71+107-86+28-12+38-287-95-213+60-101+0-119+31 +nG_montgomery25519 16 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 16 32 28049 +334+115-64+112+40+343+90-257-33-84+0-182-86+0-101 +nG_montgomery25519 17 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 17 32 28119 +343+0+54+180+86-341-47+106-39-214+204-95+38-133-147 +nG_montgomery25519 18 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 18 32 28093 +318+61-32-73+67-68-306-130+0+123+83+6-33-19+189 +nG_montgomery25519 19 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 19 32 28203 +860+42-160+101+78+104-199-50+53-191-109+0+183-90-37 +nG_montgomery25519 20 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 20 32 28158 +197+210+94+175-116-42-176+91-203-96-104+98+0-281+141 +nG_montgomery25519 21 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 21 32 28136 +253-57-54+0-14+273-110+7+72+260-59+82+101-80-147 +mGnP_ed25519 selected implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 selected 33 112291 +25687+4677+2105+905+0+128+237+245-73-23-15-205-393-240-489 +mGnP_ed25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 0 33 155479 +20017+5503+2676+1526+808+129+141-372-113+0-285-446-159-293-693 +mGnP_ed25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 1 33 155217 +9404+4439+1715+693+576-226+69+265-245-599-590+0-421-601-581 +mGnP_ed25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 2 33 154221 +10702+5003+2292+1066+251+46-368-710-183-467-168+0+80-568-368 +mGnP_ed25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 3 33 156321 +10002+4028+1969+0+239+512+141-113+86-7-366-208-514-100-656 +mGnP_ed25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 4 33 156765 +11423+5655+2862+1377+976+559+69+0-391-581-515-349-654-295-798 +mGnP_ed25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 5 33 153228 +10982+4934+2090+490+0+246+424+314-614-381-925-609-625-514-348 +mGnP_ed25519 6 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 6 33 155419 +10431+5690+2102+1246+647+26-441-87-229-371+277-531-138-197+0 +mGnP_ed25519 7 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 7 33 155930 +9556+5629+2287+1467+439+482+310-106-120-651-729+0-169-398-854 +mGnP_ed25519 8 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 8 33 153728 +21040+4146+2206+1407+866+1074+26+0-236-71-61-251-105-468-280 +mGnP_ed25519 9 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 9 33 151781 +9131+4517+2253+1658+356+121+19-31-9-219+0-384-373-369-242 +mGnP_ed25519 10 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 10 33 151256 +8426+3982+1692+246+124-94-146-80+0+138-322-371-243+94-280 +mGnP_ed25519 11 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 11 33 151318 +8509+3240+1784+882+824+1354+325-209-266-115-54+0-121-350-583 +mGnP_ed25519 12 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 12 33 151525 +9058+4613+2510+916+191+244-24-69-53+5-165-124-255+0-193 +mGnP_ed25519 13 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 13 33 149294 +7660+3344+944+980+712+174-222+0+270-406-163-195-374-192-200 +mGnP_ed25519 14 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 14 33 152370 +7789+4148+1874+588+52+0-248-332-442-512-320-248+46-134+44 +mGnP_ed25519 15 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 15 33 151596 +6649+3879+2401+972+654+0+57-408+73-214-190-296-314-390-348 +mGnP_ed25519 16 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 16 33 144384 +26623+6300+2747+461+254-122+42-224-392+0+22-492-44-36-146 +mGnP_ed25519 17 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 17 33 144160 +11201+5510+2920+1450+748+92+34-8-64-66-224+0-332-70-192 +mGnP_ed25519 18 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 18 33 143906 +11918+6030+3296+1046+276+352+46+0-240-164-332-42-66-28-44 +mGnP_ed25519 19 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 19 33 143630 +10388+5404+3322+2612+1192+1138+578+0-224-222-104-304-104-170-310 +mGnP_ed25519 20 implementation amd64-avx2-10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 20 33 114646 +21565+4562+1646+812+364+300+0-32+284-42-68-156-288-422-200 +mGnP_ed25519 21 implementation amd64-avx2-10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 21 33 115812 +8666+3212+2104+1048+644+210+0+393-212-36-156-230-220-538-296 +mGnP_ed25519 22 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 22 33 126974 +19737+4102+1860+1066+336+28-6-102+0-216-286-134+10-438-64 +mGnP_ed25519 23 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 23 33 127764 +6844+2646+1170+1006+210+408-326-14+0+36-169-671-94-170-453 +mGnP_ed25519 24 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 24 33 125690 +9075+4210+1826+518-26+222-384+310+50-82-48-206-124+0-230 +mGnP_ed25519 25 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 25 33 127166 +8192+3766+1870+1096+406+364-10-250+224-228-164+0-66-156-212 +mGnP_ed25519 26 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 26 33 140850 +24910+6292+2982+796+630+0-88-385-39+330-178-134-48+198-138 +mGnP_ed25519 27 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 27 33 144506 +9869+5163+2432+804+426+160+36-242-430-280-336+0-470-276-428 +mGnP_ed25519 28 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 28 33 141778 +10277+5086+1704+554+264-96-70+0-58+66-196-104-144+6-94 +mGnP_ed25519 29 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 29 33 143490 +8781+5667+2987+2120+906+366+166+0-174-342-302-260-602-548-470 +mGnP_ed25519 30 implementation amd64-avx2-9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 30 33 115758 +19866+2924+1472+494+320+0-320+44-126-166-676+16-606-606-220 +mGnP_ed25519 31 implementation amd64-avx2-9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 31 33 114718 +7610+2688+1142+792+0+788+290-195+197-426-478-642-442-445-313 +mGnP_ed25519 32 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 32 33 127628 +19500+3378+1490+584+454+0-14-88+517-401-430-580-222-262+120 +mGnP_ed25519 33 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 33 33 127826 +6501+3730+1942+932+848+286+0+48-162+0-96-466-180-174-168 +mGnP_ed25519 34 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 34 33 125886 +7516+3370+1194+344+168+58-230+0-98+330-162-234-32-236-46 +mGnP_ed25519 35 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 35 33 126386 +6398+3186+1288+496-2+174+0-154+150+120-284-62-452-242-174 +mGnP_ed25519 36 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 36 33 145098 +21660+6768+2499+1111+180+52-182-414-412-444-508-422+4050+0-500 +mGnP_ed25519 37 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 37 33 143990 +10622+5146+2010+752+434+264+116+0-398-408-476-484-402-108-458 +mGnP_ed25519 38 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 38 33 143692 +10448+5113+2640+721+386+164-100-26-236+0-110-26+60-90-276 +mGnP_ed25519 39 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 39 33 145878 +9719+3959+1956+649+396+0+208+182-264-42-224-328-390-444-706 +mGnP_ed25519 40 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 40 33 143616 +10351+4262+1758+852+422+224+0-160-424-272+68-360-330-96-250 +mGnP_ed25519 41 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 41 33 146506 +8293+3694+1624+578+294+704+48+0-584-394-352-510-606-672-622 +mGnP_ed25519 42 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 42 33 146012 +11544+4454+1876+754+360+366+0-182-220-168-286-477-115-412+507 +mGnP_ed25519 43 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 43 33 142518 +10598+5064+1894+594+98+46-100-62+38-304+0-368-380-128-194 +mGnP_ed25519 44 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 44 33 112284 +9531+4370+1078+322+10+246+52-192-146-138-506-141-31+0-58 +mGnP_ed25519 45 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 45 33 112558 +7391+4024+1880+1090+766+169+111-164-194+0-134-114-12-190-630 +mGnP_ed25519 46 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 46 33 124090 +18823+3794+2006+416+52+246+152-47-269-336-200+0-174-196-32 +mGnP_ed25519 47 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 47 33 126172 +6196+2692+1232+768+700+352-42+362+0-342-230-110-244-268-118 +mGnP_ed25519 48 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 48 33 126774 +7215+2348+748+223+234+17-198-158-28+0-274+1035-291-330-13 +mGnP_ed25519 49 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 49 33 126334 +5952+2323+777+914+486+198+98+0-402-574-144-726-298-706-538 +mGnP_ed25519 50 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 50 33 369977 +13776+5661+2905+1334+457+214+794-210-1174-304-744+0-536-417-697 +mGnP_ed25519 51 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 51 33 387091 +13939+5915+2566+814+235+271-385-322+0-15-92+504-690-454-670 +mGnP_ed25519 52 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 52 33 372548 +11995+5956+2822+1070+0+769+13+131-48-896-1015-753+0-1672-103 +mGnP_ed25519 53 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 53 33 387225 +14745+5333+1460+575+0+308-664+1072-502-355-800-212+281-956-535 +mGnP_ed25519 54 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 54 33 378245 +11657+4470+2590+1690+803+908+222-892+0-274-1313-1103-151-1422-1055 +mGnP_ed25519 55 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 55 33 385746 +14298+5377+2680+1506+727-749+894+0-629-576-277+424-148-682-695 +mGnP_ed25519 56 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 56 33 372680 +13019+7420+3800+1021+815+0-72-231+433-552+29-637-1347-751-706 +mGnP_ed25519 57 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 57 33 383337 +11402+6425+2884+1832+45+986-105-258-236-79+144-775+0-163-324 +dh_x25519 selected implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair selected 32 28336 +6077+190+9-88+39+108-5-14+57+14+0-59-15-90-78 +dh_x25519 selected 32 90778 +631+508+280-19-249+197+165-18+316+0+387-23-94-16-128 +dh_x25519 0 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 0 32 28402 +575+42+0+47+25-125+67-63+0-89-121+76-24-67-103 +dh_x25519 0 32 90981 +256-171-23-139+946+81+539-367-382-17+0-171+112+79+36 +dh_x25519 1 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 1 32 28224 +531+95-77+1178+401-28-51+3-13-92-87+0-33+281+170 +dh_x25519 1 32 91010 +1101+58-69-36-293+0+4+162-268-291+724-126+27-273+313 +dh_x25519 2 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 2 32 28389 +597+157-68-47-29+42+12+126+171-88+0-46+56-50-139 +dh_x25519 2 32 90891 -119+50+52-165+96-252+784+234+320-479+180-297-115-3+0 +dh_x25519 3 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 3 32 28387 +1145-111+109+25-11+0-1+188-93+19+155-106-124-23+64 +dh_x25519 3 32 90865 +487-46+92+0-253+185-256-1-26+89-244+36+205+240-41 +dh_x25519 4 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 4 32 28415 +285-295-134-173-79+0+13+40-81+51+47+124+37-84-115 +dh_x25519 4 32 90889 +716+140+44+152-210-157-63-411+5+0-80+123-116-496+70 +dh_x25519 5 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 5 32 28308 +218+134-69-160-43+131-28+46-22+97+29-73+0-129+27 +dh_x25519 5 32 90822 +0-50-173-356-150+63+163-32+10-387+37+32+9+191-73 +dh_x25519 6 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 6 32 28294 +557-106-70-163-85-103-34+71-113+219+207+50+99+45+0 +dh_x25519 6 32 90853 +489-31+45+52-89+17-466+148+98+0-60-348+86-375-233 +dh_x25519 7 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 7 32 28288 +439+84-150+39-92+37-7+67-98-20-2-64+143+0+84 +dh_x25519 7 32 90888 +191+428+89+96+6-229-359-232-283+55+0-124+161-73-298 +sign_ed25519 selected implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair selected 32 29047 +6112+199+0+155-70-73-90+13-184-76-62+20+119+51-44 +sign_ed25519 selected 0 31871 +6343+439+254-134-41+151+16+17-253-57-79-66+137+0-33 +sign_ed25519 selected 1 31918 +393+197+77+26+77-17-20-16-47+0-36+50+41-80-78 +sign_ed25519 selected 2 31894 +305-102-40+207-120-74+0+60+25-192-198-209+6+19+25 +sign_ed25519 selected 3 31863 +374+16-107+121+0+70-25-3+1+99-103+95-104-16-121 +sign_ed25519 selected 4 31897 +178+905+139+139-118-51-63+0+12-16-78-138+156+19-231 +sign_ed25519 selected 6 31848 +201+137+12-2+106+170-100-28+89-26+32-103-61-111+0 +sign_ed25519 selected 8 31880 +412+34-140-176-56-54-8+105+33-77+163+11-170+104+0 +sign_ed25519 selected 11 31856 +389+157-60+64+75-10+133-148-99-71+111+0-88-249+6 +sign_ed25519 selected 14 31867 +22+47+242+0-84-51+102-12-50-25+171+61-62+25-72 +sign_ed25519 selected 18 31919 +332-131+43+240-58-60+25+49+19+0-244-106+152-1-208 +sign_ed25519 selected 23 31887 +17-3+5+11+51-5-107-94-5+68-76+0-185+53+48 +sign_ed25519 selected 29 31834 -55-63+1-98-61+189-9-56+0+108+199+102-89+91+67 +sign_ed25519 selected 37 31868 +417+191+72-112-30+60+52+0-125-130-35+97+93-1-5 +sign_ed25519 selected 47 31908 -119-4+136+189-118-65-89+3+102+0-119-31+121+68+77 +sign_ed25519 selected 59 32547 +254+79-24+133-4+0+70-9-223-63+108+188+43-106-10 +sign_ed25519 selected 74 32613 +774+64-14-50-26-58+38-77+0-94+37+96-278+0+178 +sign_ed25519 selected 93 33357 +427-285-7-20+37-135+61+0+139-55+134+1-69+36-75 +sign_ed25519 selected 117 33320 +204-34+0-85-233+109+199+2-188+49-77-212+90+180-215 +sign_ed25519 selected 147 33334 +436+71+222-41+49-108+87-144-164+210+0-124+2-81-178 +sign_ed25519 selected 184 34033 +372-102-32+61+174-8+0-175-113+31-71-99+58+120+25 +sign_ed25519 selected 231 34730 +334+94-132-150+25+77-47+0+49-30-41+68+92-69-91 +sign_ed25519 selected 289 34679 +501-25+24+0+36-156-95-87+1198+33-121-166-31+184+259 +sign_ed25519 selected 362 36047 +407-31+93-52+0-54-12+99-129+116-38+168+118+192-24 +sign_ed25519 selected 453 36690 +648+103-30-30+160+129+0-92+0+75-147+181-12+175-8 +sign_ed25519 selected 567 38119 +283+107-183-92-170-16+217+35+85+24+0-39+32-38-101 +sign_ed25519 selected 709 39452 +366+108+109-28-87+0-23-42+14+177+89-42+44-99-104 +sign_ed25519 selected 887 41521 +399+39-157+18-77-57+44+114+0+25-15+127-163-98-153 +sign_ed25519 selected 1109 44245 +485+32+27-221-237+2+0-67-16-140+14+3-1+46-87 +sign_ed25519 selected 1387 46958 +237+60+36-95-79-157+27+191+31-96-126-105-24+150+0 +sign_ed25519 selected 1734 50290 +451+0+334-28+91-90-180+267-103+116-92-131+149-96+54 +sign_ed25519 selected 2168 55109 +498+202+195-93-167-30+28-30-63+21-181+19+0+25-92 +sign_ed25519 selected 2711 60487 +801-51-4-116-136-72+41+0-86+160+140+30+110+348-22 +sign_ed25519 selected 3389 68044 +688+302-58-100-74+6-105+0-77+225+68-92+11+121-11 +sign_ed25519 selected 4237 76781 +593+36+116-150+190+6+58+0-127-40-67-29+168-14-52 +sign_ed25519 selected 5297 88310 +282+37-157-28+30+2+8-101+83-67-186-34+0-14+29 +sign_ed25519 selected 6622 102518 +663-155+0+0+126-31-114+98-125-34+23-3-58+84+62 +sign_ed25519 selected 8278 120098 +225+106+0-79+152-13+198-90+8-72-73+211-47-10+29 +sign_ed25519 selected 10348 141725 +405-156-44+0+32+9+1+121-99+957+350-51-8-1-38 +sign_ed25519 selected 12936 168918 +392-43-201-43-138+25+0+65-426+219+92+19-27-100+144 +sign_ed25519 selected 16171 202724 +473+398-194-130-78-120-105+27+94+13-144+18-53+0+69 +sign_ed25519 selected 20214 246022 +1304+2+0-87-43+75+71+119-66-196+300-79+72-146-28 +sign_ed25519 selected 25268 299607 +605-275+111+38-53+219+169+230-73-188+0+259-247-88-265 +sign_ed25519 selected 31586 366554 +1189+22-133+146+26-57+49-114-166+124+0-81+9-162-52 +sign_ed25519 selected 39483 449811 +1491+69+613+22+131-17-143+0-240+444-270+390-265-128-281 +sign_ed25519 selected 49354 554086 +1728+329+9+58+57-242-196-20-228+77-164+73+0-94-413 +sign_ed25519 selected 61693 685420 +1736+199+0+155+10-325-414-392-419+970+488+292-196-490-496 +sign_ed25519_open selected 0 112929 +11837+4091+2061+975+37+157-267-39+193+0-158-184-414-681-471 +sign_ed25519_open selected 1 113312 +6538+3572+1280+668-42+22-254-68-224+0-94+120+48-104-258 +sign_ed25519_open selected 2 111214 +6198+3222+1502+470+402-46-292+0+118-60-380+14-201-407-358 +sign_ed25519_open selected 3 112112 +6424+2886+802+212+0+252+104-168-248-432-376-470-348-336+349 +sign_ed25519_open selected 4 113472 +5235+2830+1707+561+100-24-248-70-41-366-129-154+134+0+112 +sign_ed25519_open selected 6 113770 +6274+2876+1612+1024+536+204+175-17-8+0-10-90-200-14-278 +sign_ed25519_open selected 8 112596 +6465+3304+1472+1174+136+0-84-104+21+276-112-95-284-302-160 +sign_ed25519_open selected 11 113568 +6288+3521+1175+538+0-92+139+34+103-164-6-331-441-322-425 +sign_ed25519_open selected 14 113404 +5741+2287+880+604+280-438+88-104+0+8-231-493-368-562-546 +sign_ed25519_open selected 18 112244 +5792+2698+1108+505+163-48+116-144-334-248-530+0-492+68-192 +sign_ed25519_open selected 23 113382 +6421+3404+1252+542+766-158-106+0+78+75-83-34-248-264-208 +sign_ed25519_open selected 29 112484 +6173+2443+1044+382+206+344-190+92-82-447-567-198-488+0-122 +sign_ed25519_open selected 37 114224 +5305+2394+1704+756+504+216+206-130+0-28-148-398-397-545-190 +sign_ed25519_open selected 47 114008 +5833+3187+1794+820+312-203+25-71+0-100-154-267+23-230-286 +sign_ed25519_open selected 59 115448 +5066+2032+894+310+336+136-76+0-316-326+26-576-798-736-842 +sign_ed25519_open selected 74 113658 +6435+2837+1201+632+124+76+60-12-174-89-155-308+0-526-372 +sign_ed25519_open selected 93 114008 +6168+3354+1700+977+447+74-198-78-224+1027-271-98-244+0-210 +sign_ed25519_open selected 117 113400 +6620+2814+1609+1035+280+207-234-33-208-338-248+258-82+0-198 +sign_ed25519_open selected 147 113633 +5618+2473+997+735+301+237+0+7-122-458-308-589-27-289-51 +sign_ed25519_open selected 184 115622 +5388+2630+1362+350+108+78-106+86+0-380-132-274-140-336-430 +sign_ed25519_open selected 231 114428 +6561+2780+994+594+283+64-93-181-132-165-84+0-36-72+22 +sign_ed25519_open selected 289 115320 +5934+3114+1830+910+280+215-149-20-26+10+0-132-112-40-192 +sign_ed25519_open selected 362 114876 +6108+3306+1652+1332+602-114+262+0-80+0-36-212+292-505-550 +sign_ed25519_open selected 453 114688 +5994+2412+1312+582+40+286-42+102-6-192-98-102-28-206+0 +sign_ed25519_open selected 567 118202 +5880+3248+1239+631+0+180-136-178+277-19+42-359-125-145-218 +sign_ed25519_open selected 709 117980 +5558+3000+1102+748+164+0+2+264-184-338-202-170-550-114-152 +sign_ed25519_open selected 887 118543 +5296+2817+1375+537+115-63-67-305-217+0-124+23-89+58-348 +sign_ed25519_open selected 1109 118127 +5820+2214+1064+581+156-20-43+153-99+0-107-155-60-96+35 +sign_ed25519_open selected 1387 121050 +6674+3178+1424+802+360-40-86-102-196+0+119-79-272+74-92 +sign_ed25519_open selected 1734 120526 +6306+4176+1789+884+388+36+26+0-14-374-86-82-254-473-378 +sign_ed25519_open selected 2168 123926 +6476+3555+2015+1200+410-8-200-12+6+0+48-62-111-152-322 +sign_ed25519_open selected 2711 127828 +5634+3371+1149+585-57-106+0+134-111-254-451-364-170+88+12 +sign_ed25519_open selected 3389 131380 +6259+2880+1006+770+244+0-78-96-199-33+62+56-256-150-210 +sign_ed25519_open selected 4237 135682 +5650+2250+1098+404-58-122-66-166-300+971+120-34+0+28-66 +sign_ed25519_open selected 5297 142006 +6319+3034+1348+754+112+90-36-46-149-229+142-208-318-2+0 +sign_ed25519_open selected 6622 148744 +6367+2110+866+434+444-16+8+0-26-114+64-118-108-196-450 +sign_ed25519_open selected 8278 158090 +5330+2728+1108+558+32+0+58-40+88-138-126-258-188-166-4 +sign_ed25519_open selected 10348 168377 +6322+2863+1345+732+329-70+65-195-4-89+0-259-14+18-189 +sign_ed25519_open selected 12936 181950 +5911+2747+1092+590+302+138-48-92-186-110-184+74+0+0-230 +sign_ed25519_open selected 16171 198862 +6620+2849+1017+834+200+103-231+0-230-548-224-198-409-184+633 +sign_ed25519_open selected 20214 220586 +6491+2846+1506+591+373+96-149+79-195-271-451-211+0-197-205 +sign_ed25519_open selected 25268 249680 +5881+3051+1250+572+0-125-297-85-43+76-585+1178+16-168-218 +sign_ed25519_open selected 31586 283267 +7000+3075+1684+1156+314-133+0-375+237+123-197-36-302-18-26 +sign_ed25519_open selected 39483 327283 +6833+3265+898+196+0+160-93-155-131-170+28-133-213-324+34 +sign_ed25519_open selected 49354 378984 +7171+2681+706+385-40+60-342+123-127+0+35-107-364-49-271 +sign_ed25519_open selected 61693 444867 +7782+2563+1133+96-16+175+170+4-75-35-100+0-108-202-105 +sign_ed25519 0 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 0 32 29219 +1657+115-97+0-39+42-21+155-194+43-124+78-51+129-100 +sign_ed25519 0 0 32028 +1572+197-192+133-40-94+0+148-27+90-55-114+40+147-39 +sign_ed25519 0 1 31990 +437-24+63+142+28-35-148-72-47+0-122-111+74+129+96 +sign_ed25519 0 2 32018 +268+132+60-173-24-56+0+13-136-18-43-57+40+97+23 +sign_ed25519 0 3 31999 +298+28+0-66-195+165+212+100-15-122-18-139-105+73+30 +sign_ed25519 0 4 32065 +309+75-55-161+0-9-159+197-124+156+35-166-96+1+132 +sign_ed25519 0 6 32047 +445+0-234+88-104+1-204-173+96+26-46+22-79-92+88 +sign_ed25519 0 8 32020 +509+122+121-5+84-2-114+44+49+0-57-116-107-55+35 +sign_ed25519 0 11 32078 +115-57+0-38-2-106-120+131+81+744+150-54-4+97+34 +sign_ed25519 0 14 31931 +193+82+88-4+51-63-45+109-18-155+58+0-21+268-55 +sign_ed25519 0 18 32048 +686-127+27+20-3-13+158-91+0-86-96+38-74+70+8 +sign_ed25519 0 23 31965 +391+51+8-50-8+30-53+77+0-30-65+22+120-134-5 +sign_ed25519 0 29 31943 +245+213+155-72+3+82+95-16-150+105-26-129-34-13+0 +sign_ed25519 0 37 32004 +419+72-102+14+28-134+0+93-60+179+65-40-189-33-16 +sign_ed25519 0 47 31975 -9-220+0+16+18-23-95-49-62+45+124+140-87+36+53 +sign_ed25519 0 59 32647 +493+64-110+133-67-47+25-154+0-48-42+77+175-70+145 +sign_ed25519 0 74 32765 +442-95-172-1+34+14+0-80+29-199-2+63+49-90+17 +sign_ed25519 0 93 33409 +402-42-89+74+77-39+12+67-37-235+0-170-33+85+6 +sign_ed25519 0 117 33419 +522+13-12+9-54+204+97-124-84+14-206+0+47-126-68 +sign_ed25519 0 147 33427 +415+70+24-28+38-66+19-61+0+12-171-224-33-61+44 +sign_ed25519 0 184 34114 +595+63+45-78+74-179-53-35-77+0-101-71+14+54+10 +sign_ed25519 0 231 34756 +634-91+72-16-19-62+79-6-45+51+99+84+0-49+180 +sign_ed25519 0 289 34848 +182+125+3-71+101-39-106-74+103+112-94+75-85-44+0 +sign_ed25519 0 362 36139 +476+265-86-29-40-26-91+32+252-48+20+113+0+67-62 +sign_ed25519 0 453 36877 +264-22+119+172-3-208+81-39+66+82+196+0-141-90-92 +sign_ed25519 0 567 38237 +310-56+0-107+154-12-4+1019+161-25+123+186-34-112+43 +sign_ed25519 0 709 39565 +460-69+25+0-26+114+47+195-33-189+78-94-56+126-45 +sign_ed25519 0 887 41574 +495+67+0-49-28-34+114-21-38+84-58+11+18+191-81 +sign_ed25519 0 1109 44280 +532+126+7-119+38+0+88+44-41-74-254-65-60+54-77 +sign_ed25519 0 1387 46990 +402-65+6-133-75+176-20-121+0+6-114+32+0+80-127 +sign_ed25519 0 1734 50417 +565+85+223+29+3+116-70-2-80+0+59-2-14-38-120 +sign_ed25519 0 2168 55229 +364+0-125+72+259+63-35-81+83-14+57+257-143-111-93 +sign_ed25519 0 2711 60606 +524+110+26+12+4+0-38-173+104+45-84-14-91-142-149 +sign_ed25519 0 3389 68248 +162+185+0-21-119+92-123-140+173-5+173+107-156-146+73 +sign_ed25519 0 4237 76858 +270+193-24-44+101+103-15+38+0+100-113-34+168-41-6 +sign_ed25519 0 5297 88540 +668+2+27-49-165-210+0-105-51-176+92-47+40+23+32 +sign_ed25519 0 6622 102707 +621-29+120-40-112+159+70-85+0+119+123-67+75-55-59 +sign_ed25519 0 8278 120324 +356+53-54+48-16-194-83-209+119+0+158-172-128+31+28 +sign_ed25519 0 10348 141963 +69-36-101-127+42+198+8-168+239-5+0-51-92+40+30 +sign_ed25519 0 12936 169108 +1708-191+94+139-12-285+0+167-38-142+45+160+50-58-203 +sign_ed25519 0 16171 202821 +541+135+46+246-1-42+491-89-158-29+0+148-69+83-48 +sign_ed25519 0 20214 246386 +351-15-54-365-130+15+20+967+53+0+112+34-23-20-113 +sign_ed25519 0 25268 299800 +643-13-234+107+282+5+202-152+295-75+254-264-39+0-29 +sign_ed25519 0 31586 366793 +1578+300+67+0+29-46+133-191-125-24+17-30+101-62-212 +sign_ed25519 0 39483 450137 +1197+829+416+122-102-152-72-188-319+211-219+0+163+183-337 +sign_ed25519 0 49354 554360 +1605+40+0+172+80-115-199-206-189+20-2-193+679-169+445 +sign_ed25519 0 61693 685405 +1814+583-384-35-96+293+189-161+315+0-499-337+1045+454-533 +sign_ed25519_open 0 0 112988 +8064+2588+1134+464+0+83-393-178-475-179-232+58+46-418-546 +sign_ed25519_open 0 1 113632 +6194+3300+1546+624+422+160-206-280-212-62-76-26-230+0+108 +sign_ed25519_open 0 2 113896 +5351+3494+1618+482+23-171+32+0+296-248-520-503-527-480-532 +sign_ed25519_open 0 3 111984 +5272+2376+1278+944-62+2-26+392-74+220+0-464-348-136-526 +sign_ed25519_open 0 4 112906 +5624+2408+1308+570+710-50+30-18+0+20-181-363-340-264-148 +sign_ed25519_open 0 6 113108 +5811+2956+953+588+260+52-346+0+168-10-102-256-224-372-320 +sign_ed25519_open 0 8 113747 +5800+2575+1297+697+147-123-433+0+76+155-35-238-138-267-303 +sign_ed25519_open 0 11 112764 +5485+2778+1238+950+140+502-124+0-158+374-54-118-40-59-119 +sign_ed25519_open 0 14 112352 +5701+3204+1586+825+141+36+0-356-142-68-114+74-536-504-162 +sign_ed25519_open 0 18 112154 +5893+2968+1364+468-294+0+87+37+34-282-304-356-266-578-338 +sign_ed25519_open 0 23 111206 +6115+3725+1148+456+0-182+230+36+88-315-293-428-264-218-76 +sign_ed25519_open 0 29 113224 +5527+1856+884+692+358+0+14-56+665-310-334-638-648-851-549 +sign_ed25519_open 0 37 112968 +5453+3122+1092+720+100-232-336-186+106+0+24-34-434-636-327 +sign_ed25519_open 0 47 113402 +5979+3818+1884+1320+468+280-102-382-336-388+2-192-106+0-360 +sign_ed25519_open 0 59 112804 +5747+2046+1082+386+0+58-10+18+110-146-252-532-406-654-408 +sign_ed25519_open 0 74 111686 +6162+3576+1342+718+0+190-242-132-146-214-248-40-390+20+16 +sign_ed25519_open 0 93 113211 +5788+3321+1201+1145+321+146+0-151-157-257-233-93-41-191+113 +sign_ed25519_open 0 117 114788 +5150+2236+746+478+12+0-124-110+160-162-278-202-50+37-464 +sign_ed25519_open 0 147 112862 +5954+2752+1454+1014+582-60+27+87-20-376-28+0-46-156-536 +sign_ed25519_open 0 184 113894 +6118+2720+1286+978+362+542+62-70-340-728-274-764+0-166-508 +sign_ed25519_open 0 231 113244 +5250+2446+1068+776+206+338+24+0-74-208-424-548-520-824-582 +sign_ed25519_open 0 289 112848 +6001+2654+1416+668+160-94+0+12+302-148-66-74-266-334-316 +sign_ed25519_open 0 362 114548 +6248+2466+1056+788+66+204+0-60-364-92-62-190-50-236+122 +sign_ed25519_open 0 453 116700 +5725+3102+1568+966+296+54-232-56-256+222-90-208-90+0-262 +sign_ed25519_open 0 567 118042 +6435+3715+1812+1452+576+60+0-34-112+138-44-142-60-192-222 +sign_ed25519_open 0 709 115322 +5959+3196+1642+902+202+196-94-50-36-260-100-140+0-30+102 +sign_ed25519_open 0 887 115658 +6008+3034+1644+1232+540+0-16+130-144-154-470-418+64-456-208 +sign_ed25519_open 0 1109 118786 +5441+2328+794+710+126+126+0-336-194-348-108-298-436+102-364 +sign_ed25519_open 0 1387 121198 +6296+3014+1368+896+370+206+2-108-44+0-266-300-106-284-268 +sign_ed25519_open 0 1734 121752 +6193+2858+1540+610+654+278-190+0-306-310-6-106-120+773-169 +sign_ed25519_open 0 2168 123902 +5889+2902+1680+758+68-150+0-78-58+54+318-16-136-28-312 +sign_ed25519_open 0 2711 126204 +5883+2888+1308+984+334+82+198-180+0-46-134-350-446-708-336 +sign_ed25519_open 0 3389 130026 +5985+2376+972+938-148-114+214+124-2-120+0-280+4-122-164 +sign_ed25519_open 0 4237 136078 +6168+2916+1204+662+66-20-187-119+318-258-318+0+28-203-131 +sign_ed25519_open 0 5297 142187 +6077+2917+1232+690+220+0+461-113-41-261-361-215-195-323+37 +sign_ed25519_open 0 6622 148544 +5985+2028+856+324+26-86+74-174-354-550-288+10+0-48-445 +sign_ed25519_open 0 8278 157954 +6061+1995+1203+524+136+48+0-226-448-384+2-320-370-206-692 +sign_ed25519_open 0 10348 167546 +6364+3212+1649+798+434+163-40+141-228+0-88-333-454-544-164 +sign_ed25519_open 0 12936 183482 +5972+2035+915+584+234+20+0-291+9-38-225-313-210-212-62 +sign_ed25519_open 0 16171 199875 +6095+2292+1397+883-7-63+131+31-91-124+24-478-358-358+0 +sign_ed25519_open 0 20214 221742 +7739+2551+1183+371+26-96+136-67+17-318-203-41-176+0-58 +sign_ed25519_open 0 25268 248854 +6754+2436+959+488+44+84+0-95-139-170-307-235-360-170+96 +sign_ed25519_open 0 31586 283752 +6302+2423+1160+1085+419-20+576+137-106-309-398-360+0-273-107 +sign_ed25519_open 0 39483 326246 +5772+2645+897+435+150+89-344+208+0-324-460-336-384-273-357 +sign_ed25519_open 0 49354 380068 +7417+2244+845+1284-35-102+0-3-390-108+18-8+201+124-88 +sign_ed25519_open 0 61693 446978 +7558+2868+928+32+0+192+289-146-327-130-404-543-420+11-335 +sign_ed25519 1 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 1 32 29151 +819+222+107-14+0-78-103-42-181+56+13-11+93-5+11 +sign_ed25519 1 0 31888 +668+119+81-133+0+4+61-159-18-106+61-23-267-58+101 +sign_ed25519 1 1 31908 +422+35+162-36+6-20-100+59-254-132+0+160+4-62+0 +sign_ed25519 1 2 31888 +226+46-21+13+0-187-14+87+94-77-159-20+96-50+2 +sign_ed25519 1 3 31857 +370+55-153+114+104-112-156-150-81+15+0-108-81+25+107 +sign_ed25519 1 4 31897 +328+49-29+169-108+84-158-301-122+24+121+34+0-186-32 +sign_ed25519 1 6 31898 +137+966+266-88-71-60+6+48+0-146+45-80-87-112+35 +sign_ed25519 1 8 31851 +228-74+68+60-31-154+31+214+124+0-74-31-18+94-48 +sign_ed25519 1 11 31836 +156+5-2-48+212+162+46+52-81-96+95-52-68-75+0 +sign_ed25519 1 14 31877 +450+154+133+0-112-137+16-9-169-32+66+34+102-21-20 +sign_ed25519 1 18 31922 +204-76+0+12-52-43-119-67+85+32-15+25-16+50+111 +sign_ed25519 1 23 31966 +134+60-264+67+36+0-66-230-338+31+129-59-57-220+8 +sign_ed25519 1 29 31962 +257+16+143-22-293+0+43-28-34-155+504+45-143+10-15 +sign_ed25519 1 37 31908 +950-69+44-186-18+67+132-202-104-70+90+148+12+0-7 +sign_ed25519 1 47 31854 +400-4-15-87+92+50+96-49-164-42-46+39+93+59+0 +sign_ed25519 1 59 32613 +140-74-25+113-242+69+107-18+36-77+38-48-155+101+0 +sign_ed25519 1 74 32632 +141+156+0+24-210-63-58+94-100+6-155+63-14+79-138 +sign_ed25519 1 93 33330 +252+197+1+132-53-10-66-159+0+79-95+26-24+5-131 +sign_ed25519 1 117 33399 +418+84-23+132+162-22-47-32+150-175+0+85-179-120+77 +sign_ed25519 1 147 33351 +441-170+0+218-22-161+4+97-46+115+88-80-215-17+104 +sign_ed25519 1 184 34069 +391-22+73-127+42+145+68-116+42-95-19+32-41-138+0 +sign_ed25519 1 231 34640 +396+85-39-18+0+88-7+106-66+70+113-101-6-49+86 +sign_ed25519 1 289 34752 +311+14+74+84+36+43-35-184-26-141-148+0-152+3-86 +sign_ed25519 1 362 36068 +474+79+10+0+90-1-42-9+45-71-129-4-220+178+83 +sign_ed25519 1 453 36766 +477-28+26+0+20-23-14-98+8-90+22+13-36-116+56 +sign_ed25519 1 567 38091 +363-24-73-60+23+35+42+0-49-69-2+78+12-39+89 +sign_ed25519 1 709 39471 +414+0-22-44+89+6+120+64-123-88+32-90+1-19-119 +sign_ed25519 1 887 41447 +662+46+34+0-116+113-2-73-192-10+204+125+8-117-32 +sign_ed25519 1 1109 44230 +414+0-134-45-34+18-138-27+1393+61+32+54+152-23-102 +sign_ed25519 1 1387 46922 +512+61+244-36+59-121-254+200-83-53-97+28-108+31+0 +sign_ed25519 1 1734 50329 +658-100+10+142-215+92-172-17-72+109+50-126+0+52-78 +sign_ed25519 1 2168 55035 +458-15+194+32+1+70+105-48-31-28+0-111+32-85-249 +sign_ed25519 1 2711 60498 +229-85-47-48+60-126+15+0+68+91-22-63+143+167-221 +sign_ed25519 1 3389 68090 +444+0+47+92-56+7-46+3-201-56-25-117+6+160-53 +sign_ed25519 1 4237 76816 +422+98-53-29-289+55+0+306-237+59-20-47-43+118+111 +sign_ed25519 1 5297 88313 +457+0+174-138+80-164-64-33-143+60+7-50-77+15+12 +sign_ed25519 1 6622 102552 +359-43-73+77+1148+116+0-56+178+50+36-48-69-34-91 +sign_ed25519 1 8278 120079 +326-17+75+217+137+119+76+0-77-19-352+0-143-59+27 +sign_ed25519 1 10348 141693 +657+51-119-25-6+268+109-4-46+21+0+81-86+128-77 +sign_ed25519 1 12936 168943 +370-21-22+76+113+264-59+43-130+0+84-88-159+38-118 +sign_ed25519 1 16171 202830 +551-280+55+15-272-182-154-85-185-48+17+0+1971+1140+1022 +sign_ed25519 1 20214 245965 +755+235+122+144-21+63+107-126-18-56+286+0-107-60-184 +sign_ed25519 1 25268 299579 +1606+0-259+65-36+187+150-177+280-66-297-221+5-105+49 +sign_ed25519 1 31586 366499 +1263-108+414+157+788-68+0+216-86-24+112-44+82-140-222 +sign_ed25519 1 39483 449774 +1492+72+13-301-212-218+0+1497+283-215-372+75-108-125+76 +sign_ed25519 1 49354 553921 +1146+261+330+16+399+1728-84-41-78-189+0-14-137-92+618 +sign_ed25519 1 61693 685077 +1812+134-104-169-268+170+0-119+108-283-45+486+303-73+90 +sign_ed25519_open 1 0 111997 +7683+2627+2141+352-83+115-154+0-57+175+111-38-36-99-115 +sign_ed25519_open 1 1 111591 +6732+2683+903+449+0-338-139+207+3+109-71-125-341-452-438 +sign_ed25519_open 1 2 111634 +6050+3058+1066+991+302+104+0-261-98-339-220+155-31-258-122 +sign_ed25519_open 1 3 113574 +5990+2788+1568+665+136+0-197+252-32+198-102-284-176-203-200 +sign_ed25519_open 1 4 113012 +5936+2659+1119+674+330-74+61+0-246-42-63+125-350-5-201 +sign_ed25519_open 1 6 113806 +5362+3086+1368+898+418+0+288+107-192-156-185-320-412-150-140 +sign_ed25519_open 1 8 114002 +5427+2021+957+790+0+60+42-152-6+611-50-18-282-194-38 +sign_ed25519_open 1 11 112181 +5491+3013+1246+775+58-127-123-241+0+79+177-226-57-477-475 +sign_ed25519_open 1 14 113208 +5677+3090+1116+600+354+462+67-53-48-30-258-280+0-166-546 +sign_ed25519_open 1 18 112936 +5988+3259+1709+796+430+44-7-311-438-248+27+0-343-400-590 +sign_ed25519_open 1 23 112570 +5564+2172+1006+607-107+202+212-38+0+18-272-338-180-174-100 +sign_ed25519_open 1 29 113558 +5472+3166+1568+755+43+78-198-194+134+0-142-246-546-554-680 +sign_ed25519_open 1 37 112297 +6033+2271+791+476-50+171-221+90-146+91+0-226-328-606-446 +sign_ed25519_open 1 47 112492 +5863+2360+1132+930+56-74+164-155-153-154-320-273-345+48+0 +sign_ed25519_open 1 59 113567 +5799+2547+1027+579-71+71-140+106-63+11-85+0-360-351-144 +sign_ed25519_open 1 74 113564 +6253+3236+1698+892+216+32-10-214+0+156-244-82-256-424-380 +sign_ed25519_open 1 93 113644 +5558+2240+1002+686+226+168-250+0-452+58-54-264-140-452-341 +sign_ed25519_open 1 117 115297 +5529+2601+967+538-173-146-59+33-74+0-391-105+313-394+16 +sign_ed25519_open 1 147 111987 +6587+3425+1291+657+117+65-209-383-351-490+0-31+113-63-105 +sign_ed25519_open 1 184 114122 +6249+3428+1806+1152+1165+252+254-12-96-186-538+0-136-52-123 +sign_ed25519_open 1 231 115319 +5487+2988+1187+544+0+350-176+285-83+61-234-64-193-345-221 +sign_ed25519_open 1 289 115398 +6244+2567+1259+719-14+430-43+0-226+0-69-11+202-128+210 +sign_ed25519_open 1 362 114404 +6033+2774+1006+582-270+30+336+74-162+0-168-198-526-286-144 +sign_ed25519_open 1 453 114096 +5332+2344+1036+366+246+4-556-236+0-134+68-146-64-258-378 +sign_ed25519_open 1 567 116218 +5844+3274+1530+1322+416-76-52+16+0-130-84-158+62-258-214 +sign_ed25519_open 1 709 116220 +6183+2974+1206+454+150+34+714-548-308-304-168-238-112-20+0 +sign_ed25519_open 1 887 117658 +4703+2366+1100+284+284-70+76-60+150+0-176-150-72-314-288 +sign_ed25519_open 1 1109 120086 +5922+2630+1302+976+240+266+70-78-214-190-14+0-124-30-254 +sign_ed25519_open 1 1387 120732 +5698+2934+2030+944+394+448+0+70-170-400-46-26-136-262-182 +sign_ed25519_open 1 1734 122345 +5329+2928+1439+864+158+260+158-189-12+0-483-451-593-351-327 +sign_ed25519_open 1 2168 123487 +5477+3177+1649+949+263-65-51-329+0+20-189+5-77-89-55 +sign_ed25519_open 1 2711 127322 +5885+2595+1251+535+21+264-20+252+0-493-434-383-445-163-500 +sign_ed25519_open 1 3389 130004 +5645+2980+1492+1178+442-76-60-26-182-278+140+102-72+0-110 +sign_ed25519_open 1 4237 135274 +6251+2841+1184+898+420+304+0+68-8-154-220-164-111-451-196 +sign_ed25519_open 1 5297 142862 +5904+2207+1351+686+0-178-4+192+140+112-24-156-228-144-216 +sign_ed25519_open 1 6622 148212 +6100+2340+1478+1884+549+180+238+0-58-242-296-82-258-48-158 +sign_ed25519_open 1 8278 157526 +8051+3146+1119+1136+450+150+324-112+0-24-136-24-268-58-360 +sign_ed25519_open 1 10348 169212 +6240+3056+1363+965+259+0+39+41-351-159-144-111-223-198-355 +sign_ed25519_open 1 12936 182358 +6083+2792+1422+699+464+962+265-59-62-100-290-144+0-180-12 +sign_ed25519_open 1 16171 198229 +6461+2101+924+803+87-316+127-74+234+0-114-27-229-351-113 +sign_ed25519_open 1 20214 222938 +6388+2576+837+1070+739-53+0-249-497-116-20+596+9-19-279 +sign_ed25519_open 1 25268 248647 +6487+2820+1110+610+250+220+0+31-182-416-437-213-150-388-323 +sign_ed25519_open 1 31586 284221 +6593+4015+1082+694+542-97-232-57-209+52-220-227-66+0+139 +sign_ed25519_open 1 39483 326820 +5942+2580+902+803+80-29-101+197-484+469+0-314-269-349-143 +sign_ed25519_open 1 49354 379344 +6222+1880+803+158+0-219-296-701-771-339-114+208+23+30-273 +sign_ed25519_open 1 61693 447174 +6520+2055+1454+656-2-119+1939+676+21-164-350-299-189+0-177 +sign_ed25519 2 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 2 32 29137 +1162+73+0-2-66-69+55-15+87+9-91+32+13-45-176 +sign_ed25519 2 0 32010 +1541+111+0+116-56-60-93-58+88-79-37+72+23+91-119 +sign_ed25519 2 1 32065 +367+92+205+43-98+32+208+70-116-22-97-6-56-148+0 +sign_ed25519 2 2 32030 +304+101-178-82+24-65-46+108+106-17+0+74-30-50+85 +sign_ed25519 2 3 32075 +75+146+154+27-206-45+20+60-236-225+9+0-4-26-42 +sign_ed25519 2 4 32076 +401-124+19+47+44-72-46-8-104+37-14+9+0-88+178 +sign_ed25519 2 6 32023 +393+109+130+154+0-129-159+23-40+22-97-1+87-109-100 +sign_ed25519 2 8 32049 +109+30+67-105-19-209-25+11+67-186-4+97-16+53+0 +sign_ed25519 2 11 32061 +293+85-29-7-36+0+145-122+57+1+58-53-36+19-56 +sign_ed25519 2 14 32019 +232+123-19-58-151-124-2-90+0+163+24-81+188+233+110 +sign_ed25519 2 18 32054 +306-92+128+6-41-102+0-84+134-30-108+53+101-138+17 +sign_ed25519 2 23 32046 +281+117+120-54-61-38+55-133-134-10+100+0-155+122+161 +sign_ed25519 2 29 32024 +271-8-148+1+56-33-143-15+0-40-59+24+120+136+36 +sign_ed25519 2 37 32088 +282+87-28+208+11-57+58-6-131-182+0-78+29+26-115 +sign_ed25519 2 47 32064 +581+56+151-151-138+29+175+89-71-3+0-57-41-160+143 +sign_ed25519 2 59 32761 +473+205-143-49+0+9+2+90+39-164-46-77-87-85+22 +sign_ed25519 2 74 32712 +236-36+104+195-2-34-89+70+1118+162+0+138-28-96-33 +sign_ed25519 2 93 33420 +302+38+155-42+219+20-30+0-56+56+252-86-58-296+0 +sign_ed25519 2 117 33463 +294+51+120-126-7+35-129-42+88+0-124+24+93-64-66 +sign_ed25519 2 147 33468 +254+113+159+0-157-48-98-21-72+33+125-32+78-139+181 +sign_ed25519 2 184 34150 +271+263-4+105+0-108-129-160+14-24+111+234-92-32+6 +sign_ed25519 2 231 34839 +509+35+45-10+43+3-85-61-6+0-58+2-112+3-55 +sign_ed25519 2 289 34854 +412-24+200-107+78+0+114+0-141+140-136-100-39+32-144 +sign_ed25519 2 362 36239 +536+80-50-144+68-196+34-38+31+42-124+0+72-176-28 +sign_ed25519 2 453 36791 +404-17+88-20-38+16+0+101+171-12+223-151-85+42-31 +sign_ed25519 2 567 38255 +338+115-154+0+120+166-215+56+120-32-43-30+167-95-117 +sign_ed25519 2 709 39564 +467-58+102+67-78-89+25+0-50+95+339-25+27-8-30 +sign_ed25519 2 887 41592 +639+20+36+25+169-20-251+71-5-40-6-89+0+93-39 +sign_ed25519 2 1109 44321 +376+152+0-125-146+19-171-111-82+36+13+21+17-21-189 +sign_ed25519 2 1387 47110 +534-237+40+63+53+3-183-115-46+0-65+8-84+105-82 +sign_ed25519 2 1734 50471 +523+194+7-93-46+50-90-90+204-270+13+0-12-26+79 +sign_ed25519 2 2168 55203 +592-49-25+215-46+0-6+14+23+55+66-90-152+25-75 +sign_ed25519 2 2711 60688 +495-28+305+16-130-24-20-132-304+74+68+1-10+102+0 +sign_ed25519 2 3389 68227 +412+36+153+140+49-15+84-58-143-194+0-11-63+138-139 +sign_ed25519 2 4237 76927 +400+54-69+99-20-42+147-23+99-119-153+0+163+58-116 +sign_ed25519 2 5297 88518 +222+140+168-77+112+149-27-196+0-121-139+284+99-78-26 +sign_ed25519 2 6622 102677 +384+179+112-68-98-213+154-48+69+168-118+24+0-22-70 +sign_ed25519 2 8278 120179 +226-243+786+367+185-28+89+49-71-127-96+151+0-175-118 +sign_ed25519 2 10348 141978 +475+90+47-49-24+110+60+0-127+22-45-40-109-19+18 +sign_ed25519 2 12936 169019 +433+68-131+21+123-95+74-139+0-100+288+22-164-43-175 +sign_ed25519 2 16171 202854 +241+95-155+288+429-264+192+46+0-122-31-51+71-158-127 +sign_ed25519 2 20214 246128 +811+0+1+45-143+138-14-33-23-241+41-175+7-179+96 +sign_ed25519 2 25268 299793 +717+1253+908-253+0+196+61-99-216+40-330-119-182+49-170 +sign_ed25519 2 31586 366669 +1307+0-101-146+72+193-170+117-104+41-77+803+2-324-205 +sign_ed25519 2 39483 449967 +930+0-429-147-233-98+16+23+378+6-453-525-39+909+8 +sign_ed25519 2 49354 554169 +1152+299-8+0-169+4-225-564+182+1154+916-109-374+111-175 +sign_ed25519 2 61693 685207 +1060+597+982+1326-40+330+50+860-353-105-314+0-112-301-184 +sign_ed25519_open 2 0 112886 +7777+3638+1644+820-52-18+0-64+22-359-125-18+130+172-180 +sign_ed25519_open 2 1 114247 +6185+3182+1407+1299+661+483-139-299+768+0-268-164-111-281-55 +sign_ed25519_open 2 2 113566 +5970+2726+1180+786+368-66+150+166+0-308-104-236-70-318-220 +sign_ed25519_open 2 3 113540 +5614+2920+1741+745+410+330+0+158-216-94-224-238-204-386-182 +sign_ed25519_open 2 4 112314 +5982+2754+1896+1012+60-32+22-368+140+0-138-641-323-344-12 +sign_ed25519_open 2 6 111674 +5917+2589+1238+652+270+224+66-152-202+0-190-122-20-14-450 +sign_ed25519_open 2 8 113034 +6734+2266+1436+1145+485+138-98-186-32-232+0+216-294-274-284 +sign_ed25519_open 2 11 113294 +5688+1900+1082+598-376+0-273-213-86+22+66+90-24-166-384 +sign_ed25519_open 2 14 113180 +5483+2322+1106+504+0+26+46+322-196-28-130-204-96-230-90 +sign_ed25519_open 2 18 113312 +6074+2228+1024+968+194+118+88-48-106+0-206-346-328-485-339 +sign_ed25519_open 2 23 112826 +5545+2626+904+614+108+4+132+0-172-306-492-261-615-494-382 +sign_ed25519_open 2 29 112486 +5243+2662+1270+940+352+34+72-148-486-258-413-73+0-132-110 +sign_ed25519_open 2 37 113186 +5955+2895+1386+1110+448+134+74-78-112-578-374-122-40+0-58 +sign_ed25519_open 2 47 111468 +6326+3061+1266+642+664+104-204-320-302-146-108+0+56-42-116 +sign_ed25519_open 2 59 114786 +5556+2699+1812+1392+806+189+4+0-68-245-359-380-388-226-596 +sign_ed25519_open 2 74 113478 +5916+1965+1222+324+378+142-18+0-236-104-308-422-268+38-274 +sign_ed25519_open 2 93 114568 +5971+2155+1006+526+0-67+131-344+84+62-44-400-366-350-640 +sign_ed25519_open 2 117 113684 +6035+2716+1364+872+64-50+8+0-44-16-100-168-108+20-564 +sign_ed25519_open 2 147 113662 +6563+2691+1384+980+44-62+56+0+100-314-118-352-164-518-448 +sign_ed25519_open 2 184 113958 +6159+2695+1400+860+214+62-92-86+28+0-34-290-244-438-494 +sign_ed25519_open 2 231 113021 +6111+3276+1841+1169+557+1-497-325-387+378-491-439-294+0-95 +sign_ed25519_open 2 289 115622 +6089+3155+1626+1112+744+0+120-18-428-232-68-110+82-346-98 +sign_ed25519_open 2 362 114714 +6338+3342+1678+1046+408+106-70-118+0-134+18-90-68-164-290 +sign_ed25519_open 2 453 115072 +6198+2884+1234+912+358+0+32+188-64-154-329-196-657-412-262 +sign_ed25519_open 2 567 116134 +5963+2108+1410+1146+430+340+206-226-40+0-372-272-716-372-598 +sign_ed25519_open 2 709 116252 +5637+3193+1096+506+332+144+0-238-72-192-106-204+36-124-136 +sign_ed25519_open 2 887 116850 +6730+3334+1872+1362+560+202-48+0-22-296+468-542-424-388-478 +sign_ed25519_open 2 1109 118429 +5823+2641+1349+853+47-75-204+0-67-317+99+3-101-363-213 +sign_ed25519_open 2 1387 120576 +6280+3370+1896+1402+198+38-58-124+82-86+0-72-70-268-56 +sign_ed25519_open 2 1734 120776 +5628+2580+960+734+380+292+0+336-4-2-116-2-22-2-154 +sign_ed25519_open 2 2168 124874 +5847+3612+1518+988+454+0-58-88-48-56-82-202+254-190+28 +sign_ed25519_open 2 2711 127758 +5848+2548+1340+342-54-44+48+46+56+0-462-190-134-66-162 +sign_ed25519_open 2 3389 132082 +5915+2984+1472+996+576-50-66-200+0+260+118-192-478-188-138 +sign_ed25519_open 2 4237 135102 +5632+2761+1085+302+276+66-22+22+0-248-408-192-202-195-141 +sign_ed25519_open 2 5297 143164 +5864+2420+1206+612+116+0-52-50-12+114+20-222-178-194-62 +sign_ed25519_open 2 6622 149862 +5814+2428+987+624+24+70-44+0-98+42-120-58-126-62-258 +sign_ed25519_open 2 8278 157452 +6342+2978+1056+496-38+58+164+196-34+0-304-172-186-210-552 +sign_ed25519_open 2 10348 168141 +6048+3119+917+389-18-2+407-34+0+28-44+8-184-10-74 +sign_ed25519_open 2 12936 181887 +5444+2800+1123+500+223+145+0+8-64-254-264-378-93-312-322 +sign_ed25519_open 2 16171 198165 +7007+2125+1000+571+41+275+0+52-88-127-188-83-104-6-266 +sign_ed25519_open 2 20214 222081 +6212+2558+1287+587+113+135-132+142+0-308-185-380-119-163-198 +sign_ed25519_open 2 25268 248674 +6613+3226+2108+1178+611+248+396-81+0-272-81-259-318-172-144 +sign_ed25519_open 2 31586 283858 +6554+1768+867+208-93-192-680-26-113+96+1252-330+301+0-167 +sign_ed25519_open 2 39483 328431 +5909+1802+843+361+267-193+0+45-125-426-119-326-330-240+90 +sign_ed25519_open 2 49354 380109 +6529+2186+562+49-126+0+167-107-102-73+13-127-344+91-592 +sign_ed25519_open 2 61693 446464 +7493+2614+1070+766+473+34-131-133+0-274-178-332+612-389-419 +sign_ed25519 3 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 3 32 28999 +1259+157-18+0+38-33-58-63-5-48+80+63-86+185+50 +sign_ed25519 3 0 31992 +914-21-143-106+111+2-27-157+52+169-157+112+0-29+137 +sign_ed25519 3 1 31958 +393+53-108-101+0+233-102+153+1195-59-43+102+144-38-58 +sign_ed25519 3 2 31970 -65-41+73+124-142-76+14-36+49-61+0-32+89+91+59 +sign_ed25519 3 3 31916 +140-166-142+118+224-55-40-50+214+246+50+48-14+0-22 +sign_ed25519 3 4 31982 +367+96-65-89-32+138+0+73-160-178-189+51+69+6-94 +sign_ed25519 3 6 31984 +77-62+145+194+102-5+0+22-4+147+64-139-45-50-22 +sign_ed25519 3 8 32003 +372+0-82-150+98+129+217-130+10-153+103+21-150-43-112 +sign_ed25519 3 11 32018 +260+51+41+37-102-200-124+28+0-15-89-99-20+83+113 +sign_ed25519 3 14 31955 +385+32+0+14+127+48-171-148-41+134-50+260-107-163+0 +sign_ed25519 3 18 31980 +242+132+3+0-184-142+199+236+135-58-258-106-56+147-189 +sign_ed25519 3 23 31964 +100+2+0-49+177-89-83-235-242+55+68+189-46-217+131 +sign_ed25519 3 29 31979 +75+14-3+107-42-263-93+48-47+0-149-28+42+50+87 +sign_ed25519 3 37 31991 +440+74-7+9+98-226+0-225+33+123-161-263-255+39-9 +sign_ed25519 3 47 31926 +298+213-51-23-41+0+78+40-56+66+33+164-224-167-133 +sign_ed25519 3 59 32643 +97-89+2+42-120+0+39+107-17-135+53-39-67-131+29 +sign_ed25519 3 74 32672 +297+48+21-324-9+35-87+81+0+79-30-18-154+74-57 +sign_ed25519 3 93 33445 +1090+127+30-79-190+20-170-221+23+37-166+4+0-185-30 +sign_ed25519 3 117 33439 +380+51-54+0+0-176-67-131+126+212+5-35-12+126+38 +sign_ed25519 3 147 33411 +229-185+19+40+4-83+61-18+10+8-28-150-84+0-35 +sign_ed25519 3 184 34093 +255-6+1186+165+69-185-100+27+0-89-46+1-161+35-1 +sign_ed25519 3 231 34754 +284+11+109+193-2-86+36+0-42-85-166+148-117+76-144 +sign_ed25519 3 289 34755 +486-12-242-13-78-115+39+154+28+45-117-48+0+342+55 +sign_ed25519 3 362 36126 +460-4+111+49+0-127-110+50+76+100-27-72+24-45-315 +sign_ed25519 3 453 36809 +496+0-34-165-106+206-18+95-136+48+147+16+40-19-8 +sign_ed25519 3 567 38121 +354+65+59+0-46+113-63-82-1-75+74+43-168+53-16 +sign_ed25519 3 709 39533 +464-156+130-101-161+141+35-28-243+98-6+48+0-90+45 +sign_ed25519 3 887 41535 +559+190+58-102-58+95+127+198+0-52-71-20-29+12-77 +sign_ed25519 3 1109 44224 +624-62+18+90-13+11-74-150+0-46-146+127-133+141+20 +sign_ed25519 3 1387 46997 +744-111+8-120+11+3+0-193-15-161+34+29+2-99-6 +sign_ed25519 3 1734 50397 +460+82-31+34+66-169-20-133+81-59+76+162-25+0-60 +sign_ed25519 3 2168 55097 +417+194+139-142-18+22-27-135+190-95+31+203-94+0-37 +sign_ed25519 3 2711 60521 +601+51+199+248-108+53-201+31-4-74-89-110-94+0+1214 +sign_ed25519 3 3389 68174 +504+215+111-112-85+21-111-147+16-34-173+16+25+0-215 +sign_ed25519 3 4237 76860 +287-41-12+210-139-20+59-56+54+111-43+161+0+267-101 +sign_ed25519 3 5297 88414 +363-39-73+0-51+108+28+113+80-101-140-2+110+86-51 +sign_ed25519 3 6622 102580 +430+17+185-123-63+8+0-43-26-149-80-29+59+73+98 +sign_ed25519 3 8278 120230 +138+1-2+0-143+84+68-27+130-2+134-101-10-46+145 +sign_ed25519 3 10348 141767 +553+201+0-208-14+100-51-3+82-110+98+305-148+0+84 +sign_ed25519 3 12936 168975 +194-24+161+25-2+94-245+162+0+24-227-124-309+22-95 +sign_ed25519 3 16171 202803 +580-66-98+118-181-23-228+37-98+36+34+0-88+73+126 +sign_ed25519 3 20214 246257 +1110-281-293+18-161+74+0-249-86+83-92+84+21-281+122 +sign_ed25519 3 25268 299604 +902+14-389-70-226+370-206+29-178-318+1108+157+51-169+0 +sign_ed25519 3 31586 366474 +879+37-100+0-399-141-174-438+32+50-371-302+98+251+69 +sign_ed25519 3 39483 449692 +1823+191-148-79+8+573+0-48+162+647-157-216-54+29-24 +sign_ed25519 3 49354 554285 +1623+123+419-405-347+312-329-212-548-215+284-649+0+59+1146 +sign_ed25519 3 61693 685286 +865-147+206-111-294+133+1081+1107+92-525-206+0+295-293-425 +sign_ed25519_open 3 0 111852 +7988+3383+1233+506+204+176+0-62-92+2-200-84-34-206-54 +sign_ed25519_open 3 1 113302 +6215+2264+646+566+126-30-80-182+122-326-130+16+0-226-198 +sign_ed25519_open 3 2 111222 +5678+2277+895+263+13-74+0+106-24-233-98-137+42-96-208 +sign_ed25519_open 3 3 111832 +6689+3044+1350+396+234+267+211+0-312-14-222-474-160-4-208 +sign_ed25519_open 3 4 113282 +6294+2926+1338+1010+420+14-162+0-162-66-62-98-34+28-104 +sign_ed25519_open 3 6 112452 +5348+2144+1404+686+108-156+0+182-258-258-448-358-312-158+12 +sign_ed25519_open 3 8 113126 +5874+2274+1144+874+0+94-22+384-88-248-78-56-328-184+156 +sign_ed25519_open 3 11 113524 +5697+2348+1190+754+128+202+0+90-38-504-174-100-290-440-352 +sign_ed25519_open 3 14 113434 +6670+2980+932+778+356+0+266+36-118-314-258-306-202+0-146 +sign_ed25519_open 3 18 112930 +5895+3170+1002+484+186+687+0+112-192-46-214-194-352-406-424 +sign_ed25519_open 3 23 112812 +6287+2640+1246+118+0-58-164+210+56-428+39-59-290-206-134 +sign_ed25519_open 3 29 114328 +5985+2425+701+544+364-68+1835+0-144-130-192-214-60+246-238 +sign_ed25519_open 3 37 112756 +5862+3346+1454+762+0+54-78-58-221-245-347-269-34+102+162 +sign_ed25519_open 3 47 113002 +5907+2102+1080+390+264-106-332+0-244+20-38-298-244+128-402 +sign_ed25519_open 3 59 112720 +5900+3410+1818+1302+214+140-104-306-508-562-124-288-402+0+146 +sign_ed25519_open 3 74 113618 +6188+2322+1524+582+154+246-444+0-622-826-744+27-454-610-542 +sign_ed25519_open 3 93 114616 +6085+2866+1520+1132+84-190+0-14-60-84-258-88-192+60+42 +sign_ed25519_open 3 117 114832 +6075+2671+1288+1070+369+0+172+258-62-40-70-222-44-108-654 +sign_ed25519_open 3 147 113840 +6281+3276+1882+914+350+438+252-130-136-144+0-120-192-122-68 +sign_ed25519_open 3 184 113628 +6041+3460+2096+752+192-2+152-146-44-184+250-124+0-398-492 +sign_ed25519_open 3 231 114996 +6664+3261+1925+1504+352-86-51-302-85+0-158+188+10-48-375 +sign_ed25519_open 3 289 113026 +6056+2852+1264+1074+426+118+384+0-280-272+0-254-288-148-374 +sign_ed25519_open 3 362 114278 +6314+2759+986+508-126-240+48-44+54-60-296+104-34+0-322 +sign_ed25519_open 3 453 115922 +6038+2762+1267+453+327+143+124-70+0-122-190-168-192-266-620 +sign_ed25519_open 3 567 116190 +6352+2298+1178+1066+426-172-164-146+0+166+120-84-222-158-444 +sign_ed25519_open 3 709 118118 +5432+2904+1154+705+17-66-138-38-156+40+113-175-88-234+0 +sign_ed25519_open 3 887 115824 +5912+2994+1392+1016+304+414+120+0-238-104-116-44-192-196-292 +sign_ed25519_open 3 1109 119798 +6344+2111+1293+490-64+46-72-152+0-66+180-2+162-162-376 +sign_ed25519_open 3 1387 121120 +5344+2604+1068+878+0+32-168-48-72-184+212-44-66-144+232 +sign_ed25519_open 3 1734 122464 +5781+2804+740+656+174+26-182-180-44+50+0-200-166-142-138 +sign_ed25519_open 3 2168 124612 +5837+2438+970+808+0+80-214-224-440-280+132+44-310-354-348 +sign_ed25519_open 3 2711 127728 +5572+3640+1958+988+100+128-292-82+102-252+0-278-230-74-98 +sign_ed25519_open 3 3389 130408 +6171+2416+1174+916+500+200-35-121-196+0+50-228-260-500-480 +sign_ed25519_open 3 4237 136954 +5958+2890+1280+880+412+332-8-216+0-2-298-94+126-202-210 +sign_ed25519_open 3 5297 142112 +5734+2320+908+666+376+68+10-348-118-564-446-270-124-334+0 +sign_ed25519_open 3 6622 149842 +5508+2306+1212+912+218+194-136+0-180-84+136-114-196-144-398 +sign_ed25519_open 3 8278 157208 +6490+2704+1364+954+432-120-46-154+154+0-112-468-170-184+328 +sign_ed25519_open 3 10348 167024 +7141+3616+1766+1166+548+366-110-308-8-50+178-280+0-128-232 +sign_ed25519_open 3 12936 182780 +6017+3009+1665+975+386+158+0-106-226-268-4+0-462-386-308 +sign_ed25519_open 3 16171 199054 +6581+2911+1415+603+234-270+869+0-330-157-365-518+51-70-168 +sign_ed25519_open 3 20214 221563 +6512+2375+1239+527+466+36-165-133+0-101-115-166-502+224-401 +sign_ed25519_open 3 25268 249918 +5745+2487+729+966+969+409-62+49+0-62-399-461-208-58-530 +sign_ed25519_open 3 31586 283657 +5818+1888+987+706+11+158-345-137+39-313-16-216+0-312-233 +sign_ed25519_open 3 39483 325279 +6159+1933+698+395+236-45-203+24-478+34-272-433-237-388+0 +sign_ed25519_open 3 49354 380761 +6078+2064+808+147+187-293-160-296+221+27+0-415-196-257-410 +sign_ed25519_open 3 61693 447607 +6740+2505+692+588+52-380-160+90+0+50-363-231-565-356-8 +sign_ed25519 4 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 4 32 29117 +923+192-47+4-168-70+10+0-130-114-23+66+24+104-88 +sign_ed25519 4 0 32021 +1190+176+53-35-200-27+48+0-65+94+99-103-22-96+59 +sign_ed25519 4 1 31960 +619-76-51+53+0-142-229-57+3+186-91+33+81-53+0 +sign_ed25519 4 2 32084 +121-211+14+80-87+9+0+46+127-275-6+123-106-333-43 +sign_ed25519 4 3 31989 +396+78+182-147-78-107+56-128-112+36+65+0-75-13+3 +sign_ed25519 4 4 32021 +376+95+9-102+55+25-146-62-76+43-28+0+83-95-51 +sign_ed25519 4 6 31961 +197-76+43+0-47-169-81+1360+222-26-236+77+45+166-19 +sign_ed25519 4 8 31945 +249+193-58-85+16-214+57+51-59-125-8+96-23+0+11 +sign_ed25519 4 11 32002 +412+27-61+109+0+44-65-160-122+52+102-53-43-50+10 +sign_ed25519 4 14 31959 +238+89+61-203+1+0-151-71-121-88+1-103+25+9-6 +sign_ed25519 4 18 31924 +165-40-23+0-55+90-41-9+13+48-37+89+97+68-29 +sign_ed25519 4 23 31903 +362+95-73+153+204-47-107-43-46+58-25+0+58+162-16 +sign_ed25519 4 29 31959 +166+23+91+111-164-25+62-70+41-24-10-75+45+0-113 +sign_ed25519 4 37 32000 +320+90+0-135-120+48+3+78-174+6-261-53-170-173+42 +sign_ed25519 4 47 31925 +102+43-123+142-61-140-61-82+0-68+115+58+133-55+90 +sign_ed25519 4 59 32626 +509+58-123+97+0-62+67+29-93-149+42+156-106-37-60 +sign_ed25519 4 74 32709 +246-14-80+97+23-82+60+112-51-108+86-55+0-60+53 +sign_ed25519 4 93 33393 +694+31+217-165+16-106+0+38+46-69+25-72-44-131-174 +sign_ed25519 4 117 33406 +664+168+37+18-22-45-130+78-16-65+148+160+0-66-138 +sign_ed25519 4 147 33379 +240-110+0+17-58-177-114-30+178+245-81+143+46-119+33 +sign_ed25519 4 184 34024 +397+2+45+0-67+226+29+54+31-29-15-67-23-37-84 +sign_ed25519 4 231 34733 +498-8+43+118+2+6-41-30+0-67+163-86-13+112-59 +sign_ed25519 4 289 34815 +173-186+57+10-45-124-84-70+39+49-74+18-83+0+120 +sign_ed25519 4 362 36142 +374+78+67-76-171+0-108+2-31+119-140+869-73+51-185 +sign_ed25519 4 453 36796 +292+157-89+0+277-204+33-6-25+47-110-133+223-15+26 +sign_ed25519 4 567 38235 +160+33+57-2+65-59+30+30-10-103-148+0+88-115-20 +sign_ed25519 4 709 39567 +418+0+15-144+107-30+24+34-44+54-23-24-103+26-70 +sign_ed25519 4 887 41560 +289+68+80-117-134+62+17+0-34+107-91-43-23-71+21 +sign_ed25519 4 1109 44341 +472-61-14+71-113-86+30+57-59+209-72+21+0-85+42 +sign_ed25519 4 1387 46973 +384+160-61-180+66+0+116-71-147-89+47+65-125+9-26 +sign_ed25519 4 1734 50361 +576-127-14+238-170-25+0-17+1+70+59-31+33-114+128 +sign_ed25519 4 2168 55163 +431+20-199+90+0+7+8+3-61-119-272-93-75-112+40 +sign_ed25519 4 2711 60585 +430+191+99+0-1+234-138-134-110-98+183+175-121+32-176 +sign_ed25519 4 3389 68190 +555+255+278+192+0-31-169-66+42-7+127-118-64-181+47 +sign_ed25519 4 4237 76926 +334-103-121+57+2+540+120-43-153+55+0-88-55+139-25 +sign_ed25519 4 5297 88483 +404-142-11+166+56-21+54-35+90-223+103-95-64+0+135 +sign_ed25519 4 6622 102785 +343+58-149+97-59-90+97-122-202+7-114-164+140+0+37 +sign_ed25519 4 8278 120147 +497+134+148-66-14-42-142-23+190-16-32+72+108+0+23 +sign_ed25519 4 10348 141959 +348-84+43+0+107+22-90-257+61-287-253+92-200-169+30 +sign_ed25519 4 12936 169065 +601+3+2+74+26-156-203+38-38+34-261+0-228-30-131 +sign_ed25519 4 16171 202811 +547+0-10+60+254-221+197+81-50+203-192-18-24+4-194 +sign_ed25519 4 20214 246272 +366-247+1155+95-143-64+3+59+69-82+32+0-76-166-138 +sign_ed25519 4 25268 299814 +465-257+62-153+176-245-155-115+206+0-257-11+197+117+94 +sign_ed25519 4 31586 366638 +1443+183+313-75+0+46+193-127-26-3-141-170+154-100+8 +sign_ed25519 4 39483 449846 +1712+320+0-265-121+105+159-245+89-39-6-210+146-17+48 +sign_ed25519 4 49354 554043 +1805+687+0+62-121-231+103+119+209-173-180-125-257-65+29 +sign_ed25519 4 61693 685382 +1506+465+19-508-339+0-105-268+447-102+1612+415-140+154-181 +sign_ed25519_open 4 0 112082 +6909+2539+918+483+0+234+80-10-24+282-66-70-345-469-300 +sign_ed25519_open 4 1 112018 +6076+2378+1064+384+124-228-110-172-198-251-153-56+0+370+10 +sign_ed25519_open 4 2 113008 +5424+2945+1520+936+424+248+266-82-236+0-440-104-176-242-180 +sign_ed25519_open 4 3 111742 +6483+3427+1476+614+214+334-14+350-130-608-250+0-280-116-224 +sign_ed25519_open 4 4 112617 +5411+2335+1019+825+341+145+711+0-213-343-333-465-377-479-169 +sign_ed25519_open 4 6 112830 +5531+2567+882+632+234+188-100-232-2-80-232+0-44+2-26 +sign_ed25519_open 4 8 113424 +5344+2938+1170+462+282-140+114+410-56-204-298-388-368+0-22 +sign_ed25519_open 4 11 112486 +6084+3627+1150+907+16+158+114+0-2-242-396-238-264-236-20 +sign_ed25519_open 4 14 113090 +5974+2808+1392+364+272+0+22-216+152-314-368-488-692-466-408 +sign_ed25519_open 4 18 113968 +5396+2164+1334+886+126-188-344+0-152-98+46+104-416-296-278 +sign_ed25519_open 4 23 113636 +5716+2636+1200+474+238+0-302-314-132-42-200+62+190-328-378 +sign_ed25519_open 4 29 113814 +5275+2730+1172+714+52-118-414-4-134-114-160+92+160+0-446 +sign_ed25519_open 4 37 112878 +5655+3154+1164+1176+270-118-112-300-130-118+230+24+0-60-306 +sign_ed25519_open 4 47 114278 +5772+2915+1550+1012+458+208+112-90-328-388-368+0-344-110-68 +sign_ed25519_open 4 59 112572 +6250+2642+1344+372-12+412+72+0-244-501-551-144+26-92-220 +sign_ed25519_open 4 74 113414 +5744+2946+1568+1104+698+212+284-42+0-156-206-296-304-376-392 +sign_ed25519_open 4 93 112180 +5528+2387+870+304+278+90+6-166-358-482-282-80-222+0-116 +sign_ed25519_open 4 117 113762 +5315+3066+873+507+0+8-112+92-160+232-308-342-562-484-682 +sign_ed25519_open 4 147 113710 +6425+2582+830+582-64+0-472-346-382+26+56+14-454-396-556 +sign_ed25519_open 4 184 114516 +5265+3665+1668+1126+114+54-158-46-48-116-60-18+0-112+36 +sign_ed25519_open 4 231 116631 +5258+2331+931+499+0-6+137-153+61-23-79-101-17-357+7 +sign_ed25519_open 4 289 114992 +5875+2488+1136+534+336+202+0+476-312-276-360-300-444-278-299 +sign_ed25519_open 4 362 115358 +6206+3267+1922+1360+324+268-56-518-42-294-42+36+0-284-74 +sign_ed25519_open 4 453 113707 +6520+3275+1745+671+923+0-403+23-153-387-65-129+5-95-453 +sign_ed25519_open 4 567 116410 +6375+2792+1236+606+468+0+200-74+90-130-42-294-392-310-400 +sign_ed25519_open 4 709 116720 +6116+1660+912+488+162-86-32-16-58-214-254+10+6+0-168 +sign_ed25519_open 4 887 117182 +5838+2588+858+446+0+242-124+204-176-150+20-446-466-586-398 +sign_ed25519_open 4 1109 118447 +6056+2803+1318+776+281+0+17-298-50-114-181+27-3-273-259 +sign_ed25519_open 4 1387 118892 +6575+3432+1572+666+434-84+138-38+98-220-246-256-452-98+0 +sign_ed25519_open 4 1734 121280 +6018+3297+1559+1004+526+468-38-136+0-190+166-176-298-288-438 +sign_ed25519_open 4 2168 126549 +5192+2125+943+315+396+0+211+177-403-139-431-809-759-635-949 +sign_ed25519_open 4 2711 126032 +5763+2282+864+626+384+112+98-36-20-36-500-284+0-344-408 +sign_ed25519_open 4 3389 132996 +5497+2962+1124+596+280+100+0-168+6-258-234-174-124-301-231 +sign_ed25519_open 4 4237 134720 +6645+2552+1066+618-24+0+44+106-134-142-312+28-260-408-124 +sign_ed25519_open 4 5297 140840 +6640+3108+1072+588+0+332-18-186-274-208-258+12+62-348-610 +sign_ed25519_open 4 6622 147866 +6627+2452+1183+833+14+14+84-50-132-374-172-240+0-174-264 +sign_ed25519_open 4 8278 155404 +6668+2630+872+396+356+178-78-76-210-344-316-176-370+0+90 +sign_ed25519_open 4 10348 168290 +6311+2060+900+371+0+87-83+1062+88-152-134-664-714-442-383 +sign_ed25519_open 4 12936 182691 +7062+2960+1060+782+24+215-127-7-181-246-418+60-137+0-203 +sign_ed25519_open 4 16171 199271 +6799+2882+666+193+117-43+10-73-14-163-207-172+0-477+21 +sign_ed25519_open 4 20214 220847 +6783+2258+1297+436+940+48+230-172-110-267-60-96+0-369-167 +sign_ed25519_open 4 25268 247821 +6724+2866+1729+1327+524+582+0-190-11-248-144-21-145+172-69 +sign_ed25519_open 4 31586 283777 +6919+2552+1140+500+238+0-299+130-361-308-106-372+120-549-211 +sign_ed25519_open 4 39483 327127 +7282+2733+1592+1142+98+592+31-45-188-95-225-309+0-457-212 +sign_ed25519_open 4 49354 379934 +7746+2435+607+552+314+124-30+0-329-217-241-136-264-269+77 +sign_ed25519_open 4 61693 445710 +7558+3262+1758+964-179+76+293+0-71+119-233-311-504-285-200 +sign_ed25519 5 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 5 32 29149 +1975+194-27+19-177+28-3-89+13+5+0+105-59-15-126 +sign_ed25519 5 0 31913 +1173-39-107+24+0+71-16-120+0+1+24-50-87+9+161 +sign_ed25519 5 1 31969 +567-21+17-155-131+86+73+72-116+0+65+35-51-147-87 +sign_ed25519 5 2 31978 +167+104+59-198+51+31-9+0+73-47-19-17+119-16-56 +sign_ed25519 5 3 31933 +8+12+80+0+62-53-86-25+24-58-119-189-52+83+123 +sign_ed25519 5 4 31996 +344-66+165-79-39+0-171-115-160+2+15+13+91-59+86 +sign_ed25519 5 6 31952 +413+58+182-14+0-221+0+61-193-36+93-165+79+39-12 +sign_ed25519 5 8 31963 +214+17+131+171-13-107-134-37+54-74+0-293-77+134+23 +sign_ed25519 5 11 31912 +161-111+0-29+187+143+148-129+0+112-26+3-2-153+117 +sign_ed25519 5 14 31983 +106-180+70-19-112-166+119+55-9+152+73+0+127-69-109 +sign_ed25519 5 18 31986 +117-109+16+151-67+28-52+102+1121+217+0-70-118-60-50 +sign_ed25519 5 23 32016 +255+14+0-44+150+237+17-223-4+25+70-190-270-73-26 +sign_ed25519 5 29 31940 -142+34-107-4-120-67-53+114+200+0+100+121+296+10-110 +sign_ed25519 5 37 32028 +161+5-130+9-129-78-310-114-152+44+69-40+0+61+100 +sign_ed25519 5 47 31871 +147-120-16+172+46+0+240-36+60-53+208-37-99-83+188 +sign_ed25519 5 59 32595 +42+34+326+24-12+0-45+153-121-7+55-149-166-50+42 +sign_ed25519 5 74 32607 +289-2-28+49-5-197-144+97+156-99-39+62+0+64+95 +sign_ed25519 5 93 33376 +435+7+0+130+83+98-109-13+68-99-32-62-143-153+93 +sign_ed25519 5 117 33444 +393+272+73+161+79+0+198-39-226-45+93-174-70-31-125 +sign_ed25519 5 147 33415 +297+166+67-61-159-70-8-140+25+82+105-19-70+0+14 +sign_ed25519 5 184 34090 +963+17+0-43+17-39-166-253+81-321+18+204-287+166-129 +sign_ed25519 5 231 34682 +313+279+170+0+78-131+12-17-46-76+20-47+113-7+0 +sign_ed25519 5 289 34751 +130+25+72-66-64+145-55-59+28-119-149+21-64+0+2 +sign_ed25519 5 362 36131 +656+42+0-90-227-179-85+106+29+4-4+32-73-156+13 +sign_ed25519 5 453 36784 +369+156-18+21-110-66+0+127-28-87+129-185+145+24-19 +sign_ed25519 5 567 38194 +456+0+131-95-1+83-5+100-19-70+114-33+163+157-113 +sign_ed25519 5 709 39501 +458-180+61+25-114-16+64+0+104-11-126-22+50-32+25 +sign_ed25519 5 887 41487 +838-10-47+286+67-80+28-126-50+71+36-80-2+0+101 +sign_ed25519 5 1109 44178 +365-45+133+122+0-149+105+37+118-5-36-75-154-46+61 +sign_ed25519 5 1387 46977 +543-104+0+200-25+79-161-156-289+17+114+50+71-178-20 +sign_ed25519 5 1734 50381 +450+0-135+12+47-101-93-144+29-78-45+38-142+133+28 +sign_ed25519 5 2168 55132 +317+29+155+18+58+2-174-172+0-136-62-98+24-136-14 +sign_ed25519 5 2711 60515 +660+35+183-237-8-142+66-138-9+0-6+252+176-112+106 +sign_ed25519 5 3389 68141 +705+0-14+32+58+99-128+35-170-60+95-22+0-134+256 +sign_ed25519 5 4237 76796 +541+115+0+9-10-53+55-126-46-7+61+130+120-107-140 +sign_ed25519 5 5297 88455 +380+115-76-208+68-110+70+70-143+0-132-134+493-100+16 +sign_ed25519 5 6622 102500 +417-65-143+22+88-30-155+59+0+47+72-138+93-87-69 +sign_ed25519 5 8278 120173 +179+0+15-59+136-46-54+154-43+56+4-22-187-187+75 +sign_ed25519 5 10348 141908 +26+165+31-150+3-335-117+61+45+17-182-23-182-130+0 +sign_ed25519 5 12936 168912 +290+240+120+101-183-121-52+858+208+136-84+0-50-21-398 +sign_ed25519 5 16171 202657 +190+77+206-153-5-70-22+58+0+137-194-44+174-97+80 +sign_ed25519 5 20214 246209 +593+168+0+129+122-209-165-299-32-123-6+83+773+188-204 +sign_ed25519 5 25268 299670 +300+28+79-87+66-13+163+0-17-260+114+36-283-209-240 +sign_ed25519 5 31586 366560 +1218+133-134+177+139-91+520-190+0-104-240-47+176-136+213 +sign_ed25519 5 39483 449746 +617-176-255+367+1103+214-81+156+0-98-559-137-81+194+194 +sign_ed25519 5 49354 553923 +1293+418+1452+704+281-42+120+0-436-323-190+7-314-388-195 +sign_ed25519 5 61693 685195 +1179+87+30-191-145-172+293+71-74-577-245+0+424-238+1184 +sign_ed25519_open 5 0 114016 +7600+3154+1534+596+132-81-55-324+0+116-121-101-252+14-48 +sign_ed25519_open 5 1 112248 +6647+2321+1103+595+124+422-90-39-165-120-168-126+0+60-118 +sign_ed25519_open 5 2 113005 +5319+3275+1613+641+35+0-282-539-295-377-89+141+55-109-73 +sign_ed25519_open 5 3 112080 +6002+3092+1454+1040+142-30-232+41-213-138+126+0-192-266-118 +sign_ed25519_open 5 4 113300 +5461+2990+1096+1176+90-64-190-6+74+74+0-192-264-576-388 +sign_ed25519_open 5 6 113932 +6129+2988+1246+687-59-20+190+0-36-10-26+34-146+535-276 +sign_ed25519_open 5 8 113444 +5810+3152+886+856+0+196+310+28-180-186-362-277-378-111-132 +sign_ed25519_open 5 11 112532 +6028+2245+990+509+418+264+236-122-390-370-342-413+0-471-248 +sign_ed25519_open 5 14 112996 +5512+2472+912+428+36+140+418-144-334-486-466-458-35-45+0 +sign_ed25519_open 5 18 112752 +6080+2758+1260+402-68+0-86-220-532-148-85-153+106+152+168 +sign_ed25519_open 5 23 112276 +5652+1970+966+490-296-176-198+182+0+128+178-210-258-426-706 +sign_ed25519_open 5 29 112286 +5435+2593+1193+538-34+32+0+184+10-302-468-192-180-44-292 +sign_ed25519_open 5 37 113278 +5083+2962+1366+1255-129+90+152+52-16+0-490-399-529-414-328 +sign_ed25519_open 5 47 113506 +5604+2416+1156+840+252+0+400-166-74+136-50-108-308-708-350 +sign_ed25519_open 5 59 114127 +6704+2505+1131+707+85-285+0-242-279-133-13-5+45+35-142 +sign_ed25519_open 5 74 114636 +5805+2368+1436+922+130+0+22-122-462-312-504-414-80-192+26 +sign_ed25519_open 5 93 113862 +5974+2620+886+642+150+160+0-38+152-4-215-799-439-616-647 +sign_ed25519_open 5 117 113886 +5462+2110+1138+1162+110-26+102-138+0-6+64-364-420-414-264 +sign_ed25519_open 5 147 112960 +6212+2858+1328+560+416-192-54-36+717-76-82+0-168+94-194 +sign_ed25519_open 5 184 114812 +5792+3110+1036+628+180+186+46-140-90-282-54-526-370+0-26 +sign_ed25519_open 5 231 113174 +5933+2545+770+678+178-230-132-66+58-72+0-82+114-412-190 +sign_ed25519_open 5 289 114126 +5583+3134+1332+576+226+28-276+0-162-150-244-126+20-214-268 +sign_ed25519_open 5 362 114460 +5532+2798+1380+202+0-220-4+164+98+128-92-292-184-336-532 +sign_ed25519_open 5 453 115200 +6470+3220+1182+652+156-2+150+0-6-74+388-122-22-170-176 +sign_ed25519_open 5 567 117750 +6012+2940+1024+616+0-154-92+28+14-78-30+448-279-120-150 +sign_ed25519_open 5 709 117656 +5723+2564+1336+858+208-68+142-356+18-154-308-204-130+0-204 +sign_ed25519_open 5 887 117320 +6301+3135+1238+484-102-352+76+0-126+32-130-34-224-496+36 +sign_ed25519_open 5 1109 119600 +6052+3346+1604+838+424+414+22-148+0-276-158-274-122-258-430 +sign_ed25519_open 5 1387 121620 +6130+2940+1524+528+340+0-22+178+34-40-204-258-282-96-344 +sign_ed25519_open 5 1734 123116 +5464+2832+974+564+266+0+232+96-124-144-106-318-266-408-200 +sign_ed25519_open 5 2168 124698 +5963+2770+964+472+982-133-344-74+50+38+0-242-628-300-188 +sign_ed25519_open 5 2711 126640 +5804+2512+884+666+378+402-92-50-230-244-62-221+141-206+0 +sign_ed25519_open 5 3389 131340 +5996+2574+922+564+236+0-314-464+41-241-206-376-464+98-82 +sign_ed25519_open 5 4237 136494 +5792+2528+1240+574+314+74+0-334-2+430-6-190-56-170-128 +sign_ed25519_open 5 5297 140788 +6600+3260+1570+1092+210-250-162+0+118-304-50+0-2+180-102 +sign_ed25519_open 5 6622 147964 +5183+2476+1434+574-111-301+166+0-188-178+32-346+10-14-246 +sign_ed25519_open 5 8278 158008 +6556+2790+1264+522+374+246-152+68-276-218-262+0-164-344-142 +sign_ed25519_open 5 10348 167435 +5761+2097+796+512+178-20-5-189+0-200-309+2-321+19-241 +sign_ed25519_open 5 12936 182370 +6306+2265+546+365-115-77-43-22+109+0+27-137-19-94+2 +sign_ed25519_open 5 16171 199442 +5933+2041+229+391+67-201-42-95+287-114-278-102-260+0+68 +sign_ed25519_open 5 20214 222601 +6438+2933+1362+528+472+859-241-194+0-171-303+39-126-257-336 +sign_ed25519_open 5 25268 250784 +6313+1864+1093+640+278-172-245-57+81-77-374-395-167+0+155 +sign_ed25519_open 5 31586 283351 +6486+2557+1104+551-1-125-174+110+0-145+117+8-144-227-292 +sign_ed25519_open 5 39483 327371 +6792+2106+994+560-19+1447+89-162+181-294-492-160+0-169-372 +sign_ed25519_open 5 49354 378754 +6776+3309+912+597+676+13-204+1027-39+0-75-348-329-232-2 +sign_ed25519_open 5 61693 446338 +6987+2123+1142+1529+583+198-46-5+110-16-105+0-608-629-543 +sign_ed25519 6 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 6 32 29211 +1138-17+208+69-181+0-67+205-160+64+46-43-19+3-124 +sign_ed25519 6 0 32027 +2180+157+38+0+23-177-136+35+109-188-3-31+146-184-82 +sign_ed25519 6 1 32009 +267+145+129+15-161-36+11+0-42+48+313-39-243-204-42 +sign_ed25519 6 2 31977 +461+132+1+18-43+38+0-7-1+1-88-21-75+117-50 +sign_ed25519 6 3 32056 +205+6-9-35-31+0+34+54+0+7-43+105+17-169-77 +sign_ed25519 6 4 32086 +83+99+139-137-113-71+41-25+29+1-85-267-136+0+100 +sign_ed25519 6 6 31961 +336-129-59+205+253-88-51+44+167-81+132+0+213-125-44 +sign_ed25519 6 8 31993 +267+217+9-140-142+143+62-40+0+62+27-238-110-93-125 +sign_ed25519 6 11 31965 +409-28+22-5-14+161+31-178+85+0-138-39+11-17+152 +sign_ed25519 6 14 32025 +109+101-48-137-217-111+15+74+49-4+0-30+91+16-45 +sign_ed25519 6 18 31997 +286+62+235+44-134-2-99-69+29-51+61-69+0-45+0 +sign_ed25519 6 23 32015 +439+82-54+78+28-166-6+39-50-28-167+79+144-87+0 +sign_ed25519 6 29 32017 +182+168+45-8+24+41+3-115-62+0+54-143-44-168-120 +sign_ed25519 6 37 31999 +363+139-11+30+163-163+66-86+122+47+0-73-62-67-44 +sign_ed25519 6 47 31976 +320-103+73-21-133-158+1030+365+81-59+61+0+25-167-193 +sign_ed25519 6 59 32778 +442-170+0+9+209-88-122-63+56-279+0+110+13-257+77 +sign_ed25519 6 74 32741 +309-73-140-15-57-157-6+147+23+79+187+100+25+0-2 +sign_ed25519 6 93 33418 +409-119-49-31+86-49+52-123+128+33+0+16-157-102+98 +sign_ed25519 6 117 33467 +222-130+13-92-84-135+73+63-65+4+0-72+122+53-79 +sign_ed25519 6 147 33426 +481-85-13+40+34-100+172-37+65-10+0+8-77-84+25 +sign_ed25519 6 184 34118 +381-4+4-149+35-145-43+128+22+0-30+31-128+82-196 +sign_ed25519 6 231 34835 +542+96+58+29+0+133+114+99-39-49-94-94-94-106-53 +sign_ed25519 6 289 34857 +204+105+108+32-47+0-66+44-3-83+68-115-143-19+198 +sign_ed25519 6 362 36089 +1030-87-23+204-13+111-88+8-92+159+65+55+0-10-184 +sign_ed25519 6 453 36858 +238+53-147-103-39+41+50+107-42-3+187+0+69-100-137 +sign_ed25519 6 567 38205 +449+84-67+130-16+0+148-111-21+7-71+91+267-83-176 +sign_ed25519 6 709 39488 +337-33+347+0+51-23+130+171-9-36-52-2+124+187-29 +sign_ed25519 6 887 41653 +83+71+62+0+51-4-65-152+157-108+28-24+6-144-248 +sign_ed25519 6 1109 44313 +217-130+0-163+160+69-139+87-118-95-5+96-4+176+195 +sign_ed25519 6 1387 47052 +229-71-120+91+46-289+52+85-38-24+950+116-213-163+0 +sign_ed25519 6 1734 50394 +386+28+9-15-106-103+0+29-57-10+133+79-5+143-105 +sign_ed25519 6 2168 55118 +480+143+156+35+0-273+40-47-108-73+16-166-144+68-39 +sign_ed25519 6 2711 60548 +412+79+188+141-120+201+41-82-39-134+0-97-21-34+139 +sign_ed25519 6 3389 68269 +513+22-107+0+261-57+47-81-64+300+170-80+41-176-130 +sign_ed25519 6 4237 76869 +360-61+7-12+126-39-35-72+157+95-218+106-7+64+0 +sign_ed25519 6 5297 88548 +358-29+60+111+0-2+156+115-56-125+65-76-235-130+119 +sign_ed25519 6 6622 102758 +345+112-62+0+7+17-59-33-40-44-10-82+183+154+923 +sign_ed25519 6 8278 120210 +253-183-39-332-217-76+189+47+47+57-100+122+215-105+0 +sign_ed25519 6 10348 141840 +465-123-69+61-34+58+41-292+64-52+23-125+493-159+0 +sign_ed25519 6 12936 169058 +436+19-36+134-78+184-9-200-350-64+67-56+59+108+0 +sign_ed25519 6 16171 202852 +727+175+190-73-135+35-29+144+16-387-141+51-88-298+0 +sign_ed25519 6 20214 246215 +554+317+193-3+34-13+0+140-1-68+137+166-20-118-180 +sign_ed25519 6 25268 299806 +1276-108-104+42+0+45-16+292+251-138-11-116+138+22-479 +sign_ed25519 6 31586 366640 +1077-6+0-48-43-135+125+846+668+87-175-114+35-218+163 +sign_ed25519 6 39483 449768 +1322+346+260+150-156-183-305-227+197-94+1275+708-67+0-47 +sign_ed25519 6 49354 554155 +1143+195+34+36+20-347-4+955+697-28+0-192-134-94-18 +sign_ed25519 6 61693 685272 +1016+1164+182+328-170+149-12+0-481-398-336+100+149-302-204 +sign_ed25519_open 6 0 113444 +6572+2364+1172+156+220-220+166-208-244+0-476-458-656+368-594 +sign_ed25519_open 6 1 112662 +6381+3116+1232+646+10-40-42-16+186-146+0-58-18+46-6 +sign_ed25519_open 6 2 113368 +5725+2456+858+516-76-42-152+0-68-258+2+0+110+158-44 +sign_ed25519_open 6 3 113680 +6258+2943+1138+940+242+356-92+102-88-26+0-36-54-36-50 +sign_ed25519_open 6 4 111321 +6139+2767+873+701+335-3-255+27-193-77-36+0-35+45-187 +sign_ed25519_open 6 6 112650 +5660+2552+1170+700-172-164-38+86+56-156+0+90-144-124-226 +sign_ed25519_open 6 8 113096 +5032+2424+1206+429+0+65-238-306+226-222+224-318-204-28-260 +sign_ed25519_open 6 11 114270 +5424+2372+1254+952+56+444+2-84+0-140-254-730-298-640-666 +sign_ed25519_open 6 14 113430 +5551+3398+1802+640+182-66-56-302-204-150-92+212-152+0+130 +sign_ed25519_open 6 18 113660 +5483+3220+1580+1546+504+380+0+150-404-256-368-66-404-392-472 +sign_ed25519_open 6 23 113010 +5676+2497+1850+1006+242-60+0+264+244-52-410-106-170-218-140 +sign_ed25519_open 6 29 113172 +5737+3078+1268+990-50+0+146-260+16+76-28-168-34-8-608 +sign_ed25519_open 6 37 114002 +5159+2638+1220+934-155-367-150+102+162-116-150+30-348+0-142 +sign_ed25519_open 6 47 113354 +5917+2900+1244+652+108+58+0-188-196+292-419-312-282-618-249 +sign_ed25519_open 6 59 110580 +6469+3164+970+792+380+88+112+0-308-292-262-236-160-142-68 +sign_ed25519_open 6 74 114380 +5412+1916+1202+858+314+0-84-146+36+158-568-572-546-314-742 +sign_ed25519_open 6 93 114166 +6565+3360+1202+620-64+0+88-416-354-152+58-226+10-318-266 +sign_ed25519_open 6 117 113110 +5430+2820+1314+816+500+0-72-338+290-166-538-394-2+80-96 +sign_ed25519_open 6 147 113920 +5663+3272+1424+940+212+160+120+0-202-89-135-92-138-274-110 +sign_ed25519_open 6 184 115474 +4710+3468+1384+612-43-167-1-243-286-240+0+136-158+0+407 +sign_ed25519_open 6 231 115306 +6079+3148+1148+464+510-112-54-146-216+94-260+0-216+176-208 +sign_ed25519_open 6 289 115168 +6006+2804+1446+1047+145+39-187-271-295-112+102-266+0-34-298 +sign_ed25519_open 6 362 114012 +5999+2746+1346+796+226+20+0+166-164-458-68-246-6-544-144 +sign_ed25519_open 6 453 116656 +5212+2360+1190+1000+0+86+300+258-222-157-408-611-152-222-312 +sign_ed25519_open 6 567 115748 +6148+2872+1458+972+206+336-34+88-182+0-66-340-328-328-260 +sign_ed25519_open 6 709 118418 +6472+2716+1554+936+750+276+38-198-96-26+0-104-330-32-134 +sign_ed25519_open 6 887 116354 +5952+3268+1774+1038+378+0-30-144-52-16-178+74-39-47+210 +sign_ed25519_open 6 1109 119392 +6243+3450+1590+1126+692+326+90-12+0-152-406-446-242-112-24 +sign_ed25519_open 6 1387 121026 +6053+3472+2104+830+0-8+26+252-58+10-128-120-132-84-292 +sign_ed25519_open 6 1734 122360 +6218+2687+1580+484+194+0-90+12-110-126-458-188-82+60-432 +sign_ed25519_open 6 2168 123770 +6091+2288+1206+576+324+74+48+0-218-144-6-200-426-324-92 +sign_ed25519_open 6 2711 127864 +5293+2332+962+366-30+771-558-360-336+22-2+2+0-276-358 +sign_ed25519_open 6 3389 132466 +5396+2234+890+652+142+34+42-230-300-78-236-336+0-234-468 +sign_ed25519_open 6 4237 136210 +6186+2198+996+502+96+4+312-22-242+0-206-506-218-266-522 +sign_ed25519_open 6 5297 140834 +6565+2982+1614+1066+446-176-36-94+66-50+20-82+0-188-404 +sign_ed25519_open 6 6622 148406 +6214+2798+1338+536+208+0-78-142-130-458+743-202+91-78-76 +sign_ed25519_open 6 8278 158390 +6472+3088+1432+718+358+0+0+162-430-322-34-398-374-324-352 +sign_ed25519_open 6 10348 168448 +6441+3318+1462+808+313+229+0-128-292-231+69-280-137-211-151 +sign_ed25519_open 6 12936 180308 +6624+3080+729+92-208+17+147-511-197-437-452+265+0-178-446 +sign_ed25519_open 6 16171 198024 +6918+2234+1029+183+195-60+126-70-26+0-70-108-113-315+216 +sign_ed25519_open 6 20214 221635 +6677+2930+1207+549+445-31+154-27-69+0-20-241+39-390-24 +sign_ed25519_open 6 25268 250636 +5845+1919+848+586-4+5+0+93-124-38+95-139-368-358-523 +sign_ed25519_open 6 31586 284524 +6548+2515+922+503+1279+150+0-110-130-211-144-88+24-61-498 +sign_ed25519_open 6 39483 325533 +6741+2150+1070+521-140-206+0+27-472-535-208-109+767+57-150 +sign_ed25519_open 6 49354 379324 +6719+2270+1152+447+286-127-104+0-322-388-583-120-445+330+237 +sign_ed25519_open 6 61693 445807 +7483+2356+1215+603-134-48+0+371+777+91-353-233-195-535-55 +sign_ed25519 7 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 7 32 29117 +1697-183-33-111+53-78-120-21+36+20-178+60+79+170+0 +sign_ed25519 7 0 31991 +1259-28-211+54-105+0+142+193+33-84-32+111+96-211-241 +sign_ed25519 7 1 31935 +404-36-87+80-19-85+86+42-22+74-133+0+58-15+18 +sign_ed25519 7 2 31942 +415-22+0-151-12-56+3-138+77+133-58+104-17+117+38 +sign_ed25519 7 3 31927 +195-21-71-121-18+0+139-167-135+224+110+52+48+2-94 +sign_ed25519 7 4 31954 +422+66-138+121-8+32-65+77-84+176+42-18-262-26+0 +sign_ed25519 7 6 31930 +212-122+30-59+30+38+55-18-50+15+7+0-68-7-40 +sign_ed25519 7 8 31976 +224+27-39-70-109-56+30-20+91+0+67+31+50-45-36 +sign_ed25519 7 11 31970 +118+147+6+198-129-218+75+33+0-78-34-171-120-172+43 +sign_ed25519 7 14 31944 +74+74+40+44+93-13-107+0+3-178-196-21-13+293-82 +sign_ed25519 7 18 31921 +353+56-108-24+137+122-94-160-5+132-121+0-83+252+216 +sign_ed25519 7 23 31951 +224-2-31-8+46+203+0+7-143-19+12-84+103-103+16 +sign_ed25519 7 29 32047 +194+82-330-70+56+151+0-159-154+80-27+108-126-144+0 +sign_ed25519 7 37 31961 +318+81+12-88-38+0+89+44-94-21+85-6+120-4-32 +sign_ed25519 7 47 32011 +103+0+113+25-284-21-75-80+33+53-1-74+100+48-62 +sign_ed25519 7 59 32722 +329-147+144-87-262-324+43+56-49-288+69+0-203+4+43 +sign_ed25519 7 74 32682 +215-16-167+42+88-62-43+14+91+15-55-46+61+0-22 +sign_ed25519 7 93 33314 +193-21-39+0+115+94+33-137+213-26-15-71+151-64+215 +sign_ed25519 7 117 33390 +418+952+84-121-90+67-99-174+11-54+38+0-104-228+36 +sign_ed25519 7 147 33424 +138+28-25-98-209+135+159+14+147+160+0-133-34-211-73 +sign_ed25519 7 184 33977 +170-18+15+139+99-17+49+0-130-16-69-60+82-12+91 +sign_ed25519 7 231 34719 +449-223+228-4+0+215-37+56+259-58-60-71+21+63-25 +sign_ed25519 7 289 34733 +296-66+44+152+0+143-12+32+136-60-4-41-77+112-56 +sign_ed25519 7 362 36052 +512+0+271-106+44+68-164+141+185-34-125-53-78+3-46 +sign_ed25519 7 453 36795 +291-186+74+0-37+137-36+174-146+196-40-98+137+33-39 +sign_ed25519 7 567 38197 +183+0-12+39+88-97+20-206+106-11-8-123-184+167+23 +sign_ed25519 7 709 39529 +288+90-220-76+0-146+50+193-140-117+18+77-106+72-99 +sign_ed25519 7 887 41557 +940+1-79-143-78+22-16+16+2+0-115-43+76-143+63 +sign_ed25519 7 1109 44341 +300-162-210-148-161+24+0+215+13-42+16+39-76-48+126 +sign_ed25519 7 1387 46937 +423-22+0-10-68-11+85+261+26+93-113-46+130+47-103 +sign_ed25519 7 1734 50288 +436-56+167-74-61+89-60-18+0-116+75-94+75+205+6 +sign_ed25519 7 2168 55057 +503-35+132-2-139+0+57-76+42+196-20-20-128+769+290 +sign_ed25519 7 2711 60624 +297-336-263-115+40-48-144-90+4+50+12+0+128-101+228 +sign_ed25519 7 3389 68098 +294+218-77+60-134+0+31-30+265-205+153-71+85-85-33 +sign_ed25519 7 4237 76873 +491+44-100+298-125-28+51-25-29-26+18+0-176+76+144 +sign_ed25519 7 5297 88458 +308+71+241-139-84-98+0-31+125-3+68+3-157-241+22 +sign_ed25519 7 6622 102611 +509+78-19+42+114+171-41-42-115-29-18+0-64+96+131 +sign_ed25519 7 8278 120291 +516+0-175+30-16+5-248+26-91-415-252+664+454+40-93 +sign_ed25519 7 10348 141760 +409+73+166-185-77+19+0-258-67-313+212-163+90+17-31 +sign_ed25519 7 12936 168930 +392-86+294-15-64-193+0+11-160+102+127-377-56+112+113 +sign_ed25519 7 16171 202628 +546+0-13+78-202+56+114-23-86+1314+80+16-142-71-113 +sign_ed25519 7 20214 246081 +1112-292+246-82+135-163+20-235+3+97-83+86-315+0-160 +sign_ed25519 7 25268 299746 +532+29-25-131-131+975+557+177+109+51-67-180-109+0-61 +sign_ed25519 7 31586 366656 +1036+0+33+140+269-34+51-84-109+85-241-132-61-259+620 +sign_ed25519 7 39483 449839 +987+23+213-4-286-140-133-138+8-132-281+0+70+66+577 +sign_ed25519 7 49354 554185 +1523+265-88-99+121-146+244-315-39+61-55-39+1149+206+0 +sign_ed25519 7 61693 685397 +429+10+881-76+952+0+5+381-551-91+160-303-78-427-228 +sign_ed25519_open 7 0 111400 +8498+2678+1314+476+98-252+20-88-146+0+18-134-260-476-304 +sign_ed25519_open 7 1 112128 +6062+1954+988+566+264+60-40+16+0-172-398-388-270-174-190 +sign_ed25519_open 7 2 112625 +6709+3558+1582+1427+282+87+0-30+113-183-235-309-393-313-299 +sign_ed25519_open 7 3 111484 +6581+2750+1554+974+224+26-90+0-196-254-224-268-34-310+32 +sign_ed25519_open 7 4 112582 +5616+2860+1606+1006+710+460+24-32-226-166-136-106-148+0+0 +sign_ed25519_open 7 6 113180 +6235+3076+1478+984+396+228-68+0-202-498-372-142-572-174+32 +sign_ed25519_open 7 8 112216 +6379+2268+844+724+350-210-108-71-255-266+54-58+0+96-252 +sign_ed25519_open 7 11 112140 +6234+3194+1910+1196+242+120-100-128+0-370-446-20+78-198-14 +sign_ed25519_open 7 14 113004 +5676+2488+1070+814+30+0-110+271-125-446+665-16-100-68-260 +sign_ed25519_open 7 18 113712 +5266+2484+1102+1016+430+156+20+0-185-114-233-42-20-388-670 +sign_ed25519_open 7 23 113070 +5330+2848+1362+648+368-18+72+82-80-282-296-218+0-468-166 +sign_ed25519_open 7 29 112884 +5814+2555+1346+762+47-13+310-64+142+0-198-207-567-369-540 +sign_ed25519_open 7 37 112574 +5912+2802+1042+685+51+299-135+0+164-50-225-247-350-238-54 +sign_ed25519_open 7 47 113346 +5466+2585+1454+1052+796+522-96+0+138-36-104-236-600-386-502 +sign_ed25519_open 7 59 112910 +6355+2104+718+358+0+118+18+46-116-216-201-410-35-18-72 +sign_ed25519_open 7 74 113864 +6712+2578+1202+226-184-132-446-236-180-146+0+88+64+72-168 +sign_ed25519_open 7 93 112250 +6762+3032+1630+652+146+64-305-102-411-190+0-730-84+186-188 +sign_ed25519_open 7 117 112988 +6138+2908+1128+604+428+0-278-2-124-243-228-181+52-36+86 +sign_ed25519_open 7 147 112824 +5746+3722+1814+1080+382+428+118-178-520-218-196+0-22-54-154 +sign_ed25519_open 7 184 112396 +6976+3032+1702+1068+264-8+0-319-523-284-468-189-69+258+30 +sign_ed25519_open 7 231 114496 +5037+2474+822+294-96+0+194+96-90+142-98-92-476-248-560 +sign_ed25519_open 7 289 115452 +5519+2676+1114+758+879+0-30+122-152-76-280+4-358-74-600 +sign_ed25519_open 7 362 114280 +6400+2862+1286+894+598+266+24+0-112-282-362-216-346-310-12 +sign_ed25519_open 7 453 116006 +5603+2736+1422+1032+90+48+158-22-236-660-234+0-46-394-74 +sign_ed25519_open 7 567 116484 +6125+2994+1098+468+0-62+104-140-244-318+54-128+106-174-334 +sign_ed25519_open 7 709 116146 +5979+3804+1822+1254+362+320+212+0-150-296-282-264-392-510-362 +sign_ed25519_open 7 887 116736 +5098+1928+1386+692+118+92-54-160-168+98+0-260-486-462-478 +sign_ed25519_open 7 1109 118718 +5863+2964+1144+650+775+37-148+60+0-146-6-80-24-4-6 +sign_ed25519_open 7 1387 121278 +5637+2434+978+520-396-316+22-24+232+82+0-326-148-66-320 +sign_ed25519_open 7 1734 122664 +6104+2502+1140+670+20+0-92-74+96+246-154-140-128-88-182 +sign_ed25519_open 7 2168 126202 +5904+2866+1024+598+154-118+122-34+54+0-222-430-310-664-444 +sign_ed25519_open 7 2711 127812 +5965+2616+930+830+378+274+0-6-68-68+204-4-103-151-390 +sign_ed25519_open 7 3389 130860 +5878+2934+1630+836+0+58+104+821-13-304-254-156-262-524-390 +sign_ed25519_open 7 4237 134748 +6307+2312+936+1014+634+32-52-44-8-440+0-98+56-290-472 +sign_ed25519_open 7 5297 141642 +5912+2078+1105+451+30-248-264-114-86+0+20-254+38-302-252 +sign_ed25519_open 7 6622 148672 +6232+2616+978+1090+202+174+200-96+0-96-264-298-290-196-186 +sign_ed25519_open 7 8278 157029 +5212+2670+1359+935+285+197+976+0-141-349-117-179-187-251-423 +sign_ed25519_open 7 10348 168426 +5750+2256+1338+760+114+24+20-68-32-152+0-90-140-284-80 +sign_ed25519_open 7 12936 181612 +6326+2419+721+808+61+351-132+17-2-104+0-116-456-298-142 +sign_ed25519_open 7 16171 197607 +7935+3411+1565+586+42+43+130-248+0-52-19-130-298-446-263 +sign_ed25519_open 7 20214 221112 +6798+3107+989+485+102-336-118+0-62+48-200-266+184-96-181 +sign_ed25519_open 7 25268 249052 +7719+3074+646+714+506-93-30+0-47+293-163-25-164+52-56 +sign_ed25519_open 7 31586 283636 +6166+2624+883+326+184-72-634-96-25-344+0+34-182+156-18 +sign_ed25519_open 7 39483 327149 +6461+2553+753+490+183-225-243-297+0-220-302+81+73-261-507 +sign_ed25519_open 7 49354 380159 +6685+2065+661+859+347+361+0+344-70-48-265-43-403-107-174 +sign_ed25519_open 7 61693 446344 +6679+2661+1187+380+359-136+114-87-313-91-167-511+0+246-17 +sign_ed25519 8 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 8 32 29097 +1664+405+76+109-104-31-73+61-67+0-3-27-68+112+111 +sign_ed25519 8 0 32218 +2095+232+62-21-39-49-72-75+129+62-242-68+93+0+6 +sign_ed25519 8 1 32310 +482+84+191-67-91+7+29-160-133-154+0+65+21-109-148 +sign_ed25519 8 2 32224 +354+111+45-3-63+97+96-6-173+0+12-12+31-151-49 +sign_ed25519 8 3 32221 +298+97-41-1-58+98-103-95+0+38+11+564+102-106-34 +sign_ed25519 8 4 32260 +236+122-95-10+69-6+0-153-68+69-30-32+12+70+4 +sign_ed25519 8 6 32306 +72+59-87-55-85+43-109-127+22+196+94+0-94-30+71 +sign_ed25519 8 8 32275 +170+115+123+27+0-76-8-21+10+85-121-124-256-20+5 +sign_ed25519 8 11 32295 +105+65-81-132+13+4-137-71+221+54+0-167-98-66+152 +sign_ed25519 8 14 32221 +181+50+102+0+96-89-41-211-22+68+45-11-95-12+52 +sign_ed25519 8 18 32209 +432+205+0+11+88-35-20-76+101+146-48-46-57-8+89 +sign_ed25519 8 23 32237 +341+243+31-135-97+162-105-109+0-86+173-18-35+14+118 +sign_ed25519 8 29 32228 +425+1-13+69+11-81+0-42+60-43+44-154-28-7+64 +sign_ed25519 8 37 32234 +338-39-91+41+26+27+111+0+51+15-102-49-114-51-113 +sign_ed25519 8 47 32262 -60+192-148+90+0-44-52+5-97+80-153+79-49+97+15 +sign_ed25519 8 59 32912 +233+89-25+100+11+152-8+77-25-95-97+50+0-92-67 +sign_ed25519 8 74 33024 +292+0+110+259-9-120+42+105-34-81+42-26-155-162+113 +sign_ed25519 8 93 33739 +223-103-137+106+63-196-36-57-92+68+27-42+64+73+0 +sign_ed25519 8 117 33709 +417+228+24+42+141-67-117-56+14-122-12-72-113+0+42 +sign_ed25519 8 147 33739 +133+62-7-77-85+40+35-2-51-53+28+92+0-36+14 +sign_ed25519 8 184 34465 +347-57+98-83-83+43+10+0-24+106-44-15+134-118+76 +sign_ed25519 8 231 35056 +390+142-132-162+107+0-10-93+74-70+15+36-29-115+10 +sign_ed25519 8 289 35140 +1090+107+0-238-41+27+177+20-174-13-131+55+41-116-36 +sign_ed25519 8 362 36450 +525+47+0-56+70+3-33-16-6+174-97+88-54+46-10 +sign_ed25519 8 453 37091 +445+100+85-55+51+0+99-55-12-63-113-145+49-109+103 +sign_ed25519 8 567 38509 +300-80+0+22-146-128+38-98+71-95+4+5-103+51-124 +sign_ed25519 8 709 39876 +244+0+102+263+44+53-103-59-183-71-58+79-65+150-30 +sign_ed25519 8 887 41941 +368+21+9-36+0-21-156-107+145+34-15-31-30+80+17 +sign_ed25519 8 1109 44607 +737+34+143-74+119+0-54-149+159+79-147-35-109-86+28 +sign_ed25519 8 1387 47268 +558+171-85-82+4+113-32-121+110-145+17+110-145+0-60 +sign_ed25519 8 1734 50707 +660+33+179-4-96-1+121-61+61-35-24-50+176+0+79 +sign_ed25519 8 2168 55481 +598+21+23-44+0-127+62+134+148+56-17-13-140-112-87 +sign_ed25519 8 2711 60979 +416+0-145+141-43-99+4+28+39+7-174-96-158-13+137 +sign_ed25519 8 3389 68574 +219+0-86+252-70+141-14+35-41-73+524+18+145-90-165 +sign_ed25519 8 4237 77216 +547-54+147-92+116+110-5-11+11+0-88+11-46+74-6 +sign_ed25519 8 5297 88720 +551+7-51+85-87-38-62-67+124+75-158+0+151-64+102 +sign_ed25519 8 6622 103004 +402+8-222-88+1-3+154-72+0-231+131-92+52+254-45 +sign_ed25519 8 8278 120643 +222+20+0+35-165+91-167+50-109+20-227+106-147-124-106 +sign_ed25519 8 10348 142362 +48+122+0-79-30+81-88+817+11+14-205-201-241-161+26 +sign_ed25519 8 12936 169409 +320+20-416+0-376+279-125-215-267+215+115+123-186-58+222 +sign_ed25519 8 16171 203331 +161+82-266+0+6-93+114-140+6+202-46-191-84+18-35 +sign_ed25519 8 20214 246834 +884+30+0+156+214+48-20+331-348+57-299-125-168-174-1 +sign_ed25519 8 25268 300481 +592-217+152+192-65-56-17+216+0-46+1+155-719-493+1101 +sign_ed25519 8 31586 367111 +1308+319+0-278-141+10+50+170-151+445-3+64-41-167-341 +sign_ed25519 8 39483 450243 +2503+166+149+283+809-5+0-95-229-354-199+32-16-267+199 +sign_ed25519 8 49354 554559 +1924+421+189-88-73+348-292+244-31-123+152-51-58+2+0 +sign_ed25519 8 61693 686008 +1662+0+172+35-407+57-473-496+948+13-384+127-189-280-420 +sign_ed25519_open 8 0 112080 +7159+3390+726-118+18+0+64+82+56-40-56-60-470-60-404 +sign_ed25519_open 8 1 111414 +6634+2596+1088+708+6+32-86-128-244-218-162-284-282+272+0 +sign_ed25519_open 8 2 113438 +6205+2358+1017+587+60-166-230-99-89-22+76+0+215-121-166 +sign_ed25519_open 8 3 112134 +6114+2794+1408+791+219+166-14-308-332+438-51+0-4-364-496 +sign_ed25519_open 8 4 113244 +5317+2371+899+982-72-26-288+4+0-138+244+22-70-440-648 +sign_ed25519_open 8 6 113122 +5508+3322+1151+619+230+24-12-206-258+176-68-20+0-182-429 +sign_ed25519_open 8 8 113208 +6009+2378+1416+618+30+0-76-68+66-178-95+153-32-162-346 +sign_ed25519_open 8 11 112584 +6153+2989+1201+614+24-264-88-302-187+217+212-28-123-187+0 +sign_ed25519_open 8 14 112633 +5938+2461+1137+607-53+169+0+77-120-348-402-397-129-31+294 +sign_ed25519_open 8 18 113392 +4846+3026+1530+532+299+177+26+0-208-255-606-775-736-190-343 +sign_ed25519_open 8 23 111982 +5812+2205+1157+612+134-70-22-238+56-393-75-300+0-308+4 +sign_ed25519_open 8 29 110497 +6242+3571+1733+1304+498+723+0-180+97-283-139-215-153-399-459 +sign_ed25519_open 8 37 111726 +6237+2814+1741+568+319+169-76-76+156-13+0-303-235-410-76 +sign_ed25519_open 8 47 112766 +5338+3097+1217+790+158+194-50+248+0-140-263-287-277-489-238 +sign_ed25519_open 8 59 113304 +6607+3856+1898+850-56-396-52+194+112+0-12-66+86-376-520 +sign_ed25519_open 8 74 112966 +5346+2655+858+699+22-209-311-302+52+318+0-346-555-651-116 +sign_ed25519_open 8 93 113027 +6032+2333+1365+717-17-183+431+0-139-47+121-83+105-252-586 +sign_ed25519_open 8 117 113998 +5893+2951+1047+744+262+0-222-168-124-200-124-128-70+140+242 +sign_ed25519_open 8 147 113562 +5793+2967+1288+303+130+208+220-21-282-453-346-316-326-6+0 +sign_ed25519_open 8 184 113480 +6414+3532+1798+990+398+0-164-10+114-259-282-216+78-569-302 +sign_ed25519_open 8 231 113156 +4867+2100+1066+321+213-354-168+96+10+0-384-506-518-898-596 +sign_ed25519_open 8 289 113738 +5886+2091+918+473+350-114+86+16-210+0-142-264-202-440-484 +sign_ed25519_open 8 362 114234 +5679+2464+1322+1148+556+340+0-363-94-267-280+454-209-115-219 +sign_ed25519_open 8 453 116429 +5905+2175+768+728+215-15+147+139+0-39-186-138-36-55-211 +sign_ed25519_open 8 567 116515 +5814+3061+1434+707+346+192-75+26-129-283-179-345-441-68+0 +sign_ed25519_open 8 709 115917 +5616+2253+1277+797+287+183+245-176-176+0-446-485-291-221-365 +sign_ed25519_open 8 887 118638 +6254+3078+2150+1346+538+0-170+14-206-156-72-222-210+34-198 +sign_ed25519_open 8 1109 119012 +6256+3800+2084+818+218+134+40-294-134-254-206-476+0-428-383 +sign_ed25519_open 8 1387 120144 +6329+2762+1466+933+348+0-335-266+349-316-236-136+266-118-20 +sign_ed25519_open 8 1734 122375 +6352+2891+931+907+138+0-329-427-128-326-13+7-59-35+99 +sign_ed25519_open 8 2168 123063 +6595+3214+1374+874+25+152-67+0-228+92-56-91-58-192-111 +sign_ed25519_open 8 2711 126748 +7214+2974+1606+894+458+240+96-116-234-4-90-84+0-50-244 +sign_ed25519_open 8 3389 131778 +6307+2680+632+672+180+32-276-391-195-42-248-260-400+110+0 +sign_ed25519_open 8 4237 136878 +5620+2226+1062+438+74-36-195+512+170-312-454-328+0-228-292 +sign_ed25519_open 8 5297 141304 +5781+4388+2208+1310+509+315+120-184-232-192-230+0-36-304-156 +sign_ed25519_open 8 6622 148814 +6753+2710+1210+772+78+194-142-36-44+90-82-224-200+0-32 +sign_ed25519_open 8 8278 156166 +6837+2123+1217+672+306+84-130+314-100-182-138-90+0-291-149 +sign_ed25519_open 8 10348 168155 +6681+2820+1132+1061+291+227+145+0-178-130-174-85-297-137-235 +sign_ed25519_open 8 12936 182967 +6162+2809+1675+772+239+64+131-131-243-267-430-281-179-208+0 +sign_ed25519_open 8 16171 197299 +7161+2819+1501+332+200+303-168-194-215-101-21-326-307+0+1098 +sign_ed25519_open 8 20214 221472 +6668+2717+1087+934+271-44+184+447-272-19-253-54+0-17-127 +sign_ed25519_open 8 25268 249270 +6725+2592+1185+569-8-115+15+141-198-248+732-181-402-331+0 +sign_ed25519_open 8 31586 284391 +6722+2308+974+596+339+0-262+62-453+93-418-85-250-353-399 +sign_ed25519_open 8 39483 325714 +6426+2109+631+779+383+190-7+91+0-272-358-243-131-351-575 +sign_ed25519_open 8 49354 379460 +6689+2184+391+501+108-51+44+105-385-366+0-352-472-509-160 +sign_ed25519_open 8 61693 447282 +6128+2503+1286+579-120+65-121+0+179+373-381-415-254-702-492 +sign_ed25519 9 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 9 32 29141 +1402-39+132+2+41-158-95+59-30+0+14+108-90-22-138 +sign_ed25519 9 0 32303 +2442+146+83-41-127-47+46+0-8+24-83+63+6-128-126 +sign_ed25519 9 1 32483 +319+83+175-47-140+103-27+0-37-98-364+35+63+38-262 +sign_ed25519 9 2 32382 +79+30+68-17+147+13+118-30-2+0-6-43-93-50+90 +sign_ed25519 9 3 32391 +319-17-167+157+21+58-202-72+0+92+44-97-136-71+132 +sign_ed25519 9 4 32372 +409+186+0-51-106+94-167-167-93+64+12+69-165-116+151 +sign_ed25519 9 6 32361 +439+274+83-78+79+215-65+0-144-167-5+97+163-9-48 +sign_ed25519 9 8 32405 +237-141+159+26+0-18+70+62-74-169-84+119-102+153-25 +sign_ed25519 9 11 32351 +349-10+27+242-18-96+0-26+99+588-56-178-161+64+148 +sign_ed25519 9 14 32401 +172+6-122-157+62+240+0-144-204+62+168+203-29-130-87 +sign_ed25519 9 18 32390 +541+19-30-23-140+240+128-23-108-157+29+35+0+2-101 +sign_ed25519 9 23 32431 +113+139+0+224-139-190+33-49+70-207+4-25-91+22-9 +sign_ed25519 9 29 32384 -9+0+64+199+155-43-46+5+133+28-35-169-29+70-24 +sign_ed25519 9 37 32356 +425+69+159-74+55+15-25-154-84+35-85-20-127+9+0 +sign_ed25519 9 47 32407 +227+153-105+48+42+34-127-252+0+19-98+260-118-64-10 +sign_ed25519 9 59 33060 +335-75+0+135+45-27-176+48-103-129-53+5+16+43-177 +sign_ed25519 9 74 33134 +384+147+44-55+205+0-104-64+43+173-47-142+195-85-176 +sign_ed25519 9 93 33851 +346+90+258+184+67-61-144-34-37+0-163+119+82-142-124 +sign_ed25519 9 117 33864 +363+40-131+96-14-131-98+32+67-42-56+34+50+0-104 +sign_ed25519 9 147 33879 +354+53+249-197+0-39+26-104+73+96-71-80+114-66-96 +sign_ed25519 9 184 34492 +662-33-128+99+137+181-51+84-160+124-44-100-28+61+0 +sign_ed25519 9 231 35216 +343+85+8-131-75+15+69+211-31-25+94-18+0-72-130 +sign_ed25519 9 289 35231 +318+99+0+13-19-36-45-4-131-76+87+17+27-36+31 +sign_ed25519 9 362 36569 +205+1-54-156-48+1-309-21+86+5-26+11+41-12+0 +sign_ed25519 9 453 37285 +511-36+13+50-4+65-155-75+20+131-109-45-165+0+73 +sign_ed25519 9 567 38687 +603-53-39+27+734+228-85-150-87-6-182+53+77+38+0 +sign_ed25519 9 709 39919 +444-117+117+176+8-14+314-4-69+97+33-102-16+0-37 +sign_ed25519 9 887 42090 +283+2+182+55-89+25-121-4+37+0-164-220-70-17+10 +sign_ed25519 9 1109 44778 +474+55-47+26+91-83-21-90-19-102+21-37+42+0+11 +sign_ed25519 9 1387 47485 +509-59+166-25-5+14+12-182+0-86+42+41+15-162-112 +sign_ed25519 9 1734 50888 +478+154-29+189+13-107-127+43+0-51+15-34+126-30-154 +sign_ed25519 9 2168 55620 +1000-165-173+106-16-9+19+185+33-191+66+142-85-25+0 +sign_ed25519 9 2711 61033 +639+319+210+53-8-23+45-25-59+21+151-63-28+0-35 +sign_ed25519 9 3389 68591 +195+226+1+93+179-72+82-33-51-97+29-87-7-20+0 +sign_ed25519 9 4237 77342 +365-79-105+39+28+136-96+181-36+0-79+26-171+53-15 +sign_ed25519 9 5297 88911 +411+97+38+107-114-59-4+14+162-76-31+0-119-179+129 +sign_ed25519 9 6622 103089 +604+168-50-74-36-175+150-7+0+89+63-135+57+107-34 +sign_ed25519 9 8278 120766 +64-132+33+41-46-23-13-10+0-18-30+28+192+46+70 +sign_ed25519 9 10348 142362 -57+154+296-133-93+25+79-47+0+214+108+0-83-82-71 +sign_ed25519 9 12936 169390 +342+489+65+229-107-36+162+137-252-68-103+0-87-164+59 +sign_ed25519 9 16171 203248 +319+0-226+22+95+299-148-82+58-139-174+102-42+21-173 +sign_ed25519 9 20214 246810 +288+58-234+6-30-228+979+388+127-205+50+0-227-215-174 +sign_ed25519 9 25268 300588 +740-201+1-198-30+38+0+197+167+4-134+123-312-217-231 +sign_ed25519 9 31586 367010 +1430+202+60+7-146-36+39-167-39-73+39+0+71-313-160 +sign_ed25519 9 39483 450142 +2223+1611+228+70+0+112-2-418+24+138-139-151-157-116-15 +sign_ed25519 9 49354 554486 +2090-68+0-63-183+237+281-112+6-202-93+73+112-204+159 +sign_ed25519 9 61693 685963 +667+19-136-744+758-163-827+187-176-332+255+623+553+0-761 +sign_ed25519_open 9 0 112012 +7754+2487+1137+212+120+306-52-365-603-404-252-206+0+81-33 +sign_ed25519_open 9 1 111290 +5914+3464+2076+1025+354-155-48-44-2+30+262+0-310-529-172 +sign_ed25519_open 9 2 113232 +6031+2698+1442+434+510+54-102+0-396+30-130-338-440-38-578 +sign_ed25519_open 9 3 113388 +5736+1878+569+383+116+218-166-17-151-170+0+252-161-415-630 +sign_ed25519_open 9 4 111972 +5883+2430+990+150-114-376-84+40+162+0-168-498-568-470+288 +sign_ed25519_open 9 6 114120 +5441+2134+820+788+0-102+122-84-220+240-152-236+16-410-418 +sign_ed25519_open 9 8 112580 +6584+3230+1610+1183+177+0-122+16-192-186+34-122-413-101-400 +sign_ed25519_open 9 11 112320 +6458+3372+1326+540+512+0-76+203-15-185-167-93+61-16-30 +sign_ed25519_open 9 14 114108 +5659+2268+1164+306+132+30+346-28+0-98-328-145-383-88-446 +sign_ed25519_open 9 18 111520 +5478+2870+1198+568+312+476+318-194-148-212-168+0-244-224-82 +sign_ed25519_open 9 23 112874 +5380+2889+1244+502+436-247-97-258-236+0+44-18+82-72-88 +sign_ed25519_open 9 29 113126 +5597+2446+1365+997+658+207-452-410-112-150-6-64+256+0-10 +sign_ed25519_open 9 37 112792 +5647+2236+874+548+744+292+72-240-86-380-106-320-160+0-74 +sign_ed25519_open 9 47 114220 +5758+2832+1442+504+592+224+184+0-188-12-330-468-254-122-162 +sign_ed25519_open 9 59 113922 +4871+1677+1036+168+44+358-150-312-138+0-18+42-174-216-280 +sign_ed25519_open 9 74 113010 +5875+2398+1516+928+294-58-176-132-136+46-252-62+0+38-156 +sign_ed25519_open 9 93 113990 +5457+3302+1404+1298+414+76+26-18-216-186-122-218+0-254-252 +sign_ed25519_open 9 117 112236 +5700+3093+1194+816-34+86-38-16+42-80+502+0-610-384-40 +sign_ed25519_open 9 147 115154 +5558+2177+1249+552+296-98-159-351-156-436-184+158+22-128+0 +sign_ed25519_open 9 184 115146 +5958+3156+1580+839-57+246+212+86-138-74+0-114-100-172-190 +sign_ed25519_open 9 231 113596 +5619+2572+1686+886+80+0-16+94+0-62-436-448-242-456+0 +sign_ed25519_open 9 289 113270 +6250+3155+1696+1213+721+556-242+88+0-68-30-335-417-41-267 +sign_ed25519_open 9 362 114878 +5623+2996+1828+928-64+16-134-147+153-132-323-567+38-48+0 +sign_ed25519_open 9 453 115650 +6723+2868+1697+1131+134+126-224-76-346-280+0-312-210+642-81 +sign_ed25519_open 9 567 115978 +6100+3320+1390+680+172-26-205-177-34-338-326+48-244+0+38 +sign_ed25519_open 9 709 116526 +5987+2884+1254+1054+154+0-122-175-28-333+240+50-160-77-141 +sign_ed25519_open 9 887 118228 +4519+1972+970+346-32+98+54-24+0-20-192+78-200-90-118 +sign_ed25519_open 9 1109 120053 +5534+2431+1293+1189+653+153+15-104-503+0-76-109-304-490-288 +sign_ed25519_open 9 1387 119468 +5345+2578+1082+528+193-193+195+69+0-52-230-308-107-489-275 +sign_ed25519_open 9 1734 121997 +5598+3351+1347+577+129+221-113-49-327+422+0-285-193-663-481 +sign_ed25519_open 9 2168 122518 +5867+3152+1286+850+263+347-260-363-289+0-412-396-136-152+0 +sign_ed25519_open 9 2711 126364 +6744+2596+1000+880+250+278+182-268-234-271-58-35+0-32-246 +sign_ed25519_open 9 3389 131588 +6216+3068+1686+818+456+0+190+104-40-258-211-178-233-550-338 +sign_ed25519_open 9 4237 136071 +5917+2633+1351+543+63-52+18-52+0-124-24-29-5-317+89 +sign_ed25519_open 9 5297 141298 +5719+2890+1008+2085+354-12+194+162+0-104-18-306-332-120-230 +sign_ed25519_open 9 6622 149068 +5828+2984+1216+922+380+30+16-216+0-102-188-90-322-330-170 +sign_ed25519_open 9 8278 156968 +6109+2738+1397+827+84-43+215-48-18+10-124-8+0-112-30 +sign_ed25519_open 9 10348 168254 +6041+2494+1283+897+239-93+0-236-427-132-586-303+91+4-648 +sign_ed25519_open 9 12936 181204 +6930+3281+1527+989+236+192-78-69-116-176-112-10-32+0+232 +sign_ed25519_open 9 16171 199891 +6119+2291+1357+889+339+439-54+0+191-155-336-340-89-236-268 +sign_ed25519_open 9 20214 221781 +6578+2344+856+252-290-226-71+0+11-97-51-87+168+4-335 +sign_ed25519_open 9 25268 248916 +5743+2705+1006+840+459-269-89-472-53-334+199-187+0+202-128 +sign_ed25519_open 9 31586 282615 +6865+3268+1831+996+0+205+78-257-171-415+147-285-298-173-467 +sign_ed25519_open 9 39483 326746 +7107+1775+960+649+77-227-230+101-217+57-252+0-344-6-103 +sign_ed25519_open 9 49354 381336 +6160+2054+1252+572+0+33+74-318+43-458-503-274-346-590-480 +sign_ed25519_open 9 61693 445359 +7603+2908+1125+738+57-146+370+246+0-64-599-285-599-398-261 +sign_ed25519 10 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 10 32 29215 +2741-20-105-84-4+0+163-18+137+103+9+75+65-171-136 +sign_ed25519 10 0 32245 +1869+70-80-82-56+72-99+48-5+0-211-12+80+11+55 +sign_ed25519 10 1 32282 +378+1-91+13+127-136-95-81+0+15-93+59-95-14+26 +sign_ed25519 10 2 32234 -5+25-31-11+0-92-127+7+26-176-63+221+81+36+100 +sign_ed25519 10 3 32218 +339-7+13+153+37+28-90-22+0-17+25+3-126-10-65 +sign_ed25519 10 4 32200 +333-67+198+133-4-8+133-25-16+140-15-86+0+103+114 +sign_ed25519 10 6 32248 +159-119-119-143-60+292-101+50-67+156+113+91+0-49+56 +sign_ed25519 10 8 32229 +134-45-49+29+55+44+76-179-6+2+42-82-118-88+0 +sign_ed25519 10 11 32248 +275+5-138-44+106-35+0-242+129+82-243-90-206+37+257 +sign_ed25519 10 14 32199 +213-91+19+31-76+37-169-68-50-17+43-130+140+0+121 +sign_ed25519 10 18 32179 +150+31+97+5+187+54+0+40-77-66-134-119-120-39-52 +sign_ed25519 10 23 32222 +126-89-109-69+41+129+38-79+54+109+49-185-180-136+0 +sign_ed25519 10 29 32138 +638+121+0-79-49+67-1-78+4-44+120+81-124+8-17 +sign_ed25519 10 37 32257 +251+28+78-9-184+105+22+75+24-163-58+0-34-176-168 +sign_ed25519 10 47 32142 +241-31+88-20-17+78-123-112+96+0+39-72-40+93+115 +sign_ed25519 10 59 32858 +285+92+18+108+0+5-172-23+78-145-67-174+273-131-122 +sign_ed25519 10 74 32955 -25+30+99-181+0-100+27-23+76-107+53-198+28-73+20 +sign_ed25519 10 93 33684 +122+52-6+156-96-106-20-181+60-108+199+18-41+36+0 +sign_ed25519 10 117 33695 +412+90-104-134+66-24+83+87+0+40-110-94-26-121+46 +sign_ed25519 10 147 33685 +416+40-103-21-6-152+0+101+0+18+120+63+136-11-145 +sign_ed25519 10 184 34373 -50-200+17+164-262+133-53+5+92-99-35+0+14-12+32 +sign_ed25519 10 231 35042 +315+0+75-75+124-38+85-168-80+75+66+4-48-52-8 +sign_ed25519 10 289 35082 +84+30-25-111+17-100+109-32-40+78-159+2-12+29+0 +sign_ed25519 10 362 36427 +159-65+31-47+48+69-55+214-200-138+43+0-5+47-68 +sign_ed25519 10 453 37081 +560+255-125+107-77+116-7+171-9+61-32+0-265+71-118 +sign_ed25519 10 567 38453 +136+26+88-81+109-99-59+0-50+31-152-26+92+18-11 +sign_ed25519 10 709 39862 +417+112-32+60+30+0-37-33+50+0-168-103-74-231+83 +sign_ed25519 10 887 41890 +276+108-23-68-77-45-45-124+65+152-5+69+10+26+0 +sign_ed25519 10 1109 44685 +657+50-25-11-50+11-37+83-69+0+17-57+6+35-149 +sign_ed25519 10 1387 47297 +496+131-167-81+1-17+15-145-141+17+71+60+0-36-307 +sign_ed25519 10 1734 50633 +335+154+66-33-92-156-119+186+75+20-32+0-110-37+92 +sign_ed25519 10 2168 55468 +369+88+13+77+27+29-113-30-71+0-66-34-38-73+23 +sign_ed25519 10 2711 60954 +714+1+89+0+119+119+27-104+100-88-101-56-7-191-46 +sign_ed25519 10 3389 68383 +376+14-29+0+94+35+153+74+0-145-94+31-66-32-39 +sign_ed25519 10 4237 77209 +441+175+22+100-51-129+68-66-7-18+0-15-196+212+241 +sign_ed25519 10 5297 88683 +498-52-32-27+132+181-84+207+100+63-94-40+27+0-25 +sign_ed25519 10 6622 102878 +579-36+334-14-162-88-5+32+76+48+0-61-26+132+25 +sign_ed25519 10 8278 120538 +421+56-33+184+9-123-87-10+0+181+180+79-197-67-51 +sign_ed25519 10 10348 142059 +561+105-193+149-8-121-142+19-40+40-45+241+0-4+59 +sign_ed25519 10 12936 169273 +218+170-199+66-77+4-29-32-12+294-26+0+583+305-165 +sign_ed25519 10 16171 203090 +694-74-71+157-166+134-55-31-17+222+123+110+4-25+0 +sign_ed25519 10 20214 246435 +902+0-195-7-292-27-72+0-66+11+205+345+301+89+153 +sign_ed25519 10 25268 300484 +840-24-5-68+0-223+93+26+19+212+284-237-193+150-86 +sign_ed25519 10 31586 367079 +934+64+764+404+33+4-402-780-238-19-289-406-131+0+18 +sign_ed25519 10 39483 450216 +1529-322+83-161+105+50+1344+658-253-181-136+0-320-300+274 +sign_ed25519 10 49354 554491 +1348-53-44-149+1182+494+417+0-278-246-310-106+238+72+111 +sign_ed25519 10 61693 685736 +1334+0-468-214+33+4+125-308-109-275+90+358+166-274-57 +sign_ed25519_open 10 0 111902 +7414+3546+748+4+24-96-168-12+70+0+35-443-355-264-259 +sign_ed25519_open 10 1 112751 +6240+2441+719+621+83-193+59-201-101-305+0-264-124+6-241 +sign_ed25519_open 10 2 112258 +5505+3108+1090+370+0+100-207+167+134-268-244-496-569-705-306 +sign_ed25519_open 10 3 111749 +5772+2477+1237+553+119+139-149+0-203-314-147-419-264-8+5 +sign_ed25519_open 10 4 111678 +6087+2842+1120+522+456+182+189-38-297-172-378+0-194-308-247 +sign_ed25519_open 10 6 114426 +5364+2291+600+244+299+145-326-84-6-38-165-139+120+0-80 +sign_ed25519_open 10 8 112314 +5414+2548+773+766+878+97-305-541-562-264-14+0-292+4-154 +sign_ed25519_open 10 11 111940 +6569+2572+1683+941+356-137-90-43+0+20-72+30-152-135-377 +sign_ed25519_open 10 14 112610 +5209+2230+960+588+0-116+332+40+10-20-64-266-82-304-284 +sign_ed25519_open 10 18 113581 +6204+3271+1407+1169+359-156+77-167-231-106+5-143+0-157-252 +sign_ed25519_open 10 23 111072 +5811+2562+1368+769+99+0+150-16-136-200+4-37-148-360-269 +sign_ed25519_open 10 29 112996 +5922+2750+1231+374+0-121+60+298+160-190-192-410-288-140-186 +sign_ed25519_open 10 37 111226 +6315+2788+1528+744+374+100+0-244-114-29-457+371-39-216-234 +sign_ed25519_open 10 47 112394 +6094+3297+1654+1002+409+285+61+0-313-184-285-349-650-322-572 +sign_ed25519_open 10 59 114109 +6087+2633+1057+811+473+310+204-172+0-24-218-295-468-70-433 +sign_ed25519_open 10 74 114208 +5709+2450+930+394+100-40-24-140+38+0+20-44-318-345-585 +sign_ed25519_open 10 93 112862 +5668+2586+641+663+390+0-197-91+102-394+8-192-271-622-273 +sign_ed25519_open 10 117 114390 +5810+2431+1563+1140+300+66+6-154-458-438-330-532-392+0-368 +sign_ed25519_open 10 147 113253 +6268+2501+1190+999-1+180+149+293-57-30-145-78+0-76-83 +sign_ed25519_open 10 184 113794 +7112+3013+1152+848+156+264-62-281-127-156-120+0-106+158-158 +sign_ed25519_open 10 231 113274 +6117+2334+808+684+248+14+2+0-461-347-140-36-292-248-114 +sign_ed25519_open 10 289 114610 +5798+2492+1198+328+92+165-186+0-34-58-61+30-262-50-276 +sign_ed25519_open 10 362 114318 +4952+2260+530+308+57-146-76-263+216-244+0-197-64-9+4 +sign_ed25519_open 10 453 115484 +6335+2714+898+648+216+26-204+100-114-122+0-94-220-228-602 +sign_ed25519_open 10 567 116556 +5952+3078+1216+498+382+0+128-150-352-460-266+22-38-548-466 +sign_ed25519_open 10 709 115490 +5929+2112+1672+642+65+0-421-306-142+10-148-144-104+12-156 +sign_ed25519_open 10 887 118402 +5973+2952+1496+632+580+210-80-80-408-112-50+112-34+0-140 +sign_ed25519_open 10 1109 119271 +6306+3475+1687+1069+228+30+47-178-142+0-5-321-209-192-179 +sign_ed25519_open 10 1387 120762 +6239+2866+1492+621-15+0+44-268-370-152+4-78-30-4+20 +sign_ed25519_open 10 1734 123106 +6447+3304+1524+976+298-138-228-180+0+10-50-22-150+34-162 +sign_ed25519_open 10 2168 125217 +5878+3307+1533+1241+498+334-326-468-403+0-214+20-566-582-882 +sign_ed25519_open 10 2711 126890 +5798+2290+1030+903+0+77+114+46-420-200-545-185-460-136-312 +sign_ed25519_open 10 3389 132468 +6239+3363+1419+952+208+202+0-64-214-122-221-45+70-246-132 +sign_ed25519_open 10 4237 135406 +6821+2414+894+916+446+72+36-48-170-366+0-228-394-22-96 +sign_ed25519_open 10 5297 141510 +6213+2716+1112+502+206+490+138-62-22-24-302-102-214-144+0 +sign_ed25519_open 10 6622 147490 +6129+2390+798+434-82+0+2-26+16-196-184-10-274+50-257 +sign_ed25519_open 10 8278 159088 +5524+2483+1341+684+328+0-18-244+102-70-342-412-528-386+4 +sign_ed25519_open 10 10348 168507 +6105+3201+1689+981+226-12-179+0-29-25-121-358-307+251+9 +sign_ed25519_open 10 12936 181878 +6106+2439+2200+781+0-353+61+16-231-89+49-29-230-268-112 +sign_ed25519_open 10 16171 198438 +6706+2728+1220+670+154-105+196+109+0-328-118-140-304-380-108 +sign_ed25519_open 10 20214 220792 +6128+2407+1070+224-606-252-124-250-140+467-640+57-345+89+0 +sign_ed25519_open 10 25268 247973 +6550+3213+1636+876+143+105-32+91-228-102-255-68-427-36+0 +sign_ed25519_open 10 31586 283391 +7386+2680+1191+504+111-3+0-434+266-410-673-217-296+11-496 +sign_ed25519_open 10 39483 326750 +6347+2604+1106+1064+0-38-103-306+1020+19-420-467-81-135+84 +sign_ed25519_open 10 49354 380775 +7019+2375+753+522+154+0+259-148-290+625-135-116-350-1-196 +sign_ed25519_open 10 61693 445787 +6169+2268+669-84+633+25-197-307-414-303+0-248-219+448+1423 +sign_ed25519 11 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 11 32 29016 +18185-184+128-99+66-51-85+50+178-36-42-34+25+0+55 +sign_ed25519 11 0 32545 +3981+81+155+0-192+33-100-52+39-179+1+44-67-213-117 +sign_ed25519 11 1 32430 +465+235-29-29-34+59+111-2-155+136-88+0+95+81-32 +sign_ed25519 11 2 32429 +496+86+179-194+5+124+54-47-54+104-18-86+0-26-45 +sign_ed25519 11 3 32453 +316+37+30+10-28+80-215-200-52+24+0-15-199+5-16 +sign_ed25519 11 4 32407 +602+90-110+211-21+25+0-187-7-1+165-115+2+94+0 +sign_ed25519 11 6 32380 +274+295+170-75-8-1+109-172-138+100+85-11-59+140+0 +sign_ed25519 11 8 32501 +381+74+12-34+0+79-66-91+118+110-256+80-124-97-140 +sign_ed25519 11 11 32504 +342+0-193-136-33+35-148+7+81+8-217-85+97+94-23 +sign_ed25519 11 14 32468 +236+114+273+0+130-69-18+10+87-28-132-145-56-7+118 +sign_ed25519 11 18 32442 +284-18-73-126+0+174+89+35-20+15-41+81-25-1+171 +sign_ed25519 11 23 32509 +263+43-206-107-123+0+283+185+350+10-130-22-111-17+13 +sign_ed25519 11 29 32442 +351+19-142+60-88+0+7-69-146+77-111-39+69-3+37 +sign_ed25519 11 37 32460 +566+10-82+30+43-54-21-75-63+32+129-124+0-121+131 +sign_ed25519 11 47 32476 +253+67-76+20+26-44+51-105+0+72-128-181-100-152+144 +sign_ed25519 11 59 33083 +582-16+473+66+206+94-38-10+19+3-39-44+0-110-115 +sign_ed25519 11 74 33190 +199+157-73+513+65-39-52+15+11+0-143-55+68-161-75 +sign_ed25519 11 93 33944 +281+175-117+19+0-111-167-138-25+88+2+35-192+35-1 +sign_ed25519 11 117 33855 +422-65+20-57+43+55+20-48+29+0-104-172+187-34-30 +sign_ed25519 11 147 33942 +581+13-103-12-29+15+28-158+0-113+69-77-151+110+47 +sign_ed25519 11 184 34582 +111+6+138-110-37-10-43+63+50-40+77-151+0+34-179 +sign_ed25519 11 231 35268 +416+170+16+61+0+38-31+139+202-60-13-31-44-63-60 +sign_ed25519 11 289 35292 +616+106-107+284+52+36-65-66+202-179-1+57-185-149+0 +sign_ed25519 11 362 36633 +355-119+74+0+53-95+32-25+9-43-56-43+80+81-2 +sign_ed25519 11 453 37386 +506-202-70-23+7-68-139-164+30-118+0+137+168+108+57 +sign_ed25519 11 567 38629 +324+333+0+3-5-20-13+84+97-23-33+146-48-120+214 +sign_ed25519 11 709 40141 +531+21+108-75+52-67+18-43+51-148+0-292-109-45+30 +sign_ed25519 11 887 42141 +158+36-107+25-2+0-19-229-119+63+698+1-190-175+151 +sign_ed25519 11 1109 44795 +414+165-98-32-136+44-6-75-191+90+50+0+76+46-24 +sign_ed25519 11 1387 47406 +1201+235+166+255+159-162-23+362-26-50+58-136-12-35+0 +sign_ed25519 11 1734 50920 +383-247+60-22+6-144-40-6+171-151+26+166-130+0+54 +sign_ed25519 11 2168 55664 +640+115+3-91+146-121+163+72+209+0-23-72-98-153-78 +sign_ed25519 11 2711 61150 +294+146+44-37+0+64-32-46+53+516+77-113-61-138-110 +sign_ed25519 11 3389 68672 +70+74+8+84+2-208+0-114+67-120-29-55-246+45-195 +sign_ed25519 11 4237 77484 +1315+94-25+94+132+0-12-10+9-165-175+45+72-74-26 +sign_ed25519 11 5297 88866 +972-9+136-162+0-82+366+112-3-22+132-208+204+49-116 +sign_ed25519 11 6622 103103 +323+107-17+29+150+0+95+808-55-246-54+101-47-10-68 +sign_ed25519 11 8278 120773 +744+454+165-81-54-129+197+84+189-14+9+0-57-126-244 +sign_ed25519 11 10348 142353 +81+259+0-39-21+104+201+144+46-345-7-64-355+164-119 +sign_ed25519 11 12936 169450 +1115-167+0+55-128+118-136+195+14+275-222+133-64-89-225 +sign_ed25519 11 16171 204401 +2397-195+1263-458+0-96-257-79+1270+1960+556+102+1678-376-292 +sign_ed25519 11 20214 250405 +1292-2327+1498-1209+571+0-762+534-866+2381-1074+168+488-1322-2097 +sign_ed25519 11 25268 300820 +5760-179-275+316+3690+2471+0-310+237-186-644-246+85-44+243 +sign_ed25519 11 31586 367486 +3314+185+0+678-27-271+493+581-451-384-35-179+281+83-278 +sign_ed25519 11 39483 450411 +2689+138-305-50-231-168+486+222+52-239-104+0+54+80-209 +sign_ed25519 11 49354 554708 +2381+372-131+53+1373+0-317-116+253-209-27-3-71+11+95 +sign_ed25519 11 61693 685940 +2541+449+813+183+95-504+46-285+350-288-349-183-78-292+0 +sign_ed25519_open 11 0 112750 +20024+3236+1740+176-44-16+0-79-261+90+122+352-90-20-436 +sign_ed25519_open 11 1 113960 +5939+3010+1448+828+181-315-364-246-476-186-56+34+0+82-182 +sign_ed25519_open 11 2 111992 +5785+2782+1214+1040-46+76-178+78-50+0-88-104+30-10-354 +sign_ed25519_open 11 3 112186 +5628+3057+1134+609-56+74-126+5-60+0-52+94-6-203-92 +sign_ed25519_open 11 4 112693 +6544+2795+1727+526+128-265+35-409-109-2+0+297-41-354-152 +sign_ed25519_open 11 6 113179 +6657+2893+1317+675+371-213+263-443+5+0-192-155-360-150-261 +sign_ed25519_open 11 8 112484 +5797+2164+1140+492-54+52+316-88+0+186-222-252-216-448-308 +sign_ed25519_open 11 11 112274 +5457+2399+1401+726+110-26+132-66+0-174-266-108-338+16-398 +sign_ed25519_open 11 14 113494 +5897+3114+994+490+140+18-226+0+133-241-476-312-414-470-146 +sign_ed25519_open 11 18 113746 +5471+2546+960+482+353-91-258-148-14+142+8-386-300+0-230 +sign_ed25519_open 11 23 113194 +5655+3236+1438+696+266+54+116-284+0-224-250-336-118-222-410 +sign_ed25519_open 11 29 112820 +5581+2294+1286+992+162-124-176+94+148+0-124-304-620-102-116 +sign_ed25519_open 11 37 112340 +6385+2426+1508+266+64+82-264+0-254-152-386-218+193-786-602 +sign_ed25519_open 11 47 112650 +5685+2854+1180+500+38-115-115-100+54+15+0-269-323-441-280 +sign_ed25519_open 11 59 114022 +6094+2299+1392+600+42-80-134+146-310-68-144+4-16+0-262 +sign_ed25519_open 11 74 114040 +4841+2382+1104+672+1681+160-470-566+0-172-148+112-406-444-206 +sign_ed25519_open 11 93 113330 +6767+2962+1725+789+376+84+40-170-90-212-62-194+0-48-72 +sign_ed25519_open 11 117 113896 +5597+3034+1348+818+0+399+255-72+78-28-108-252-168-628-528 +sign_ed25519_open 11 147 112530 +6451+3018+912+722+302-168-296-188+4-86+206+0-520-540-552 +sign_ed25519_open 11 184 114754 +5533+3609+1297+986-138+93+112-317-146+178-168-101-197+0-178 +sign_ed25519_open 11 231 113370 +5244+2716+666+464-230-500+0+28+18+56-256-226-574-256-384 +sign_ed25519_open 11 289 114084 +5718+2578+1240+890+436-173-264-162-43+148+0+142-86-197-181 +sign_ed25519_open 11 362 113920 +5387+2251+1118+983+344+156+206+0-362-236-426-198-230-124-482 +sign_ed25519_open 11 453 115128 +5530+2626+1380+410+280-276+60-334+0-326-112-252+0-82-68 +sign_ed25519_open 11 567 116390 +5622+3268+1326+790+60+234+0+348-214-112-256-556-340-264-494 +sign_ed25519_open 11 709 118046 +5945+2628+1480+1686+185+0+72-158+132-26-150-48-112-56-200 +sign_ed25519_open 11 887 118642 +5451+2628+1368+608+234+120+0-76+50-176-59-131-198-540-190 +sign_ed25519_open 11 1109 119190 +5978+3402+1904+1096+402-58-262-120-314+0-100-364-372+162+8 +sign_ed25519_open 11 1387 119874 +6292+2969+1156+513+180+182-40+0-228+272-86-24-170-78-214 +sign_ed25519_open 11 1734 121696 +6484+2498+1214+740+388+0+166+76-234-84-200-362-368-436-875 +sign_ed25519_open 11 2168 124045 +5842+1669+451+271+259+245-321-474+0-585-611-171-177+693-291 +sign_ed25519_open 11 2711 126654 +6461+2596+1034+830-6-192+98+90-12+136-62+0-178-142-488 +sign_ed25519_open 11 3389 131952 +5948+2087+1040+719+166+168-18+220-44-61-17+0-380-642-582 +sign_ed25519_open 11 4237 133880 +6321+2716+1282+362+212+136-252-164-158-54+44+0-260-134-58 +sign_ed25519_open 11 5297 141236 +6171+3245+1215+337+195+78-374-46+0+78-570-88-356-70-164 +sign_ed25519_open 11 6622 147752 +6565+3482+1181+463+161+0-14+276-112-64-30+150-107-43-114 +sign_ed25519_open 11 8278 157432 +5732+2190+688+0-438-637+1337+1629+2003+1018-848-746-806-600-580 +sign_ed25519_open 11 10348 168775 +6611+2489+1165+798+35+89-255+59-205+0-168-37-299-194-302 +sign_ed25519_open 11 12936 181050 +6736+2553+956+1427+448-187+318-48-30+26+0-338-36-166-348 +sign_ed25519_open 11 16171 200015 +6201+1870+367+457+315+0+210-59+97-127-260-352-256-194-484 +sign_ed25519_open 11 20214 222385 +6574+2309+667+545+170-344-180-37+3+461+0-327-402-187-99 +sign_ed25519_open 11 25268 249097 +7329+3405+1427+1160+557+651+244+0-75-352-6-238-488-23-124 +sign_ed25519_open 11 31586 283203 +7323+2661+1133+753+157-101+7-353-439+0-170+41-142-36-367 +sign_ed25519_open 11 39483 326781 +7429+2476+1062+659+266+22-254-47+760-163-186-235-222-487+0 +sign_ed25519_open 11 49354 380202 +7660+2570+1000+764-43+148+210-9-178+617+0-443-390-508-482 +sign_ed25519_open 11 61693 446093 +7578+2177+1214+774-5+1184-425-433+165-28+66-156-308-145+0 +sign_ed25519 12 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 12 32 29106 +1733-38+73-5+237-24+0+99+50-37+6-15+3-21-2 +sign_ed25519 12 0 32161 +3028+122+96-34-103-15+20-89-50+177+0-181-56+99+135 +sign_ed25519 12 1 32278 +444-219+13-60+189-13+11+0+68+92-21-81-36-47+4 +sign_ed25519 12 2 32312 +281+0-205-107+7+154-108+67-301+1-6-68+53+39+0 +sign_ed25519 12 3 32231 +172+149-278-119-24+33+174-48-18+51+0-127-27+268+56 +sign_ed25519 12 4 32230 +391-208-38-43+78+208+0-151-5+54+161+23-98-41+170 +sign_ed25519 12 6 32278 +267+4+43-109+25+105+39-1+0-157-58+0-181-61-103 +sign_ed25519 12 8 32201 +548-67+47+6-44+0+165-193-71-128-49+0+23+210+132 +sign_ed25519 12 11 32221 +332-100-90-164-43+82-46+0+143+252+127-29+0+123-55 +sign_ed25519 12 14 32253 +315-99-1+0+53+24+40-186-55-36+104-142+39-61+81 +sign_ed25519 12 18 32187 +402+37-118+49-156+93-129-11+33-17+123+0-148-14+10 +sign_ed25519 12 23 32173 +387-1-23+173+262+173-27-54+134+151-23-149+23-65+0 +sign_ed25519 12 29 32181 +522-107-95-37-23+107+8+49+69-131+0-38-125+98+43 +sign_ed25519 12 37 32269 +211+75+31+64-33-99-95+138+0-106+37-32+4-182-150 +sign_ed25519 12 47 32215 +187+140+218+0-166+16-58+6-36-144+32+38-40-72-116 +sign_ed25519 12 59 32911 +448+23-87-10-65-74-59-171+0+22+57-54+192+389+2 +sign_ed25519 12 74 33015 +323-109+212-2-93+0+19-187-167+19+38-20-263+136+105 +sign_ed25519 12 93 33700 +141+35-50-11-84+0-68-27+7+100-27-154+76+95+47 +sign_ed25519 12 117 33689 +398+165-196-28+185-50+15-39-127-118+145+0-75+94+85 +sign_ed25519 12 147 33808 +177+45-75-175+3+118+77-223+54+0-63-91-175-276+49 +sign_ed25519 12 184 34382 +547+101+4-34+38-101-52-17+64-81-186+0-27+29+129 +sign_ed25519 12 231 35002 +574+153+35+0-7-119+208-23+80-34+111-48-115+89-19 +sign_ed25519 12 289 35102 +484-36-144+69+90-4+247+98+29-86+73+0-45-68-19 +sign_ed25519 12 362 36467 +193+23-22+66+49-19+0-44+120-5+6+46-63-133-38 +sign_ed25519 12 453 37161 +444-141-109-53-84+80+1-125-71+169+0+50+0-76+29 +sign_ed25519 12 567 38500 +355+60+29+132-152-27-14-132-81+111+0+110-198-27+28 +sign_ed25519 12 709 39867 +556+85+0-268-159+92-226+43-171-43+50+93+0+5-150 +sign_ed25519 12 887 41910 +358+0+34+181-61-12+136-37-102+39-15+69+110-86+0 +sign_ed25519 12 1109 44533 +572-178+176-208-19+38-9+2+150-55+6+5-14+0-222 +sign_ed25519 12 1387 47289 +390+77+205-129+3-151-1-48-25+1+0-123+105-43+5 +sign_ed25519 12 1734 50765 +473+148-59+45-31-63+889+368-270+37-53-67+0-29+96 +sign_ed25519 12 2168 55449 +640+76+197-118+25+40+8-124-186-67-94+20-13+0-66 +sign_ed25519 12 2711 60932 +651-33-146-10+148-30-55+38+171+36+12-2+0+28-40 +sign_ed25519 12 3389 68528 +878+234-24+28+109+0+60+37-26-36-169-139-169-115+37 +sign_ed25519 12 4237 77216 +336+321-83-62+165+237+9+199-71-207-195+0-140+176-167 +sign_ed25519 12 5297 88746 +306-70+18+0+113-10+3-53+140-11-10+37-108+19-231 +sign_ed25519 12 6622 102990 +286+0+88-90+71-36+52+112-89-5-106-96+262+4-99 +sign_ed25519 12 8278 120541 +630+149+86-9+48+165-6-19-4+0-28-188+118-109+92 +sign_ed25519 12 10348 142210 +116-119+170+0-64+220+82-147+59-140+85+17-136-102-17 +sign_ed25519 12 12936 169421 -76+174+169+106-351-76+49+66-497+341+0-136-487+27-24 +sign_ed25519 12 16171 203216 +334+692+101-1+53-59-154+74-43-260-164+281-109+58+0 +sign_ed25519 12 20214 246658 +628+157+33-305-229-31-128-158+0-210+58+25+23-132+33 +sign_ed25519 12 25268 300473 +1058+125-172-37-94+178+162+25-95-60+0-136-73+89+88 +sign_ed25519 12 31586 367086 +1274-149+81-90+0-118+40+31+70+738+631-307-288-82-253 +sign_ed25519 12 39483 450203 +693+10+58-279-182-404-223-262+35+0+79-271+855-268+81 +sign_ed25519 12 49354 554515 +814-248-275-113-144+55+31+40+491+985-45-168+77+0-376 +sign_ed25519 12 61693 685793 +1466+78+397+0-290-301+321-586-533-532+496+358-654+444-30 +sign_ed25519_open 12 0 111784 +7187+2923+1025+645-152+64-14+122+164-232-191-403-418-174+0 +sign_ed25519_open 12 1 111710 +6388+2508+1698+1512+289+391+0+12-69-346-202-111-274-34-2 +sign_ed25519_open 12 2 111438 +5378+2416+1088+806+149+13-66-12-192-48+200-32+0-322-164 +sign_ed25519_open 12 3 112162 +5793+1980+1459+687+278+214+50-20+0-82-111-279-226-46-158 +sign_ed25519_open 12 4 112254 +5577+2430+910+386+164+154+156-54-170-304-202-158-110-46+0 +sign_ed25519_open 12 6 113748 +6241+2596+1254+792+240+126-10+0+64-376-140-244-411-24-368 +sign_ed25519_open 12 8 114290 +5326+2330+832+578+462+0+16+282-171-293-468-292-364-558-76 +sign_ed25519_open 12 11 113000 +6434+2937+923+352+0+112-40+36-434-641+424-423-340-357-501 +sign_ed25519_open 12 14 112142 +5423+3009+1486+801+324+108+312-166-117-557-692-282-456-62+0 +sign_ed25519_open 12 18 113151 +6400+3453+1606+1177+207+260-100+0+47-248-114-163-561-329-315 +sign_ed25519_open 12 23 112593 +5499+2467+1058+709+186+201+0+42-87-343-129-341-219-227-211 +sign_ed25519_open 12 29 113886 +5339+2446+1091+359+300+94-185-135-418-186-102-260+10+0-102 +sign_ed25519_open 12 37 112200 +6212+3420+1380+774+124+0-110-195-511-460-258-256+30+68-114 +sign_ed25519_open 12 47 112166 +6199+3427+1601+970+242-152-236-484-400-296+0+80+112-125-175 +sign_ed25519_open 12 59 113282 +6347+2620+1378+972+482-44-110-152+96-364-144+0-96-62+6 +sign_ed25519_open 12 74 114770 +5213+2804+1414+788+532+6+70-88+0-98-306-202-436-200-299 +sign_ed25519_open 12 93 112782 +5930+2544+1070+550+40-228+110+60-96-144-120-444-192+0-212 +sign_ed25519_open 12 117 113822 +5289+1896+842+248+194+178-132-180+0+66-394-280-374-562-424 +sign_ed25519_open 12 147 111408 +6246+3279+1104+637-109+67+0-43-81-223-274-269-36+98+66 +sign_ed25519_open 12 184 114230 +5206+2642+1707+968+559+358+0-58+17-145-229-410-15-220-118 +sign_ed25519_open 12 231 113916 +5875+2888+1134+336-174+705-317-447-315+0-184+48+122-128-151 +sign_ed25519_open 12 289 115904 +5443+2018+922+526+0-242+96-56+28+62-40-402-584-402-444 +sign_ed25519_open 12 362 115976 +5455+1562+902+176+4-160+60+34+0-682-523-775-919-792-673 +sign_ed25519_open 12 453 115969 +5464+2533+1329+861+263-42-107+43-64-375-265+31-207-328+0 +sign_ed25519_open 12 567 116948 +6041+2514+1738+816-100+102+46+0-252+31-362-451-736-474-466 +sign_ed25519_open 12 709 118026 +5568+2536+1596+1212+0-44+230+174+6-80-260-374-250-42-120 +sign_ed25519_open 12 887 118154 +5373+2754+1288+608+58+0+787-191-116-50-30+92-18-28-32 +sign_ed25519_open 12 1109 120516 +5291+2928+1572+900+208+38-74-370+9-397-256+0-306-404-314 +sign_ed25519_open 12 1387 119264 +6144+3028+1268+702+146+338-142-66-166-172+142-284-260+0-260 +sign_ed25519_open 12 1734 122780 +6994+2134+1540+794+182+0-78+136-61-11+36-312-678-520-656 +sign_ed25519_open 12 2168 123854 +6633+3139+1767+838+6-508-228-316-532+0+112-144+86-6-312 +sign_ed25519_open 12 2711 126828 +5868+2286+1020+1006+226-390-322-606-210+0-124+164+426-443-342 +sign_ed25519_open 12 3389 131558 +6294+2784+1572+534+0+196-238+962-171-337+50-416-388-570-516 +sign_ed25519_open 12 4237 135712 +6452+2740+1426+556+184+320+0-550+1184-240-180-538-184-164-230 +sign_ed25519_open 12 5297 142790 +6356+2790+1928+1198+330+50-22+109-285-138-231-289+0-96-294 +sign_ed25519_open 12 6622 148478 +6118+2226+2045+699+120-304+196+0+6-288-48-324-10-140-112 +sign_ed25519_open 12 8278 157176 +6583+3394+1420+588+504+68-54-176-364-96-248+0+42-432-120 +sign_ed25519_open 12 10348 168689 +6408+2804+1355+967+512+179+0-75-210-26-324-288-377+72-52 +sign_ed25519_open 12 12936 182446 +6606+3336+1426+370+78+258+0-200-406+168-122-22-54-42-10 +sign_ed25519_open 12 16171 198815 +6503+2923+848+853+149+0-95-35-108-248-51-159+230+271-294 +sign_ed25519_open 12 20214 221927 +6887+2387+836+340-95+283-287-112+28-410+0+91-353-378-344 +sign_ed25519_open 12 25268 250380 +5984+3019+857+570+139-41+269-68-216-147-392-233+0-273+438 +sign_ed25519_open 12 31586 284395 +6875+3599+1278+969+709-44+630+0+106-263-345-210-630-389-439 +sign_ed25519_open 12 39483 326533 +6663+2094+932+135+153-374-327+0-89+562-231-221-218+317-61 +sign_ed25519_open 12 49354 378820 +7554+3149+1550+477+263+159-275-330-138-182-133-381+0-62+1632 +sign_ed25519_open 12 61693 446251 +7065+2369+1298+664+379+289+0-123-169+1512+0-90-64-222-198 +sign_ed25519 13 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 13 32 29101 +1569-254+48-56-163+46-60+24-130-110+311+126+43+0-31 +sign_ed25519 13 0 32406 +3367-172-97+57-112-88+0-136+118+133+27-94+17+14-64 +sign_ed25519 13 1 32402 +143-79+44-31-68-6+3+181+95-32+20-5+54+0-44 +sign_ed25519 13 2 32382 +294-47+0+85-96+37+98+64-52-5-87-55-37+45+133 +sign_ed25519 13 3 32366 +356-50-59-91+0+193+148+121-56+16+136-48-57-4+184 +sign_ed25519 13 4 32371 +415-2+154-51-43-27+46+43-83+54+111+0-203+114-29 +sign_ed25519 13 6 32408 +213-52-158-147+0+28+70-9+115-131-31-77+36+121+44 +sign_ed25519 13 8 32387 +550+58+0-66+171-147-212+125+16+30-121+35-29-65-95 +sign_ed25519 13 11 32374 +376+123+6-41+47-65-113+98-17-17-14+13+60+0-111 +sign_ed25519 13 14 32333 +25-51+166-80-81-104+102+100+108+110-119-107+147-15+0 +sign_ed25519 13 18 32426 +0+44+4-94-24+0+97+14-140-6+131-62-112-223+141 +sign_ed25519 13 23 32387 +152+190+140-66-158+66+157-46-91+173+6-43+0-181-52 +sign_ed25519 13 29 32402 +379+100+59+120+142-95-193-123-34-177-52-295+0+10+153 +sign_ed25519 13 37 32403 +292-55+267+0-72-310+110+64+0+16+4+6-57-144-87 +sign_ed25519 13 47 32398 +97+252+70-89+133+12+0-177-135-189+67+157-164-148-121 +sign_ed25519 13 59 33070 +136+0+193-78+81+6+107-31+14+14-44-4-14-24-29 +sign_ed25519 13 74 33103 +515+239+112-167+100-57-45-60+116+136-70-22+0+41-105 +sign_ed25519 13 93 33869 +370+85-107-38+29-48+45-117+90-159+9-10+0-78+44 +sign_ed25519 13 117 33811 +345+173+121-8+901-57+0-96-84-77-110-197+94+33+19 +sign_ed25519 13 147 33840 +411+97-97-1+114+28+0+2-199-184-26-241-120+167+40 +sign_ed25519 13 184 34558 +297+167-30-33-120+125+18+71-151+0+174+0-99+19-261 +sign_ed25519 13 231 35191 +485-104+273-69+203-17-152+21-71+105+117-137+62-22+0 +sign_ed25519 13 289 35226 +245+82-149+5+0-184-18-18+85+65-238-37+89+84-84 +sign_ed25519 13 362 36614 +459-48+76-92-147-132+63+0+118+137+89-29+0-133+53 +sign_ed25519 13 453 37267 +290-24+223+7-2-2-100+0-48+26+16-12+75-57+46 +sign_ed25519 13 567 38620 +74-13+0+84+302-74+153-27-52+150-99+70-80-164+208 +sign_ed25519 13 709 40016 +102-124+57-157+0+45+43-163-1+20-234+34-88+87-122 +sign_ed25519 13 887 42024 +193-65-88-40-111+100+251+0-10-163+124-50+201+39+63 +sign_ed25519 13 1109 44730 +391+43+183-24-4+0-40-52-42+23+32+197-10+103-30 +sign_ed25519 13 1387 47417 +341+167+68-62+60-30-46+219-8-80-103+206-2+0+14 +sign_ed25519 13 1734 50912 +289+72+0+45-169+109-117-290+29-87+19-210-124+19-132 +sign_ed25519 13 2168 55610 +364-86+120+62-73-32+249-59-37+0+32+52-188+713-116 +sign_ed25519 13 2711 61015 +508+209+89+81+171-49+288-35-59-85-2-122+81+0-110 +sign_ed25519 13 3389 68616 +204+90-96-13-140+250-77+87-13+61+57+0-60-111+110 +sign_ed25519 13 4237 77433 +818+18+2-38+208-185-56-15+45-19+0+64-95+109-25 +sign_ed25519 13 5297 88868 +524+48+97-83+134-167-202+131+83-70-15+62-175-130+0 +sign_ed25519 13 6622 103112 +263+0-217+26-17+79+44-36-80+40-35+52+22-28-281 +sign_ed25519 13 8278 120814 +88-83-232-74-201+4-154+124+99+34+125+825+0-110-88 +sign_ed25519 13 10348 142432 +152-404+0-19+10-8-46-20+70+1-127+38-126+35+189 +sign_ed25519 13 12936 169430 +387+228+14+0-134+239-84-50-254+336-66+98-84+260-170 +sign_ed25519 13 16171 203338 +60-44+61-195+85+44-286-123-132+998+0+392+40-47-60 +sign_ed25519 13 20214 246564 +809+50+123+147+106-177-214-229-56+34-251+0-78-107+110 +sign_ed25519 13 25268 300680 +594-374-470+0-102+526+70-67+47-31+162+114+165-13-53 +sign_ed25519 13 31586 367041 +1230+345+217-151-202+0-332-273-19+119-137+89+76-288+804 +sign_ed25519 13 39483 450357 +1531+396+275+123+84-118-105-139-336-42-181-599+140+0+51 +sign_ed25519 13 49354 554608 +1038+15-177-27-76-173+0+171+637+250-125+1134+677-330-84 +sign_ed25519 13 61693 686002 +985+130-395+432+799+575-234-208-20-470-24+0+147+47-123 +sign_ed25519_open 13 0 114060 +7657+3268+944+374-112-438-354-458-164-366-116+0+56+34+146 +sign_ed25519_open 13 1 113018 +5805+3208+1476+908+380-182+180-354-318+0-222-136+96-150-236 +sign_ed25519_open 13 2 112858 +6248+3435+1530+950+750+374+314+0-27-269-324-524-430-358-242 +sign_ed25519_open 13 3 112868 +5577+2206+1078+248+62+0-246+104-110-484+20-414-372-336-114 +sign_ed25519_open 13 4 113744 +5714+1860+878+752+278+90+202-110-431-49-374+0-334-124-382 +sign_ed25519_open 13 6 112358 +5179+3346+1336+774+482+220-24+0-152-66-50+50-191-255-38 +sign_ed25519_open 13 8 113444 +6105+3368+1407+1039+601+265+128-60-154-194-384-364+0-334-246 +sign_ed25519_open 13 11 110640 +5779+2604+1376+554+570+196-111-21-258-236-94+0+138-338-446 +sign_ed25519_open 13 14 113474 +5680+2719+886+546+138-198+132-316+882-307+0-174-146-250-456 +sign_ed25519_open 13 18 112424 +5623+3786+954+716+146-128-224-300-136+0+82+60-420-242-336 +sign_ed25519_open 13 23 112018 +6306+2802+936+414+0-2+112+120-368-304-508-236-184-16+104 +sign_ed25519_open 13 29 111766 +5763+3362+1762+1388+628+316-70-200+8-244-12-60+0-128-156 +sign_ed25519_open 13 37 112877 +5383+2643+870+454-47-207-117-219+55-37+75+21+0-268-409 +sign_ed25519_open 13 47 113408 +5674+2433+1232+930+168+0+64+32-66-122-198-176-275-403-532 +sign_ed25519_open 13 59 113322 +5131+2218+632-64+81-61+60-84-100-120+300+0-1-375+261 +sign_ed25519_open 13 74 114199 +6038+2549+1341+893+301+237+250+0-163-381-371-247-270-50-125 +sign_ed25519_open 13 93 112958 +6135+3224+1194+536+510-88-106-143-533-482-668-348+30+0+106 +sign_ed25519_open 13 117 114072 +6036+2406+1138+452+80+6-319-265-150-258+0-197-245+158-342 +sign_ed25519_open 13 147 113914 +6232+2924+1502+850+328+226+122-28-218-270-224-282-196-412+0 +sign_ed25519_open 13 184 114364 +5894+2106+894+637+329+156+22-38+0-332-72-218-336-646-432 +sign_ed25519_open 13 231 115530 +5079+1686+881+556+113-142-3+0-117+230-240+74-216-334-278 +sign_ed25519_open 13 289 115376 +5852+2380+2185+635+40-182-578-194-428-248-246-254+82+0+138 +sign_ed25519_open 13 362 114492 +5559+2352+992+471-76-235-242+138+13-57-33+159+0-164-544 +sign_ed25519_open 13 453 115427 +6003+2864+1364+803+87+46+54+0-476-351-491-497-313-329-307 +sign_ed25519_open 13 567 116460 +5439+2438+994+110-68-376-188-242-418-318-424+0+170+152+104 +sign_ed25519_open 13 709 115554 +6150+2756+1366+742+0-64-112-215+47+46-128-123-166+116-325 +sign_ed25519_open 13 887 116902 +5370+2077+1107+542+218+32-407-25-256-160-56+66+0-230-227 +sign_ed25519_open 13 1109 118776 +5044+2530+1682+286+78+0+10-260+38-254-162-402-364-128-256 +sign_ed25519_open 13 1387 119350 +5492+2934+1170+598+359-19+110+230-64-56-216-162-156-126+0 +sign_ed25519_open 13 1734 122532 +6261+3272+1411+921+398-126-212-92+304+0+2-253-55-218-78 +sign_ed25519_open 13 2168 124442 +5962+3590+1517+887+520+433-35-308-64-340+234+0-274-230-254 +sign_ed25519_open 13 2711 128504 +5667+2424+1554+618+64-112+114+62-38+0-482-804-180-150-80 +sign_ed25519_open 13 3389 130911 +6048+2953+1051+495+331+491+774-43-17-207-163-3-341-176+0 +sign_ed25519_open 13 4237 135994 +5814+2392+860+721+327+336+98-144-110-139-265+0-40-213-289 +sign_ed25519_open 13 5297 141428 +6065+3076+1182+708+413+257+66+0-68-206-318-112-182-262-168 +sign_ed25519_open 13 6622 149674 +5838+2874+1568+1066+368+208-38+103-191-2-328-332-412+0-254 +sign_ed25519_open 13 8278 157242 +5893+2264+1014+489+1161+71-89-336-524-84+62+0-328-382-286 +sign_ed25519_open 13 10348 167217 +6061+2696+1287+897+84+4+0+15-223-271-334-400-329-395-149 +sign_ed25519_open 13 12936 180536 +6593+2576+1138+740+592+34+0-53+63-240-248-256-386-98-240 +sign_ed25519_open 13 16171 197903 +6269+2602+1336+746-102+425+0-209-211-92+40+85-365-191-40 +sign_ed25519_open 13 20214 221871 +6243+2432+1548+574+234+66-402-100-248-403-220-262+34+0-239 +sign_ed25519_open 13 25268 250203 +5670+2370+1251+896+147+363+237-199-46+0-216-56-121-352-448 +sign_ed25519_open 13 31586 284698 +6773+2284+997+23+366+235-331-2+0-86-128-78-125+770-218 +sign_ed25519_open 13 39483 326021 +6377+2625+559+73+17+168-3+0-217-58-17-317-85-309+203 +sign_ed25519_open 13 49354 376522 +6724+2314+792+583-188+298-345-592+94-228-82+78+0-238-207 +sign_ed25519_open 13 61693 445753 +6989+2416+748+857+260+17-430-650-325-485-322-356-121+758+0 +sign_ed25519 14 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 14 32 29081 +1729+36+180-100+39-100-162+0-90-122-127-102+105+57+125 +sign_ed25519 14 0 32249 +2977+93+156+155-48-153-130-338-191-83+158+12+0-138+65 +sign_ed25519 14 1 32237 +535+22-70-85+90-111+17-58+39+143-78-107+63+0-3 +sign_ed25519 14 2 32261 +281-114-100+79+522-13+0-80+16+160-124-241-67+137+16 +sign_ed25519 14 3 32189 +57-67-40+184-17-88-140-94+57+83-15+93+147+86+0 +sign_ed25519 14 4 32202 +201+88+195-30-20-28-2+102+44+0-92+71+55-168-126 +sign_ed25519 14 6 32265 +147+0+59-20-149-128-30+51+13-55+54+112+82-111-163 +sign_ed25519 14 8 32266 +244+12+48-123+0-94-83-88+37-200+34+59+18-186-71 +sign_ed25519 14 11 32253 +353+27+139+46-48-155-40+13+0-117-76+7-57-133+18 +sign_ed25519 14 14 32248 +418+36+56-76-137+0+50+122-200-109-144+142+124-145-16 +sign_ed25519 14 18 32210 +225+75+169-13-104-190+261+195-128-69-129-74+81+0+39 +sign_ed25519 14 23 32205 +115+102-24+145-131-43+169+125-70-128-90+158+129+0-83 +sign_ed25519 14 29 32219 +181-30+36+79+0-140-83+58+50-89-125+21-8-37+79 +sign_ed25519 14 37 32252 +522+168+0-43-116-115+108-105-126-77+3+186+87-185+74 +sign_ed25519 14 47 32238 +183+146+192-260-167-161+12+134+0-143-91+131+192-151-60 +sign_ed25519 14 59 32961 +194+27+107+9-58-44+71+0-41-110+64-67-69+237-107 +sign_ed25519 14 74 32968 +337-11+3+194-241-116+66+35-109+0+171+11-118-36-25 +sign_ed25519 14 93 33669 +482-11-117+83-127-206+20+0+28-233+50-149-147+14+4 +sign_ed25519 14 117 33624 +192+284+133+112-181+16-62-118-42+187-79-137+123+0-193 +sign_ed25519 14 147 33690 +544+61-95+2+0-223-46+28+95-42-41+65-96+137-37 +sign_ed25519 14 184 34438 +186-106+0-104-148+196-222-99+88-138+38+152+628+24-45 +sign_ed25519 14 231 35061 +364+77+5-25-15-147+193+28-24+32-73-18-139+0+37 +sign_ed25519 14 289 35014 +534-65-123-26+0+65-21+140+134-62+103+74-196+241-50 +sign_ed25519 14 362 36432 +392-89+139-1+34-69-118+18+32-32-80+79-139+0+60 +sign_ed25519 14 453 37093 +596+121+9-55-19-33+136-78+105-131+59-146+68+0-51 +sign_ed25519 14 567 38510 +453-124+0+53-147-87-35+16+152+181-26+25-214+174-185 +sign_ed25519 14 709 39803 +702-73+203+123+157-185+0-50-158-69+318-9+67-13+10 +sign_ed25519 14 887 41836 +401+27+233+3-160-40-119-7-64+50+0+3-53-82+155 +sign_ed25519 14 1109 44628 +286+102-22+7-5+58-20+0-50+87+111+9-98-53-102 +sign_ed25519 14 1387 47347 +736+173+8-26-240-165+9+0-80-268-43-105+57+18+53 +sign_ed25519 14 1734 50660 +549+61+34+63-50+0-104-282-61-137+17+100-55-220+103 +sign_ed25519 14 2168 55320 +411+282-28-38+55+80-67-60+117-50+0-41-78+222+170 +sign_ed25519 14 2711 60853 +529+107-65-16+38+148+39-13+43-146+0-117-34-11+106 +sign_ed25519 14 3389 68439 +560+264-201-17+31-77+28+1-10-229-7+151+0+5-131 +sign_ed25519 14 4237 77175 +707-42-236+177-130+158+1-102+0+101-1-147-93+3+242 +sign_ed25519 14 5297 88695 +987+132+131-53-203-39+210+23+102-199+0-81+100-77-150 +sign_ed25519 14 6622 102909 +485+0+148-37+387+76-143-8-16+158-63+126-89+122-1 +sign_ed25519 14 8278 120524 +440+102-1+236-78+45-97-57+73+76+0-215-161+95-74 +sign_ed25519 14 10348 142275 +965+383-154-41+0+71-113+189+66-106-33-154-1+70+209 +sign_ed25519 14 12936 169421 +268+0-354+27-21-351-16+46+21+92-266+74-116+155-318 +sign_ed25519 14 16171 203032 +315+106+3+220+0+0-2-78-110-96+258+7-32+63-151 +sign_ed25519 14 20214 246543 +723+4-73+168+50+18-339+16-179-230-23-165-209+0+97 +sign_ed25519 14 25268 300418 +656+126-91-375-66+142+67-62+0-151+22+938+147-362-48 +sign_ed25519 14 31586 366923 +810+56+0-348+42+142+142+123-51-135+162-308-55-26-124 +sign_ed25519 14 39483 449990 +1691+259+43+118-55+516-130-18+0-323+91-57+361-117-122 +sign_ed25519 14 49354 554485 +1245+461+92-65-157+333+16+11+0-221-171-359-30-510+854 +sign_ed25519 14 61693 685676 +398+54-62+113-204+23+1693+1095-96-466+0-347-1111-48+188 +sign_ed25519_open 14 0 112930 +7976+2476+988+690+178+240+8-206-430-102-362-278-108+0-240 +sign_ed25519_open 14 1 113664 +7402+3261+1829+748+84+300+20+0-118-236-408-532-382-666-210 +sign_ed25519_open 14 2 111928 +6229+2652+1678+710+628+84+132+0-101-439-490-570-44-72-206 +sign_ed25519_open 14 3 113426 +6840+3346+1400+606+356+0-50+176-68+102-60-197-633-490-538 +sign_ed25519_open 14 4 114220 +5728+2734+764+258+12-160-248-18+0+106+100-128-78-128-580 +sign_ed25519_open 14 6 112568 +5398+2600+1268+389-95-314-246+58-196-184+8+238+0-196-316 +sign_ed25519_open 14 8 112568 +6107+3056+1780+1071+47-42+136-80-160+0+36-232-130-144-540 +sign_ed25519_open 14 11 113556 +5941+2926+1128+356+0+234+130-144-308-156-153-159-202+50-96 +sign_ed25519_open 14 14 114040 +5907+2506+1222+474+252-37-216+11+0-60-480-268-138+144-228 +sign_ed25519_open 14 18 111888 +6276+3340+2178+1286+1378-34+148-30+0-198+22-356-194-492-2 +sign_ed25519_open 14 23 113418 +5907+2126+1578+924+194+264+0-106+72-143-376-183-238-416-102 +sign_ed25519_open 14 29 112748 +5644+2374+1410+772+174-30-92+32+0-305-39-143-31+258-14 +sign_ed25519_open 14 37 112258 +5436+3076+1320+628-28-96+78-112+26-213-135-90+0-132+130 +sign_ed25519_open 14 47 112004 +5619+2808+1402+1044+482+372+10-55-221-70-232-260+0-44-34 +sign_ed25519_open 14 59 115024 +5646+2378+1300+962+522+254+38+0-2-148-311-613-500-230-474 +sign_ed25519_open 14 74 114306 +6114+2871+1574+764+369-228+51-49-204+0+762-119+0-96-52 +sign_ed25519_open 14 93 115282 +5805+2750+1510+796+178+184+184-92-76-18-16-118-140+0-96 +sign_ed25519_open 14 117 112864 +6448+2342+968+940+518+428+0-134-305-55-254-2-54-38+136 +sign_ed25519_open 14 147 115256 +5566+3334+1572+826+124-248+0+206+170-168-356-32-106-330-382 +sign_ed25519_open 14 184 114204 +5516+2526+804+978+316+172+0+98-332-222-478-554-276-588-312 +sign_ed25519_open 14 231 113168 +5568+2550+1394+760+344+0+334+20-100-176-212-230-470-192-126 +sign_ed25519_open 14 289 114908 +5133+1516+1324+800+390+88-180-68+0-94-52+10-78-68-36 +sign_ed25519_open 14 362 114140 +5119+1917+1034+646+34+8-226+38-202-26-36+0-142-80-384 +sign_ed25519_open 14 453 115916 +5922+2796+1022+932+160+48-32-24+172-72+0-164-130-532-216 +sign_ed25519_open 14 567 116194 +6255+2706+1258+468+24-10-32-22-6+84+0+22-503-267-404 +sign_ed25519_open 14 709 116222 +6009+2672+1354+1234+232+254+0-266+164-176-78-194-184-208-361 +sign_ed25519_open 14 887 118756 +5689+2210+1270+980+262-8+188+114-62-502+0-266-276-392-498 +sign_ed25519_open 14 1109 120324 +5336+2146+1054+520+0-64-246+330+24-214-376-348-504-565+307 +sign_ed25519_open 14 1387 119725 +6560+3387+1739+699+387+110+0-35-252-324-93-265-203-215+190 +sign_ed25519_open 14 1734 122215 +5604+2523+1041+598+227-61-236+0-1-173+45-170-217+119-289 +sign_ed25519_open 14 2168 125210 +6009+2789+1408+648+42+40-266-180-354-224+224+0-218-376-434 +sign_ed25519_open 14 2711 128826 +5595+2588+1588+216-154+30+230-76-286-100-6+0+78-208-248 +sign_ed25519_open 14 3389 130136 +6411+3354+2120+1272+592-146-16-186+0+252-202-40-122+88-50 +sign_ed25519_open 14 4237 135616 +5720+2712+1532+1128+216-130-42+0-24-158-22+135+109-96-284 +sign_ed25519_open 14 5297 141568 +5971+2830+1260+1026+662-124+74-178+66+0-46-206-214-426-224 +sign_ed25519_open 14 6622 149326 +6229+3232+1334+568+128+0+98+128-130-96-124-136-184-66-212 +sign_ed25519_open 14 8278 157390 +5790+2462+1388+588+452-52+154-16+0-140-450-263-485+568-539 +sign_ed25519_open 14 10348 166962 +6828+2519+1491+636+272+251+0-185-157+36-240-442-58-50-48 +sign_ed25519_open 14 12936 182798 +6996+3151+1162+930+216-134-233+79+0-315-139-208-166+0-10 +sign_ed25519_open 14 16171 199697 +6829+2491+911+805+79+894-51-342-67-146-2-369+0+204-100 +sign_ed25519_open 14 20214 220924 +6442+3296+1619+876+408+64-87+19-192-171-207-78-27+0-258 +sign_ed25519_open 14 25268 249004 +6172+2575+1218+1650+524+548-40-78+0-242-222+32-70-328-148 +sign_ed25519_open 14 31586 283085 +6211+2660+1545+749+73+257-64-230-389-387+0+54-326-134-326 +sign_ed25519_open 14 39483 326044 +6322+2325+928+622+31-85-269+70+0-213-360-104+253-133-447 +sign_ed25519_open 14 49354 379963 +8077+2746+761+618+127-198+20-43-396-206-143+0-226+17-7 +sign_ed25519_open 14 61693 446852 +6691+2057+717+247-31+339-79+0-131-290-338+234+58-203-358 +sign_ed25519 15 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 15 32 29145 +1151+48+0-138-257-339-186-107+5+9+130+62-36-41+118 +sign_ed25519 15 0 32403 +4023+156-59+93+64+2-15-19+94+223-5-147-189-89+0 +sign_ed25519 15 1 32428 +505+15+47+100-81-119-102+0-21+81-84+179+207-76-185 +sign_ed25519 15 2 32404 +297-105-15+0+70-134+94-98+51+5-23+100+55-62-69 +sign_ed25519 15 3 32438 +250-243+120+217-105-323-199+151+162+42-75-225-6+156+0 +sign_ed25519 15 4 32419 +201-9+92+140+70-116+0+85+163-318-95-16+317-113-63 +sign_ed25519 15 6 32390 +92-185+152+72-97-253+0+190+65-12-107-17+17+49-46 +sign_ed25519 15 8 32404 +0-57-10+142+194+105-144+18+20-165-24+196+91-31-3 +sign_ed25519 15 11 32473 +37-129-118-101+62-188-111+130+25-132+0-92+54+35+37 +sign_ed25519 15 14 32361 -20-137-8+140+111-52-60+0+189+12-165-171+67+188+73 +sign_ed25519 15 18 32376 +217+7-97-9+144-32-31+133+75+166-112-153+0+78-82 +sign_ed25519 15 23 32448 +76-128+189+242+73-191-142+0-35+104-87-250-9+46+21 +sign_ed25519 15 29 32396 +379+19-58+2+146-56-167+308+62+0-215-8-42+130-76 +sign_ed25519 15 37 32443 +392+0+49-2+147-237-3-100+28+21-281+123-36+29-194 +sign_ed25519 15 47 32413 +227-53+183+42+0-223-204+42+118-243-69-44+60+131-153 +sign_ed25519 15 59 33087 +197+163+398-98-143-21+263+0-226-84+40-18-52+127+9 +sign_ed25519 15 74 33207 +261+86+57+0+36+84-23+0-76+43+66-92-207-57-90 +sign_ed25519 15 93 33752 +412+1958+0+29-3+134-42-5+211-31-47+82+181-40-24 +sign_ed25519 15 117 33837 +348+0-129+172+85-52-42+218-27-39+169+117-54-35+21 +sign_ed25519 15 147 33882 +242+116+268+0+209+83-44-80-9-111-68+129-32-147+153 +sign_ed25519 15 184 34628 +335-76+13-121+22-48-154-92+85-30+11+37-117+12+0 +sign_ed25519 15 231 35255 +426-101+75+89-26+76+20-37+0-75+69-15-163+84-94 +sign_ed25519 15 289 35274 +398+731+54+110-25-134-37+55-49-62+0-19-33+69+7 +sign_ed25519 15 362 36663 +172+38-179+129+2-60+3-143+0+6-3-3+60-45-89 +sign_ed25519 15 453 37345 +549+51-64+58+12+89+0-15+17-63+20-219-4-180-64 +sign_ed25519 15 567 38696 +556+0-37+23-259+158+31-149+49-56+121+116-159-44-167 +sign_ed25519 15 709 40025 +497+230+104+0+105-152+76+112+68-71-5-53-90-75-166 +sign_ed25519 15 887 42107 +109-232+14+71+308-55-277-200+76+10+127-4+0-326-72 +sign_ed25519 15 1109 44612 +484+160-150-4-31+143+146-6-47+150-84+14+0+204-87 +sign_ed25519 15 1387 47472 +239-59-43-51-3+3+74-77+257+0-138-25+31+217+112 +sign_ed25519 15 1734 50902 +617+9+99+0+85-178-192-66-14+143+38+71-82-208-164 +sign_ed25519 15 2168 55612 +469-67+194-40+59+197-48-61+67+32-167-81+65-36+0 +sign_ed25519 15 2711 61168 +225+12-96+0+131+10+54+30-104-189-31+49-280-309-6 +sign_ed25519 15 3389 68612 +388-128-32+1-193+91-74+0+364+34+197-58-35-22+18 +sign_ed25519 15 4237 77351 +382+23+37-116+42+95+112-144-26-101-100-60+0-103+171 +sign_ed25519 15 5297 88913 +661+89-61+183-41-105-114+139+89-7+32+0+59-27-27 +sign_ed25519 15 6622 103249 +280+137-185-2+84+57-82+0-93+13-237+116+29-154-68 +sign_ed25519 15 8278 120890 +690-73+106-19+10+245+244-93-26-37-101+7+0+82-83 +sign_ed25519 15 10348 142404 +274-151+81-89+810+0-6-31+71-142+29-28+11+106-130 +sign_ed25519 15 12936 169520 +49-343-420+0-42+35+70+193+76-13-154-3+232+82-224 +sign_ed25519 15 16171 203372 +186-6-103+183+0-70-168+110-82+40-73+6+65+63-342 +sign_ed25519 15 20214 246794 +801+54-180+42+122-197+0+157+17-57-76+126-13-127-107 +sign_ed25519 15 25268 300531 +894-279+0-141-692-117-236-144+145+74+331+237+906-18+265 +sign_ed25519 15 31586 367092 +1357+1+25-389+0-67+134-35+54-126-150-145+95-267+179 +sign_ed25519 15 39483 450383 +1422+80+199-226+107-204-131+292-144-196+174-140-176+151+0 +sign_ed25519 15 49354 554812 +1620+184+295+22-38-286+82-99+229-454-107-190+202-22+0 +sign_ed25519 15 61693 685834 +567-95+76+123-196-206-128+620+130+400+119-471-103+0-369 +sign_ed25519_open 15 0 111427 +7235+2713+1063+604+0-321-271+43-387-165+295+5-201-429-119 +sign_ed25519_open 15 1 112856 +6425+3072+752+580+216-376-28+42+80+0-258-184-246-284-236 +sign_ed25519_open 15 2 112380 +5841+2668+1398+771+115+124+66+0-286-328-810-348-426-440-230 +sign_ed25519_open 15 3 111762 +5752+3154+1062+716+194+230+0-78-186-370-304-147-101-70+50 +sign_ed25519_open 15 4 113094 +6308+2996+1242+766+166+0+76+94-360-790-742-514-861-719-720 +sign_ed25519_open 15 6 112612 +5794+2548+1762+884+74+0-322-196-312-306-302-76-84+34+66 +sign_ed25519_open 15 8 113430 +5893+2786+1466+782+344+0+88-32-220-202+42-188-216-30-220 +sign_ed25519_open 15 11 111925 +5637+3389+1111+131+0-466-159-317+47+31+201-261-358-98-395 +sign_ed25519_open 15 14 112554 +6400+2771+1360+746+90+212-4-14-50-46+54-128-32+0-162 +sign_ed25519_open 15 18 113772 +6455+2610+1296+1111+108-11-118+0+325+19-92-136-230-432-242 +sign_ed25519_open 15 23 112910 +5556+2560+1016+580-202+70+22-244+0-152-6+130-42-76-540 +sign_ed25519_open 15 29 112278 +5651+2717+1306+223-415-100-278+112+194+0-216-268-282-348+20 +sign_ed25519_open 15 37 113444 +6492+2824+1412+744-328+26+98-250+0-236+1302-318-370-192-216 +sign_ed25519_open 15 47 112864 +5738+3072+1846+1356+318+156-394-648-228-606-168-210+80+0-142 +sign_ed25519_open 15 59 114340 +6041+2147+1132+768+316+254-46-84+0-56-71-235-232-44+54 +sign_ed25519_open 15 74 114085 +5165+2903+1113+687+0-212+60-84-123+227-245-271-325+267-926 +sign_ed25519_open 15 93 113426 +6197+3022+1564+618+360-70+58-120-280-316-438-117-119+0+176 +sign_ed25519_open 15 117 111375 +6082+2399+1423+1003+719+519+38-190-329+0-446-149-133-191-349 +sign_ed25519_open 15 147 112618 +6212+2948+1078+444+152+168-180-228-138+10+0-116-276-416-336 +sign_ed25519_open 15 184 113938 +5585+2505+1852+878+0-98-156-96+24-238+32-147+157-54-408 +sign_ed25519_open 15 231 113670 +5819+2759+1768+800+254+90-107-333-128-374-191-269-156+0+146 +sign_ed25519_open 15 289 115002 +6035+2436+1006+336+100+0+86+88-170-114-46-80-288-122-246 +sign_ed25519_open 15 362 114900 +5661+3681+1766+948+406+82+0+44-106-182-752-344-414-384-448 +sign_ed25519_open 15 453 115740 +5932+2442+1418+688+284+214+382-164-346-316-62-196-182-202+0 +sign_ed25519_open 15 567 115648 +5896+3124+1158+808+442+78-204-8-262-142-212-482-162+320+0 +sign_ed25519_open 15 709 115934 +6102+3716+1332+806+574+246-14+10-130-186-128+0-8-54-24 +sign_ed25519_open 15 887 117370 +5960+2300+1436+956+320+196+0-4-260-354-176-326+46-374-388 +sign_ed25519_open 15 1109 119012 +6227+2894+1456+654+60+46-70-56-8+0-82-90-112+70-40 +sign_ed25519_open 15 1387 121274 +6092+2832+1110+682+474+126-184-192-196-146+6-174+0-32-362 +sign_ed25519_open 15 1734 121974 +5372+3150+1398+496-76-182+0+18-50-184+218+48-186-160-114 +sign_ed25519_open 15 2168 123394 +6182+2000+524+436+58+0+16-22-310-178+164-30-212-522-508 +sign_ed25519_open 15 2711 128814 +5628+3138+1168+198+130+0-162-152-352-254-252-98-104+6+138 +sign_ed25519_open 15 3389 131902 +5344+2449+675+506+78-168-426-262+8+0-360-262-96+8-74 +sign_ed25519_open 15 4237 136408 +5919+1872+820+442+38+112+68-174-64-60-262-80-244-266+0 +sign_ed25519_open 15 5297 141612 +6451+2920+1346+580+228+184-78+76-16-140-160+0-156-122-82 +sign_ed25519_open 15 6622 148372 +5424+2424+912+498+162+72-70-170-424+0-208-4+20-170-354 +sign_ed25519_open 15 8278 156756 +6498+2640+1414+326+46+0+208+46-82-168-306-180-506-362-338 +sign_ed25519_open 15 10348 166797 +6762+2484+1256+512+366+136+251+0-340-20-232-203-317-157-137 +sign_ed25519_open 15 12936 182146 +5669+2478+1131+344+0+193+54-7-204-74-112+74-44-90-230 +sign_ed25519_open 15 16171 200400 +6234+3374+1640+814+0+93-133+567+313-70-197-285-161-345-172 +sign_ed25519_open 15 20214 221235 +6808+2509+1356+686+109-95-106+7-111+120-110+0-167-117-321 +sign_ed25519_open 15 25268 249238 +5419+1854+705+324+0+1394+244+10-94-395-53-228-346-150-424 +sign_ed25519_open 15 31586 282992 +5597+2694+972+207+112-68+0-190-86+323-447-311+184-365-123 +sign_ed25519_open 15 39483 326100 +6761+2627+1003+0+47+36-358+79-88-172-302+102-326-288-218 +sign_ed25519_open 15 49354 379310 +6503+3024+767+865-21-125-676+126+20-452-118-358+98-60+0 +sign_ed25519_open 15 61693 446481 +6536+1733+975+757+511+31+75-90-61+0-515-360-32-59-78 diff --git a/lib-25519/lib25519/benchmarks/shoe b/lib-25519/lib25519/benchmarks/shoe new file mode 100644 index 0000000000..90ae67f988 --- /dev/null +++ b/lib-25519/lib25519/benchmarks/shoe @@ -0,0 +1,4538 @@ +lib25519 version 20221221 +lib25519 arch amd64 +cpuid 756e6547 6c65746e 49656e69 65746e49 2952286c 726f4320 4d542865 33692029 3030352d 43205535 40205550 302e3220 7a484730 00000000 00000000 000306d4 02100800 7ffafbbf bfebfbff 00000000 021c27ab 00000000 9c000000 00000000 00000000 00000121 2c100800 00000007 00000000 00000000 00000000 00000000 +cpucycles selected persecond 1900000000 +cpucycles selected implementation amd64-pmc +cpucycles selected 0 47 +19+21+20+20+20+0+0+0+0+0+0+0+0+0+0 +randombytes selected 0 51 +3136+306+1-1+1-1-2+2-1+0-2-2+0-2+0 +randombytes selected 1 117 +1718+70+6+4-4-3+1-5+0+3-3-5-5+0+3 +randombytes selected 2 118 +22+27+0-5-5-3-3-3+0+0+0+1+0+2-3 +randombytes selected 4 117 +0-5+0+3-2-3-2+3+1-4+2-2+3-3+2 +randombytes selected 7 118 -1+0+0-3+2+0+2-3-3+2+2+2+0+2+2 +randombytes selected 11 119 +22-5+2+1+0-1+3-5-7-2+3-1+1-1+1 +randombytes selected 17 114 +11-3+1-3+4+0+4-2-2+0-1+8-1+6+4 +randombytes selected 26 117 +0-4+1+1-2+3-4+1-2+3+3+3-2-2-2 +randombytes selected 40 115 +2-2+3+0-2+5+0+0-2+0+5+0+0+0+5 +randombytes selected 61 116 +19+0-3+0+2+4-1-1+0-1+0+0+0+0-2 +randombytes selected 92 116 +0+2-1+4-1-1+2+0-1-1+0+0+4+0+0 +randombytes selected 139 116 +9+4-1-1-1+0+0+0-2+0+0-2-1+0+0 +randombytes selected 209 116 +9+2-1+4+4-1-1+0-1+0+0+0+0+0+0 +randombytes selected 314 116 +9+4-1-1+4+0-1+0-1+4+0+0+0+0+0 +randombytes selected 472 116 +7+3+4+4-1-1+0+0+4+0-1+0+0+0+0 +randombytes selected 709 120 +4-1+0-5-5+0-5+0-5+0+0+0-5+0-5 +randombytes selected 1064 120 -3-5-5+0-5+0+0+0+0+0+0+0+0+0+0 +randombytes selected 1597 116 +46+1+34-4+4+33-2-1+0+0+0+34-3+34-2 +randombytes selected 2396 148 +27-2+0+2+1+0+1+0-35+1-1-1+0+1+1 +randombytes selected 3595 150 -2+1+0+9+3+0+0+0+6+0-1+0-1+0-1 +randombytes selected 5393 151 +11+5+5-3+10-1+8-1-1+6-2+8-1+0-1 +randombytes selected 8090 159 +11+6+3-9+6-6+4-7+7-10+0-10+3-1-10 +randombytes selected 12136 162 +18+2-3-4+5+0+1-5-4-4+1+0+0-1+1 +randombytes selected 18205 161 +12+0+0+0+4+176+52+0+0+1-1+3+0+0+0 +randombytes selected 27308 171 +3-1-1-3+2+1+0+1-1-1-1+0+1+1+2 +randombytes selected 40963 194 +16-18-9+1+0+176+44-5+3-4-3-2+3+39-14 +randombytes selected 61445 190 +5-3-3+6-9+3+119+27-3+0+4-8+3-2-4 +verify_32 selected implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 selected 32 54 +162+42+0+0+0+0+0+0+3+1+0+0+0+0+0 +verify_32 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 0 32 75 +130+50+1-1+2-3+1+0+0-2-1-2-1-1+1 +verify_32 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 1 32 54 +33+33+26+0+0+0+0+0+0+1+2+2+0+0+0 +verify_32 2 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 2 32 74 +1177+86+46+26+0+0-1-1+0+0+0+0+2+2+2 +verify_32 3 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 3 32 55 +278+47+19+4+1+1-2-2-1+0-1+0-1+0-1 +verify_32 4 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 4 32 76 +1195+54+45+0+3+1+1+0-1+0-1-2+0-2-2 +verify_32 5 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 5 32 55 +1213+44+13+1+1-1+0-1+0-1+0-1+0-1+0 +verify_32 6 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 6 32 75 +1186+55+46+19+0+0+0-1+1-2+1-1-1-1-1 +verify_32 7 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 7 32 57 +1140+39+15+13+0+0+0+0-4-4-4-4-4-4-4 +hashblocks_sha512 selected implementation avx2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 selected 0 51 +1206+112+27+22+2+0+0-1+0+0+0+0+0+0+0 +hashblocks_sha512 selected 1 51 +24+46-2-1-2-1+0-1+0+0+0+0+0+0+0 +hashblocks_sha512 selected 2 51 +4+2+0+0+3+0+2-1-1-1+0-1+0+21+0 +hashblocks_sha512 selected 4 51 +4+2+0+0+3+0+2-1-1-1+0-1+0+0+0 +hashblocks_sha512 selected 7 51 +2+0+0-2+2+0-1+0+1+0+0+0+0+0+0 +hashblocks_sha512 selected 11 51 +4+1+1+1+2-1+2+2-2-1-2-1+0+0+0 +hashblocks_sha512 selected 17 51 +4+1+1+1+2-1+2+1-1-2-1-1+0+0+0 +hashblocks_sha512 selected 26 51 +4+2+0+0+3+0+2-1-1-1+0-1+0+0+0 +hashblocks_sha512 selected 40 50 +3+0+0+0+1+0+0-1+0+1+0+1+1+1+1 +hashblocks_sha512 selected 61 51 +4+1+1+0+0+0+2+0-2+2+1+0+0+0+0 +hashblocks_sha512 selected 92 52 +3+0+0+0+1-2+1+1-3-2+0+0-1-1-1 +hashblocks_sha512 selected 139 779 +4076+150+171+30+0-1+0+0-4-4-1-11-9+3-1 +hashblocks_sha512 selected 209 781 +65+10+4+2+4-2+0+0+4-2+39+0-10-8-2 +hashblocks_sha512 selected 314 1469 +235+122+19+8+0+0-6-1+7+7+1-9-6-9-7 +hashblocks_sha512 selected 472 2159 +135+34+15+0-10-20+14+7+10-8-4-26+1-24-4 +hashblocks_sha512 selected 709 3511 +168+105+49+7+37+13+0-2+0-2+13+0-12-3-3 +hashblocks_sha512 selected 1064 5535 +217+110+85+25-6+0-7+9-12+0-7+9-12+0-7 +hashblocks_sha512 selected 1597 8235 +438+132+97+2+0-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 selected 2396 12343 +369+29+104+56+54+56-4-2-16+9+0-27-1-27-1 +hashblocks_sha512 selected 3595 19215 +295+103+12+30+40+40+11+0-32-20-32-12-32-12-32 +hashblocks_sha512 selected 5393 28710 +270+60+1320+132-9-43-44+0-44+0-44+0-44+0+24 +hashblocks_sha512 selected 8090 42988 +430+73+38-48-4-3-24+0+2+42+20-14+43-11-71 +hashblocks_sha512 selected 12136 64059 +327+14+18+97-20-9+57+12+33-20-1+0-30-38-30 +hashblocks_sha512 selected 18205 96646 +384+19+12-34+0-30+0-34+56+0-34+0+32+0-34 +hashblocks_sha512 selected 27308 144941 +798-63-49-129+0-37+167-37+79-41+67+67+34-64+87 +hashblocks_sha512 selected 40963 220338 +220-142+727-898-696-48-64+36-60+102+0-130+186+106+16 +hashblocks_sha512 selected 61445 330335 -452+268+437+0-155+110-13+191-95-23-95-65+1440+217+165 +hashblocks_sha512 0 implementation avx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 0 0 52 +108+79-1+1+1-2+0-1+0-1+0-1+0-1+0 +hashblocks_sha512 0 1 52 +106+31-2+1+1-2+1+0-1-1+0-1+0-1+0 +hashblocks_sha512 0 2 50 +4+0+0+2+2+0+0+0+0+0+2+1+0+28+0 +hashblocks_sha512 0 4 51 +4+0+0+0+0-1-1-1-1+0-1-1+0+1+0 +hashblocks_sha512 0 7 51 +4+0+0+0+0-1-1-1-1+0-1-1+0+1+0 +hashblocks_sha512 0 11 51 +4-1+2+0+0-1-1-1-1+0-1-1+0+1+0 +hashblocks_sha512 0 17 51 +4+0+0+0+0-1-1-1-1+0-1-1+0+1+0 +hashblocks_sha512 0 26 51 +3+0+0+0+0-1-1-1+1+2+0+1+0+1+0 +hashblocks_sha512 0 40 52 +35-2+0+0+0-2-1-1-1+0+0+0-1+0-1 +hashblocks_sha512 0 61 51 +3-1-1+1+1-1-1-1-2+2+0+1+0+1+0 +hashblocks_sha512 0 92 51 +3+0+0+0+0-1-1-1+1+2+0+1+0+1+0 +hashblocks_sha512 0 139 996 +2418+83+31-1-1-1-1+2-1+0+0+4-1+4-1 +hashblocks_sha512 0 209 996 +256+24+0+0-1-1-1+2-1-1+0+2-1+4-1 +hashblocks_sha512 0 314 1907 +140+39+14-5-2-1+3+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 472 2816 +212+44+8+0-2-4+4-4+0+5-4+1-1-2-4 +hashblocks_sha512 0 709 4628 +55+54+24+1+4-1-1+4-2-1+0+1-3-1-1 +hashblocks_sha512 0 1064 7353 +36+29+26-3+4-4-4-6-4+0-2+57-2+1+1 +hashblocks_sha512 0 1597 10980 +70+49-2+0+83-3-2-1+1+1-2-4-2+1+28 +hashblocks_sha512 0 2396 16453 +46+35-2+9+14-27+61+4-25+0-2-25-2+1-31 +hashblocks_sha512 0 3595 25566 +83+37+6-1+0-5-2-7+41-1+47-7-6+4+0 +hashblocks_sha512 0 5393 38266 +74-3-1+1+0-13+8+43-3-5-5+6+54-11+3 +hashblocks_sha512 0 8090 57374 +25-9-59+9-28+8+13+0-24+62-22-42+19-40+15 +hashblocks_sha512 0 12136 85561 +12+102-13+31-20+3+72+0-11-21+50-15-18-23+6 +hashblocks_sha512 0 18205 129143 +10-12+25+41-21+11-26+857+14-13-3+33+0-27-7 +hashblocks_sha512 0 27308 193575 +53+0+22+4-24+41+11-21-31-15+11-11-21-35+49 +hashblocks_sha512 0 40963 291087 +150-15+4-34+0+52+105-66-77+644-1+29+43-53-37 +hashblocks_sha512 0 61445 436427 +75-15-43+45-9+12-89+11-50-29+0+674+31+19-39 +hashblocks_sha512 1 implementation avx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 1 0 50 +1296+48+46+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 1 50 +34-1+2+0+24+7+3+2+0+0+1+0+0+0+0 +hashblocks_sha512 1 2 50 +3+0+0+0+1+4+4+6+0-1+0+0+0+23+4 +hashblocks_sha512 1 4 50 +4+0+1+0+0-1+0-1+0+0+0+0+0+0+0 +hashblocks_sha512 1 7 50 +3+0+0+0+1+4+4+6+0-1+0+0+0+0+0 +hashblocks_sha512 1 11 50 +3+0+0+0+1+4+4+6+0-1+0+0+0+0+0 +hashblocks_sha512 1 17 50 +3+0+0+0+1+4+4+6+0-1+0+0+0+0+0 +hashblocks_sha512 1 26 50 +4+1+0-1+1+3+3+1+3+0+0+0+0+0+0 +hashblocks_sha512 1 40 50 +33+0+1-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 61 50 +33+0+1-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 92 50 +33+0+1-1+0+0-1+3+1+1+0+0+0+0+0 +hashblocks_sha512 1 139 1118 +2592+82+48+0+15+3-6-10+2-11+2-12-13-8-15 +hashblocks_sha512 1 209 1112 +57+23+0+6-4+0-4+8-5+8-6-2-11-2+0 +hashblocks_sha512 1 314 2152 +101-7-3-6-3+10-7+21+11+7+0+8-4-2+9 +hashblocks_sha512 1 472 3193 +108+7+1-3+26+18+0-8-14-10-1+9-8-11+9 +hashblocks_sha512 1 709 5269 +117+33+73+37+2+18+21-11+0-1-3-1-3-1-3 +hashblocks_sha512 1 1064 8379 +99+38+51+0-3-6+1-21+4-4+5+3-15-6-8 +hashblocks_sha512 1 1597 12554 +88+97-10+11+77-59+0-50+72-5-13-33+57+2-33 +hashblocks_sha512 1 2396 18831 +84+50+46+30-6-41-56+27-63+3-60+0-2-56+27 +hashblocks_sha512 1 3595 29279 +2+79-15+77+4+17-65-70-65-45-48+24-62+12+0 +hashblocks_sha512 1 5393 43794 -21-71+122+16-25+11+0-8+46-94+36-5+56+95-37 +hashblocks_sha512 1 8090 65635 -26-48+47+42-66+36+13+1+105-38+18+0-9-35-40 +hashblocks_sha512 1 12136 97882 +167+0-3-18+10+107-53-152-31+104+63-158-31+949+74 +hashblocks_sha512 1 18205 147862 +89-116-22+0-134-40+24+106-43-121-172+40+1658+632+129 +hashblocks_sha512 1 27308 221816 +178+40-77-298+111-270-89+2-21-272+1+45-10+0+0 +hashblocks_sha512 1 40963 335844 +20+1058+54-39-32+4-170+1+23-174-144-154-16+0+72 +hashblocks_sha512 1 61445 503562 +292+165+80+0+823+208+4-26-28-96-244+10-36-35-96 +hashblocks_sha512 2 implementation avx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 2 0 51 +1290+68+25+0-1-1-1+1+0+1+0+1+0+1+0 +hashblocks_sha512 2 1 51 +95+3+0+0+28+0+0-1+2+0+1+0+1+0+1 +hashblocks_sha512 2 2 51 +5+0+3+2+0-1+2-1+1+0+1+0-1+28-1 +hashblocks_sha512 2 4 52 +9+1+1+1-1-2+1-2+0-1+0-1+0-1+0 +hashblocks_sha512 2 7 52 +5+0+0+0+0+6+2-1-1-1+0-1+0-1+0 +hashblocks_sha512 2 11 52 +10+0+0+0+0+6+2-1-1-1+0-1+0-1+0 +hashblocks_sha512 2 17 52 +4+1-1+0+2+3+5+1-1+0-1+0-1+0-1 +hashblocks_sha512 2 26 52 +9+1-1+0+0+3+5+1-1+0-1+0-1+0-1 +hashblocks_sha512 2 40 52 +40-1+2+0+5+7+1-1+0-1+0-1+0-1+0 +hashblocks_sha512 2 61 52 +33-2+2+0+6+4-3+1-1+0-1+0-1+0-1 +hashblocks_sha512 2 92 52 +4+1-1+0+2+3+5+1-1+0-1+0-1+0-1 +hashblocks_sha512 2 139 985 +3071+76+22+4+0-3-9-3-3-8+0-6+0-2+1 +hashblocks_sha512 2 209 984 +342+3+5+4-5-5-6+0+0-1-1-4+0-7+2 +hashblocks_sha512 2 314 1883 +101+8-2+0-6-7-5+6+3+4-1+5+0-7+5 +hashblocks_sha512 2 472 2777 +40+46+1+1-3+0-9+0-6-8+4-11-4+0-10 +hashblocks_sha512 2 709 4570 +117+78+118-9+59+7-11+2+4-2-3-11+0-3-11 +hashblocks_sha512 2 1064 7267 +247+31+25-15-9-13+1-20-6-10+89+8+64+0-5 +hashblocks_sha512 2 1597 10853 +183+63+0-1+19-21-27+57-10-8-20+23+9-4+76 +hashblocks_sha512 2 2396 16307 +7+0+71+13+29-28+0+22-40-4-6-37-37+47-58 +hashblocks_sha512 2 3595 25267 +85+11+808-5-29-6-36-26+0+41+3+21-14+60-4 +hashblocks_sha512 2 5393 37822 +210-36+31+54+35-21-16-41+31+54+8+0-3-65-45 +hashblocks_sha512 2 8090 56682 +18-57+29+0-65+4+44-7+0+23-4-32+18-22-32 +hashblocks_sha512 2 12136 84518 +138-48-41+4-66+77+49+26-7-59-42+0+132+49-15 +hashblocks_sha512 2 18205 127620 +109+92-46+70-20+0+14+64-36+12+158-8-74-20+0 +hashblocks_sha512 2 27308 191460 +85+18-177-154-44-64-56-184+927+452+6+52+0-58+88 +hashblocks_sha512 2 40963 287966 +491+47+168+242+6-30+152+94-66-90-108-22+0-66-68 +hashblocks_sha512 2 61445 431822 +282+1354-67+38+18-44+218-160-4+60+30-96+0+0+0 +hashblocks_sha512 3 implementation avx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 3 0 51 +522+46+21+3+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 1 54 +60+19+0+0+0+0+0+2-2-3-3-3-3-3-3 +hashblocks_sha512 3 2 51 +1-2+0+1+32-1-1-1+0-1+0+0+0+0+0 +hashblocks_sha512 3 4 51 +7-1+0-1-1+3-1-1-1+0-1+0+0+21+0 +hashblocks_sha512 3 7 50 +8-1+1-2+3+1+1-1+0-1-1-1+1+0+1 +hashblocks_sha512 3 11 50 +3+0+0-1+3+1+1-1+0-1-1-1+1+0+1 +hashblocks_sha512 3 17 51 +2+0-1-2+1-2-1-1-1+0+0+0+0+0+0 +hashblocks_sha512 3 26 50 +3+0+0-1+3+1+1-1+0-1-1-1+1+0+1 +hashblocks_sha512 3 40 51 +34+2+1+1+1+1+0-1+0+0-1+0+0+0+0 +hashblocks_sha512 3 61 51 +34+2+2+1-1+1-2+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 92 51 +34+2+2+1-1+1-2+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 139 1115 +3104+101+54+10+0+2-14+4+6-5+0-5+0-5-5 +hashblocks_sha512 3 209 1114 +213+0+21+1+11-3+4+11+6-10-14-10-15-9-6 +hashblocks_sha512 3 314 2156 +99+56+26+0+9-1-23-9-4-10+21-34+13+1-5 +hashblocks_sha512 3 472 3194 +206+63+38+0-3-15-15-2+0+4-6-2-6+10+42 +hashblocks_sha512 3 709 5282 +69+54+28+20+10-14-4-1+8-17-3+0+0+0+0 +hashblocks_sha512 3 1064 8385 +150+50-4-20+26-13+0+5+8-17-2+5+29-13-9 +hashblocks_sha512 3 1597 12546 +113+36-28+785+0+80-30-18-6+13+35-47-11-47+52 +hashblocks_sha512 3 2396 18798 +52+48-22+13+65-3+55-29-60-13-45+15+0-19+22 +hashblocks_sha512 3 3595 29236 +134+30+34+41+40-37+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 5393 43776 +95-2+73-47-63+0+0+0+26-43-129-55-63+0+0 +hashblocks_sha512 3 8090 65577 +172-12-12-50-5+47+94+0+24+0+47+94+0+24+0 +hashblocks_sha512 3 12136 97793 +77+28-67-46+4+0-37-18+5+0-37-18+5+0-37 +hashblocks_sha512 3 18205 147692 +270-107-18-38-48+47-15+39+102+0+12+187-80+60-102 +hashblocks_sha512 3 27308 221684 +942+901+45-57+3+0+305-128+124+171-224-49-239-37-256 +hashblocks_sha512 3 40963 335439 +294-175+0-178-95+169-69-201-57+6-77+1039+115+147+7 +hashblocks_sha512 3 61445 502957 +11-3-75+267-145-100-12+0-113-29+809+283+69+99+19 +hashblocks_sha512 4 implementation avx2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 4 0 52 +1271+46+16+16+0-1+0-1+0-1+0-1+0-1+0 +hashblocks_sha512 4 1 51 +64+22-1-1+0+0+3+0+2+0+1+0-1+28-1 +hashblocks_sha512 4 2 51 +4+0-1+0+0+0+0-1+0+1+0+2+0+1+0 +hashblocks_sha512 4 4 51 +3+0+1-1+1-1-1+0+1+0+1+0+1+0+1 +hashblocks_sha512 4 7 52 +2-1-2-1-2+0+0+1-3+0+0-1+0-1+0 +hashblocks_sha512 4 11 51 +4+0-1+0+0+0+0-1-1+0+1+0+1+0+1 +hashblocks_sha512 4 17 51 +4+0-1+0+0+0+0-1+0+1+0+2+0+1+0 +hashblocks_sha512 4 26 51 +4+0-1+0+0+0+0-1+0+1+0+2+0+1+0 +hashblocks_sha512 4 40 51 +38+0-1-1+0+0+0-1-1+0+1+0+1+0+1 +hashblocks_sha512 4 61 51 +35-1-1+1-1+0+1+0+2+0+1+0+1+0+1 +hashblocks_sha512 4 92 51 +35-1-1+1-1+0+1+0+2+0+1+0+1+0+1 +hashblocks_sha512 4 139 781 +1313+57+8+70+3+65-1-3-7-7-4-9-7+0+53 +hashblocks_sha512 4 209 778 +193+16+7+6+3+2-1+0-4+0-5-5-6+64+0 +hashblocks_sha512 4 314 1470 +117+74+20+9+0-1-7+9+76+7+0-9-15-7-11 +hashblocks_sha512 4 472 2155 +161+103+91+29+18-15-16-20-10+0-17+0-1-2+1 +hashblocks_sha512 4 709 3502 +165+126+50-2+13+5-17-17+0+0+0+0+0+0+0 +hashblocks_sha512 4 1064 5539 +308+96+52+22-15-8-4+0-4+0-4+0-4+0-4 +hashblocks_sha512 4 1597 8251 +377+66+26-18+4+3+0-10-7+65-1+0-12+0-12 +hashblocks_sha512 4 2396 12344 +332+44+84+72+0+7-14-14-14+16+5-28-5-9-5 +hashblocks_sha512 4 3595 19215 +339+36+78+44+48-19+0+22-17-19-17-19-12+22-12 +hashblocks_sha512 4 5393 28723 +327-8+4+1-2+0-2+0+9-29+57+7-34+4-34 +hashblocks_sha512 4 8090 43013 +279-13+52-71-49-44-35-11+51+19+5+0+23+20-5 +hashblocks_sha512 4 12136 64072 +331+94+0+74+61-1+74+61-1-55-1+147-31-25-3 +hashblocks_sha512 4 18205 96749 +208+6-107+21+41-30+1121+159-39-127-61+0-128-61+0 +hashblocks_sha512 4 27308 144940 +685+1-45-11+0+10+52-52+67+33-48-20+0-21+94 +hashblocks_sha512 4 40963 220232 -100+13+124-1-120+0+26+86-50+92-20+86+40-42-8 +hashblocks_sha512 4 61445 330310 -464+58+0+181+93-18+15-28-148-60-24-76+10+158+52 +hashblocks_sha512 5 implementation avx2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 5 0 51 +95+42-1-1+2-1+1+2-2+0-1-1+0-1+0 +hashblocks_sha512 5 1 51 +62+2+0+0+22+3+3+5+1+0+0+0+0+0+0 +hashblocks_sha512 5 2 51 +2+0-1-1-1-1-1-2-1+0+0+0+0+24+1 +hashblocks_sha512 5 4 52 +2-3+0-1-3+0+0+0+0+2+4+0-1-1-1 +hashblocks_sha512 5 7 52 +2-3+0-1-3+0+0+0+0+2+4+0-1-1-1 +hashblocks_sha512 5 11 52 +2-3+0-1-3+0+0+0+0+2+4+0-1-1-1 +hashblocks_sha512 5 17 52 +2-3+0-1-3+0+0+0+0+2+4+0-1-1-1 +hashblocks_sha512 5 26 52 +2-3+0-1-3+0+0+0+0+2+4+0-1-1-1 +hashblocks_sha512 5 40 52 +31+0+0+0-1+0+2+4+0-1-1-1-1-1-1 +hashblocks_sha512 5 61 51 +29-1+1+1+0+1+3+5+1+0+0+0+0+0+0 +hashblocks_sha512 5 92 52 +2-3+0-1-3+0+0+0+0+2+4+0-1-1-1 +hashblocks_sha512 5 139 781 +467+73+7+4-2-1+43+1+1-1-8-8-11-2+0 +hashblocks_sha512 5 209 778 +132+12+9+5+1+1+0-3-5-2-5-3-11+6-5 +hashblocks_sha512 5 314 1474 +81+188+12-1-3-4-11+3+3+5+3+0-15-13-15 +hashblocks_sha512 5 472 2156 +192+137+26+7-11-20-18+18+11+15-15+0-21-1-3 +hashblocks_sha512 5 709 3512 +264+98+53+64+3-1+0+0+0+0-1-15-20-20-20 +hashblocks_sha512 5 1064 5537 +294+147+83+31+25+0+0-20+7-14+0-4-2-14+0 +hashblocks_sha512 5 1597 8253 +332+54+19-15-31+0-18-10+2-10+2-10+2+3-4 +hashblocks_sha512 5 2396 12354 +306+41+59+126+67+23-13-27-13-27+1+0-30-13-25 +hashblocks_sha512 5 3595 19195 +296+61+87-7+63-14+31+58+13-12+0-12+0-12+0 +hashblocks_sha512 5 5393 28688 +1405+92+2-6+0-6+0-6+0-6+64+0-6+0-6 +hashblocks_sha512 5 8090 43000 +471+19+42-39-27+0+16+3-77-24+3-77-24+46-48 +hashblocks_sha512 5 12136 64098 +237+5+17+0+36+2-41-16-7+17-43-49-60-7+24 +hashblocks_sha512 5 18205 96683 +446-6+44+54-69+0-29+78-51+55+0-29+78-51+55 +hashblocks_sha512 5 27308 144911 +635+88-71-84-53+17-46+80+89-83+0-64+84-8+92 +hashblocks_sha512 5 40963 220369 +161-60+766+0-101-61+23+49-33+103+21-111-25-55+27 +hashblocks_sha512 5 61445 330422 +224-25-241+12-196+150-44+88-152-148+0-98+1187+29+122 +hashblocks_sha512 6 implementation avx2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 6 0 52 +273+48+22+0+2-3+1-1+0-1+0-1+0-1+0 +hashblocks_sha512 6 1 52 +33+31+0+2-1+0+6+1+1-1+0-1+0-1+0 +hashblocks_sha512 6 2 52 +3+29-2+1+0+0+1+0+0-1+0-1+0-1+0 +hashblocks_sha512 6 4 51 +4+0-1+2+32-1-1-2+2+0+1+0+1+0+1 +hashblocks_sha512 6 7 52 +3-1+1+0-2+1+2+0+0-1+0-1-2+30-2 +hashblocks_sha512 6 11 52 +3-1+1+0-2+1+2+0+0-1+0-1+0-1+0 +hashblocks_sha512 6 17 52 +3-1+1+0-2+1+2+0+0-1+0-1+0-1+0 +hashblocks_sha512 6 26 51 +4+0+0+0+1+2+2-1-1+1+0+1+0+1+0 +hashblocks_sha512 6 40 52 +33-2+1-2+1+2+0-1+1-1+0-1+0-1+0 +hashblocks_sha512 6 61 52 +33+0-1-2+2+3-2+0-1+0-1+0-1+0-1 +hashblocks_sha512 6 92 52 +33-2+1+0+0+3-2+0-1+0-1+0-1+0-1 +hashblocks_sha512 6 139 780 +920+213+6+4+4+1+70-4-4-6-7-4-6-1+0 +hashblocks_sha512 6 209 780 +58+15+10+4+4+2+0+0-4-3-3-7-9+0-2 +hashblocks_sha512 6 314 1475 +104+71+27+4-2-8-12-4-5-1+119-8+4+0+3 +hashblocks_sha512 6 472 2162 +113+53+59+8+2-27-24+0+2-1-6-10-20-13+5 +hashblocks_sha512 6 709 3497 +185+119+89+66+6+8+2+0-6-2-6-2-6-2-6 +hashblocks_sha512 6 1064 5536 +364+171+108+15+17-10-9-2-2-13+0-2+4-2+4 +hashblocks_sha512 6 1597 8253 +407+81+20-7-10-17+4-16+16+0-6+8-6-16+4 +hashblocks_sha512 6 2396 12346 +370+47+83+33+43-8+4+0+0-9-20-12-20-12-20 +hashblocks_sha512 6 3595 19215 +321+158+46-3+52+94-11+0-6-14-17-12+28-12+28 +hashblocks_sha512 6 5393 28697 +295+33-4+0-4+81+18+29-4+0-4+0-4+0-4 +hashblocks_sha512 6 8090 42964 +399-27+28+34+4+28+53-5-3+0-5-3+0+88-4 +hashblocks_sha512 6 12136 64068 +453+63-33+0+61+0-70+0+80+0-70+27+104+0+33 +hashblocks_sha512 6 18205 96663 +598+65-63-20+32-58-24+0-34+101+0-34+197+4+9 +hashblocks_sha512 6 27308 145198 +1930+688-6+39-15-26-109-44+24-94+6+24-94+0+6 +hashblocks_sha512 6 40963 220255 +431+17-29-75+0+113+94-182+134-87+43-53+65-41-81 +hashblocks_sha512 6 61445 328742 +822+1825+2050+39-102-68-112-176+76-38+148-246+48+0-38 +hashblocks_sha512 7 implementation avx2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 7 0 51 +526+62+1+3+3-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 1 52 +32-3+1+0+1+1+5+0-1-1-1-1-1+31-2 +hashblocks_sha512 7 2 51 +1-1-2-1-1-1-1-2+0+0+0+0+0+0+0 +hashblocks_sha512 7 4 51 +2+0-1-2+0+0+0-1-1+0-1-1+0-1+0 +hashblocks_sha512 7 7 51 +3-1+0-2+0-1+2+0+0-1+0+0+0+0+0 +hashblocks_sha512 7 11 50 +4+0+1-2+3-2+3-2+1+0-1+0+1+0+1 +hashblocks_sha512 7 17 50 +3+0+0+0+0+0+0-1+0+1+0+1+1+1+1 +hashblocks_sha512 7 26 51 +2+0-1-2+0+0+0-1-1+0-1-1+0-1+0 +hashblocks_sha512 7 40 51 +30-2+2-1+2+7+7+8+3-1+0+0+0+0+0 +hashblocks_sha512 7 61 51 +30-2+2-1+2-1+2+0+0-1+0+0+0+0+0 +hashblocks_sha512 7 92 51 +30-2+2-1+2-1+2+0+0-1+0+0+0+0+0 +hashblocks_sha512 7 139 778 +461+100+12+67+4+5+0+0-4-8-6-4-8-10+3 +hashblocks_sha512 7 209 780 +117+13+7+0+1+2-1-4-3-2-4-8-7+1+1 +hashblocks_sha512 7 314 1471 +168+95+38+21-4+0-11-3-7-6-3-4+5+5+5 +hashblocks_sha512 7 472 2155 +215+136+34+7-7-16-1+4+7+0-2-12+0-12+0 +hashblocks_sha512 7 709 3500 +257+98+90+108+39+3+12-5-16-17+0-11-8-8-8 +hashblocks_sha512 7 1064 5535 +213+132+35+11-18-13+2-2+0-12+2-2+0-12+2 +hashblocks_sha512 7 1597 8255 +352+60+29+4-1+60+44-33-2-20-12+0-12+0-12 +hashblocks_sha512 7 2396 12337 +316+53+93-1+151+0-10-12-21+5-10-12-21+21+18 +hashblocks_sha512 7 3595 19223 +240-17+22+38+18-28+0-27-38-36+11-28+0+106-31 +hashblocks_sha512 7 5393 28702 +469-25+14-20+40-20+40-20+40-20+40+59-4+0-4 +hashblocks_sha512 7 8090 42994 +340-4+70-59-63+116-34+0+19+11-33+45-15+45-39 +hashblocks_sha512 7 12136 64073 +588+161+0-2-31+26+23-4-27+86-4-31+14+103-1 +hashblocks_sha512 7 18205 96697 +485+3+0-26-9+45-49+46+23-28-13+29-67+0-26 +hashblocks_sha512 7 27308 144944 +738-28-31-35+65-74-38+40-130+99+28+0+58-76+170 +hashblocks_sha512 7 40963 220134 -223+136+276+98+182+0+236+28+314-938-926-857-1048-847-992 +hashblocks_sha512 7 61445 330414 -888-23-24+0+104+132+56-54-24+134-74+128-76+16+102 +hashblocks_sha512 8 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 8 0 125 +587+98+40+0+0+0+0+0+21+3+0+0+0+0+0 +hashblocks_sha512 8 1 124 +85+21+18+8+6+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 2 125 +10+20+8+8+29+16+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 4 125 +9+20+7+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 7 125 +9+21+19+8-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 11 125 +10+20+8+8-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 17 125 +9+21+7+8+4+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 26 125 +9+21+19+8-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 40 125 +43+22+21+11+13-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 61 125 +41+20+19+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 92 125 +9+20+7+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 139 1367 +1305+99+100+71+16+20+6+0-11-30-22-24-23-27-25 +hashblocks_sha512 8 209 1365 +293+112+66+48+14+4+4+0-18-23-21-21-8-19-6 +hashblocks_sha512 8 314 2576 +202+179+81+51-11-11-13-12-12-12-12+0+5+0+0 +hashblocks_sha512 8 472 3864 +312+76+10-73-66-79+0-80+0-80+0-80+0-80+0 +hashblocks_sha512 8 709 6333 +345+12-18+19+1+30+0-2+0-1-3-4+0-4+3 +hashblocks_sha512 8 1064 10046 +376-41+7+4-1-3-1+37+0-4+5-3+1-1+1 +hashblocks_sha512 8 1597 15016 +325-139+23-5-171+54-23+13+13-26+12-28+16+0-7 +hashblocks_sha512 8 2396 22447 +202+53+4-2+0+0+1-1+0-1+23-10-10-10-9 +hashblocks_sha512 8 3595 34805 +288+45+0+1+1+1+1+1-9-9-9-9-9-9-9 +hashblocks_sha512 8 5393 52132 +229+34+53-22+24+0-33+17-1+17-1-33+17-1-33 +hashblocks_sha512 8 8090 78134 +296+20+33+4+5+0+0+2+0-2+0+0-1+3-1 +hashblocks_sha512 8 12136 116451 +241+60+2+1-1-1+0+2-2+2+1-1-1-1-1 +hashblocks_sha512 8 18205 175778 +185+37+3+0+820+15+3+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 27308 263536 +196+40+32+0+0-2-2-2-3+1-3+1-1+2-1 +hashblocks_sha512 8 40963 395820 +144+786+12-1-1-2+2-2+0-1-3-2+0+0+0 +hashblocks_sha512 8 61445 593580 +251+19+724+40-4+0+0-2-2-2+0-4+0+0+881 +hashblocks_sha512 9 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 9 0 77 +300+48+0-1-2-1+0+4+1+1-2+1+0-2-2 +hashblocks_sha512 9 1 76 +67+18+0+3+4+1+4-1-1+0-1-1-1-1-1 +hashblocks_sha512 9 2 75 +7+4+0+0+19+1+1+0+2+3+0+0+0+0+0 +hashblocks_sha512 9 4 76 +6+0+0+4+3+0-1-1-1-1+0-1-1+19+3 +hashblocks_sha512 9 7 76 +8+1-1-1+3+4+0+1-1-1-1-1+0+0-1 +hashblocks_sha512 9 11 76 +6-1-1+1+4+5-1-1-1-1+0+0+0+0+0 +hashblocks_sha512 9 17 76 +6+3-1-1+0+2-1-1-1-1+0+0+0+0+0 +hashblocks_sha512 9 26 76 +6+4+0+4+6+5-1+1-1-1+0-1-1-1-1 +hashblocks_sha512 9 40 76 +34+0+1+2+3-1+0+0+0-1+1+0-1-1-1 +hashblocks_sha512 9 61 76 +34+1-1+0+2+0+1-1+0-1-1+1+1+1-1 +hashblocks_sha512 9 92 76 +34+1-1-1+3+0+2-1+0-1+1+0-1-1-1 +hashblocks_sha512 9 139 1174 +981+105+31+31+23+14+5-3+0-14-13-20-16-22-13 +hashblocks_sha512 9 209 1177 +83+29+29+21+22+0+4-3-6-11-11+2-13-21-23 +hashblocks_sha512 9 314 2244 +143+80+63+14+17-5-2+2-2+1-3-12+0-13-9 +hashblocks_sha512 9 472 3303 +294+156+41-14+0-12+5-9+0-6-13+13-13-16+6 +hashblocks_sha512 9 709 5457 +268+121+0+0-22+6+20-1-15+7-11-7+25-1-15 +hashblocks_sha512 9 1064 8650 +388-5+30-12+29-34+6-12-15-12+14+3+24-12+0 +hashblocks_sha512 9 1597 13011 +273-24+56-22+51-20-2+0+17-2+11-28+50-28+32 +hashblocks_sha512 9 2396 19516 +235-53+12-55+2-54+2-56+2-56+0-56+0-56+0 +hashblocks_sha512 9 3595 30064 +344-108+4-112+1-128+0-129+1-127+3-129+1-129+3 +hashblocks_sha512 9 5393 45068 +566+360+69-208-33-195+0-193+83-177+111-165+83-175+111 +hashblocks_sha512 9 8090 67524 +1064+184-295+0-223+15-232+117-238+79-244+117-238+110-272 +hashblocks_sha512 9 12136 100691 +881-351+0-363+185-423+185-423+185-423+185-423+185-423+185 +hashblocks_sha512 9 18205 152251 +45+145-780+106-766+650+663-880-36-794+3-858+0-848+8 +hashblocks_sha512 9 27308 228186 +2035+181-1144+300-1148+289-1137+0-1160+289-1137+2-1148+277-1137 +hashblocks_sha512 9 40963 342362 +3383-126+76-164+911+188-132+142-152+0-190+158-168+316-142 +hashblocks_sha512 9 61445 513286 +5503-112+446-162-190-144+1374+66+1881+3674+0-135-126+834-156 +hashblocks_sha512 10 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 10 0 125 +1413+93+0+1+2+0+0+0+42+3+0+0+0+0+0 +hashblocks_sha512 10 1 124 +125+5+24+14+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 2 125 +15+44+19+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 4 125 +9+20+7+1+23+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 7 125 +9+20+7+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 11 125 +10+20+7+8-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 17 125 +9+20+7+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 26 125 +10+20+19+8-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 40 124 +38+22+15+4+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 61 125 +37+21+20+16+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 92 125 +9+21+19+8-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 139 1223 +1548+102+39-15-36+26+8-17-22-11-9-20+2+0+2 +hashblocks_sha512 10 209 1220 +244+66+27+17-33-47+31+14-13-13-2+0-2+0-2 +hashblocks_sha512 10 314 2283 +322+110-17+87-12-13+1-2+0-2+0-2+0-2+0 +hashblocks_sha512 10 472 3361 +254+1+80-2-3-15-24-27-27-32+0+0+0+0+0 +hashblocks_sha512 10 709 5514 +404+19+10+12+0-1+2-1+0-1+2-1+0-1+2 +hashblocks_sha512 10 1064 8721 +269+39-2+2-1+0-1+2-1+0-1+2-1+0-1 +hashblocks_sha512 10 1597 13028 +243-58+18-18+12-18+12-18+14-18+14-18+0-31+0 +hashblocks_sha512 10 2396 19489 +278+0-2+1+2-1-2+1+2-1-2+1+2-1-2 +hashblocks_sha512 10 3595 30200 +310+0-3+0+1-2-3+0+1-2-3+0+1-2-3 +hashblocks_sha512 10 5393 45220 +278-37-26+16+875+11-41+32+36-2-28+21+0-27-18 +hashblocks_sha512 10 8090 67682 +319-25+3+0-1+3-1+4+2+3-1+3+0+0-1 +hashblocks_sha512 10 12136 100952 +178-34+1-2+0-2+0-2+0-2+1+2+4+2+3 +hashblocks_sha512 10 18205 152361 +180-35+0+1+0-2+0-2+0-2+1+2-2+2-1 +hashblocks_sha512 10 27308 228370 +236+0+31+33+31+849-5-1+2-2+0+0+0-2+2 +hashblocks_sha512 10 40963 342704 +322-29+0+1+1+1+0+0+0+0+0+0+0+574+427 +hashblocks_sha512 10 61445 514390 +267-27+0+0-2+0-2+0-2+0-2+0+236-27-1 +hashblocks_sha512 11 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 11 0 76 +655+47+25+22-1-1-2-1+2+2+0-1+0+2-1 +hashblocks_sha512 11 1 75 +146+0+0+0+0+2+0+0+0+0+0+0+0+28+0 +hashblocks_sha512 11 2 75 +6+1+3+0+0-1+1+2+3+0+3+0+0+0+0 +hashblocks_sha512 11 4 75 +7-1-1+1+2+0+0+2+0+0+0+0+0+0+2 +hashblocks_sha512 11 7 75 +7+3-1+0+0+0+2+0+2+0+0+0+0+0+0 +hashblocks_sha512 11 11 75 +7-1-1+0+0+0+0+2+0+1+1+0+0+0+2 +hashblocks_sha512 11 17 76 +6+3-2-1+0-1+0+2+0+1+1+1-1-1-1 +hashblocks_sha512 11 26 75 +7+3-1+0+0+0+2+0+2+0+0+0+0+0+0 +hashblocks_sha512 11 40 75 +33-1-1-1-1+0+0-1+0+1+1+1+0+0+1 +hashblocks_sha512 11 61 75 +33-1-1-1-1+0+0+0+0+0+2+0+0+0+0 +hashblocks_sha512 11 92 75 +6+0+1-1+0-1+0+1+0+2+0+0+0+0+0 +hashblocks_sha512 11 139 1049 +715+71+24+15-3-1-7-7+63-1-9-11+12+2+0 +hashblocks_sha512 11 209 1053 +68+4+14+6-11+5-5-6-10-14+0+15+20-4-4 +hashblocks_sha512 11 314 2011 +90+21+0-3-8+0-10-4+4+13+6-18-6+18+1 +hashblocks_sha512 11 472 2972 +122+78+14-2-4-22-5+3+30+0-4+9-13+3-3 +hashblocks_sha512 11 709 4904 +109+41+9+9+1+7+2+0-6+0-11-3-9-13-32 +hashblocks_sha512 11 1064 7751 +93+38+6-5-5-8-16+50-15-17+34+9-17+14+0 +hashblocks_sha512 11 1597 11618 +187+18-3+43-11+0-5-23+14-20+12-28+35-67+20 +hashblocks_sha512 11 2396 17374 +161+41+6+12-13-6+0-6+0-6+0-6+0-6+0 +hashblocks_sha512 11 3595 26922 +191+54+75-23+0-38+0-38+0-38+0-38+0-38+0 +hashblocks_sha512 11 5393 40330 +201+2-65+27+43+3-49+3-15-13-12-59-28+0+85 +hashblocks_sha512 11 8090 60510 +178-149+0+87-38-129+21-2-66-129+21+31-13+47+21 +hashblocks_sha512 11 12136 90192 +163-187+4+1-96-73+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 11 18205 136139 +1136+45+205-110+59-92+63-114+0-83-77-30+79-92+63 +hashblocks_sha512 11 27308 204070 +436+213+32+11+69+0-74-6-164-6-74+8-124+0+46 +hashblocks_sha512 11 40963 307044 +38-6-130+105+459-22-100+33+89-151-223+0-42+1+169 +hashblocks_sha512 11 61445 460617 +587-648+7-76-86-78+194+385+5-39+178+0+161-89-236 +hashblocks_sha512 12 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 12 0 127 +532+54+6+8+2-3-3-2+18-2+0-2+0-2+0 +hashblocks_sha512 12 1 127 +67+9+5+7-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 12 2 124 +16+39+0+1+2+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 4 126 +9+4-2+0+33-2-1+1-1+1-1+1-1+1-1 +hashblocks_sha512 12 7 124 +9+8-1+2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 11 124 +11+6+0+2+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 17 124 +11+6+0+2+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 26 124 +11+6+0+2+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 40 127 +39+13-2+2-3-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 12 61 125 +41+13-1+1-1-1+0+2+0+2+0+2+0+2+0 +hashblocks_sha512 12 92 124 +42+16+0+1-1+1+2+1+0+0+0+0+0+0+0 +hashblocks_sha512 12 139 1191 +1153+122+56+16-8+7+16-3-3+0-3+0-3+0-3 +hashblocks_sha512 12 209 1189 +200+78+38+3-11+3+15-7-1+0-1+2-1+0-1 +hashblocks_sha512 12 314 2211 +312+136+26+68+12+1-3+0-3+0-3+0-3+0-3 +hashblocks_sha512 12 472 3221 +410+86+78-10-3+0-3+0-3+0-3+0-3+0-3 +hashblocks_sha512 12 709 5272 +526+48+0-14-11-16+3-19+1-19+1-19+3-19+1 +hashblocks_sha512 12 1064 8320 +532+21+1-13+2-18+0-20+0-20+2-33+0-21+0 +hashblocks_sha512 12 1597 12403 +480+0-18+36-23+25-23+25-23+25-23+25-23+25-23 +hashblocks_sha512 12 2396 18504 +433+14+0-2+0-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 12 3595 28644 +413-19+1-2+0-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 12 5393 42882 +371-37+0-41-44-25+15-27+22+11-28+1+14+11-28 +hashblocks_sha512 12 8090 64412 +558+84+19+9-2-2+0+7+0+0+0+967-215-119-183 +hashblocks_sha512 12 12136 97098 +509+83+9+13+0+9-2-2-2-2-2+0+0+0+0 +hashblocks_sha512 12 18205 144834 +540+73+2+11+15+0+0+1-2-2-2-2-2-2-2 +hashblocks_sha512 12 27308 217110 +516+79+9+2+19+0+0+0+0+0+0+2+0+641-602 +hashblocks_sha512 12 40963 329895 +731+91-1+16-2+0+0+1-1-1+0-2+1+1+1 +hashblocks_sha512 12 61445 487529 +7756+4924+4+26-24+0-26+1-29+0-26+1-17+0-24 +hashblocks_sha512 13 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 13 0 78 +1655+46+20+20+17-3-2+0+0+1-3-2-1-1-1 +hashblocks_sha512 13 1 76 +92+2+0+5+4+1+1-1+1+0-1-1-1-1-1 +hashblocks_sha512 13 2 76 +6+4-1+1+1+1+0-1+1-1-1+0+0-1-1 +hashblocks_sha512 13 4 76 +6+3-1-1+2+0+2-1-1+0-1-1+0+0+0 +hashblocks_sha512 13 7 76 +6+3-1+1+1+1+0-1+1-1-1+0+0-1-1 +hashblocks_sha512 13 11 76 +6+3-1-1+2+0+2-1-1+0-1-1+0+0+0 +hashblocks_sha512 13 17 76 +6+3-1-1+2+0+2-1-1+0-1-1+0+0+0 +hashblocks_sha512 13 26 76 +6+3-1-1+2+0+2-1-1+0-1-1+0+0+0 +hashblocks_sha512 13 40 76 +37+2-1-1+2+0+2-1-1+0-1-1+0+0-1 +hashblocks_sha512 13 61 76 +34+1-1-1+2+0+2-1-1+0-1-1+0+0+0 +hashblocks_sha512 13 92 76 +6+3-1-1+2+0+2-1-1+0-1-1+0+0+0 +hashblocks_sha512 13 139 1059 +1100+127+3-2+0+2+1-9-1-11+0+8-12-10-12 +hashblocks_sha512 13 209 1058 +207+11+6+6+3-8-5-8+0-10+1+9-11-9-11 +hashblocks_sha512 13 314 2028 +107+42+23+1-12+14-15-11+0-8-22-4+16+6-16 +hashblocks_sha512 13 472 3003 +120+14-17-21+4-12+12-10+0-4+0-4+0-4+0 +hashblocks_sha512 13 709 4954 +108+77+29+20+36-33-29+5+0+3-6-11-11-20-14 +hashblocks_sha512 13 1064 7814 +145-6+11-5+4-10-1-32+14-32+8-40+12+0+21 +hashblocks_sha512 13 1597 11691 +95-28+20-26+16+23+43-18-13-3+25+42+0-35-4 +hashblocks_sha512 13 2396 17518 +7+29-58-2-64+0+58-3+45-3+43+0+58-3+45 +hashblocks_sha512 13 3595 27183 +0+1-110-35+57-40+99-8+54-8+57-43+54-8+54 +hashblocks_sha512 13 5393 40784 +0+69+8-153-98+17-85+89+17+14-146-45+52-17-147 +hashblocks_sha512 13 8090 61130 -46+87+113-24-93+18+38-4+8-85-19+0+33+49-70 +hashblocks_sha512 13 12136 91227 +125-10+72+172+0+104-82+20-146+156-115-22-27+78-272 +hashblocks_sha512 13 18205 137605 +195-163+0-69+123-124+68-125+87-88+8+23+37-160-88 +hashblocks_sha512 13 27308 206339 +92+35-123-22+154-210+164-39-227-242+160-38+18+0+32 +hashblocks_sha512 13 40963 309734 -100+143+621+0-375-47-210-216+606+296-584+164+255+92-303 +hashblocks_sha512 13 61445 464498 -399+203+234+0-794+836-821-89-96+88-770+348+115+345-635 +hashblocks_sha512 14 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 14 0 124 +545+102+26+0+0+0+0+0+22+1+0+0+0+0+0 +hashblocks_sha512 14 1 124 +64+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 14 2 125 +11+15+5+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 14 4 125 +10+16+11+1-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 14 7 125 +4+14+2+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 14 11 125 +11+15+11+1-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 14 17 125 +10+16+11+0-1-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 14 26 125 +4+15+7+1+0-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 14 40 125 +39+9+9-1+1+1-2+0+0+0+0+0+0+0+0 +hashblocks_sha512 14 61 125 +39+20+13+0-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 14 92 125 +39+21+13+8-2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 14 139 1355 +1317+135+74+29+24-10+1-11+1+0-30-10-30-10-30 +hashblocks_sha512 14 209 1345 +222+62+46+18+9-5-7-4-8+1-20+0-20+0-20 +hashblocks_sha512 14 314 2508 +244+198+92+29+49+30+0+3+0+0+0+0+0+0+0 +hashblocks_sha512 14 472 3706 +334+139+66+15+12-18-18-1+0+0+0+0+0+3+0 +hashblocks_sha512 14 709 6096 +453+102-17+30+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 14 1064 9650 +489+17-10+0+0+3+0+0+0+0+0+29+36+4+4 +hashblocks_sha512 14 1597 14427 +436-2-26+0-27+0-27+0-27+0-27+0-27+0+2 +hashblocks_sha512 14 2396 21545 +450+12+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 14 3595 33407 +391+25+13+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 14 5393 50039 +449-16+11+67-30+0+10-30-30+1+9-30+0+9-29 +hashblocks_sha512 14 8090 74984 +593+34-23-8+37+2-24+0+3-24+1-30-39+2+0 +hashblocks_sha512 14 12136 111757 +559+52-22+24+1-2-26+0-2-26-2+947+25+29-6 +hashblocks_sha512 14 18205 168678 +618+56-22+0+31+34+0-24+0+0-24+1214+1183+34-9 +hashblocks_sha512 14 27308 252884 +707+62-22+0+0+0+0+0+32+35+2-22+0+0-24 +hashblocks_sha512 14 40963 379794 +532+64+0+32+0-2+35+0+0-2+0+0+30-2+0 +hashblocks_sha512 14 61445 569582 +1768+39+28+0-28-28-30+0+0-30+2-30+2-30+1263 +hashblocks_sha512 15 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 15 0 90 +500+52+19-2+0-1-4+0+18+0-3-4+0-3-4 +hashblocks_sha512 15 1 89 +68+3+6+1+1+1-1+0-3-3-3-3-3+7-2 +hashblocks_sha512 15 2 88 +10+4+27+7+1-1+1-1-1+1+0+0+0+0+0 +hashblocks_sha512 15 4 88 +9+6+5+8+18+2-1+0+0-1-2+0-3-2-1 +hashblocks_sha512 15 7 89 +9+3+8+9+0-2+1+25+2-2+0-1-1-1-1 +hashblocks_sha512 15 11 88 +9+5+5+8+15+4-1+1+0+0+0+0+0+0+0 +hashblocks_sha512 15 17 90 +8+2+7+8-1-3+0+0+0+0-6-3-4-2-5 +hashblocks_sha512 15 26 87 +10+5+8+2+1+0+3+0-1+0-1+1-2-1+0 +hashblocks_sha512 15 40 89 +37+3+8+9+0-2+1+1+1-2-3-1-4-3-2 +hashblocks_sha512 15 61 89 +36+5+5+6+0+2+2+0-1+0-3+1-2-4-2 +hashblocks_sha512 15 92 88 +9+4+7+1-1+1+2+2-2-1+0+0+0+0+0 +hashblocks_sha512 15 139 1238 +1231+157+27+28+20+18-5+0-10+5+0-3-1+0-3 +hashblocks_sha512 15 209 1241 +348+55+32+18+24+8+9-9-6-20-27-22-1+0-7 +hashblocks_sha512 15 314 2382 +396+107+69+2-28-41+0-9-8-19+1-3+5-3+5 +hashblocks_sha512 15 472 3536 +409+80+32+54-30-48-15-20+1+0-2+0-2+0-2 +hashblocks_sha512 15 709 5818 +509+93-5+13-5+5-5+14+3+0-9-54+3+0-9 +hashblocks_sha512 15 1064 9245 +499-27-56+0-5+7+6+25-14+3+2-5-44+3+0 +hashblocks_sha512 15 1597 13851 +418-35+1+27-9-44+0-26-1+31+4-7+7-8+8 +hashblocks_sha512 15 2396 20754 +329-9+13+16+10+12-41-2-9-1-7+0+7-4+3 +hashblocks_sha512 15 3595 32183 +285-7+10+16-50+2-2+2+0+5+3+0-6+0+0 +hashblocks_sha512 15 5393 48218 +288+39-15+5+6-32-1+8-26+0-1-25+0+6-33 +hashblocks_sha512 15 8090 72260 +245+50+7+0+1+1-6-6-6-6-6-4-2+0+0 +hashblocks_sha512 15 12136 107703 +239+52+9+2-7+1-2+4-8+0-8+0-6+0-8 +hashblocks_sha512 15 18205 162661 +1384+69+3+0-3+5-4+0-4+0-6+0-4+14-4 +hashblocks_sha512 15 27308 243796 +404+53+2-2-1-1-2-2+0+0+0+2+2+2+2 +hashblocks_sha512 15 40963 366939 -409+378+75+9+8+6+0-6+0-48-3-49-5-49+0 +hashblocks_sha512 15 61445 549027 +214-175+788+268+0+290-7+286+26+277-300-269-343-221-343 +hashblocks_sha512 16 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 16 0 126 +508+59-1+2-1+0-1+0+20+0-1+0-1+0-1 +hashblocks_sha512 16 1 125 +83+12+16+2-2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 2 125 +14+8+2+1+28+2-1-1+0+0+0+0+0+0+0 +hashblocks_sha512 16 4 125 +14+9+19+1+0+0-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 7 125 +10+8+2+3-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 11 125 +14+9+19+1-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 17 125 +14+10+3+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 26 125 +14+10+2+1-1-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 40 125 +33+14+12-2+0-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 61 125 +33+15+12+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 92 125 +14+9+19+3-1+0-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 139 2229 +912+309+34+10+0-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 16 209 2217 +246+33+31+13+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 314 4348 +243+38+0+6+2+0+0+0+0+0+0+0+0-20-19 +hashblocks_sha512 16 472 6417 +247+36+10+7+0-3+0-1-2-1+0-1-2-1+0 +hashblocks_sha512 16 709 10596 +242+41+8+6+26-2-2-2+20-2-2-2-2+20+0 +hashblocks_sha512 16 1064 16881 +204+22+9+3+0+2+1+0+0+0+0+0+0-22+2 +hashblocks_sha512 16 1597 25237 +213+45+11+5-1+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 2396 37846 +217+23+2+0+0+0+0+0+0+0+17+26+0+1+0 +hashblocks_sha512 16 3595 58693 +197+48+0-17+12-9-12+6-8-13+8-9-12+6+8 +hashblocks_sha512 16 5393 87952 +184+36+4-4-2-3+0+0+0-2+2-1-3+1-3 +hashblocks_sha512 16 8090 132072 +177+37+3-1+0+0+0+1-1+2-1-2-4-1+0 +hashblocks_sha512 16 12136 197048 -38-432-465+822+11-1+2+0+1-1+0+1+1+0+1 +hashblocks_sha512 16 18205 296853 +670+27+3+0-1+0-1+0+2+0-4+2-4+0+0 +hashblocks_sha512 16 27308 445177 +524+10-1-4-2+5+0+70-2+67+3-1-2+5+0 +hashblocks_sha512 16 40963 668821 +547+107-43-5-31-3-45+71-33+0-31+2069+1634+1556+1544 +hashblocks_sha512 16 61445 1005445 -1855-2189-2368-889+74+1-27+0+20-3+35+942+5+17-25 +hashblocks_sha512 17 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 17 0 75 +467+69+3+1+0+0+0+1+4+3+0+0+0+0+0 +hashblocks_sha512 17 1 75 +57+24+2+0+2+0+4+6+5+0+0+0+0+0+0 +hashblocks_sha512 17 2 75 +7+1+1+0+2+1+1+0+0+0+0+1+0+0+0 +hashblocks_sha512 17 4 75 +7+1+0+3+6+4+0-1+0+1+0+0+0+0+0 +hashblocks_sha512 17 7 76 +6+0+0-1+0+1+0+0+1-1-1-1-1-1-1 +hashblocks_sha512 17 11 75 +7+1+0+2+3+2+2-1+0+1+0+0+0+0+0 +hashblocks_sha512 17 17 75 +137+3+0+2+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 17 26 76 +6-1-2+0-1-1+0+2+0+1+1+0-1-1-1 +hashblocks_sha512 17 40 75 +34-1-1+0+0+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 17 61 75 +33+1-1+1+1+1-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 17 92 75 +33-1+3+0+0+4+2+1+0+0+0+0+1+0+0 +hashblocks_sha512 17 139 1883 +1044+219+94-5-4-4+3-8+0-7+3-6+0-7+3 +hashblocks_sha512 17 209 1872 +332+23+0-2-2-6+1-2+1+0+6-10-1+12+15 +hashblocks_sha512 17 314 3692 +231+21-23-21-13-15-27-10+1+2+0+2+2+1-3 +hashblocks_sha512 17 472 5456 +225-27-35-29-41+0-3+79-5+11+1+10+0+6+0 +hashblocks_sha512 17 709 9030 +175+11-1-6-2+64+0+2+1+19-4+8-8-2-6 +hashblocks_sha512 17 1064 14408 +163-20+0+0+1+65-3-6+0-27+0-8+1-28-2 +hashblocks_sha512 17 1597 21549 +97-11-4-1+0-5+82+3-2+5+1+6-7+11-3 +hashblocks_sha512 17 2396 32263 +94+0+0+0-8+5+77+7-3+5-8+3-5+3-3 +hashblocks_sha512 17 3595 50133 +60-3+0-15-1+1-2+77+2+857-18+3-6+4-21 +hashblocks_sha512 17 5393 75208 +0+19-48+2-60+8+0-70+6-64+1-64-16-65+5 +hashblocks_sha512 17 8090 112628 +302+95+74+85-9+148-11+0+0+0+0+0+0+0+0 +hashblocks_sha512 17 12136 168046 +313-56+9-12+14-53+9-92+19-17+16-65+0-77+85 +hashblocks_sha512 17 18205 253780 +292+87-82+0+811-79+24-45+73-63-6+23-11-65+67 +hashblocks_sha512 17 27308 380607 +270+37+41+45-36+22+80-40-148+0-2+724-65-88-133 +hashblocks_sha512 17 40963 571687 +309+22+0-107+78-31-118-19+21+842+4+5-75-54-19 +hashblocks_sha512 17 61445 857468 +316-178+0+768+117-139-99-171+32-34-62-100+915+394+536 +hashblocks_sha512 18 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 18 0 127 +552+93+39+13+14-4-2-3+40+0-3+0-3+0-3 +hashblocks_sha512 18 1 125 +68+8+6+5-1-1-1-1-1-1+5+0+1+0+0 +hashblocks_sha512 18 2 124 +41+11+21+12+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 4 125 +40+10+18+10+31+11+0+1+0+0+0+0+0+0+0 +hashblocks_sha512 18 7 125 +9+21+7+8+4+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 11 125 +9+21+7+8+4+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 17 125 +9+20+7+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 26 125 +9+21+21+9+8-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 40 125 +37+10+7+10-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 61 125 +37+9+6+10+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 92 125 +9+21+7+8+4+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 139 1982 +1048+371+237+16-4+6+0-7-14-12-15-17-6+13+33 +hashblocks_sha512 18 209 2023 +304+20+37+30-6+0-6+0-6+0-6+0-6-6-7 +hashblocks_sha512 18 314 3953 +145+81+54-5+69+0+6+0+6-9-16-20-4-14-16 +hashblocks_sha512 18 472 5825 +103-83-97+17+2+7+4+0+4+0+4-1-9-6-5 +hashblocks_sha512 18 709 9603 +161+70+25-5-6+24-3-5-6+24-6+0+19+9-6 +hashblocks_sha512 18 1064 15292 +124+43+5+1+5-2+0-2+0-2+0-1+4-5-3 +hashblocks_sha512 18 1597 22852 +79+55+2+79-5-4+0+1-6-3+79-5-4+0+0 +hashblocks_sha512 18 2396 34314 +87-91-127-92+44+0-8+4-7+1-8+39+40-4+29 +hashblocks_sha512 18 3595 53339 +23-84+0+13-21+43+9-11-21+43+9+40-45-65-16 +hashblocks_sha512 18 5393 79879 -27-237-12+10+104+29+60+0+60+0+60+0+37-28-42 +hashblocks_sha512 18 8090 119698 +334-277-390+1+18+26+9+1+18-52-3+0-24-63-24 +hashblocks_sha512 18 12136 178504 -598-678+151-136-3+0+0+108+2-122+6+0+0+0+0 +hashblocks_sha512 18 18205 269590 -1041-1171-1037+25+0-2+0+1-5+981+48+264-6+167-5 +hashblocks_sha512 18 27308 404178 -1409-273+51+103+0+2-320+158+0+2-322+178-34+493-1070 +hashblocks_sha512 18 40963 606326 -1382-1449+674+662+658+582-34-1320-1480-1542+854+1224+1005+0-878 +hashblocks_sha512 18 61445 907910 -174-641+123-368+1934+79-44+80-308-132+86+222+765-246+0 +hashblocks_sha512 19 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 19 0 77 +758+49+1+1-1+0-1-1+1+1-2-1-1+0+1 +hashblocks_sha512 19 1 76 +38+2+3+2+0+1+0+1+0-1-1-1-1-1-1 +hashblocks_sha512 19 2 76 +6+0+0+0+0+2+0+1+2+1-1-1-1+1-1 +hashblocks_sha512 19 4 77 +5+0+1+1+1+2+1+1-1-2+0-2-2-2-1 +hashblocks_sha512 19 7 76 +6-1+0+1+1+2+0+2-1-1-1-1+1-1-1 +hashblocks_sha512 19 11 76 +6+2+1+5+2+1+0+1+0-1-1-1-1-1-1 +hashblocks_sha512 19 17 77 +5+1+1+1+1+0+1-1+0-1-2-2-2+0-2 +hashblocks_sha512 19 26 77 +5+1+1+2+1+1-1+0-1-2-2-2+0-2-2 +hashblocks_sha512 19 40 77 +29+1-1+0+2+2+6+3-1-1-2-1+1-1-2 +hashblocks_sha512 19 61 78 +29+3+0+1+4+3+1+3-1-1-3-3-3-3-3 +hashblocks_sha512 19 92 77 +31+0-1+1+0+2+3+3-1+0-1-1+0-1-1 +hashblocks_sha512 19 139 1759 +848+191+58-4+6+0+0-4+6+0+0-4+6-2+13 +hashblocks_sha512 19 209 1753 +231+57+13+3+13-2+10-7+0-2+0-2+0-2+0 +hashblocks_sha512 19 314 3453 +388+55+14-10+12-31-10-5+20+0+17-14-23+15-23 +hashblocks_sha512 19 472 5105 +222+18+0+21-10-18+3-13+3-13+3-13-46+13-3 +hashblocks_sha512 19 709 8437 +153-13-3+44+21+15+26+3-24+0-51+25-31-3-4 +hashblocks_sha512 19 1064 13452 +155+5-70-8+31-10+9-53+25-22-24+90-2+0+10 +hashblocks_sha512 19 1597 20144 +176-14+17+1-9-24+22-19-32-54+49+0+7-15+94 +hashblocks_sha512 19 2396 30112 +159+63-56+85+0-73-44+78+89-78-63+91-54+58-53 +hashblocks_sha512 19 3595 46838 +63-15-13-94-69+18+80-75-117+25+63+6+0-16+51 +hashblocks_sha512 19 5393 70153 +292+0+27-85+16-101+73-11-59+27-43+82-2+68-11 +hashblocks_sha512 19 8090 105221 +118-134+93-71-63+125-55+53+1089+194+0-33+141-14-2 +hashblocks_sha512 19 12136 156845 +1333+179+8-76+118-21-89+38+57+0-93+31-53-157-21 +hashblocks_sha512 19 18205 236910 +255+197-68-166-44+0-67-37+26-264-56+20+948+130+237 +hashblocks_sha512 19 27308 355277 +498+59-223-160-147-174-335+258+0-303+121+99-23+59+155 +hashblocks_sha512 19 40963 534182 +1176+84+0-36-65-1+194-416+8-214-90+16-194+160+133 +hashblocks_sha512 19 61445 801116 +506-212-161-331-146-170+308-396+678+328+617+0+258-126+238 +hashblocks_sha512 20 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 20 0 128 +583+64-2+0-4+0-4+0+17+0-4+0-4+0-4 +hashblocks_sha512 20 1 126 +85+14+15-2+0-3+0-3+0+3-1-1+0-1+0 +hashblocks_sha512 20 2 126 +14+13+17+0+24-1+0-3+0-3+0-3+0+3-1 +hashblocks_sha512 20 4 126 +14+13+17+0-2+0-3+0-3+0-3+0-3+0-3 +hashblocks_sha512 20 7 126 +15+13+19-2+0-3+0-3+0-3+0-3+0-3+0 +hashblocks_sha512 20 11 126 +15+12+16-2+0-3+0-3+0-3+0-3+0-3+0 +hashblocks_sha512 20 17 126 +14+13+17+0-2+0-3+0-3+0-3+0-3+11-1 +hashblocks_sha512 20 26 126 +15+12+16-2+0-3+0-3+0-3+0+3-1-1+0 +hashblocks_sha512 20 40 126 +37+10+12+20+18+13+0-1+0-1+0-1+0-1+0 +hashblocks_sha512 20 61 126 +37+12+12+0-2+0+3-1-1+0-1+0-1+0-1 +hashblocks_sha512 20 92 126 +40+14+12+0-2+0-3+0-3+0-3+0-3+0+3 +hashblocks_sha512 20 139 2087 +1161+210-2-21+0+0+6+0+6+0+6+0+6+0+6 +hashblocks_sha512 20 209 2093 +105+41-37+10-2+0-4+0-4+0-4+4-4+0-7 +hashblocks_sha512 20 314 4103 +144+41+6+7+7+7+7-2+0-20-23-21-24-25-25 +hashblocks_sha512 20 472 6040 +56+38+3+4+3-1+0-3-2-3+0-3-2-3+0 +hashblocks_sha512 20 709 9968 +23+39+37+2-1-3+21+67-3-3+21+0-2-3-3 +hashblocks_sha512 20 1064 15868 +787+23+1+1+0-2+1+1+0+0+0-2+0+1+0 +hashblocks_sha512 20 1597 23725 +21+36+16+4+0+0+1-1+1-1+5-11-10-8-10 +hashblocks_sha512 20 2396 35501 +49+78+38+0+0+0+1+1+0-22-21+8-11-30-33 +hashblocks_sha512 20 3595 55161 -11+1+0+6+80-23-19+5-20-21+77+1-27-21+2 +hashblocks_sha512 20 5393 82639 -26+81+22+4+4+5+0+3+4-39-47-49-49-48-49 +hashblocks_sha512 20 8090 119309 +314+19+13+0+9+3+3-2+4-52-70-63-71-69-73 +hashblocks_sha512 20 12136 177912 +254+8+2-9-9-3-5+60-11+77+645+5+0-14-3 +hashblocks_sha512 20 18205 268625 +314+18+18+2+18-4+12+0+10-2-144-129-151-125-151 +hashblocks_sha512 20 27308 402819 +368+12+82-9+696+35+153-3-7-3+0-6-7+11-209 +hashblocks_sha512 20 40963 628102 -22531-22971-22878-22817-8557+75+8+80+0+2+62+70+2+0+0 +hashblocks_sha512 20 61445 907828 -46+0-195-324-171-59-289-154+2276+1593+1956+1596+1806+1606+1804 +hashblocks_sha512 21 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 21 0 75 +586+78+0+0+0+0+0+0+2+4+0+0+0+1+2 +hashblocks_sha512 21 1 75 +67+23+6+2+1+0+0+0+0+0+0+3+1+0+0 +hashblocks_sha512 21 2 75 +7+20+0+3+2+0+1+0+0+0+0+0+0+0+1 +hashblocks_sha512 21 4 75 +7+4+0+0+18+0+0+0+0+3+2+0+0+0+3 +hashblocks_sha512 21 7 76 +11+1+0+1+0+2+0+0+0-1+1+1+0-1-1 +hashblocks_sha512 21 11 76 +6+3-1+0-1+1+1-1-1-1+3+1+0-1-1 +hashblocks_sha512 21 17 76 +8+1-1+0-1+1+1-1-1-1+3+1+0-1-1 +hashblocks_sha512 21 26 76 +6+3-1+0-1+1+1-1-1-1+3+1+0-1-1 +hashblocks_sha512 21 40 76 +41+2-1+0-1+1+1-1-1-1+3+1+0-1-1 +hashblocks_sha512 21 61 75 +44-1+0+2+0+3+1+1+0+0+1+0+2+0+0 +hashblocks_sha512 21 92 76 +6+3-1+0-1+1+1-1-1-1+3+1+0-1-1 +hashblocks_sha512 21 139 1760 +791+307+160-11+3-7+0+25+70-4+19-8-8-8-8 +hashblocks_sha512 21 209 1760 +243-12-2-1-4-1+0+0+13+59+4+0-8+0-8 +hashblocks_sha512 21 314 3453 +259+11-26-10+9-10+1+22+0+3-7-13+15-14-14 +hashblocks_sha512 21 472 5102 +218+0-14+9-13-6-15+0-6+8+2-16+104-16+12 +hashblocks_sha512 21 709 8444 +194-32+12+0-19+37+30+2-46+17-100+35-18-25-17 +hashblocks_sha512 21 1064 13467 +174-3-30-26+29-3+32-57+6-30-51+8+2+22+0 +hashblocks_sha512 21 1597 20071 +232+53-26+118+73+84-40-4+0-6+0-6+0-6+0 +hashblocks_sha512 21 2396 30126 +174-12+52-14-44+63+24-121+8-63+100+0+124-175-61 +hashblocks_sha512 21 3595 46783 +276+4-46+0+10-42-4+11+28+38-24-15-2+24-29 +hashblocks_sha512 21 5393 70193 +132-26-197+86-12+5-95-226+7+0+3-45+60-178+81 +hashblocks_sha512 21 8090 105215 +0+29-46+154-74-227-219+133-53-95-36+137+28+33+47 +hashblocks_sha512 21 12136 156917 +163-129-135+938+49+29+0-99+86-77-43+739+29-203-125 +hashblocks_sha512 21 18205 236877 +287-126-6-213+83+0-288+39+15-100-222-39+26+66+247 +hashblocks_sha512 21 27308 355358 +179-89-492-118-309+0+176+1329+159-387+37+93+144-359-108 +hashblocks_sha512 21 40963 533989 +666+356-5+35-237+113-149+576+283-195-2+0+60-9-440 +hashblocks_sha512 21 61445 800918 +295-345+244+618+72-77-486-206+16+0-498-358+604+157-560 +hashblocks_sha512 22 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 22 0 127 +527+39-5+0-5+0-5+0+18+0-5+0-5+0-5 +hashblocks_sha512 22 1 126 +84+18+11+5-1-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 22 2 126 +32+9+5+4+21-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 22 4 127 +11+17+8+3-3+0-4+0-4+0-3+2-3+0-3 +hashblocks_sha512 22 7 126 +12+18+9+4+4-1+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 22 11 127 +11+17+8+3-3+0-3+2-3+0-3+2-3+0-3 +hashblocks_sha512 22 17 126 +11+19+8+4-2+0-2+0-2+0-2+6-1-2+0 +hashblocks_sha512 22 26 127 +11+17+8+3-3+0-4+0-4+0-3+2-3+0-3 +hashblocks_sha512 22 40 124 +34+8+17+4+0+2+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 22 61 124 +34+8+17+4+0+2+0+2+0+0+0+0+0+0+0 +hashblocks_sha512 22 92 125 +33+7+16+3-1+1-1+0-1+0-1+0-1+0-1 +hashblocks_sha512 22 139 2239 +1002+246-4-2-5-3+2-3+0-1+1+1+1+2-9 +hashblocks_sha512 22 209 2180 +180+22-1-4-6-9-8-2+0-6+21+47+50+46+50 +hashblocks_sha512 22 314 4364 +109-82-36+2+2+0+2+0+7+3+8-17-14-18-16 +hashblocks_sha512 22 472 6448 +109+39-7+0-9-12+2-2-1+1-1+2-2+1+22 +hashblocks_sha512 22 709 10650 +165-11-15-14+0+0+0+24+0+0+0+24+0+0+0 +hashblocks_sha512 22 1064 16981 +68-14+4+4+0+0+0+0+0+3+4+0-1+0+0 +hashblocks_sha512 22 1597 25381 -9-19+16+3+0+0+0+0+0+0+0-1-1+0+0 +hashblocks_sha512 22 2396 37976 -113+2+39+27-2+0-3-3+0-3+0+41+26-3+0 +hashblocks_sha512 22 3595 59019 -136+34-9-8+24+26-15+0+26-15+1+29+28-16+0 +hashblocks_sha512 22 5393 88450 +125+4+1-1+0+0+3-3+1-2-9-7-10-10+678 +hashblocks_sha512 22 8090 132549 +75+13+0+0+0+0+1+0+1+1-5-6-10-5-5 +hashblocks_sha512 22 12136 197642 +105+8+1-1+0-1-2+0-1+0+0+0+1-1+0 +hashblocks_sha512 22 18205 298591 +132+6+0-2-3+2+730+8-1-2-1+2-2-1+0 +hashblocks_sha512 22 27308 447780 +191+14+69-2-2+0-2-2+0+567+15+5-1-1-3 +hashblocks_sha512 22 40963 672912 +121-7-1+0-1+0+711+25+5+1-1+0+0-2+1 +hashblocks_sha512 22 61445 1008752 +696+20+5+0+0+2+2+0+170-472-474-472-472-474-474 +hashblocks_sha512 23 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 23 0 90 +586+66-1-3-2-1+1-2+19+0+0+0+0+0+0 +hashblocks_sha512 23 1 89 +61+3+5+4-3-2-1+24+1+0+0-4+0-4+0 +hashblocks_sha512 23 2 87 +10+5+6+0+0+3+1+0-1+0-1+0+0-1-1 +hashblocks_sha512 23 4 87 +11+5+7+7+1+0+0+4+0+0+0-1+0+0-1 +hashblocks_sha512 23 7 87 +11+5+6+7+1+2+0+4+0+0+0-1+0+0-1 +hashblocks_sha512 23 11 87 +11+5+7+7+1+0+0+4+0+0+0-1-1+0+0 +hashblocks_sha512 23 17 87 +10+7+5+1-1+2+0+3+0+0+0-1+0+0-1 +hashblocks_sha512 23 26 87 +11+5+7+7+1+0+0+4+0+0+0-1+0+0-1 +hashblocks_sha512 23 40 87 +43+5+7+0+1+0+4+0+1+0-1+0+0-1-1 +hashblocks_sha512 23 61 87 +43+5+7+0+1+0+4+0+1+0-1+0+0-1-1 +hashblocks_sha512 23 92 87 +10+6+6+7+1+2+0+4+0+0+0-1-1+0+0 +hashblocks_sha512 23 139 1885 +799+295+176+55+35-6-6+0-6+0-6+0-6+0-6 +hashblocks_sha512 23 209 1880 +343+51-1-4+1-1+0-2+1+0+0+0+0+0+0 +hashblocks_sha512 23 314 3704 +272+10+1-8-7-12+11+10+4-2+3-4+0-4+0 +hashblocks_sha512 23 472 5493 +339+31+36+2-5-8+5-1+2-3+0+1-2-3+0 +hashblocks_sha512 23 709 9090 +232-15+28+19+0+0-11+65-13+12+5-12-9-12-14 +hashblocks_sha512 23 1064 14488 +278+35+27+4+6-2+1-2+0-23-5-2+0+1-29 +hashblocks_sha512 23 1597 21664 +185+16+15+10+7+3-4-4-2+0-3-6-5+8-4 +hashblocks_sha512 23 2396 32430 +432+12-4-1+0-2+6+0-2-4+4+32+3+0+0 +hashblocks_sha512 23 3595 50394 +162+1+33+12+77+72-15+0-13+15-1-14-2-14+0 +hashblocks_sha512 23 5393 75533 +262+86+0+69-9-13+53-4-3+63-5+62+53-4-3 +hashblocks_sha512 23 8090 113264 +224-18-59-56-48+24-51-52+46+0-68+1+8+20+8 +hashblocks_sha512 23 12136 168880 +208-29-51-53+855-2+16+6+4+14+22+0-64+0-64 +hashblocks_sha512 23 18205 255077 +116-34-41+14-50+9-41+9+16+22+12-48-122-58+0 +hashblocks_sha512 23 27308 382555 -32-33+1151+332-24-51+119+0+107-8-89-77+41+163+22 +hashblocks_sha512 23 40963 575015 -4+1-51+833-59-70+6-12+0+86-66+83-115+208+111 +hashblocks_sha512 23 61445 862476 +317-75-71-23+0+4-87+25+744+23-257+60-162-68+40 +hashblocks_sha512 24 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 24 0 141 +435+91-1+2-1+0-1-1+16+1-1+0+0-1+0 +hashblocks_sha512 24 1 142 +100+8+19+11+1-3-1+0-3-2+1-3-1+0-3 +hashblocks_sha512 24 2 141 +12+11+28+0+1+2-2+0-2+0-2+0-2+0+10 +hashblocks_sha512 24 4 140 +13+6+8+2+3+1+3+0+0+0+0+0+0+0+0 +hashblocks_sha512 24 7 141 +12+5+7+1-2+0+2-1-1-1-2-1+2-2+0 +hashblocks_sha512 24 11 142 +11+10+14+2+1-2-2-2-2-2+10+2+0+0-3 +hashblocks_sha512 24 17 141 +12+4+2-2+0-2+0-2+0+10+2+1-2-2+1 +hashblocks_sha512 24 26 141 +12+11+12+3-2+0+1-2-1+2-2+0+1-2-1 +hashblocks_sha512 24 40 140 +45+14+11+3+5+1+3+0+0+0+0+0+0+0+0 +hashblocks_sha512 24 61 141 +44+11+13+3+2-1-2+0-2+0-2-1+2+0+2 +hashblocks_sha512 24 92 142 +11+10+14+2+1-2-2-2+10+2+0+0-3-3+0 +hashblocks_sha512 24 139 2384 +333+177-1-1-1-2+1-2-2-4+9+0+3+0+1 +hashblocks_sha512 24 209 2388 +147+17+10-5-3-4+4-4-1+0+0-2+0-2+0 +hashblocks_sha512 24 314 4694 +135+17-1-3-5-3+0+0-4+0+23+2+0+2+0 +hashblocks_sha512 24 472 6907 +203+42+0-5-9-9+61-2+0-2+0-2+0-2+0 +hashblocks_sha512 24 709 11422 +123+1+20-17+0+5-2+3-22+22-22+3-2-3-5 +hashblocks_sha512 24 1064 18182 +117+14+11+2-4-2-4+0+0+1-1-6-4-2+0 +hashblocks_sha512 24 1597 27150 +108+26+13+1-2+0-2+0+2+0+2+0-2+2-2 +hashblocks_sha512 24 2396 40650 +106+42+52-28-36+7+14-35-32+13+0-24-35+11-3 +hashblocks_sha512 24 3595 63140 +44+55+13-4+0+0+0+0+0+0-43-36+12-4-2 +hashblocks_sha512 24 5393 94572 +85+64+11-4-2+0-2+0-2+0-2+0+0+0+0 +hashblocks_sha512 24 8090 141714 +196+58+4+0-10+0-8+0+8+0+8+0+8+0+8 +hashblocks_sha512 24 12136 211318 +265+128-28+0+717-15+87-18+0-26+0-26-36-26+0 +hashblocks_sha512 24 18205 319020 +414+64+60+0-12+0-12+0+62+0+62+0+62+0+62 +hashblocks_sha512 24 27308 478486 +586+67-55+0-56+8-56+8-50+8-56+0-56+8-56 +hashblocks_sha512 24 40963 722196 +81-813+0-882-50-881-45-828-50+555+300+227+253+227+260 +hashblocks_sha512 24 61445 1083278 -158+1162+141+11-1338-4-1372+0-1337+871+1195-64+958-28+958 +hashblocks_sha512 25 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 25 0 79 +523+44+24-2+3+1-1-1+15-2-2-1+0+2-1 +hashblocks_sha512 25 1 79 +87+50-1-1+0-2+0-1+0+0-2+0+2-1-2 +hashblocks_sha512 25 2 78 +39-2+27-1+20-1+0+1+0+0+0+1+1-1-1 +hashblocks_sha512 25 4 78 +4+0+1-1+0+0+0+0+0-1+0-1+1-1-1 +hashblocks_sha512 25 7 78 +4+0+1+0+5+0+4+5-1-1+1+0+0+0+1 +hashblocks_sha512 25 11 78 +4-1+2+0+0+0+0+0+0+0+1+0+0+0+1 +hashblocks_sha512 25 17 78 +4+0+1-1+0+0+0+0+0-1+0-1+1-1-1 +hashblocks_sha512 25 26 79 +3-2+3-2+4-1+3+4-2-1-2+0-2+0+0 +hashblocks_sha512 25 40 78 +32+0+3+0+3+0+0+1+3-1+0+0+0+1-1 +hashblocks_sha512 25 61 79 +31-1+2-2-1+0+0+0+0+1-1-1+0+0-1 +hashblocks_sha512 25 92 78 +38+0+0+3+0+0+0+1+0+0+0+1-1+1-1 +hashblocks_sha512 25 139 1956 +273+104+40+39+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 25 209 1952 +102+8+3+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 25 314 3842 +112+60-18+8+3+0+12+0+0+2-2+0+0-18-18 +hashblocks_sha512 25 472 5725 +131+12+9+7+15+7+6-3+0-4-5-4-4-5-1 +hashblocks_sha512 25 709 9485 +179+117+63-2-5-6+3-2+0+24-3-6-3+2+0 +hashblocks_sha512 25 1064 15139 +163+25+2-15+3+3+0+0-4-21-3+4-2+10-15 +hashblocks_sha512 25 1597 22661 +131-1-6-16+9+20-7-2+11+5+0-6-5+14+5 +hashblocks_sha512 25 2396 33942 +292+14-4+1+3+2+3-4-3-8+6-5+0-4-1 +hashblocks_sha512 25 3595 52753 +206-23-55+38-4-14+33-8+36-6+23+35-9+25+0 +hashblocks_sha512 25 5393 79099 +224-66-75+0-9+12+11-21+6-3-15+12-18+4+3 +hashblocks_sha512 25 8090 118573 +269-105-21+3+6-3+1+16-8-3-12+3-4+0+17 +hashblocks_sha512 25 12136 176838 +231-99-90-35-16+718+27-7+5+21+0-3+8+17-4 +hashblocks_sha512 25 18205 267041 +274-109-101+45+18-17+3-16+14-16+6-14+18-18+0 +hashblocks_sha512 25 27308 400596 +73-419+553+34-70-8+7+2-4+12-5+18+0+0-5 +hashblocks_sha512 25 40963 602238 -451-645+26-467-398-221+0-40+8-22+40+11+21+34+10 +hashblocks_sha512 25 61445 902810 +246-73-73-43-132+409-29+892-96+70+0+37+5+14-6 +hashblocks_sha512 26 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 26 0 142 +469+84+45+0+0+0+0+0+15+1+0+7-1-2+1 +hashblocks_sha512 26 1 143 +75+10+8+7+7+7+9-2-1+0-2+0-2+0-2 +hashblocks_sha512 26 2 140 +45+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 26 4 144 +41-3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 26 7 142 +19+9+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 26 11 142 +18+11-2-3+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 26 17 142 +19+9+0+0-3-1+0+1-1+1-1+1-1+1-1 +hashblocks_sha512 26 26 143 +18+4-1+0-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 26 40 142 +44+6+7+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 26 61 143 +43+16-1+1+0-2+0-2+5-2-2+0-2+0-2 +hashblocks_sha512 26 92 142 +19+9+0+0-3-1+0+1-1+1-1+1-1+1-1 +hashblocks_sha512 26 139 2234 +350+87+24+85+23+0-11-11+4-10-11-11-11-11+4 +hashblocks_sha512 26 209 2225 +111+14+5-1-2-1+0-1+13-1+2+7+0-1+17 +hashblocks_sha512 26 314 4344 +114+23+13-4+1-3-3+14-4+0-3+17-2-4+12 +hashblocks_sha512 26 472 6437 +164+58+0-5+23-5-7+9-7+7-7-5+7-5+5 +hashblocks_sha512 26 709 10620 +88+77+0+2-3-5+13-18+22-8-2-5+19-3+57 +hashblocks_sha512 26 1064 16897 +97+10+11+8-7-7+4-4-10+60+0-3+3-4-8 +hashblocks_sha512 26 1597 25243 +86+18+11-8-5+3+49-29+0-4-2-24+0+63-22 +hashblocks_sha512 26 2396 37796 +158-40+0+92-67+6-2+5-51-10+10-35+41+5-47 +hashblocks_sha512 26 3595 58708 +91+80-16-8+50-26-6+38-24+0+50-26+10+38-28 +hashblocks_sha512 26 5393 87944 +116-23+48-59+40-44+66-46+4+48+0-38-10+48-56 +hashblocks_sha512 26 8090 131758 +125-42+60+20-8-64+42+0-66+40+2-72+46-14-72 +hashblocks_sha512 26 12136 196522 +814+79+13-4+10+0-4-42-52-36-34+0+18-8+8 +hashblocks_sha512 26 18205 296804 +236-9-39-22-30+12+10+18-26-10-20+0+32+0+832 +hashblocks_sha512 26 27308 445266 +320+863+1403-25+0-30-16+34-32-12+48+18-4-28+28 +hashblocks_sha512 26 40963 672242 -236+0-3-9-9-2+1-11+11-2+717+9+39+101+128 +hashblocks_sha512 26 61445 1007373 +966+494+920+1040-7+93-50-41-49-42+871+86+0-39-45 +hashblocks_sha512 27 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 27 0 79 +665+74+0-2+4-1+0+2+15+0-2-1-2+0+1 +hashblocks_sha512 27 1 79 +65+22+0-2+0-2+0-2-1+0+0+0+0+0+0 +hashblocks_sha512 27 2 78 +3+4+0+0+3+0+4+0+1+0+0+0+1+1-1 +hashblocks_sha512 27 4 78 +3+4+0+0+3+0+4+0+1+0+0+0+1+1-1 +hashblocks_sha512 27 7 78 +4+0+3-1+0+0+0+0-1+1-1+2+0+1+1 +hashblocks_sha512 27 11 79 +2+0-1+3+0+1-3+0-2+1-1+0+0+0+0 +hashblocks_sha512 27 17 79 +2-1+0-2+4-1+1-2+0-2+0+0+0-1+0 +hashblocks_sha512 27 26 78 +4-1+3+0+4+0+0-1+1-1+1+0+1-1+0 +hashblocks_sha512 27 40 78 +30-2+3+1+1+0+0+2-1+1+0+0-1+0+1 +hashblocks_sha512 27 61 79 +30-1+0+3+3+1-1-1-1-2+0-2+0-1+0 +hashblocks_sha512 27 92 78 +31+0+0+0+0+0+2+0+0+0+1+1+1+0+1 +hashblocks_sha512 27 139 1790 +428+133+42+2-6+7+0-1+12-2+14-10-10-10-10 +hashblocks_sha512 27 209 1794 +94+0-1-4-11-11-11-19-8+0+0+0+0+0+0 +hashblocks_sha512 27 314 3517 +96+61-7-4+13+10-11+17-5+17-5+0+5-10-17 +hashblocks_sha512 27 472 5250 +133+7-12+0-8-17-11-6-11-4+12+21+22+10+4 +hashblocks_sha512 27 709 8688 +173+31-23+30+16-2+0-14+0-14+0-6-6-20+2 +hashblocks_sha512 27 1064 13883 +101+40+5+53+37+0-12-43-67-3+19-28+22-5+0 +hashblocks_sha512 27 1597 20820 +93+52+22+4+4-11+0-5+0-74-121-108-17-34+2 +hashblocks_sha512 27 2396 31196 +70-36-14+4+2+3+0+18-4-7-2-102-123+650+108 +hashblocks_sha512 27 3595 48481 -99+40+49+8+47+8+0-178-187-304-332-18-63+40+18 +hashblocks_sha512 27 5393 72729 +39-488-107+0+1+12-501-5+4+11-328-92+2-6+1 +hashblocks_sha512 27 8090 109018 +29+48+13-506-749+27+4+0-497-185+4+0+4-753-178 +hashblocks_sha512 27 12136 162621 +168-785-276-26+21+1-1157-212+1-27+1-1156+21+0+1 +hashblocks_sha512 27 18205 245574 +11-48-117+73+31+49+6-1750-333+48+0-1151-1767+48+0 +hashblocks_sha512 27 27308 367924 +203-1217-2026+182+168+178-1206-259+155+178+168-65-340+0-1872 +hashblocks_sha512 27 40963 551156 +1477-189-218-1223-743+1578+1062+1080+366+451-137-32+0+382+0 +hashblocks_sha512 27 61445 828458 -5844+226+473+32-1987-6564-1863-1906-20-3128+0+49+15+160+176 +hashblocks_sha512 28 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 28 0 141 +634+91+28+21-3+0-1-5+14+0-5+2-3-2-5 +hashblocks_sha512 28 1 139 +107+41-1+0+3-3+4-1+0+3-3+4-1+0+3 +hashblocks_sha512 28 2 141 +50+33+1+0-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 28 4 139 +50+3-2+2-3+4-1+0+3-3+4-1+0+3-3 +hashblocks_sha512 28 7 141 +21+6+0-2+0-2+0-2+6-2+0-2+0-2+0 +hashblocks_sha512 28 11 141 +35+11+1+0-5+2-3+0-5+2-3+0-5+2-3 +hashblocks_sha512 28 17 141 +34+20+0+2-3+0-5+2-3+0-5+2-3+0-5 +hashblocks_sha512 28 26 141 +20+10-3-1-3+0+4-3+0-5+0-3+0-5+0 +hashblocks_sha512 28 40 141 +39+0+0+3-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 28 61 141 +21+9-2+3+0-2+6-2+0-2+0-2+0-2+0 +hashblocks_sha512 28 92 141 +20+13-1-5+2-3+0-5+2-3+0-5+2-3+0 +hashblocks_sha512 28 139 2157 +455+148+25+25+25-3-2-3-2+0+2+0-2+0-2 +hashblocks_sha512 28 209 2157 +96+1+12-1-2+0+0-3+59-3-3+0-2-2+0 +hashblocks_sha512 28 314 4209 +152+61+0-4+0-4+0-4+0+1-3-4+0-4+0 +hashblocks_sha512 28 472 6206 +147+90+107-1-4-2-6+0-5-2-7+0+60+0+62 +hashblocks_sha512 28 709 10255 +58+12+0+42-35+51-16+30-12+40-32+70-35-34-9 +hashblocks_sha512 28 1064 16288 +105+84+0+55+6+0-15+79-2-2-2-3-2+59-14 +hashblocks_sha512 28 1597 24383 +48+22-60+0-59+5-59+1-60+7-62+16-59+0-60 +hashblocks_sha512 28 2396 36382 +106+109+64+0-4-2-4+31+119-4-2-3-1+29+49 +hashblocks_sha512 28 3595 56674 +64+122-71+7-145+50-94+35-76+0-144+50-89+35-76 +hashblocks_sha512 28 5393 84762 +0+135-9+242-16+178-15+176-12+222-11+174-12+171-13 +hashblocks_sha512 28 8090 127178 +189-168+0-191+706+77-191+67-187+68-188+71-191+64-190 +hashblocks_sha512 28 12136 189423 +0+294-91+294-94+296-94+295-90+232-90+227-82+364-85 +hashblocks_sha512 28 18205 285958 +446-214+1-224+0-224+0-224+0+521+210-221+0-224+0 +hashblocks_sha512 28 27308 429338 -326+0-691+94-686+170-689+87-663+157-673+61+163+925-573 +hashblocks_sha512 28 40963 646816 -220+573+35-380+0-366+88-408+4+1387-28+928-39+997-44 +hashblocks_sha512 28 61445 970711 +200-768+1519-687+951-665+741-704+894-683+0+669-681+449-679 +hashblocks_sha512 29 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 29 0 78 +510+70+0+0+0+2+0+0+16+1-1+2+1-1+0 +hashblocks_sha512 29 1 78 +87+20+0-1+0+0+0-1+1-1+0+2+0+0+0 +hashblocks_sha512 29 2 78 +4+1+3+0+33-1-1+2-1+0-1+0+2-1+2 +hashblocks_sha512 29 4 78 +4+1+3+0+0+31-1+0+0+0-1+0+0+0+2 +hashblocks_sha512 29 7 78 +7+0+1+0+0+0+0+0+0+2-1+2-1+0+1 +hashblocks_sha512 29 11 79 +6+0-1-1+1-1+0-1+0-1+0-2+0+1+1 +hashblocks_sha512 29 17 78 +4+0+1+0+0+2+0+0+0+0+0+2-1+0+1 +hashblocks_sha512 29 26 78 +4+1+3+0+0+0+0+0+1+2-1+0+2-1+1 +hashblocks_sha512 29 40 79 +31+0-1+3+1-1+4-1+3+0+0-1+0+0+1 +hashblocks_sha512 29 61 78 +34+0+1+0+0+2+0+1+1-1+0+0+1+2-1 +hashblocks_sha512 29 92 79 +3-1+1-1-1+0+2-2+0-1+1-2+0-2+0 +hashblocks_sha512 29 139 1864 +240+100+51+2-1+0-3-3-3-2+0+0+0+0+0 +hashblocks_sha512 29 209 1864 +98+4+7+1-3-2+3+5-2+1+0+0-3-3-3 +hashblocks_sha512 29 314 3657 +130+66+37+25+21+1-6-8+4+0+0+0+0+0+0 +hashblocks_sha512 29 472 5478 +104+0+14+5-2-2-2-4-1+0+2-2-2+0+0 +hashblocks_sha512 29 709 9068 +133+23+35+0-3-2-2+20-3+2-1+4+0+0-5 +hashblocks_sha512 29 1064 14481 +133+47+72+5-24+1+3-3-6-19+0+7-6-12-15 +hashblocks_sha512 29 1597 21670 +184+68+5+0-7-6-19-9+9+6+1+0-2+0-2 +hashblocks_sha512 29 2396 32455 +210+108+1-3+0-1-3-9-9-10+676+6+0+4-4 +hashblocks_sha512 29 3595 50514 +177-69-3+0-6+10-13+9-16+4+12-18+10-19+5 +hashblocks_sha512 29 5393 75620 +149+48+7+2-13-79-13+0-10+0+37-1-10+0-61 +hashblocks_sha512 29 8090 113510 +59-138-39+9+3+0+0+21+3+0+0-47+24+3+0 +hashblocks_sha512 29 12136 169307 -69-234+31+2+4-1-72+0+3-1+3-64+4-1+3 +hashblocks_sha512 29 18205 255318 +158+717-18-6-267-254+134+129-1-16+0-2+2+0+0 +hashblocks_sha512 29 27308 383464 -329+20-528+22+13-139+9+0+18+542-131-5-8+41-28 +hashblocks_sha512 29 40963 575462 -413-220-169-154-124+20+136+12+890+210+0+118+0+102-59 +hashblocks_sha512 29 61445 862856 -800-608+878+12+25+0-580-528+251+10-200+252-290+583-599 +hashblocks_sha512 30 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 30 0 143 +647+71+18+20+0+0-2+0+14+0-2+0-2+0-2 +hashblocks_sha512 30 1 142 +81+13+21+0+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 30 2 142 +39-1+0-3-1+0+0-3-1+0+0-3-1+0+0 +hashblocks_sha512 30 4 142 +27+13-2-3+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 30 7 142 +27+15-2+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 30 11 142 +26+0-3+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 30 17 143 +16-2+0+0-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 30 26 142 +26+0-3+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 30 40 141 +50+0-2+2+0+2+5+0+0+0+0+0+0+0+0 +hashblocks_sha512 30 61 143 +32+6+0+0-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 30 92 142 +43+19+3+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 30 139 2305 +1023+202+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 30 209 2309 +176+66-3+0-4+0-4+0-4+0-4+0-4+0-4 +hashblocks_sha512 30 314 4507 +204-2-4+2+52+0-4+0-4+0-4+0-4+0-4 +hashblocks_sha512 30 472 6671 +263+36-1+2+2-7-1-7-1-7+0+0+52+0-1 +hashblocks_sha512 30 709 11032 +117+34+4-4+5-27-4+0+52+0-4+0-4+0-4 +hashblocks_sha512 30 1064 17560 +106+12-1+0+0+56+2+0+0+61+3-26+2+0+0 +hashblocks_sha512 30 1597 26235 +119+81+8-8+0+57-1-2-3+56-2+0-2+56-2 +hashblocks_sha512 30 2396 39288 +88+41+17-44-48+40+0+13-11+61-43-115-11+59-41 +hashblocks_sha512 30 3595 61034 +97+29-38+12-42+12+0-42+11-45+11-2-48+17-43 +hashblocks_sha512 30 5393 91396 +872+42+11-3+0+0+0+0+0-1+11-1+11+0+0 +hashblocks_sha512 30 8090 136932 +134+41-33+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 30 12136 204086 +99+49+27+0+0+0+0+0+0+0+0+0-1+3+0 +hashblocks_sha512 30 18205 308258 +208+1458+170+29-20+0-18+0-20+0-20+0-20+2-20 +hashblocks_sha512 30 27308 462419 +595+52-113-93-91+1081+1649-7-2-1-1+0+5+7+5 +hashblocks_sha512 30 40963 698280 +236+341-198+813+89+0-15-36-120+8-54-120+92-29+409 +hashblocks_sha512 30 61445 1047330 +104+184-433-124-210+674+36-11-94-154+0+0+1630+751-12 +hashblocks_sha512 31 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 31 0 88 +466+54+17+1+0-2-1-3+18+0-3-1-1-3+0 +hashblocks_sha512 31 1 92 +86+24+3+2+2+2+1-2+0+0+0+0+0+0+0 +hashblocks_sha512 31 2 90 +7+3+23+19+4+1+0+0-1-5-4-2-3-5-4 +hashblocks_sha512 31 4 91 +6+2+2+2+12+0-2+23+0+1-1-6-4-5-5 +hashblocks_sha512 31 7 90 +8+4+4+4+1-3+1+2+0-5-4-4-2-3-5 +hashblocks_sha512 31 11 88 +10+4+5+15+3+2+0-1-3-2+0-1-3-2+0 +hashblocks_sha512 31 17 93 +4+0+0+0+10+0-2+1+0-6-9-6-7-7-7 +hashblocks_sha512 31 26 88 +9+5+5+6+3+1+2+0-1-3-2+0-1-3-2 +hashblocks_sha512 31 40 90 +36+4+2+4+0-1+1+4+3-1-4-5-4-4-4 +hashblocks_sha512 31 61 90 +36+4+2+4+0-1+1+4+3-1-4-5-4-4-4 +hashblocks_sha512 31 92 88 +9+5+5+5+15+3+1+0-1-3-2-2+0-1-3 +hashblocks_sha512 31 139 2056 +225+151+7+1-2-7+1-2+0-2+0-2+0-2+0 +hashblocks_sha512 31 209 2054 +133+20+17+0-7-4+3-6+0-4-3-5+2+10-8 +hashblocks_sha512 31 314 4041 +125+11+6+0+1+2-5-5-3+3+0+0-2-4+1 +hashblocks_sha512 31 472 5981 +116+46+20+18+2+5-1-3-3-3-3+1-2+0+0 +hashblocks_sha512 31 709 9899 +98+23+19+11+0-1+21+0-3+2-4+20-1-4-2 +hashblocks_sha512 31 1064 15792 +99+56+68+24-19+0+1-1+0+2+0+2+0-22-3 +hashblocks_sha512 31 1597 23629 +102+58+33+1+0+0+2+0-2-5-4-1+0-5-4 +hashblocks_sha512 31 2396 35373 +173+104+50+2+1+2-1+0-1-1+0+0+0-1-1 +hashblocks_sha512 31 3595 54992 +133+23+11+2+25-4-2+26-12+0+21-7-1-10-1 +hashblocks_sha512 31 5393 82431 +104+40+5-1-1-1-2+0-2+708+8+6+4-2+0 +hashblocks_sha512 31 8090 123549 +206+30+0+4-3+0-1+2+0+2-3-2-1+2-3 +hashblocks_sha512 31 12136 184247 +177+18+2+2-1+0-2+0-3+0-1+0-2+0-2 +hashblocks_sha512 31 18205 278242 +176+14+1+0-6-4+800+17+0+0-2-3-5-2-2 +hashblocks_sha512 31 27308 417270 +187+18+13+0+1-1+0-4-2-2+655+14-3-5-5 +hashblocks_sha512 31 40963 626783 +189+16+0+1-5-1-1-1+706+11+1+1-3-3-1 +hashblocks_sha512 31 61445 940063 +142+17+695+13+3-1-5-5-3+0+703-5-3+1-1 +hashblocks_sha512 32 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 32 0 140 +1504+77+23+19+0+0+0+0+15-3-2+0+0+0+0 +hashblocks_sha512 32 1 140 +75+30-5-5-1-2+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 2 134 +54+28+1+1+0+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 4 134 +53+1+3+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 7 134 +53+1+0+0+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 11 134 +27+17+2+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 17 134 +27+16+2+2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 26 134 +27+17+2+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 40 145 +77+43+0+1+1+0+0+0+0+0+0+0+0+9+7 +hashblocks_sha512 32 61 134 +52+21+15+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 92 145 +36+19+3+1+0+0+9+7-10-10-10-10-10-10-10 +hashblocks_sha512 32 139 1590 +381+98+106+2-8-8-8-8-8-8+3+0-1+0+0 +hashblocks_sha512 32 209 1583 +162+20+23+7-1-1-1-1-1-1+25+4+0-1+1 +hashblocks_sha512 32 314 3053 +201+46+43+3+5+3-9-7+0+22-5-5-5-5-5 +hashblocks_sha512 32 472 4495 +159+43-6+8+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 709 7375 +98-4+3+24+0+20-1-3-2+20-2+22-4+21-3 +hashblocks_sha512 32 1064 11725 +63-9-22-23-11+7+3-3+0+5+2+7-21+24-19 +hashblocks_sha512 32 1597 17534 +25+2+1-4+0-4+0-4+0-4-4+0-4+0-4 +hashblocks_sha512 32 2396 26186 +34+20+2+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 3595 40629 +45+786+29+37-12-12-1+25-11-17+0+25-12-17+4 +hashblocks_sha512 32 5393 60873 +65-37+2-1+0+5+2-1-17-37-1+0+2-1+0 +hashblocks_sha512 32 8090 91186 +117+21-3+2+0+2+0+3-2-1+0+2+0+2-1 +hashblocks_sha512 32 12136 135925 +84+13+4-4+0-4+0-4-1+2-4+0-4+0-4 +hashblocks_sha512 32 18205 205200 +93+19-3+0+0+0+0+0+0+792+32-1+2+2+2 +hashblocks_sha512 32 27308 307720 +81-7+0-18+2-18+2-18+2-18+2-18+2-18+2 +hashblocks_sha512 32 40963 462173 +172+875+54+20+10+3+15+0-4-1-1+0-2+0+0 +hashblocks_sha512 32 61445 693216 +879+88-1-12-4-1-3-4+0-6+0+978+422+388+394 +hashblocks_sha512 33 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 33 0 76 +674+68+27+22+1-1+0-1+2+4-1-1-1-1-1 +hashblocks_sha512 33 1 77 +65+26+4+0+4+0+3-1-1-2+0-2+0-2+0 +hashblocks_sha512 33 2 77 +6-3+1-2+2+0+2+1+1+1-2+0-2-2-2 +hashblocks_sha512 33 4 77 +6-2+1+1+2+6+5+2-1-1-2+0-1-2+0 +hashblocks_sha512 33 7 77 +6-2-1+0-1+0+2+5+5+3+0-2-1-2+0 +hashblocks_sha512 33 11 76 +7-2+0+0+1+2+7+4+0+0-1+1-1+1-1 +hashblocks_sha512 33 17 76 +7-2+0-1+2+0+0+1+3+0+0-1+0-1+1 +hashblocks_sha512 33 26 76 +7-2+2+2+3+6+1+0+0+0-1+0+0-1-1 +hashblocks_sha512 33 40 78 +36-2-2-3+0+0+1+0+4+4+0-1-2-3-3 +hashblocks_sha512 33 61 76 +33-1+0+0+1-1+1+0-1+1-1+0-1-1+1 +hashblocks_sha512 33 92 77 +36-1+0+0+0+0+3+0+1+5+4+3-2-2-2 +hashblocks_sha512 33 139 1397 +282+114+48+3-5-3-4+0-4+0-4+0-4+0-4 +hashblocks_sha512 33 209 1398 +108+3+5+0+0-3-5+0-4+0-2+5-5-1-5 +hashblocks_sha512 33 314 2708 +138+69+27+22+6+0+9+0-4-1+0-4+0-4+0 +hashblocks_sha512 33 472 4053 +99+22+16+17+14+16+12-5-3+0-4-1-4-1-4 +hashblocks_sha512 33 709 6698 +186+89+25-12-4+5+0-11-6+1+0-11-6+1+0 +hashblocks_sha512 33 1064 10658 +173+49+35+14+0-5+15-5-13+13-11-13+10-13-17 +hashblocks_sha512 33 1597 15958 +196+59+7-1+6+0-3+37+1-2-2-5+1-2-2 +hashblocks_sha512 33 2396 23885 +310+94+58+71+57-1+52-5+0-5-3-3-3-5+0 +hashblocks_sha512 33 3595 37099 +277+7-5-3-9+37+40+80-4-3-9+30+0+77-4 +hashblocks_sha512 33 5393 55639 +222-15+26-3-35-7+0-14-35+166+126+177+130+96-6 +hashblocks_sha512 33 8090 83383 +308+38-3-5-7-12-9+2+682+1+27-10+8+0-14 +hashblocks_sha512 33 12136 124673 +376-17+21-40+55-40+0-45+54-37+0-45+54-37+0 +hashblocks_sha512 33 18205 187729 +316+34+24-3+2-1-3-9+10+0+1+0-2+3-5 +hashblocks_sha512 33 27308 281592 +338+9-38-22-48+1393+799+4-24+0-24+0-24+0-24 +hashblocks_sha512 33 40963 423346 +711+709+22-138+0-174-13-139-22+803+731+91-312+125-275 +hashblocks_sha512 33 61445 634940 +1319+503-174-18-192+22+908+747-219+0-242+26-224+50-228 +hashblocks_sha512 34 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 34 0 142 +590+69+55+16+1+0+0+0+13+1+0+0+0+0+0 +hashblocks_sha512 34 1 138 +85+44+3-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 34 2 138 +60+53-2+0+0+0+0+0+0+0+0+0+0+0+16 +hashblocks_sha512 34 4 138 +55+33+0+2+0+0-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 34 7 138 +20+24+34+4+0-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 34 11 138 +48+27+24-2+1+0+0-1+0+0+0+0+0+0+0 +hashblocks_sha512 34 17 139 +19+22+40+2-1+0-1+0-1+0-1+0-1+0-1 +hashblocks_sha512 34 26 138 +21+23+34+25-1+0+0-1+0+0+16+1+0+0+1 +hashblocks_sha512 34 40 138 +53+33+0+2+0+0-1+0+0+0+0+16+1+0+0 +hashblocks_sha512 34 61 138 +52+33+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 34 92 138 +21+23+34+25+0+0-1+0+0+0+0+0+0+0+16 +hashblocks_sha512 34 139 1434 +309+64+7-12-4+0-8+2-8+0-8+4-9+25+18 +hashblocks_sha512 34 209 1461 +89+40+18-13-8+0-8+0-8-4-13+0+13-3+1 +hashblocks_sha512 34 314 2720 +147+62+50+46+40+0+1-6-6+2+0-2+0+0-14 +hashblocks_sha512 34 472 4040 +122+12+37+4+3+9+0-2-1-4-3+1-9-1-9 +hashblocks_sha512 34 709 6575 +257+5+13+38-1+15-3+10-1+0+10+0-15-5-13 +hashblocks_sha512 34 1064 10438 +140+14+7-18-41-17-32-15+8+0+12-18+9-8+9 +hashblocks_sha512 34 1597 15579 +95+26+27+9+0+1+4-9-4-7+4-2-15-34-49 +hashblocks_sha512 34 2396 23266 +274-7-15-39-46-52-49+800+13+0+14+0+6+12+15 +hashblocks_sha512 34 3595 36070 +223+22+46+0+33-26-13+23-52-31+5-52-50-43+5 +hashblocks_sha512 34 5393 54003 +238+59+59+6-12-65+0+4+1-4+0-1-5-2+4 +hashblocks_sha512 34 8090 80877 +331+96-14+6-3+4-17+0-25+7-23+5-2+1-18 +hashblocks_sha512 34 12136 120532 +164+105+57-13+2-2+0+11-2-3-10+2-2+0+11 +hashblocks_sha512 34 18205 181971 +123+42+10+11-13-11+0-7-3-65-8-13+936+89+51 +hashblocks_sha512 34 27308 272824 +502+260-12+18-46+20-54+0-54+14-40+12-40+14-56 +hashblocks_sha512 34 40963 411082 +72-72+6-26+764+213+158+117-3+0+43-25-24-26-18 +hashblocks_sha512 34 61445 616712 +40-202-112+573-35+8+0-204+537-510+20+0+0+17+18 +hashblocks_sha512 35 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 35 0 79 +551+67+38+0+0+0+0-2+21-2+0-2+0-2+0 +hashblocks_sha512 35 1 79 +47-1-1-1+3+1+5-1-1+2-1+0+0+0+1 +hashblocks_sha512 35 2 79 +4-1+1-1+30-1+0+5+0+0+1-2-1+1-1 +hashblocks_sha512 35 4 79 +4-1+1-1-1+0+0+5+0+0-1+0+0-2-1 +hashblocks_sha512 35 7 79 +4-2+0+3-1+1-1+4-1+0-1+2-1+0+0 +hashblocks_sha512 35 11 79 +4-1+1-1+0-1+0+5-1+1+2-2+0-2+0 +hashblocks_sha512 35 17 78 +5+0+2+0+1+0+1+6+0+2+3-1+0-1+0 +hashblocks_sha512 35 26 79 +4+0+1-1-1+0+2+2+0+0+0-1-1-1+1 +hashblocks_sha512 35 40 79 +32-1+0+1-1+3+3+0+3+0+1+0-2+0-2 +hashblocks_sha512 35 61 78 +37+0-1+0+3+1+0+2+0+2+0-1+0+2+0 +hashblocks_sha512 35 92 78 +33+0-1+0+3+1+0+2+0+2+0-1+0+2+0 +hashblocks_sha512 35 139 1241 +239+87+9+0+9-4+0-4+0-1-2-5+0-4+0 +hashblocks_sha512 35 209 1241 +84+9+6+1+2-3+0+2-6-5-1-5-1-5+0 +hashblocks_sha512 35 314 2402 +120+57+15+9+4-4-2-2+0+2+0-2+0+2+0 +hashblocks_sha512 35 472 3561 +141+45+38+37+16+2-4-2-5-3+1+0-1-3-1 +hashblocks_sha512 35 709 5900 +167+72+85+33-9+1-11+1+0-6-1-1-5-1+0 +hashblocks_sha512 35 1064 9382 +172+51+7-4+0+1-3-1+1-8+0-12+4-12+5 +hashblocks_sha512 35 1597 14025 +152+49+5+0-10+4-10+5-22+1-11-3-7+1-11 +hashblocks_sha512 35 2396 20992 +192-7+35+0-17+2+3-2-34+4+7+8-31-3-4 +hashblocks_sha512 35 3595 32613 +226-27+19-23-27+11+32+9-34+7-36+8-16+0-24 +hashblocks_sha512 35 5393 48864 +285-23+24+3-45+17-47+0-35+12-57+6-46+5-30 +hashblocks_sha512 35 8090 73239 +250-49+67-108+45-1+35+0-74+8-85+13-90+44-68 +hashblocks_sha512 35 12136 109277 +43+47+0+25+31-2-15-162+31+31-6-126-5-146+16 +hashblocks_sha512 35 18205 165043 -107+0+13-12+0-6+667+26-17+14-21+14-7+14-16 +hashblocks_sha512 35 27308 247424 +265-377-244+985-245+172+0+94+0+70+0+86-14+132-32 +hashblocks_sha512 35 40963 371513 -253+0-416+749+450-466+83-449+81-427+92-440+85-445+71 +hashblocks_sha512 35 61445 557326 +397-907+4-896+1130-300+278-351+20-858+0-904+18-860+0 +hashblocks_sha512 36 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 36 0 144 +587+77+38-6+0+0+0+0+10+0+0+0+0+0+0 +hashblocks_sha512 36 1 144 +140+51+21-2-6+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 36 2 144 +85+48+21+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 36 4 144 +29+31+30-2-6+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 36 7 144 +28+34+8+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 36 11 144 +29+31+8-2-6-6+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 36 17 144 +28+34+8+14+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 36 26 144 +28+34+8+14+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 36 40 144 +60+50-8-2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 36 61 144 +60+27-4-7+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 36 92 144 +29+31+8-2-6-6+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 36 139 1422 +370+76+25+1+3+0+0+0+0+0+0+0+0+24+0 +hashblocks_sha512 36 209 1423 +182+70+19+14-1-2-1-1-1+17+0+0+0+0+0 +hashblocks_sha512 36 314 2752 +193+33+44+3+2+2+0-8+0-4-4-4-1-6+19 +hashblocks_sha512 36 472 4006 +187+56+1+3+3+0-1-1-2+0-2+0-2+1-1 +hashblocks_sha512 36 709 6570 +180+27+25+11+0-6+0-6+0-6+0-13-7+2-2 +hashblocks_sha512 36 1064 10435 +178+42+33+26+6-6-15+32+6-1-1-5-17-5+0 +hashblocks_sha512 36 1597 15582 +160+58+2-12-2-2+1+1-2+0-12-2-2+1+1 +hashblocks_sha512 36 2396 23282 +119+13+38+19+0+2+0+6-17-18-13-19-18-13-19 +hashblocks_sha512 36 3595 36132 +135+49+4+43+19-29-17+0+7-42-10+0-29-3+0 +hashblocks_sha512 36 5393 54124 +74+23+5+1-44-50+1-11+4+0+0-2+0+1-11 +hashblocks_sha512 36 8090 81034 +195+28-12+7-8+0+5+7-9-5-9+8-14+7-9 +hashblocks_sha512 36 12136 120750 +151+6-2+0+1-5+0+0+0-2+0+1-5+0+0 +hashblocks_sha512 36 18205 182325 +113-62-83-72-79-79-79-63+937+145+0+17+11+12+12 +hashblocks_sha512 36 27308 273352 +216-35+27-12+10+0+4-8+3-17+0-8+0-10+2 +hashblocks_sha512 36 40963 411660 +164+233+756+94-17-40-34-14-18+4+0+0+2+0+0 +hashblocks_sha512 36 61445 617676 +360-194+395+274-71+10-78+6-62+0-60+0-58+2+696 +hashblocks_sha512 37 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 37 0 78 +713+72+20-1+0+0+0+0+18+2-1+0-1+3-1 +hashblocks_sha512 37 1 80 +50+30+1+0+4+1-1+0-1-1-2+0-3+0+1 +hashblocks_sha512 37 2 79 +4+0+0+1+22-1+0-1+2-1-1-1+1-2-2 +hashblocks_sha512 37 4 80 +3-2+5+1+1+0+0+1-2-1-2-2+0-3-3 +hashblocks_sha512 37 7 80 +3-1+0+0+1+0-2+2-2-2+0-3-2+1-3 +hashblocks_sha512 37 11 80 +3-2+5+1+1+0+0+1-2-1-2-2+0-3-3 +hashblocks_sha512 37 17 78 +5+0+2+1+4+1+0+1+0+0+0+0+0+0+2 +hashblocks_sha512 37 26 80 +3-2+5+1+1+0+0+1-2-1-2-2+0-3-2 +hashblocks_sha512 37 40 79 +33+4+0+1-1-1+0+2-1+0-1-1+1-2-1 +hashblocks_sha512 37 61 79 +34+0+0+0+4-1+5+3-1-1+1-2-1+1-2 +hashblocks_sha512 37 92 79 +4-1+3-1+5+0+3+0+0+0+0+1-2-1-2 +hashblocks_sha512 37 139 1239 +478+52+1+0-1+2+6-3-5-5-5-4+2-1+3 +hashblocks_sha512 37 209 1244 +73+28+14+13+12+2-1+0-5-3+0-4+1-3+0 +hashblocks_sha512 37 314 2410 +140+49+22-3+3-2-4+0-2+0-2+0-2+0-2 +hashblocks_sha512 37 472 3569 +105+31+26+34+39+0-9-10+0-10-2-4+1-6-1 +hashblocks_sha512 37 709 5915 +145+39+58+22+6-9-3-4+3-6+8-10-2-1+0 +hashblocks_sha512 37 1064 9398 +128+25+2+7-6+6-5+1+0+3-6+0-3-2-3 +hashblocks_sha512 37 1597 14050 +183-12+33-6+16-10+0-14+5-17+21-17+25-15+9 +hashblocks_sha512 37 2396 21032 +177-30+13-24+50-24+0-33+34-28+21-32+15-36+15 +hashblocks_sha512 37 3595 32692 +66+14-52-1-74+5-59+0-51+1-63+23-60+0+777 +hashblocks_sha512 37 5393 48968 +112-39+34-91+44-80+0-72+10-90+39-82+3-81+26 +hashblocks_sha512 37 8090 73406 +63+18-141+32-147+19-136+4-73+36-140+3-131+0-136 +hashblocks_sha512 37 12136 109471 +152-161+66-197+38-197+39-165+0-165+10-170+46-207+51 +hashblocks_sha512 37 18205 165361 -156+54+731+24-264+16-276+28-279+0-282+15-300+9-286 +hashblocks_sha512 37 27308 247745 +0+271-223+213-193+285-191+237-229+227-199+253-219+225-221 +hashblocks_sha512 37 40963 372235 -5+1049-81+171-76+154-35+141-84+147-94+181-73+101+0 +hashblocks_sha512 37 61445 558150 +96-57+0+780-104+458-184+344-158+428-190+344-192+428-190 +hashblocks_sha512 38 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 38 0 137 +663+98+7+1+0+0+0+0+18+5+1+0+0+0+0 +hashblocks_sha512 38 1 138 +174+4+8-1+0-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 2 138 +52+30+19+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 4 137 +23+37-2+1-1+0+0-1-1+0+0-1-1+0+0 +hashblocks_sha512 38 7 136 +8+17+11+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 11 138 +34+14-3+1+0-1-2-2+16+0+0+0+0+0+0 +hashblocks_sha512 38 17 152 +12+23+6-1+0+0+0+0+0+2-13-14-14-14-14 +hashblocks_sha512 38 26 138 +25+40+1+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 40 138 +43+22-2+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 61 138 +43+17+7+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 92 137 +44+21+2+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 139 1585 +566+89+40+1-1+0-2+0-2+0-2+0-2+0+8 +hashblocks_sha512 38 209 1581 +119+27+3-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 314 3065 +132+60+0+0+0+0+1+2+0+0+0+0+0+1+18 +hashblocks_sha512 38 472 4472 +162+50-1+0+5-3+3+3+3+4-3-1-3-3-3 +hashblocks_sha512 38 709 7347 +123+36+26+0-6-5+2+0+0+0+2-1-5+0+0 +hashblocks_sha512 38 1064 11680 +91+12+3+29-2-6+1+0-5-6+1-1+1+0-24 +hashblocks_sha512 38 1597 17449 +87+32+5+6-10+6-10+6-4+0-4+0-4+0-4 +hashblocks_sha512 38 2396 26066 +113+21+3+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 3595 40459 +182+25-6-13+34-3+0-14+47-3+1+10+26-18-14 +hashblocks_sha512 38 5393 60610 +82+17+42+4-6-18-2+0+32+0-2+32-40+8+0 +hashblocks_sha512 38 8090 90790 +73-4+26+46+0+0+46+0+0+0+0+0+2+2+48 +hashblocks_sha512 38 12136 135328 +135-5+47+46+0+2+0+0+0+0+0+0+2+0+0 +hashblocks_sha512 38 18205 204304 +1060+210+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 27308 306489 +343-65-4-72+0-74+0-73+2-70+2-92+2+1061+623 +hashblocks_sha512 38 40963 461640 -26+88+7-12-13-14+0+17-1+0+17-3-4+0+1292 +hashblocks_sha512 38 61445 692628 -14-31-1+0-2-2-6-8+1004+744+661+654+620+642+620 +hashblocks_sha512 39 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 39 0 93 +441+47+3+0+0+0+0+0+17+0+0+0+0+0+0 +hashblocks_sha512 39 1 93 +174+0+0+0+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 2 93 +8+2+21+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 4 93 +8+1+1+0+0+0+0+28+0+0+0+0+0+0+0 +hashblocks_sha512 39 7 93 +8+2+2+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 11 93 +8+1+2+4+0+1+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 17 93 +8+2+4+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 26 93 +8+3+6+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 40 93 +37+1+2+2+2+2+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 61 93 +37+1+1+1+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 92 93 +8+1+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 139 1415 +280+163+59+0+0-5+0-3-4-5+0-3-4-5+15 +hashblocks_sha512 39 209 1415 +136+24+21+4+1+0-1+0-1-2-4+11-4-3-3 +hashblocks_sha512 39 314 2787 +129+10+8+8+2+0+0+0+0+0+0-1+1+0+0 +hashblocks_sha512 39 472 4089 +149+17+15+7+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 709 6739 +143+13+7+4+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 1064 10714 +116+84+9+2+22+0+0+0+0+21-3-4+21-1-2 +hashblocks_sha512 39 1597 16037 +147+8+5+2+0+1+0-2-2-2+1+0-2-2+1 +hashblocks_sha512 39 2396 23987 +203+13+8+4+0-1+0+0-2-2+0-2-2+0+0 +hashblocks_sha512 39 3595 37245 +153+6+0+22+54-9-8-8+16+15-8-7-8-10+17 +hashblocks_sha512 39 5393 55839 +78+36+8+6-21-31-2+0-27-27+0+0-28-25+0 +hashblocks_sha512 39 8090 83666 +157+42+6+4+2+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 12136 124742 +103+41+5+3+0-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 18205 188342 +101+43+6+4+2+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 27308 282436 +102+36-4+4-10+0-11+1-10+2-11+1-11+1-10 +hashblocks_sha512 39 40963 424217 +110+50-3+5+1+724+23+17-1-5-7-5-7+0+0 +hashblocks_sha512 39 61445 636210 +115+56+13+627+70+18+15+0-3-2-2-1+0-3-2 +hashblocks_sha512 40 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 40 0 86 +688+56+34-7+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 40 1 86 +76+28+7-2+0-6+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 40 2 86 +13+2-2+0-7+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 40 4 86 +16-8-1-4+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 40 7 86 +16-8+7-2-8-3+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 40 11 86 +11-6+10-2-1-6-7+2+0+0+0+0+0+0+0 +hashblocks_sha512 40 17 84 +13-2+9-7+0-5+5-4+4-4+4-4+4-4+4 +hashblocks_sha512 40 26 86 +16-8+7-2-8-3+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 40 40 86 +35-1-1-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 40 61 86 +32-1-9-4-6+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 40 92 86 +33-4-4+4+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 40 139 1462 +3322+128+29+3+6-2+2-6+0-6+0-8-7-7-1 +hashblocks_sha512 40 209 1460 +671+28+7+5+0+6-3+1+2-1-4-2-3-2-4 +hashblocks_sha512 40 314 2813 +537+56+35+2+1-3+0+0+1-2-5-8-13-17-13 +hashblocks_sha512 40 472 4160 +543+91+50+11+12+8+9+0-7-9-15-22-23-22-18 +hashblocks_sha512 40 709 6865 +661+93+42+36+22-3-1-8-3+3+0-3-1-4+14 +hashblocks_sha512 40 1064 10920 +501+81+44+2-16-10-18-23+12-30+0+0-36+0-8 +hashblocks_sha512 40 1597 16330 +543+72+12-31-45-28+37-53-26+0-24+5+14-23+6 +hashblocks_sha512 40 2396 24423 +590+68-60-36-35-9+2+0+2+0+2+0+2+0+2 +hashblocks_sha512 40 3595 37872 +697+1+0+0-11+7-11+7-11+7-11+7-11+7-11 +hashblocks_sha512 40 5393 56778 +749-12-34-23+10-17+6+19-3+0+28-26+1+26-2 +hashblocks_sha512 40 8090 85116 +606+3-15-18-9-16+0+4+0+4+0+4+0+4+0 +hashblocks_sha512 40 12136 126866 +606+21+43+2+26+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 40 18205 191572 +1948+155-5+31+2+0+12+4+0+0+0+0+0+0+0 +hashblocks_sha512 40 27308 287233 +876-16+0+15-11+9-7+9-7+9-7+9-7+9-7 +hashblocks_sha512 40 40963 435574 +605-13+30+0+4+0+4+0-1+3-4+0-3+1-4 +hashblocks_sha512 40 61445 653338 +578-64-58-56-62+1476+104-22-21+0+1427+46+8+0-3 +hashblocks_sha512 41 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 41 0 112 +1825+75+39+0-1-1+0+1+24+0+0+0+0+0+0 +hashblocks_sha512 41 1 113 +90+37+1-1-2+0+0-1+0+0+0+0+0+0+0 +hashblocks_sha512 41 2 113 +2+25+2-1+0-3+0+0+0+0-1-1-1-1-1 +hashblocks_sha512 41 4 113 +2+2+1+3+35-2-1-1+0+0+0+0+0+0+0 +hashblocks_sha512 41 7 113 +2+2+1+2+2-2-2-1+0+0+0+0+0+0+0 +hashblocks_sha512 41 11 113 +2+2+2+2-1-1+3+0+0+0+0+0+0+0+0 +hashblocks_sha512 41 17 112 +3+3+2+4+2+0-1+1+0+0+1+0+0+0+0 +hashblocks_sha512 41 26 113 +2+2+1+2+0+1-1-1+0+0+0+0+0+0+0 +hashblocks_sha512 41 40 113 +21+3+0+2-1-1+3+0+0+0+0+0+0+0+0 +hashblocks_sha512 41 61 112 +23+5+0+2+0-1+1+0+0+1+0+0+0+0+0 +hashblocks_sha512 41 92 112 +3+4+2+4+0+2+0+0+1+0+0+0+0+0+0 +hashblocks_sha512 41 139 1483 +4036+110+1-2+1+0-1-1-1-1+1+0+1+0-2 +hashblocks_sha512 41 209 1483 +518+16+0-2-1-1-1+1+1+0+1+0-2+0-4 +hashblocks_sha512 41 314 2860 +453+75+65+0-1-2-1-4+1+1+0+0-4-7-9 +hashblocks_sha512 41 472 4233 +410+51+0+2+1-3+0+4+3-6-7-8-11-10-10 +hashblocks_sha512 41 709 6969 +454+58+25+12+16+8+0-3+3-2-5-7-7-7-5 +hashblocks_sha512 41 1064 11081 +440+82+96+9+3+0-7-8-3-2+0-6+0-2-3 +hashblocks_sha512 41 1597 16617 +526+56+36+6-63+1-59-10-14-48+0+2-47-2+3 +hashblocks_sha512 41 2396 24844 +456+53+25+5-33-25-17+15-30+0-34+16-23+1-4 +hashblocks_sha512 41 3595 38540 +527+40-10+9+9+8-4-4-4+2-6-4+54-4+0 +hashblocks_sha512 41 5393 57763 +501+30-6+3-20+11-27-25+30+119+0-5-57+26-12 +hashblocks_sha512 41 8090 86586 +317-19+31+648+207-17+39-19+8-17-4-11+7-16+0 +hashblocks_sha512 41 12136 129082 +278+56+58+25+32+0+23+19-5-3-5-3-5-3-5 +hashblocks_sha512 41 18205 194968 +178+26-21+15-3-6-12+13+22-13+0+8-12-9+13 +hashblocks_sha512 41 27308 292340 +354+0+1215+291-30+31-9-21-21+23-29+3-7-11+15 +hashblocks_sha512 41 40963 439408 +565-118-64-177-197-148-192+1295+60+58+14-10+50+0+36 +hashblocks_sha512 41 61445 659059 +665-300-255-333+580+113+1544-24-261+1263+0-33+5-79+119 +hashblocks_sha512 42 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 42 0 87 +729+61+23-2-9+6-3+0-7+6-3+0-7+6-3 +hashblocks_sha512 42 1 87 +42+54-4+7+7-3-7+6-3+0-7+6-3+0-7 +hashblocks_sha512 42 2 86 +12+11-2-8+17-1-6-3+1-6+2-7+2+0+4 +hashblocks_sha512 42 4 88 +10+4+1+1+1-1-4+2-3-9+0-2+2-3-9 +hashblocks_sha512 42 7 85 +14+13-2-2-6+1-1+5+0-6+3+1+5+0-6 +hashblocks_sha512 42 11 85 +13+10-1-1-6+4-6-6-5+3-6+3+1+5+0 +hashblocks_sha512 42 17 85 +13+10-1-1+0-6+5-5+5+0-6+3+1+5+0 +hashblocks_sha512 42 26 86 +12+9-9-3+3+0-7-7-6+2-7+2+0+4-1 +hashblocks_sha512 42 40 87 +38+2+1+4-6+5-4+0+0+0-7+6-3+0-7 +hashblocks_sha512 42 61 87 +43+1-3+6-9+0-8-3+3+3-2-8+1-1+3 +hashblocks_sha512 42 92 87 +11+14-7+9-4+0+0+0-7+6-3+0-7+6-3 +hashblocks_sha512 42 139 1091 +2743+80+9+3+1-3-5-2-4+3-4-3-3+0+1 +hashblocks_sha512 42 209 1090 +334+7+2+0-4-3-1-2-4+1+0-1-2+3+1 +hashblocks_sha512 42 314 2085 +250+68-4+0-2+1+0+0+64-1-2+0-1-2-4 +hashblocks_sha512 42 472 3090 +187+26+22+23+28+0-12-12-11-14-9+57+2-4-4 +hashblocks_sha512 42 709 5111 +200+25+61+24-5-7-7+8-1-2+2-3+0+0+1 +hashblocks_sha512 42 1064 8092 +168+13+9-3+67+11+0-4+0-1-4-6+7-6+0 +hashblocks_sha512 42 1597 12097 +162-14+73-15+57-24+6-14+6-24+6+0+0-24+6 +hashblocks_sha512 42 2396 18080 +158+17-8+6-4-6-1-1+0+4+3-7+3-7+5 +hashblocks_sha512 42 3595 28033 +177+45-8+1-7-5+2+2-2+0+4-1-12-3+56 +hashblocks_sha512 42 5393 41990 +167+56+55-27+8-26-30-28+8-17-27+111+0+2-16 +hashblocks_sha512 42 8090 62915 +216-15-7-3-9-15+55+21-3-20+0+8+24+13+21 +hashblocks_sha512 42 12136 93786 +235+42-34-28-40+25-2+9-3+0+9-3+0+9-3 +hashblocks_sha512 42 18205 141588 +365+28-21-8+15-50+29+0-8-8+4-18+15-50+1056 +hashblocks_sha512 42 27308 212313 +1205+12+8-14+0+5+7-13-14-16-30-6-6+6+38 +hashblocks_sha512 42 40963 322748 +195+0-8-82-58-66+0-4-58-4+1905+818+814+854+788 +hashblocks_sha512 42 61445 484161 +773+0-215+1135-235-213-125-153-217-131+1200+1158+1135+1139+1184 +hashblocks_sha512 43 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 43 0 113 +709+76+37-4+0-3+0+0+20+0-1+0-2-2+0 +hashblocks_sha512 43 1 112 +166+46+0+1-1-1-2+0-1+1-2+0-1+1-1 +hashblocks_sha512 43 2 112 +3-1+1-1+0-1+1-3+1-1+1-1+1+0-1 +hashblocks_sha512 43 4 112 +3-1+2-3+3-3+1-3+1-1+1-1+1-2+0 +hashblocks_sha512 43 7 111 +4+0+3-2+4-2+2-2+2+0+2+0+2+0+0 +hashblocks_sha512 43 11 112 +3-1+1-1+0+0+0-3-3+1-1+1+0+1-1 +hashblocks_sha512 43 17 112 +3-1+1-1+0+0-3+1-1+1-1+1+0-1+1 +hashblocks_sha512 43 26 112 +3-1+1-1+0-1+1-3+1-1+1-1+1+0-1 +hashblocks_sha512 43 40 112 +30+0-1+3-3+2-3+1-1+1-1+1-1-2+0 +hashblocks_sha512 43 61 112 +36+1-1+0-1+1-3+1-1+1-1+1+0-1+1 +hashblocks_sha512 43 92 112 +30+0-2+4-3+2-3+1-1+1-1+1-1+1-1 +hashblocks_sha512 43 139 1236 +2944+69+0-5-5+2-3-5-5+0-1+0+0-1+1 +hashblocks_sha512 43 209 1234 +284+30+0-2-1+2-3-3-4-2+4+0-1+1+1 +hashblocks_sha512 43 314 2362 +242+49-3-5-2-3+3+2+1+1+1+0+0-4-3 +hashblocks_sha512 43 472 3489 +248+66+18-5+4+2+0+1+3-6-4-6-9-6-3 +hashblocks_sha512 43 709 5739 +302+88+29+2+6-2-8-3-6-1+0+0-5-2+1 +hashblocks_sha512 43 1064 9118 +281+55+30+6-10-1-2-1-7-5+3+1+4-1+0 +hashblocks_sha512 43 1597 13662 +289+77+0-24+10-35+6-51+8-52+12-43-19+4-45 +hashblocks_sha512 43 2396 20424 +242-1+57+9-7-5+7-1+0+2+11-3-1+3-1 +hashblocks_sha512 43 3595 31689 +226+7+0-8-3+1-3+1-3+1-3+1-3+1-3 +hashblocks_sha512 43 5393 47474 +219+8+6+10+0-7-13+18-1-12+11-1-13+18-1 +hashblocks_sha512 43 8090 71153 +293-4-9+8+2+5+2+0+10+0-8-8+0-2+14 +hashblocks_sha512 43 12136 106067 +149+24-10+18+805+30+0-1-3-1+5+5-2+0-15 +hashblocks_sha512 43 18205 160187 +193+2+0+7-3+12-4-14+0-3-3+7-17+22+0 +hashblocks_sha512 43 27308 240174 +600+2+10-20-8-12+0-16+4-12+0-16+4+868+501 +hashblocks_sha512 43 40963 361952 +285-35-46+0-32-40+88-16+114-2+50-70+158+86+80 +hashblocks_sha512 43 61445 543028 +2727+248-272-91+121-100-152+0-268+16+33-56+50-8+1927 +hashblocks_sha512 44 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 44 0 88 +1732+62+31+30+2-3-9+0-2+2-3-9+0-2+2 +hashblocks_sha512 44 1 87 +84+1+6+3+2-5-7+6-3+0-7+6-3+0-7 +hashblocks_sha512 44 2 86 +11+27+0-4-3-5+1-6+7-2+1-6+7-2+1 +hashblocks_sha512 44 4 87 +12+2+0-8+18+0-7+1+0+0-7+6-3+0-7 +hashblocks_sha512 44 7 87 +10+0-4-5-7+0+0-7+6-3+0-7+6-3+0 +hashblocks_sha512 44 11 84 +14-3-2+0+3+3-4+9+0+3-4+9+0+3-4 +hashblocks_sha512 44 17 86 +12+0-2-4+2-1-6+0-6+2-7+2+0+4-1 +hashblocks_sha512 44 26 86 +13-4-2-5+4+4+4-1-7+2+0+4-1-7+2 +hashblocks_sha512 44 40 87 +42+3+9+2-9-1+0-7+6-3+0-7+6-3+0 +hashblocks_sha512 44 61 84 +37+7-1-5-5-4+3+3-4+9+0+3-4+9+0 +hashblocks_sha512 44 92 86 +11+0-1-4-4+4+1-6+7-2+1-6+7-2+1 +hashblocks_sha512 44 139 1102 +3287+122+33+4+1-1-2-1-1+1-1-1+0-2+1 +hashblocks_sha512 44 209 1106 +745+40+11+0+0-4-5-4-2-2+6-2+0-5+5 +hashblocks_sha512 44 314 2109 +739+86+57-1-2+2-1+3+1+0-4-4-1+0-1 +hashblocks_sha512 44 472 3116 +804+37-6+1-1+4-1-2-1-2+1+0+1+8+0 +hashblocks_sha512 44 709 5174 +776-10-6-9-12-8-4+5+4+7+3+0-1+0+0 +hashblocks_sha512 44 1064 8199 +510-8-5-6+12+2-3-2+1+1-4+0+0+4-1 +hashblocks_sha512 44 1597 12260 +484-35+4-19+7-21+11-22+4-22+0+8-22+4-22 +hashblocks_sha512 44 2396 18324 +564-11-10+2-1+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 44 3595 28420 +554-15-3+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 44 5393 42551 +549-9-2+65-4-6+77+0-4-9+77+0-4+77+0 +hashblocks_sha512 44 8090 63824 +518-13+0-75-4-3+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 44 12136 95108 +594-9+3+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 44 18205 143560 +689-11+1+0+0+1109+244-11+1-1+0+0+0+0+0 +hashblocks_sha512 44 27308 215276 +1316-11-2+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 44 40963 327472 +479-15-46-48-56-48+1197+3+7+0-6+3-7+4+2 +hashblocks_sha512 44 61445 491101 +995-37-49-55-55-55-55+1906+94+2-4+0+1+1+1 +hashblocks_sha512 45 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 45 0 112 +840+78+23+0-1-2+0-1+20-1+0+0+0-1+0 +hashblocks_sha512 45 1 112 +91+33-1+3-2+0-2-1+0+1-1+1-1+1-1 +hashblocks_sha512 45 2 112 +19-2+26+3-3+0-3+0-1+1+0-1+0-1+0 +hashblocks_sha512 45 4 112 +14-3+3-3+35-3+1-3+0-1+0-1+0+1-1 +hashblocks_sha512 45 7 112 +18-3+5+2-1-1-2+0-3+0-3+0+0+0-1 +hashblocks_sha512 45 11 112 +13-2+3+0+2-3+0-3+0-3+1-1+1+0-1 +hashblocks_sha512 45 17 112 +18-2+3+0+2-3+0-3+0-3+0-1+0+0+0 +hashblocks_sha512 45 26 112 +13-2+3+0+2-3+0-3+0-3+0-1+0+0+0 +hashblocks_sha512 45 40 111 +46-2+6+3+0+0-1+0+0+0+1+2+0+2+0 +hashblocks_sha512 45 61 112 +40-3+5+2-1-1-2+0-3+0-3+0+0+0-1 +hashblocks_sha512 45 92 112 +40-2+3+0+2-3+0-3+1-3+0-3+1-1+1 +hashblocks_sha512 45 139 1234 +3217+75+20-3-3-2+0+0-1+0+1-1+2+4+1 +hashblocks_sha512 45 209 1232 +472+2+3+2+3-3+1-2-1-3-1+0+1-2-2 +hashblocks_sha512 45 314 2360 +204+26-1-2-2-3-2-2+1+3+4+6+1+0-5 +hashblocks_sha512 45 472 3485 +166+27+23+0+0+2+5+6+2-5-5-2-5-4-3 +hashblocks_sha512 45 709 5738 +224+22+7+0+4-6-6-4-2+1+3+0-1-1-2 +hashblocks_sha512 45 1064 9116 +280+50+14-1-11-5+3-1+1-1+0+5+2+0+0 +hashblocks_sha512 45 1597 13638 +269+75+43+60+13-14+0-11+0-12-6-11+0+9-12 +hashblocks_sha512 45 2396 20427 +132+16+17+8-9-11+4+0-4-3+6-9+6-9+0 +hashblocks_sha512 45 3595 31683 +151+41+0-6+32+0-2+0-2+0-2+0-4+0-2 +hashblocks_sha512 45 5393 47466 +155+124-7+12-5-2+2-4+15+28-17-2+0-4+8 +hashblocks_sha512 45 8090 71120 +130+13-7+679-21+0+13-2+0-7+30+1+5-1-4 +hashblocks_sha512 45 12136 106042 +774+20+0+9+21+0-26+0-10+0-10+0-26+0-26 +hashblocks_sha512 45 18205 160133 +206+7+28-10+6+0-16-8+8-8-16-8+6+0-16 +hashblocks_sha512 45 27308 240110 +198-14-8-30-8-34-8+889+362+0+16-2+12+0+0 +hashblocks_sha512 45 40963 361582 +218+137-77-2-90+26-164+24-166+0-90+10-120+12+709 +hashblocks_sha512 45 61445 542236 +626-192+24-76+0-68+24-76+88-232-46+1167+152-258+60 +hashblocks_sha512 46 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 46 0 86 +1755+81+4-6+7-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 46 1 86 +92+13+7+10-3-2-5+1-6+1+0+0+0+0+0 +hashblocks_sha512 46 2 86 +13+30+4+10+4-6-5+0+0+0+0+0+0+0+0 +hashblocks_sha512 46 4 86 +13+13-6+0-4-4-3-5+1-6+1+0+0+0+0 +hashblocks_sha512 46 7 86 +18+6+4+4-8-2-6+1+0+0+0+0+0+0+0 +hashblocks_sha512 46 11 86 +13+13-6+0-4-4-3-5+1-6+1+0+0+0+0 +hashblocks_sha512 46 17 86 +15+3+11+2+8-1-6+1+0+0+0+0+0+0+0 +hashblocks_sha512 46 26 86 +18+6+4+4-1-6+1-6+1+0+0+0+0+0+0 +hashblocks_sha512 46 40 86 +47+17-5+3+1+4+0-6+1+0+0+0+0+0+0 +hashblocks_sha512 46 61 86 +52+1+4+8-9-5+1-6+1+0+0+0+0+0+0 +hashblocks_sha512 46 92 86 +50+6+4+4-1-6+1-6+1+0+0+0+0+0+0 +hashblocks_sha512 46 139 1458 +3196+64+26+7+7+2-1+2-1-2-3+0-2+0-4 +hashblocks_sha512 46 209 1458 +302+8+3+7+5+0-1+1-3-1+0-2+0-4-3 +hashblocks_sha512 46 314 2811 +186+49+42+34-1+1+3+0+54-5-10-8-13-16-16 +hashblocks_sha512 46 472 4156 +214+61+49+14+18+16+8+0-7-10-9-14-18-20-20 +hashblocks_sha512 46 709 6882 +332+38+31+13+6-16-19-16-6-6+0+0+0+0+0 +hashblocks_sha512 46 1064 10933 +276+83+26-11+3+17-5-37-26-26-25-27+4+0+16 +hashblocks_sha512 46 1597 16331 +313+80+1-17-42-16+31-40-32+3+0-36+35-27+37 +hashblocks_sha512 46 2396 24404 +403+78-12-30+22+2+0-2-4+6+0-2-4+6+0 +hashblocks_sha512 46 3595 37901 +404+0-8+39-27+5-39-35+11-35+11-35+11-35+11 +hashblocks_sha512 46 5393 56767 +409-79+93-5+8+0+12-2+8-10-28+13-2+6-2 +hashblocks_sha512 46 8090 85106 +334+38-6+0-20+0-20+0-20+0-20+0-22+0-20 +hashblocks_sha512 46 12136 126844 +349+936+52+25+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 46 18205 191502 +473+55-16+42+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 46 27308 287176 +692+43-6+13+0-14-44+1543+1047+6-18+0-18+0-18 +hashblocks_sha512 46 40963 434993 +356+28+3-4-2-7-1-6+0-1+3+962+53+26-13 +hashblocks_sha512 46 61445 652382 +689+12-3-49-39-57-31+1230+82+16+38+0-8+0-8 +hashblocks_sha512 47 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 47 0 112 +847+68+22-1+0+0-1-1+22+0+1+0+1+0+0 +hashblocks_sha512 47 1 113 +30+1+1+0-1-1+0-2-1-2+0+0+0-1+0 +hashblocks_sha512 47 2 113 +2+0+1-1-1+0-2-1-2+0+0+0-1+0-1 +hashblocks_sha512 47 4 113 +2+1+1+0-1-1+0-2-1-2+0+0+0-1+0 +hashblocks_sha512 47 7 113 +2+0+2-1+0-2+1-2-1-2+0-1+0-1+0 +hashblocks_sha512 47 11 112 +3+3+2+0+2-1+0-1-1-1+0-1+0+1+0 +hashblocks_sha512 47 17 112 +3+1+2-1+1+0+0-1+0+0+1+1+0+1+0 +hashblocks_sha512 47 26 112 +3+2+2+0+2-1+0-1-1-1+0+1+0+0+1 +hashblocks_sha512 47 40 112 +31+2+2+1+0+0+1-1+0-1+1-1+0+1+0 +hashblocks_sha512 47 61 112 +38+0+3-1+1+0+0-1+0+0+1+1+0+1+0 +hashblocks_sha512 47 92 113 +2+0+1-1-1+0-2-1-2+0+0+0-1+0-1 +hashblocks_sha512 47 139 1483 +3155+73+19-1+0+0+0+0+1-4+0-4+0-1-3 +hashblocks_sha512 47 209 1482 +229+1+3-1-3-1-1+0-1+0-2+2-1+1+1 +hashblocks_sha512 47 314 2858 +151+52+25+0-1-2-4-3-2+0-2+0+2+2-1 +hashblocks_sha512 47 472 4231 +178+70+23+1+17-2-5+4+3+0-4-6-5-9-9 +hashblocks_sha512 47 709 6969 +248+98+52+18+19+3+0-3-8-13-1-2-6+3-8 +hashblocks_sha512 47 1064 11085 +214+113+67+14+1-8-14-8+21-9-5-8+27-6+0 +hashblocks_sha512 47 1597 16586 +189+69+0-2+9-29-15+16-12-8+22-28+17-37+16 +hashblocks_sha512 47 2396 24834 +197+51+0-1-25-1+16+1+49-6-10+34-15+4-1 +hashblocks_sha512 47 3595 38541 +329+24-32+19+13-5+15+22+20-2+0-2+0-2+0 +hashblocks_sha512 47 5393 57780 +247-81+4+6-24+0+7-18-17-11+1+0-8+6-18 +hashblocks_sha512 47 8090 86584 +438-33-1+23+0+22+0+22+0+22+0+22+0+22+0 +hashblocks_sha512 47 12136 129107 +269-10+13+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 47 18205 194997 +249-3-4+0-4+0-4+0-4+0+804-24-14+6+5 +hashblocks_sha512 47 27308 292396 +336-13+0-30+0-30+0-30+0-30+0-30+0-30+0 +hashblocks_sha512 47 40963 439500 +347-177+814+76-32+0-32+2-6+0-32+2-6+0-32 +hashblocks_sha512 47 61445 659182 +1055+1164+58-154-42-124+12-110+12-116+12-110+0+1210-249 +hashblocks_sha512 48 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 48 0 86 +778+34+31+0-6+0+0+4-1-6+2-6+2-6+2 +hashblocks_sha512 48 1 88 +41+0+6-6+4-4-1-1+0+0+0+0+0+0+0 +hashblocks_sha512 48 2 88 +9+1-6-5+5-5+0-3-7+0+0+0+0+0+0 +hashblocks_sha512 48 4 88 +9+4+8-10-3-2-7+0-4+0+0+0+0+0+0 +hashblocks_sha512 48 7 88 +10+2+4+5-4+8-3-8+0-8+0-8+0-8+0 +hashblocks_sha512 48 11 88 +17+7-8-6-3-1+0-3-7+0+0+0+0+0+0 +hashblocks_sha512 48 17 88 +9+4-3+8-3+3-7+0-4+0+0+0+0+0+0 +hashblocks_sha512 48 26 88 +9+4-3+63-5-3+5-4+0+0+0+0+0+0+0 +hashblocks_sha512 48 40 88 +39+1+4+1-4-3-10+6-3+0+0+0+0+0+0 +hashblocks_sha512 48 61 88 +39+1+4-7-6-3-2-10-3-7+0+0+0+0+0 +hashblocks_sha512 48 92 88 +44+7+0+5-10-6+2-3-4+2-3-8+0-8+0 +hashblocks_sha512 48 139 1462 +3436+63+8+9+4-1+3-1-2-1+3+0+0+0-2 +hashblocks_sha512 48 209 1463 +491+10+5+3+6-3-1+0-4-3-2+5-3+0-3 +hashblocks_sha512 48 314 2817 +335+82+5-3+5+1+0+3+1-1-5-9-13-16-16 +hashblocks_sha512 48 472 4170 +352+60+46+42+38+6+4+0-7-9-8-16-18-16-33 +hashblocks_sha512 48 709 6890 +402+79+107+66+14+0-5-17+13-31-19-23-23-24+37 +hashblocks_sha512 48 1064 10935 +370+95+47+11-3-48-16-48+1-1+17+0-24-21+35 +hashblocks_sha512 48 1597 16342 +460+127+26-30+27-32+56+25-53+6-12-34+0+0-1 +hashblocks_sha512 48 2396 24462 +496+69-33-46+28+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 48 3595 37964 +639-54-13-17+37+3+0+13+0+3+0+13+0+3+0 +hashblocks_sha512 48 5393 56911 +544-19+0+21+0+26+0+26+0+26+0-7-2+28-2 +hashblocks_sha512 48 8090 85312 +528+56+10+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 48 12136 127178 +451+44+1-8+1013-162+49+4+0+0+0+0+0+0+0 +hashblocks_sha512 48 18205 192024 +664+36+10-34-40+0-40+0-40+0-40+0-40+0-40 +hashblocks_sha512 48 27308 287954 +1099+76+20+0+0+0+0+0+0+3050+305-38-48-48-48 +hashblocks_sha512 48 40963 436436 +165+51+4-367+1+0+0+0+0+0+0+1102-434-290+1171 +hashblocks_sha512 48 61445 653998 +938+8-39-37-41-44+561+1864+184+44-3+27+0+0+0 +hashblocks_sha512 49 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 49 0 114 +631+46+16-4-2-4-3-3+20-2-3+0+0+0+0 +hashblocks_sha512 49 1 114 +152+43-3-4+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 49 2 114 +0+21-3+1-4+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 49 4 114 +2+0+0+0+21-4-2-3-2+2+0+0+0+0+0 +hashblocks_sha512 49 7 114 +2-4+2+0-4-2+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 49 11 114 +2-4+4-2-4-4+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 49 17 114 +0-2+1-2-4-1-4-3+0+0+0+0+0+0+0 +hashblocks_sha512 49 26 114 +0+1-2+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 49 40 114 +32+0-3+1-4+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 49 61 114 +33-1-4+3-4+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 49 92 112 +4+0+2-1+1-1-2-1+3+0+0+0-1+2+2 +hashblocks_sha512 49 139 1494 +3419+70+24+23-1+0-3-4-2-3-1+0-1+1+0 +hashblocks_sha512 49 209 1494 +326+34+3+0-1-1-4-1-1+1+0+0+1+0-1 +hashblocks_sha512 49 314 2878 +181+88+25+1+2+0+2+1-1-3-4-4-3-4-10 +hashblocks_sha512 49 472 4254 +150+78+39+8+7+4+0+3-2-8-9-5-12-7-6 +hashblocks_sha512 49 709 7005 +136+73+69+41+15+5+0+2-8-14-3-15-9-3-15 +hashblocks_sha512 49 1064 11139 +187+110+74+36+0+11-5-22-21-34-34+24-33+12-19 +hashblocks_sha512 49 1597 16682 +133+114+51+18-32-78+0-64-7-77+12-83+10+6-67 +hashblocks_sha512 49 2396 24960 +553+66-2-71-24-63+3-33+11+8-20+8-20+0+8 +hashblocks_sha512 49 3595 38733 +272+50-77-13+6+2+817+53-57-37+0+6-34-25-2 +hashblocks_sha512 49 5393 58047 +292-105+31-30-15+8-2-37+14+47-45+0-23+3+11 +hashblocks_sha512 49 8090 86994 +164-46+44+0+41-14+33-11+14-14+33-11+14-5-11 +hashblocks_sha512 49 12136 129734 +48+19-23+27-41+25-41+0-4-35+0-41+27-41+0 +hashblocks_sha512 49 18205 195909 +35+2+1-56+9-51+0-41-41-2-54+12+880+37-20 +hashblocks_sha512 49 27308 293742 +372+5+18-34+0-14-32+4-35+27-5-39+9-34+3 +hashblocks_sha512 49 40963 441314 +129+8-8+1196+26-18+0-4+30+26+34-6-14-14-8 +hashblocks_sha512 49 61445 661846 +1086+14+1290+40+49-23-32+0-38-42-24-30-14+758+36 +hashblocks_sha512 50 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 50 0 86 +999+55+38-3+0-2+4-1-6+2-6+2-6+2-6 +hashblocks_sha512 50 1 88 +41+16+0-5-1-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 50 2 88 +8+11-6+2+12-6-3-8+0-8+0-8+0-8+0 +hashblocks_sha512 50 4 88 +9-2-10-7-1-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 50 7 88 +4+1+4-4-3-3-7+0+0+0+0+0+0+0+0 +hashblocks_sha512 50 11 84 +10+11+0-3-4-4+2-4+4-4+4-4+4-4+4 +hashblocks_sha512 50 17 85 +10+4+0-4-5-5+1-5+3-5+3-5+3-5+3 +hashblocks_sha512 50 26 88 +12-2-10-11-1-3-7+0+0+0+0+0+0+0+0 +hashblocks_sha512 50 40 88 +34+2+4-5-4+2-3-8+0-8+0-8+0-8+0 +hashblocks_sha512 50 61 88 +32+7+1-7-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 50 92 85 +16+0-1+0-5+3-5+3-5+3-5+3-5+3-5 +hashblocks_sha512 50 139 1108 +3006+76+23+1-3+0-4-4+1+0+0+0+0-5-4 +hashblocks_sha512 50 209 1104 +283+9+20+8-4+4-2-4-2+4-4-4-1+0+0 +hashblocks_sha512 50 314 2112 +226+72+29-2+8-2-2+0+6+0-2-2-2+3+9 +hashblocks_sha512 50 472 3130 +223+32+34+28+22+0-3-9-4+4-4-7+42-9-3 +hashblocks_sha512 50 709 5183 +220+60+57-1-5-6+1+1-1-2-3-1+6+0+6 +hashblocks_sha512 50 1064 8214 +178+24-7+3+46-3-11+2+1-8-3-2+30+0-2 +hashblocks_sha512 50 1597 12274 +206+7-7+7-27+1-8+4-15+3-18+0-18+6-24 +hashblocks_sha512 50 2396 18340 +202+15-1+0-2+5+1+2+0-4-9+3+11-3-2 +hashblocks_sha512 50 3595 28441 +219+33+1-5-4+2-3+5+7-9-3+5-1-4+0 +hashblocks_sha512 50 5393 42588 +235-8-1+44-14-9+40+3-17+6+34+0-12+36-8 +hashblocks_sha512 50 8090 63832 +278-33-3+0-4+3+0+2-4+0-10+14-4-1+3 +hashblocks_sha512 50 12136 95144 +287+12+2+44-1+2-2-14-4+0-2+6+0-2+6 +hashblocks_sha512 50 18205 143624 +1375+183+0-7+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 50 27308 215366 +622+20+0+15+5-2-4+56+7-10-10-9-7-9+46 +hashblocks_sha512 50 40963 327800 +168-218-139+926+37-173+11-195+6-3+1+0-9+2-1 +hashblocks_sha512 50 61445 491322 +482+234+225+217+211+223+1404+0-21-16-26-24-26-20-26 +hashblocks_sha512 51 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 51 0 116 +1668+60+39+13+0+0+0+0+38-3-5-7-5-4-4 +hashblocks_sha512 51 1 111 +60+0+1-1+0-1-1+0+0+1+0+0+0+1+1 +hashblocks_sha512 51 2 111 +4+1-2+2+0-1-1-2+0-2+0-2+1+0+0 +hashblocks_sha512 51 4 112 +3+0-1+0+1-3-2-2+0-1-1-1+0+1+0 +hashblocks_sha512 51 7 111 +2+3-2+4-2+0-1+0+0+0+0+1+1+1+1 +hashblocks_sha512 51 11 111 +1+2+0-1+3-2-1-1+0+0+0+0+0+2+1 +hashblocks_sha512 51 17 111 +3+1+2+0+2-2-1-1+0-2+0+0+0+0+1 +hashblocks_sha512 51 26 111 +5+0+1+2+0-2+0-1+0-2+0+0+0+0+1 +hashblocks_sha512 51 40 111 +24+4-2+4-2+1+0+0+0+1+0+0+0+1+1 +hashblocks_sha512 51 61 111 +25+4-2+2-2+0-1-1+0+0+1+0+0+0+1 +hashblocks_sha512 51 92 111 +25+3-2+2-2+1-2+0-2-2+1+0+0+0+2 +hashblocks_sha512 51 139 1226 +2889+69+0+0+0+0+1-3-3-1+1-1+0+1-4 +hashblocks_sha512 51 209 1226 +388-4+0+0+0+1-3-3-1+1+0-1+1-1+0 +hashblocks_sha512 51 314 2344 +283+61+57+25+21+3+3+0-1-4-4-2-4-1-6 +hashblocks_sha512 51 472 3461 +263+105+67+45+6+4+6-3-6-2-5-1-1+0-2 +hashblocks_sha512 51 709 5700 +412+27+9+0+0-6-7-4+1-5+4+1-1-3-3 +hashblocks_sha512 51 1064 9057 +361+66+42-16-11+1+0+0+11+1-1-4-4+7-3 +hashblocks_sha512 51 1597 13554 +352+56+34-25-18-16+21-22+0-19+15-22+0-14+8 +hashblocks_sha512 51 2396 20300 +256-24-25+8+11-12+2+2+1-3-6+7-2+0-2 +hashblocks_sha512 51 3595 31490 +215-14+36+5+3+11+9-2+0-2+0-2+0+5-7 +hashblocks_sha512 51 5393 47175 +226+10-4-4-9+3-5+633+44-10-26+3+6-34+0 +hashblocks_sha512 51 8090 70662 +196+23+24+45+0+0+0+0+0+0+0+0+0-19+34 +hashblocks_sha512 51 12136 105372 +147+2-15+23+0-28+0-28+0-28+0-28+0-28+0 +hashblocks_sha512 51 18205 159107 +154+6-36+6+6-14+0-14+0-14+0-14+0-14+0 +hashblocks_sha512 51 27308 238560 +368+0-21-8+810+584-11-17-3-11+91+35+0+16+24 +hashblocks_sha512 51 40963 359490 +440+50-139+81+3-30+28-4-124+148-34-70+899+0+0 +hashblocks_sha512 51 61445 539170 +697-120-106-2+0+34+138+30+90-12+1033+108-230-114-118 +hashblocks_sha512 52 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 52 0 80 +557+64+11+2+7-3+6+0+0+0+0+0+0+0+0 +hashblocks_sha512 52 1 88 +40+5+1+0-6+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 52 2 86 +10+9+4+5-4-6-6+0-6+2-6+2-6+2-6 +hashblocks_sha512 52 4 86 +12+0+5-2-5+2-6+2-6+2-6+2-6+2-6 +hashblocks_sha512 52 7 88 +10+7+3-11-3-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 52 11 88 +8+11-10+6-4-3-3-7+0+0+0+0+0+0+0 +hashblocks_sha512 52 17 82 +16-2+0+1-2+4-2+6-2+6-2+6-2+6-2 +hashblocks_sha512 52 26 88 +8-7+8-4-4-3-3-1+0+0+0+0+0+0+0 +hashblocks_sha512 52 40 86 +41+3+2-6-6+1+0+0+4-1-6+2-6+2-6 +hashblocks_sha512 52 61 85 +41+13+1+0-1-5+5+0-5+3-5+3-5+3-5 +hashblocks_sha512 52 92 80 +19+16+3+2+6+4+4+0+0+0+0+0+0+0+0 +hashblocks_sha512 52 139 1110 +2532+59+90+5+0+0-5-2-2-3-1+2+1-2-3 +hashblocks_sha512 52 209 1107 +424+5+12+4+3-1+0-2+0-3+0-3+1-2+1 +hashblocks_sha512 52 314 2121 +153+43+35+30+29-1+0+0+0+0+4-3+0-2-5 +hashblocks_sha512 52 472 3128 +192+43+31+3+3+2+0+0-6+55-5-10-10-7-6 +hashblocks_sha512 52 709 5178 +284+45+6+0-3-3-12+1+4+3+0-7-2-3+2 +hashblocks_sha512 52 1064 8212 +201+1+6-5+24-8-4-4-5+6+5+0-4+0-3 +hashblocks_sha512 52 1597 12273 +160+47-16+0-31+0-20+7-21+7-19+11-19+5-19 +hashblocks_sha512 52 2396 18337 +198+13-16-6-2+0+0-5+3-5+3-5+3-5+3 +hashblocks_sha512 52 3595 28431 +202-3-3+0+1+0+60+10-1+5+7-1+2+0-4 +hashblocks_sha512 52 5393 42574 +226+41-15-13+57+0+50-19+56-10-9+57-14-7+58 +hashblocks_sha512 52 8090 63827 +175+0+1-1-8+0-8+6-4+6-4+6-4-58+79 +hashblocks_sha512 52 12136 95190 +371+67+135+71+87+831+78-66-57-59-73-66+0-43-57 +hashblocks_sha512 52 18205 143629 +326+69+29-23-22+75-26-4+3-32+48-26+0+3-32 +hashblocks_sha512 52 27308 215384 +803-59+14-57+25-16+53-60-55+8+10+51-6-53+0 +hashblocks_sha512 52 40963 327586 +918-66+0+10-8-70+26+24-50+2-60+36-22+20-60 +hashblocks_sha512 52 61445 491330 +423-139-54+845+78-27-30+0+40-24+0+40-26-2+40 +hashblocks_sha512 53 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 53 0 112 +824+67+17+16-2-1-2+0+21-1-1+1+0+0+0 +hashblocks_sha512 53 1 111 +65+23-2+4-2+1-2+0-1-1-1+1+0+0+1 +hashblocks_sha512 53 2 111 +5-2+2-2+2-2+1-2+0-2-2+1+0+0+1 +hashblocks_sha512 53 4 111 +4-1+1+0-2+1-2+1-2+0+0+0+0+1+1 +hashblocks_sha512 53 7 111 +5-1+1+0-2+1-2+1-2+0+0+0+0+1+1 +hashblocks_sha512 53 11 111 +2+1-1+3-2+1-2+1-2+0+0+0+0+1+1 +hashblocks_sha512 53 17 111 +3-1+2-1+1-2-1-1+0+0+0+0+1+1+1 +hashblocks_sha512 53 26 111 +4-1+1+0-2+1-2+0-2-2+1+0+0+1+1 +hashblocks_sha512 53 40 111 +33-1+2-1+1-2+1-2+0-2+0+0+0+1+1 +hashblocks_sha512 53 61 111 +33-2+2-2+2-2+0-1-1+0+0+1+0+0+0 +hashblocks_sha512 53 92 111 +33-2+2-2+2-2+1-2+0-2-2+1+0+0+1 +hashblocks_sha512 53 139 1224 +2625+73+3+0+0+0+2+0+0+2-2-2+0-2+2 +hashblocks_sha512 53 209 1226 +418+2+0-1-3-3-4-3+1+0+0-3+1+0-3 +hashblocks_sha512 53 314 2346 +345+45+19+14-1-2+1+8-3+1-1+0-5-6-6 +hashblocks_sha512 53 472 3462 +302+71+50+52+3+1+6+0-4-8-7-4-3-2-3 +hashblocks_sha512 53 709 5699 +364+84+23+9+2-9-7-2+1+0-1-2+2-4-1 +hashblocks_sha512 53 1064 9054 +227+24+26-11-6-1-9+0+5-5-1+7+0-4+10 +hashblocks_sha512 53 1597 13552 +296+18-21-28+10-12+10-25+1-8+0-21+5-20+4 +hashblocks_sha512 53 2396 20295 +241-19+688+0-21-5+25-2-4+9+3-2-2+9+8 +hashblocks_sha512 53 3595 31492 +246-14+27+0+3-3+0+2+0+2+0+2+0+2+0 +hashblocks_sha512 53 5393 47158 +141+58-7+0-9+4+7-3-2+0-21+16+16-3-2 +hashblocks_sha512 53 8090 70686 +201+27-12-12+5+0+9-1+9-1-10-23-14+5+0 +hashblocks_sha512 53 12136 105381 +128-30-8-15+0+8+0+8+0+8+0+8+0+8+0 +hashblocks_sha512 53 18205 159111 +297+11+0-16+0-16+0-16-19+68+4+9-6+26-6 +hashblocks_sha512 53 27308 238569 +774-19-24+1+51-23-28+21+1+14-20+17-23+0-20 +hashblocks_sha512 53 40963 359424 +286+52-116-134+6-92-28-82-30+944+48-52+0+70+40 +hashblocks_sha512 53 61445 539062 +768-34-100+18-28-130-26-130+1325+224+151-100+40+0+40 +hashblocks_sha512 54 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 54 0 88 +1535+30+7+2-6-5+7-2-4-8+0-8+0-8+0 +hashblocks_sha512 54 1 86 +43+36+10+4-3+0-6+0-6+2-6+2-6+2-6 +hashblocks_sha512 54 2 87 +9+10-6+0+16-2-1-7+1-7+1-7+1-7+1 +hashblocks_sha512 54 4 88 +9+7-2-6-7-3-9-2-1+0+0+0+0+0+0 +hashblocks_sha512 54 7 83 +15+7+3+0+0-5-2+7-3+5-3+5-3+5-3 +hashblocks_sha512 54 11 88 +11+4+0-6-3-8+0-8+0-8+0-8+0-8+0 +hashblocks_sha512 54 17 88 +10+0-2-3-7-3-3-1+0+0+0+0+0+0+0 +hashblocks_sha512 54 26 88 +10+13-1+4+0-6-7+0-4+0+0+0+0+0+0 +hashblocks_sha512 54 40 88 +41+8-4-2+2-6-3-4+0+0+0+0+0+0+0 +hashblocks_sha512 54 61 86 +46+4-5+5+0+0-2-2+4-1-6+2-6+2-6 +hashblocks_sha512 54 92 88 +40+17-9+0-5-7-3-4+0+0+0+0+0+0+0 +hashblocks_sha512 54 139 1484 +3567+72+4+6+2+0+1-3+0+0-2-2+0+2-2 +hashblocks_sha512 54 209 1484 +299+11+6+2+0+0-2+1+2-1+0+0+0-2-2 +hashblocks_sha512 54 314 2862 +227+91+36+0+4+6+5+3-2-4-8-7-15-16-18 +hashblocks_sha512 54 472 4233 +225+60+48+49+48+11+10-3-7-13-18-10+0-22-13 +hashblocks_sha512 54 709 6999 +293+51+54+28+0-5-14+13-35-46-8-52-51+19+8 +hashblocks_sha512 54 1064 11108 +285+90+58+0-42-63-23+4-30-38-48+51+1-22+21 +hashblocks_sha512 54 1597 16605 +336+135-25-16-51-38+0+7-18+0-22+0+7-18+0 +hashblocks_sha512 54 2396 24844 +371+72-95+33-37+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 54 3595 38508 +515-73+30+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 54 5393 57790 +436-106+31-37-6+16+0-8+14+0+16+0+16+1096-70 +hashblocks_sha512 54 8090 86744 +305-136+2+7+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 54 12136 129308 +425+31-8+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 54 18205 195216 +490+14+23-409+12+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 54 27308 292974 +2218+1147-1-2-625-3-639-2+0+0+0+0+0+0+0 +hashblocks_sha512 54 40963 443551 +359-213+9-39-30-10+869+38+0+13-15-9+1-9+1 +hashblocks_sha512 54 61445 665196 +614-316-20+1221-78-279+14+0+0+0+0+0+0+0+0 +hashblocks_sha512 55 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 55 0 114 +930+43+17+0+0+0+0+0+41-2-2-2-2-2-2 +hashblocks_sha512 55 1 114 +68+41+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 55 2 114 +1+15-1-3+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 55 4 114 +1-3+0+0-4+2+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 55 7 114 +0+1-2+1-4-2-4-3+0+0+0+0+0+0+0 +hashblocks_sha512 55 11 114 +0-1-3-3+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 55 17 114 +0+2-4-1-4-2-5+2+0+0+0+0+0+0+0 +hashblocks_sha512 55 26 114 +1-3+0-1-2-4-5+0+0+0+0+0+0+0+0 +hashblocks_sha512 55 40 114 +32-4+4-1-2-4-5+0+0+0+0+0+0+0+0 +hashblocks_sha512 55 61 114 +28-3+0-1-2-4-5+0+0+0+0+0+0+0+0 +hashblocks_sha512 55 92 114 +2-1+5-2-3-3-4-3+0+0+0+0+0+0+0 +hashblocks_sha512 55 139 1494 +3879+113+73+35-3-1-3-4-2-3-4+2+0+1+0 +hashblocks_sha512 55 209 1493 +634+64+3+0-3+0-1-2-2-1-2-3+3+1+2 +hashblocks_sha512 55 314 2876 +396+74+51+2+2+3+2+0-1-2-2-2-4-10-9 +hashblocks_sha512 55 472 4256 +421+58+12+9+9+4+0+0+2-4-10-11-10-12-12 +hashblocks_sha512 55 709 7005 +384+58+55+18+14+9+0-3-7-14-20-21-24-10+8 +hashblocks_sha512 55 1064 11135 +396+93+63+21+3-8+0-49-53+31-4-38+44-17-39 +hashblocks_sha512 55 1597 16698 +405+78+0+3-92-57+7-94+42-41-62+28-23-62+28 +hashblocks_sha512 55 2396 24949 +415+91+4-78-29-15+47+12-24+22-4+0-2+0-2 +hashblocks_sha512 55 3595 38729 +457+19-117+38-22+9-11-2+0-2+0-2+0-2+0 +hashblocks_sha512 55 5393 58046 +407-97+22+9+3-12+0-43+38-24+9-11+38-24-22 +hashblocks_sha512 55 8090 87016 +306-78-7-10-28+5+0-32+4+0-32+4+0-32+4 +hashblocks_sha512 55 12136 129740 +224-45-3-5-3-33+2+0+2+0+2+0+2+0+1225 +hashblocks_sha512 55 18205 195907 +408-10+0-45+0-44+4-44+2-44+0-44+4-44+2 +hashblocks_sha512 55 27308 293756 +423-11-54+6-8-3-33-3+0-33+0+1+1102+123+29 +hashblocks_sha512 55 40963 441312 +553-23+33-16+8+0-4-42+16-28-8+18+10-36+1193 +hashblocks_sha512 55 61445 661870 +659-33+6-42+0-32+6-4-4+1628+202-14+2-16+4 +hashblocks_sha512 56 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 56 0 52 +113+26+22+19-2+0-1+0-1+0-1+0-1+0-1 +hashblocks_sha512 56 1 52 +26+30-2-2+0-1+0-1+0-1+0-1+0-1+0 +hashblocks_sha512 56 2 52 +2+21+3-1+1-2+0-1+0-1+0-1+0-1+0 +hashblocks_sha512 56 4 51 +2+1-1-1+33+0-1-1+1+0+1+0+1+0+1 +hashblocks_sha512 56 7 52 +2+1-3+0-1+0-2+0-1+0-1+0-2+19-2 +hashblocks_sha512 56 11 51 +3-1+1+0+1+0+0-1+1+0+1+0+1+0+1 +hashblocks_sha512 56 17 51 +2+2+2-1+0-1+0+1+0+1+0+1+0+1+0 +hashblocks_sha512 56 26 52 +2+1-3+0-1+0-2+0-1+0-1+0-1+0-1 +hashblocks_sha512 56 40 52 +27+1-3+0-2-3+1-1+0-1+0-1+0-1+0 +hashblocks_sha512 56 61 51 +28-1+0-1-1+0+1+0+1+0+1+0+1+0+1 +hashblocks_sha512 56 92 51 +26-1+2-1+2-1+0+0+1+2+0+1+0+1+0 +hashblocks_sha512 56 139 1289 +1123+158+63+30+0+0-4-9+8-4-3+10-6-5+11 +hashblocks_sha512 56 209 1286 +135+87+59+59+28-8+0-2+2-1-2-5+18-4-5 +hashblocks_sha512 56 314 2491 +347+121+18+1-12-14-9+0-9+1-15+1-16+1-11 +hashblocks_sha512 56 472 3690 +301+98+12-10+1+2-4+0-4+0-4+0-4+0-4 +hashblocks_sha512 56 709 6076 +399+69-8-10-17-14+8+0+8+0+8+0+8+0+8 +hashblocks_sha512 56 1064 9660 +592+19+31-3-20-14+4-1+0+1-8-2+5+1-8 +hashblocks_sha512 56 1597 14502 +428-8+0-44-6+11-31+9-33+7-31+5-33+7+12 +hashblocks_sha512 56 2396 21669 +419+12+6+3+9+21+1-1-1+0+0-1+0+0-1 +hashblocks_sha512 56 3595 33603 +371+14+11+29+0+2+1+0-1+0+0-1+0+0-1 +hashblocks_sha512 56 5393 50432 +404-20-11+5-98-18+0-52+17+23-49+25+12-50+965 +hashblocks_sha512 56 8090 75612 +231-91-164-160-144-144-143+5+0+0+0+0+0+1-3 +hashblocks_sha512 56 12136 112468 +427-6-8-16+0+0+0+0+0+0+0+0+1+225+214 +hashblocks_sha512 56 18205 170050 +238-161-172-184+12+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 56 27308 255130 +267-442-466-456+1145+201-29+0+7-34-19+7-19+8+8 +hashblocks_sha512 56 40963 385295 +362-30+82-43-57-57-48+0-57-57+764+228+103+168+182 +hashblocks_sha512 56 61445 577851 +513-102+0+50+89+89+89+89+1015-1-19-28-65-65-65 +hashblocks_sha512 57 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 57 0 50 +560+72+0-1+0-1+2+1+1+0+0+0+0+0+0 +hashblocks_sha512 57 1 51 +34+31+0+0+0-1+1+0+0-1-1-1-1-1-1 +hashblocks_sha512 57 2 50 +2+2+0+1+32+2+6-1+0+0+0+0+0+0+0 +hashblocks_sha512 57 4 50 +3+2+0+1+1+0+1+6+0+0+0+0+0+33+0 +hashblocks_sha512 57 7 50 +2+1+1+0+1+0-1+1+1+3+0+0+0+0+0 +hashblocks_sha512 57 11 50 +3+2+0+1+1+0+1+6+0+0+0+0+0+0+0 +hashblocks_sha512 57 17 51 +3-1+1+0-1-1+0+1+2+0+0-1-1-1-1 +hashblocks_sha512 57 26 51 +3-1+1+0-1-1+0+1+2+0+0-1-1-1-1 +hashblocks_sha512 57 40 51 +34-1+1-1-1+2+4+0+0+5-2+0-1-1-1 +hashblocks_sha512 57 61 50 +48+0+2+0-1+2+1+1+0+0+0+0+0+0+0 +hashblocks_sha512 57 92 50 +3+1+1+1+0+1+1+1+0+0+0+0+0+0+0 +hashblocks_sha512 57 139 1084 +808+190+35+12+8+1+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 57 209 1084 +229+69+24+14+0+2+4+2+0+0+0+0+0+0+0 +hashblocks_sha512 57 314 2098 +437+72+45+50-2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 57 472 3104 +372+60+9+4+0+0+1+1+0+0+0+0+0+0+0 +hashblocks_sha512 57 709 5129 +394+45+8-1+0-1+2+0-1+2+0-1+2+0-1 +hashblocks_sha512 57 1064 8164 +408+27+27+27+24+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 57 1597 12242 +405+121+20+51-4+0+22-3-4+22-2-4+21-3-4 +hashblocks_sha512 57 2396 18333 +269+0+3+4+0+3+0+0+4+0+2+0+0+4+0 +hashblocks_sha512 57 3595 28456 +295+4+5+2-2-3+0+3-2-3+0+3-2-3+0 +hashblocks_sha512 57 5393 42626 +324+2+0-6+24+65-1-4-1-2+21+46+1-2-5 +hashblocks_sha512 57 8090 63948 +245+40+2-21-47+866-39+12-44+4+2-28-42-2+0 +hashblocks_sha512 57 12136 95320 +285+40+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 57 18205 143900 +282+36-3+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 57 27308 215772 +279+39+0+0+0+0+0+0+0+0+0+879-22+25-7 +hashblocks_sha512 57 40963 324138 +397+59-16-4+0+2+0+2-24-4+0+2+0-22-30 +hashblocks_sha512 57 61445 486065 +333+952+19+5+0-7+0+5+0-7+0+5+0-7+0 +hashblocks_sha512 58 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 58 0 52 +922+47+38-1+1+1-2+3+1-1+0-1+0-1+0 +hashblocks_sha512 58 1 52 +36+1+0-1+19-2+0+0+0-1+0-1+0-1+0 +hashblocks_sha512 58 2 52 +1+1-3+1+1+1-3-1+0-1+0-1-2+19-2 +hashblocks_sha512 58 4 52 +1+1-3+1+1+1-2-2-2+0-1+0-1+0-1 +hashblocks_sha512 58 7 52 +3+0-2+1-2+1+0+3-2-2+0-1+0-1+0 +hashblocks_sha512 58 11 51 +5+0+0+0+0-1+0-1+2+1+0+1+0+1+0 +hashblocks_sha512 58 17 52 +2-2+1+5+1+1+0+3-2-2+0-1+0-1+0 +hashblocks_sha512 58 26 52 +1-2+0+1-2+1+1-2+0-1+0-1+0-1+0 +hashblocks_sha512 58 40 53 +31+1+1+1+0+5+5+2+0+0-2-1-2-1-2 +hashblocks_sha512 58 61 52 +32+0+0-2+1-3+2+1+0+1-1+0-1+0-1 +hashblocks_sha512 58 92 52 +32+1+0-2+1-3+2+1-2+0-1+0-1+0-1 +hashblocks_sha512 58 139 1153 +996+142+26+138-7+78+0-17-13-3-5-10+50+0-10 +hashblocks_sha512 58 209 1148 +206+23+31+0-1+7-2-1-3-8+2+0+5-5+5 +hashblocks_sha512 58 314 2211 +231+89+55+0+12+9-14+3-20-13+4-2-14-2-14 +hashblocks_sha512 58 472 3278 +172+50+25-9+62+1-21+0-16+0-16+0-16+0-16 +hashblocks_sha512 58 709 5398 +279+88+35+0+0+13+4+24+4-17-3-17-3-17-3 +hashblocks_sha512 58 1064 8605 +213+40+40+97+31-20-36+0-49-25-30+0-40+41-10 +hashblocks_sha512 58 1597 12905 +213+39+72+3-29+44-5+42+10+0-42-10-46-10-46 +hashblocks_sha512 58 2396 19275 +73+109-3-3-9-18+85+3-32+0+62+0-32+0-32 +hashblocks_sha512 58 3595 29937 +146+40+128+0-49+72+48-61-51+91-51-61+57-34-67 +hashblocks_sha512 58 5393 44863 +17+0+1-91-36-30+31-50-12-136+55+14+0+23-19 +hashblocks_sha512 58 8090 67275 +57-29+58-23-23+2+8-126+35-56+0+84+53-69-32 +hashblocks_sha512 58 12136 100292 -12+29-97-130+134-101+8+66-25+101-39+7+0-82+119 +hashblocks_sha512 58 18205 151437 +249+0+117-52+86-152+52+51-50-105-17+755-18+245-77 +hashblocks_sha512 58 27308 227029 +273+12-292-135+0+66+78+191+34+107-76-98-197-46-151 +hashblocks_sha512 58 40963 344026 -117+24-318+16-136+122-44+702+202-225+0-138-212+4+166 +hashblocks_sha512 58 61445 515726 +44-146-138-52-224-132+548+144+954+188+61+123-47+0-211 +hashblocks_sha512 59 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 59 0 50 +421+42+3+4+21+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 59 1 51 +38+0+0-1+0-3+0-2-2+0-1-1-1+24+0 +hashblocks_sha512 59 2 50 +2+1+1+0+1+1+0+0-2+1-1+1+0+0+0 +hashblocks_sha512 59 4 50 +3+3+0+1+1+1+0+1+1+0+0+0+0+0+0 +hashblocks_sha512 59 7 51 +2+0+0-1+0+0+22+0+0+0-2+0-1-1-1 +hashblocks_sha512 59 11 51 +1-1+0-1+0+0-1+0+2+0+1+3+0-1-1 +hashblocks_sha512 59 17 51 +2+2+0-1+0+0-2+0+1+2+0-1-1-1-1 +hashblocks_sha512 59 26 50 +2+2+0+1+1+0+2+0+0+0-1+1+0+0+0 +hashblocks_sha512 59 40 50 +34+1+3+0+1+1-1-1-1+1+0+0+0+0+0 +hashblocks_sha512 59 61 50 +32-1+0+1+1+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 59 92 50 +31+0+1+0+1+1-1-1-1+1+0+0+0+0+0 +hashblocks_sha512 59 139 956 +849+111+61+2+2+0-2-3+0+2-6-1+5-3+0 +hashblocks_sha512 59 209 957 +87+35+10+6-2-2+4-6-7+1+1-2-8+0-1 +hashblocks_sha512 59 314 1840 +165+32+0+1-11+1+4-5+6-8+6-1-4+0-2 +hashblocks_sha512 59 472 2728 +127+34+24-2-13+8-2+1-9+6-2+0-2+1-9 +hashblocks_sha512 59 709 4498 +159+20+4-9+12+0-1+3-6+3-13+0-1+3-6 +hashblocks_sha512 59 1064 7150 +177+59+8+0+34+3-1-1-2-6+7+3-1-1-2 +hashblocks_sha512 59 1597 10727 +128+32+0+17-8-16-16+11-23-25+11+7+0+12-23 +hashblocks_sha512 59 2396 16051 +143+4-8+0+12-10-18-4+21+5+10-10-18-4+22 +hashblocks_sha512 59 3595 24915 +122+8-3-16-7+20-9+5-7-6+6+10+7+0-7 +hashblocks_sha512 59 5393 37318 +150-1-17+6-8+5+46+7-118-7-17-68+51+6+0 +hashblocks_sha512 59 8090 55964 +191+52+29-25-73+0-21-140-147+4-56+17-147+826+27 +hashblocks_sha512 59 12136 83437 +137+26+10+10-38+0-38+0-38+0-38+0-38+0-38 +hashblocks_sha512 59 18205 125964 +208-4+9-2-67-3-55+31-3+0+21+69+21+71-22 +hashblocks_sha512 59 27308 188855 +252-65+1-39+0-50+0-58+0-50+0-58+0-58+0 +hashblocks_sha512 59 40963 285240 +928+123-336-178+112+200-40+106-76-58+178-50+0-44+228 +hashblocks_sha512 59 61445 427508 +412+224+104+103+311+974-52+0+42-162-136-28-2-168-342 +hashblocks_sha512 60 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 60 0 52 +155+67+48-1+0-1+0-1+0-1+0-1+0-1+0 +hashblocks_sha512 60 1 52 +60+1-1+0+0-1-2+2+1-1+0-1+0-1+0 +hashblocks_sha512 60 2 52 +2+2-2+1+1+1-2+1-3+1-1+0-1+0-1 +hashblocks_sha512 60 4 52 +2+2-2+1+1+1-2+1-3+1-1+0-1+0-1 +hashblocks_sha512 60 7 52 +3+1+0-1+1+1-2-2-2+0-1+0-1+0-1 +hashblocks_sha512 60 11 52 +3+1+0-1+1+1-2+1-3+1-1+0-1+0-1 +hashblocks_sha512 60 17 52 +3+1+0-1+1+1-2-2-2+0-1+0-1+0-1 +hashblocks_sha512 60 26 52 +1+2-2+2+1+1-2+1-3+1-1+0-1+0-1 +hashblocks_sha512 60 40 52 +39+2-1-1-2+1+0+1+0-1+0-1+0-1+0 +hashblocks_sha512 60 61 52 +38+2-2+2-2+0-1-2+0-1+0-1+0-1+0 +hashblocks_sha512 60 92 52 +3+1+0-1+1+1-2+1-3+1-1+0-1+0-1 +hashblocks_sha512 60 139 1141 +2307+161+88+1-14+0+4+0-4+0-14-7-7-7-7 +hashblocks_sha512 60 209 1130 +254+24+24+16+72-13+0+9+0+3-10-6-6-6-6 +hashblocks_sha512 60 314 2189 +118+75+8+9-14+74+0-8+0-8+0-8+1-21-12 +hashblocks_sha512 60 472 3222 +151+48+16-8+62+0-22+12+12+12-6-6-6-6-6 +hashblocks_sha512 60 709 5296 +182+119+50+49+26+35+25+0+0+0+0+0+0+0+0 +hashblocks_sha512 60 1064 8470 +187+18-2-6-5-11+9-15-30+23+0+0+0+0+0 +hashblocks_sha512 60 1597 12686 +164+39-33-9-34-27+102+0+58-4+27-27+57-57+58 +hashblocks_sha512 60 2396 19003 +72-12-6+114-43+0+16-56-18+51+6-48-63+5+5 +hashblocks_sha512 60 3595 29504 +78-20+24-88-122+50+0-69-74-33-68+0+67+5+9 +hashblocks_sha512 60 5393 44179 +156+117-23+0+170+7-42-51+65+25-6-79+23-35-17 +hashblocks_sha512 60 8090 66281 +2+66+684-104-3-4+94+17+104+75-31+0-75-145-38 +hashblocks_sha512 60 12136 98753 +33-22+211-50+122+245-46-98+0-98+0-98+0-98+0 +hashblocks_sha512 60 18205 149252 +22+0+9+112-187-171+4+4-31+106-125+10-76-182-178 +hashblocks_sha512 60 27308 223762 +399+17-188-46-169-84-118-147+0+1272+882+168-104+171+232 +hashblocks_sha512 60 40963 339007 +411+85-193-384-254-70-320+76+33+0-97-252+47+93+227 +hashblocks_sha512 60 61445 508459 +329-488+98-164+113+425+289+112-150-63-103-54+0-53+384 +hashblocks_sha512 61 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 61 0 50 +1629+88+44+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 61 1 51 +88+1-1+1+0+2+3+1-1-1+0-1-1-1-1 +hashblocks_sha512 61 2 50 +3+0+0+0+0+3+1+1+0+0+0+0+0+0+0 +hashblocks_sha512 61 4 50 +3+0+0+0+0+0+1+1+0+0+0+0+0+0+0 +hashblocks_sha512 61 7 50 +4+0+1-1+1+0-2+0+0+0+0+0+0+0+0 +hashblocks_sha512 61 11 50 +0+1+1+0-1-1-1-1-1+1+0+0+0+0+0 +hashblocks_sha512 61 17 50 +4+0+1-1+0-1-1-1-1+1+0+0+0+0+0 +hashblocks_sha512 61 26 50 +3+1+0-1+2+1+0-1+0+0+0+0+0+0+0 +hashblocks_sha512 61 40 50 +24-1-1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 61 61 50 +26-1+0-1-1+0-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 61 92 50 +26-1+0-1+18-1-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 61 139 968 +776+119+52+6+8-1+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 61 209 969 +71+22+13+3+5-4+0-3+0+0-6+0-6+0-6 +hashblocks_sha512 61 314 1869 +116+62+18+6+6-1-1+2+0-5-1+2+0-5-1 +hashblocks_sha512 61 472 2764 +136+34+23+25+4+4+8+0+0+0+0+0+0+0+0 +hashblocks_sha512 61 709 4564 +220+37+21+8+5+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 61 1064 7264 +178+38+26+19+5+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 61 1597 10885 +119+61+12+0+20-5-4+21-3-4+19-5-4-3+19 +hashblocks_sha512 61 2396 16305 +134+1+0-2+0+0-2-25+0+0-2+0+0-2-1 +hashblocks_sha512 61 3595 25304 +131-1+0-1-1-1-1-1-1+0+2+3+3+4+1 +hashblocks_sha512 61 5393 37906 +137-3+27+82+2-1+0-1-3+27+48+2+0+0+0 +hashblocks_sha512 61 8090 56864 +87+61+0-30+14+14-10-28+14-10-28+14+16-12-28 +hashblocks_sha512 61 12136 84788 +123+8+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 61 18205 127992 +134+0+2+9+0-2+0-1+2+9+0+784+36-7-3 +hashblocks_sha512 61 27308 191890 +250+9-4-2+0+0+0-2+0+1+0+1+0+1+0 +hashblocks_sha512 61 40963 288290 +372+8+24+6-34+0-8-24-6+0-26+760+7-36-8 +hashblocks_sha512 61 61445 432292 +226+12+2+0+0+0+4+1+0+0+4-1+0+846+0 +hashblocks_sha512 62 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 62 0 52 +569+47+24-1-2+1-1+0-1+0-1+0-1+0-1 +hashblocks_sha512 62 1 51 +63+24-1-1+0-1+2+0+1+0+1+0+1+0+1 +hashblocks_sha512 62 2 51 +3+0+1+0-1+0+2-2+2+0+1+0+1+0+1 +hashblocks_sha512 62 4 51 +3-1-1+0-1+2+5-1-1+1+0+1+0+1+0 +hashblocks_sha512 62 7 52 +3-1-2-1-2+0+0+0+0+0-1+0-1+0-1 +hashblocks_sha512 62 11 51 +3+0+1+0-1+0+2-2+2+0+1+0+1+0+1 +hashblocks_sha512 62 17 51 +3+0+1+0-1+0+2-2+2+0+1+0+1+0+1 +hashblocks_sha512 62 26 51 +3+0+1+0-1+0+2-2+2+0+1+0+1+0+1 +hashblocks_sha512 62 40 52 +31-2+0-1+1-1+0+0-1+0-1+0-1+0-1 +hashblocks_sha512 62 61 51 +33-1-1+1-1-1-1-1+1+0+1+0+1+0+1 +hashblocks_sha512 62 92 52 +2-1-2+0+1+1-2+1+1+0-1+0-1+0-1 +hashblocks_sha512 62 139 1291 +1290+169+82+46-2+0+0+1-1+1+0+0+0+0+0 +hashblocks_sha512 62 209 1292 +209+80+63+48+12+2+0-2-1-1-5-2+0-5+1 +hashblocks_sha512 62 314 2498 +304+144+40+30+1+5-1+0-2+0-2+0-2+0-2 +hashblocks_sha512 62 472 3704 +355+82+29+7+0+0+4+0+0+0+0+0+0+0+0 +hashblocks_sha512 62 709 6112 +476+46+10+9+13+4+7-1-6+0+0+0+0+0+0 +hashblocks_sha512 62 1064 9728 +464+53+54+43+36-3-2+2+3+0+0+0+0+0+0 +hashblocks_sha512 62 1597 14621 +467+27+31+50+2+7-39+0-4-1-1-45+0-4-1 +hashblocks_sha512 62 2396 21850 +402+3+10+2-4-3+1-2-2-1+1+0+0-2-2 +hashblocks_sha512 62 3595 34019 +364-79-102-109-115+7+9+5+0-116+2+6-119+1+0 +hashblocks_sha512 62 5393 50888 +374-7+32-22-91-45+26-46+107-49+0+107-49+0+110 +hashblocks_sha512 62 8090 76207 +330+0+1-3-1-6+0-12+0-12+0-12+0-12+0 +hashblocks_sha512 62 12136 113566 +450+29-4+7-7+0+0+0+0+0+0+0+1+836+152 +hashblocks_sha512 62 18205 171832 +138-315+107-355+105+0+0+0+1+97+0+0+0+0+0 +hashblocks_sha512 62 27308 257538 +524-197+14+10+0+8+0+1-97+0+0+0+0+0+1 +hashblocks_sha512 62 40963 389340 +323+27-160-295+17-20-4+0-20+36-6+42+0+4+24 +hashblocks_sha512 62 61445 583680 +1526+134+19+156-107-114+21-33-21-93+0+57-107+754-86 +hashblocks_sha512 63 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 63 0 51 +408+70+48+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 63 1 51 +71+51+1+4+4+0+0-1+0+0+0+0+0+0+0 +hashblocks_sha512 63 2 51 +2+0-1-1-1-2+0+3+3+5+1+0+0+0+0 +hashblocks_sha512 63 4 51 +2+0-1-2+2-1+4-2-1+1+1+0+0+0+0 +hashblocks_sha512 63 7 51 +2+0-1-2+2+0-1+0+1+0+0+0+0+0+0 +hashblocks_sha512 63 11 51 +2-1-1+1+2-1+2+0-2-1-1+0+0+0+0 +hashblocks_sha512 63 17 51 +2-1-1+0-1+1+0+0-1+0-1+0+0+0+0 +hashblocks_sha512 63 26 51 +2+0-1-1-1+0+1+3+5+1+0+0+0+0+0 +hashblocks_sha512 63 40 51 +33-1+0+0-1-2-1-1-1-1+0+0+0+0+0 +hashblocks_sha512 63 61 51 +34-1+0-1+0+3+3+3+5+1+0+0+0+0+0 +hashblocks_sha512 63 92 51 +2+0-1-1-1-1-1-2-1+0+0+0+0+0+0 +hashblocks_sha512 63 139 1297 +932+167+57+62+26-1+3+0-3+0-1-2-1+0-1 +hashblocks_sha512 63 209 1300 +286+111+72+65+35+2+4-1-1-3-5+0+0+0+0 +hashblocks_sha512 63 314 2520 +286+169+70+58+4+2-1-3+0+0+0+0+0+0+0 +hashblocks_sha512 63 472 3742 +343+87+33+13+5+0+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 63 709 6192 +485+72+6+4+0+2+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 63 1064 9864 +431+86+30+28+21-2+0+0+0+0+26+0+0+0+0 +hashblocks_sha512 63 1597 14806 +400+20+28+22-24+5+1-27+0-25-1+0-25-1+0 +hashblocks_sha512 63 2396 22150 +408+13+8+0+0+0+0+1+1-2-2+0+0+0+0 +hashblocks_sha512 63 3595 34390 +449+9+5+0+0+0+0+0+0+0+1+1+1+0-3 +hashblocks_sha512 63 5393 51553 +459+89-21-1-2+2+0-25+0+0+3-1+3-1-24 +hashblocks_sha512 63 8090 77289 +458+9+6-3-4+0-4+0-4+0-4+0-4+0-4 +hashblocks_sha512 63 12136 115232 +452+7+6-2-2+0-2+0-2+0-2+0+1000+43+12 +hashblocks_sha512 63 18205 173991 +672+11+9-3+1-1+2-3-2+0-1-4+1+0-1 +hashblocks_sha512 63 27308 260906 +623+13+1+0-4+0-2+0-4+2+0+2-4+0-2 +hashblocks_sha512 63 40963 392930 +635-47+45+0-2-4-15+31+0-4+3+28+8-6-4 +hashblocks_sha512 63 61445 589142 +1586+60-11-11-13-22-24-20-24+7+99+10+0+1061+262 +hash_sha512 selected implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 selected 0 817 +4361+160+26-4-5+67-1+0+14+2-9-2-5+0-10 +hash_sha512 selected 1 826 +2604+67+8-1-2+63-7-8-4+1+0+4+0+4+0 +hash_sha512 selected 2 828 +76+148+9+2+4-3-9-5-1-6+0-3+3-4+64 +hash_sha512 selected 4 829 +54+10+3+2+0+41-2-1-11+1-8-4-4-10+1 +hash_sha512 selected 7 823 +108+6+6+12+19+0+3+0+0-5+6-3-7-3-5 +hash_sha512 selected 11 823 +58+14+5+0-1+0+0-9+2-4+6-5+5-7+2 +hash_sha512 selected 17 824 +50+127+8+2+9+0-4+4+0-2-4-6-3+0+1 +hash_sha512 selected 26 824 +105+2+8+14+11+1+0+6+0-7+0-7-2-5-2 +hash_sha512 selected 40 825 +63+5+8+64+4-5+1-3-3-3+0-15-2-6+1 +hash_sha512 selected 61 827 +101+2+5+62+8+8+54-1-6-3-8-5-3-16+0 +hash_sha512 selected 92 830 +91+34+34+63+0-4-4-7-3-5+4+1-9+0-4 +hash_sha512 selected 139 1539 +118+123+41+24+5-1+5-2-5-2-1+2-2+0-3 +hash_sha512 selected 209 1545 +150+39+5-1-6+60+0-1+5-3-4-2+0+53-8 +hash_sha512 selected 314 2232 +135+62+108+6+2-10+0-2-8-8-18+11-8-29+0 +hash_sha512 selected 472 2923 +143+63+6+0-16-19-12-9-7+15-5+15-2+10+13 +hash_sha512 selected 709 4278 +219+170+39+5+5+20-17+17+0-2-8-1-14-13-17 +hash_sha512 selected 1064 6302 +341+125+42+64+10-14+10-14+10-6+0-6+0-6+0 +hash_sha512 selected 1597 9037 +304+76+37+20+17-36-23-36+43-22-10+36+0-44-20 +hash_sha512 selected 2396 13175 +356+49+19+63-45-22+0-41-48+0-41-48-46+41+13 +hash_sha512 selected 3595 20026 +348+44+40-32+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 5393 29540 +332+28-22+74-11+0+0+0+0+0-6-6+45+58-11 +hash_sha512 selected 8090 43922 +490+21+10-15-138+83-66-101+32-103+29-74-48+56+0 +hash_sha512 selected 12136 65082 +336+224-16-42+0+126+100-77-5-77+93+24-76-77+39 +hash_sha512 selected 18205 97660 +371-21-16-60-60+38+48-50+40-60+914+369+48-28+0 +hash_sha512 selected 27308 145929 +1179+108+0-34+150+78-47+73-133-30+89-36+25-29-21 +hash_sha512 selected 40963 220218 +409-95+16-36+170-46+76-72-86+0+24+100-158+14-56 +hash_sha512 selected 61445 329787 +1517-51-9-93+31-45+155+21-225+107+47-15+0+40-129 +hash_sha512 0 implementation blocksplusavx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 0 0 820 +783+82+32+0+2+2-5-5+15-7-2-1-6+0-5 +hash_sha512 0 1 814 +425+114+43+6-1-5-5+1+21+0-5-1-2+0-3 +hash_sha512 0 2 816 +82+48+15+9+5+2-2-3+1-1-4-5+0-1-1 +hash_sha512 0 4 814 +67+45+14+65+7+6-1-5-6+0-3-2+52-1+0 +hash_sha512 0 7 817 +85+38+7+8-2+3-4+36+1-1-7+0-3-4-3 +hash_sha512 0 11 846 +66+146+31+0+5+3-2-3-4-11+1-7-3-2+1 +hash_sha512 0 17 846 +73+26+9+3+1+2-1-6-4-8+0-7+0+1+0 +hash_sha512 0 26 846 +75+30+60+0+1-2+3-6-1-2+0+1-4-2-1 +hash_sha512 0 40 849 +67+32+25+14+1+0-7-7-5+0-4+3-5-5-1 +hash_sha512 0 61 846 +98+11+66+3-1+0+54-4-4+4-4+0-1+0-3 +hash_sha512 0 92 846 +62+29+66+4+0-3+55-1-3+1+4-1-4+0+0 +hash_sha512 0 139 1557 +146+51+12+0-3-3-10+3+0+3-10-3-12+16+63 +hash_sha512 0 209 1555 +104+34+10+42+0-2-14+6-5-9-12+0-2+58+4 +hash_sha512 0 314 2258 +160+48-10+0+30-14+12-4-18-21-12+6+10+60-9 +hash_sha512 0 472 2939 +233+31+25-26+11+20-5-5-5-5-5+0+69+1-6 +hash_sha512 0 709 4293 +220+110+107+2-22-19-13-24+12-1+0+0+0+0-3 +hash_sha512 0 1064 6324 +234+222+110+17+36-34+10-10+2-10+0-10+0-10+0 +hash_sha512 0 1597 9049 +289+168+88+78+76-1-16-22-8+18+0+50-26-16-29 +hash_sha512 0 2396 13169 +358+85+0+33+0-40+5+0-18+1-10-18+55-12-18 +hash_sha512 0 3595 20048 +353+79-11+43+0-19+10+43+0-8+0-8+0-8+0 +hash_sha512 0 5393 29554 +377+2+27-22+12+12+966+17-45+0+0+0+0+0+0 +hash_sha512 0 8090 43887 +228+108-17-56+0+28-89+71+65-8-46+67-37-13+4 +hash_sha512 0 12136 65024 +205+152-3-68+0-43+41-44-4+3+49+120-42-4+3 +hash_sha512 0 18205 97571 +324-38+47+93-33+144-54+21+51+65-12-80+0-80-95 +hash_sha512 0 27308 145869 +801+35+33+124+11+53-4+5-24+0-153-36-156-134-6 +hash_sha512 0 40963 220159 +195+0+931-8+93-118-121-149-133+111-65+63-161+25+79 +hash_sha512 0 61445 329600 +871-48+112-14-150-52-48-76+134-110+0+52+1137+93+46 +hash_sha512 1 implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 1 0 820 +534+53+46-2+9+13-3+0+15-4-8+0-8-1-7 +hash_sha512 1 1 825 +210+182+84+108+2-12+2-7-12+1-10+0-12+0-11 +hash_sha512 1 2 824 +85+59+34+4+10-4-4-8-11-6-6+1-8+0+3 +hash_sha512 1 4 824 +76+35+35+24-5-4-1-8-11+0-3+1+3+1-1 +hash_sha512 1 7 829 +52+2+5-1+1+0+0-7+1-14-1+0-10+2-4 +hash_sha512 1 11 824 +41+52+30+1+1+0+1-2-10-4-11+58-16-2-15 +hash_sha512 1 17 824 +65+35+7+2+7+0-4+0-6-3-1-4+2-1-1 +hash_sha512 1 26 828 +39+1+7+65-1-7+60+0-7-4-3-4+1-9+1 +hash_sha512 1 40 825 +94+32+36+35+9-7-2-5-6-4+0-11+1-9+1 +hash_sha512 1 61 825 +45+4+7+5+13+5-6-6+1-9-1-10+0-14-1 +hash_sha512 1 92 829 +79+20+11+5+14+0-1-6-11-7-9-3-9+1+49 +hash_sha512 1 139 1541 +152+129+51+31+2-3-5-2-2+1-8+0-3+1-1 +hash_sha512 1 209 1543 +123+126+54+0+0+3-6+8+0-7-6-3-1-4+59 +hash_sha512 1 314 2225 +196+87+37+4+14+3-2+0+0-11-8-16-8-7-7 +hash_sha512 1 472 2932 +235+74+62-5+8-3-1+2+2-3+0-3-15-23+12 +hash_sha512 1 709 4286 +160+83+43-6+4-14-9+0+24+0-10+2+35-15-11 +hash_sha512 1 1064 6322 +317+138+88+17-18-7-27+1-22+6-22-27+0+47-13 +hash_sha512 1 1597 9016 +353+185+111+54+62+24+0-18+2-9-8-6-26+0-5 +hash_sha512 1 2396 13124 +371+109+99+32-25+0+4+35+0-33-18-4-58+19-19 +hash_sha512 1 3595 20053 +425+18+11-47-4-7-7+143-39-6+3+3+0-1+125 +hash_sha512 1 5393 29488 +378+259+55+50+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 8090 43871 +235+197+60+66+0-83+50-4-23+0-74+122-20-121+67 +hash_sha512 1 12136 65114 +296+23+115+29+75+4-14+58-14-14-14+0-116-42-42 +hash_sha512 1 18205 97676 +509+43+0-82-96+14+20+12-150-76+20+12-150-76-12 +hash_sha512 1 27308 146170 +1123+226+74+46-100-22+17-5+75+10+0-78-1-31-7 +hash_sha512 1 40963 220212 +346+43+30+94-31+0-46+38+62-116-76+32-12-8-52 +hash_sha512 1 61445 329792 +363+90+1030-138-97-62+79+9-50-58-100+16+0-238+4 +hash_sha512 2 implementation blocksplusavx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 2 0 814 +1806+86+4+4+3+0+6-1+19-3-5-9-1-11-1 +hash_sha512 2 1 816 +459+67+12+65-4-3+2+3-5-5-6+0-6+0-6 +hash_sha512 2 2 819 +59+39+8+8+9+2+1-5-7-5+0-7-8-4-4 +hash_sha512 2 4 814 +64+42+38+89+11+8+0+1-2-3-3+0+0-4-2 +hash_sha512 2 7 816 +70+10+10+4-2+1+0-4-3-7+1-4-5-10+1 +hash_sha512 2 11 849 +70+25+26+60+59+64-5+0+0-3-6-5+3-5-5 +hash_sha512 2 17 843 +107+42+12+3+64+0-3+1-1-5-5-4-8-9+3 +hash_sha512 2 26 847 +39+41+36+20+0-2+2-1-2-6+62-2-3-5+9 +hash_sha512 2 40 849 +76+34+4+56+0+1+0-6+1-4-1-4-3-3+1 +hash_sha512 2 61 847 +89+4+64+0+0-1+3-1-2+1-3+0-5-1-8 +hash_sha512 2 92 846 +59+134+6+3+8+4-3+7-1-1+0-4+0+0+0 +hash_sha512 2 139 1554 +270+75+14+6+0-4-5+2-5-4-4+6-4+6-4 +hash_sha512 2 209 1556 +57+125+39-1-5+0-7+8+4+0-9+60+0+4-17 +hash_sha512 2 314 2235 +121+118+53+32+6-2+0-8-2-14+89+22-13+0-11 +hash_sha512 2 472 2914 +192+87+42+85+4+1-12-14+6-13+0+0+0+0+0 +hash_sha512 2 709 4279 +247+95+63+19+10-2+9-14+0+4-9-25-25-25-25 +hash_sha512 2 1064 6307 +338+174+84+45+12-3+8+26-18+0-18+0-18-20-9 +hash_sha512 2 1597 9027 +424+234+26+0+4+0-14+0-3+102+13+0+4+0-14 +hash_sha512 2 2396 13170 +378+49-27-13+0+36+26-47+21+26-58-4+63-39-4 +hash_sha512 2 3595 20072 +224-76-76+0-76+5+15-33+15-33+15-33+15-33+15 +hash_sha512 2 5393 29562 +425-2-42+22+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 2 8090 43889 +246+255+40-18+0-53+772-23-14+88-111+19-78-47+8 +hash_sha512 2 12136 65107 +369+20+130-80-24-47-88+6-24+33+12-22+9-19+0 +hash_sha512 2 18205 97735 +267+110+13-28-57-55+0-88+10+7-88+9-87+26-88 +hash_sha512 2 27308 145936 +750+0+49+138+66+95-53-58+0+47-31-41-31+21-31 +hash_sha512 2 40963 220163 +408+23-37+27-11+856+0+61-91-29-243+39+50-160-113 +hash_sha512 2 61445 329706 +681-67-100-128+254+56-104+0+30-52-118+91-13+0+1269 +hash_sha512 3 implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 3 0 818 +765+57+4+2+1-7-1-1+23+2-7-3-4-3+0 +hash_sha512 3 1 823 +326+16+16+12+7+0-2-9+9-7+0-8-1-2+1 +hash_sha512 3 2 824 +122+17+7+7+4+1-5-10+5-4+0-3-4-2-2 +hash_sha512 3 4 821 +141+43+11+4+0+63-5-4-4-5-8+3+2-7-9 +hash_sha512 3 7 825 +107+77+10+4+1-3-3-4+2+2-2+0-3-2-1 +hash_sha512 3 11 823 +50+35+9+3+67+2-7-2-2+1-7+0+0-2+0 +hash_sha512 3 17 821 +57+15+73+12+1+5+0-3+0-6-5-4-8-11-2 +hash_sha512 3 26 821 +105+20+14+66+1+0+3-3-5-4-5-8-7-2+2 +hash_sha512 3 40 823 +94+35+13+2+2+2+2-5-2+0-1-3-2-2-8 +hash_sha512 3 61 823 +103+9+6+4+7+5-2-6-2+1-6+0-6-4-8 +hash_sha512 3 92 819 +82+60+20+10+8+1-3-3-1+0-1-3-1+0-5 +hash_sha512 3 139 1540 +259+69+7-1-6+3-4+13+1+72-3-1+0-4-10 +hash_sha512 3 209 1550 +86+14+65+2-4-15+0-10+5-16+56-5-1+7-5 +hash_sha512 3 314 2225 +230+95+20+8-12-9-8-1+16+7-15-8-9+0+5 +hash_sha512 3 472 2920 +146+95+55+2-10-18+4-1+11+11-10+0-10-13-8 +hash_sha512 3 709 4283 +257+96+41+22-7+62-5+0-12+0-12+0-12+0-12 +hash_sha512 3 1064 6305 +323+168+94+16-6+17-8+0-14+0-14+0-14-2-12 +hash_sha512 3 1597 9028 +281+204+54-15-12+0+48-6+5-16-16-16-15+7+98 +hash_sha512 3 2396 13131 +339+198+84+0-18+43-25-29+14-24-29+6-18+18-8 +hash_sha512 3 3595 20026 +444+115+37+0+0+0+0+0+0+0+0+0+0+0+86 +hash_sha512 3 5393 29520 +503+109+48+38+48+0+0+0+0+59+79+0+0+0+0 +hash_sha512 3 8090 43867 +297+83+172-25-15+26-23+59+59-34-19-24+1-2+0 +hash_sha512 3 12136 65016 +327+310+136+78+0-38+77-3+59-9-38-38+20-38-38 +hash_sha512 3 18205 97580 +246+139-87+10-24+70+63-71-30+117+0+10-12-31-32 +hash_sha512 3 27308 146072 +730-20-92+851+870-7-98+0-66+60-60+28+8-62+66 +hash_sha512 3 40963 220196 +510+15+141+30-66+70-26-66+28-106+0-6-30+90-84 +hash_sha512 3 61445 329746 +417-19+32+0+1232-106-43-11-68+5+36+105-124-108+0 +hash_sha512 4 implementation blocksplusavx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 4 0 814 +712+71+12+11+5+4+0-2+13-4-8-2+0+0+0 +hash_sha512 4 1 819 +336+43+28+2+0-3-5-3+12+0-2+0-2+0-2 +hash_sha512 4 2 821 +101+12+11+5-1+57-11-10-1-4+61-9+0-8+0 +hash_sha512 4 4 818 +90+103+10+7+0+0+0-10-5+0-1+0-1-6-1 +hash_sha512 4 7 816 +108+10+12+7-1-3-2-6+0-3+1-3+1-3+1 +hash_sha512 4 11 817 +93+45+9+2-2+0-7-6-7+1+0-1-6+1+0 +hash_sha512 4 17 816 +82+16+7+5+3-3-8-6+0+3-6-3-2+3-6 +hash_sha512 4 26 815 +106+5+66+6+8+3-3-4+0-2+0-2+0-2+0 +hash_sha512 4 40 821 +90+38+12+61+0+0-2-6-2+2-2+2-2+2-2 +hash_sha512 4 61 821 +43+16+11+3+0-2-4-6-2+2-2+2-2+2-2 +hash_sha512 4 92 822 +70+36+19+3+0-2-2-5-2-2+7+1-1+53-1 +hash_sha512 4 139 1538 +166+43+35-1-8+4-6-14-4-7+4+0+3+6-1 +hash_sha512 4 209 1546 +195+21+8-6-11+59+1-3+0-11+6-8-4+5-1 +hash_sha512 4 314 2238 +295+35+0-12-8+3-17-1+70+12-7+42-2-10+11 +hash_sha512 4 472 2911 +170+57+16-5-8-12-4+0+74+15-11+14-2+2-2 +hash_sha512 4 709 4341 +89+27+26+19+6+26-7-24+32+0-10-8-25-29-11 +hash_sha512 4 1064 6316 +225+131+108+0+20+22-10+7-12-8-12-8-12-8+106 +hash_sha512 4 1597 9028 +280+96+63+10-13-19+8+30-23-22-15-22+0-23+0 +hash_sha512 4 2396 13183 +280+52+28-22+5-36-16+2+0-25+8-36-54+14-41 +hash_sha512 4 3595 20003 +420+133+0-2+27-26+43-16-23+54-13+14-23+32-13 +hash_sha512 4 5393 29522 +281-18-7-1+19+0+38-1+87-1+19-1+19-1+19 +hash_sha512 4 8090 43854 +260-19+36-6+31-15-46+83+31+19-27-64+83-27+0 +hash_sha512 4 12136 65031 +234+0+1063+34+41-35-53-11+11-87-11+5-11+11-87 +hash_sha512 4 18205 97627 +616+70-51-97+0-2+14-86+51-15-85+71+14-87+41 +hash_sha512 4 27308 145902 +798+30+17+59+37-75-96+15-72-146-139+9-126+0-24 +hash_sha512 4 40963 221103 +456+0+81+37+131-9+51+175+854-916-931-991-1001-1065-999 +hash_sha512 4 61445 329680 +609-87+62+14-188+50-117-183+0-194-194+40+5+99-170 +hash_sha512 5 implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 5 0 820 +628+60+25-5-1-7+0+3+16-6-3+1+0-6-2 +hash_sha512 5 1 826 +374+97+2+60-1-6-6+0+2-2+63-4+0-10+2 +hash_sha512 5 2 828 +50+68+7+2+0-1-8-1-6-2+66-4+2-7+2 +hash_sha512 5 4 826 +85+6+5+2+3-6+0-4-8-4-6+3-1+0-9 +hash_sha512 5 7 829 +39-1+4+68+7-5-9-6+3+2+0-3-2-11+1 +hash_sha512 5 11 823 +44+34+9+3-1-4-2-11+2-4+7-5+0-4+4 +hash_sha512 5 17 825 +55+8+72+6+0+2-2-2+4-2-4+4-1-1-2 +hash_sha512 5 26 825 +97+0+5+9+12+57-4-5-2+1+0+0+0+0-5 +hash_sha512 5 40 820 +100+35+12+7+7+0-1-4+0+0-1+3-5+6-2 +hash_sha512 5 61 828 +58+7+68+0+1-2-3+2+0-7-7-5-2+47-2 +hash_sha512 5 92 826 +104+12+12+8+0+6+0+0+0-3-1+0-2+5+1 +hash_sha512 5 139 1544 +64+49-1-7-8-17-2+59+1-5-6+60+65+3+0 +hash_sha512 5 209 1542 +109+21+8+0-5+6+69-4+0-3-13+0+11-4-4 +hash_sha512 5 314 2236 +195+116+44+23-22+5-6-4-5-3-6+0-9+51+45 +hash_sha512 5 472 2937 +145+82+24-31-13-25+4-4-3+0+3-2+0-2+6 +hash_sha512 5 709 4285 +182+66+41+13+0+1+5+2-5-7-10-2-3-6-11 +hash_sha512 5 1064 6288 +324+153+120+38+46+36+7+0+0+0+0+0+0+0+0 +hash_sha512 5 1597 9018 +349+171+77+14+34-24+0+0+0+0+0+11+102-1-1 +hash_sha512 5 2396 13152 +332+137+7+9-42+0-18-31-24-16-10+15+22-46+68 +hash_sha512 5 3595 20030 +381+47-34-11+28+28+28+28+62-17+0+0+0+0+0 +hash_sha512 5 5393 29531 +299-43+83+16-33+0-44+0-34+0-34+0-34+6-9 +hash_sha512 5 8090 43843 +284+25+98+60+0-59+24+0-83+128-72-23-15-123+24 +hash_sha512 5 12136 65108 +272+198+38+0+19-110-92-92-28-39-18-18+51+15+16 +hash_sha512 5 18205 97594 +346+168-20-105+23-86+0+46+127-47-46+12-46-46+63 +hash_sha512 5 27308 146117 +623+76-116-115-147-200-271-189+1637+632+0+14+45-44+94 +hash_sha512 5 40963 221174 +410-33+27+0-34+82-15+100+167-147+88-66+16-66-38 +hash_sha512 5 61445 329678 +500-12-133-32+20-62+942+108+42-6+54+0+108-57-142 +hash_sha512 6 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 6 0 963 +919+76+14-4+3+1-5+0+0+2-1-7+1-2-3 +hash_sha512 6 1 965 +465+54+9+0-2-5-3-3-3+6+0+5-6+5+0 +hash_sha512 6 2 969 +123+55+8+4-8-2-3-7+0-4+0-4+0-4+0 +hash_sha512 6 4 969 +103+209+47+3-5-10-7-3+1-4+0-5+1-4+0 +hash_sha512 6 7 970 +142+10+16+1-5-6+1+4-2+0-7+0-10-1-7 +hash_sha512 6 11 996 +70+65+18-8-4-12+49-2+2-9+7-2+0-9+2 +hash_sha512 6 17 993 +75+26+18-1-8-6-2+4-9+3-7-1+0+7+2 +hash_sha512 6 26 993 +56+71+3+3-4-9-16+0-2+0-4+9+2-9+3 +hash_sha512 6 40 990 +90+40+10-1+2-1-3-2+8-1+2+0+6-4-1 +hash_sha512 6 61 988 +69+43+47+1-2+0-3+6-4+1-3-1-3+3-3 +hash_sha512 6 92 993 +56+42+6+4-6-10+2-4+0-2-1+0-2+0+2 +hash_sha512 6 139 1715 +128+126-12+0-13-15-9-10-15+32+38-9+31+25+36 +hash_sha512 6 209 1719 +141+0-8-11-20-15-4-15+20+11+22+21+31-7+16 +hash_sha512 6 314 2422 +190+66+64-34-32+6+4+1+0+0+0+0+0+0+0 +hash_sha512 6 472 3113 +222+122+0-29+44+18-1-1-5-4-9+4+1-2+2 +hash_sha512 6 709 4486 +246+50-22+23+41+26+71-15+3-45+0-15-18-24-4 +hash_sha512 6 1064 6538 +320+92+95+1+9+61-9+0-32+44-8-8-8-8-8 +hash_sha512 6 1597 9294 +348+86-29+22+0-66-41+15+35-73-76+16-54+0-14 +hash_sha512 6 2396 13389 +372-31+41+36+0+6+31-5-42+3-4-89+9-5-89 +hash_sha512 6 3595 20226 +509+140+50+16+0+0+0+0+0+0+0+0+80+0+0 +hash_sha512 6 5393 29771 +268-28+7-16+0-16+0-16+0-16+0+44-13+0-16 +hash_sha512 6 8090 44069 +319-14+24+35-8-9-19+95+0+47-9-70+97+65-23 +hash_sha512 6 12136 65258 +254+19-113-9+161-37-38+49-23+0-70+1008+135-40+32 +hash_sha512 6 18205 97827 +606+102+0+10-59+77-7+30-4-59-24+35-4-59+86 +hash_sha512 6 27308 146139 +736+128-80+43-70+46+59-86+19-61+114-36-70+0-45 +hash_sha512 6 40963 220334 +323-121+28-23-68+48-72+0-69+22-54+1302+42+83-131 +hash_sha512 6 61445 329830 +554+120+5-30-34-86+30-11+0+170-76+228+53-30-9 +hash_sha512 7 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 7 0 831 +687+78+2+0+0-12-15-12+7-7+66-8-4-6+1 +hash_sha512 7 1 830 +119+67+14+64-2-4-5+0-6+1-11+1-3+0-1 +hash_sha512 7 2 832 +62+42+8+1+0-1-5-10-1-15+3-2+1-13+3 +hash_sha512 7 4 836 +155+37-1+5+1+1-8-5+55+9-2-9+0-5+0 +hash_sha512 7 7 834 +131+72+9+4+0+3+4-10+0-1-3-1-5+7-2 +hash_sha512 7 11 845 +73+38+6+1-8-5-12+1-10+59-7+0-8+7-6 +hash_sha512 7 17 847 +105+58+12+6+5+0-4+1+0-3-4+0-4+0-4 +hash_sha512 7 26 861 +170+56+29+7+59-8-9-6+0-4+60-9+63-3-3 +hash_sha512 7 40 881 +207+68+34+0-3-4-4-10+3-6+2-6+11-1+2 +hash_sha512 7 61 932 +184+22+66+6-5-6-7-6-1-3+3+2-1+2+0 +hash_sha512 7 92 982 +122+4+64+1-1+2-5+0+3-4-8+0-5-11-4 +hash_sha512 7 139 1546 +162+158+61+34-1+5+0-7+16-10-10-9-5-8+137 +hash_sha512 7 209 1677 +113+52+12-9-17-7-4-6+10+1+0-5+1+2-3 +hash_sha512 7 314 2335 +201+53+7-9-19+6-5+2+2-3-3+2+0+0-4 +hash_sha512 7 472 3062 +355+77+3-10-17+0+5+1-12-10-10-10-14+10+50 +hash_sha512 7 709 4428 +243+86-20-54-52-13+6-23+1+5-25+4+7-18+0 +hash_sha512 7 1064 6384 +341+212+18-3-9-1+0+0+0+0+0+0+0+0+0 +hash_sha512 7 1597 9181 +276+65-4-16+36+14+0-6+0+8+47-14-31-19-6 +hash_sha512 7 2396 13345 +391+0+19-30+38-4-47+48+30-42+23-16-12+6-47 +hash_sha512 7 3595 20083 +247-3+0-5+11-5+11-5+85+13+162-30+63-43-13 +hash_sha512 7 5393 29572 +308+44+34+91+50+0+0+0+0+0+0+0+0+0+80 +hash_sha512 7 8090 43956 +383+132-9+140+66-80+17-24+66+0-31+121-31-39-34 +hash_sha512 7 12136 65216 +294+211+6-57-77-1+141+4-61-21+17-13+0-16+44 +hash_sha512 7 18205 97675 +657+73-36-90+64+35+0+16+0-14+59+0-9-30+35 +hash_sha512 7 27308 146004 +878+179-22-83-64+6-74+126+0-54-109-16+1987+385+194 +hash_sha512 7 40963 220134 +594+193+43-96-1+34-12-39-88+102+0+122+46-16-6 +hash_sha512 7 61445 329790 +236+30-166+159-55-61-11+989+258-32+92+89-38+0-62 +hash_sha512 8 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 8 0 942 +1142+81+9+1+0-3-4-10+4-5-2+5+5-5-6 +hash_sha512 8 1 941 +396+15+18+12-2+4+1-6+0-1-1-2+6-3-1 +hash_sha512 8 2 940 +127+57+139+31+5-1+0+0-1+2-1+6-2+0+0 +hash_sha512 8 4 940 +140+67+31+44+3+0+0-4+1-1+0+0+3-3+0 +hash_sha512 8 7 942 +96+30+15+7+3-6-1-5+6-3+4-6-2-7+0 +hash_sha512 8 11 963 +84+79+20+4+1+0-6-7+3-2+5-2+0+0-1 +hash_sha512 8 17 966 +73+16+13+0-3-5-3-11+2+0+5-5-4+0+1 +hash_sha512 8 26 965 +72+27+13+7-1-1-3+1-2+5-3+0-3+0-4 +hash_sha512 8 40 964 +82+9+6+3-4+1-2-8-1+0+7-2+1+0-2 +hash_sha512 8 61 965 +67+12+71+3+57-1-1-1+0-6+6-4+0-1-2 +hash_sha512 8 92 965 +68+18+15+4-3-2+0-2+0-3+6-3+0-2+1 +hash_sha512 8 139 1681 +144+81+3-2-9-10-12+0+59+1-4+0-4+58-4 +hash_sha512 8 209 1684 +168+23+5-12-9-19-14+0+59-7+2-4+2-4+2 +hash_sha512 8 314 2372 +206+47+4+2-7-2-1-1+0+6+3-1+7-7-3 +hash_sha512 8 472 3068 +229+14-11-11-2+65+7+7+5-2+0-13-4+2-13 +hash_sha512 8 709 4439 +186+45-14-18-19-6-17-13-25+0+30+27+3+15+100 +hash_sha512 8 1064 6471 +308+100+84-24+99+50-35-29+0-24-6-3+42+9-3 +hash_sha512 8 1597 9230 +331+60+47+0+24-12-49+10-2+1-27+11-40-49-39 +hash_sha512 8 2396 13309 +361-11+0+61-9+18+12-29+29-24+26-31-24+24-29 +hash_sha512 8 3595 20218 +446+80+28+20-29-1+0+0+0+0+0+0+0+0+0 +hash_sha512 8 5393 29712 +303+109+6+24+0+0+0+0+0+0+0+0+88+0+0 +hash_sha512 8 8090 44078 +350+27+31+0-68+19-13-87+28-62+0-35-76+5+7 +hash_sha512 8 12136 65237 +254+78+14-1-39+57-88+0-39-1+18+0-39-1+15 +hash_sha512 8 18205 97822 +1451+137+0+24-34+24+80-54-74-72+86-21-78+51-35 +hash_sha512 8 27308 146053 +942+226+99-48-91+3-79+66-26+0-40+39-72-118+14 +hash_sha512 8 40963 221358 +454+177-46-46+24+80-46+0+54-6-22+80-46+0+437 +hash_sha512 8 61445 329799 +669-15-53+102+14+87-45-19-15+23+0-22+79-26+7 +hash_sha512 9 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 9 0 828 +518+83+37-1-5+0-7-5+2-2+3-2+2-7+5 +hash_sha512 9 1 832 +284+67+35+33+0-8-6-2-4-5+66-3+6-5+3 +hash_sha512 9 2 830 +167+43+16-2-2+3-6-2-4-3+0+55+3-2+2 +hash_sha512 9 4 837 +149+10+0+0-1-4-11+54-10-4+0-8+1-5+1 +hash_sha512 9 7 839 +208+2+2+0+58-5-12-11-4+3-5+5-5+5-5 +hash_sha512 9 11 843 +162+42+2+3-3-7-9-2+0-5+2-4+2-4+2 +hash_sha512 9 17 850 +179+63+29+31-1-8-10-8-2+0+0+5-6+0+0 +hash_sha512 9 26 859 +75+38+9+64+0-5-6-2+5-14+7-5-2+8-2 +hash_sha512 9 40 879 +198+60+32+5-3+0-8-3+5-5+12-2-1+1-1 +hash_sha512 9 61 939 +166+41+0+1-6-15-17-4-9-8+6+49+3-8+5 +hash_sha512 9 92 981 +101+16+7-1+0+6+2-6+4-8-12-1-2+12-1 +hash_sha512 9 139 1561 +138+127+100-3-3+2-8+0-8+10-7+5-2+7-5 +hash_sha512 9 209 1685 +115+104+99+13+0-3-14-16-3-9+7-9+7-9+7 +hash_sha512 9 314 2343 +169+59+5+45-11+27-4-18-10+0+1-8+40-5-9 +hash_sha512 9 472 3069 +182+80+5+6-21-14+60-8+0-9+0-8+0-11+3 +hash_sha512 9 709 4422 +185+105+0-9-17+51-20-1+2+0+2+0+2+0+2 +hash_sha512 9 1064 6412 +276+163+0-24-6-2+4-2+4-2+4-2+4-2+4 +hash_sha512 9 1597 9192 +937+278+99+27+62-1-1-10-10+5-7-39-23+0+0 +hash_sha512 9 2396 13313 +436+169+66-1-22-14+14-34+0+1-54+18+27-34+0 +hash_sha512 9 3595 20036 +311+168+49+12+161+7+0+0+0+0+0+0+0+0+0 +hash_sha512 9 5393 29596 +372-17-32-58+39+15-20-30+34-18+0+0+4-18+0 +hash_sha512 9 8090 43964 +284+0+88+14-86+33-21+44-48-91+43-88-118+17-88 +hash_sha512 9 12136 65291 +233+132+68-47+93-22+19+0+29-61-32+0+34+0-32 +hash_sha512 9 18205 97726 +399+68+65+22-28-3+0-108-30+46+46+124-13-26-29 +hash_sha512 9 27308 146088 +685+94-20-56-7-183+0+28+26-84+2-11+31+162-30 +hash_sha512 9 40963 221332 +320+90-47+0+29+20+60-58-52-74+20+0-96-10-22 +hash_sha512 9 61445 329819 +391+188+42+222-119+109+0-103-119+861+21-153-54-69-85 +hash_sha512 10 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 10 0 926 +1014+59+10+2+0-4+59-1+9-7-1-7+0+0-1 +hash_sha512 10 1 921 +409+47+43+10+1-4+0-3-3-4-3+2+5-5-3 +hash_sha512 10 2 926 +146+67+77+12+5-3-7+0-5-3+3-1+0-3-4 +hash_sha512 10 4 926 +198+107+15+9+0+61-5-2+0-3-3+3-4-3-5 +hash_sha512 10 7 920 +143+38+86+12+2+1-8-3-8+0-5-9+3-2-4 +hash_sha512 10 11 929 +162+38+14+5-5-4-1-6-2+52+2-2+0-2+1 +hash_sha512 10 17 920 +160+21+74+5-1+1-7-1-2-1+1+27-1-2+0 +hash_sha512 10 26 921 +166+21+17+10+5+0-5+0+0-1-8+2+0-1-5 +hash_sha512 10 40 923 +263+43+18+13+0-2+0-8-2-1+3+3+1-3-5 +hash_sha512 10 61 919 +110+24+19+71+12-3-2-4-4-2+9+1+0+0-4 +hash_sha512 10 92 917 +161+24+24+19+11+5-3-2+0-1-4+0-3-1-4 +hash_sha512 10 139 1640 +253+48+10+0+1+2+15+13-3-7-5-8-7-5+0 +hash_sha512 10 209 1641 +177+18-1+0+5-1+4+3-10-1+152-6+2-15-6 +hash_sha512 10 314 2339 +190+14+0-11-5+5-17+5-19+5-19+5-15+5-13 +hash_sha512 10 472 3023 +217+71+4+2-3+0-2+0-1-4+4-12+7-15+5 +hash_sha512 10 709 4394 +300+106-8-1+0+10+9+0+39-26-17+52+6-4-2 +hash_sha512 10 1064 6434 +385+124+20+59+30+0+12-1-1+4-6+0-6+0-6 +hash_sha512 10 1597 9176 +304+127+77-44+51+116+0-1-27+6-33-20-33-22+11 +hash_sha512 10 2396 13289 +353+135+37+9-11-55+0+27-42-17+20-38+0+27-42 +hash_sha512 10 3595 20176 +400+76+40+6+1-91-18+0-28-24+26-28-23-17+0 +hash_sha512 10 5393 29678 +360+25-16+0+47-37-5-36+3+59-25-11-36+3+59 +hash_sha512 10 8090 44090 +163+134+3+100+0-156+136-33-147-37-117+36-162-84+74 +hash_sha512 10 12136 65181 +245+66-26-118+71+16+0-40+0+28+0-40+0-42+0 +hash_sha512 10 18205 97886 +302-106+24-126-12+55+1501+261+0+122-29-47-99+38-63 +hash_sha512 10 27308 146086 +1017+102-7+107+126-1+2+27-73-21+4-56-162+0-206 +hash_sha512 10 40963 220388 +306+55+121+44-22+59-103+45-49-40-33-103+44+0-14 +hash_sha512 10 61445 329917 +501+0+11-118+123-64+2+103-2-156+0-142+28-274+113 +hash_sha512 11 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 11 0 819 +882+79+70+35+0+2-3-2+13-1+1-1-2+0-4 +hash_sha512 11 1 826 +158+71+11+4+4-1+0-2-3-1-2+3-3+3-3 +hash_sha512 11 2 830 +49+66+41+65-8-7-9-8-6+68-11+0+2+4-5 +hash_sha512 11 4 829 +162+45+16+2-2+63+57-3+0+5-4+0-1-5+0 +hash_sha512 11 7 834 +212+23+17+9+0+0-6-5+5-9+0-2-1+1+4 +hash_sha512 11 11 839 +197+65+15+3-1+61-5-6+5-5-2+60-5+0-4 +hash_sha512 11 17 847 +80+65+96+5-2-3-3+4+1+0+4-1-5-4-2 +hash_sha512 11 26 859 +168+103+79+7-2+1-1+2+0-1+4-2+0-1-1 +hash_sha512 11 40 899 +180+60+48+7+0-4-4+1-3+61+1-2-1-4-3 +hash_sha512 11 61 926 +156+20+16+67-2-6-5+0-1+2+0-3+3-3+2 +hash_sha512 11 92 975 +205+70+17+0-1-4-4-3+4+1+3-2+0-1+3 +hash_sha512 11 139 1564 +148+111+40-3+0-4+5-2+5-5+7-7+5-4-14 +hash_sha512 11 209 1694 +107+47-20-30-3-3+1+23-33+3+5-1+2-3+0 +hash_sha512 11 314 2363 +137+116+21-44-23+5-17+5-10+0-13+6-14+6-14 +hash_sha512 11 472 3086 +240+149+7-8-14-2+0+0+1-1+1-1+0-9+7 +hash_sha512 11 709 4430 +313+129+5-7-5-2-16+47+10-8+2-5+0-17+0 +hash_sha512 11 1064 6403 +395+162+88+9+4-14+0-12+0-12+0-12+0-12+0 +hash_sha512 11 1597 9190 +384+145+106+69-13-13+22+1-13-17-13-17+1+0-13 +hash_sha512 11 2396 13378 +308+114+3-4-11+7+0-50+7-10-40+32+10-1-4 +hash_sha512 11 3595 20060 +380+126-33-6-2-2-2+800-33-17+0+0+0+0+0 +hash_sha512 11 5393 29606 +536+83-29+7-18+0+0+0+0+0+0+0+64-18+0 +hash_sha512 11 8090 43946 +335+188+0-122+90-33-35+14-82+38-20-124+87-27+52 +hash_sha512 11 12136 65277 +430+166+45-6+0+12+86-44-108+14-73-19-108+14-48 +hash_sha512 11 18205 97748 +300+13-65-30-132-132-4+0+0+128-68+0+56+64+4 +hash_sha512 11 27308 146034 +952+175+56+194+125-114-26-71+55+0-200-43+18-11-16 +hash_sha512 11 40963 220216 +1465+192+184-130-28-4-2-82+114+70+26-10-24+0+82 +hash_sha512 11 61445 329828 +361+27-83+54+24-12+18+0-122-60-226+1118-58-298+102 +hash_sha512 12 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 12 0 939 +1295+30+18+8+6+0-2-7+1-8-8-5-11+2-3 +hash_sha512 12 1 941 +577+42+40+9+4+0-3-6+3-4-4-5-7+10+0 +hash_sha512 12 2 941 +219+44+16+6+2-2+2-5+0-2-5-7-7+10+0 +hash_sha512 12 4 944 +204+94+17+12-2+1+0+0+0-2+0+0-2-2-4 +hash_sha512 12 7 943 +75+22+12+5+1+0-2+2-2+1-3+0-2-1-3 +hash_sha512 12 11 966 +96+16+15+0+2-3+61-10-10-11-9-6-12+3+1 +hash_sha512 12 17 968 +54+31+21+8+2+0-6-8-10-13-10-11-11+5+0 +hash_sha512 12 26 961 +123+27+27+18+13+6-2-2-5-6-4-8-3+10+0 +hash_sha512 12 40 961 +97+22+12+9+10-1+57-5-5-6-1-2-6+10+0 +hash_sha512 12 61 965 +61+21+24+9+7+1-3-5-7-8-5-6+0+4-1 +hash_sha512 12 92 965 +62+21+25+9+7+1-2-4-5-10-9-6+0+1+0 +hash_sha512 12 139 1680 +125+79+14+67-9-10-1-3+7-3+3-3+0-2+0 +hash_sha512 12 209 1680 +217+43+18+3+3-9-4-2-7-5+0+3+1+0+0 +hash_sha512 12 314 2369 +299+73+15+55+0-2+2-2+0-10+0-2-2+4-4 +hash_sha512 12 472 3063 +248+111+8-6-15+0+10-10+0+9-4+3+4-3-2 +hash_sha512 12 709 4422 +275+107+16+0+55+11+0-6-2-4-2-4-8-10+14 +hash_sha512 12 1064 6507 +253+69+71+16+0+4+8-13-19-19-30-29+31-45-45 +hash_sha512 12 1597 9252 +289+93+59+3+14+9-37-62-50+0-10-60+0-63-62 +hash_sha512 12 2396 13307 +401+31-43+4-1-6+0+21-6-13-8+21+34+6-1 +hash_sha512 12 3595 20177 +302+70+42-28+60-28+15-6+53+0-6+0-6+0-6 +hash_sha512 12 5393 29712 +315+85-4+2-47-30+0+0+0+0+17+70-31-20-30 +hash_sha512 12 8090 44039 +342+118+75+16-115+81-65+95-13-111+73-47+0-58-13 +hash_sha512 12 12136 65196 +234-1+24-19+113+15-28-24+35-37-36+14-26+66+0 +hash_sha512 12 18205 97773 +364+69+103-31-43-10-8+0+48+0-1+128+1046+282-66 +hash_sha512 12 27308 146088 +875-48-11-68+18-77+17+16-97+0+144-101+1+0+0 +hash_sha512 12 40963 220342 +331-159+90+0+18+27-87+85-70+0-94-168+54-28-60 +hash_sha512 12 61445 329844 +1239+306-3+7+26+0-17-72-25+86-86-130+20+95-2 +hash_sha512 13 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 13 0 823 +1032+78+24+9+8-4-5-9+15-5-9+0-5+0-3 +hash_sha512 13 1 829 +113+19+16+11+10+3+0+0-4-7-4-4-7-7-3 +hash_sha512 13 2 827 +55+69+48+10+70-2+2-2-3+2+0+0-2-2-3 +hash_sha512 13 4 831 +119+49+6+62+7-7+1+1-5-1+0-1-7-8-4 +hash_sha512 13 7 834 +174+14+16+6+0-3-4+1+2-4-4-3+0-4-2 +hash_sha512 13 11 838 +79+81+14+65+3-2+0-1-1-2+1+0+2-5-2 +hash_sha512 13 17 847 +83+93+43+6-1-6+7-1+3+1+0-6-2-3-4 +hash_sha512 13 26 859 +87+39+42+1+1-2-5+3-6-1+0-9-2+8-7 +hash_sha512 13 40 843 +206+78+11+9+64+0-4+6-6+1-3-4-3-5-6 +hash_sha512 13 61 865 +146+60+60+6+1-3-5+4-2+0-3+1+0-4+0 +hash_sha512 13 92 870 +176+91+11+9-4+0+0-5-1-5+3+3-4-7-8 +hash_sha512 13 139 1572 +154+61+24+21+0+47-11+1+0+0-5-2-7-1+1 +hash_sha512 13 209 1583 +182+112+7-2-13+56-1+5-3+4-4+2-1-3+0 +hash_sha512 13 314 2283 +210+91+70-3-1+0+4-9-9+3+62-9+4-9-4 +hash_sha512 13 472 2980 +240+96+19-16+30-27-28-17-15+0+3-8+1-21+8 +hash_sha512 13 709 4318 +267+90+96+63+54+27-8-16-22-16+5-20-19-14+0 +hash_sha512 13 1064 6355 +448+124+53+1-6-24+4+5+28-7+0-5-3-5-3 +hash_sha512 13 1597 9122 +322+111+70-30-14+64+6+0+0+0+0+0+70-10-2 +hash_sha512 13 2396 13291 +341+10+101+49-53+0+4-61-7-15-53+0+6-27+30 +hash_sha512 13 3595 20082 +294-11-16+16+0+0+0+0+0+93+0+0+0+0+0 +hash_sha512 13 5393 29592 +527+72+11+81-14-8-8-6+0-6+0+928+17-6-2 +hash_sha512 13 8090 43974 +525+272+51-5-70+87-85+53+21-88+99-51-61+0-117 +hash_sha512 13 12136 65233 +303+54+44-43+20-77-50+2-153+39-48+0-153+29-50 +hash_sha512 13 18205 97818 +263+62-30+49-41-121-39-77+0+31-77+0-1+72+55 +hash_sha512 13 27308 146106 +618+6+0+31-19+22-146-45+5-155+27-127+38-91-63 +hash_sha512 13 40963 220238 +468+44-10+893+0+64+7+12-50-22-66-10-66-76+97 +hash_sha512 13 61445 329788 +556+137+103-70+12-264+66-100-76-48-104+0+739+237-38 +pow_inv25519 selected implementation amd64-safegcd compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 selected 32 4191 +6294+439-29-96-30+0-32+0+11-32+0-32+0-32+0 +pow_inv25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 0 32 13441 +6513+205+49+0+3+89-58-47-81+13-39-33-50+20-49 +pow_inv25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 1 32 13429 +1776+71+44+176-30-35-87+0-46+14-27+71-21+19-27 +pow_inv25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 2 32 13435 +1627+90+24-88+23-30+2-20+0-18+68-19+31-32-32 +pow_inv25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 3 32 13421 +2222+120-10+38+0-42-61+48-59+2-34+7-46+77-45 +pow_inv25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 4 32 13416 +1530+212+74-42-9-15-17+62+33+88-14+0-4+30-6 +pow_inv25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 5 32 13451 +2195+91+58-27-5+0-31-70+52-35+19-39+29-90+0 +pow_inv25519 6 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 6 32 13457 +1822+48+99+87-37+0-102+25-28-3+53-27-9+13-18 +pow_inv25519 7 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 7 32 13486 +1711+75-26+3-9-56+6+13+4-69+49-44-52+0-38 +pow_inv25519 8 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 8 32 14093 +6022+149-1-6+21-1+81-3-65+1+8+0+21-3-64 +pow_inv25519 9 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 9 32 14097 +2154+57-65-30-12+0-75+24+24-7+106+85-67+59-57 +pow_inv25519 10 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 10 32 14122 +1064+48-2-80+0-58-1-71+44+0+1-74+20-73+15 +pow_inv25519 11 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 11 32 14074 +1185+38-1+4+40-16+2-44+42-21+23-45-9-57+0 +pow_inv25519 12 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 12 32 14099 +1964+58+20+60+18+0-24+0-24+0-24+0-24+0-24 +pow_inv25519 13 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 13 32 14120 +1408+0+22-87+6+10-92-24+36-30-40-2-36+52+22 +pow_inv25519 14 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 14 32 14112 +1986+45-30-30+22+7+13+61-76-41-10+0-39-47+23 +pow_inv25519 15 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 15 32 14087 +2751+30+35+11-5+0-61+9-52+21-32+57-77-23-5 +pow_inv25519 16 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 16 32 13025 +5820+220+88+10+2-16-11+0-78+1+7-1-21-1-22 +pow_inv25519 17 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 17 32 13071 +1435+157+7-31-23+0-78+5+29-27-29-33+0-40+1 +pow_inv25519 18 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 18 32 13048 +1055+147+36-81-37-82+35+0+0+0+0+0+0+0+0 +pow_inv25519 19 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 19 32 13072 +1290+53-15-22-26+8+0+42+10+10+0+2-2-2-2 +pow_inv25519 20 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 20 32 13029 +1371+92+51+0+8+26-48-20-48-20-48+21-2-48+7 +pow_inv25519 21 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 21 32 13044 +972+58+29-39-77-23+48-44+21+0-34+27-3+6-38 +pow_inv25519 22 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 22 32 13078 +498+57-19+28+37+0-4+2+26+21-7-34-33-4+0 +pow_inv25519 23 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 23 32 13027 +510+141-17-50-11-1-1+0+36+0+24+0+24+0+24 +pow_inv25519 24 implementation amd64-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 24 32 12066 +2925+51+102-83-42-63-38-76+41-37+67+60+0+14-23 +pow_inv25519 25 implementation amd64-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 25 32 12056 +818+93+44+0-8-40-7-27+78+8+52-93-2+24-7 +pow_inv25519 26 implementation amd64-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 26 32 12074 +786+168-30-7-2+0+77-50-5+35-31+24-44+729+17 +pow_inv25519 27 implementation amd64-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 27 32 12091 +844+33+0-33-31+41+10-64+43-25+36+46-50-42-71 +pow_inv25519 28 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 28 32 9044 +4836+113+38+7-29+0+0-5-19+1-18-18-21+0-12 +pow_inv25519 29 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 29 32 9020 +612+102+0-2+14-11+1-2+9-5-16+9-5-16+14 +pow_inv25519 30 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 30 32 12358 +3250+64-28+0+28+37-5-10+4-26-6-4+10-26+4 +pow_inv25519 31 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 31 32 12356 +503+144-17+128-5-21-64+34+0+51+4-13-13-11+29 +pow_inv25519 32 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 32 32 12375 +291+83+0-47-4+45+7+33-49-55-18+18-14-10+12 +pow_inv25519 33 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 33 32 12356 +386+92+0+2-9+38-25-25-37-17+86+8-31-43+22 +pow_inv25519 34 implementation amd64-safegcd compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 34 32 4188 +4274+347+44+70-1+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 35 implementation amd64-safegcd compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 35 32 4325 +746+164-99-106+0-134+0-134+0-134+0-134+0-134+0 +pow_inv25519 36 implementation amd64-safegcd compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 36 32 4191 +705+251+9+27-32+0-32+0-32+0-32+0-32+0-32 +pow_inv25519 37 implementation amd64-safegcd compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 37 32 4188 +900+345+105+97-80-1+0+0+0+0+0+0+0+0+0 +pow_inv25519 38 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 38 32 12843 +1295+296+96-63+0-85-52-36-72-29-62+3+3+3+3 +pow_inv25519 39 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 39 32 13587 +2196+71-17+68-125+44-111-226+42-226+42-226+0+45-226 +pow_inv25519 40 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 40 32 13854 +1228+206+206+0+4-174+1+23+0+19-109-19-129-19-129 +pow_inv25519 41 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 41 32 12055 +2529+54+26-4-91-120+2-120+2-120+2-120+0-120+2 +pow_inv25519 42 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 42 32 13765 +1145+129+17-56-12+23+55+54-19-126-198-106-150+19+0 +pow_inv25519 43 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 43 32 12036 +1813+182+27-49+0+29-53-81+56+62-99-94-35+62-53 +pow_inv25519 44 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 44 32 13281 +1834+225+51+23-64-11-19-11+37-11+53-5-51+21+0 +pow_inv25519 45 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 45 32 13498 +1973+125-60-162-153-76-154+10+52+0+0+0+0+0+0 +pow_inv25519 46 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 46 32 26414 +843+203+384+154-238-10-10+361+0-353-229+163+424-319-230 +pow_inv25519 47 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 47 32 29615 +1663-46+74+94-12+70+19+125-59+0-68+38-56-71-26 +pow_inv25519 48 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 48 32 24299 +1382+154+70-85-120+48+68-101-181-94+222-21+50-85+0 +pow_inv25519 49 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 49 32 29622 +1551+93-134-34-26+7-28-7-7+0-39+109+40+58+10 +pow_inv25519 50 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 50 32 24244 +1421+1+230+84-90-80-64-13-12-37+28+0+52-32+25 +pow_inv25519 51 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 51 32 29617 +1495+128+16-2-7+15-59+169+13-27-8+0-28+92-21 +pow_inv25519 52 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 52 32 24763 +2073+0-172+344-5+139+47-367-280+37+420-114-444-362+9 +pow_inv25519 53 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 53 32 29645 +1548+41-19+20+69-22+0-55-63+0-64+104-78+44-25 +pow_inv25519 54 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 54 32 12104 +4643+302+168-60+8-44+36+0-14-130+625-60-63+44-105 +pow_inv25519 55 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 55 32 12102 +867+161-37+8+77+9-35-30-13-14-15+0+7-67+66 +pow_inv25519 56 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 56 32 12079 +961+0+8-4-56+0+30-48+1-87-11-105+16+54+58 +pow_inv25519 57 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 57 32 12092 +962+101+1+20+53-63+78-3-12-35+0-47-29+1-64 +pow_inv25519 58 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 58 32 12042 +775+41+25-20-85+0-23-17+0-41+64+52+5-25+2 +pow_inv25519 59 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 59 32 12080 +1047+215+3+50+0-23-81+13+74-82-27-4-88+26-76 +nP_montgomery25519 selected implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 selected 32 92426 +9970+74-182+32+0+80-270-252+170-14-50-272+130+62-224 +nP_montgomery25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 0 32 146010 +5294+412+0+180-135+3-217-120-246-20+3+273-302+60-42 +nP_montgomery25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 1 32 148403 +1068+151+155+8-148-123-72-64+90-44+110-84+0-70+152 +nP_montgomery25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 2 32 145876 +2059+296+262-96+74-71+104-77+37-123-32+54+0-60-230 +nP_montgomery25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 3 32 145899 +1233+241-21+132-151-11+0+7-184+275-6-162+0+7-184 +nP_montgomery25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 4 32 146078 +1231+506+151-31-16-18+0+50+73+138-90-12-98+32-22 +nP_montgomery25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 5 32 148596 +918+255+8+975+80+77-9-4+0-14+8-162-173-87-175 +nP_montgomery25519 6 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 6 32 145084 +1562+155-82+225-170+0-190+2-190+2-190+2-190+2-190 +nP_montgomery25519 7 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 7 32 145724 +1115+269-143+73-3-73-20-161-71+164-41+96+18+88+0 +nP_montgomery25519 8 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 8 32 134302 +5246+403-57+0-98+54-68+600-40-162+4+56-168+82-82 +nP_montgomery25519 9 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 9 32 134269 +733-162+71-6+0-7+91+43+91+15-15-83-87+1-87 +nP_montgomery25519 10 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 10 32 133925 +864+145+81+127-110-112+48-170-110+12+164-74-96+0-38 +nP_montgomery25519 11 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 11 32 134318 +649+193-25+120-58+96+30-14-90-72-142+0-6+156+28 +nP_montgomery25519 12 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 12 32 134098 +830-65-48+0-38+136+52-152+134+8-74+32-72+164-100 +nP_montgomery25519 13 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 13 32 134341 +450+23+31+106-93+0-220+8-196+94+42-84-196-78-122 +nP_montgomery25519 14 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 14 32 135392 +633+220-62-127+10-76+0+74+32-42-70+32-56+0+74 +nP_montgomery25519 15 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 15 32 134643 +661+18-205+53-140-40+0+683+242-182-48-128-82+48+10 +nP_montgomery25519 16 implementation amd64-avx2-hey10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 16 32 119486 +5228-17-51+0+0+0+0+0+0+0+0+0+0+0+0 +nP_montgomery25519 17 implementation amd64-avx2-hey10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 17 32 119148 +637+14+6-25+23-30-10+0-64+0-10+0-10+0-10 +nP_montgomery25519 18 implementation amd64-avx2-hey10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 18 32 119430 +617+5-51+0+66-11-77+1-77+1-77+1-77+9-77 +nP_montgomery25519 19 implementation amd64-avx2-hey10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 19 32 119045 +689+54+2-54+920-1-79+0-54+17-80-19+19-63+19 +nP_montgomery25519 20 implementation amd64-avx2-hey10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 20 32 119315 +4905+73+1-36-16-32+8-54+4-54+0-54+0-54+0 +nP_montgomery25519 21 implementation amd64-avx2-hey10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 21 32 119094 +1063+8-9+0+21+60-17-32-16+30-16+30-16+30-16 +nP_montgomery25519 22 implementation amd64-avx2-hey10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 22 32 119318 +666+36+67-9-34+0-34+0+2-10+0-30-20+40+0 +nP_montgomery25519 23 implementation amd64-avx2-hey10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 23 32 119078 +567+108-36+948-9+28-78+0-78+0-44+0-44+0-44 +nP_montgomery25519 24 implementation amd64-avx2-hey10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 24 32 119428 +2779+154-2+76+2+2+2+0+0+0+0+0+0+0+0 +nP_montgomery25519 25 implementation amd64-avx2-hey10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 25 32 119048 +359+96+72-5+33-16-5-30+34+0-20+0-20+0-20 +nP_montgomery25519 26 implementation amd64-avx2-hey10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 26 32 119413 +2105+146+80+0-98-25-99+13-99+13-99+13-99+13-99 +nP_montgomery25519 27 implementation amd64-avx2-hey10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 27 32 119144 +903+476+98-3+66+94+94-26+0+0+0+0+0+0+0 +nP_montgomery25519 28 implementation amd64-avx2-hey10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 28 32 119341 +909+107+30+1+16+14-40+0-40+0-40+0-40+0-40 +nP_montgomery25519 29 implementation amd64-avx2-hey10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 29 32 119032 +864+86+26+27+43+0+0+0-38-50-50-50-50+0+0 +nP_montgomery25519 30 implementation amd64-avx2-hey9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 30 32 115311 +4772+27-58+44-93+4-82+0-82+0-82+0-82+0-82 +nP_montgomery25519 31 implementation amd64-avx2-hey9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 31 32 115118 +1242+69+5+24+52-22+76+0+0+0+0+0+0+0+0 +nP_montgomery25519 32 implementation amd64-avx2-hey9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 32 32 115130 +1197+125-29-67+0+0-4+0+100+20-4+0-4+0-4 +nP_montgomery25519 33 implementation amd64-avx2-hey9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 33 32 115082 +323+65-18+25-42-68+17+19+0+0+0+0+0+0+0 +nP_montgomery25519 34 implementation amd64-avx2-hey9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 34 32 115368 +4338+40+137-4-23+1-24+0-24+0-24+0-24+0-24 +nP_montgomery25519 35 implementation amd64-avx2-hey9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 35 32 115142 +912+540+31+14+16+13-58-1-49-84+86-25-31-46+0 +nP_montgomery25519 36 implementation amd64-avx2-hey9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 36 32 115425 +682-44+109-22+57-50+0-50+0-50+0-50+0-50+0 +nP_montgomery25519 37 implementation amd64-avx2-hey9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 37 32 115134 +1004+318+147-20+0-116+0-116-22-116+0-116+0-116+0 +nP_montgomery25519 38 implementation amd64-avx2-hey9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 38 32 115284 +2847+195-73-62-33+6+0-8+0-8+0-8+0-8+0 +nP_montgomery25519 39 implementation amd64-avx2-hey9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 39 32 114980 +389+148+558+0-6+8+24+70-26-26-8-26-8-26+60 +nP_montgomery25519 40 implementation amd64-avx2-hey9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 40 32 115358 +2329+98-59-100-104-104-104-104-104+0+4+4+4+4+4 +nP_montgomery25519 41 implementation amd64-avx2-hey9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 41 32 115090 +347+167+55-45+0+24-33-54-25+19-25+19-25+19-25 +nP_montgomery25519 42 implementation amd64-avx2-hey9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 42 32 115268 +847+169-31-24+0-24+0-24+0-24+0-24+0-24+0 +nP_montgomery25519 43 implementation amd64-avx2-hey9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 43 32 115064 +644+82+12+370-37-21+58-2-22+0-22+0+0+86+0 +nP_montgomery25519 44 implementation amd64-avx2-ns10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 44 32 122074 +4965+317+48+13+0-18+12+0-10+12+0-18+12+0-18 +nP_montgomery25519 45 implementation amd64-avx2-ns10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 45 32 122753 +744+54-49-33-20+28+0+16-12-19+158-26+13-5+4 +nP_montgomery25519 46 implementation amd64-avx2-ns10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 46 32 122252 +801+85+3-45+38-70+0+0+0+0+0+0+0+0+0 +nP_montgomery25519 47 implementation amd64-avx2-ns10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 47 32 122720 +558+898+63+0+56-35+0+0+0+0+0+0+0+0+0 +nP_montgomery25519 48 implementation amd64-avx2-ns10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 48 32 116758 +4519+28+43+4-8+4-2+0-2+0-2+0-2+0-2 +nP_montgomery25519 49 implementation amd64-avx2-ns10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 49 32 116536 +435+170+141+124-12+0+134+0+0+0+0+0+0+0+0 +nP_montgomery25519 50 implementation amd64-avx2-ns10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 50 32 116818 +705+243-103+14-54+0-54+0-54+0-54+0-54+0-54 +nP_montgomery25519 51 implementation amd64-avx2-ns10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 51 32 116579 +1350+125-12-81-68+52-44+52+0+52-44+52-44+52-44 +nP_montgomery25519 52 implementation amd64-avx2-ns10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 52 32 122314 +2275-71+13-152-152-304+12+12+0+2+0+0+0+2-24 +nP_montgomery25519 53 implementation amd64-avx2-ns10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 53 32 122726 +467+18+2+29+9+29-17+0+0+0+0+0+0+0+0 +nP_montgomery25519 54 implementation amd64-avx2-ns10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 54 32 122318 +1684+162-13-85+0+31-59-20+38-86+1+33-59-18+596 +nP_montgomery25519 55 implementation amd64-avx2-ns10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 55 32 122722 +525-44+1+116-15+0-100+0-100+0-100+0-100+0-100 +nP_montgomery25519 56 implementation amd64-avx2-ns10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 56 32 122140 +921+50+94-121-13+14+0-13-13+14+0+14+0-13-1 +nP_montgomery25519 57 implementation amd64-avx2-ns10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 57 32 122714 +342+39-69-3-38+157-49+7+0-6+0-6+0-6+0 +nP_montgomery25519 58 implementation amd64-avx2-ns9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 58 32 114740 +4390+792+16+24+20+0+0+0-160-2+0+682+606-145-154 +nP_montgomery25519 59 implementation amd64-avx2-ns9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 59 32 114454 +495-93+27-204-244-203+0+0-270+0+0+0+0+0+0 +nP_montgomery25519 60 implementation amd64-avx2-ns9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 60 32 114534 +695+15+7-8+2014+196-7+0+0+0+0+0+0+0+0 +nP_montgomery25519 61 implementation amd64-avx2-ns9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 61 32 114338 +443+52+3+238+253+0+59+1+0+0+0+0+0+0+0 +nP_montgomery25519 62 implementation amd64-avx2-ns9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 62 32 114662 +4772+94-8-44-45+10-2+0-2+0-2+0+835+944-185 +nP_montgomery25519 63 implementation amd64-avx2-ns9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 63 32 114487 +430+172+42+8-60+6-84+0-34+0-34+0-34+0-34 +nP_montgomery25519 64 implementation amd64-avx2-ns9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 64 32 114712 +1467+0+105-135-156-101+17-101+17-101+17-101+17-101+17 +nP_montgomery25519 65 implementation amd64-avx2-ns9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 65 32 115200 +261-607-5-17+132+58-696+141-641+49-742-1+119+0+155 +nP_montgomery25519 66 implementation amd64-avx2-ns9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 66 32 114507 +3513-128-88-131-120+48+0+48+0+22-2+22-2+665+655 +nP_montgomery25519 67 implementation amd64-avx2-ns9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 67 32 114343 +852+20+257+257+245+0+96+30-21-21-21-21-21-21-21 +nP_montgomery25519 68 implementation amd64-avx2-ns9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 68 32 114544 +2347+226+102-49+0-2-12-2-80-10+106-2+104+192+124 +nP_montgomery25519 69 implementation amd64-avx2-ns9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 69 32 114466 +529-49+80-167+86-310+86-310+88-281+571-218+0-281+571 +nP_montgomery25519 70 implementation amd64-avx2-ns9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 70 32 114405 +916+234+70-59-23-70+0-70+0-70+0-70+0-70+0 +nP_montgomery25519 71 implementation amd64-avx2-ns9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 71 32 114293 +565+273-42+82-140+0-140+0-140+0-140+0-140+0-140 +nP_montgomery25519 72 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 72 32 120212 +5257+247-4-148+93-44+177-40-72+84+128-24-10+204+0 +nP_montgomery25519 73 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 73 32 120192 +963+277-131+50+174-174-302-30+48-98+136-86-110+22+0 +nP_montgomery25519 74 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 74 32 120102 +389+132+61-158-4+56-78+0-14-102-4+56-78+1053+201 +nP_montgomery25519 75 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 75 32 120114 +717+128-71-172-60+194+88-20+0-76+170-24-78+164+96 +nP_montgomery25519 76 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 76 32 120266 +175-22-71+53+220-108+2-150-142+0+36-76-90+26+82 +nP_montgomery25519 77 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 77 32 120176 +613+265+28-176-140+0+0+100-162+32-28-300+12-58-10 +nP_montgomery25519 78 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 78 32 120276 +376+237+24-22+42-186-112-186+0-106+90-186+1041+33+0 +nP_montgomery25519 79 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 79 32 120278 +845+152-61-146-68+179-26-26+30+180+0-80-144+76+210 +nP_montgomery25519 80 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 80 32 92402 +1057+0-426+78-12+22+278-98+24-118-112+118-282+10-282 +nP_montgomery25519 81 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 81 32 92430 +182-287+156+128-28-96-2+74-72-58+0+284-62+10+284 +nP_montgomery25519 82 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 82 32 103772 +4090+265-47-34+153-156-6+198+1039+4-32-89-38+0+22 +nP_montgomery25519 83 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 83 32 103706 +425-142-86+695+78-122+46-47+214+0+98-44+164-128-48 +nP_montgomery25519 84 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 84 32 103798 +447-23-19+85+0-98-74+98+40+34+226+226-120-90-114 +nP_montgomery25519 85 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 85 32 103774 +143+190-182+12-52+110-112-244-114-38+0+4+126-106+24 +nP_montgomery25519 86 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 86 32 174258 +3601+372-87+218-154-168-204+26-88+120+0-138+52-43+76 +nP_montgomery25519 87 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 87 32 219619 +5650-102+1-496+1667-223+0-434+282-376+258-430+278-376+408 +nP_montgomery25519 88 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 88 32 167300 +4731+944+79-238+66+4+0+88-64+224-13-271-64-40-166 +nP_montgomery25519 89 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 89 32 199788 +4162+389+7-226-54-41+1698+23-164+60+0+67-6-101-50 +nP_montgomery25519 90 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 90 32 166582 +4633+234+142-20-198-160-320+0+314+112-72-172-5+297+201 +nP_montgomery25519 91 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 91 32 199496 +5185+182+63+14+69-1-91-53+34-101-42-61-43+0+18 +nP_montgomery25519 92 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 92 32 172777 +3493+34+21+121+66-138-27-39-233+105-161+0-388-143+127 +nP_montgomery25519 93 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 93 32 214273 +3970+152+97-103-57+0+13-39+66-63+73-91-57-101+114 +nP_montgomery25519 94 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 94 32 344378 +3949-1703-548+19-1382-101+0+1268+219+1387-634-174+488-865+1694 +nP_montgomery25519 95 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 95 32 327532 +1755-16-103+131+66+0-214+68-134+906+135-70-8+12-32 +nP_montgomery25519 96 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 96 32 338479 +1617+56+117+116+26-560-42-731+0+72-42+230-886-714-846 +nP_montgomery25519 97 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 97 32 324999 +1841+381-70+278+295+1571+944+1648-36+0-214+0-214+0-214 +nP_montgomery25519 98 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 98 32 339509 +1602+204+491+76+264+1+535-144-188+0-45-119-69-297-435 +nP_montgomery25519 99 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 99 32 325881 +1625+0+56+87-93-124-105-99+64-230-192-12+9+811+52 +nP_montgomery25519 100 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 100 32 340182 +2314-470+811-81-57-84+874+0-84+874+0-84+874+0-84 +nP_montgomery25519 101 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 101 32 327578 +982+204-10+822-221+168+190-222+110-260-234-212+0+38-190 +nP_montgomery25519 102 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 102 32 16689526 -16534840+394-63+521+985+429-648+1560+159-147-419-38-712+0+707 +nP_montgomery25519 103 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 103 32 148440 +688+0-172-154+52-162+70+183-153+48+184-150-180-166+4 +nP_montgomery25519 104 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 104 32 16689558 -16540643+15258-148-150-775+278+694+133-47-1006+741+1110-611+0+236 +nP_montgomery25519 105 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 105 32 148308 +1390+268+62+106+150-124-10+82+0-180-28-180-78+8-78 +nP_montgomery25519 106 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 106 32 16690279 -16541584+36851+6629+2105+2789-680-377-469-549+0+28+184+337-12-97 +nP_montgomery25519 107 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 107 32 148268 +858+46+206-146-52+52+168-174+0+2-134-102-230+26-170 +nG_merged25519 selected implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 selected 32 29383 +12631+554+14+22+0+6-46-6-81+14-36+96-98-57-73 +nG_merged25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 0 32 45166 +14244+737+217-15+171+32-103-94-135+104+19-71-71-135+0 +nG_merged25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 1 32 44564 +2611+322-87-147+105-80+289+212+0+126-106-128-28-190+117 +nG_merged25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 2 32 45094 +2536+226+187-51-208-195+1224+186-87+0+98+280-87-142-340 +nG_merged25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 3 32 44856 +2970+34+0+126-88-185+42-180-349+141+27-112+49-83-124 +nG_merged25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 4 32 45195 +2753+328+251-210-71+81-139-228+296-1+89+0-137+225-103 +nG_merged25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 5 32 44690 +2051+85-161-251-203-353+71+453+140+289-230+39-322-154+0 +nG_merged25519 6 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 6 32 45616 +2922+566+188+9+0+63-107+82-110-63-117+72-127-116-55 +nG_merged25519 7 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 7 32 44799 +2220+192-59+17+0-82+14+61+31-116-152-178-65-173+67 +nG_merged25519 8 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 8 32 37813 +9840+1018+170+116-66+0+9-70+511+0-45-101-301-338-458 +nG_merged25519 9 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 9 32 36695 +2660+425+207+188+107+161+195+0-142-105-113-152-172-100-86 +nG_merged25519 10 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 10 32 37094 +1723+197+50+25+94-65+0-150-183-307+9+36-182-39-222 +nG_merged25519 11 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 11 32 36006 +1659+171-1+22-61+8-58-30-107+0-143-70+4+323+97 +nG_merged25519 12 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 12 32 37050 +2513+375+42-47+50-118+59-67-87-74-66+33-2+167+0 +nG_merged25519 13 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 13 32 36359 +1192+253+57+73-56-73-123+896+380-61-86+0-54+6-32 +nG_merged25519 14 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 14 32 37063 +2424+161+184+65+111-27+22-41-28+35-2-52-2+0-63 +nG_merged25519 15 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 15 32 36914 +1214+254-16+12-29-56-11-32-20-2+0+0+0+0+0 +nG_merged25519 16 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 16 32 37204 +8689+286-54-4-9+0+28+12-40+61+145-26-14+25-64 +nG_merged25519 17 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 17 32 36439 +1104+185+31-27+131+5-41-9-9-59+88-25-6+19+0 +nG_merged25519 18 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 18 32 37201 +758+118-1-64-14+24-32+0+145-15-3+30-67+65+9 +nG_merged25519 19 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 19 32 36704 +825+128+0-2+102-8-64-37-88+58+27+2-26+104-23 +nG_merged25519 20 implementation amd64-avx2-10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 20 32 35113 +4693+73+182-5+29-49+35+53+10-66-95-117-10+0-35 +nG_merged25519 21 implementation amd64-avx2-10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 21 32 34379 +944+167-37-108+25-26+114-9+18+8+0-48-51-95+19 +nG_merged25519 22 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 22 32 36644 +9092+453+245+152+128+164+601+0-106-80-212-285-108-148-106 +nG_merged25519 23 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 23 32 35633 +1262+157+185+187+128+204+203-91-17+0-69-79-84-12-94 +nG_merged25519 24 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 24 32 36026 +728+123+178-29-77+154-28+105-43-28+40+90+0-5-97 +nG_merged25519 25 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 25 32 35538 +618+53-90-103+18+84-64+69+44-63+107-76+0-67-126 +nG_merged25519 26 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 26 32 36867 +6623+155+67+88-47+77+21-85+65-40-17-35-95-106+0 +nG_merged25519 27 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 27 32 36399 +1371+134-55+0-69-31+18+49-117-28-31+20+46+33-72 +nG_merged25519 28 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 28 32 36901 +890+85-31-20+59+0+53+68-21-66-16-76+43-34+49 +nG_merged25519 29 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 29 32 36453 +1021+74-74-4-15+33+2+0-3+50+42+0-48-51+77 +nG_merged25519 30 implementation amd64-avx2-9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 30 32 34565 +5080+78-55+98+44-132-18-103-40+2-20-64+116+0+37 +nG_merged25519 31 implementation amd64-avx2-9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 31 32 34037 +1865+32+7-71-94+45-8-13-72-105-82+115+0+41+11 +nG_merged25519 32 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 32 32 35423 +5869+93+166+28+50+0-59+4-137+60-23-30-52-55-13 +nG_merged25519 33 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 33 32 34902 +692-3-84+31+70+40+3-13+40+109-60-121-92+0-8 +nG_merged25519 34 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 34 32 35414 +655+141+72+39+5-124-8+9-75+9-114-91-102+0-128 +nG_merged25519 35 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 35 32 34968 +568+1-44-60-74+64-8+13-4+0-101+2+35+50-95 +nG_merged25519 36 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 36 32 35702 +4579+149+22+0-77+85-126+1-59-115+13-33-105-111+22 +nG_merged25519 37 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 37 32 35051 +1149+5-226+0+181-32+24+125-78-13+65-4-44-65+11 +nG_merged25519 38 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 38 32 35500 +651-50-29-71+27+26+0-58+114+43+764+128-103-3-19 +nG_merged25519 39 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 39 32 35045 +1077+132+124+0-13-52-50-90-23-42+50+12+7+87-26 +nG_merged25519 40 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 40 32 35562 +1482-16+79-163+25+40-108-33+82-82+9-63+53-36+0 +nG_merged25519 41 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 41 32 34907 +839+175-39+42-19-54+28+50+102-49+10+0-56-89-23 +nG_merged25519 42 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 42 32 35717 +1250+164-1-36+0+46+18+62-67-29+62-7+141-28-5 +nG_merged25519 43 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 43 32 35215 +925+68-182+182-25+104-41-125+7-57+49-50+36-77+0 +nG_merged25519 44 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 44 32 30156 +1342+44+23-87+0-2+0-2+15-151+88-34+18-2+89 +nG_merged25519 45 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 45 32 29355 +917+30+96-57+130+11+16-48+46-72-50-22+0-21-27 +nG_merged25519 46 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 46 32 32604 +4439-124+218+43+3+96+12+49-66-27+0-8-74-83-44 +nG_merged25519 47 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 47 32 32070 +1199+57+42+90-109+161-99+27-36+0-112+70-26-44-65 +nG_merged25519 48 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 48 32 32580 +1236+4+129+0-50+38-64-73+78+0-2-56-1-26+124 +nG_merged25519 49 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 49 32 32093 +901-23+0+94+80+80-58-76-30-37+40-108-5+2+18 +nG_merged25519 50 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 50 32 124246 +7103+588-26+70-66+0+28-76-36+1166+571-33-16-66+110 +nG_merged25519 51 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 51 32 100790 +3489-197+90+96+0+158+129-142-354-12+30+196-162-262-216 +nG_merged25519 52 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 52 32 124351 +3925+167+0+77-108-153+0+65+5-94-95+162+3-83-191 +nG_merged25519 53 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 53 32 100021 +2674+48-61+222-184+221-269+49-55-97+5-214-247+0+89 +nG_merged25519 54 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 54 32 123810 +3881+24+114+6-12+6+16-42-152-36-168-126+1384-195+0 +nG_merged25519 55 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 55 32 99377 +3531+154-84-151+0-26+114-240-215+4+100+71-45-196+136 +nG_merged25519 56 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 56 32 124463 +3507+0-157+7+129-179+125-59+111-117-105-17+79+32-20 +nG_merged25519 57 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 57 32 101644 +3328+134-134+8-78-162-137+118-144+0+113-68+210-11+61 +nG_montgomery25519 selected implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 selected 32 29378 +6391+196+104+97-27+0+43-4-9+98-3-89-54+37-56 +nG_montgomery25519 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 0 32 92430 +3502+30-68+26-254+0+220-112-340+20-360+128-352+495-82 +nG_montgomery25519 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 1 32 92414 +519+133-76+120-114-288+0+36-172+1102-7+159+126-104-92 +nG_montgomery25519 2 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 2 32 92402 +28-10+166-169+80+80-114+116-332-266-214+272+60-54+0 +nG_montgomery25519 3 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 3 32 92342 +270-92-239-205-200+0+186-210+122+128+204-240+44+78-32 +nG_montgomery25519 4 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 4 32 92340 +1+129+293+1+0-342-132+186-30-72+146-26+88-98-36 +nG_montgomery25519 5 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 5 32 92436 +20+57+59+94-283-254-58+0+26-88-34-272-130+1160+45 +nG_montgomery25519 6 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 6 32 92342 +0-63+54+15+222-296-20-144-200+298+186+42-288+158-162 +nG_montgomery25519 7 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 7 32 92288 +254+372+27-124-92+403-386+194+0+230-48+32-30-64-292 +nG_montgomery25519 8 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 8 32 15084096 -14943520+34709+0-275-8+93+271-118+147-29+599+233-556-199+13 +nG_montgomery25519 9 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 9 32 136708 +501+212+178+75+116-122-2-6-62+2-114-46+0-38+2 +nG_montgomery25519 10 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 10 32 15085008 -14947948+35788+1623+1535-99+855-200+0+624+803+183-437-1032-1043-1059 +nG_montgomery25519 11 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 11 32 136816 +852-98-50+0+144+18+22-78+50+44+28-8-4-82-96 +nG_montgomery25519 12 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 12 32 15084136 -14946726-163+193+837-46+0+763-244+225-90-185-279+50+206+433 +nG_montgomery25519 13 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 13 32 136852 +368+102-80+8+32+64-168+58+90-78-74-16-56-22+0 +nG_montgomery25519 14 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 14 32 29452 +3300+237+6-40-3-20-50+0-65+40+82+1111+527-75-25 +nG_montgomery25519 15 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 15 32 29403 +942+130-49+0-104-54+62-74-63+312+99+94+21-12-43 +nG_montgomery25519 16 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 16 32 29400 +636-89+0-40+111-124+30+4+79-78-15-53+78-54+27 +nG_montgomery25519 17 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 17 32 29387 +791+42+281+104+162-79-34+5+3-70+0-85-27-38-93 +nG_montgomery25519 18 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 18 32 29410 +731+81+33-94-119+13+13+0+29-57-11+55-75-66-75 +nG_montgomery25519 19 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 19 32 29363 +690+115+26+59-57+21-41+53-68-6-106-1+43-25+0 +nG_montgomery25519 20 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 20 32 29423 +1009+18+150-85+8+0+42-131-61-40+63-64+17-34-21 +nG_montgomery25519 21 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 21 32 29404 +671+108-60-68+7+8-73-66-117+0-3+12-14+38+41 +mGnP_ed25519 selected implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 selected 33 113771 +25284+5251+2033+377+407-105-174-106+0-29-82+109+21-216-115 +mGnP_ed25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 0 33 162765 +18316+4213+1137-107-233-165+103-53-285-59+77-271+638+0+177 +mGnP_ed25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 1 33 167202 +8336+3893+1092+368+730+548-130+390+0-601-730-439-737-692-282 +mGnP_ed25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 2 33 166966 +8772+3837+1779+743+315+442-184+136-114+0-192-204-244-154-284 +mGnP_ed25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 3 33 165604 +7436+3545+1270+355+206+9-71-96-1063+103+0-499-883-338-678 +mGnP_ed25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 4 33 167631 +9761+4497+2095+701+331+117+161+0-86-273-255-141-399-171-399 +mGnP_ed25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 5 33 165177 +8983+4258+1658+678+841+0+84+409-363-595-415-1003-1075-748-886 +mGnP_ed25519 6 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 6 33 164932 +8726+4767+2216+1040+1140+306+1236-66+0-58-56-14-68-764-370 +mGnP_ed25519 7 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 7 33 167550 +9593+3683+1789+888+142+304+64+0-340-678-642-522-692-848-806 +mGnP_ed25519 8 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 8 33 155153 +19189+3815+1821+858+860-93+78+4-18+0-142-166-194-260-376 +mGnP_ed25519 9 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 9 33 152430 +8626+4691+2247+1507+1543+627+0-220+214-121-45-159-199-189-199 +mGnP_ed25519 10 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 10 33 154829 +9041+3548+1712+282+46-9-94+0+51+29-433-239-343-287-371 +mGnP_ed25519 11 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 11 33 152148 +8271+3966+2408+1130+213+577+22+0-342-52-446-458-668-762-908 +mGnP_ed25519 12 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 12 33 154610 +7322+3605+1286+528+1049+323+23-300-276-594+0-180-180-414-294 +mGnP_ed25519 13 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 13 33 152186 +9029+4519+2057+1866+986+292+488-38-188+0-404-196-116-354-442 +mGnP_ed25519 14 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 14 33 154302 +8688+3818+1392+886+512+446+348+0-256-204-246-104-70-185-292 +mGnP_ed25519 15 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 15 33 156133 +8014+3834+1627+834+782+1105+0-348+59-157-307-497-511-645-511 +mGnP_ed25519 16 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 16 33 151673 +22571+3645+1202+313+26+70-46-24-158-112+34-252-88-180+0 +mGnP_ed25519 17 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 17 33 151029 +9043+3787+1620+628+371-183-147-331-250-201+0-73+7-310+24 +mGnP_ed25519 18 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 18 33 152499 +6978+3494+1436+712+475+779-104+35-102-82+0-160-134-257-26 +mGnP_ed25519 19 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 19 33 152199 +7665+3905+2002+970+139+136+352-46-96-175-151+0-146-146-332 +mGnP_ed25519 20 implementation amd64-avx2-10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 20 33 121390 +18211+3336+989+570+118-330-236-226+28-40-224+0-42+4-64 +mGnP_ed25519 21 implementation amd64-avx2-10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 21 33 121880 +6445+2723+1325+564+28-44-12+54-120+0-62-94+691-161-227 +mGnP_ed25519 22 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 22 33 133698 +19194+3268+1546+435+150-54+252-223-89-6-24-228+104-194+0 +mGnP_ed25519 23 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 23 33 135870 +6431+2953+1773+1067+935+254+238-24+0-208-14-39-257-255-86 +mGnP_ed25519 24 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 24 33 132778 +4910+2462+809+360+507+193+78-10-104-10-194-280+0-18-154 +mGnP_ed25519 25 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 25 33 134042 +5511+2692+1153+1460+249+96-312-214+0-52-336+144-402-706-648 +mGnP_ed25519 26 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 26 33 149117 +23084+4234+1159+203+272-202-10+76-26+0-64-178+116-62-96 +mGnP_ed25519 27 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 27 33 151224 +8075+3232+1448+284+140-190+60-44+0+14-132-246-30-212-172 +mGnP_ed25519 28 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 28 33 151286 +6863+2646+601+506+97-130+1616+182-187+0-245-277-133-499-366 +mGnP_ed25519 29 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 29 33 149134 +8307+2964+1421+1048+667+228+100-59+0-16-160-58-477-446-474 +mGnP_ed25519 30 implementation amd64-avx2-9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 30 33 119341 +19571+2510+1071+332+10+39+0-110+120-48-207-180-258-157+0 +mGnP_ed25519 31 implementation amd64-avx2-9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 31 33 118278 +5745+2195+959+396-193+0+202-194-134+14-74-26-113-87+1295 +mGnP_ed25519 32 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 32 33 132814 +17778+3156+968-122-213-71-200-88+34+0+59+131-125-68+141 +mGnP_ed25519 33 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 33 33 132551 +6687+2502+795+638+665+531+103+0-138-285-307-351-431-197-400 +mGnP_ed25519 34 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 34 33 131400 +5803+2095+803+68+14+136+30+0-14-142-232-58-54-2-104 +mGnP_ed25519 35 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 35 33 132476 +6042+2669+1357+938+468+469+820-199+0-294-329-537-351-303-240 +mGnP_ed25519 36 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 36 33 151604 +22764+6484+2005+835+419+0-90+85+55-197-143-133-85-199-121 +mGnP_ed25519 37 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 37 33 151212 +10808+4547+2588+1417+748+186+147-112-98-196+0-90-24-210-326 +mGnP_ed25519 38 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 38 33 151303 +8351+3342+1045+456+0+132-25-103+1743+658-366-290-136-312-139 +mGnP_ed25519 39 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 39 33 149241 +10237+4088+2225+1150+770+381+478+0-7-124-275-402-357-174-145 +mGnP_ed25519 40 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 40 33 148908 +9784+3763+1928+457+132+140+176+0-304-190-200-209-92-145-8 +mGnP_ed25519 41 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 41 33 152273 +9037+4200+1859+1066+432+616+0-2-220-288+738-984-872-1010-770 +mGnP_ed25519 42 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 42 33 149954 +10079+4664+1809+1112+196+66+134-26+0-128-576-354-362-468-506 +mGnP_ed25519 43 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 43 33 151740 +9578+3497+963+537+298+37-78+160+0-76-259-507-355-854-709 +mGnP_ed25519 44 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 44 33 115351 +11045+2968+559+261+98+84-160-206-100+0-310-412-328-478+470 +mGnP_ed25519 45 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 45 33 115229 +7821+3030+1578+660+653-243+236+0-256+27-167-219-306-519-194 +mGnP_ed25519 46 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 46 33 128479 +16260+2733+834+183-41+321-133+71+202+0-109-73-89-137-172 +mGnP_ed25519 47 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 47 33 130567 +4833+3193+1949+905+394-315+313+66-121-358+0-552-565-655-505 +mGnP_ed25519 48 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 48 33 127717 +4984+2378+829+277+14-21-295-125-21-177+515+0+59-191-138 +mGnP_ed25519 49 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 49 33 129935 +4184+2843+1768+1049+667+63+163+0-394-145-11-197-516-478-315 +mGnP_ed25519 50 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 50 33 378121 +12683+4121+1599+1552+881-239+0-527-499+306-31-395+1560-138-265 +mGnP_ed25519 51 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 51 33 381578 +14438+4292+2006+934+1006+568-94-301-40-268+328+0-73-75-544 +mGnP_ed25519 52 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 52 33 374774 +12844+4951+2696+1200+674+514-220-106-88+0-118-184-174-58+80 +mGnP_ed25519 53 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 53 33 386639 +13850+4762+2469+1801+901+0+260+126-107-100-261-127-490-424-373 +mGnP_ed25519 54 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 54 33 382665 +12261+4964+1659+619+531-540-487+761+234-619+0-120-355-532-601 +mGnP_ed25519 55 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 55 33 388750 +13194+4482+2031+290+796+0-9-608-336-234+436+198-169-241-7 +mGnP_ed25519 56 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 56 33 381078 +12602+4315+2095+1214+162+0-310-270+166-88-1222-1030-536-406+259 +mGnP_ed25519 57 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 57 33 389587 +14962+5166+2436+1282+937+467-62+29-191-36-94-72-323-217+0 +dh_x25519 selected implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair selected 32 29591 +8053+330+29-66-9-79+104-24-26+26+63-6+100+0-27 +dh_x25519 selected 32 92355 +988+594-94+230+219+0+307-475-485-67-105+59+55-15-269 +dh_x25519 0 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 0 32 29605 +2293+0+44-46-85+30-68+5-88+9+43-121-17-74+21 +dh_x25519 0 32 92226 +786-208+66-172-34+91-194+292-316+40-162+158-128+128+0 +dh_x25519 1 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 1 32 29585 +888-82+52-27+37+2-16-74-76+36+14+0-57-65+9 +dh_x25519 1 32 92264 +492+176-172-136+157+319+0-195+2-198-32+66+28-156-274 +dh_x25519 2 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 2 32 29602 +766+0-54-42+140-78-99-101+17+23+27-20-84+43+32 +dh_x25519 2 32 92118 +1116+160-78+151+120+92+324+0+156-150-146-16-72-18-56 +dh_x25519 3 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 3 32 29604 +816+1485+328-122+20-67+133+61-141-32+0-11-12-81+35 +dh_x25519 3 32 92164 +586+0-242-2+44+246-144+20-206+74+102-20-36-122+216 +dh_x25519 4 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 4 32 29652 +1336-25+52-63+2+30+24-38+5+0-53-179-4-176+48 +dh_x25519 4 32 92184 +602+394+249+146+42+98-30-270+0-338+160-150-216-188-32 +dh_x25519 5 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 5 32 29622 +488+80-35+29-40-7-75+0+90-11-26+15+5+16-3 +dh_x25519 5 32 92231 +939+205+137+0-117+103-63-13+45-241+27-57-17+103-63 +dh_x25519 6 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 6 32 29588 +899+120-20+86-4+10+28+69-37-39-20-34+10-56+0 +dh_x25519 6 32 92256 +526+158-98-201+46+58+0-208-148+1011-28-92-30+74+38 +dh_x25519 7 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 7 32 29596 +1688+0-20+20+70-104-49-40+12-5+41-43+22-16+35 +dh_x25519 7 32 92242 +406+80+200-37+208-249-205+0+144+54-14-144+54-14-144 +sign_ed25519 selected implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair selected 32 30438 +11146+457+36-19-128-24+0+25-130+2-34+14-208+55-20 +sign_ed25519 selected 0 33675 +7571+267+97-223-119+52-3+0+51-68-80+39-61-5+76 +sign_ed25519 selected 1 33684 +1259-3+68-85-37-72+35+79-25-162+252+0-35+94+59 +sign_ed25519 selected 2 33704 +694+164+44-14+132+82-54+43-1+191+0-70-21-24-120 +sign_ed25519 selected 3 33727 +563+132-7+13-90+173-3-13-29+19+0+16-72+125-7 +sign_ed25519 selected 4 33750 +505+1423+505+49-43-28-54+0+168+185-41-72+35-97-41 +sign_ed25519 selected 6 33706 +876+339-50-89+0+69+7-64-59+26-84+15-159+69-46 +sign_ed25519 selected 8 33663 +780+313-27+197-60-112-35-6+3+0+8+14+74-135-139 +sign_ed25519 selected 11 33679 +437+231-63-29-3+131-39+33-123+0+68-156+61+99-160 +sign_ed25519 selected 14 33709 +701+153-155-152+62-76-84+39-89+107-94+0-74+94+13 +sign_ed25519 selected 18 33655 +807+164-64-20+46+26+0+206-91+164-16-43-60+201-19 +sign_ed25519 selected 23 33673 +690+229+11-51+62+0-110-92-124+70+91-148-100+17-82 +sign_ed25519 selected 29 33591 +852+206-8+0-116+107+29-41-33+59-47-21+113+256-78 +sign_ed25519 selected 37 33679 +881+22-177+0+170-22-39+15-62+4+115-6-41+56-39 +sign_ed25519 selected 47 33624 +437+124-75+1+65-1-49+1-52+0+15-92-30+132-84 +sign_ed25519 selected 59 34330 +696+344-8-6-116+57-94+194-9+64+108-60-31+158+0 +sign_ed25519 selected 74 34423 +758+273-31-65+128+84-80+0-26+66+91-62-67+94-75 +sign_ed25519 selected 93 35151 +856+265-2+0-7-8-61+86-127+58+41-114+18+383-89 +sign_ed25519 selected 117 35116 +603+1525+351-69-65+11-43+0-148-30+47+28-49-14+37 +sign_ed25519 selected 147 35162 +777+275-46-63+0+94-117+106-105+107+117-108-125+299-215 +sign_ed25519 selected 184 35980 +487+107+16+93-41+107-29-81-81+99-83-19-101+129+0 +sign_ed25519 selected 231 36618 +758+25-176-91+0-47-117+224-25+163+137+33-170+234-97 +sign_ed25519 selected 289 36591 +997+266-99-48+0-66+27+14-81-1+156+34-39+3-68 +sign_ed25519 selected 362 37977 +951+159-162-106+46+0+221+61+96-75+156-48-33-19-147 +sign_ed25519 selected 453 38867 +879+109+69-282+14-84-288+141-46+0+243-99-265-54+32 +sign_ed25519 selected 567 40191 +1597+193-51+0+59+125-43+198-10-5+48-27-40+108-64 +sign_ed25519 selected 709 41488 +919+330-31+55-117-10+0+0-142-38+53+3-160+105+53 +sign_ed25519 selected 887 43545 +977+252-129+61-54-20-31+32-64-17+49+16-1+142+0 +sign_ed25519 selected 1109 46312 +1137+246+27+0+223-22-54-39+25-71-74-23+62-61+196 +sign_ed25519 selected 1387 49156 +1010-11-149-26-39+1483+246+54-330+0-270+186-2+30+298 +sign_ed25519 selected 1734 52688 +1284+316+15-43-222+209+0+279+294+44-129-145-139-127-88 +sign_ed25519 selected 2168 57550 +1029+124+30-148-39+0-271+82-145+41-181-106+110-52+10 +sign_ed25519 selected 2711 63560 +1031+46+150+2+67+176+51-201-98-148-77-82-214+0-230 +sign_ed25519 selected 3389 70817 +1077+397+13-118+37-123-99+87+0+80+0-79-174-155-173 +sign_ed25519 selected 4237 79881 +1812+64-33-244+56-20+80-12+0-14+183+23-34-197+96 +sign_ed25519 selected 5297 91738 +1010+287-6+104+20-284-393+63-74+7+188-124-359+0-25 +sign_ed25519 selected 6622 105896 +1711+242+141+46+0+545-142-4+253-35-118-18+327-171-107 +sign_ed25519 selected 8278 124030 +1502-447-101+13+72+0-103+82-270-215+4-28+16-85+69 +sign_ed25519 selected 10348 146185 +1591+277+132-12-38-363-270+168-259+126-177+123-140+0+204 +sign_ed25519 selected 12936 173772 +1943+55+19-186-222+2045+327+160+0-118+149-182-90-63-85 +sign_ed25519 selected 16171 208290 +3138+216+116+129+84+0-38-77-105+46-71-75+27-46-10 +sign_ed25519 selected 20214 252632 +3358+140+0-46-421-58-185+1213+1742+357-8-75+3797+858-6 +sign_ed25519 selected 25268 307677 +3764+83+169+0-284+116-319+98-56+230-252-117-152-221+6 +sign_ed25519 selected 31586 375995 +5786+296-67-15-75+72-132-169+358+84+137-180+89+0-110 +sign_ed25519 selected 39483 461570 +4568+91+3049+596+62+0-311-83-54-138-197+54+98+0-225 +sign_ed25519 selected 49354 567506 +4657+4191+942+302+0+90+366-25-51-143-325-38-4-334+1821 +sign_ed25519 selected 61693 701117 +4822+404-238+92-188+29-76-412+1571+1423+196-115+0-216-22 +sign_ed25519_open selected 0 114432 +14798+3656+1380+434-210-90+14-42-64-50-26+222-520+0+94 +sign_ed25519_open selected 1 114014 +8338+3840+1770+892+1400-8+136-72+0+56-130-144-170-38-52 +sign_ed25519_open selected 2 115842 +7746+2310+712+410+0+184-30-10-30-28+6-80-92+42-216 +sign_ed25519_open selected 3 114500 +6924+1522+968+478+384+196+0-94-128-186-176+110-250-34-70 +sign_ed25519_open selected 4 114158 +7776+1884+1076+576+216+48-154-122+2+0-102-34-140-472-444 +sign_ed25519_open selected 6 115468 +8084+2492+1576+1402+1268+73+0-12-16+54-66-126-138-37-216 +sign_ed25519_open selected 8 115582 +6890+2228+1032+568+172-30+18-36-156-122+144+0-2-16-114 +sign_ed25519_open selected 11 113758 +7644+1490+770+546+162-52+76-50-70-122+0-58+54-184-46 +sign_ed25519_open selected 14 113774 +7184+1798+332-162+320+78+12+0-24-98-94-256-214-226+78 +sign_ed25519_open selected 18 114304 +8258+2890+1332+518+776-206+10-286-14-98-46+20+0-60-176 +sign_ed25519_open selected 23 114970 +6694+2100+1594+934+496+62-152-100-126-184-106+50-214-150+0 +sign_ed25519_open selected 29 114122 +7070+1268+900+438-102-10+0-162-142+40-26+78-56-166+198 +sign_ed25519_open selected 37 115066 +6852+1878+1032+456+244-172+24+326+0-94-172-160-288-260-250 +sign_ed25519_open selected 47 113684 +7556+2252+1198+958+919+17-35-63+102-6+0-82-165-193-96 +sign_ed25519_open selected 59 115244 +7114+1668+816+284+250+120-86-74-52-128+0-126-26-120+100 +sign_ed25519_open selected 74 115798 +7324+1902+550+350+160-70-174-92+24-98-202+0-4+10-170 +sign_ed25519_open selected 93 116190 +6988+2024+1232+726+306-344-200+0-168-138-96-152+78-156+52 +sign_ed25519_open selected 117 116098 +8524+2780+1298+744+1228+248+0+66-168-260-182-172-230-264-440 +sign_ed25519_open selected 147 116460 +7036+2712+1054+570-70+24-6+0+44-28+184-208-172-94-176 +sign_ed25519_open selected 184 116376 +6702+1812+578+258+60+108+110+0-102-340-172-266-190-154-170 +sign_ed25519_open selected 231 116878 +7380+1660+918+688+376-70+176-124-134-252+58-134-8-52+0 +sign_ed25519_open selected 289 114720 +8632+2122+1236+1330+113+136-44-104-176-54-38+0-120+32-278 +sign_ed25519_open selected 362 117346 +7644+2336+860+370+4+46+0-142+22-34-184-274-132-124-202 +sign_ed25519_open selected 453 117668 +7814+1624+636+284-2+136+196-14+210-20-214-256+0-342-104 +sign_ed25519_open selected 567 119368 +7294+2700+1574+1352+276+228-10-50+0+258-36-214-120-42-98 +sign_ed25519_open selected 709 120211 +8121+2184+545+126-114+0+200+60+37-23-224-106-215-223-77 +sign_ed25519_open selected 887 119892 +7996+2484+1110+704+398-142+124+0-224-98-122-358+260-140-232 +sign_ed25519_open selected 1109 120166 +7884+2364+500+302+98-152+18-74-12+0-264-178-166-244+34 +sign_ed25519_open selected 1387 121512 +7584+2440+1014+340+152+158+0-104-246-152-250-210-312+360-650 +sign_ed25519_open selected 1734 124564 +8236+2346+772+666+302+0+109-109-68-150-36-112-16-322+136 +sign_ed25519_open selected 2168 127608 +6858+1716+634+368-90+154-274-34-50-54-16+46-144+0+60 +sign_ed25519_open selected 2711 128604 +7932+1834+868+500+300+80-218-34-100+120-120-46-206-100+0 +sign_ed25519_open selected 3389 131926 +9074+3784+1747+1279+336+1126+17-132-136-133-23-175+0-33-68 +sign_ed25519_open selected 4237 137936 +7252+1910+618+598+196-208+4-242+0-242-206-36-178-136+100 +sign_ed25519_open selected 5297 145514 +7510+2116+464+430+256-80-46-60-16+222-168+90-42+0-42 +sign_ed25519_open selected 6622 151762 +7571+2942+613+438-132+24+110+505+0-131-686-485-498-516-593 +sign_ed25519_open selected 8278 161394 +8073+1238+782+366-5+286+152-198+0-518-318-248-240-100+178 +sign_ed25519_open selected 10348 171371 +8087+2507+1231+593-160-12-60-396+161-292+0-71+91+39-397 +sign_ed25519_open selected 12936 185620 +7902+4062+1360+245+34-49-234-359+33-415+82+0-176-264-84 +sign_ed25519_open selected 16171 201104 +8110+2189+818-110-29-207-264-104-110+0+1+63+42-339+92 +sign_ed25519_open selected 20214 225708 +8107+1506+648+2122+11-402-107-104-65+39-103+73+0-111-6 +sign_ed25519_open selected 25268 256292 +7327+1498+754+0-11+256+46-191-270-373+122-272-65+43-246 +sign_ed25519_open selected 31586 291483 +6734+1546-340+264+342+105-101-39+0-265+14-65-439-237+7 +sign_ed25519_open selected 39483 337148 +6586+2183+937+530+2188+316+85-60+0-354-1096-22-385-208-38 +sign_ed25519_open selected 49354 391475 +5678+2514+593-956-1395+60+2826+595+249-1505-37+0-28-219-1539 +sign_ed25519_open selected 61693 460585 +6545+1380-106-241-392+3734+1153+258-338+127-170-23+19+0-118 +sign_ed25519 0 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 0 32 30400 +3958+418+62-103-12-15-48+24+0+127-21+42-45+162-15 +sign_ed25519 0 0 33919 +2448+339+0+86-24-207-259-264+7-193+1139+2409-148-169+116 +sign_ed25519 0 1 33845 +1338+140-137-110+69+105+0-66-57+31-117-109+51+14-18 +sign_ed25519 0 2 33755 +1247+585-80-6+0+232+6-47-44-52+23-9+63+76-21 +sign_ed25519 0 3 33786 +1234+61+0-87+111+26+43-48-163+76-174-83+0+25-71 +sign_ed25519 0 4 33789 +720+261-115-44-44+0-96+73+4+172-49-80+59-88+25 +sign_ed25519 0 6 33768 +623+268-47+51-19+156+55+0-104+86-104+30-150-90-51 +sign_ed25519 0 8 33818 +742+241-48+18-77+2+0-21-19+59-19+1-124-26+9 +sign_ed25519 0 11 33793 +800+213-82-54+181+0-83+92-98+144+46-202-114+185-77 +sign_ed25519 0 14 33799 +501+31-54-7+0-47-100+3+0+113+15-133+62-78-177 +sign_ed25519 0 18 33741 +681+123-44-12-41+45+31-182+0+63-56+7-42-67+63 +sign_ed25519 0 23 33762 +778+124+65-35-54+26+13-100+74-76-71-26-37+63+0 +sign_ed25519 0 29 33810 +716+223-211+101+0+96-167-13-129+1+60-150-169+14-135 +sign_ed25519 0 37 33737 +924+316+18-72+19-96-74-44-90+142+35+0-60+154-15 +sign_ed25519 0 47 33821 +761+217-130+7-161-87-135-81+28-107+1106+141-85+0+27 +sign_ed25519 0 59 34455 +1068+516+82-64+3+203-33+145-10-11+0-27+0+69-74 +sign_ed25519 0 74 34544 +788+201-54-111+0+188+137-96-117+108+22-175-26+81-7 +sign_ed25519 0 93 35205 +1192+366+67-88-114+239-10-4+94+323-42+0-134-27+34 +sign_ed25519 0 117 35239 +853+152+0+82-28+40-74-23-36+314-38-25+9+125-15 +sign_ed25519 0 147 35291 +795+202-115-146-50-119-121-56+21+36-79+14+14+42+0 +sign_ed25519 0 184 35982 +1677+163+124+152+16-118-31-69-57-60-70+0+5-76+1 +sign_ed25519 0 231 36700 +1136+232+86-169-8+23-34+105+67+0-26-108-54+153-124 +sign_ed25519 0 289 36712 +841+132+46+38-13-116+42+8+22-29-18+0-13-8-94 +sign_ed25519 0 362 38101 +1097+18-4+20-21+0-124-12-61+121+116-27-98+237+4 +sign_ed25519 0 453 38777 +828+147-30-118-76+184-52+19-46+226+12+0+109-17-5 +sign_ed25519 0 567 40292 +810+201-34-129-101+0-87-100+107-50+148-74+42+85+6 +sign_ed25519 0 709 41651 +1004-48+0+77-114-53+83-141+104+998+890+180-74-10-60 +sign_ed25519 0 887 43752 +1055-78-59-105-27+21+0+12+45-2+35+106-17+62-49 +sign_ed25519 0 1109 46564 +1003+123-59-68-91+86-211+7+200-245-37-102+164+0+40 +sign_ed25519 0 1387 49422 +1014-5+21+47-84+291-246-54+159-325+27-398+121-146+0 +sign_ed25519 0 1734 52927 +821+126-84-55-13+77+43+0-155-96+232+134-161+80-24 +sign_ed25519 0 2168 57825 +1053+37+102-243-96+73-125+181-132-161+129-85+8+0-87 +sign_ed25519 0 2711 63638 +923+153+215+50+256-19+139-180-49-149-297+97-249+0-198 +sign_ed25519 0 3389 70968 +1011+101+149+0-48+348-3+231-97-111+76-298-170-271+36 +sign_ed25519 0 4237 80068 +880+151-378+113-477+104-345+94+1167+157+0-218-211-330-315 +sign_ed25519 0 5297 91686 +991+322+106+91-5+73-377+37+0-93-34-4+136-184-142 +sign_ed25519 0 6622 106218 +1133+155-19-277+401-302+49+87+58-156+0-198+128-33-349 +sign_ed25519 0 8278 124051 +1333-115+350+14+76-323-194-79+0-109+423-158+32+110-298 +sign_ed25519 0 10348 146418 +1796+77-165-241+0+101-9-141-434+1294-97+82+23-224+57 +sign_ed25519 0 12936 173779 +2419+238+107+193-132+267+54-16-11-50-23+0-27-26+65 +sign_ed25519 0 16171 208356 +2391+221-66+41+98+80-173-35+0-129-33-57+33+5-52 +sign_ed25519 0 20214 252807 +4088+107+47+54-52-140-67+197-48-142+0-88+59-365+40 +sign_ed25519 0 25268 307569 +4226+559-7+229+291+0+69-53-18-259+2548+333-148-129-254 +sign_ed25519 0 31586 376065 +4293-47-85-55+743+74+84-76+243+0+42-18-231-296+1782 +sign_ed25519 0 39483 461117 +5037+419+0-254+341-131+1495+137-300-85+0-272-355+1519+3081 +sign_ed25519 0 49354 567613 +4623+243-313+0-120-471-194-334+147-253-206+3029+985+309+23 +sign_ed25519 0 61693 701228 +4858+289-277-67-116+811+1848+4535+917-53-33+103-153+0-410 +sign_ed25519_open 0 0 115338 +10332+1870+836+1775+272-132+140-196-14+72-14-36-194+0-308 +sign_ed25519_open 0 1 113888 +7126+1826+458+322+64-50-50+62+80-120-204+0-176-118-162 +sign_ed25519_open 0 2 113878 +7180+1502+650+286-2+40+42+60-28-16-116-256-50-52+0 +sign_ed25519_open 0 3 114944 +6296+1952+2144+269+134-108-124+0-68+0-36-46-198+14-84 +sign_ed25519_open 0 4 114184 +7786+1844+1178+1751+245+4+228-118-12-16-36-88+0-20-112 +sign_ed25519_open 0 6 115188 +7304+1866+896+444+40+96-74+68-60-60-6+0-130-18-30 +sign_ed25519_open 0 8 115052 +6926+1890+1090+384+168+0+24-338-70-278+2-384-212-112-112 +sign_ed25519_open 0 11 116148 +6484+1262+98+52+74-42-118-10+122-112+0-230+118-280-104 +sign_ed25519_open 0 14 115494 +6492+2444+2014+441+174-230-42+0-94-178-12+76-156-56+210 +sign_ed25519_open 0 18 114658 +7422+2482+1146+608+192+0+170-22-298-80+6-178-34-118-114 +sign_ed25519_open 0 23 115442 +6900+1312+460+186+204+4-140-254-206-70+18-104-48-200+0 +sign_ed25519_open 0 29 115448 +7056+1346+372+474-196+0+78+110-236-80+52-128-180-132-112 +sign_ed25519_open 0 37 114624 +7322+2466+1842+876+350+0-142-170-12-220+72+40-102-320-98 +sign_ed25519_open 0 47 113498 +7860+2374+958+424+52+164-166-6-70-66+38-14-176-64+0 +sign_ed25519_open 0 59 116326 +6996+2208+438+506+0+78-302-166-196+28-124-244+84-98-156 +sign_ed25519_open 0 74 116228 +6460+2044+718+622+66-144-146+0-250-192+42+104-200-70-54 +sign_ed25519_open 0 93 115534 +7092+1902+1378+84-274-428-422-372-514-516+930+550-11+0+214 +sign_ed25519_open 0 117 116180 +7546+2076+996+566+168+38-140-32-72+0+68-112-50-104-218 +sign_ed25519_open 0 147 116038 +6426+2438+1014+416+200-40-148-302+36-292+8-136+0-330-12 +sign_ed25519_open 0 184 116116 +6772+1798+668+484-74+0+264-62-286+0-136-124-198+34-224 +sign_ed25519_open 0 231 116438 +7904+1612+618+428+372-76-10-306+90-102-88+0-38+232-132 +sign_ed25519_open 0 289 116388 +7507+1845+534+440+268+32+112+0-116-212-394-166-162-240-120 +sign_ed25519_open 0 362 117952 +7208+2948+1250+554+76+50-116-156-192+0-196+86-280-50-8 +sign_ed25519_open 0 453 118650 +7600+2140+638+140+20+166+50+0-86-84-196-38-326-340-112 +sign_ed25519_open 0 567 117900 +8192+1568+546+402+222-118-142-122-342+0-130-178-186+1052+3 +sign_ed25519_open 0 709 119544 +7982+1930+1002+616+300+270-24-18-226+4+0-80-2-80-222 +sign_ed25519_open 0 887 118726 +7288+1588+392+134-142-198+48+6-146-284-80-14+94+0-12 +sign_ed25519_open 0 1109 121713 +6875+1905+787+137+7-105+145-115-203-293-235-515+1097+0-487 +sign_ed25519_open 0 1387 122748 +6950+2098+946+368+86-112+0+36-70-130-146-128-42+40-96 +sign_ed25519_open 0 1734 123830 +7088+2360+1039+636+169+20-53+45-20+0-53-27-182-112-127 +sign_ed25519_open 0 2168 126958 +7628+2622+862+712+8+54+26-70-134-266-198-152+0-110-68 +sign_ed25519_open 0 2711 128704 +7442+1964+596+374+12+773+262+0-34-146-332-278-208-250-190 +sign_ed25519_open 0 3389 134710 +7538+2476+1002+454+426+2-152+0-74-42-146-140-74-26+38 +sign_ed25519_open 0 4237 138788 +7092+1980+816+638+412-32+22-118+38-36-26+0-150-84-56 +sign_ed25519_open 0 5297 145966 +7274+1562+378+370-128+294-358+46+0+1041-105-474-242-334-280 +sign_ed25519_open 0 6622 150170 +7718+2195+1197+438-191-196-308-264-14+60-231-282+212+2+0 +sign_ed25519_open 0 8278 159822 +6777+2487+737+166-110+0+28+144-66-62-260-322-152+148+0 +sign_ed25519_open 0 10348 170516 +7413+1829+422+304-186+607+864-94-31+40-514-390+0-114-96 +sign_ed25519_open 0 12936 185772 +7451+1728+711+225+112-42-33+57+185-95-43-175+0-182-157 +sign_ed25519_open 0 16171 203332 +8637+2671+1160+582+253+0-9-25-192-9+1214+455-13-126-264 +sign_ed25519_open 0 20214 227108 +8653+2076+1075+96-185+0-208-181+62-263-132+307-351-89+74 +sign_ed25519_open 0 25268 256015 +8074+3208+814-73+174-185+67+2045-100+353-381-154+0-530-110 +sign_ed25519_open 0 31586 290970 +7470+1443+313+780+322-90-52+181+0-865+66-44-817-110-37 +sign_ed25519_open 0 39483 337537 +7473+2182+499+333+14-71+275-256-248+0-164-1015-33-144+98 +sign_ed25519_open 0 49354 390631 +6869+2677+651+322+352-82+63-272-459-70-171-133+0+47-183 +sign_ed25519_open 0 61693 460346 +9325+3252+673+507+368+166-163+160+0-131-262-138-28-75-273 +sign_ed25519 1 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 1 32 30355 +4134+240+17+55-14+61+138-74-86+15-53-19+0-82-36 +sign_ed25519 1 0 33610 +2328+230-59+52+0-11+171-8-41-126+30+144+33-39-92 +sign_ed25519 1 1 33537 +1342+224+0-64+115-61+53-62+0-31-15-24+116+102+43 +sign_ed25519 1 2 33572 +717+9-37-26-55+0-56-65+5+29+14-40+30+24-137 +sign_ed25519 1 3 33606 +828+219-122-133+30+0+27-50+56+40-2-40+8-65-162 +sign_ed25519 1 4 33589 +590+177-76-25-21+76-134-6+9+0+50-11-77+44+31 +sign_ed25519 1 6 33556 +633+175+33-108+46-80-170+62-105-9+0-42+22+101-106 +sign_ed25519 1 8 33613 +614+429-73+64-39-85-78+158-2+94-21+6+54+0-51 +sign_ed25519 1 11 33545 +818+220-61-53-45-55-46+160+63+123+56+0-35+167-54 +sign_ed25519 1 14 33540 +673+25-21+179-7+4-12+11+0-38-16-1+13+17-28 +sign_ed25519 1 18 33552 +981+13-5-106-32-58+21-26+55+66+0-35-45+1174+554 +sign_ed25519 1 23 33568 +977+137+145-83+133-121-102+43+0+134-2-3-24+152-6 +sign_ed25519 1 29 33538 +839+83-30+37+30-11+78-22+59-16+0-51-100-2+27 +sign_ed25519 1 37 33611 +939+177-45+81+25+60-95+49+5-14-5-37-35+0-26 +sign_ed25519 1 47 33587 +708+275-60+116-77-108-76-46-83+0-2+23+79+172+27 +sign_ed25519 1 59 34341 +779+210-6-36+35+0-78+14-60+101+82-32-2+137-111 +sign_ed25519 1 74 34325 +677+139+51-51+0+17+1+118-55-26-39-20+7-45-21 +sign_ed25519 1 93 35062 +633+51-188-5-99+0+20+88+14+47-16-81-134+5-74 +sign_ed25519 1 117 35069 +746-90-19+63+49-28-100-14+41+20+3+0-26+83-38 +sign_ed25519 1 147 35072 +635+201-60+1-42+114-64-35-172+43+0+36-6-33+32 +sign_ed25519 1 184 35979 +713+243+61-35+15+174-48-98-1+137-22-6-46+160+0 +sign_ed25519 1 231 36489 +836+116+0-37+99-2-26+64-66+46-20-73+4+32-61 +sign_ed25519 1 289 36514 +686+66-41+44+61-34-168+19-80-89-34+0+3+13-9 +sign_ed25519 1 362 37967 +817+117-114-80-88-115-100+1494+545+199+47+80+0-19-46 +sign_ed25519 1 453 38579 +2338+139-20-26-25-49+41+109-41+0-15+19-100+41+118 +sign_ed25519 1 567 40225 +629+56-184-41+189+123+9-216-148-67-160-170+99+17+0 +sign_ed25519 1 709 41410 +1478-44+37-91+127-170+45+71-25+59+11+0-103-39-97 +sign_ed25519 1 887 43507 +1175+294-38+0-35+86+59-22-53+11+151-16+147-39-33 +sign_ed25519 1 1109 46313 +1046+202-31-34+0+58-107+224-57-76+33-134+99+13-124 +sign_ed25519 1 1387 49222 +1465-313+62+191-11-62+0-58+11+70-57+38-154-90+86 +sign_ed25519 1 1734 52700 +1191+58-159+98-151+68-142-185-41+0-171+124-115+95+3 +sign_ed25519 1 2168 57575 +1356+170-85+241+33+230-40+84-164-236-309-231+146-78+0 +sign_ed25519 1 2711 63287 +930+134+69+97-74-69+0+24-7-53-17-235-253+1388+214 +sign_ed25519 1 3389 70780 +1589+331+16+218-90+50-198-73-3-97+165-246+139+0-146 +sign_ed25519 1 4237 79727 +1378+20-38-179+229-174+122-142+91-91+136+0-54+13-137 +sign_ed25519 1 5297 91580 +1006+168+0+84-10-177-16-126-12-65+30-520+5+4+98 +sign_ed25519 1 6622 105931 +1658-58+230+498-218-63+243-113-198+136-53+198-124+264+0 +sign_ed25519 1 8278 123915 +1640+292+354+0-128-115-345-195-10+11+1206+1197+97-101-155 +sign_ed25519 1 10348 146024 +1884+92+149+126-16-57+0+226-213-20+43-19-43-57+89 +sign_ed25519 1 12936 173631 +2120+241+170+208-218-3+20-5+0+62-67-100-43+14-60 +sign_ed25519 1 16171 208426 +2008+51+108-188-330+28+1405+445+22-60-150+0-259-209-53 +sign_ed25519 1 20214 252553 +3140+296+164+30-4+66-231-102-87-152+25+176+0-46-46 +sign_ed25519 1 25268 307590 +3789+179-84+2073+437+65-81-58-145-341-83+14+22+0-2 +sign_ed25519 1 31586 375934 +4293+465-70-193+170-161+177-138+1949+2110+104+0-129-421-418 +sign_ed25519 1 39483 461402 +3940+374-68-153-4-116-222-168+56+1681+1379+115-89+0+66 +sign_ed25519 1 49354 567364 +4750+87+264+454-25-53-53+3199+746+137-96+0-13-56-2 +sign_ed25519 1 61693 701437 +4724+0+843+1453+20-288-413+24-338-239-249-329-171+1426+1289 +sign_ed25519_open 1 0 114860 +9454+2342+396+170-94+0-212-124-130-108-146-122+174+58+2 +sign_ed25519_open 1 1 115202 +6180+1526+384+424-352-330+90-270+274-146-382+46+0-224-284 +sign_ed25519_open 1 2 115082 +7260+3140+972+892+156-72+140+280-188-194-104-2-186-196+0 +sign_ed25519_open 1 3 113252 +7236+3656+1532+638+93-181+50-174-118-120+0+107-23-116-4 +sign_ed25519_open 1 4 116104 +6652+1150+386+0+422+104-146+126-80-380-314-176+18-146-456 +sign_ed25519_open 1 6 115112 +5414+2176+756+106+140-46-162-216-26-242+0-150+342+134-368 +sign_ed25519_open 1 8 113736 +7036+1710+526+286-140-108+46+0+52-248-2-284+166-218-360 +sign_ed25519_open 1 11 115342 +6870+5153+1729+222-184+58+34-108-238+0-48-68+30-114-180 +sign_ed25519_open 1 14 115056 +7850+2426+970+668+78-146+110-196-320-162+0-234-224-198+20 +sign_ed25519_open 1 18 115346 +6102+1866+1290+834+386+262+0-28+126-26-182-302-68-18-74 +sign_ed25519_open 1 23 115188 +6538+1610+744+548-82-166+260+26-68-174+0-176-66-178+128 +sign_ed25519_open 1 29 114610 +7670+1422+789+59+407+281-257-37-102-117+0-37-294-178+148 +sign_ed25519_open 1 37 114242 +7110+1712+572+202-80+40-106-150+0+54-96-218-64-188+78 +sign_ed25519_open 1 47 114248 +7900+2874+1354+880+394+158-30+0+74-140-32-238-332-136-146 +sign_ed25519_open 1 59 114916 +7420+1982+1404+814+54+0-78+12-106-58-210-60+10-240-34 +sign_ed25519_open 1 74 114792 +8795+1728+946+404+122-210-110-190-200+2-110+66-284-44+0 +sign_ed25519_open 1 93 113852 +7436+1630+678+292+94-24-116+168+0-198-216+182-242-2-186 +sign_ed25519_open 1 117 116118 +6926+2178+490+452-14-30-160+204-148-88+0+166+164-152-112 +sign_ed25519_open 1 147 115114 +7734+2292+982+872+206+28+66+0-210-44-208-290-332-186-178 +sign_ed25519_open 1 184 116363 +8751+2530+891+658+27-175-62-159-109-315+8+0-208-77+115 +sign_ed25519_open 1 231 117090 +7154+1706+386+580+52+162+40-134-56-52-184-130-64-142+0 +sign_ed25519_open 1 289 117368 +7102+2082+1022+708+34-174+24-172-10-118-18+40+0-36-256 +sign_ed25519_open 1 362 117246 +6742+1200+357+108+189+262+0-141-225-208+54-164-162-126-280 +sign_ed25519_open 1 453 116786 +7826+2272+1108+684+8+0-26+186-216+8-80-238-62-516-338 +sign_ed25519_open 1 567 119144 +6510+1864+830+338+330-198+236+16+0-166-118-272-478-574-292 +sign_ed25519_open 1 709 118968 +7886+2346+936+768+504-190+232-232-78-100+34-88-28-38+0 +sign_ed25519_open 1 887 119050 +7216+1962+984+400+242-110-2+0-154-34-86+36+688-248-548 +sign_ed25519_open 1 1109 121494 +7588+2316+668+224+78-362+202-392+96+0-208-98-30-456-206 +sign_ed25519_open 1 1387 121844 +6564+2058+1174+734+626-164+0-356+174-286+10-42-20-2-190 +sign_ed25519_open 1 1734 124670 +7792+1978+1014+466+139-60+11-134-112+0-22-257-127+44-157 +sign_ed25519_open 1 2168 126972 +7212+1950+1276+804+326+176+0+425-512-300-502-132-136-366-206 +sign_ed25519_open 1 2711 129300 +7862+1646+304+232-148+334-160-96-186+120+0-276-134-196+140 +sign_ed25519_open 1 3389 133892 +7480+2466+1300+854+184-68+294-208+0-64+8-232-10-40-10 +sign_ed25519_open 1 4237 138314 +7946+1852+522+302-154+118-188-44-278+124+0-360-130+769-123 +sign_ed25519_open 1 5297 144608 +7080+1384+752+108+146+8-8-60+0-216-152+20-148-142-56 +sign_ed25519_open 1 6622 150528 +8171+3058+1033+546-4-116+326-48+112+0+246-150-296-162-82 +sign_ed25519_open 1 8278 160618 +7011+1505+440+48-224-32+132+276-246-236-384+1173+0-471-500 +sign_ed25519_open 1 10348 171644 +8326+1787+781+189-394+73-123+0+28-326-157+45-31-83-332 +sign_ed25519_open 1 12936 185379 +8935+2510+1008+658+74+103+92-227-72-246+0-299-92-82-120 +sign_ed25519_open 1 16171 202314 +8357+4370+1061+119+176-140+34+0-202-54-298-92-62+138-139 +sign_ed25519_open 1 20214 227548 +7848+1631+339+201-21+7-442+0-239+215+13-167-130-255-239 +sign_ed25519_open 1 25268 255463 +8051+2289+242-66+298-130-31+45+26-38-63+185-163-172+0 +sign_ed25519_open 1 31586 291565 +5892+1570+735+112-376+68+0-17+78+1726-252-690-293-578-646 +sign_ed25519_open 1 39483 337634 +6595+2550+754+335+0-1199-201+95-489-170-219-495+11-111+1446 +sign_ed25519_open 1 49354 392196 +5978+899+430+376+156+0-178-285-1532-95+37-324-1430-1709+1283 +sign_ed25519_open 1 61693 461348 +7091+2349+263+299+0+107-23-21-214-74-93-358+4090+1420-167 +sign_ed25519 2 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 2 32 30424 +3952+271+7+48-78+18-65-98+6-80-12-77+0-74+73 +sign_ed25519 2 0 33981 +2885+501+135-49+48+64-33-75-189+0-81+24-134-55+15 +sign_ed25519 2 1 33990 +982+87-267+210+15-53-24+0-140+3-119+9-107+123-38 +sign_ed25519 2 2 34020 +576-213-190+93-102-41-34+112+0+99-27-3+43+125+156 +sign_ed25519 2 3 34112 +286-12-98+61+19-20-243+241-119-83+51+33+0+9-43 +sign_ed25519 2 4 34027 +509-71-280+103+24+111+145-22-81-103-51+167+0-79+34 +sign_ed25519 2 6 34030 +564-257-250+52-178-235+54+156+61+15+13+0-198-62-29 +sign_ed25519 2 8 33929 +630+85-28+16+30+1246+103-92+0-104+1-12-118-111-20 +sign_ed25519 2 11 33892 +517+160-35-28-140-43+0-53+117+68-38+28+0+5+88 +sign_ed25519 2 14 33920 +334-80-130+0+32+71+28-137+12+72-42+54-22-66-46 +sign_ed25519 2 18 33915 +686-114-63+132-165+30-49+51-82-128+122+58-109+0+87 +sign_ed25519 2 23 33741 +509+120-11+104-68+103+85+46+23-25+0-63-131-53-27 +sign_ed25519 2 29 33827 +286-67+0-25+48-32+20-61+40-67+27-172+24+27-142 +sign_ed25519 2 37 33763 +622+63-102+35+1-190+16+0-77-69-66+84+5-88-48 +sign_ed25519 2 47 33723 +380+268+0-19-33+39+34+32-60+145-96-64-24-9+90 +sign_ed25519 2 59 34578 +421+20+0+33+1-35-118-59-50+79-20+53+21-69-30 +sign_ed25519 2 74 34501 +479+0+83-23-30-64+4-42-4+41+47-83+5+39-47 +sign_ed25519 2 93 35319 +508+49-97-51-23+84-87+3+55-170-86+12+0-21+0 +sign_ed25519 2 117 35215 +474+75-104+5-89+119-77+0-46+58+102-46-9+0+184 +sign_ed25519 2 147 35194 +362+69-24-74-122+66+9-7-96+76-13-16+19+126+0 +sign_ed25519 2 184 36131 +297-135-116+1199+289+41+27+0-67+8+103-97-55-7-137 +sign_ed25519 2 231 36841 +657+38+0-109-112+4-190+161-82+30-191+41-167+39-102 +sign_ed25519 2 289 36826 +380-166+127+15+0-69-123+157+33+40-43+12-127-81-50 +sign_ed25519 2 362 38201 +795+67-30+10+0-40+9-89-31+18-49+16-140-30+14 +sign_ed25519 2 453 38863 +562+212+5-87+200-4+50+142-46-205-120+0-5-103+51 +sign_ed25519 2 567 40340 +1625+5+223-33+213-10-112+0-28+54-16-144+107+24-43 +sign_ed25519 2 709 41645 +954+66+243+0-100+120-19-87-3+31-60-27+147+315-21 +sign_ed25519 2 887 43898 +532+69-133+36+14-46-100+91-35+29-70+84+0-62-37 +sign_ed25519 2 1109 46579 +832+166+113-192+0+188-88+110-25+223-175+144-206-48-23 +sign_ed25519 2 1387 49453 +819-85-75+124+110-119+168+150+17-98+0+61-39-32-146 +sign_ed25519 2 1734 52983 +1065+80-261-336+68+42-41+14-35+0-288-26+1026+32+0 +sign_ed25519 2 2168 57820 +1043-82+36-4-74+98-139+3+26-140-194+0+254-209+14 +sign_ed25519 2 2711 63450 +1048+189+25+4-109-79+0+175-58-102-261+78-160+43-166 +sign_ed25519 2 3389 71159 +886+228+48+101+0-179-88+87-76+189-364-87+136-18-122 +sign_ed25519 2 4237 79932 +962+360-17-13+128-65+0+197-143-8+298-33+127-9+375 +sign_ed25519 2 5297 91849 +698-61-336-146-120+291+33+293-257-95-95+72+0+50+216 +sign_ed25519 2 6622 106348 +1200+145+5+234-146+0+375-125-78+1302+746-15-194-310-456 +sign_ed25519 2 8278 124240 +2083+119+0-292-229-121+83+7+313+14+76-54-366-295-225 +sign_ed25519 2 10348 146290 +1537+0-8+409-90+36+203+77+122-336-155-71-90+321-196 +sign_ed25519 2 12936 173993 +1849+169-84+121-150+66+0+91-234-108-241-71+1640+40-14 +sign_ed25519 2 16171 208342 +2730+166-25-45-97+57-19+187-17-33-92+281+198+0+33 +sign_ed25519 2 20214 252874 +3036-72+242-60+90-185+241+0-7-179+235-384+1517+980-175 +sign_ed25519 2 25268 307607 +4175+239+25+15+203-233-96-37+50-136+1-119-54-102+0 +sign_ed25519 2 31586 376380 +3582-78+91+2295+376+99-168+125-330+0+43-254-143-94-211 +sign_ed25519 2 39483 461540 +4504+300-94-113+0+2531+40+147+40-167-49-219+1229-173-153 +sign_ed25519 2 49354 567749 +4196+9-445+1374+1384-151+0-154-4+62-107+29+9-269-200 +sign_ed25519 2 61693 701397 +5054+165+98-153+0+186-46-248+549-662+1367+1596-18-410-307 +sign_ed25519_open 2 0 113988 +8446+1616+822+248+4-108-10-72-296+102+0-132-84-20+74 +sign_ed25519_open 2 1 115704 +7018+1326+556+354+36+0-160-82+152-108+10-184-98-296-130 +sign_ed25519_open 2 2 114098 +8164+1630+468+282+62+220+0+4-254-261-117-238-106-121-221 +sign_ed25519_open 2 3 114427 +6729+1989+217+87+0-6+41-103+100-90-245-423-274-264+59 +sign_ed25519_open 2 4 115528 +6960+1882+822+712+334+0+86-98-14-296+70-130-112-178-118 +sign_ed25519_open 2 6 115136 +6906+2506+926+736+294-26-30+0-256-220-272-330+58+96-314 +sign_ed25519_open 2 8 113878 +8276+1914+1002+880+380+22-16+0+96-24-234-24-174-184-126 +sign_ed25519_open 2 11 114620 +7393+2299+1134+376+190+0-136+144-108-368-36+60-228-116-122 +sign_ed25519_open 2 14 114270 +7094+2390+806+864+144+12-106-222+128-152-132+0-126-126-146 +sign_ed25519_open 2 18 115514 +7037+1261+416+164+168+0-170-16+116+84-364-166-112-38-222 +sign_ed25519_open 2 23 114542 +7152+1896+608+234+0+28-76-98-74-188-138+84+4-332-70 +sign_ed25519_open 2 29 114922 +7734+2134+896+68+288+210-40-102-398-240-14-142+122-270+0 +sign_ed25519_open 2 37 115518 +6614+1776+592+80-190+0+66+84-16+342-82-62-194-282-154 +sign_ed25519_open 2 47 115582 +7036+2488+790+560+308+208-28-322-130-80-168-84+70-198+0 +sign_ed25519_open 2 59 114178 +8348+1678+1042+854+184+192+0-18-12-56-76-132-122+2-70 +sign_ed25519_open 2 74 114890 +6446+1322+532+322+112+0-380+36-254-112+28-60-16-68-202 +sign_ed25519_open 2 93 116366 +6850+2186+932+704+236-204+12-52+28-38+0-164-220-162-350 +sign_ed25519_open 2 117 114732 +6232+2072+1138+218-14+74+124-38-106-114-226+78-26+0-162 +sign_ed25519_open 2 147 115532 +7770+1908+658+444+32+0+82-76-134-248-250-52+144-258-88 +sign_ed25519_open 2 184 116350 +7382+1976+744+392+42-54-206-230-48+0+112+16-114-20-314 +sign_ed25519_open 2 231 115306 +6848+2342+920+330+82-174+2-42-178-248-122+6+0-230-42 +sign_ed25519_open 2 289 116618 +7484+1862+264+186+40-132+0-324-146-4-134-338+34-180+409 +sign_ed25519_open 2 362 115872 +6864+2070+722+250+304+174-106+0-118-32-16-88+18-56-288 +sign_ed25519_open 2 453 119376 +7312+2158+648+384+102-138-50-124-116-130+218+24-268+0-54 +sign_ed25519_open 2 567 117790 +7354+2118+760+742+238+186+40-100+0-80-178-122-50-158-128 +sign_ed25519_open 2 709 119590 +7274+1546+782+724+88+0-148-100-82-190-56-302+2178+1011-322 +sign_ed25519_open 2 887 120306 +7250+2132+902+410+162+110-92+76-94+0-108-58-190-156-102 +sign_ed25519_open 2 1109 121356 +8560+2222+760+408+688+66-136+114-312-184-102-240+0-218-74 +sign_ed25519_open 2 1387 121982 +7576+1284+628+74+292-144-38+112+50-98-190-98-54-94+0 +sign_ed25519_open 2 1734 124674 +8142+2176+868+614+550+60+0+1097-222-614-642-542-470-482-502 +sign_ed25519_open 2 2168 127956 +7470+2224+650+472+146-12-88-66+52+116-50-62-8-54+0 +sign_ed25519_open 2 2711 129862 +7845+1775+756+384+196-144+0+32-184-224-90+24-50-132-160 +sign_ed25519_open 2 3389 132970 +8158+1474+622+52+258-182+30+0-92+20-156-160-222-468-122 +sign_ed25519_open 2 4237 138624 +8617+2447+864+360+42-62-228+0+64-212-172+46-134-120-144 +sign_ed25519_open 2 5297 145068 +7950+1992+828+608+152+0-214-220+14-98-88-200+72-208-4 +sign_ed25519_open 2 6622 150868 +7266+1404+1126+188-16-24+0-154-112+108-292+20-308+150-84 +sign_ed25519_open 2 8278 159682 +8795+2045+698+508+98+110-158-218-138+122+0-148-294-238-312 +sign_ed25519_open 2 10348 171133 +8036+1922+780+12-85-60-79+28-468+0+49-176+57-132-468 +sign_ed25519_open 2 12936 184830 +8599+1857+707+20+119-22-29+6+1670+0-170-231-228-346-17 +sign_ed25519_open 2 16171 203727 +7867+2184+648+423+455-263+153+0-13+82-49-135-21-117-249 +sign_ed25519_open 2 20214 224988 +8329+2256+935+373+0+141+139-187+958-92-387-171-440-317-524 +sign_ed25519_open 2 25268 256396 +7106+2668+1059+500-102+7-48+50+142-39-238-13-98-74+0 +sign_ed25519_open 2 31586 290499 +6722+2403+2056+575-81+38+139-72-15-53-136+21+0-113-278 +sign_ed25519_open 2 39483 336316 +6011+896+511+291+176-88-26+794+1282+0-287-381-1458-1331-506 +sign_ed25519_open 2 49354 391753 +7638+2873+456+0-135-1420-343-1664-447+3371+2668+196-192+1-1534 +sign_ed25519_open 2 61693 462134 +8167+775+591-22+0-403-853-560+2481+782+333+42-165-337-173 +sign_ed25519 3 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 3 32 30420 +4411+671-8+238-110+162-3+137+0-37-105+51-6+54-126 +sign_ed25519 3 0 33633 +2595+284+33+31+0-90-3+95-137-16+20-46-41+38-1 +sign_ed25519 3 1 33654 +877+58-26-28+91-76-63+95-116+28+67-29+13+0-45 +sign_ed25519 3 2 33647 +496+33-115+42+163-110-66-26-96+0+161-120-117+825+561 +sign_ed25519 3 3 33668 +655+119+4+68-24-66+0+34-85-16+30-158+83-6-28 +sign_ed25519 3 4 33620 +589+223-29-62+135-119-40-69+0-41+193-102+165+27+11 +sign_ed25519 3 6 33628 +274+98+4-34-44+0+109-5-21-53+139-97-45+83+90 +sign_ed25519 3 8 33593 +435+172-32+3-6-11+0-51+36-70-157+31+19+2-29 +sign_ed25519 3 11 33572 +296-37+55-4+0+129+12+35+59-10-32+93-20-15-21 +sign_ed25519 3 14 33541 +511+147-78-75+7+72+0+73-15-67+138-21+0+106-7 +sign_ed25519 3 18 33608 +588+59-53+17-64+6+35-27+0-76+37-2-41-89+18 +sign_ed25519 3 23 33561 +398-52+11-5-19+30+0-25+20+19+9-53+7-56-73 +sign_ed25519 3 29 33592 +340-21-122+52-64+0+40-27+37+40+27+0-77-12-53 +sign_ed25519 3 37 33573 +600+150-27+0-39+21+56+8-60-47-32-2+67-39+35 +sign_ed25519 3 47 33632 +557+161+133+173+141+103-50-65-82+29-52+0-72-60-84 +sign_ed25519 3 59 34352 +465+344+144+108+21+0+1+36-132-23-95-124-83-103-132 +sign_ed25519 3 74 34375 +721-12-32+6-89-25-57-19+56+11+91+0+56-81+1429 +sign_ed25519 3 93 35083 +971+173+6-85+252-29-43+140+0-84+92-135-123+141-134 +sign_ed25519 3 117 35052 +633+192+11+9+0-17+0-8-51-97+217-54-81+108+33 +sign_ed25519 3 147 35089 +689+175+23-49-22+11-147+231+0-32+175-22-70+259-157 +sign_ed25519 3 184 35913 +616+250-60-11+25-18+0-73+24-54+176-180+83+70-25 +sign_ed25519 3 231 36454 +777-52+38-57-10-22+0+18-1+77-19-52+98+9+22 +sign_ed25519 3 289 36512 +653+210+18+0+72-121-37-160-37-160+13+6+3-37-131 +sign_ed25519 3 362 37884 +849+128+9-52+5+17-6-15+35+0-79+0+84-84-23 +sign_ed25519 3 453 38614 +963+14-38+22-82+0-56-49+25-12+48+54-10+9-37 +sign_ed25519 3 567 40213 +543+54+13+5+97+33-67-91-57+0+116-92-81-188-99 +sign_ed25519 3 709 41388 +670-17+0-39-30-115+42-4+110+192+117-167-55+50+86 +sign_ed25519 3 887 43510 +773+306+30-53+105-94+0+128-96-2+190-18-8+83-31 +sign_ed25519 3 1109 46333 +1000-24-54-72-3+0-264+2018+296+71-41-22+5+29+45 +sign_ed25519 3 1387 49083 +2359+160-73+6-63-168+142-55+0-6+162-92-75+24+273 +sign_ed25519 3 1734 52655 +1013+291-209+0+81+37+103-122-125-5-77-77-160+237+190 +sign_ed25519 3 2168 57548 +1155+8-196-160+99+79+89-234+94-141-77-63-295+416+0 +sign_ed25519 3 2711 63206 +1354-152-227-164+18-285-132+6+0-9+232+207+54-80+99 +sign_ed25519 3 3389 71008 +1216+202+249+34+59+0-150-69-18-80-72-118-101+40+22 +sign_ed25519 3 4237 79811 +1141-29+56+0-112+146-261+100-208+12-275+40-174+59-211 +sign_ed25519 3 5297 91693 +864+63-244-388+58-48-222+1541+538+76-118-107-36+54+0 +sign_ed25519 3 6622 105861 +1237-25+163-23+25+281-124+81-34+23-45+0-30+10-127 +sign_ed25519 3 8278 123885 +1826-193-1-111+142+257+31+0-54-50-155+57+320-27+343 +sign_ed25519 3 10348 146110 +1586+0-50-44-255-56-217+250-145+170+24+28+242+181-19 +sign_ed25519 3 12936 173808 +1842+1545+695+159-108-30-292+150-173+0-52+4-134+38-214 +sign_ed25519 3 16171 208138 +2768+116-27+57-33-108+4-190+85+0+47-101-89+19-1 +sign_ed25519 3 20214 252536 +3420+65-105+0-20+2304+494-167+138-42-33-25-174+117+93 +sign_ed25519 3 25268 307401 +4115+91+85+49-61-43-100+29-69-133+41-250+0-48+1698 +sign_ed25519 3 31586 375719 +4646+103+235+17+194+219-50-145+46-154-79-204-312+0-82 +sign_ed25519 3 39483 461229 +4709+2110+610+0-41+66-178+124+106-241-222-247-191+173-309 +sign_ed25519 3 49354 567643 +6756+417-77+1839+3679+35+0-590-536-561-322-333-418+1962+2181 +sign_ed25519 3 61693 701053 +5692-37-161-479-242-139+83+1075+2297+445+0+60-181+140-420 +sign_ed25519_open 3 0 113846 +10086+2087+629+248+170-226-136-254+124-88+212-66-90+0-108 +sign_ed25519_open 3 1 114284 +7168+1312+352-114-128-198+79-37-200-16-289+365+0+220+13 +sign_ed25519_open 3 2 115320 +7016+1976+278+106+176-294-230+24+122-350+0-36-416-372-14 +sign_ed25519_open 3 3 114813 +6771+1777+767+345+113-315+33-91-108+38-136-296+0-352-371 +sign_ed25519_open 3 4 114534 +7196+1966+1110+592-50-34-170-170+0-56+218-96+66+50-36 +sign_ed25519_open 3 6 113984 +7922+1688+778+588+442+190+0+160-270-368-202-386-290-236-248 +sign_ed25519_open 3 8 116232 +7382+2090+570+138+58+0-254-108-296-24+48-248-178+30-2 +sign_ed25519_open 3 11 113134 +6650+2362+1284+228+266+8-158-122-86-218+0-150+72-376-158 +sign_ed25519_open 3 14 114880 +7156+2288+1376+1128+232+108+80+0-116-184-120-214-100-134-192 +sign_ed25519_open 3 18 115030 +6812+2142+648+462-116-122+52-174+88-22-98+72+0-48-48 +sign_ed25519_open 3 23 113074 +7223+2257+1374+976+118-104+0+94+110-28-98-210-60-116-134 +sign_ed25519_open 3 29 115754 +6858+2116+850+210-154-86-30+0+120-224-244+124-70+110-80 +sign_ed25519_open 3 37 115662 +6908+1574+1138+574+528+114+0-76-90-154-190-250-62-170+66 +sign_ed25519_open 3 47 114960 +6698+1932+852+542+206+116+0-190-160-322-80+6-72-132-196 +sign_ed25519_open 3 59 114106 +7110+983+345+10-346-70+212+88-178-132-46+10-46-96+0 +sign_ed25519_open 3 74 116714 +7446+2133+1037+773+23-26-244-218-144+6+78-48-116-146+0 +sign_ed25519_open 3 93 115752 +7030+2182+1018+0+68-174-196+0-89-305-26+68-147+103+92 +sign_ed25519_open 3 117 117207 +7249+1281+667+559+173-5-63+114+0-115-89-30+2-173-37 +sign_ed25519_open 3 147 117366 +6944+914+456+94+228-196-56+8-190+0-162+28-40-158-68 +sign_ed25519_open 3 184 115580 +6544+1298+723+355+62-148-48+6-302+46-68-250-48-148+0 +sign_ed25519_open 3 231 117088 +6636+1670+500+566-16+88-36+0-82-192-258-28-60+42+2768 +sign_ed25519_open 3 289 116046 +7797+1478+482-524-80+62+160+0+100-74+18-158-6-92-158 +sign_ed25519_open 3 362 118268 +7072+1816+1024+722+324+70-6+0-27-121-80+4-78-84-90 +sign_ed25519_open 3 453 118008 +7448+2174+987+801+427+417-11-27+52-162-238+0-10-28-376 +sign_ed25519_open 3 567 119756 +7094+1660+642+292-90-94-52-58+46-230+168+902-166+0-192 +sign_ed25519_open 3 709 119580 +7294+1542+672+412+132+54+158-136-312-58-74+0-170-120-120 +sign_ed25519_open 3 887 120146 +7260+1284+248+84+0-24-98-172-12+96-12-116+48+72-120 +sign_ed25519_open 3 1109 120044 +7380+2088+1030+836-140-100+116-12+0+8-76+200-28-18-58 +sign_ed25519_open 3 1387 122400 +7715+1950+982+622+324+0+58-36+498-386-386-410-514-310-438 +sign_ed25519_open 3 1734 123415 +7815+1535+597+482+544+354+0+61-119-276-98-261-59-227-311 +sign_ed25519_open 3 2168 126762 +7006+1500+278-110+280+45+63-234-228-42+0+138-174-164-210 +sign_ed25519_open 3 2711 129490 +8264+2144+912+496+14+52-156-68-80-118-220-148+0-164+18 +sign_ed25519_open 3 3389 132416 +9575+2638+1128+782+358+125-25-229-89-277-248+0-18+20-27 +sign_ed25519_open 3 4237 137350 +7557+2112+838+664+86+18-94+105-221-384-224-120-134+0-62 +sign_ed25519_open 3 5297 143378 +7393+2119+718+396-38-82+69-31-182+36-134-64-114+0+17 +sign_ed25519_open 3 6622 151464 +7606+2532+992+2019+181+45+77-275-212-331-343-205-229+0-173 +sign_ed25519_open 3 8278 159938 +7111+2776+1193+1136+220+40-158-120-390-418+70+0-612-242-520 +sign_ed25519_open 3 10348 172632 +6846+1353+538-53-29+218-62-241-7+92+18-172-246+96+0 +sign_ed25519_open 3 12936 185856 +7074+2218+770+548+269+73-46+109-194-52+0-108-147-111-240 +sign_ed25519_open 3 16171 202205 +8558+2570+747+45+238-23+0-367-66-64+96-124+297-323-39 +sign_ed25519_open 3 20214 225448 +9780+1718+468+0+131-60-145-235+20-162-88-78+78-139+181 +sign_ed25519_open 3 25268 253505 +8064+1196+172+0+234-152-7-182+50-132+23-22-301+1744-421 +sign_ed25519_open 3 31586 292082 +5497+900+979+502+392-10-66-40+12+0-280-111-276+42-179 +sign_ed25519_open 3 39483 336607 +6557+2493+2877+278+212-376-99+2274+912+0-121-242-131-298-341 +sign_ed25519_open 3 49354 390711 +6467+2145+698-203+3163+2564+12-208+0+162-134-226-202-104-263 +sign_ed25519_open 3 61693 460977 +8259+2412+204+290+1465+603+0+319-101-593-704-542-446-152-500 +sign_ed25519 4 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 4 32 30496 +3933+373+34+0-53-151-114-163+1728+903-27+95-144+69-53 +sign_ed25519 4 0 33725 +1921+455+27-88+0+34-54-88-40-22+14-4-71+10+82 +sign_ed25519 4 1 33801 +725+119-104-13-73+34-39-73+0-72+111-11+36+4+112 +sign_ed25519 4 2 33753 +732+341+0+187-63+52-99+83-45-1-113+87-111-26+31 +sign_ed25519 4 3 33760 +322+149-30-15-13+41+0+72-30+64-19+31-40-13+35 +sign_ed25519 4 4 33798 +372+234-94+37+30+33-10-118+0-134+43-33-24+41-56 +sign_ed25519 4 6 33751 +656+152+9+44+12+0-87+129-49+16-54-57-44-3-22 +sign_ed25519 4 8 33757 +679+183-34+50-143+49-66+74-28+72+37-21-131+0-42 +sign_ed25519 4 11 33749 +433-2-15-60-45+0+51+32+6-42+75-15+146-46+38 +sign_ed25519 4 14 33779 +666+207-87-101+72-30+44-97+11-118+26-103+0-141+68 +sign_ed25519 4 18 33736 +596+278-32+108-9-14-86+123-76+28+41+0-48+64-14 +sign_ed25519 4 23 33765 +406+154+5+58-6+0-124-4-16+70-78+32-19+58-83 +sign_ed25519 4 29 33771 +318+209-10-120+35-61+0-8+114-77+58-59+58-60+86 +sign_ed25519 4 37 33762 +614+85-51-3+0-23-43+25+10-39+1910+145-47+31-19 +sign_ed25519 4 47 33697 +843+135-38+13+69-33-12+0-26+34-19+23-41+28-12 +sign_ed25519 4 59 34449 +689+170+24-96+27-36+103+0+19-35-53-4-130+65-81 +sign_ed25519 4 74 34471 +541+144-28+77+0+29-72+63+26-60-145-14-56-32+42 +sign_ed25519 4 93 35199 +672+37-156+87-136+20-59+170+20+53-140-69+0-11-91 +sign_ed25519 4 117 35369 +335+161-95+72+0-102-228-231+6+3-203-182-180+134+8 +sign_ed25519 4 147 35282 +406+203-88+89-20+19-187+57+5+0-68+62-87-76-111 +sign_ed25519 4 184 36120 +357+27-187+90+0-15-106+105-27-80+13+42-170+52-140 +sign_ed25519 4 231 36693 +506+0-105+80+118+98-82+149+97-32-152-4-201+69-105 +sign_ed25519 4 289 36697 +582+244+0-16-180+35-165+71+24+76-102+25-7-53-188 +sign_ed25519 4 362 38119 +630+182+76-21-13-43+0-4+234+161+63-86-104-149+86 +sign_ed25519 4 453 38846 +665+196+19+91-191+34-70-20-274-72-72+38+0+196-118 +sign_ed25519 4 567 40397 +325+0-99-83-178+45+152-85-160+86-36+17-87+1612+228 +sign_ed25519 4 709 41616 +961+397-168+8-37+55-1+0-42+86-82-9+47+30-103 +sign_ed25519 4 887 43816 +719+204-152+207+57+384-19+0-123-93-136-117+5+307-59 +sign_ed25519 4 1109 46567 +1029+74-133-282+68-43+114+1+57+0-123-63-70-79+45 +sign_ed25519 4 1387 49313 +1195-60+197+0+23+104-8+150-279+261-18+60-48-45-26 +sign_ed25519 4 1734 52885 +1084+228+118-193+0-31-153+38+63-16+101-94+344-56-305 +sign_ed25519 4 2168 57780 +1717+100-349-132+201-54+0-464+46+17-106+175-394+23-87 +sign_ed25519 4 2711 63427 +1084+18+194+142-63+63+0-99-26-70-119+133-56+11-55 +sign_ed25519 4 3389 71133 +850+31+147+151-74-133-66+157+361-240-108+211+0-371-88 +sign_ed25519 4 4237 79985 +1122+1445-22+70-35+13-216+91-206+0-308+78-288+92-209 +sign_ed25519 4 5297 91657 +1548-21-93-95-451+252+66+174+0-10-176-370+200+77+20 +sign_ed25519 4 6622 106224 +1647+355+113+300+57-95+37-108+126-29+0-3-68-2-149 +sign_ed25519 4 8278 124186 +1805+361-167-240+148-97+104+194+0+48-34-129-254-38+29 +sign_ed25519 4 10348 146275 +1070+243-109+6-88+1209+142-99+0-85-8-18+195+59-23 +sign_ed25519 4 12936 173957 +2060+0+70-73-103+125+18+9-62-75+114-12+75-57-63 +sign_ed25519 4 16171 208567 +2187-122-65-88-14+2-64+49-31+21-114+4+0+1415+1695 +sign_ed25519 4 20214 252863 +3408-220+88+65-135+0+14-117+87-226+9-150+0-200-108 +sign_ed25519 4 25268 307843 +3794-145+206-173-130+223-176+0+2478+399-132+160-179+52-89 +sign_ed25519 4 31586 376086 +4353+372+61+94-186-40-119+0-4-175-257-4+710+1797+263 +sign_ed25519 4 39483 462042 +3959-226+1003-384-188-377-451+1085-524+910-287+745+105+901+0 +sign_ed25519 4 49354 567966 +4369+33-472-414+0-239-280+32-415+34+1490+388-226+221-192 +sign_ed25519 4 61693 701380 +4772+556-425-334+0+2723+4387+1256+219+44-194-141-159-317-320 +sign_ed25519_open 4 0 114652 +10176+1548+490+260-264+16-100-50-190-206+126-76-104+18+0 +sign_ed25519_open 4 1 115858 +7062+1624+540+330+240-188+30-76-16-154+0-74+40-238-46 +sign_ed25519_open 4 2 115040 +7390+1870+706+610+0+128-172+0-44+40-90-164-206-74-96 +sign_ed25519_open 4 3 116036 +6464+2030+1030+888+146+184+0-250-260-198-48-182-214-194+654 +sign_ed25519_open 4 4 114302 +7652+1534+774+636-16+134-18-186-60-30-136-202+0+40+44 +sign_ed25519_open 4 6 113510 +7671+1763+771+405+0-146+166+94+17-47-328-80-153-139-112 +sign_ed25519_open 4 8 115246 +6672+1478+632+224+56-78+0+206-158-130-28-26+148-96-140 +sign_ed25519_open 4 11 115825 +6585+1967+919+385+89+199-44+0-65-185-207-59-233-65+1341 +sign_ed25519_open 4 14 115348 +7222+1738+318+388+138+84+0-154-216-106-236-252-362-54+50 +sign_ed25519_open 4 18 113666 +6730+1894+604+504+162+0-38+82-32-80-64-156+12-8-106 +sign_ed25519_open 4 23 115716 +6606+1698+294+380+250+0-172+28-124-96-18-82-172+2-34 +sign_ed25519_open 4 29 116450 +6606+2490+868+204+0-188-124-328-88-304-238+0-214+581+110 +sign_ed25519_open 4 37 113098 +7344+2320+1652+984+0+66-108+146-128+134-4-192-76-228-110 +sign_ed25519_open 4 47 115126 +7560+1868+442+390+0-228-8-184-36+12-92+64-104+14-28 +sign_ed25519_open 4 59 116278 +7056+1596+700-38+58-36+0-4+148-80-92-122+92-188+34 +sign_ed25519_open 4 74 115798 +6646+1546+502+306-32-24+340-6-146+14+0-46-142+1396-250 +sign_ed25519_open 4 93 113216 +7794+2444+990+720-14-28-68+86-50+14-44+6-98+0-60 +sign_ed25519_open 4 117 116024 +6996+1228+928+340+426+90+0-46-34-50+26-162-34-120-136 +sign_ed25519_open 4 147 115334 +7142+1594+314+218+0+128+82-200-394-240-238+54-130-206-288 +sign_ed25519_open 4 184 115804 +6956+1544+480+310+246-90-16+0-200+74-142-120-148+794-100 +sign_ed25519_open 4 231 115276 +7782+2876+1054+338+174+0-140+6+154-180-138-38-280-130-132 +sign_ed25519_open 4 289 117536 +6664+2476+718+608+194+182-104-86-140+178-120-84-34+0-252 +sign_ed25519_open 4 362 117416 +6460+1252+374+278+110-42-66+96-218+30+0-148-78-100-136 +sign_ed25519_open 4 453 118038 +7174+1860+304+234-8-114+0-292+178-82+64+160-674-788-938 +sign_ed25519_open 4 567 119311 +7381+2332+1119+701+194+116-47-29-30+12+0-118-98-64-27 +sign_ed25519_open 4 709 119678 +7188+2102+910+330+16+34-134-148-40+26-18-98+0-118-88 +sign_ed25519_open 4 887 121158 +6828+1500+606+126+44+112+0-206-106-302-252-234+20-246-158 +sign_ed25519_open 4 1109 122414 +7490+2420+862+606+384-20+38+0+471-85-198-398-184-340-442 +sign_ed25519_open 4 1387 122946 +7696+2084+1018+706+310-24-236-70-82+0-8+4-172-62+20 +sign_ed25519_open 4 1734 126358 +7372+1974+818+670+74+188-108-136+152+0-14-188-104-48-92 +sign_ed25519_open 4 2168 126320 +7696+2651+1073+494+108+116+30-138-132-36-166-274-278+0-42 +sign_ed25519_open 4 2711 129566 +8120+3345+989+326+242+20-114-14-142-160-226+0-166-146+1875 +sign_ed25519_open 4 3389 133072 +7878+1827+633+342+146+68-148+64+0-92-73-313-55-121-81 +sign_ed25519_open 4 4237 137932 +8278+1838+786+520+150-4-158-162-18+34-118+66-266+0-20 +sign_ed25519_open 4 5297 143420 +8004+1752+1178+848+208+0+1826-212-386-330-138-344+204-128-352 +sign_ed25519_open 4 6622 151520 +8513+2018+872+204+290+0+14-193-60-38-64+168-280-194-204 +sign_ed25519_open 4 8278 161106 +7169+2004+580+605+56+8-358-496-506-458+0-142+98-154-254 +sign_ed25519_open 4 10348 169961 +7969+2337+1840+1246+467+187-367-377+10-124+0-167-106-317-111 +sign_ed25519_open 4 12936 185654 +8126+1818+479+8-42+237+79+140-126-188-258+0-274-119-157 +sign_ed25519_open 4 16171 201710 +8442+1859+460+162-87-10+81+0+2603+150-195-66-410-272-245 +sign_ed25519_open 4 20214 225892 +8076+2128+608+324+72-278+440-275-338+90-79-74+0-84-348 +sign_ed25519_open 4 25268 255007 +7945+2459+996+880+455+3408+963-330-123-372-104+0-377-98-399 +sign_ed25519_open 4 31586 291828 +6725+2337+511+592+0-177+322-199-50-294+76-1009-99-65+1578 +sign_ed25519_open 4 39483 338034 +6843+1828+600+291+0-905+165+21-67+65-1045-239-63-855-204 +sign_ed25519_open 4 49354 392620 +6997+1277-936+424+0-1491+2078+2055+31-445+21-147-382-553-547 +sign_ed25519_open 4 61693 462530 +9229+2168+689+127+106+190-409+431-65-535+0-240-110-358-217 +sign_ed25519 5 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 5 32 30367 +4428+383+105+14-17-90-74-141+48+0+18-62-82-89+20 +sign_ed25519 5 0 33591 +2485+100+23-92-165+144-39+2+177-47-36-17+35+0-21 +sign_ed25519 5 1 33637 +1437+0-71-78+115-89+211-120+14-15-28+36+60-36+138 +sign_ed25519 5 2 33630 +474+20-70+5-31+61-37-18-106+6+65+52-65-29+0 +sign_ed25519 5 3 33634 +210+176-146+35-174-65+43+0-23-21+21+80-73+9-51 +sign_ed25519 5 4 33642 +452+93-149-110+15+26-102+17-73+0-117+56-78-78+12 +sign_ed25519 5 6 33647 +365+165-78+0+6+128-23-113+16-29-2+148-33-67+80 +sign_ed25519 5 8 33598 +376+255-9-112-61-43+128+76-9+62+0+119-78+18-91 +sign_ed25519 5 11 33568 +512+77-1-87-60+26+21-34+78-74+0-47+104+194-82 +sign_ed25519 5 14 33637 +259+61-26-67-163-146-12+0-173-67+19+35+22+2402+171 +sign_ed25519 5 18 33640 +1050+211+0-92-140+5-40+210-67-173+78-163+121-53+72 +sign_ed25519 5 23 33578 +429+221+0-19+161-51+88-2-20-26-29+211+93-5+76 +sign_ed25519 5 29 33600 +558+263-74+73+19-100+118-112-104-74-21+141-111+179+0 +sign_ed25519 5 37 33664 +641-88+64-87+0+85-72+27-127+24-114-84-153+16+3 +sign_ed25519 5 47 33554 +522+43-49+0-52-1+39+4+120-44-48-8+175-69+104 +sign_ed25519 5 59 34300 +443+172-3-26+0+5-69+11-72-34+8-37-73+119+49 +sign_ed25519 5 74 34371 +774+86+3-118-61+41-70-48+8-2-73-87+46+25+0 +sign_ed25519 5 93 35279 +292+93-162+26-134-166-56-155+0+29-226+192+25-180+79 +sign_ed25519 5 117 35203 +405+89+30-31-25+0+146-16+79+118-9-41+235-28-60 +sign_ed25519 5 147 35213 +419+287+18-99-13-6-117+39+50+17+71-19-147+0-23 +sign_ed25519 5 184 35933 +503+14-94+53-26+28-101+0-80-53-14+47+166+0-138 +sign_ed25519 5 231 36629 +613-37+19-40-98+10-31+0+19+191+199-112-71+24-31 +sign_ed25519 5 289 36714 +843+64-157+0-65-59-45-40+1360+483-226+61+252-14+109 +sign_ed25519 5 362 38108 +731+37-111-206+46-120+145-128-100-39+41-152+236+2+0 +sign_ed25519 5 453 38771 +676-11-139-1+0-140+57-1-63-117+129+11+16+56+66 +sign_ed25519 5 567 40220 +556+90-50+21+24-33+0-171+83+156+137-148-5-30-136 +sign_ed25519 5 709 41567 +846+139-7-110+27-13+25-23+140+46-136+89-52-131+0 +sign_ed25519 5 887 43733 +729+98-103+118+0-9+148-88-142+205-129+46+168-172-21 +sign_ed25519 5 1109 46450 +561+223-116+170-11+161-55+0-97-73+308-37+342+72-159 +sign_ed25519 5 1387 49439 +802-48-130-57-199+138-154+40-70+162+0+143+115-20+68 +sign_ed25519 5 1734 52797 +691+56-196+15-21-40+25-84-70+0-97+180+79-79+91 +sign_ed25519 5 2168 57685 +912+4+150+127-90+0+160+194-128-155-30-97-19-176+117 +sign_ed25519 5 2711 63264 +642+158+0+1504+228-187+77-75-105+10+95-72-169-50-25 +sign_ed25519 5 3389 71106 +778+14+117-93+33-118+0-124+406-131+118-246+88+0-147 +sign_ed25519 5 4237 79889 +1767+395-144+208-244+60-171-30-125-45+72+8+72+0-61 +sign_ed25519 5 5297 91769 +1567-372+157+50+405-131+14+0-123-102-136-87+13+115-401 +sign_ed25519 5 6622 106013 +1325+278-66+56+0-82-174+1+42-114-112+306-101+229-2 +sign_ed25519 5 8278 124029 +1519-37-184-150+115+1025+1012+290+29-145-388-442+0+162-27 +sign_ed25519 5 10348 145901 +2066+139-157+189-1+49-276+15+24+0-34-6-160+38-223 +sign_ed25519 5 12936 173675 +1544+90+77-8-64-33+0-128-119+41-124-166+42+186+24 +sign_ed25519 5 16171 208188 +2255+32-24+1806+491-140-47+1+0+62-45-30+51-277-158 +sign_ed25519 5 20214 252493 +3214+0-231+235+197+21-207+44-75-287-233+23-123-211+135 +sign_ed25519 5 25268 307402 +3859+2843+362+60-43-144-92-178+425+59-57-79+272+0-38 +sign_ed25519 5 31586 375760 +3997+657-46+0-355-367-279+2548+664+101+80-59-38-357+89 +sign_ed25519 5 39483 461296 +5045+314-221+0-89+219-110-267+3047+827+249+206-145-315-27 +sign_ed25519 5 49354 567559 +3854+172+30-309-39-287+2434+1476+94+178-484-173+0-370-43 +sign_ed25519 5 61693 701040 +5620+407+2097+596+0-630-166+46-222-247-487-33+1333+1625-235 +sign_ed25519_open 5 0 114834 +8566+2092+276+96+0-240-114+64-154+48-78-98-18+116-230 +sign_ed25519_open 5 1 115276 +6140+1392+436+398+206-258-142-156-90-150+0+10-108+310-242 +sign_ed25519_open 5 2 115370 +7000+1666+312+270+0+74+142-84-40-246-86-124+273-660-699 +sign_ed25519_open 5 3 116624 +7142+1608+916+280+30+44-130+16+0-280-230-296-168-120-292 +sign_ed25519_open 5 4 114770 +7329+2091+794+556+94-8+120+114+0-100-328-244-212-14-232 +sign_ed25519_open 5 6 115306 +6318+1860+1002+718+8+114-254-56-6-160-86+68-52+0-314 +sign_ed25519_open 5 8 115136 +6476+1968+588+794+738+288-24-22-152-250+0-176+996-850-1032 +sign_ed25519_open 5 11 115304 +6120+1474+1008+210-88-90-16+152-10-126-12-404+28+0+52 +sign_ed25519_open 5 14 115132 +7464+1426+440+98-18+56-12-2-98+94-182+0+32-18-126 +sign_ed25519_open 5 18 116408 +6412+1862+390+452+308+10+78-184-108+0-222-170-286-18+0 +sign_ed25519_open 5 23 115466 +7578+2224+646+284+0-36-56-20+56-52+4+396-888-650-832 +sign_ed25519_open 5 29 115080 +7188+1930+544+514+4-216-130-128-16+92-2-106+0+118-152 +sign_ed25519_open 5 37 114040 +7248+1852+630+144+112-80+0-228-290-216-116-380+22-220+30 +sign_ed25519_open 5 47 115176 +6516+1644+508+188-10+154-186+42+2-60-260-84-230+0-28 +sign_ed25519_open 5 59 116288 +7608+2124+862+476+56-174-132-22+0-86+100+782-107-541-559 +sign_ed25519_open 5 74 117068 +7242+2186+692+320+98+34+0+98-114-106-200-98-300-110-4 +sign_ed25519_open 5 93 115396 +7068+2254+562+528+152+0-98-2-150+24-58-356-112+66-198 +sign_ed25519_open 5 117 114684 +6898+1614+416+162+6+6-296-262+4-272+0-108-306-164-54 +sign_ed25519_open 5 147 115564 +7360+2446+940+400+196+22+0-52-8-216+393-826-632-727-683 +sign_ed25519_open 5 184 117314 +7236+1476+846+274+190+2+32-138-30-122+0-72-120-88-40 +sign_ed25519_open 5 231 117226 +7020+2416+996+242-176-112+48-296+0-374-82-24-34+38+264 +sign_ed25519_open 5 289 116374 +6390+1244+338+290+102+6-202+0-238-188-160+28-252-52-144 +sign_ed25519_open 5 362 116076 +7936+2026+782+614+86-22-172+6+0+611-136-551-453-578-335 +sign_ed25519_open 5 453 117054 +6988+2038+950+830+382+118-4+36-110-18-70-268-138+0-142 +sign_ed25519_open 5 567 116480 +7809+2185+650+246+222+0-226+64-82-118+4-146-146-220-136 +sign_ed25519_open 5 709 119150 +7250+2176+1044-16+228-14+158+0-56-274+78-48+240-50-126 +sign_ed25519_open 5 887 121074 +7468+1672+604+284+276+0+134+563-416-703-609-603-771-662-755 +sign_ed25519_open 5 1109 122210 +7132+1978+984+572+182-278-156+8-114-266-386+0-284-292+56 +sign_ed25519_open 5 1387 123644 +6704+1260+420+164+182-166-152-500+0-214-362+12-414+46-290 +sign_ed25519_open 5 1734 124138 +8056+2465+1091+900+175+0-11-94+234-97-39-75+54-169-81 +sign_ed25519_open 5 2168 126988 +8100+2580+907+401+0+57+130-99-186+123-140-249-56-216-170 +sign_ed25519_open 5 2711 129216 +8114+2780+850+646+108+324-114+210-188-186-120-218-98-90+0 +sign_ed25519_open 5 3389 134344 +7702+2241+562+451+340+248+0+9-70-65-281-305-80-102-109 +sign_ed25519_open 5 4237 137364 +7574+1504+802+360+240+32+0-130+1039-474-582-857-643-550-589 +sign_ed25519_open 5 5297 143364 +8832+2120+1048+362+162-212+0+64-184-256-96+200-72-22-72 +sign_ed25519_open 5 6622 151094 +8529+1958+1141+1018-290+0-96+66-310-112+232-316+238-34-134 +sign_ed25519_open 5 8278 160355 +8095+1865+711+349-48+119+355+820+0-487-667-705-579-420-488 +sign_ed25519_open 5 10348 169869 +8320+1991+363+634-16-327-231+132+8+0+70-77-379-5-61 +sign_ed25519_open 5 12936 184190 +7902+1975+782+674+191-89-26+4-158+0+127-23-83-59-36 +sign_ed25519_open 5 16171 202677 +8710+2078+740+277-30+66-144+46-104+0+3-248-83-94-232 +sign_ed25519_open 5 20214 225216 +8683+2187+777+594+242-3-23-259-144+22+10-214-334+0-208 +sign_ed25519_open 5 25268 255319 +7569+1986+422-467+4+31+9-245-171+269-556+0-421-537-523 +sign_ed25519_open 5 31586 292147 +6645+2314-235+331+28-57+136+2354+126-492-254-209-176+0-452 +sign_ed25519_open 5 39483 336803 +7061+541-601+352-6+343+0-218+120-71-142-23+2140+133-56 +sign_ed25519_open 5 49354 392231 +7347+1808+989+236-1472-1467-120-196-3-9-141+120+0+3606+1235 +sign_ed25519_open 5 61693 461923 +7508+2818+764+0+57-141-234-221-302-38-263+3912+1272+33-197 +sign_ed25519 6 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 6 32 30421 +4555+303+38+8+0+49-31+44-52-21-12+18-35-152-125 +sign_ed25519 6 0 33697 +3001+417-35+0-35+137-29+99-101+52-26+207-97+205-22 +sign_ed25519 6 1 33760 +1138+236-78-153-52+83+116-70+18-63+10+0+23-66-30 +sign_ed25519 6 2 33711 +1099+90-27+1-48-82+0-55+107-10+124-53-95+1+10 +sign_ed25519 6 3 33739 +558+43+63+83-22+214-48+12-127-89+121-1+0-44-78 +sign_ed25519 6 4 33639 +595+4+113-22-4-55+43+0-1+81+45+61-23-1-62 +sign_ed25519 6 6 33827 +283-68-72-254-185+1402+249+84-28-78+57-168+83+0+17 +sign_ed25519 6 8 33777 +841-22-82+34+12+123+116+169+0+3-23-66-73-148-69 +sign_ed25519 6 11 33740 +621+17-44-18+45+135-3+96-52-80+51-100+0+1-35 +sign_ed25519 6 14 33766 +432+207+263+2234+40+16-127+23-110+0-131-88-156-19-126 +sign_ed25519 6 18 33761 +863+57-9+14-49-15+29-31+0-35-71+108+3+44-130 +sign_ed25519 6 23 33780 +619+114-3+0+50-56+20+31-86-43-32-38+21+148-169 +sign_ed25519 6 29 33802 +337+73+60+16-48+26-85-83+0-38-138-37+61-110+60 +sign_ed25519 6 37 33779 +740-25+150+111+81-59-25+0+57-76-37+17-96+52-47 +sign_ed25519 6 47 33795 +410+135+197-13-91+62+17+2-82+0+47-85-35-17-32 +sign_ed25519 6 59 34546 +294+98+62-71+0-36-50-3+21+170+8+64-91-29-29 +sign_ed25519 6 74 34596 +372+58-52-114-30+128+103-66-94-27+73-113+28+0+22 +sign_ed25519 6 93 35382 +777-57-37-21-40+97+0+9+21+84+15-182-268-11+6 +sign_ed25519 6 117 35323 +341+56+46+84+45+168-28-59+0-34-45-55+6-45-23 +sign_ed25519 6 147 35310 +559+78+52+2179+245+128-137-117-81-234-146-180+0+171-6 +sign_ed25519 6 184 36210 +924+55+97+36-141-152-145-152+24+32+76+0-70-114-23 +sign_ed25519 6 231 36694 +790+116+15+0-37-22+169-109-120-23+85-19+120+67-28 +sign_ed25519 6 289 36731 +850+397+40-10+5+0-141-50+13+45-184+58-125-68-45 +sign_ed25519 6 362 38272 +647-1-16-126-135-170+0+32+121+113+32+173+116-70-87 +sign_ed25519 6 453 38898 +1028+340+0-93+23+129-10-105-25+18+48-145+39-60-5 +sign_ed25519 6 567 40447 +464+25+57-76+8-44-127-184-37-82+53-77+44+157+0 +sign_ed25519 6 709 41680 +686+0+233+5-130+77-73-48+3-45+74-12+27-62-84 +sign_ed25519 6 887 43820 +818+141+89+152+65-146+89+0-93-134-75-274-105-41+165 +sign_ed25519 6 1109 46537 +1102+34-61-113-97-40+97-45+88+0-148+147+0+149-25 +sign_ed25519 6 1387 49347 +947+175-189+132-139+145+0-137-30+16-7+144-95+167-176 +sign_ed25519 6 1734 52870 +1300+1168+125+98-203-151+5-58+0-200+7-21-329+29-224 +sign_ed25519 6 2168 57802 +1638+323+230-172-313+181-12+51-45-45+429+0-15-17+19 +sign_ed25519 6 2711 63621 +1155+94+117+9-345-343+16+69-122+0-31-88+9-208-147 +sign_ed25519 6 3389 71157 +1219+172+97+70+255-93+53+86+0-79-47-177-206-240-68 +sign_ed25519 6 4237 80078 +851-55-171+125-196+61+36+0-349+133-308+225-340+86-358 +sign_ed25519 6 5297 91716 +1187+47+273+145-76-14-83-39+239+51-110-51+2-90+0 +sign_ed25519 6 6622 106390 +748-470+34-224+2101+232-189+108-182-291+0-140+2291+67-176 +sign_ed25519 6 8278 124353 +3232-67+32-267-325-262+229+170+376+378+0-140+147-249-345 +sign_ed25519 6 10348 146354 +1781+137-136+0-15+10+177-157-269-50+207+73-28-318+230 +sign_ed25519 6 12936 174210 +1877-74-149-225-217-239-344-294+1246+1406+60+9+125+0+49 +sign_ed25519 6 16171 208635 +2736+293-54+294-108+59-267+0-159+80-5+161-43-254+16 +sign_ed25519 6 20214 252834 +3305-106-128+101+27-20-128-26-9+0+2325+472-77+44+27 +sign_ed25519 6 25268 307669 +4079+124+89+51-205+33-18-133+0+55-132+263-102-90-28 +sign_ed25519 6 31586 375956 +4470+2842+1447+227-29-166+80+0+1006-111-159-229-80-305+14 +sign_ed25519 6 39483 461629 +4496-361-111+1421+1696+1362-56+27-731-71-406+126-430+1087+0 +sign_ed25519 6 49354 567759 +4855+306+1809+1305-122+0-179-112+33+65-264-193-81+189-289 +sign_ed25519 6 61693 701260 +6169+334-105-400+3+0-178-250-584+1275+2275+129-64-48+97 +sign_ed25519_open 6 0 115694 +9424+2338+446+360+192-136-132+122-58+0-302-12+38-200-324 +sign_ed25519_open 6 1 115082 +7186+2602+634+150-90-28+194+70-54+0+859-195-593-422-551 +sign_ed25519_open 6 2 112980 +6682+1836+658-92+256+120-274-50-84+186+246+0-44-44-38 +sign_ed25519_open 6 3 114240 +7100+1912+830+260-34+0-190+116-14-158-142-278+104+30-78 +sign_ed25519_open 6 4 114732 +6258+2182+958+466+514+0-172-130-130-12+28-128-144+6-226 +sign_ed25519_open 6 6 116206 +6406+1498+506+374+0-42-152-56+2+108+629-343-182-482-284 +sign_ed25519_open 6 8 114822 +7158+1886+1068+556+324-122-116-86-92+0-112+44-16-100+146 +sign_ed25519_open 6 11 114282 +7390+1780+756+496+256-8-32-252+0-80+22-24+12-2-110 +sign_ed25519_open 6 14 115762 +6482+1706+668+350+186-310-50+0-188-116-50+6+150-162-240 +sign_ed25519_open 6 18 115212 +6992+1316+48+132+32+48-88-150-108+0+751-648-585-652-730 +sign_ed25519_open 6 23 114662 +6832+1938+766+136+0+84+20-98-100-220+42-42-20-56-92 +sign_ed25519_open 6 29 116266 +6766+2036+892+442+104-476+0-290-164-216+120-112-258-120+18 +sign_ed25519_open 6 37 113052 +6460+1648+328+144+0+178+108+36-70-98-300-362-130-110-162 +sign_ed25519_open 6 47 115738 +7330+2538+1428+452+0-118+10-88+140-44+1084-588-596-808-650 +sign_ed25519_open 6 59 113550 +6794+1634+768+374-60-2+180+166-66-150-202-42+0+36-28 +sign_ed25519_open 6 74 115250 +7386+2180+1090+770+350-242-116-184+0-272-70+78+0-112-180 +sign_ed25519_open 6 93 115476 +7412+1858+1228+322-92-150-170+370-174-118+236+0-108+210-82 +sign_ed25519_open 6 117 117710 +6876+2388+1112+300+154+0-56-310+82+477-822-642-874-960-744 +sign_ed25519_open 6 147 115190 +7202+2236+1216+696+230+166-178+0-270-30-246-348-102-200+74 +sign_ed25519_open 6 184 116106 +6824+1812+692+320-112+118-68-12-106-4+8+0+10-142-90 +sign_ed25519_open 6 231 117390 +6724+1656+694+14-6+90-86-98+98-254-152+0+222-56-10 +sign_ed25519_open 6 289 116108 +7600+2484+1050+656+24+0+116-14+559-644-210-638-510-762-750 +sign_ed25519_open 6 362 114678 +7934+2794+1164+580+88-32+102-100-18+56-40+0-86-86-28 +sign_ed25519_open 6 453 118538 +7230+1840+740+492-72+150-54-12-154+50-230+0-160-158+192 +sign_ed25519_open 6 567 119630 +7038+2048+928+556+246-42-122+4-30-180-182+168-258-224+0 +sign_ed25519_open 6 709 118890 +8132+2142+1524+1060+680+118+757-188-296-202-332-374+0-342-418 +sign_ed25519_open 6 887 119872 +7444+1900+1036+694-4+64-68-28+54+20-98+0-30-128-120 +sign_ed25519_open 6 1109 120566 +7046+2418+579+209-72-178-28-136-130+50+0+30-98-144+118 +sign_ed25519_open 6 1387 122882 +7096+2154+968+72+0-418-170-8+86+24-186-48-4+108-26 +sign_ed25519_open 6 1734 124870 +8048+2704+2063+598+162+216-92-58+4-208+0-170-90-36-134 +sign_ed25519_open 6 2168 125410 +6844+1638+262+482+132+18+126-108-166-220-78+0-174-50-254 +sign_ed25519_open 6 2711 128238 +7248+2050+366+264+170-164-130+0-170-184+234-188+10-238-64 +sign_ed25519_open 6 3389 134710 +7522+1552+836+100+103+90-126-211-104+0+340-776-918-548-707 +sign_ed25519_open 6 4237 138290 +7400+1230+344-58-12+0+248-148+144-20-34+72+96-20-78 +sign_ed25519_open 6 5297 145566 +8094+906+312+134+74-232-118-114-392+146+0-290+168-186-46 +sign_ed25519_open 6 6622 151484 +6668+1849+606+9-10+40-244+0-84+56-14-32+163-592-746 +sign_ed25519_open 6 8278 159550 +8189+2494+1208+491+188+146-458-195-393+0+52-76-654-292-280 +sign_ed25519_open 6 10348 168986 +8219+2811+752+134-117+293-38-32+188+0-92-102-198+60-14 +sign_ed25519_open 6 12936 184862 +8406+2334+1084+913+1009+1021+130+0-114-80-142-90-36-430-140 +sign_ed25519_open 6 16171 201694 +8076+2069+464+602-1+122+181-77-56-161+0-245+62-102-131 +sign_ed25519_open 6 20214 225684 +7283+994+391-569+110+0+939-256-126-82+23+163-123-420-257 +sign_ed25519_open 6 25268 254448 +7592+2440+982+497-448-243+162+44-23+0-604-39-399-107+97 +sign_ed25519_open 6 31586 291892 +7580+2103-144+537+377-94-120+142+247-218+0-101+28-112-52 +sign_ed25519_open 6 39483 337418 +5779+1998+29+149-878+27+2441-15+0-345-1117-245-219+175-245 +sign_ed25519_open 6 49354 392095 +6041+2701+1103+505+262-126-1419-154+3140+850-1494-152+0-117-427 +sign_ed25519_open 6 61693 461343 +6458+2280+282-536-260-331+0+1698+765+47-122+231-245-154-556 +sign_ed25519 7 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 7 32 30375 +4143+436-51-41-78+0+92-126+41+104+9-53-58+41-14 +sign_ed25519 7 0 33572 +2304+409+28-77+118+0-52+31-119-114+56-41-32+120-100 +sign_ed25519 7 1 33571 +869+102+144+14-51-66-33+0-86-75+32+46+98-16-88 +sign_ed25519 7 2 33621 +1220+71+194-59-92+123+4-73-23+0-61+22-104-99+17 +sign_ed25519 7 3 33612 +777+359+11+0+16-52-55+70+33-89+48-27-60-22-1 +sign_ed25519 7 4 33569 +542+527+136+33+89-88+21+21-40-68-34-34-60-6+0 +sign_ed25519 7 6 33542 +512+208+8+110-9-18+19+118-28-30-71-41-28+0+15 +sign_ed25519 7 8 33511 +725+177+0+97-4-94+54+46-47-9+70-57-40-7+72 +sign_ed25519 7 11 33529 +625+202-31+82+34-77+95-63+57-12+0-22+91-66-25 +sign_ed25519 7 14 33553 +734+434+89-28-32-38+14-72-72-87+17+7-48+36+0 +sign_ed25519 7 18 33539 +360+288-64-1+36+13-26-69+0-20-11+0+72+11-25 +sign_ed25519 7 23 33547 +438+204+45+25+28-57-77+94-29-48+0-57-82+41-6 +sign_ed25519 7 29 33582 +324+226-30-110+92-100+0+20-32+0+81-48-62-20+12 +sign_ed25519 7 37 33594 +657+145+135+163+184-11-34+66-118-172+141-136-128+0-82 +sign_ed25519 7 47 33573 +287+297-101-38+251-79+0+136-22+28+170-88-80+117-63 +sign_ed25519 7 59 34281 +296+30-6-51+13-18-119+0+46-24+0-9+82+55+49 +sign_ed25519 7 74 34385 +1306+124+48+192-93-125+11-105+72-20+72-17-74-153+0 +sign_ed25519 7 93 35068 +855+118-46-62+66-19-15+55-59-63+9-45+0+39+0 +sign_ed25519 7 117 35032 +609+226-43+154-68+33+25-34-12+70+57+0-28-23-65 +sign_ed25519 7 147 34967 +879+384+68+66+0-19-5-19+126-29+21-2-14+145-5 +sign_ed25519 7 184 35904 +520+82+144-10+0-106-99-110-2-3+59-15+114+98+51 +sign_ed25519 7 231 36464 +818+246+46-14-36+37-2+7-21-58+150+46-15-16+0 +sign_ed25519 7 289 36536 +812+164-29+0-17-77+79+55+28-77+53-22-70-3+97 +sign_ed25519 7 362 37925 +1214+648+0-132+33+60-21-30+39+20-75-51-97-4+3 +sign_ed25519 7 453 38618 +1302+446+42-27-36+23+35+0-84+38-27-37-44+35-20 +sign_ed25519 7 567 40244 +607-124+55-125-227+122+0+158-170-82+83+166+87-87-44 +sign_ed25519 7 709 41432 +984+93+0-62+0-69-88-58+20-22-61+72-16+31+98 +sign_ed25519 7 887 43548 +1102+255-61+0-26-50-199+11-34-102+79-11+1189+428+148 +sign_ed25519 7 1109 46438 +1018+130-110-22+0-77+29+298-109-49+37-123+48-136+199 +sign_ed25519 7 1387 49078 +1152+274-166+200-238+117+0+171-13+160-50+133-76-65-63 +sign_ed25519 7 1734 52651 +964+335-32+1+95-63+59-139-298+9-17-313+0-150+118 +sign_ed25519 7 2168 57649 +1038+234-136-58-533+0+164+112+54-168-281-224+137+219-150 +sign_ed25519 7 2711 63209 +881+488+259+0+0+246+9-89+263-80+8-64-168-305-211 +sign_ed25519 7 3389 71051 +1043+24+99+50+136-89-177+0-15-389-146+57-135+40-345 +sign_ed25519 7 4237 79942 +1206-228+155-179+160-348+48-207+0-158+253-208+301-308+96 +sign_ed25519 7 5297 91669 +1148+162+1085+208+55+108+0-82-239-115-74+67-97-11-88 +sign_ed25519 7 6622 106028 +1860-44+204+308-147+26+0+2616+211-115-65-248-89+9-9 +sign_ed25519 7 8278 124036 +1677+133+347-23+24-195+246-32+160-98-54-296+0-65+15 +sign_ed25519 7 10348 146112 +1633-168+0-59-55+210-126-84-228-188+16+263+229+186+72 +sign_ed25519 7 12936 173692 +2338+170+0-62+32-127+112+178-99+28-85+113-32-134-89 +sign_ed25519 7 16171 208171 +2327-55-37+34+1-59+210+66-55+194-96+35-81+0-6 +sign_ed25519 7 20214 252583 +3560+0+1051+1906+186+41+75+211-252-163-112-162-94-156-118 +sign_ed25519 7 25268 307493 +3744-69-259+279-85+27-184-124-126+48+26-75+1264+2254+0 +sign_ed25519 7 31586 375773 +4681+374+66+35+0+4+237-127-78+248-129-152-319-153-309 +sign_ed25519 7 39483 461209 +4677+238+76+215+27-149-15-24+150-223+193-53-202-170+0 +sign_ed25519 7 49354 567600 +5315+335-21-57+412+8-370-91-385+0-151-43+1344+1245+6 +sign_ed25519 7 61693 700972 +6195+156+0+51-299-97+41+2658+839+421-157-281-475-257-118 +sign_ed25519_open 7 0 114644 +9066+2028+854+416+42-178+0-124+74-220-74+970-561-628-678 +sign_ed25519_open 7 1 115140 +6674+1528+448+348-20+186-96+0+148-168-8-428+22-466-334 +sign_ed25519_open 7 2 115136 +6860+1658+582+292+32-14-248-444+26+2+0-10-136-162-324 +sign_ed25519_open 7 3 116218 +7598+2559+1181+562+192-64-32-2-248-346-82+38+0-92+78 +sign_ed25519_open 7 4 114442 +6996+2396+954+444+22+0-74+188-44-224+718-591-563-736-824 +sign_ed25519_open 7 6 115670 +7182+2996+1440+904+224+218-56-116-174+0+22-154-266-222-226 +sign_ed25519_open 7 8 115150 +7470+1524+528+160+0-22+24-48-104-202-194+42-158-150+22 +sign_ed25519_open 7 11 115292 +6848+1885+943+234-76+150+0-104-304-28+2-120-112-52+30 +sign_ed25519_open 7 14 115508 +7264+1568+632+182+0+94+330-174-376-360+414-288-514-298-402 +sign_ed25519_open 7 18 115740 +6974+2060+1094+710+264+160+20-312-102+0-98-68-148-138-340 +sign_ed25519_open 7 23 115443 +6583+2161+789+743+328+0+172-122-100-28-58-180-107+211-183 +sign_ed25519_open 7 29 114718 +6764+1961+953+784+166+240+32+0-454-50-68-314-38-60-182 +sign_ed25519_open 7 37 115600 +7521+1939+818+334+136+54-210+32+0-248-52-491-740-758-714 +sign_ed25519_open 7 47 115636 +7444+2144+1544+388+68-104-179+67-118-104-110-96-4+0+3 +sign_ed25519_open 7 59 115620 +7282+2312+822+418+176+90-22-32-340+0-32-162-170+38-36 +sign_ed25519_open 7 74 116268 +7356+1114+458+150-86+46+50+0-66+148-108-14-30-216-154 +sign_ed25519_open 7 93 116256 +7115+1533+624+186+0+124-132+128-96+729-434-228-336-402-518 +sign_ed25519_open 7 117 116742 +6522+1932+1178+234-212-198+24+0-128-354+78-112+188-160-52 +sign_ed25519_open 7 147 116086 +7498+2354+1144+548+134-128+92+10-52+0-88-248-180-94-98 +sign_ed25519_open 7 184 115468 +7890+2202+286+380+180+0-320-96-86-48+18-190+118-292-312 +sign_ed25519_open 7 231 116664 +7322+1552+866+570+304+274-16+0+846-654-628-502-482-688-534 +sign_ed25519_open 7 289 116992 +7216+1990+544+106-47+157-193-199-126+0-236-86-183+1842+412 +sign_ed25519_open 7 362 117432 +7234+2428+914+380+178+330-58-230-26+0-136-240+2-98-262 +sign_ed25519_open 7 453 117454 +7118+2458+880+828+252+122-106-78-326+0-146-196+4-102-272 +sign_ed25519_open 7 567 118950 +7180+2052+858+720+80+0+1552+80-42-224-290-442-151-365-420 +sign_ed25519_open 7 709 118672 +7180+1808+662+290+0+26-166-162-268+70-18-144-106-144+18 +sign_ed25519_open 7 887 119940 +7364+2142+1014+654+274+0+62-204-16-34-20+16-30-42-214 +sign_ed25519_open 7 1109 121384 +6698+2286+956+780+210+68+0-12-4-210-34+6-88-266-220 +sign_ed25519_open 7 1387 121722 +7100+2734+1830+563+141-196+78-231-169+34-78+0-60-318-64 +sign_ed25519_open 7 1734 123516 +7940+1934+226+228+93-151-30+0+96-62-312-76-52-182+156 +sign_ed25519_open 7 2168 126872 +6784+2353+921+72+110+0-52-176-108-202-52+16-148+18-268 +sign_ed25519_open 7 2711 129060 +7720+2664+938+224+58-2-32-12-30+128-136+0+1037-48-96 +sign_ed25519_open 7 3389 135986 +7112+1538+622+284-170-62-158+92-210+0-56-332+20-142+6 +sign_ed25519_open 7 4237 136924 +7334+2276+912+566+0-160-286-196-102-42-132+78-78+18+28 +sign_ed25519_open 7 5297 142434 +7464+1606+610+46+160+46-180-84-178+107-187-60+0-8-48 +sign_ed25519_open 7 6622 151600 +8041+1774+733+620+0+160+62-152-296-144-138-46-406-152+210 +sign_ed25519_open 7 8278 160536 +8347+2186+667+256-38-212+244+340+0-436-422-360-74+112-108 +sign_ed25519_open 7 10348 171136 +7650+1654+943+538+62-211-82+0-171-117-180+413+266-241-333 +sign_ed25519_open 7 12936 185427 +7977+2154+498+238+90+10+103+0-92-201-181-242-88-373-227 +sign_ed25519_open 7 16171 203036 +8017+2393+885+384-146-48+10+141-114+94-47-97-114+0-67 +sign_ed25519_open 7 20214 226294 +7903+2181+1161+578+169+81-102-158-45-148+46-48+0-14-429 +sign_ed25519_open 7 25268 254907 +7791+1751+434+152+0-222-76-11+186+18+1253-254-413-304-556 +sign_ed25519_open 7 31586 291784 +6232+1826-148+372+346+0+22+102-542-166-92-2-612-61+65 +sign_ed25519_open 7 39483 336004 +8725+2004+985+628+585+498+308+0-1121-16-49-49-1098-47-69 +sign_ed25519_open 7 49354 391509 +6545+2343+839+3745+602+413-4-149-202-113+135+0-53-249-288 +sign_ed25519_open 7 61693 461649 +6570+2763+4945+1013-146+406-363+52-129+103-188+0-56-498-153 +sign_ed25519 8 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 8 32 30413 +4833+389+61+75-14+0-24+38-118-84-158-30-65+125+18 +sign_ed25519 8 0 34043 +2743+190+113-51+65-95+244-73+0-95+58+65-12-21-122 +sign_ed25519 8 1 34160 +1388+96+27+93-49+84-22+0-10+47-181+2-178-37-139 +sign_ed25519 8 2 33987 +1435+125+177-70+106+0+189-106-23-128-33+3+80-36-41 +sign_ed25519 8 3 33999 +891-72-18+97-20+22+0-18-9+50-98+90-61+9+18 +sign_ed25519 8 4 34067 +882+123-40+232+0+92-103+220-124-9-93+11-204+85-83 +sign_ed25519 8 6 34027 +968+86+48+42-91+27-53+130-240-83-21+0-46-42+230 +sign_ed25519 8 8 34172 +685+110-21+79-119-79+5-16-77-113+112+0+34-79+28 +sign_ed25519 8 11 34110 +675-67+228+1+18-100+15-138-98+76-80+17-53-164+0 +sign_ed25519 8 14 33974 +838+196-27+22-47-35-68+12-1+105+8+0-94-78+78 +sign_ed25519 8 18 34033 +651+8+11-19+136+5+0-128-58+180-5-18+35-13-26 +sign_ed25519 8 23 34132 +630+86-122+137-15+173-1+41-85-5+0-30+29+0+2 +sign_ed25519 8 29 34210 +532+257-126-20+807+690-148+112-256-181+0-147+30-287+28 +sign_ed25519 8 37 34067 +1499+58+89-159-6-198+10+0-141-150+32-126-166+1+16 +sign_ed25519 8 47 33976 +959+192-55+89-62-4+0-9+21+29+106-32+89-31-57 +sign_ed25519 8 59 34786 +815+158+0+14-91+14+53-35-33-29+15-4+84-7-32 +sign_ed25519 8 74 34851 +750+255+7+289+0+123+18+23-18-161-130-51-157-11-156 +sign_ed25519 8 93 35605 +863+58-119+80-150+147+0+251-149-7-99+137-70+2-124 +sign_ed25519 8 117 35587 +1025+180-44+104-96+63-41+42-52+119-137+0-51+63-71 +sign_ed25519 8 147 35587 +1191+38+29+111+71+76-41-30+0-74-48+13-96-65-94 +sign_ed25519 8 184 36258 +885+370+39-23+1-107-73-170-112+17+7+54+0-84-46 +sign_ed25519 8 231 37123 +1030+254-92-99-269+205-30+35-17+17+43-135+75-195+0 +sign_ed25519 8 289 37037 +1181+163+27+120+0+58+127-65-213-68-143-49-20+43-15 +sign_ed25519 8 362 38471 +864+169+14-68-192+0-296-133+98-205+3-210+36-41+5 +sign_ed25519 8 453 39093 +890-27+50-174+0-140-77-154+107+1405+193+25-195-76+8 +sign_ed25519 8 567 40475 +1615+83+87-134-68-33+17+175+4+136-45-23-207+0+0 +sign_ed25519 8 709 41893 +1339+121+174-249+17+0+125-193+65-11-193+106-111-8-134 +sign_ed25519 8 887 44044 +1241+123-111+61+0-145-35+9-73+105+43-92-45+56-172 +sign_ed25519 8 1109 46897 +1152+126-173+156-122-23-194-146-173+57+0-152+191+42+29 +sign_ed25519 8 1387 49694 +1073+17-71+3-96-29-178-56-251+388+50+40+0-83+60 +sign_ed25519 8 1734 53157 +1112-214+25+26-1+47-247+215+0-137+140+55-34-36-178 +sign_ed25519 8 2168 58076 +1261+0-245+106+43-82+85-122-52-89+61+72-105+53-185 +sign_ed25519 8 2711 63647 +1607-3+223-10+41-17+8+59+115+48+0-30-77-7-132 +sign_ed25519 8 3389 71375 +1471-68-157-76+262-177+1639+132-153+0+28+16+39-164-19 +sign_ed25519 8 4237 80364 +1679+155-25+67-363+76-199+242-209+137-70+222-199+0-129 +sign_ed25519 8 5297 92080 +1398+222-52-406-298+0+53-90+108+11-239-291-127+103+38 +sign_ed25519 8 6622 106408 +1761+164+862-176+197+442+0-19+40-31-126+99-206-157-262 +sign_ed25519 8 8278 124555 +1759+120-84-205-286+9+133+473+400+0-18-65-225-114+96 +sign_ed25519 8 10348 146746 +2650+198-239+71+154-38-71-122-25-9+52+9+0+97-27 +sign_ed25519 8 12936 174188 +2364+189-51-183-68+32+0+87+31-112+166-227-230+125-74 +sign_ed25519 8 16171 208566 +3251-89+409+149-1-51+0-72+119+1752+486-106-106+92-121 +sign_ed25519 8 20214 253126 +3791+337+0+89+163-82+98+211-138-35-173+4-216-1-47 +sign_ed25519 8 25268 308465 +3547-38+269-381-411+2255+437+296-207-17+16+0+259-86-197 +sign_ed25519 8 31586 376913 +5358+65-193+281+0+151-180-181-125-185+2475+709+170-268-310 +sign_ed25519 8 39483 462000 +4407+704+44-79-126-222-92-1+0-62+1133+2050+252-69+112 +sign_ed25519 8 49354 568710 +4527-37+51-35-53+402+565-70+3034+549-40+162-224-131+0 +sign_ed25519 8 61693 702603 +4691+736+460+1623+1441+79-312-144-140-541-653-655-531+0+2184 +sign_ed25519_open 8 0 115666 +8287+1545+194+0-260-202+124-78+42-258+52-50-194-268+242 +sign_ed25519_open 8 1 113990 +7007+1955+742+756+206-276-82+24+0-76-168+116-160-138-84 +sign_ed25519_open 8 2 115004 +7601+1847+628+388+80+4-94-60+24-46-84+0-138-76-54 +sign_ed25519_open 8 3 115993 +6679+1275+519+479+207+41+389+0-329-155-247-325-61-89-413 +sign_ed25519_open 8 4 116300 +6924+2142+1318+720+168+262-14+0+6-86-212-274-338-54-66 +sign_ed25519_open 8 6 114518 +6912+2024+788+272+64-416+78-98-50-282+0-114-234-298+86 +sign_ed25519_open 8 8 114950 +7672+2698+1160+388+264+180-188-36-124-30-20+0-44-92+126 +sign_ed25519_open 8 11 114392 +7424+2218+1088+658+552+1152+434-54-224-170+0-176-130-298-162 +sign_ed25519_open 8 14 114752 +7370+1844+482+244+36-98+98+42-92-26-84+0-296-106-282 +sign_ed25519_open 8 18 113466 +7468+1330+694+616+130+70-36-110-46-16+6-124-76-174+0 +sign_ed25519_open 8 23 114654 +7186+2120+952+352+240-78+0-106-8+148-180-18-78-242+184 +sign_ed25519_open 8 29 114934 +7200+2842+1672+922+1186+1257-140-102-82-242-158+0-104-112+0 +sign_ed25519_open 8 37 115014 +7104+2316+1254+402+140-52-92-32-102-170-62+0+64-24+26 +sign_ed25519_open 8 47 114694 +6828+1624+940+522+326-46-82-108-56+20-175-63-66+60+0 +sign_ed25519_open 8 59 114378 +7066+2394+928+48+210+74-94-128-142-42+0-292-102+20-208 +sign_ed25519_open 8 74 115828 +7682+2792+1562+1052+532+1418+150+0-72-40-88-66-14-94-232 +sign_ed25519_open 8 93 117090 +6732+2254+1358+388+370+256+0+228-318-148-136-122-212-146-186 +sign_ed25519_open 8 117 116082 +6698+1604+260+184+0+18+198-108-208-128-216-278-94+20-178 +sign_ed25519_open 8 147 115546 +7270+1710+664+436+520+12-234+0+24-46-104-130-120-20-216 +sign_ed25519_open 8 184 115812 +6888+1592+826+622+1258+335-132+0-168-34+14-212-182-42-218 +sign_ed25519_open 8 231 118628 +6954+1890+876+274+294+0-214-48-316-32-182-106+8+352-86 +sign_ed25519_open 8 289 115394 +6720+1622+766+420-14+14-168-54+0-96-100-212-90+34+36 +sign_ed25519_open 8 362 115642 +6990+1302+593+455+96+296-80-310-44-12-218-6-208+72+0 +sign_ed25519_open 8 453 117268 +7494+2838+1192+1611+158+70+118-60+0-26+0-14-62-134-116 +sign_ed25519_open 8 567 117324 +7168+2134+1004+316+208+230-74-2-72-10-258-114-80+0+252 +sign_ed25519_open 8 709 118976 +7430+2204+890+298-158-110+4-104-50+0-88-200+28-78+70 +sign_ed25519_open 8 887 119536 +7494+1764+836+470+218+40+28-124+0-86-286-162-94-202-178 +sign_ed25519_open 8 1109 121124 +9389+2785+1326+242+134-240-216+162-92+0-14-50-56+4-284 +sign_ed25519_open 8 1387 122094 +8228+2132+908+380-122+2+26-74-118-34-110-84+0+158-88 +sign_ed25519_open 8 1734 124176 +7836+2344+1071+748+483+183+0-59-230-258-252-154+4-108-198 +sign_ed25519_open 8 2168 127926 +6532+1520+954+600+208+0-48-100+18-88-114+896-408-778-714 +sign_ed25519_open 8 2711 128788 +7540+1506+1002+304+56-114+68-132-196+0-104-120-36+22-46 +sign_ed25519_open 8 3389 133318 +8050+2366+1026+730+186+16-2+169-87-154-78-58-46-224+0 +sign_ed25519_open 8 4237 138340 +7954+1718+466+398+0+6-74+292+6-288-320-322-266-386-220 +sign_ed25519_open 8 5297 145444 +8997+2271+332+236+186-200-230-494+4-182-136-226+92-150+0 +sign_ed25519_open 8 6622 150764 +7894+1224+147+45+104-224+152-180-174-414+0-132-262-220+76 +sign_ed25519_open 8 8278 159458 +7664+2268+364-54-82-12+122+58-240-540-246+132+24-148+0 +sign_ed25519_open 8 10348 171235 +8076+1887+379+27+65+0-416-263+126+58-219-117-449-153-23 +sign_ed25519_open 8 12936 185680 +7493+2065+789+183+32-77-20-149+12-252+10-206-141-204+0 +sign_ed25519_open 8 16171 202337 +8470+2466+792+1668+818+93+0-66+88-204-177-51-22-284-111 +sign_ed25519_open 8 20214 226050 +7570+1909+528+99+10-25-50-153-237-94-55+241-201+0+187 +sign_ed25519_open 8 25268 255174 +7684+3031+776+227-23+49-80-49-117+0-108-198-58+1+108 +sign_ed25519_open 8 31586 291136 +7415+1856+821-473+154+0-15-125-139+51-674+1916+153-1025-392 +sign_ed25519_open 8 39483 336589 +6391+1932+723+410-57-1219-70+0+187-770-1046-52+78+202-1022 +sign_ed25519_open 8 49354 392760 +7148+2132+1125+417+322+389-80+0-263-328-149+15-165-209-254 +sign_ed25519_open 8 61693 461683 +6506+1667+331+394+302-288-184-186-398+0+12-409-286-91+1385 +sign_ed25519 9 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 9 32 30328 +4673+436-36+52-143-37+66+0+19+34-69-14+33-32-17 +sign_ed25519 9 0 34061 +3518+333+86+7-33-51+71+11-36-102-9-65+0+46-78 +sign_ed25519 9 1 34290 +2035+172-30+0+191+28+176+51-150-166+7-139-125-244-54 +sign_ed25519 9 2 34201 +1209+83+222-19+0-69+102-52+41-52+66-50-10-37+111 +sign_ed25519 9 3 34301 +982+70+32-144+0+48+43-127-55-180+15-140-133-228+28 +sign_ed25519 9 4 34231 +1030+239+127-35+106-39+161-91-32-165+29-12-55+0+69 +sign_ed25519 9 6 34217 +958+120+2-157-30+66-47+0-37+80-43-106+38+61-17 +sign_ed25519 9 8 34253 +765-6+184-28+117+72+206-84-4-128+75-61+216-127+0 +sign_ed25519 9 11 34399 +687-11-170-295+0+1019+448+127-23-51+77-171+88-204+56 +sign_ed25519 9 14 34220 +1778+126+132-8+0-38+60+47+83-96+63+0-39-12-33 +sign_ed25519 9 18 34200 +1323+78+8-67+45+120-5-2+91+0+11-115-59-128-94 +sign_ed25519 9 23 34159 +957+283+121-10+85+114+50-31-71+195-100-152+0-185-63 +sign_ed25519 9 29 34180 +837+90+0+9-6+7-14+22-114-28-55+59-109+39-125 +sign_ed25519 9 37 34342 +1080+67-30-119+94-163+110-329+145-213+59-104+0-127+128 +sign_ed25519 9 47 34230 +1082+88+143+43-50+64-70-18-111+133-128-92-69+0+91 +sign_ed25519 9 59 34910 +750+153+92+8+122+269-25-144-50-140-37+0-26+20-77 +sign_ed25519 9 74 34954 +1274+109+206+0+31+21-31+4-104-6-190+16-22-167-61 +sign_ed25519 9 93 35639 +1248+73-56+0-76+10+0+8-34+0-33-67-106-172+67 +sign_ed25519 9 117 35618 +1185-104+44+141-11+46+37-10+0-25-199+153-42+58-57 +sign_ed25519 9 147 35681 +1330-48+116-14+243-108+110-65+71-107+164+0-8-2+137 +sign_ed25519 9 184 36457 +1083+53-119-81+4+63-10-177+2-122+80-74+43-166+0 +sign_ed25519 9 231 37154 +1794+49+134-138-158+181-36+243-159+0-31+274-77+123-110 +sign_ed25519 9 289 37212 +1321+178+161-95+284+122+114-241+58-262-18-169+0-105-141 +sign_ed25519 9 362 38502 +1487+0+7-90-25-37+49-37+114-47+37-159+131-219+16 +sign_ed25519 9 453 39330 +1366-74+0+75-35+14-2-112+42-118+72-95-25+35+70 +sign_ed25519 9 567 40794 +970-157+41+52+68-170-23+24+0-33-47-34+186+38-67 +sign_ed25519 9 709 42111 +1566-71-4+59+38-88+11-52-200+4-94+124+0-64+1 +sign_ed25519 9 887 44023 +1382+179+94-1+0+14+11-15+55-178-101+64-26-76-55 +sign_ed25519 9 1109 47066 +1326+1+82+2-97+0-79-84+52-26-27+153-237+126-160 +sign_ed25519 9 1387 49790 +1430+127+154-111+97-114-23+0+77-92+451-195+91-28-134 +sign_ed25519 9 1734 53269 +1474+208+150+218-108+43+0-82-12+11-205-105-141-258+86 +sign_ed25519 9 2168 58141 +1396-185+1220+159+247-65+75-85+0+10-162-80+53-147-160 +sign_ed25519 9 2711 63828 +2151+13-149+120-64-181-199-235-80+0+24-53+232+224+236 +sign_ed25519 9 3389 71438 +1609+158-212+10+400+36-72-12-7-112+43-218-15+52+0 +sign_ed25519 9 4237 80345 +1909+33+227-245+52-189-38-195+60-192+75-186+0-184+114 +sign_ed25519 9 5297 92209 +1253-233+113+91+354+127+0-153-184+10+36-41-55-41-214 +sign_ed25519 9 6622 106847 +1263-134-78+236+278+0-119+164-11-149+149-119+101+2638-27 +sign_ed25519 9 8278 124612 +2077-171+88+269+174+226+14-107-210-414-97-97+33+0-117 +sign_ed25519 9 10348 146753 +1715-116-353-253-112+0-132+0+187+41+87-55+113+63+144 +sign_ed25519 9 12936 174076 +2223-108+283+389+244+0-141+59-184-14-170+57-17-90+1992 +sign_ed25519 9 16171 208666 +3360+200+635+207-210-92+115-15-127-75+0+45+86-96-114 +sign_ed25519 9 20214 253316 +3622+404-268-62+190+131-70-36-182+282+0-164-299+1450+1960 +sign_ed25519 9 25268 308718 +4044+133-52+48-113-214-29-3+0-63+113+122+124+12-43 +sign_ed25519 9 31586 376940 +3645+332-4+1046+1805+0+213+85+351-53-180-506-155-13-292 +sign_ed25519 9 39483 462084 +4763+247+0-26+97+2065+1701+672+76-278-336-157-358-271-364 +sign_ed25519 9 49354 568944 +4251+409+107-3+2061+900+261-124-194-90-196+0-138+103-247 +sign_ed25519 9 61693 702573 +6964+1204+331+446-391-265-507-273-358-522+875+1622+0+259-622 +sign_ed25519_open 9 0 115512 +8914+1768+766+218-92+0-88+48+62-128-92-12-174+124-180 +sign_ed25519_open 9 1 114402 +7252+1478+422+264-210-100+17-241-124-224-150+54-4+0+44 +sign_ed25519_open 9 2 114007 +7465+3575+1690+709+323-2+19+0-135-56-50-55-63+98-40 +sign_ed25519_open 9 3 115528 +6724+1452+628+394+18-120-264-26-188+130+60+0-66-52-156 +sign_ed25519_open 9 4 114330 +6648+1854+1434+640+98+26+0-280-434-486-380+154-100-382-388 +sign_ed25519_open 9 6 114776 +6798+2040+860+820+326-12-78-16+0-38+170+120-26-48-134 +sign_ed25519_open 9 8 113548 +7954+3610+970+98+0-105+132-34+72-40+60-110-162-150-16 +sign_ed25519_open 9 11 114508 +5634+1312+208-18-272+0-116+172+84-28+148+22-206-170-180 +sign_ed25519_open 9 14 114914 +7472+2596+1544+1072+0-28+184-84-258-174-32+222-54-22+16 +sign_ed25519_open 9 18 113368 +6286+2432+888+852+248+40+0+278-174-112-68-278-246-224-142 +sign_ed25519_open 9 23 113641 +7181+3518+1083+343+247+162-246-18-60-109-89-146+0+131-172 +sign_ed25519_open 9 29 114480 +6888+1768+512+468+0+6-52-216-168-200-234+92+8-218-108 +sign_ed25519_open 9 37 115088 +6820+1010+630+92+310-360+56+86-274+0-154-372-276-258-248 +sign_ed25519_open 9 47 114826 +7168+2494+1418+898+418+184+10+0-134-12-86-84-42-80-118 +sign_ed25519_open 9 59 115208 +7632+2655+838+293+0-112-126-2+0+44-92-44-86+24-44 +sign_ed25519_open 9 74 116488 +6504+1644+378+80+316+0-318+30-286+24-252-200-358-96-200 +sign_ed25519_open 9 93 116468 +7486+2184+524+0-4+32+30-300-108+48-228-242+342-166-80 +sign_ed25519_open 9 117 114668 +6342+2344+962+704-2-152-18+0-34+186-102+114+118-76-108 +sign_ed25519_open 9 147 113265 +7348+2084+752+462-4+8-206-62+0+250-120-10-118+14-112 +sign_ed25519_open 9 184 116006 +7762+2788+1020+282+274-110+120-280+0-104+104-382-28-230-20 +sign_ed25519_open 9 231 115988 +7610+2140+884+718+352+4-158-86-350-62-56+0-334+20-290 +sign_ed25519_open 9 289 116052 +7326+2166+956+206+124-78+120-88-134-76+110-70-42-14+0 +sign_ed25519_open 9 362 116630 +8363+2480+824+516+508+136+114-32-114-290-142-70-56+0-76 +sign_ed25519_open 9 453 117290 +7614+2214+1206+590+146-326+56+0-68+122-228-142-128-112-182 +sign_ed25519_open 9 567 119396 +6500+1504+322+184-396-386-412+88-2+0-60+26+94-190-584 +sign_ed25519_open 9 709 119820 +7070+1866+410+26+378+12+0-100-210-60-76-74-78-282+626 +sign_ed25519_open 9 887 119206 +7838+1624+574+328-200-166+120+0-96-62-196+150-88+24-122 +sign_ed25519_open 9 1109 123044 +7734+2388+952+568+10-98-192-338-212-296+60+0+78-284-142 +sign_ed25519_open 9 1387 121096 +7618+2256+1426+598+54+46+8+0-290-32-2-102-20-216-190 +sign_ed25519_open 9 1734 125856 +6690+1410+784+486+0-62+8-532-326+834+479-736-934-729-784 +sign_ed25519_open 9 2168 127330 +7654+1408+776+114-170-162+64-180+0-90-154+1873+350-152-92 +sign_ed25519_open 9 2711 130438 +7952+2420+974+592-124-118-182+88-70+170-242+0+0-52-134 +sign_ed25519_open 9 3389 133506 +7508+1926+550+518+32+64-144-108-306-282-244+134-260+0-30 +sign_ed25519_open 9 4237 137220 +9865+2256+880+716+254-52-4-66-18+74-212-92-96+58+0 +sign_ed25519_open 9 5297 144872 +8024+2404+968+574+92+22-20-46-62-96-128+48-94+0-170 +sign_ed25519_open 9 6622 151206 +7275+2026+585+214-138+114-152+522-238-370+0-256-116-380+246 +sign_ed25519_open 9 8278 159904 +9039+3202+872+505-30+307+0+104-665-368-320-59-28+2-500 +sign_ed25519_open 9 10348 170668 +8139+2191+620+477-70-8+168-328-116-211+0-159+0-310+16 +sign_ed25519_open 9 12936 186030 +7511+1330+314+254+5+0-688-636-668+1009+380-512-360-624-622 +sign_ed25519_open 9 16171 202516 +8375+2716+1114+408+232+140+168+0-91-298-331-374-367-393-371 +sign_ed25519_open 9 20214 225354 +8008+2241+790-84+185+136-143+154+0-292+2062-276-120-241-263 +sign_ed25519_open 9 25268 255292 +7270+1966+262+0-44+296-448-133+177+269-61-561-635-582+134 +sign_ed25519_open 9 31586 291432 +6770+2221+599+2219+252-1016-687-27-261-207-191+25+54-163+0 +sign_ed25519_open 9 39483 335639 +8056+1904-653-807+362+54-1276+115+1812-40-1184+0-98-112+88 +sign_ed25519_open 9 49354 393201 +6855+2367+1104+439-55+138-59-48-203-1295+3011+913-1484+0-1612 +sign_ed25519_open 9 61693 460780 +7156+2071+83+335-363-438-434-505+2079-173+45-246+0+166-21 +sign_ed25519 10 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 10 32 30364 +5080+495-71-30+23+79+15-29-49+23+0-31+84-35-21 +sign_ed25519 10 0 34023 +3009+341+144+191-105-49-56+181-164+71-1+41-186+0-86 +sign_ed25519 10 1 34159 +1372-234+69+79-23-46+0+86-9+4-32-8-176+82+78 +sign_ed25519 10 2 34164 +923+68+72-24+80-14+0-31+45+97-91-42-189-76+132 +sign_ed25519 10 3 34166 +932-101+26+0+1454+79+111+10-82-58-127-81+59-23-125 +sign_ed25519 10 4 34125 +1362+184-8-21+38-12-32-30-51+3+29-98+70+0+33 +sign_ed25519 10 6 34189 +1033-33+39+0-53-8+24+55-14+29-55-22+36+110-26 +sign_ed25519 10 8 34192 +723-166+100+21-79-14-84+39-263+27-181+0-150+76+19 +sign_ed25519 10 11 34221 +671-234+12-51+100-10+14+60+5+114-38-6-45+0-231 +sign_ed25519 10 14 34109 +749-292+44+200-3+94+173-63+128-95+0-105-109+65-131 +sign_ed25519 10 18 34045 +1108-52+94+86+77-36+125+0-96-114+0-111+25-122-25 +sign_ed25519 10 23 34138 +746-132+156-129+23-1+153-118+11-100+58-58+0-74+12 +sign_ed25519 10 29 34129 +925-109+116-49+74-165+107-74+113-75+0-118+25-46+37 +sign_ed25519 10 37 34106 +1358-201-48-46+25-13+34+22-13+52+5-44+0+22-106 +sign_ed25519 10 47 34183 +575-159+100-124-30+67+117+0+76+90+99-65-184-250-76 +sign_ed25519 10 59 34878 +938-6-3+45-73+5+28+91-46-26+40+0-52-97+113 +sign_ed25519 10 74 34957 +898-9+196+19+1+73-78+1+0+89-26-50-153-17-48 +sign_ed25519 10 93 35624 +708+1608+320-141-52-101-56-118+57+0+10+36-34+166-1 +sign_ed25519 10 117 35644 +1179-6+0-104-14-60+28+66+39-102+185+131-33+17-119 +sign_ed25519 10 147 35642 +1230-48+41+62-72+39-27+0+176+1-17+52-77-172-46 +sign_ed25519 10 184 36437 +1006-100+116+1-56+74+0+128-17+12-58-37-113+47-90 +sign_ed25519 10 231 37050 +1147+0+138+249-49+2-36-13+10+221-32-12+27-137-85 +sign_ed25519 10 289 36946 +1286+273+107+85+184+31+137-19-25-95-73-26-55+0-5 +sign_ed25519 10 362 38441 +1159+238+59-100-177-16+0+380+82-94-122-115-161+248+37 +sign_ed25519 10 453 39166 +910+120+196+61+109+220-10-66-32-21+224-183-98-75+0 +sign_ed25519 10 567 40530 +1451-172+108+64+164+161-121-59+115+32-55-61-138+0-57 +sign_ed25519 10 709 41936 +1485-41+201-96-68+0+35-62-68+134-61-101+14+100+56 +sign_ed25519 10 887 44083 +1115+338-44-114+143-7-128+142+79-168+48+0-100+30-41 +sign_ed25519 10 1109 46927 +915-15+180+33-178-153-186+1593+323-141-368+0-179+102+58 +sign_ed25519 10 1387 49702 +1328+63+341+109+58-34+0+162-94-145-76+164-121-192-236 +sign_ed25519 10 1734 53158 +1461+161+210+1+294-321-4+15-48-46+80-177+0-84-49 +sign_ed25519 10 2168 58098 +1234+216+52+167-59+64-45+0+44-37+142-27-325-150-11 +sign_ed25519 10 2711 63721 +1464+222+118-19-28+0-69+122+264+132+173-39-21-272-233 +sign_ed25519 10 3389 71399 +1479-50-89-87+100+293-61-182+79+0-266-95+11+262+47 +sign_ed25519 10 4237 80390 +1823+49+135-144+274-280+202-123+56-145+95-284+0-115-15 +sign_ed25519 10 5297 92166 +1334+135-334+130-207-89-514+1906+0+64-149+30-44+146-322 +sign_ed25519 10 6622 106697 +1653-64-90+11+6-216+0-153-97+32-260+108+48+67-241 +sign_ed25519 10 8278 124474 +2041+248+46+569-190+110-147-66+51-301-12-185+88-229+0 +sign_ed25519 10 10348 146484 +1998-55+337+0+100+91-68+25-246+157-173-126-18+76+0 +sign_ed25519 10 12936 174052 +2034+2685+675-324-81-183+226+202+326+0-79-148-57+131-230 +sign_ed25519 10 16171 208698 +2556+390+296+100+44-189-46-10+0-126+228-88-164+69-191 +sign_ed25519 10 20214 253026 +3560+568+173-138+1626+1526-20+87-44+0+80-270-112-431-274 +sign_ed25519 10 25268 308113 +3954+259+145+0+16-44-24+47+32-319-154-180-150-28+2853 +sign_ed25519 10 31586 376878 +4163+192-402+63+191+0+258-154+174-555-588+165-79-309-358 +sign_ed25519 10 39483 461684 +5816+1550+494+80+142-371-84+249-262-38-64-14+47+0-187 +sign_ed25519 10 49354 568598 +4578+230+121-285-161+0-274-114-189+188-135-197+126+2278+767 +sign_ed25519 10 61693 702032 +5894-47-146+691-235-36-384+1720+1822+92+5+0-40-42+9 +sign_ed25519_open 10 0 116058 +8978+1644+167-39-50+118-120+112-38-30+0+46-108-148+633 +sign_ed25519_open 10 1 115530 +7314+1922+1012-10-40+1184+208+0-57-173+26-222-8+54-150 +sign_ed25519_open 10 2 115186 +7218+1946+872+416+158+68+0-116-203-7-91-277-229-77+133 +sign_ed25519_open 10 3 116784 +6372+1690+1000+248+204+0-50+48+72-270-292-250-216-270-224 +sign_ed25519_open 10 4 115220 +6900+1734+668+28+32+0-234+12-180-286-258-108-54+1351-206 +sign_ed25519_open 10 6 114772 +7745+1841+639+415+120-216-110-264+80+0+40-58-70-62-42 +sign_ed25519_open 10 8 114948 +7230+1758+574+0+384-156-110-96-274-98+296-214+126-204+32 +sign_ed25519_open 10 11 115520 +6679+1199+366+192+0+150-174-100-18+22-62-98-258+58-200 +sign_ed25519_open 10 14 114680 +7434+2099+613+284-72-178+22+34-202-80-212+0-128+749-236 +sign_ed25519_open 10 18 113616 +7402+1650+664+512+26-56+104-286-24+0+30-122-112-98-12 +sign_ed25519_open 10 23 115092 +6996+1690+992+158+86-92-172+0-166-132+32-24-220-134+104 +sign_ed25519_open 10 29 115122 +7104+1906+930+450+192+200-30-115-23-60-198+0-44-22+3 +sign_ed25519_open 10 37 115688 +7266+2583+909+436+104+222-124-424-184-154-146-316+0+1058-205 +sign_ed25519_open 10 47 116318 +6912+2188+1052+412+330+410+28-112-86-76-82-36-118-66+0 +sign_ed25519_open 10 59 115137 +6943+1593+393+583+85-220+0-200-108-245-67+145-143-29+95 +sign_ed25519_open 10 74 115724 +7240+2026+754+354+478-166-56+0-164-288-148-4+182-146+2 +sign_ed25519_open 10 93 116520 +7124+2194+550+319+161+0-16-62-4-114+46-208+1350-94-271 +sign_ed25519_open 10 117 115142 +7512+1662+486+248-188+424+226-18-14+152-44-132-350+0-138 +sign_ed25519_open 10 147 116747 +8079+3234+634+731+433+93+139-85-225-171-95-92+0-203-203 +sign_ed25519_open 10 184 116042 +8014+1950+826+474+178-88-92+22-60-54-168+0-108+82-88 +sign_ed25519_open 10 231 116296 +6916+1720+652+834+98+104-10+0-70-47-139+941-278-360-422 +sign_ed25519_open 10 289 115900 +7014+1220+524+452+0+102-4+94-52-88-192-4+10-44-100 +sign_ed25519_open 10 362 117164 +6628+1936+842+612-52-462-332+25-529-358+118-450-56+0+30 +sign_ed25519_open 10 453 116789 +7707+2111+849+597+93+19-233-158-244-290+122+0-204-318-412 +sign_ed25519_open 10 567 118202 +7686+1746+842+306+262-109+13-214+0+793-514-276-370-156-316 +sign_ed25519_open 10 709 120890 +7119+1289+550+218+406+84-146-54+0-42-124-158-61+79-181 +sign_ed25519_open 10 887 119760 +7454+1825+733+306+374-47+43-205-283+0-42+87-243-52-98 +sign_ed25519_open 10 1109 121982 +7020+1988+540+232-168-12+18-26-132-46+26+6-136+0-168 +sign_ed25519_open 10 1387 122249 +8077+2849+1647+1117+571+1238-9-91+0-99+84-1-168-149-109 +sign_ed25519_open 10 1734 125070 +7952+2004+1042+276+88-54-122-61-17-76+0-106-52+46+0 +sign_ed25519_open 10 2168 126190 +7546+2052+694+366+218-2+212-212-136+0+138-11-1-36-70 +sign_ed25519_open 10 2711 128538 +7824+2196+1025+643-118+50-77-49+0-368+144-52-119-261+72 +sign_ed25519_open 10 3389 134723 +8439+2041+413+218+0-79-229-132-180+0+84+103-39-184+106 +sign_ed25519_open 10 4237 138107 +8081+2071+653+433-69+53-453-119-15-95+0+64-199+41-51 +sign_ed25519_open 10 5297 143702 +7788+2604+668+225+31+82+0-106-40+81-381-67-438-19-220 +sign_ed25519_open 10 6622 151320 +8559+3354+1152+610+0-109+275-26+260-387-57-197-195+382-186 +sign_ed25519_open 10 8278 159286 +7606+1489+881+360+111-369-233-35+128-114-166-286-188+82+0 +sign_ed25519_open 10 10348 171344 +8258+1974+974+156+26-26+0-108-337-224-423-136-233+1581+393 +sign_ed25519_open 10 12936 185209 +8542+2788+819+214+89-72-98+0-55-44+65-16+61-99-59 +sign_ed25519_open 10 16171 204265 +7649+2011+892+433+230-48+63+19-166-39-242-59-344-354+0 +sign_ed25519_open 10 20214 225767 +9425+1642+892+467+361+95+119-224-37-138-61-150-27-57+0 +sign_ed25519_open 10 25268 257385 +7928+1585+469+0+111-105+18-494-311-38-526-174+4338+482-298 +sign_ed25519_open 10 31586 291612 +5607+1582+542+94+219-43-62-115+6+12-173-74-110+0-132 +sign_ed25519_open 10 39483 336553 +6660+4948+678+274+5080-111-316-191-195+0+10-228+38-358-1280 +sign_ed25519_open 10 49354 391084 +6887+2725+1261+3519+1895+53-268-211-88-1479+27+0-259-264-129 +sign_ed25519_open 10 61693 461019 +6168+1445+520+2811+385+242+28+0-223-462-221-612-665-444-450 +sign_ed25519 11 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 11 32 30426 +4551+611-36-43-86+91-159+127-147+39-27+0+75+19-108 +sign_ed25519 11 0 34230 +3181+338-69+18+229+117+117-13-48+0-60-3-42-129+88 +sign_ed25519 11 1 34237 +1062+142-133+15+25+73-80-196-52+0-68+45-28-45+30 +sign_ed25519 11 2 34245 +618+82+1+109-156-105-37-47-92+13+54+0-78+82-125 +sign_ed25519 11 3 34205 +709+67+127+5-214-64+60-78+34+0-85+60-57-11-33 +sign_ed25519 11 4 34274 +837+0+108-43+98-34-28-86+150+10+48-106-124-236+24 +sign_ed25519 11 6 34215 +675-71+104-69+27-143-2-162-80+68+143+0+95-11+214 +sign_ed25519 11 8 34277 +611-23-35+37+4-104+0+8+163-93+23-96+60-48-3 +sign_ed25519 11 11 34247 +728-63+29+12+59+0+69-84-4-74-6-92+78-137+8 +sign_ed25519 11 14 34238 +490+212+0-55+84+81-52+36-4+77-15-15-43+62-87 +sign_ed25519 11 18 34209 +571+3+108-177+12-19+0-45+99-50-9-96-79+34+66 +sign_ed25519 11 23 34244 +410+37-11-182-108-154+164+11+115-36+0+62-4-19+107 +sign_ed25519 11 29 34223 +645+14-48-57+26-29-54+0-37+88-101+2255+207+6-89 +sign_ed25519 11 37 34274 +1664+0+64-81+57-58+154-93-5-42+148-21-66+56+24 +sign_ed25519 11 47 34356 +716+118-106+140-143+21-273-13+36+58-292+8-33+0-7 +sign_ed25519 11 59 34887 +796+127-31+0-49+97+55+227-74+60-43-10-1+162-60 +sign_ed25519 11 74 35015 +900+80+83-106+120+0-106-140-124+14-61+12-110-21+31 +sign_ed25519 11 93 35673 +858+51-23+17-170+5-53-18+70-13-1+40+0+9-63 +sign_ed25519 11 117 35668 +923+254+0+43-67-49+129+19+34-55+129-49-1-142-97 +sign_ed25519 11 147 35800 +970+139-25-171+60+0+77-30+5-41-245-202+29-95+44 +sign_ed25519 11 184 36328 +747+132+19-124-96+0-107-51-150-61+132+34+54+38-104 +sign_ed25519 11 231 37069 +925+91+41+72-11+24-31-84-6+0+89-24-105-106+23 +sign_ed25519 11 289 37185 +852-22+0-94-19-58+59-15+22-29+210+70+139+160-115 +sign_ed25519 11 362 38581 +720+190-54-209+53-80-196+97+5+0-163+39-142+6-14 +sign_ed25519 11 453 39301 +739+0+6-135+66+58-9-223+12-231-56-123+50-188+1418 +sign_ed25519 11 567 40710 +1356+255+25-58+0-23+20+132-140+2-45-8-109+107-11 +sign_ed25519 11 709 42056 +746+70+90+70+44+67+44-51-72-6-69-123-47-83+0 +sign_ed25519 11 887 44179 +1188+179-187-75+164-38-32-119+136-213+74+36+0-46+14 +sign_ed25519 11 1109 46863 +1256+94+0-93-2-45+131+101+148-25+82-34+206-124-28 +sign_ed25519 11 1387 49642 +1014+172+42+48-87+73-100+0-156+539-252-45-42-73+19 +sign_ed25519 11 1734 53086 +1183+283+0+20-32+60-37-49+33-125-41-80-67+148+140 +sign_ed25519 11 2168 58060 +936+174+105+0+118-356-8+42-53+152-303-75+8-14-9 +sign_ed25519 11 2711 63701 +1267+155+15-18-10+22+89-8-18+74-47-19-1+79+0 +sign_ed25519 11 3389 71501 +1023+134-136-221-328-265-10+7+1654+107+131-129+76-145+0 +sign_ed25519 11 4237 80463 +1415+0-105-333+78-103+316-376+80-258+41-77+194-264+134 +sign_ed25519 11 5297 92109 +2092+123-38+61+47+0-297-177+48-24+37-1+79-223-193 +sign_ed25519 11 6622 106651 +1492+490-130+0+184-75+155+369-70-179+293-163-148+210-198 +sign_ed25519 11 8278 124610 +1755+115+106+105-66-93-239-298-240-230+29+137+0+323-277 +sign_ed25519 11 10348 146623 +3329+230+45+0-240-117-265-216+135-126+92+11-14-17+16 +sign_ed25519 11 12936 174574 +1947-61-284+67+153+47+263-13-281+22-204+215-7-19+0 +sign_ed25519 11 16171 208855 +2911-24+36-82-119+0+12-151-53-114+2102+86-174+101+348 +sign_ed25519 11 20214 253105 +3056+283+76+276+48-1-257-273+175+0-147+13-181-57-177 +sign_ed25519 11 25268 308039 +3560+359-76-196+173+1702+1661+119-70-108-159-79+44+0-21 +sign_ed25519 11 31586 376699 +4692+205-179-87+119-17+110-243-261-173+1427+1596-61+38+0 +sign_ed25519 11 39483 461512 +5110+247-98-206+44-141+44-83-349+0-116+3236+763+153-205 +sign_ed25519 11 49354 568285 +5933+948+545-132-87-199-217-71+2159+1606+245-185-12+0+37 +sign_ed25519 11 61693 703436 +5831+43-926+640+741-1309-873+1180+1289+1156-319-1238-1458-1417+0 +sign_ed25519_open 11 0 115400 +9608+2252+688+412-32-46-356+92+0+38+64-14-96-166-86 +sign_ed25519_open 11 1 114474 +7520+1076+86-150+0+58-182-178-22-80+56+30-100-44+98 +sign_ed25519_open 11 2 115216 +7214+1826+732+326+20+2+0-190-46-30-70-218+4-44-272 +sign_ed25519_open 11 3 115106 +6636+1914+1082+704+122+392+0+663-366-278-341-344-551-203-623 +sign_ed25519_open 11 4 114770 +7572+2356+512+328-2-20+12+0-98-162-198+22-152-174+28 +sign_ed25519_open 11 6 114526 +6858+1458+794+578-22-106-106+82+0-170-48+22-196-86+8 +sign_ed25519_open 11 8 115498 +7466+1454+644+264+516-270+106+12-34-228-52-26-172-202+0 +sign_ed25519_open 11 11 114716 +7156+1360+700+708+372+0+244+688-405-312-707-555-813-477-535 +sign_ed25519_open 11 14 114050 +7311+2357+874+284+194+64-16+14-4-124-116-72+0-218-16 +sign_ed25519_open 11 18 115200 +7356+2754+682+330+106+72+0-144-54-140-184+38-36-62-112 +sign_ed25519_open 11 23 115906 +6680+1418+594+296+86-18+0-282-212-68+52-42+22-54-186 +sign_ed25519_open 11 29 114320 +8036+2920+1386+678+446+266+1086-275-436-280-274-258-224+0-462 +sign_ed25519_open 11 37 115206 +6648+2014+366-28+134+16-98-172+28+8-170-120+0-126-208 +sign_ed25519_open 11 47 114630 +7552+2160+1260+516+0+12+30-196-214-188+36-90-200-174-282 +sign_ed25519_open 11 59 116432 +6970+2542+582+192+36+60-40-106+136-42-192-30+0-72-54 +sign_ed25519_open 11 74 116486 +7000+3150+1412+1078+500+604+1007-170+0-285-435-268-389-287-497 +sign_ed25519_open 11 93 115382 +7008+2132+702+342+230-250+204-244-30-418+116-346+0-222-166 +sign_ed25519_open 11 117 115776 +6884+1546+142+8+66-138-90-448+56+22-36+0-294-172-94 +sign_ed25519_open 11 147 114960 +7648+2468+958+424+356+0-220-12+38-152-50-134-176+142-38 +sign_ed25519_open 11 184 115866 +7394+2372+1668+1526+812+1246-17+24-164+0-41-125-122-174-96 +sign_ed25519_open 11 231 116616 +7080+2252+752+722+136-202+0-86+166-28-70-96-226-100+170 +sign_ed25519_open 11 289 116456 +6934+2526+634+196+22+130+60-34+0-188-70-336-192-362-170 +sign_ed25519_open 11 362 116400 +6794+1522+810+206-166+0-164+122+112-56-88-144-136+46-182 +sign_ed25519_open 11 453 116857 +7993+3187+1857+1185+1339-174-22-137+55-142-24-24-40+54+0 +sign_ed25519_open 11 567 117894 +7328+1985+781+286+364+258-250-10-62-152-2-140-50+26+0 +sign_ed25519_open 11 709 118940 +7586+2552+1074+790+102+0-20+0+82+120-18-38-74-94-140 +sign_ed25519_open 11 887 121106 +7102+1652+140-16+50+0-164-210-88+118+90+38-180-316-224 +sign_ed25519_open 11 1109 119420 +7868+3008+928+449+210+164+62-10-146-206-53-137+0-58-93 +sign_ed25519_open 11 1387 123376 +6970+1232+576-160-108+40-270+98-190-262+130-316+0-442+122 +sign_ed25519_open 11 1734 125176 +7730+2762+1202+570+106-314-122+82-22+0+130-160-188-338-300 +sign_ed25519_open 11 2168 126672 +7930+2470+1188+804+60+0-126-196-282-140-260-34+286+58-306 +sign_ed25519_open 11 2711 130380 +6974+1458+578+378+38+146+30-220-6-136-66-124-22+0-14 +sign_ed25519_open 11 3389 132558 +8620+1846+866+620-14-130+124-82-56-28+0-82+134+38-20 +sign_ed25519_open 11 4237 138794 +8024+1570+438+334-46-314-18+176+152+0+2-208-42-112-20 +sign_ed25519_open 11 5297 144778 +8008+2873+777+288+280+12+0-106-318+12-258-264-308-210-288 +sign_ed25519_open 11 6622 149944 +8331+2095+892+126+50+186+154-10-60-162-208-162-42-8+0 +sign_ed25519_open 11 8278 159778 +7302+2024+482+244+238-2+104-44-512+112-90-198-302+0-396 +sign_ed25519_open 11 10348 172283 +8785+1445+258+238+423-572+0-35-9+265-24-106-57+105-413 +sign_ed25519_open 11 12936 184302 +9120+1565+505+266-140+12+60-8-71+1-106-44-246+0-68 +sign_ed25519_open 11 16171 203082 +8333+1751+1248+687+1755+290+0+129-159-54-335-270-175-243-122 +sign_ed25519_open 11 20214 228217 +7762+839+41+199-291+81-197-127-157-90-126+30-216+14+0 +sign_ed25519_open 11 25268 255164 +7130+1900+2860+985-21+237+0+78-343-76-172+28-368-399-87 +sign_ed25519_open 11 31586 291191 +5970+1039+515+33-903-52+91+0-748-131-71+2431+103-87-83 +sign_ed25519_open 11 39483 335341 +5981+2459-26+652+0+102-208-81-106+87-930+17-953-569+57 +sign_ed25519_open 11 49354 390443 +7466+2134+1146+329+154-1457-1274-1314-1520-1461-67+0+180+326-46 +sign_ed25519_open 11 61693 461166 +7125+2191+586+449-22+90-32-449-539-449+0-286-263+135+3273 +sign_ed25519 12 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 12 32 30405 +4610+360+126+68-132-153-108-93+27-104+0-89+1-68+17 +sign_ed25519 12 0 34019 +3409+366-67+4+165-15+129-61+52-90-23+0-106-6+54 +sign_ed25519 12 1 34105 +1209-30+124-84+59-3-25+266-58+96-39+82-30+62+0 +sign_ed25519 12 2 34161 +645+111-60-110-62+77-111+43-62-3+55+40+3-13+0 +sign_ed25519 12 3 34162 +586-159+24-133+41-222+37-206-40-310+6+0+227-145+81 +sign_ed25519 12 4 34059 +604+5+16+0-7+23+86+73-16+0-1-62-9+94-62 +sign_ed25519 12 6 34098 +530+0+124+34-5+41+61-5-10+19-68-47-70+64-37 +sign_ed25519 12 8 34136 +609+43+38-45+107+86+0+97-161-79-103-120-112+25-70 +sign_ed25519 12 11 34067 +435+18-131-32-80+0+18+46-111+68+1072-112+238-101-22 +sign_ed25519 12 14 33999 +1008+21-65-59-114+4+0+28+7-20+2+103-48-36+0 +sign_ed25519 12 18 34010 +602+38-8+46+10+0-92+26+24-129+20-157-104-22-167 +sign_ed25519 12 23 34107 +552-67-95+139-20+49-152+4-71+0-167+37-67+73+0 +sign_ed25519 12 29 34101 +647-129+30+144-45+0-4+90+36+43-34-25-98+28-158 +sign_ed25519 12 37 34084 +723+81+21+83+58-49-8-35-102+193-5-10-106+12+0 +sign_ed25519 12 47 34134 +466+27+57-43-6-138-14-144+0+18-35+81+27-149+37 +sign_ed25519 12 59 34765 +537+69+27+14-30+89-109-81+76-19+0-27-113+24-3 +sign_ed25519 12 74 34973 +815+119-101+73-109+105-107-27-6+94-8-134+13+0+73 +sign_ed25519 12 93 35602 +423+184+74+104+38+6-90-47+0-64-144-82-34+19-28 +sign_ed25519 12 117 35566 +808+74-28+7+0+65-117+65-102+87-13-52-143+48-29 +sign_ed25519 12 147 35524 +709-57+209+162+45-76+7+0-38-58+15+9-19-20-40 +sign_ed25519 12 184 36187 +1037+0+81+77+16-5-39-97+10-73-95+31-78-113+110 +sign_ed25519 12 231 36967 +780-48+30+30+1472+198-56-207+11-168-149+56-155-72+0 +sign_ed25519 12 289 36998 +1071-56+45-90-86-161+96-165+41-42+55+0+59-82+68 +sign_ed25519 12 362 38313 +1013+170-90+136+52-46+45-61-95-154-70-72+15+0+33 +sign_ed25519 12 453 39180 +876+190+224-156-30+0+122+14-86-28+54-85+6-96-69 +sign_ed25519 12 567 40480 +946-77+192+38+0-46+11-21+27-61-117+12-20-92+47 +sign_ed25519 12 709 41872 +1079+75+11+34+132-8-36+20-7-154+0-108-36+9-87 +sign_ed25519 12 887 44025 +1086+117+53+219+0-14+0-191-1-149+50-33-30-75+68 +sign_ed25519 12 1109 46819 +979-68-38+17+135+53-140+113-50-78-4+18-161+129+0 +sign_ed25519 12 1387 49530 +1031+16-117-26+116+79-89+13-11-34-21+0+113-87+47 +sign_ed25519 12 1734 53115 +1246+8-40+52+0+71+34-9+256-46+64+0-43-40-77 +sign_ed25519 12 2168 58043 +1768-69+20+59+0+273+1062+345+52-278-212-201-154-225-198 +sign_ed25519 12 2711 63525 +1767+80+217+0+50+121-100-152+117+68-22-39-64-57-97 +sign_ed25519 12 3389 71184 +1262+235+83+18+11+84+7-161-18-161-31+0-189-193-177 +sign_ed25519 12 4237 80177 +1611+209+133+78-101+62-56+0-15-95-80+43-319+38-322 +sign_ed25519 12 5297 91792 +1327+126+22+75+58-92-9+25-42+193-85-48-176-305+0 +sign_ed25519 12 6622 106210 +1508+92+348-78-152+790+35-107+131-221-114+0-155+86-123 +sign_ed25519 12 8278 124432 +2526+0-343-113-262-285-289-188+32+239+43+53+131-237+17 +sign_ed25519 12 10348 146385 +1632+49+15-136-179-98+0-324+12-239-27+248+292+282-159 +sign_ed25519 12 12936 174083 +2333+31-225-326+104-25+97-65-84+0-3+210+7+247-58 +sign_ed25519 12 16171 208629 +3429+371+297+142-15-56-13+81-129+0-178+94-148+43-195 +sign_ed25519 12 20214 253033 +3742+156+164-17-120+0+115-353-236+185-90+178-84-35+798 +sign_ed25519 12 25268 307764 +4103+233+71+569-43+0-45-65-21+252-204-137+58-9+127 +sign_ed25519 12 31586 376559 +3815+208+155-477+1275+1173-174-281-39+34-15+0+182-155-152 +sign_ed25519 12 39483 461708 +5394-22-145-220+0+92+2177+775+348+99-152+261-250-163-200 +sign_ed25519 12 49354 568509 +4823+3+0+58+1312+1147-315+133-215+23-363-93-358-204-425 +sign_ed25519 12 61693 702210 +5937+2732-217-429-128-212+332+0-54+6-148+2181+535+19-25 +sign_ed25519_open 12 0 115032 +9824+2174+470+448+242+0-150+24-258-42-158-114+58-126-122 +sign_ed25519_open 12 1 115340 +7252+1290+374+64+48-154+38-200-32+0-364-122-230-78+166 +sign_ed25519_open 12 2 113934 +7798+2834+1192+708+2026+168-100+48-2-30-190-104-154+0-236 +sign_ed25519_open 12 3 115274 +7138+2176+836+510+20-82+72+0-18-194-134-166+42-194-172 +sign_ed25519_open 12 4 113552 +7210+2116+1612+434+120+64-266-104+46-46+0-230-78-100-164 +sign_ed25519_open 12 6 115122 +7032+2104+952+506-18+56+360-132+30-38+0-202-172-78-176 +sign_ed25519_open 12 8 113414 +7826+2664+1520+1144+1723+220-190+34-262-52-108-72-116+0-188 +sign_ed25519_open 12 11 115862 +6748+2332+856+952+394+0-106-72-228-186-70+84-22+110-60 +sign_ed25519_open 12 14 114656 +6998+1744+752+384+30-248-64-36+0-146+20-138+8-128-114 +sign_ed25519_open 12 18 114410 +7702+2110+894+502+46-38+0+10-272-144+82-68-132-124-118 +sign_ed25519_open 12 23 114152 +7458+2234+1402+1044+1973+40-136+154-184-172-110-64+0-134-30 +sign_ed25519_open 12 29 115266 +7148+1016+366+28+76+214-84-22-114+30-208-50-252+0-102 +sign_ed25519_open 12 37 115736 +6868+1634+660+884+254+0-50+98-76-212-60-232-16+90-74 +sign_ed25519_open 12 47 115258 +6700+1490+316-116+48+0+8-416-154-396-214-202+212+62-80 +sign_ed25519_open 12 59 115816 +7338+2914+1728+2045+416+506-34-132-118+0-62-236+34-68-240 +sign_ed25519_open 12 74 116736 +7396+1638+426+500+0+124+84-66-12-340-144-190-38+154-170 +sign_ed25519_open 12 93 117264 +6786+1412+648+300+372+10-202-246-6+0-342-174-164+4-166 +sign_ed25519_open 12 117 114530 +7024+1606+594+410+152-154-2+0-28-12-22-62-78+2+114 +sign_ed25519_open 12 147 115762 +7654+2970+2098+256-150-92+82-74-150+0+34-210+0-102+6 +sign_ed25519_open 12 184 115526 +6872+1896+666+248-116+106-86+166-124+0+26-52-230-118-226 +sign_ed25519_open 12 231 115454 +7076+2184+1046+352-128+22+68-32-88+22+0-102-22-32-28 +sign_ed25519_open 12 289 116996 +6910+1866+638+394-18-48+100+82-40-198+188+0-278-278-360 +sign_ed25519_open 12 362 117194 +7828+3586+1314+546+42-140-94+230+675-264+0-228-212-98-30 +sign_ed25519_open 12 453 117590 +8028+2034+742+176+0+32-152-266-376-240+20-286-310+20-76 +sign_ed25519_open 12 567 118408 +7380+2080+1200+896+128-138-86-48-100-86+46+6+0-146-506 +sign_ed25519_open 12 709 118238 +7146+1748+814+356+204-112+150+0+46-6-160-34-162-176-184 +sign_ed25519_open 12 887 119550 +7838+2510+1154+172+474-30+62-22+0-22+30-94-120-108-138 +sign_ed25519_open 12 1109 120838 +7624+1986+738-276+62+50+0+14-122-142+72-38-106-118-150 +sign_ed25519_open 12 1387 122862 +7828+2488+644+378+68+162-220+176-32-152-156-276-66-88+0 +sign_ed25519_open 12 1734 124790 +7122+2130+314+268-65+67-43-28+70+0-130+739-476-664-420 +sign_ed25519_open 12 2168 127562 +7840+2440+794-26+46-68-252-12+6-84+0+126-182-132+132 +sign_ed25519_open 12 2711 130004 +6928+1374+918+318-118+58+74-90+0-138-110-112-66-240+82 +sign_ed25519_open 12 3389 133538 +7670+1430+516+286+110-138-12-54-56+0-122+78-78+18-164 +sign_ed25519_open 12 4237 138156 +7430+3422+604+244+194+0-88-228-12-244-182-62-146+130+16 +sign_ed25519_open 12 5297 144162 +7575+1569+582+34-54-16-30+0+52-286+0-176-294+154+32 +sign_ed25519_open 12 6622 150758 +8072+1545+957+252+12+366+194-464-16-262-298-198+0-106-191 +sign_ed25519_open 12 8278 160242 +8219+2073+1515+364+320-168-98-262-526-372+30-154+0+8-358 +sign_ed25519_open 12 10348 172508 +7884+2108+781+632+135-228+113-137-89-548-206+20-44+0-230 +sign_ed25519_open 12 12936 185671 +7963+1916+499+366+0+265-45-8-363-212+1039+389-390-248-350 +sign_ed25519_open 12 16171 203362 +8651+2609+849+250+123-105-39-136-198+80-66-170-78+0+37 +sign_ed25519_open 12 20214 226852 +7187+2405+589+556+0+14-148-112-322-128+964+142-574-498-496 +sign_ed25519_open 12 25268 254449 +7644+1679+484+622+344-69-329-124+290-112+8-139-209+0-60 +sign_ed25519_open 12 31586 292209 +6827+2064+491+2469+445+276-544-64-65-33-34-478+0-5+91 +sign_ed25519_open 12 39483 336406 +6109+2114+47-285+0-260-463-460-489+2085+564+2+103-48-81 +sign_ed25519_open 12 49354 391251 +6363+1359+895-45-352-1729-189+0-96-1533+1390+1455+257+0-1427 +sign_ed25519_open 12 61693 460649 +7144+2874+835-9-347-93-618+0-390+3115+847-363+59+14-62 +sign_ed25519 13 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 13 32 30359 +4451+212+85-89-20-57-100+14+60-30+0-64+67-39+22 +sign_ed25519 13 0 34270 +3930+312+157-111+89+47+2-104-99-190+17+0-105+0-20 +sign_ed25519 13 1 34252 +1256+99+94-52+56+21-116-82+0+88-49-19-9-161+38 +sign_ed25519 13 2 34184 +1009+13-60+34+112-26+129-40-27+16-104+0-22-123+12 +sign_ed25519 13 3 34356 +516+0-42+20-126-97-104-25+66-131+981+898+15-98+21 +sign_ed25519 13 4 34268 +1091+113+90+176+2-93+0+69+16-28-61-145-80-106-7 +sign_ed25519 13 6 34298 +760+6+6-45-77-210+52+72-76-12-134+15+2+0-25 +sign_ed25519 13 8 34308 +878+234+88-88+163-27-6+8+5-85+0-71+76-42-2 +sign_ed25519 13 11 34291 +471+74+117+0-103-2+82+62-26-28-9+60-88+79-32 +sign_ed25519 13 14 34245 +561+267+102-217+41-54-65-61+35+89-289-41+17-143+0 +sign_ed25519 13 18 34130 +946+173-46+74+36-97+66-209-34+36+53+0-143-76-17 +sign_ed25519 13 23 34287 +706+277-59+61+0+0-53+50-4+127-170+65-72+19-188 +sign_ed25519 13 29 34314 +602+244-27-10+207+18+104-13-11+76-126+24-46-30+0 +sign_ed25519 13 37 34206 +1210+450+86+67+74+0+195-36+121-18-49-228-12-108-131 +sign_ed25519 13 47 34271 +958+93-58-9+12+241-175+90+67+48-106-69-76+0-154 +sign_ed25519 13 59 34996 +868+147+172-63-116+30-73-17-51-90+49+92+0-40+100 +sign_ed25519 13 74 35057 +645+0-44+30-52-19-109+138-65+24-186-82+62+23+138 +sign_ed25519 13 93 35634 +844+271+0-62-60-19+110+1390+201-20-131-30+64+16-82 +sign_ed25519 13 117 35692 +992+163-43+319-33+0-15-139+102+41-104+182-55+152-40 +sign_ed25519 13 147 35654 +1115+140+80+88+98+96-5-133+0-29-32-79-15-87+25 +sign_ed25519 13 184 36425 +853+167-12+13-14+67-88-98+63-72-12+7+0-64+135 +sign_ed25519 13 231 37109 +709+118-84+28-102-21+3-75+0+11-2+106-51+3-15 +sign_ed25519 13 289 37080 +1360+47+68-7+121-168+0-27-39+21-24-31-38+141+12 +sign_ed25519 13 362 38629 +429+32+4+0-100-115-3+35-37-242+7-71+51-82+99 +sign_ed25519 13 453 39309 +951-126+9+48+30-4-3-153-32-86+54+0-9+77+55 +sign_ed25519 13 567 40703 +796+218+38-89-40-202+16-46+28+0-122+86-32+0-20 +sign_ed25519 13 709 41959 +1046+60-32+60-83+0-154+24+16+33+72-232-89-2-37 +sign_ed25519 13 887 44069 +1118+63+103-57+73-18-88-175-49-45+21+25+10+0-117 +sign_ed25519 13 1109 47047 +985+60+0+26-93-89-170-141-268-194-18+1026+467+59+90 +sign_ed25519 13 1387 49651 +1376-328+75+102-37+127+33-3-171+0-50-32-71+20+16 +sign_ed25519 13 1734 53187 +1468+250-67+125+0+61-63-43+37-92-62-15+178+76-61 +sign_ed25519 13 2168 57999 +1345+55-17-119+117+131-2-51-206+39+215+0-60-263+66 +sign_ed25519 13 2711 63780 +1604+12+98+0-60+16-71-139-12-167-373-15+224+216+154 +sign_ed25519 13 3389 71359 +1799+105+41-45+81-79+59-171+11+247-35-113-126-102+0 +sign_ed25519 13 4237 80298 +1689+0+257-245+152-206+110-142+188-293-49-66+78-167+281 +sign_ed25519 13 5297 92154 +1166+2+0-51-16-58-30-206-195+1168+279+333+144+70-104 +sign_ed25519 13 6622 106442 +2170+49+74+175-17-92-39+242-73+0+87-31-100+20-85 +sign_ed25519 13 8278 124569 +1521+63+13+133-84-77-106-354-40-266-23+60+155+24+0 +sign_ed25519 13 10348 146479 +2393-8+28-7-26-43+110+214+14-131+47+0+34-58-175 +sign_ed25519 13 12936 174132 +2618+419+1767+119+76+51-199+0-131-29-219+13-205-233-97 +sign_ed25519 13 16171 208826 +2390+268+12+253+297+39+168+0-99-226-32-193-26-168-196 +sign_ed25519 13 20214 253521 +2644+0+30+178-225+1707+1315-130-158+313+82-108-14-270-91 +sign_ed25519 13 25268 308053 +3799+518-156-124-156-107-161+76+22-54+0+73+66-316+1176 +sign_ed25519 13 31586 377555 +3351+782+111-426+613+744+0-397+672-178-537+409-323-208-447 +sign_ed25519 13 39483 461881 +4769+3063+583+4-184-22-24-126+323-6+142+0-271-268+66 +sign_ed25519 13 49354 568671 +7233+664-24+0-105-602+13-76-87+179+36-278-123+1215+742 +sign_ed25519 13 61693 702307 +5528+155-261-533-658-1261-799+942+2948+817+656+353+0-123-427 +sign_ed25519_open 13 0 115228 +9371+1994+730+230+76+0-26-164-56-152-86-176-52+12+58 +sign_ed25519_open 13 1 113974 +7552+1308+366+284+164-118+110-80-120-38-40-58+22+0-162 +sign_ed25519_open 13 2 115330 +6992+1812+610+608+113-101-162+52+2-129-130-17-269-82+0 +sign_ed25519_open 13 3 113136 +7276+1664+710+409+97+21-105-103-197-20+0+45-93-56-155 +sign_ed25519_open 13 4 115240 +7351+2219+1068+978+286-60+0-60-114-102+30-156-94-20+28 +sign_ed25519_open 13 6 113728 +7422+1728+628+356+146-16-124-84-10+0-228-92+28+116-166 +sign_ed25519_open 13 8 114420 +6564+1360+466+346-12+86-30-158+36-154-114+0-70-54+80 +sign_ed25519_open 13 11 115690 +7450+2562+790+452+518-8+0-92-90-184+6-108+112-152-106 +sign_ed25519_open 13 14 115040 +7218+1872+924+586+184+338-74-200+30-96+0-50-6-24-144 +sign_ed25519_open 13 18 115338 +7646+2128+946+300+164+0+60-152+114-128-196-8-108-116-112 +sign_ed25519_open 13 23 115352 +6800+1714+932+562-70+144-246+20-48-90+0+150-16-108-296 +sign_ed25519_open 13 29 114828 +6502+1854+892+444+388+50+0-194+10-70-170-342-166-188-314 +sign_ed25519_open 13 37 114388 +7924+1446+850+254+0+60-192+58-19+85-32-176-16-322-46 +sign_ed25519_open 13 47 115694 +8878+2362+966+244+164+12-108+0-120-180-54-98-186+16-248 +sign_ed25519_open 13 59 115450 +7586+2406+1306+750+74+348+266-196-16-132-22-146-108-150+0 +sign_ed25519_open 13 74 115356 +7280+2302+1104+432+250-26-102-248-180-10+0-32+280+234-74 +sign_ed25519_open 13 93 113738 +7272+1596+606+304-146+30-94+48-134+72-132+0-108-232-172 +sign_ed25519_open 13 117 115476 +7804+2182+1444+488+236-64+108+72-84-24+0-96-96-58-114 +sign_ed25519_open 13 147 116954 +7084+2542+908+820+396-48+152-16+0+110-318-158-110-52-42 +sign_ed25519_open 13 184 117396 +7268+1932+466+348+62+94+102+0-234-204-20-34-184-266-210 +sign_ed25519_open 13 231 115852 +7240+1676+758+88-52+48-202+10-82-358-146-268+0+328-388 +sign_ed25519_open 13 289 114982 +7846+1824+1034+264-74+258+56+116-222-196-88-114-172-68+0 +sign_ed25519_open 13 362 117200 +7730+2132+894+596+50-184-92+0+6-214+4-138-188-208-226 +sign_ed25519_open 13 453 117888 +6796+1564+746+202+348-86+86+0+48-8-70-22-202-218-64 +sign_ed25519_open 13 567 119304 +6456+898+420+264-74+100+86-152+0-154-160-366+556-748-856 +sign_ed25519_open 13 709 118828 +8600+1924+664+176+292-4+0+186-60-188+32-78-240-210-320 +sign_ed25519_open 13 887 119264 +7618+1992+780+476+66-164-6-212-32+0-240-268+72-236+26 +sign_ed25519_open 13 1109 120740 +7168+1676+766+282+2+0+8-126-144+44-76-90-250-80-110 +sign_ed25519_open 13 1387 123914 +7608+1890+908+336+72+92-160+0+616-784-677-792-417-726-698 +sign_ed25519_open 13 1734 124574 +8036+1932+994+768+168+120+0+104-40-60-112-236-104-286-242 +sign_ed25519_open 13 2168 126956 +7070+2090+596+366-138+356+16+54-228-286-266-152+0-196-166 +sign_ed25519_open 13 2711 127902 +7440+2166+646+350-42+90+108-248-72+0-84-182+0-322-230 +sign_ed25519_open 13 3389 132464 +8016+2706+743+538+0-119-451-284+1560-50+138+157-51-76-100 +sign_ed25519_open 13 4237 138776 +7812+1840+690+492+370+84+0-48-98-64+18-70-104-44-106 +sign_ed25519_open 13 5297 143990 +7422+1804+818+494+78-86+98+84-84-34+0-162-234-38-228 +sign_ed25519_open 13 6622 151980 +8207+2971+807+2375+100+0-224+31-106-211-259-171+231-149-374 +sign_ed25519_open 13 8278 160696 +8270+1827+655+158-110-346+14-310-42+72-572-210-290+0+96 +sign_ed25519_open 13 10348 171933 +8148+2188+1090+609-374+0-155+57-354-196-76+54-90-557+54 +sign_ed25519_open 13 12936 185126 +8383+2397+1189+514+419+221-114-262+0-94-48-116+188-24-216 +sign_ed25519_open 13 16171 203909 +8795+2453+966+205-86+8-108+16-243-86-202+0-74-159+1 +sign_ed25519_open 13 20214 226275 +11185+1681+231+141+218+25-187+0-210-301+91-203-405-320-238 +sign_ed25519_open 13 25268 256214 +7407+1760+823+726+195-54+0-419-488-396-515+81-583+2618-367 +sign_ed25519_open 13 31586 292483 +6943+1624-243+350+71-14-11+32-891-182-21-149+12+0+408 +sign_ed25519_open 13 39483 336830 +6664+1825+256+448+13+14+0-241-118-62+22-347-317-346-131 +sign_ed25519_open 13 49354 391028 +7025+2329+901+1031+3717+864+0-162-1636-36-1725-234-141-199+37 +sign_ed25519_open 13 61693 460151 +6562+2173+337+1452+2329+501-257-1769+64+0-184-293-196-120-2040 +sign_ed25519 14 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 14 32 30507 +4591+618-188-49-115-96+0+1250+263-44+115+102-48+105-49 +sign_ed25519 14 0 34036 +3839+169-68-5-161+116+78+89-168+0+258+123-54-128-207 +sign_ed25519 14 1 34064 +1483-212-100-65-121-140+30+78-114+40+20+0+69+74-41 +sign_ed25519 14 2 33943 +1168+21-21+11+116-10-38-67-32-2+46+39+41-79+0 +sign_ed25519 14 3 33962 +917+234-106+64-21-31+41-25+30+38-71+92+0-2-57 +sign_ed25519 14 4 34079 +789-12+71-83+15-49+13+0-11-69+7-82+28+33-37 +sign_ed25519 14 6 34083 +809+14+0-257-161-72-71+93+56-37+49-111+57-124+24 +sign_ed25519 14 8 33987 +993+84-92-54-101-68-109+0-101+2443+333+215+155+14-47 +sign_ed25519 14 11 33966 +1341-12+146+62-41+48-53+101-110+34-134+85-48+0-84 +sign_ed25519 14 14 33955 +1236-44-13+126+46-3+37-10+0+36-98-58-54+22+49 +sign_ed25519 14 18 34018 +874+15-41+29+17+34+23+17+0-30-96-2-120-138-160 +sign_ed25519 14 23 34029 +914+176-137-21-80-22+135+16-38+0+51+70+21-114-60 +sign_ed25519 14 29 33927 +992+72+0+41+11+1-29-98-32-58-1+69+5-29-39 +sign_ed25519 14 37 34058 +1150-4-67-167+0+2035+452+134+38+33-54-15-68+76-47 +sign_ed25519 14 47 33975 +1163+0-69-115+119-113+200+7-32-15+96-20+22-26+40 +sign_ed25519 14 59 34738 +1170+87-52-107+21+5-74+59+0-132-46-119+6-68+42 +sign_ed25519 14 74 34646 +1083+234+60-7-36+120-27+32+0-29+5-43+12-53-36 +sign_ed25519 14 93 35330 +1192+35-3-24-30+85+64+0-4+69-74+45-79+65-52 +sign_ed25519 14 117 35440 +772-68-119-58+0+45+57+32-92+108-124-24-19+34+0 +sign_ed25519 14 147 35473 +880+11+65+67+45-22-78+0+43-7-62+125-36-122+0 +sign_ed25519 14 184 36211 +969-73+102+0-30+65+24+73+8-38-76-42+66-42+0 +sign_ed25519 14 231 36968 +1234+88+109-110+14+0-77-192-5+9-97+212+62-103-13 +sign_ed25519 14 289 36915 +1028+94+74-35+211-72-52-66-76-17-72+102+0+7+62 +sign_ed25519 14 362 38131 +1602+434+22-50+85-50+33-23+58-9+67-30-7+0-18 +sign_ed25519 14 453 38975 +1135-31-214-99+62+0-85+38-125+34+22+44+54-71-44 +sign_ed25519 14 567 40403 +840+24-81-60-174-246-99-17+2372+402+99-20+57+62+0 +sign_ed25519 14 709 41751 +1662+131+106-90+55-81-63-94-120+0-44+74-173+1484+846 +sign_ed25519 14 887 43824 +1619+78+150-18-170+186-19-172+30-14+41+131-40+0-64 +sign_ed25519 14 1109 46705 +1369+211+170+18-105-21-149-74-2-76+37+4-70+0+70 +sign_ed25519 14 1387 49453 +1152+216+193-12-68+16+8+0-21+62-15-2-64-22+211 +sign_ed25519 14 1734 52984 +1184+120+32-79-109-29+30-14+227-122+0+117+77-14-22 +sign_ed25519 14 2168 57759 +1350+109+33-92+0+120-132+205-41-18+143-91+87-108-50 +sign_ed25519 14 2711 63336 +1768+245-58+33-176-18-101-16-83+0+66+57+95+47-68 +sign_ed25519 14 3389 71194 +1100-83+102+216-81-253+116+2-132-150-134+146+0-123+1004 +sign_ed25519 14 4237 80215 +1208+117-234+12-215+58-314+120-362+0-388+75-329+53-205 +sign_ed25519 14 5297 91904 +1575+19+10+30-419-123-29+19-2+132+14-410-175+0-92 +sign_ed25519 14 6622 106436 +1721-7+244+89+45+196-113-145+161-220-185+37+0-111-77 +sign_ed25519 14 8278 124397 +1718+281+131-126+0-85-103+434+127+111-122-213-118-54+205 +sign_ed25519 14 10348 146580 +1535+398+192+2540+741+83-336+0-21-23-226+22-69-389-142 +sign_ed25519 14 12936 174180 +2008+383-157-59+98+44+0+85-1-81+34-166-81-92+2 +sign_ed25519 14 16171 208824 +1953+104+228-13-199+208-171-48+0-38+8-264+2594+380-249 +sign_ed25519 14 20214 252727 +3637+369-5+364-68+203+277+0+104-119+60-117-25-163-44 +sign_ed25519 14 25268 307845 +4557+334-149+61+0-6-185+2720+960-14-78+57-38-133+32 +sign_ed25519 14 31586 376628 +4617+527-17+0+24+10-43-462-326-153-200-274+2136+775+289 +sign_ed25519 14 39483 461468 +5812+581-18+92-341-218+54-169-136-167-273+0+2601+613+322 +sign_ed25519 14 49354 568587 +4519+895+455-33-11-401-383+212-235+1566+1188-6+0-332+292 +sign_ed25519 14 61693 702226 +5899+111+0-332+1373+1342+385-62+25-209-254-509-425-13+495 +sign_ed25519_open 14 0 114908 +9930+2570+370+202+222-26-76+80+32-268-92-296+0-112-382 +sign_ed25519_open 14 1 115070 +6980+1952+918+300+210-200+168-56-188-48+0-38+36-22-144 +sign_ed25519_open 14 2 114798 +6520+2420+1114+196+38-48-148-170-166+0+56-64+132-268-172 +sign_ed25519_open 14 3 113296 +7610+1842+1042+432+220+144-52-78-56-104-188+0+273-587-746 +sign_ed25519_open 14 4 114400 +6844+1950+1060+188+196+208+0-386-130-88-134-122-226-76+34 +sign_ed25519_open 14 6 113484 +7770+1590+738+186+44-170+18-226+4-278-82-172-262+0-42 +sign_ed25519_open 14 8 114542 +6474+2032+678+488+82-236+206-218+0+186-14-82-344-158-486 +sign_ed25519_open 14 11 116318 +6755+1498+606+468+386-42-216-114+0+108-170-376+248-855-790 +sign_ed25519_open 14 14 115488 +6756+2238+994+394+174+0-206+202-102-222-200-134-240-222+56 +sign_ed25519_open 14 18 115408 +7182+1814+522+134+218+0+62-156-2-64-46+20-86-38+0 +sign_ed25519_open 14 23 113770 +7023+2188+1140+314+158-296+0-226-10-86+0+86+78-84-78 +sign_ed25519_open 14 29 114912 +6246+1788+1038+612+372-168+0-262-44+108-30+228-713-786-808 +sign_ed25519_open 14 37 115636 +7609+2480+1150+452+0-78-140-202+64-52+134-116-148-108+56 +sign_ed25519_open 14 47 113490 +6550+1772+656+502+0-50+42-162-14-130-6+0-26+80+50 +sign_ed25519_open 14 59 117058 +7014+1746+486+70+34-50+0-124-44-112-144-28+18-154+170 +sign_ed25519_open 14 74 116368 +6573+2452+1070+926+648+126-18-120+0-58-202+619-824-680-810 +sign_ed25519_open 14 93 115232 +7423+1532+606+278+40-196+16-138+0-96+78-38-120-70-146 +sign_ed25519_open 14 117 115474 +7474+2182+926+536+80-52-22-190+0-36-78+28+14-130-372 +sign_ed25519_open 14 147 116570 +6914+1978+1252+356+0-142-4-14-68+74-62-62+24+64-34 +sign_ed25519_open 14 184 116920 +7380+1736+1328+702+0-104-84+152-44+186+709-580-656-504-346 +sign_ed25519_open 14 231 116178 +7217+1445+494+364+244+2+8-118-52+0-142-74-150-96-64 +sign_ed25519_open 14 289 117352 +6576+1624+526+226+278+38-188-190-142+84-76-192+0-108-130 +sign_ed25519_open 14 362 116606 +7266+2186+1062+294+130+150-24-116-156+198-8-110+0-8-4 +sign_ed25519_open 14 453 117590 +7250+2284+656+322+36-124+36+0-258+602-272-416-324-380-514 +sign_ed25519_open 14 567 116600 +7520+2654+730+638+480+176-154-90+12+0-156-60-260-198-144 +sign_ed25519_open 14 709 119106 +7186+1562+486+250-80+0-36+56-220-294-216+128-150+2-170 +sign_ed25519_open 14 887 120152 +6953+1924+468+166+10-200+0+190-72-162+4-154-72-16-100 +sign_ed25519_open 14 1109 121053 +8061+1857+1287+1063+831+183+491+0-515-587-609-325-437-631-669 +sign_ed25519_open 14 1387 122154 +7852+2560+654+438+24-24+80-150+0+68-292-280-146-138-116 +sign_ed25519_open 14 1734 125040 +8169+2802+1268+910+422+176-24-202-132+0-74-98-476-214+264 +sign_ed25519_open 14 2168 125964 +7049+2396+1192+750+292+244-10+194+0-8-78-370-322-382-234 +sign_ed25519_open 14 2711 129502 +8881+2952+1070+550+322+14+90-64-90+0-162-104-64-96-188 +sign_ed25519_open 14 3389 133390 +7682+1882+501+223+42+0-174+224-30-106-46-30+220-60-56 +sign_ed25519_open 14 4237 139798 +6651+2036+498+278+0+38-80-130-202-274+12-30-98-58+226 +sign_ed25519_open 14 5297 144128 +8165+2154+1038+1016+1309+498-148-160-110+0-59-190+97-34-6 +sign_ed25519_open 14 6622 152442 +7713+1818+906+181+84+0-104+108-106-164-86-154+82-262-218 +sign_ed25519_open 14 8278 159814 +8359+3036+991+378+42-128-143+155-80+88-344-118-166+0-105 +sign_ed25519_open 14 10348 171500 +7785+3388+1446+354-357+105-134-46-142-142-20+0+48-604+54 +sign_ed25519_open 14 12936 184477 +8632+2806+1180+546+21+17-90+0-24-81-127-155-51-9+24 +sign_ed25519_open 14 16171 203001 +7550+1896+1052+277-277+13-206+1527+1-224-253-506-337+0-411 +sign_ed25519_open 14 20214 226116 +8041+1619+337+708+282-42-334+71-152-302-234-198-40+30+0 +sign_ed25519_open 14 25268 255336 +7461+1679+1035+745+1836+520-68-170-134-74-117+47-29+0-260 +sign_ed25519_open 14 31586 290906 +5690+1464-33+420+1-329-777-772-826+241-736+0+3+2760-399 +sign_ed25519_open 14 39483 336378 +7283+2735+145+214+370-93+57-255-144-48+94+0-169-1513-1230 +sign_ed25519_open 14 49354 390859 +8691+3055+918+721-123-1664-85-98+174-114-86+0+31+222-66 +sign_ed25519_open 14 61693 460067 +7056+2236+302+412+240+213-75-232-84+0-64-151+194-111-141 +sign_ed25519 15 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 15 32 30340 +4318+352+67-25+26+127-1-87-14-63-37+29-51+0+87 +sign_ed25519 15 0 34192 +3309+381-41+62+129-67+225+8-33-81-79+22+0-163-8 +sign_ed25519 15 1 34231 +732-167+64-101-2+131-136-40-145+61+0+3+45+0+3 +sign_ed25519 15 2 34182 +1373+0-70+93+60+94+32-146-4-18-16+38-111+84-27 +sign_ed25519 15 3 34267 +186-171+76+24-138+95-88+13-57+160+0+11-128-1-39 +sign_ed25519 15 4 34181 +381-90-38+45-46-5-21-52+35-59+12+0+67+4+0 +sign_ed25519 15 6 34265 +527-6-94+204-84+79+58+27-68+89-98+0-172+65-83 +sign_ed25519 15 8 34235 +479-43+32+280-47-51-76-81-142+0+79+60-94+158+67 +sign_ed25519 15 11 34157 +459-29+64-73-56+39-49+79+64+39+33-84-7+0-97 +sign_ed25519 15 14 34203 +348-113-158+0+20-2-93-94+1189-64+24-68+52+98+57 +sign_ed25519 15 18 34144 +904+24-6+0-162+193-63-71+1+2+41-127-23-71+28 +sign_ed25519 15 23 34150 +576+56-92-5+15-85+0+29+53-44-59-160+129+39-102 +sign_ed25519 15 29 34169 +157-32-174+99-26+122-189+104-109+64+0+72-62+135-77 +sign_ed25519 15 37 34138 +707+54+30+89-8+0-72+90-15-73+11-25-52-70+59 +sign_ed25519 15 47 34167 +318+17-128+48+31+82+0-14+45-193-157-58+3-48-94 +sign_ed25519 15 59 34849 +377-159-69-128+15+90+35+0-18-138+87-9+36-51+4 +sign_ed25519 15 74 34944 +485-77-194+0+142+20+26+52-47-64+58-6-6+51-38 +sign_ed25519 15 93 35614 +625-4+32-8+25+6-2+66-16+44-143-156+72+0-40 +sign_ed25519 15 117 35568 +384+125-16+0-49-77-35+15+16-12+90-23-14+156+10 +sign_ed25519 15 147 35585 +598+30+155+10+144-90+2-144-172+50-64-16-99+0-92 +sign_ed25519 15 184 36301 +440+0+42-20-29-127-49-103+25+51-6+32+10-51+215 +sign_ed25519 15 231 37009 +408+19+82-38+0+0+36-36+6-96+47+133-11-104-37 +sign_ed25519 15 289 37103 +711+1325+264+0-45+156-114+135-27-38-46+63-8+219-153 +sign_ed25519 15 362 38437 +1042+82-16+64+7-88+0-24-137-7-6-22+55+30+24 +sign_ed25519 15 453 39118 +1074-1-81+0-57+203-103-34-15+65-34+247+43+54+122 +sign_ed25519 15 567 40591 +555+162-17+61+108+148+0-57-6+120-162-82-66+12-44 +sign_ed25519 15 709 42066 +893-257-13-48+8+63+0+35-200+192-34-37-118+16+29 +sign_ed25519 15 887 43955 +856+97+81-5-14-51-5+134+40-91+0-22+62+24-51 +sign_ed25519 15 1109 46821 +915-136-9-41-50+9+39-21+0-10-221+65+35+29+109 +sign_ed25519 15 1387 49650 +928+26+126-44-16-308+51+91-98+61-56+152-11-40+0 +sign_ed25519 15 1734 53151 +996+153+138+57+53-70-17-22+0+84-160-84+98-259-78 +sign_ed25519 15 2168 58117 +936+251-44-118-48+94-5+60-428+32+333+0-116-220+72 +sign_ed25519 15 2711 63771 +1220-64+175+158+135-27-57+32+12-18+0-32+107-51-11 +sign_ed25519 15 3389 71348 +1121+54+274+383-40-206+0+10-109-115-139+19+47-142-173 +sign_ed25519 15 4237 80335 +906+142-38+0-226-111-7+93+35+105-3+10-154+264-95 +sign_ed25519 15 5297 92079 +951+103-249-33-16+0+76+138+30-299-221+96-52-56+9 +sign_ed25519 15 6622 106590 +1518+0+84+120-30-103+133-134-147+115+69-102-129-43+26 +sign_ed25519 15 8278 124635 +910+22+858+1423+27+0-167-111+25-290-264-81-97+72-109 +sign_ed25519 15 10348 146570 +1791+93-17+29-64+195+0-23+20-332+203-43-30+163-139 +sign_ed25519 15 12936 174173 +2537+91+278+86+143-130+78-4-22-112-248-92+22-134+0 +sign_ed25519 15 16171 208770 +2518+2182+1085+39+111+14-235-67+57-125-20-306-238-101+0 +sign_ed25519 15 20214 252906 +3591+209-65+68+76+124+0+35-147-273-48-186-122+55-160 +sign_ed25519 15 25268 308099 +4406+320+19+62+102-170-209-246-108+73+0-30-362+103-132 +sign_ed25519 15 31586 376943 +4007+0+496-171-482+520+3431+584+677-224-136+475-62-231-392 +sign_ed25519 15 39483 461890 +5135+116+249-196-87+299-432+1886+619-163+0-258+70-164-250 +sign_ed25519 15 49354 568439 +7322+1298+467+0-326+2573+910+183-56-224-18-133+120-123-343 +sign_ed25519 15 61693 701948 +5661+3274+560+272+83-511-32-385-518-18-442-204+2681+783+0 +sign_ed25519_open 15 0 114754 +9318+1738+258+2-304-142+0-122-216+102-210-200-192+52+106 +sign_ed25519_open 15 1 115566 +7019+1054+362+32+210+0-138+136-260-66-48-140+26-228-250 +sign_ed25519_open 15 2 114122 +7096+2152+920+450+412+0-60+76+816-410-740-646-846-784-860 +sign_ed25519_open 15 3 115920 +7150+2632+840+150-94+218-222-62+0-74+108-2-46+106-74 +sign_ed25519_open 15 4 115532 +6772+1552+770+306+42+0-82-130+116-202-142+102-224-280-346 +sign_ed25519_open 15 6 114524 +6788+1876+540+176-36+82-166+0-260-38-84+18-112+36-14 +sign_ed25519_open 15 8 114310 +6856+1548+728+600+260-58+0+4+794-688-666-660-590-590-586 +sign_ed25519_open 15 11 115154 +7484+2096+712+308-86+42+0-6+36+206-276-48-52-44-94 +sign_ed25519_open 15 14 115228 +6712+1436+652+304-14+0+32-200-60-256+34+68-4-238-16 +sign_ed25519_open 15 18 113990 +7839+1690+536+294+48-394+24-112-160+42-64-8-190+0-190 +sign_ed25519_open 15 23 113920 +8060+1790+804+310-140+0+394+272+927-636-622-688-598-760-668 +sign_ed25519_open 15 29 115362 +6715+1700+340+160-40+0-224-86+62+58-94+78-276-156-42 +sign_ed25519_open 15 37 113518 +7314+2500+496+268+150+338-36+0-252-58-186-152-268+12-114 +sign_ed25519_open 15 47 115524 +6493+2080+1106+476+312+148+0-68-110-266-204-62-36-108+174 +sign_ed25519_open 15 59 115234 +6355+1528+586+184+82+0+32-156+802-690-368-678-474-698-346 +sign_ed25519_open 15 74 115806 +6520+2054+584+574+126-94-72-24-212-20-338+54+22-74+0 +sign_ed25519_open 15 93 116088 +7255+2147+1048+418-246+164+6-184+0+86-128-52-116-128-100 +sign_ed25519_open 15 117 115072 +6822+1745+474+598+88+78+4-146-238-36-14-178-8+0+0 +sign_ed25519_open 15 147 116972 +6872+1798+738+408+0+22+100+583-535-597-506-448-534-796-642 +sign_ed25519_open 15 184 115936 +6622+1650+806+586-24+94+122+0-244+12-278-130-22-218-30 +sign_ed25519_open 15 231 114920 +7196+1864+572+466+172+110+28-160-92-248-352+0-244-82-120 +sign_ed25519_open 15 289 115756 +7470+2132+570+532+826+544-170-2-18-164-2-72-138+220+0 +sign_ed25519_open 15 362 115514 +7532+2278+1286+774+528+422+765-304-140-20-64-248-240-132+0 +sign_ed25519_open 15 453 116082 +7293+1718+668+486+358+50-8-76+0-98-28+24-10-138-158 +sign_ed25519_open 15 567 118028 +7646+2460+868+692+204-134+0-26+64-14-78-146-12-52+0 +sign_ed25519_open 15 709 118832 +7841+2635+640-38-56-108+0+30-192-80+36-84-54+256+34 +sign_ed25519_open 15 887 118724 +7641+2805+890+1070+1057+540+0+36-200-242-110-548-350-178-202 +sign_ed25519_open 15 1109 121872 +7598+2494+1086+550+224+6-106-174+60-306-44-86-96-230+0 +sign_ed25519_open 15 1387 123560 +6637+2726+650+510+446+176-44-86+98-112-162-206-128-30+0 +sign_ed25519_open 15 1734 124906 +7691+1982+740+338+32-52+0-80+0-20-56-46-102+18+26 +sign_ed25519_open 15 2168 126972 +8133+1970+912+494+352+22-212+0+210-54-138-32-230-250-368 +sign_ed25519_open 15 2711 129908 +7837+2408+844+444+280-96+4+0-208-192-68-88+74-208-62 +sign_ed25519_open 15 3389 134684 +7530+1729+585+149+57-40-16-48-152+0-82+22+94-252-292 +sign_ed25519_open 15 4237 138036 +7766+2070+470+202+484+108+1114-262-336-314-466+0-346-344-350 +sign_ed25519_open 15 5297 144714 +7750+2316+962+430+42+6-168-302-234-182-236+28+0-288-130 +sign_ed25519_open 15 6622 148992 +7411+1732+842+374+296+0+148-154-165+179-160-44-109-84-186 +sign_ed25519_open 15 8278 158956 +7470+1580+758+580+168+842+501-298-510-260+0-72-418-208-540 +sign_ed25519_open 15 10348 172451 +8147+2137+614+59+0-233+190-481-48-145+25-471-84-11+61 +sign_ed25519_open 15 12936 184941 +7768+2094+699+325+0+156-14-234-189-139+62-292-165-257+1335 +sign_ed25519_open 15 16171 204018 +8827+2599+806+570+186-93-121+18-130-92+0-126-58-19+37 +sign_ed25519_open 15 20214 224923 +8064+2100+516-118+0-31+316-224-148+137-353-30+32+906-183 +sign_ed25519_open 15 25268 255383 +8384+2576+1074+395-75+129+108+103-44-302-203-206-235-13+0 +sign_ed25519_open 15 31586 291623 +6347+1472+674+515+0+1181-91+120+22-346-1041-538-177-427-879 +sign_ed25519_open 15 39483 336091 +5793+2201+678+83+181-12-1338-347-1248-1635-359+2281+180-63+0 +sign_ed25519_open 15 49354 389398 +7195+2090+922-971+216-1532-146-37+63-1424-1897+0+1969-618+213 +sign_ed25519_open 15 61693 460155 +5783+1609+218-57+0-805-742-495-832-817+1763+1774+762-189+447 diff --git a/lib-25519/lib25519/benchmarks/tigerlake b/lib-25519/lib25519/benchmarks/tigerlake new file mode 100644 index 0000000000..c5b2272ce1 --- /dev/null +++ b/lib-25519/lib25519/benchmarks/tigerlake @@ -0,0 +1,7078 @@ +lib25519 version 20221221 +lib25519 arch amd64 +cpuid 756e6547 6c65746e 49656e69 68743131 6e654720 746e4920 52286c65 6f432029 54286572 6920294d 31312d37 37473538 33204020 4730302e 00007a48 000806c1 00100800 7ffafbff bfebfbff 00000000 f3bfa7eb 18c07fde fc100510 00000000 00000000 00000121 2c100800 000002e7 00000000 00000000 00000000 00000000 +cpucycles selected persecond 1200000000 +cpucycles selected implementation amd64-pmc +cpucycles selected 0 18 +57+34+27-1+2+2-1+4-5+2-6-1-3+0+0 +randombytes selected 0 25 +3013+38+0+3-4+0+0+1+2+3+0-3-2-3-5 +randombytes selected 1 99 +2032+43+1+0+0+0+0+0+0+0-1-1-1-1-1 +randombytes selected 2 98 +32+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 4 98 +1+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 7 98 +1+0+1+1+1+0+1+1+1+0+0+0+0+0+0 +randombytes selected 11 98 +1+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 17 98 +1+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 26 98 +1+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 40 98 +1+0+0+0+0+0+0+0+0+0+0+0+1+0+0 +randombytes selected 61 98 +28+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 92 98 +1+1+1+0+0+0+0+0+0+1+0+0+0+0+0 +randombytes selected 139 98 +28+0+0+0+0+0+0+0+0+0+0+0+1+0+1 +randombytes selected 209 98 +28+1+1+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 314 98 +5+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 472 98 +0+0+0+1+1+0+0+0+0+1+0+0+0+0+0 +randombytes selected 709 98 +6+1+0+0+0+0+0+0+0+0+1+0+0+0+0 +randombytes selected 1064 99 +0+0+0+0-1-1-1+0-1+18+1+0+0+0+0 +randombytes selected 1597 98 +1+0+0+0+0+0+0+0+0+0+32+0+0+0+0 +randombytes selected 2396 100 +29+30-2-2+16-1-1+30+15+30+0-1-1-1+24 +randombytes selected 3595 124 +6+0-7-25+6-9-25+6-9+7+28-3-24+71+6 +randombytes selected 5393 109 -10-10-10-11+37+37+37+37+6-9-10+79+193+0-10 +randombytes selected 8090 115 +18+9+0-17+9+2+11+105-16-16-17-17-17-17+92 +randombytes selected 12136 120 +44+5+26+26-2-21-21-21-21-21-21+6+23+0+5 +randombytes selected 18205 140 +88+0-41-24-13+8+12-41-9+16-40-41+70+188+101 +randombytes selected 27308 151 -11+84+0-17+5+42-10-8+0-2-2+0-1+83+71 +randombytes selected 40963 158 -50+0-51+84+29+87+4-40-50+53+16-49-49-5+66 +randombytes selected 61445 169 -15+0+53-11-14-6+62-49+28+32-47+235+58+52+0 +verify_32 selected implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 selected 32 24 +1376+64+26+1+2+6-6+0-12-2-5-3-8-1+0 +verify_32 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 0 32 47 +527+32+6+2+1+1-1+0+0-1+3+0-5-8-7 +verify_32 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 1 32 22 +64+62+30+8-5+5-3-3+2+0-8+0-5+3-5 +verify_32 2 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 2 32 42 +1406+63+60+31+24+2+0-1+0-6-1-6-2-2-2 +verify_32 3 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 3 32 24 +56+29+4+2+1+0+19+3+0-2-1-5+0-10-2 +verify_32 4 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 4 32 41 +1226+74+34+28+30+1+1-1-7-2-5-2-2+0-4 +verify_32 5 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 5 32 23 +1573+30+34+30+24-2-2+0-8+4-12+0-4+1-6 +verify_32 6 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 6 32 41 +1418+80+71+34+27+4-1-1-2-2+0-1-6+0-1 +verify_32 7 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 7 32 23 +1213+42+28+33+27+4-1-7-4+2-6-1-7+0-2 +verify_32 8 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 8 32 40 +1234+74+60+61+56+10+0+1+0-2+0-2-2-3-2 +verify_32 9 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 9 32 23 +1207+63+29+7+0+1+4+0+3-1-1+0-2-8-2 +verify_32 10 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 10 32 48 +76+66+8+4+2+0+0+0-2+0-4-10-6-8-11 +verify_32 11 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 11 32 23 +1399+70+30+32+34-1+2+1-3+0-3-2-1+0-9 +hashblocks_sha512 selected implementation avx2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 selected 0 25 +1229+62+0+1+3-2+3-2+1+0-8-2-6-1-7 +hashblocks_sha512 selected 1 23 +20+32+1+3+25+2+1+0+0+0-1-11+0+0-10 +hashblocks_sha512 selected 2 25 -14-1+0+2+2+1+1+1+1+19-1-7-2-11-5 +hashblocks_sha512 selected 4 25 -13+0+4+0+1+1+0+1+3-8-3-4-4-10-4 +hashblocks_sha512 selected 7 24 -12+1+5+1+2+2+0+2+0+5-1-6-3-3-11 +hashblocks_sha512 selected 11 25 -10+1-2+3+0+2+2+0+0+3+1-2-4-1-2 +hashblocks_sha512 selected 17 22 -7+4+0+3+5+3+5+5+5-4+0-1-2-6-1 +hashblocks_sha512 selected 26 26 -12+3+0-1-3+1+1+1-2+1+0+0-4-6-8 +hashblocks_sha512 selected 40 24 +2-1+4+0+4+0+4+0+2-2+3-4-3-1-5 +hashblocks_sha512 selected 61 24 +0+1+0+2+1+2-1+3+1+0-3-3-4-1-5 +hashblocks_sha512 selected 92 24 +2+0+4-2+4+1+3+0+3-1-4-3-4-1-4 +hashblocks_sha512 selected 139 755 +5512+75+88+129+0-9-18+3-7+63-30-4-7+90-24 +hashblocks_sha512 selected 209 751 +29+27-5-9-13+23-3-9+11-2-8+4+0+1+0 +hashblocks_sha512 selected 314 1450 +58-1-7+78+0+15-4+7+0-4-7-10+1+3+8 +hashblocks_sha512 selected 472 2178 +60+65-10+1-6-16+0+10-2+10+24+0+12-19-18 +hashblocks_sha512 selected 709 3596 +39+0+1-28-22+0-33+99-15-15-15+5-16+0+15 +hashblocks_sha512 selected 1064 5716 +20+23-6-16+5-31-11+52+0+52-53-1+42+12-16 +hashblocks_sha512 selected 1597 8573 +22+85-35+11-17-38-22+17-20-24+0+2+3-8+58 +hashblocks_sha512 selected 2396 12844 +67+0-26+65+5-51+5-36-20-12+14+44-9+14-54 +hashblocks_sha512 selected 3595 19956 +87+0+37-54+106+26-35-49-56+35+50-2+15-97-19 +hashblocks_sha512 selected 5393 29911 +194-3+46+15-6-21-64+4-71-45+0+34+27+8-2 +hashblocks_sha512 selected 8090 44863 +306+44-65+0+22+101-35+40+55-12-86-12+78-120-59 +hashblocks_sha512 selected 12136 66772 +112+121+83-52+164-89-67-101-24+62-36-45+67+0+19 +hashblocks_sha512 selected 18205 100918 +161-8-119+31+89+146-38+63+0-7+825+131-32-106-84 +hashblocks_sha512 selected 27308 151270 -8+1859+175+0+5-102-33+173-78+114+106-4-158-133+425 +hashblocks_sha512 selected 40963 227598 +14239-202-224+35+24+126-37+11+0-76+73+35-182-56-57 +hashblocks_sha512 selected 61445 341613 +15792-89+180+129+390+0-212+203+98-252+376-81-116-139-210 +hashblocks_sha512 0 implementation avx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 0 0 24 +1210+89+32+5+0+2+2-2-8-2-6-2-2-7+0 +hashblocks_sha512 0 1 22 +132-11+29+4+5+2-1+0-1+18+1-4-2-3-2 +hashblocks_sha512 0 2 25 +29+1+4+2+85+1+3-1+0-1+0-5-7-3-3 +hashblocks_sha512 0 4 24 +0+1+0+3+2+4+5+2-1+3-3-3-5-2-9 +hashblocks_sha512 0 7 25 +2+1-1+1+0+0+0+1+2-4-4-6-6-5-3 +hashblocks_sha512 0 11 24 +2+0+4+0+1+2+1+1+4-7-1-10-4-4-8 +hashblocks_sha512 0 17 25 +0+0-1+4+3-1+2+1+2+0-4-1-5-4-3 +hashblocks_sha512 0 26 24 +0+2+0+5+4+0+3+1+2+4+0-2-5-1-5 +hashblocks_sha512 0 40 25 +0+0-1+4+3-1+2+2+0+1-1-2-5-5-2 +hashblocks_sha512 0 61 25 +0+0-1+1+1+2+4+3-2+3-1-3-6-4-4 +hashblocks_sha512 0 92 24 +2+1+2+1+0+1+5-1+3-2-4-1-4-2-6 +hashblocks_sha512 0 139 861 +2757+97+14-9+170+24+2+0-7-10-3-3-3+3-9 +hashblocks_sha512 0 209 864 +140+5+8+37+4+1-1+0-3-21+6-20-2-13-8 +hashblocks_sha512 0 314 1690 +98+94+0+0-7-21-14-20+97-8+48-24+49-16+61 +hashblocks_sha512 0 472 2493 +5-1+23+6+1+3+0+62-3-14-11-10+88-2-7 +hashblocks_sha512 0 709 4114 +91+12+103+27-14+7+15+92+0-33-5-11-15-4-25 +hashblocks_sha512 0 1064 6553 +106+52+12-17-29+28-23+44-14-16-16+0+6-35+26 +hashblocks_sha512 0 1597 9817 +41+132-17+102+44+8-30-3-87+0-15-1-33+24+30 +hashblocks_sha512 0 2396 14735 +162+44+35+66-10-31-24+0-31-55+64+46-37-34+46 +hashblocks_sha512 0 3595 22875 +123+0+67+24-8-31+79-48-64+27-6+712-94-5+7 +hashblocks_sha512 0 5393 34261 +78+50+2-6+61+121-12+93-35-74-13-50+48-25+0 +hashblocks_sha512 0 8090 51414 +141+0-65+137+26+55+153-21-21+7-81-62+7-5-88 +hashblocks_sha512 0 12136 76593 +740-22+55+154-46+4+35-45-15+0+49-48-3-154+65 +hashblocks_sha512 0 18205 115689 +85-56-6-189+73-46-72-76+646+60+22-142+56+0+120 +hashblocks_sha512 0 27308 173413 +0+42-35+108-13-52-52-72-209+74-171+1067+228+65+25 +hashblocks_sha512 0 40963 260556 +17284+187+354-23+100-165-91-70-175-46+0+210+52+107-78 +hashblocks_sha512 0 61445 391114 +13491+26-56+74+0-125-444+82+84+422-288-78-391+602-93 +hashblocks_sha512 1 implementation avx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 1 0 25 +1226+69+4-1+0-1+1+2-2+1+2-1-1-2-2 +hashblocks_sha512 1 1 25 +110+4-1-1+1-1+1+1+1-1+0+1+0-4-4 +hashblocks_sha512 1 2 25 +60+4-1+0+1-2+1+1-1+1-1-1-3-3+0 +hashblocks_sha512 1 4 25 +44+3+1+0+0+2+1+0-2-7-1-2-7+1-8 +hashblocks_sha512 1 7 25 +29+1-1+0+1-1+0+1+0-4-6+1-7-2-8 +hashblocks_sha512 1 11 24 -14+3+0+0+4+1+0+3+1+2+0+0-8-1-4 +hashblocks_sha512 1 17 24 -13+3+0+0+5-2+1+3+3+1-1+1-9-1-2 +hashblocks_sha512 1 26 24 -13+3+0+0+4-2+3+2+1+0+3-1-4-1-10 +hashblocks_sha512 1 40 24 -13+3+0+0+5+2-1+2+2-3-1-5+1-3-9 +hashblocks_sha512 1 61 24 -13+3+0+0+5+0+1+1+2+1+2-2-6-4-3 +hashblocks_sha512 1 92 24 -13+3+0+0+5-2+1+3+4+0+0-3-1-3-3 +hashblocks_sha512 1 139 1068 +1461+83+10-1+14-1-15+0-3-2+3+9+9-2-6 +hashblocks_sha512 1 209 1080 -12+10+11-18-5+11+6+6-13+8+16-6-5-2+0 +hashblocks_sha512 1 314 2128 +79+93+18-23-11+2-4+12-18+0-18-42-7+11+1 +hashblocks_sha512 1 472 3159 +690+57+52-14+0-49+15+23-3+44+7-7-17-6-2 +hashblocks_sha512 1 709 5236 +120+97-13-2+0+2-44+29+22-7+8-14+37-6-9 +hashblocks_sha512 1 1064 8379 +51+105+17+43-3-48+3-45-27+0+1-4+47+0-15 +hashblocks_sha512 1 1597 12537 +137+100+58+0+33+37-43-104-58+6+921-25-33-26-57 +hashblocks_sha512 1 2396 18811 +64+51+39+99-18+1264+786-4-20+0-45-6+24-19-47 +hashblocks_sha512 1 3595 29275 -3+94-63+0+13-10-70-38-64-146+10+28+84+13+8 +hashblocks_sha512 1 5393 43848 -84+6+7-132-93-27+71+47-71+0+83+104+65-80-24 +hashblocks_sha512 1 8090 65637 +0+131-20+52+145-73-4+12-140-82+114+104-13+75-140 +hashblocks_sha512 1 12136 98010 +0-162+215-74+23-105-7+93-11-47+11+16-86+167+1073 +hashblocks_sha512 1 18205 147965 +192-74+1597+60-126-209+0-73-364+84-193+3160+945+155-74 +hashblocks_sha512 1 27308 222136 +0-86+98+186+46+1041-57-341-151-22+12+173+6-288-287 +hashblocks_sha512 1 40963 334154 +16048-479-116-100+3711+1683-20+130-22+501-316-247+216+372+0 +hashblocks_sha512 1 61445 504739 +12055-45+64-470-295-472-133+602+545-179-554+1410+154+29+0 +hashblocks_sha512 2 implementation avx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 2 0 25 +1703+30+27+0+1+1-2-3-4+0+0-3-4+0-4 +hashblocks_sha512 2 1 22 +63+0-16-13+2+6+5-7+0+0-3-3-1-4+3 +hashblocks_sha512 2 2 26 +33+3+0+2-2+0+0+1+0+0-5-3-2-7-4 +hashblocks_sha512 2 4 25 +29+3+1-1+4-1+1-1-1+1+0-2+0-9-1 +hashblocks_sha512 2 7 25 +31+2+2+2+1-1+0+0+4+3-4-4-3-4-2 +hashblocks_sha512 2 11 26 +35+3+0+1+2-3+0+1+0-3-3-2-3-10-2 +hashblocks_sha512 2 17 25 +28+3+1-1+4-1+1-1-1+3-3+0+0-4-7 +hashblocks_sha512 2 26 25 +36+4+1+3-1+1-1+4+1+0-3-3-2-3-9 +hashblocks_sha512 2 40 25 +40+2+2+0+1+4-1+3+0-2-4-3-4-4-3 +hashblocks_sha512 2 61 24 -11+4+3+3+0+3+4+3+0+1-3-4-3-8-1 +hashblocks_sha512 2 92 25 +38+3+0+1+2+0+3+1+0+2-3-5-4-6-4 +hashblocks_sha512 2 139 943 +2648+102+32+4+2-3-8+68-20-9-22+57+0-18-11 +hashblocks_sha512 2 209 932 +40+120+24+3+9-12-8+6-6-13-3-18+80-7+0 +hashblocks_sha512 2 314 1827 +54+91+95+51-18+37-20+20-25-26-32-28-20+99+0 +hashblocks_sha512 2 472 2720 +119+97-21+104+63+35-7-16-24+0+50-21+53-3-26 +hashblocks_sha512 2 709 4481 +56+64+76+91-24-4+66-19-18+53-41+0-6+64-12 +hashblocks_sha512 2 1064 7137 +56+28+5-15+0+9+28+62+82-24-27-20-13-16-39 +hashblocks_sha512 2 1597 10681 -3-17-3+0-25+34+43+6-49-43+12+6-69+113+7 +hashblocks_sha512 2 2396 16012 +88+10+16+45-30+83-24-17-27-42-22+0-2+28+21 +hashblocks_sha512 2 3595 24860 -20+169+7-33-57-114-98+8+0+13-38+82+95+79-12 +hashblocks_sha512 2 5393 37176 +143+10-65+72-62-58+4+122-140+0-51-32+13-32+73 +hashblocks_sha512 2 8090 55802 -11+41-42-7+30+20+111+23-72+0+23-62-106+44-79 +hashblocks_sha512 2 12136 83225 +136-53+75-151-141-59+92+790-58+1997+68-146+0+39-68 +hashblocks_sha512 2 18205 125784 +107+12+0+28-112-211-174+146-174+23+48+173-30-153-68 +hashblocks_sha512 2 27308 188633 +43-14-196+492-260+721+774-334-96+22-73+1952-68+52+0 +hashblocks_sha512 2 40963 282885 +12216+61+84-31+0-123+657-12+102+25+96-11-223-127-56 +hashblocks_sha512 2 61445 425087 +12925+2105-587-331-325+0-278-176+398+47+68+114+151-412-163 +hashblocks_sha512 3 implementation avx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 3 0 25 +1350+37+2-1+0+0+0+0+2+1+0-2-2-3-1 +hashblocks_sha512 3 1 21 +21+6+3+1+3+3-3-1-6+1+0-3-3+0-5 +hashblocks_sha512 3 2 23 -12+4+0+4+3+2-4+2+0+1-1+0-5-2-3 +hashblocks_sha512 3 4 25 -3+2+0-4+2+1-3-3+0+1-4+1-1+2+1 +hashblocks_sha512 3 7 24 -2+3+1+0+0+0-4+2+0+0+2+1+0+0+2 +hashblocks_sha512 3 11 24 +41+4+1+2+0+0+2+2-3-3-5-6-9-3-6 +hashblocks_sha512 3 17 22 +0+3+4+2+4-1+4+4+2-1-1+0-1-1-8 +hashblocks_sha512 3 26 24 +37+4+2+0+2+0+2+0+2-3-3-4-1-7-4 +hashblocks_sha512 3 40 24 +22+5+2+0+1+1-3+1-4+0-1-2-5-3-3 +hashblocks_sha512 3 61 25 -14+2-2+2+1+0-4+0+0+0+1-7+1-4-3 +hashblocks_sha512 3 92 24 +27+4+2+0+2+0+2+0+2-3-3-4-1-7-4 +hashblocks_sha512 3 139 1078 +2727+121+8+18+4+5-6-5-1-25+0-9-8-17+7 +hashblocks_sha512 3 209 1075 -10+11+6+12-4-3+19-11+15-15+8+1-3-4+0 +hashblocks_sha512 3 314 2115 +96+95+6-8+5+0-12+6+6-4-6-23-3+21+0 +hashblocks_sha512 3 472 3156 +64+16+20+0-16+31-16+13+36-27-27-6-1-17+0 +hashblocks_sha512 3 709 5250 +80+71+24+0+7-13-28+0+1-27+14-1-27-6-25 +hashblocks_sha512 3 1064 8367 -11+63-2+41+43-9-4-62+20+0+10-19-39+37+15 +hashblocks_sha512 3 1597 12561 +100+66+60+61-63+0-88-48-32-33+5+24+22-84-16 +hashblocks_sha512 3 2396 18766 +20+119+113-22-89-34+0-76-69+12+27-31+27+20-39 +hashblocks_sha512 3 3595 29224 +27-6+4+168-28-98+38-24-35+22+0-52+839+52-42 +hashblocks_sha512 3 5393 43828 -44-67+16-24+16+0-9+577-44+2+89-56-6+53+49 +hashblocks_sha512 3 8090 65815 -99+79+10+14-12+12-79+10+52-92+0-152+40-6-196 +hashblocks_sha512 3 12136 97986 -267+60+127+46+0-29+18-321-198-65+134+91+225-108-98 +hashblocks_sha512 3 18205 147696 +101+147+777+257-158+0-60-163-57-150+591-175-138+343+14 +hashblocks_sha512 3 27308 222020 -316-349-494+2681+403+0+177-149-7+964+357+5-36+266-486 +hashblocks_sha512 3 40963 333461 +13541-230-379-91-320+0-54+3554+1708+356-108-74+165+98+94 +hashblocks_sha512 3 61445 504179 +14691-1045-1204-515+450-337+2143-80+0-19+1174+152+4-19+52 +hashblocks_sha512 4 implementation avx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 4 0 23 +271+67-1-17-5+1+2+1-1-3+1+0-4+0-3 +hashblocks_sha512 4 1 21 +58-4-12+1+0+5-3+2-1-2+0+1-4+0+1 +hashblocks_sha512 4 2 28 +24+0+85+1-4+83+1-4+1-3+0-4-3-5-1 +hashblocks_sha512 4 4 24 +26+4+2+0+2+3+1+0+2-1-1-3-4-6-6 +hashblocks_sha512 4 7 24 +18+5+4+0+2+3+3-1+1-1-1-3-3-2-3 +hashblocks_sha512 4 11 26 +16+3+2-2+0+0-2+0+0-3+0-9-6-6-9 +hashblocks_sha512 4 17 25 +23+4+1+2+2+1+1-4-2-1+0-4-10-4-4 +hashblocks_sha512 4 26 26 +24+1+1+0-1+1+0+0+0-1-3-5-3-8-5 +hashblocks_sha512 4 40 26 +22+3+0+1+1+1+1+0-1-1-5-1-12-3-4 +hashblocks_sha512 4 61 23 -15+3-2+4+5+4+1+7+5+0-2-2-1-3-5 +hashblocks_sha512 4 92 26 +20+3+0+0+1-3+0-2+0-2-1-1+0-9-4 +hashblocks_sha512 4 139 941 +2279+102+21+0-14+77+6+66-7-9+69-5-8-5-11 +hashblocks_sha512 4 209 936 +42+0-10+66+8-13+84+0+70-1-3-13+0-27+67 +hashblocks_sha512 4 314 1827 +87+28+36+124-3+49+62-17-1+40+0-13-11-6-7 +hashblocks_sha512 4 472 2700 +144+22+4+0+48+5-21-13+16+9-5-23-4-18-11 +hashblocks_sha512 4 709 4478 +36+92+138-27-29+45+62-24+0-9-27+19+38-8-6 +hashblocks_sha512 4 1064 7173 +102+70+57-44-35+25-13-39-16+33-44+30+0-80+762 +hashblocks_sha512 4 1597 10712 +98-22+0-21-80-39+24+783+1269+65-23+61-78+7-42 +hashblocks_sha512 4 2396 16008 +189+41+38+0-58-55-40+0-1-11+27+35+16-66-40 +hashblocks_sha512 4 3595 24860 +71+59+76-28-143+0-34-99+40+36-173-10+21+59-4 +hashblocks_sha512 4 5393 37313 +44+116-20+25-39-63+0-117+86-46+26-119-15+30+25 +hashblocks_sha512 4 8090 55832 +433-30+41+93-69+32-76-68+85+90-95+0-9+20-82 +hashblocks_sha512 4 12136 83224 +218-1+76+187-94-89-20+19+26-180-127+0-46+159+74 +hashblocks_sha512 4 18205 125589 +122+54-125+173-171+120-140+0-73+6-94+6-15-159+37 +hashblocks_sha512 4 27308 188452 +143+83+182-143-59+41-51-129-17+86+938+248+0-83-55 +hashblocks_sha512 4 40963 282900 +17185+132+296-79+0-46+9-69+13+851+129-150-14-73-424 +hashblocks_sha512 4 61445 424731 +12030+114+169+553-89-22+166+329+58-22-180+0-290-51-177 +hashblocks_sha512 5 implementation avx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 5 0 24 +1316+74+5+0+0+1+2+0+0+51-11-8-3-7-2 +hashblocks_sha512 5 1 25 +34+0-1+0+2+0-1+2+0-2-7+1-5-6-4 +hashblocks_sha512 5 2 24 +44+1+0+1+3+1+0+3-2+0-3-2+1-9+0 +hashblocks_sha512 5 4 25 -3+0+0+0+0+0+2+0+4-2+0-3-4+0-2 +hashblocks_sha512 5 7 24 -1+1+2+0-2+3+0+3+0+2-1-1+0-3-5 +hashblocks_sha512 5 11 24 +44+28+1+3-1+2+1+0-1+0-4+1-7-4-3 +hashblocks_sha512 5 17 24 -2+0+0+1+0+3+2+3+1+0+1-2-3-2-1 +hashblocks_sha512 5 26 25 +30+1+82+5+3-1+1+1+0-2-4-1-5-10-4 +hashblocks_sha512 5 40 24 +48+0+3-1+0+4+4+1+1+0-2-2-1+1-6 +hashblocks_sha512 5 61 26 +35+0+88+4+0-2+1+0+1-2-2-1-3-2-1 +hashblocks_sha512 5 92 25 +35+3-1+0-2+2+1+1+2+0-1-5-2-8-2 +hashblocks_sha512 5 139 966 +2468+131+39+0-10-24-12+11-15-4-10+0+20+3+9 +hashblocks_sha512 5 209 965 +8+29+17-3-8-16-7-13-19-7+7+17+0+2+10 +hashblocks_sha512 5 314 1901 +20+69+32-30+5-9+6+20+14-6-5-23-14+0-32 +hashblocks_sha512 5 472 2832 +47+64+0-12-31+17+2+1-10+1+15-6-33-16-10 +hashblocks_sha512 5 709 4700 +126+114+83+0-37+11-26+20-23-24+35+2-21+0-11 +hashblocks_sha512 5 1064 7487 +25+91-9+29+11+13-34+22+34-30-40-46-15-37+0 +hashblocks_sha512 5 1597 11287 +31+43+1+7+4-93-39+0-51+29-71-105-138-58+5 +hashblocks_sha512 5 2396 16830 +114+86+6+59-10+0-23-40-140+10-60-27+1-61+12 +hashblocks_sha512 5 3595 26167 +87+23+0+4-54-51-48+53-1-32-84+39-201+29+19 +hashblocks_sha512 5 5393 39143 +139-70+0-18+29-32+115+64-26+90-8+4+152-43-52 +hashblocks_sha512 5 8090 58773 +70+106+158+6+699+73+62+0-136-39-146-42-16-36-6 +hashblocks_sha512 5 12136 87647 +22+73-129-59-21-76+238+80+152-32-47+48+0-49+222 +hashblocks_sha512 5 18205 132220 +85-36+214-85-90-143+97-113-40+0-107+191+145+27+818 +hashblocks_sha512 5 27308 198444 -43+104-130+0-113+125-30-32+117+220-18+260+28+66-22 +hashblocks_sha512 5 40963 298252 +31301-108+217-48+0+57-30+209-148-58-322+145+142-83+335 +hashblocks_sha512 5 61445 450481 +13605-1759-1174-1313-1317-1169-1433+238-35+0+274+470+168+388+396 +hashblocks_sha512 6 implementation avx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 6 0 24 +1443+39+63-10-12+0+0+3+2+1+0+2-4-3-1 +hashblocks_sha512 6 1 26 +31+1+0+1+0+1-2+3+0-1-1-3-6-6-4 +hashblocks_sha512 6 2 26 +29+2-1+1+1+1+1+0+0-1-1-3-8-5-6 +hashblocks_sha512 6 4 26 +31+2+0-2+3-2+2+4-1+2+0-4+0-3-5 +hashblocks_sha512 6 7 25 -14+1+0+1-1+5+2+1+2+0+0+0-4-3-5 +hashblocks_sha512 6 11 26 +30+2-1+1+0+0-1+1-1-1+0+0-5-9-4 +hashblocks_sha512 6 17 26 -15+0-1+0-2+3-1+2+2+0+0-5+0-3-4 +hashblocks_sha512 6 26 25 +30+3+1-1+4-1+4+0+3-1-1-6+1-8-4 +hashblocks_sha512 6 40 25 +30+3+1-1+4-1+4+0-1+0+1-2-3-13-1 +hashblocks_sha512 6 61 25 -17+0+3+4-1+1+2+3-1+1-4+1-4-5-4 +hashblocks_sha512 6 92 26 +27+3+0+0+1-3+2+0+4+0-1-2-3-4-6 +hashblocks_sha512 6 139 947 +2531+82+31-16+68+61+79+14-8+0-13-29-3-27-45 +hashblocks_sha512 6 209 927 +0+8+12+98-4+8-3-13-2-9-21+69+92-2+82 +hashblocks_sha512 6 314 1831 +7-27+18+73-19+122+0-18+26-11+65+2-24-15-12 +hashblocks_sha512 6 472 2725 +24+2-29+42+53-12-23-40+0+107+1+67-25-3-51 +hashblocks_sha512 6 709 4491 +10+43+0+49-29-48+37+31+78-3-78-12-12+21-12 +hashblocks_sha512 6 1064 7151 +53+58+45+11-30-27+88+4-49-17-46+0-70+32-21 +hashblocks_sha512 6 1597 10718 +28+111+17+59+41-69-85+10-56+0-50-71-100-51+84 +hashblocks_sha512 6 2396 16006 +95-39+53+15+5+71+0-41+68-28-12-22-40+84-23 +hashblocks_sha512 6 3595 24899 +105+12+41-33-93+2+27-61-62+4-64+14-113-105+0 +hashblocks_sha512 6 5393 37273 +20+166+0-69-38-23-149+30-107-99+9-10+12+64+53 +hashblocks_sha512 6 8090 55908 +111+0+103+47+15-116-190+83-113-175-67-151-71+28+82 +hashblocks_sha512 6 12136 83285 +55-126-173-113-51+650+12+105-134+79+481-203+0+49-56 +hashblocks_sha512 6 18205 125705 -14-36-58-270+112-166-153+0+214+31+2373-121+89+139+18 +hashblocks_sha512 6 27308 188506 -81-10-17-87+565+112+124+176-13+75+39-19+5+0-88 +hashblocks_sha512 6 40963 283310 +12786+298-101-268-130-100+2340-204+40+0+164-168-90+37+102 +hashblocks_sha512 6 61445 424851 +30656+949-16+2152-416-241+31+74+406-113+0-366+504-268-313 +hashblocks_sha512 7 implementation avx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 7 0 25 +1226+72+4-1+0+1-2+0+0-2-6+1+0-3-1 +hashblocks_sha512 7 1 24 +110-1-14-10+0-1+1+0+0+1+2+0+1+1+3 +hashblocks_sha512 7 2 25 +31+2-1+1-1-1+1+0+2-2+0-3-12+0-5 +hashblocks_sha512 7 4 25 -2+2-3+1-3+0+0+1+1-5+1+2-2-2-4 +hashblocks_sha512 7 7 25 -4+0-1+2-4+1-2-1+0+0+0+0+0+3-4 +hashblocks_sha512 7 11 24 +24+4+0+1+0+2+2+0+2-1-1-2-3-5-5 +hashblocks_sha512 7 17 24 -7+1+0+2+0+0+0+4+1-3+2+0-5+1-2 +hashblocks_sha512 7 26 26 +35+0-2-2+1+0-2+0+1+0-6+0-6-5-8 +hashblocks_sha512 7 40 25 +26+1+1-1+2-1+2-2+0+0-3-5-1+1+1 +hashblocks_sha512 7 61 24 +27+4+2+1+1+3-1+3+0-4-4-2-4-3-5 +hashblocks_sha512 7 92 24 +33+2-1+2+1+2+1+0+3+0-1-2-6-4-4 +hashblocks_sha512 7 139 970 +1837+98+17-4-11-15-1+13+0-13-10+0+9-12+3 +hashblocks_sha512 7 209 967 +3+11+15-4-6-13+11-3+9+5-10-19+6-4+0 +hashblocks_sha512 7 314 1905 +61+42+25-3-20+18+8+9-7-25+19-25+0-34-12 +hashblocks_sha512 7 472 2826 +50+49+19-2-16+8+14+28+18-44-25-13-19+0-1 +hashblocks_sha512 7 709 4680 +104+81-2-22+29+7-6+36+0+0+16-7-3-21+4 +hashblocks_sha512 7 1064 7478 +122+91+59-39-11-29-41+17-8+29-4+0+17+10+0 +hashblocks_sha512 7 1597 11197 +91+70+15-59-9-6-25+12+12-66-3-69+9+0+2 +hashblocks_sha512 7 2396 16818 +58-13-25+15-66+0+23+53-2+4-28-87-63+26+30 +hashblocks_sha512 7 3595 26073 +29+146+5+4-40-126-59+106-35-54+36-58-54+90+0 +hashblocks_sha512 7 5393 39211 -62-17+742+146-94+0+70+1962+70-90-118+17-44-112+5 +hashblocks_sha512 7 8090 58623 +17+77+145+47+95+0-158+12-122+147-7-8-40-6-160 +hashblocks_sha512 7 12136 87683 +22+8-214-20-34-40-169+115+17-145-50+132+3+0+3 +hashblocks_sha512 7 18205 132275 -246-292-306-394-215-452-147+580+260+209+114+76+87+85+0 +hashblocks_sha512 7 27308 197784 +222-107+368-158-14+0+142+19+197-20-248+169-187-227+75 +hashblocks_sha512 7 40963 297264 +15521+201+77-346-322+93-224-449+0-385-466-283+2551+1021+867 +hashblocks_sha512 7 61445 450133 +18454-1145+348-1343-1071+925+363-176+431+0-126+354+141-166-201 +hashblocks_sha512 8 implementation avx2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 8 0 23 +104+81+28+4+4+1+0-5+1-1-3+0-3-3-3 +hashblocks_sha512 8 1 25 +72+4+2+2-2+2-1+3+0+3-2-4-1-1-2 +hashblocks_sha512 8 2 26 +44+3+1+1-3+2-3+3-2+0-2+0-3-6-3 +hashblocks_sha512 8 4 26 -16+0+1+1+1-1+1+1+0-1+0-3-5-4-5 +hashblocks_sha512 8 7 26 -16+1+1+0+0+1+1+1-1+1+1+0-5+0-8 +hashblocks_sha512 8 11 26 +46-1+1+3-2+3-1+0+0+2-4-4+0-10-7 +hashblocks_sha512 8 17 25 -14+3+2+2+0+1+2+3+3-4-2-8-4-7-7 +hashblocks_sha512 8 26 25 -15+2+2+2+0+2-1+3+4-1+0-5+0-3-5 +hashblocks_sha512 8 40 26 +40+2-1+1+1+0-2+2-3+3-5-2+0-9-4 +hashblocks_sha512 8 61 25 -19+2-1+3+1+2+2+2+4+0-1+0-9-1-4 +hashblocks_sha512 8 92 25 +60+0+2+4-1+4-1+1+1-4+0-4-3-10-3 +hashblocks_sha512 8 139 752 +205+56+97+77-15-9+114+0+4-4-9-8+78-17+0 +hashblocks_sha512 8 209 751 +74+0-10-12+0+57-7-1+11+4-1-7-6+7+4 +hashblocks_sha512 8 314 1457 +107+20+14+87+28-9-2+10+0+14-5-1-5+0-4 +hashblocks_sha512 8 472 2180 +95+14+12-24-4-30-2-6+4+30+0-8+8+46-17 +hashblocks_sha512 8 709 3596 +13+70+32+3-1-17+24-12-14+0-11-8+10-25+2 +hashblocks_sha512 8 1064 5737 +86-7+14+24+0+1-43+0+22+34-15-32-57-24-4 +hashblocks_sha512 8 1597 8574 +107+56+25-10+6-29+0-23+1-37+79-34-47-36+19 +hashblocks_sha512 8 2396 12849 +172+10-43+38+33-45-58-20+6-46+10+0-42+20-15 +hashblocks_sha512 8 3595 19961 +17+107+43-28+32+39-33-82+56-108+8+0-24-77-113 +hashblocks_sha512 8 5393 29905 +172+6-1+122-1+166-64-22-48+0+70-94+64+68-111 +hashblocks_sha512 8 8090 44850 +138-8+13+11+0-55+49+7-32+20-64-16-23-132+103 +hashblocks_sha512 8 12136 66902 +703-21-100+115-52+58-106+108+108-9+91+11-11+0-43 +hashblocks_sha512 8 18205 101000 +173+95-76+525-140-18+54-56+142-105-82-221+1883+59+0 +hashblocks_sha512 8 27308 151411 +365-124-84-10-24-72+142+701-204+194+158+93-146+26+0 +hashblocks_sha512 8 40963 227413 +13247+39-139+0+9-189-289-161-155-162-166+2614+187+270+168 +hashblocks_sha512 8 61445 341392 +12853-12+74+7+129+155+904+0-240-257-161-251-166-135+183 +hashblocks_sha512 9 implementation avx2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 9 0 24 +240+50+1+2+1+1+0-4+0+1-1-4-3-8+0 +hashblocks_sha512 9 1 23 +56-8-12+0+1+2+2-2+3+3-2+0-2-3-6 +hashblocks_sha512 9 2 20 +32+9+3+2-1+6-5+2-3-2-4+0-4+1-3 +hashblocks_sha512 9 4 25 +17+1+0+0-2+0+0-1+1+1-1-4-6-1-8 +hashblocks_sha512 9 7 23 +0+0+0+1+1-2+3+1+4+1+1-1-2-10+0 +hashblocks_sha512 9 11 24 -14+0+1+0+2+0-1+0+2+1-3+0+1-3-6 +hashblocks_sha512 9 17 24 -14+0+1+0+2+0-1+1+2-2+1+1-3-6-2 +hashblocks_sha512 9 26 23 -6+1+1+3+1+0+0-1-2-3+0-5-8+3-8 +hashblocks_sha512 9 40 24 +40+0+2+0+1+0+0+0-1+0-9+3-5-1-12 +hashblocks_sha512 9 61 25 -16+2+88+1-3+0-4+1-2+1-7+0-2-5+1 +hashblocks_sha512 9 92 23 -6+1+2+0+0+3+3+1+3-2+0-7+1-9-3 +hashblocks_sha512 9 139 764 +410+145+72+70-21-24+73-9+62-5-19-3+1+0-28 +hashblocks_sha512 9 209 751 -3+3+0+1-4+14+4+8-10-5+1+1-7-15-9 +hashblocks_sha512 9 314 1469 +58+87+42+3-23+6-16-21-18+0-19+4-12+0-17 +hashblocks_sha512 9 472 2178 +68+14+58-11+0-11-7-24+3-18+4+10-20+12-19 +hashblocks_sha512 9 709 3600 +58+118+56-12+11-28-11-6-52+12+0+21-11-15+24 +hashblocks_sha512 9 1064 5723 +1+80+38-78-23-3+81+0-27+0+46-26+93+30-2 +hashblocks_sha512 9 1597 8577 +16+49+128-48+9-63-23-17+52-29-43-14+53+0+11 +hashblocks_sha512 9 2396 12839 +100+39+39-2+74+35+0-17-5-67+0+19-20+15-23 +hashblocks_sha512 9 3595 19935 -4+11+84-46-32-54+39+73+0-49+2+10-29-35+19 +hashblocks_sha512 9 5393 29888 +54+67+98+25-53-2-10+50+0-16+48+86-27-3-10 +hashblocks_sha512 9 8090 44867 +635-74+100+51+78-13+108-85-19-146-55-80+85+3+0 +hashblocks_sha512 9 12136 66826 +211-136-93+11+35+123+136-76-112-42-77+0+119+7-39 +hashblocks_sha512 9 18205 101008 +101+518-15+54-274-71+0-48-102-148+99+177-131+43+53 +hashblocks_sha512 9 27308 151364 +115+218+0-19-195+42+135-7+48+39+47-19-29-63-114 +hashblocks_sha512 9 40963 227292 +13382-68+101+17-173-203-16-23+34-175+88+0+231-9+50 +hashblocks_sha512 9 61445 341416 +18422-109+44-244-154+127+184+235-29+0-143+503-135-5+27 +hashblocks_sha512 10 implementation avx2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 10 0 26 +334+53+3-1+2+0+2+0-1+2+1-2+0-5-8 +hashblocks_sha512 10 1 24 +79-12-5-2+1+2+1-2+0+2+2+0-1-7-3 +hashblocks_sha512 10 2 26 +46+2+0-2+2+0-1+4+1-2-1-1-9+0-4 +hashblocks_sha512 10 4 25 +44+3+0+1+4+0+1+0+1-1-4+0-5-7-2 +hashblocks_sha512 10 7 26 +50+1+2+0-2+2+2+1+1-1-1-2-6-3-6 +hashblocks_sha512 10 11 24 +48+2+4+5-2+0+1+2+2-1-2-1-5-2-3 +hashblocks_sha512 10 17 25 +47+1+3+1-2+2+3+0+0+0+1-2-2-2-4 +hashblocks_sha512 10 26 26 +53+0+2+3-6+0+4-2-1-3-2+0+0-5-9 +hashblocks_sha512 10 40 25 +52+0+3+0+1+0+0+2+0+0-1-2-4-6-2 +hashblocks_sha512 10 61 25 -1+0+2+0-1+2+0+1-1+0-2+0-1-5-5 +hashblocks_sha512 10 92 25 +53+1+3+1-1+0-2+1+1+1-4-4-2-4-3 +hashblocks_sha512 10 139 766 +745+57-19+0-11-18-22+84+53+87+50+69-2-16-9 +hashblocks_sha512 10 209 752 +47-19+53+3-4-4-11+7-4+8-5-2+0+9+7 +hashblocks_sha512 10 314 1464 +88+86+30+14+2+56+8+0-13-17-16-5-7-9-3 +hashblocks_sha512 10 472 2185 +45+86+41+0+1+4-19-13-26-24+1-21-29+1-33 +hashblocks_sha512 10 709 3596 +59+78+117+20+13+0-6+60+0+16-9-10-2-18-16 +hashblocks_sha512 10 1064 5729 +54+47+35+18-19-49+26+6+7-29-23-7-32+0-50 +hashblocks_sha512 10 1597 8576 +17+29-10+22+22+10-29-7+13+0-22+43-19-32-14 +hashblocks_sha512 10 2396 12848 +122+9+37+11-13-40+6-99+22-31+31-56-2+0-21 +hashblocks_sha512 10 3595 19923 +110-89+50-10-23-5-6+58+57+0+41+47-44+105-43 +hashblocks_sha512 10 5393 29910 +50+83-92-8+708+27+27+66-55-82+49+0-46-37-51 +hashblocks_sha512 10 8090 44843 +176-51-10+37+16+0+143-36-38+118-144-104+8-152+82 +hashblocks_sha512 10 12136 66846 +183+10+218+41+9-66+9-83-22-89-90-34+0+32-25 +hashblocks_sha512 10 18205 100915 +332-183-74-139+84+186-149+38-92+16+133+106-61-69+0 +hashblocks_sha512 10 27308 151394 -12+98-112-104-48+189+63+12+0+202+161+236-18-34-94 +hashblocks_sha512 10 40963 227334 +12929+186+140+94+1089+90+0+152-43-4-131-89-108-89-15 +hashblocks_sha512 10 61445 341685 +13434+524+269+429-23+183+21-50-127+0-250-19-55+53-14 +hashblocks_sha512 11 implementation avx2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 11 0 52 +259+1-1+0+46+16+11+20+6-30-46-35-41-28-34 +hashblocks_sha512 11 1 23 +59-10-12-11-4+2+3+2+0+0-1+1+1+0-1 +hashblocks_sha512 11 2 24 +26+3-1+1+2+0-2+0+3+0-2-1-5-5-2 +hashblocks_sha512 11 4 25 +25+2-2+0+1-2-2+1+0+0-2-1+0-4-3 +hashblocks_sha512 11 7 24 -15+1+1+1+0-1+2+2+1-2-2-3+1-6-3 +hashblocks_sha512 11 11 24 +26+3+0+0+0+2+1-2+3+0-3+1-6-3-6 +hashblocks_sha512 11 17 24 -15+0+3+1-3+0+2+1+0+2+1-1+0-2-6 +hashblocks_sha512 11 26 25 +27+1+0+0-1-1-1-1+2-1+2+1+0-9-3 +hashblocks_sha512 11 40 25 +27+1+0-2+0+0+0-1-2+0+2+0-4+0-7 +hashblocks_sha512 11 61 25 -15+1-2+2+1-2-3+0+0+0+3+1+0-9-3 +hashblocks_sha512 11 92 24 +26+3+0+0+0+2+1-2+3+1-2+1-4-4-4 +hashblocks_sha512 11 139 757 +89+95-19+35+47-12-15+60+0-9-7-14+6-19+6 +hashblocks_sha512 11 209 751 -12+0+5-5-16-4+1+11+7-10+8+3+44-13-1 +hashblocks_sha512 11 314 1463 +24+68+12-27+2+4+8-9+0-9-2-10+21-9-18 +hashblocks_sha512 11 472 2184 +63+49-16-9+0-18-25-34-12+0+24-13+67+0+10 +hashblocks_sha512 11 709 3605 +68+54+53+37-53-9-23-41+0-41+0-30+48+5-11 +hashblocks_sha512 11 1064 5754 +25+56+39+10-36-35-2-32-48+0+10-65-51+18+9 +hashblocks_sha512 11 1597 8570 +27+41+73+42-8-39-6+37+14-10-35-5-35+31+0 +hashblocks_sha512 11 2396 12864 +41+30+59+45-78-14+2-27-38-3+0+17-73+9-10 +hashblocks_sha512 11 3595 19957 +136-24+51+44-11+56-49+0+36-78-4-40+53+5-111 +hashblocks_sha512 11 5393 29889 +65+142-120+7+69-20-36-86-26+0-20+7+24-159+44 +hashblocks_sha512 11 8090 44828 -97-14+30-86+17+66-19+0-11+572+43+52+88-13-47 +hashblocks_sha512 11 12136 66821 -38+0+51+651-21+66-32-92-45+123+39-25+6-18+110 +hashblocks_sha512 11 18205 100984 +2083+0-149+74-25+80+73-18+23+11-178-5-37-219+64 +hashblocks_sha512 11 27308 151440 +238+129+6+88+111+42-77+0+525-110-333-298-274-149-282 +hashblocks_sha512 11 40963 227334 +15067+178-29-289+8+63-43-120-207+0-86+9+3060+382-54 +hashblocks_sha512 11 61445 341777 +14890-186-420+96-74-256+442+1266-74-258+1535+35+0-199+55 +hashblocks_sha512 12 implementation avx2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 12 0 25 +269+54+4+0+3-2+0+1+0+0+0+1-4-1-10 +hashblocks_sha512 12 1 26 +61+2+0+0+3+1-2+2-4+3+2-4-5-3-9 +hashblocks_sha512 12 2 26 +28+3+89+1+0+0+1+2+2+0-5-3-4-2-3 +hashblocks_sha512 12 4 27 +17+2+1-3+1-3+1+1+1+0-2-9-3-8-4 +hashblocks_sha512 12 7 26 +47+2+88+1+3-2+1+0+1+0-2-5-2-11+0 +hashblocks_sha512 12 11 25 +44+3+1+3-1+4-1+1-1+0+1-4-1-6-1 +hashblocks_sha512 12 17 26 -4+2+0+81+6+0+1+0+2-2-8-4-4-13-4 +hashblocks_sha512 12 26 27 +17+2+0+0+83+0-1-1-1-2+0-1+1-7-12 +hashblocks_sha512 12 40 26 +47+2+0-2+3-2+0+0+0-3+0-4-5-1-7 +hashblocks_sha512 12 61 25 +48+3+1+3-1+2-1+1-1+0-1-1-1+0-7 +hashblocks_sha512 12 92 23 +3+0+1+4+2+2+1+4-1-2+0-1-9+0-1 +hashblocks_sha512 12 139 759 +113+66+15+61-20+0-10+0+4-6+83-29-13-4-15 +hashblocks_sha512 12 209 749 +2+14-5+0-9-18+7+2+8+8-1-5+2-5-7 +hashblocks_sha512 12 314 1473 +32+63+29+12-10+6-20-25-9+38+27-33-13-17+0 +hashblocks_sha512 12 472 2165 +82+29+4+21+1-8-7-5-9+16-14-15-5+0+12 +hashblocks_sha512 12 709 3594 +62+29+70-10-21-38+0+31-3+15-5+10-31-17+45 +hashblocks_sha512 12 1064 5715 +0+31+0+21-26+689+31-20+14-2-15-7-2-4+35 +hashblocks_sha512 12 1597 8572 +38+132+81-14+0+30-10+53-29-16-52+43-44-38+8 +hashblocks_sha512 12 2396 12851 +196+79+102+113+0+125-50+15-39+11-41-23-26-62-9 +hashblocks_sha512 12 3595 19959 +150+107+10+17-119+80-40-26+0-28-90-7-24+22+5 +hashblocks_sha512 12 5393 29875 +127+25+23+0+39-11+128-75-33-53+28+24-34-72-22 +hashblocks_sha512 12 8090 44806 +88+47-16+75+0+34+131-102+70-12-29-115-92-125+209 +hashblocks_sha512 12 12136 66830 +82-64-26+149-90+22-20+59-42+186+24-19+0+58-12 +hashblocks_sha512 12 18205 101000 +95-126+19-51-160-105+678+563+1309+57-98-179+0+170-260 +hashblocks_sha512 12 27308 151312 -105-79+41-26-54-44+110+106+112+101+0-151+29+136-124 +hashblocks_sha512 12 40963 227451 +17640+98+111+0+126+48-233+80-145-17-47-90+93-1-76 +hashblocks_sha512 12 61445 341592 +13531+36+87+0+64-29-348-7-187-51+435-351+685-310+168 +hashblocks_sha512 13 implementation avx2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 13 0 24 +319+28+0+1-1+3-1+0+2+0-2-1-1-4-4 +hashblocks_sha512 13 1 20 +66-5-7+3+4+6+2+3-7+4-6+0-4+0-4 +hashblocks_sha512 13 2 24 +43+0+2-1+2-3+1+2+1+2-2-3-3-2-6 +hashblocks_sha512 13 4 24 -3+2-5+2+2+0+0-3+5-1+0+0-2+0-4 +hashblocks_sha512 13 7 24 -1-1+0-2+0+2-4+1+1+2+2+0-2+1-6 +hashblocks_sha512 13 11 24 +46-2+3+1-1+0+0-1+2+3+0-2-6-2-7 +hashblocks_sha512 13 17 23 +0-3+2+0+3+1+0+2+0+0+0-1-6+0-9 +hashblocks_sha512 13 26 24 +46-2+3+1-1+0+0-1+4-1+1-1+0-1-10 +hashblocks_sha512 13 40 24 +29+0+3-1+1-1+0+2-1+0-1-1+0+0-2 +hashblocks_sha512 13 61 24 +40+2-1+1-1+0+0+3+2-2+0-2+0-3-4 +hashblocks_sha512 13 92 23 -2+3+0+1+1+0+2+1+2-2+1+0+0-8-2 +hashblocks_sha512 13 139 754 +289+159+102+3-13-4-2-8-16-7+0+6-3+13+6 +hashblocks_sha512 13 209 749 +0+6-11+3+4-8+3+1-8-5-8+3-10+4-9 +hashblocks_sha512 13 314 1455 +41+60+28+11+14-17-13-15-9-8+2+0+0-20-1 +hashblocks_sha512 13 472 2168 +116+68+87-16-10-6-18+0-14+14+8-6-22+12+23 +hashblocks_sha512 13 709 3590 +66+102+46+5-4-17+12+0-6-4-25-7-30+6+24 +hashblocks_sha512 13 1064 5733 +25+50+22+13-17+5-12+9+15-3-26-19-41-6+0 +hashblocks_sha512 13 1597 8573 +684+98+122-26+9-12-23-54+0+7-22+42-34-11+21 +hashblocks_sha512 13 2396 12859 +100+13+30+98-20+12-40-80-58-84-78-41+1+0+15 +hashblocks_sha512 13 3595 19930 +84-17-4+19+0+98-65+28+20-21+10-31-14-7+82 +hashblocks_sha512 13 5393 29940 +48+0+116+19-99+16-71-96+29+49-104-25-75+54-42 +hashblocks_sha512 13 8090 44876 +723+0+2+47-83+15+4+2-170+58-2-70-66-9-33 +hashblocks_sha512 13 12136 66841 +208-24+94+0+149-58+73+45-39-7+23-50-85+33-95 +hashblocks_sha512 13 18205 100916 +22+80+201-12-197+173-1-134-6+17+0-70+79+80-56 +hashblocks_sha512 13 27308 151273 +982+2116+50-56-2+177+0-4-17+20+49-218-132-72+3 +hashblocks_sha512 13 40963 227490 +13735+85-116-178-70-214+399+357-142-114+0+37+797+649-99 +hashblocks_sha512 13 61445 341513 +13510-278+0+579+90-141-68+72-180+197-17-43-135+64+194 +hashblocks_sha512 14 implementation avx2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 14 0 24 +305+51+5+0+5+0+2+0+3+1+0-1-3-6-3 +hashblocks_sha512 14 1 26 +54+2+0-2+3-2+2-3+3+2-2+1-4-5-5 +hashblocks_sha512 14 2 25 +32+3+1-1+4-1+0+1+0+2-2-4-8-1-5 +hashblocks_sha512 14 4 24 -12+3+5+1+0+2+4+2+4+0+0-3+0-3-7 +hashblocks_sha512 14 7 24 -11+4+3+3-1+2-1+4+5-2-3-5+0-10+1 +hashblocks_sha512 14 11 26 +43+2+0+0-1+1+2-1+3+0-3-4-7-4-4 +hashblocks_sha512 14 17 25 -8+1+4+1-2+2+0+4+3+1-4-5-3-7-4 +hashblocks_sha512 14 26 26 +36+2+0+0+0+0-1+0+2+4-2-1-6-4-6 +hashblocks_sha512 14 40 26 +28+2+0-2+2+0-1+0+0-6-7+0-5-9-4 +hashblocks_sha512 14 61 24 -5+1+0+3+3+1+4+2+4+0-1-3-1-7-1 +hashblocks_sha512 14 92 24 -7+2+4+2+0+4+3+4+1-2-2-11-2-4-4 +hashblocks_sha512 14 139 767 +211+67+43+0+1+79-11-16+63-2-19-20-7+3-14 +hashblocks_sha512 14 209 764 +38+12+3+2+95-11-10-3+1-15+60-1+0-3-2 +hashblocks_sha512 14 314 1469 +9+19+72+12+0+16-12-7-1-17+0+3-6-30-12 +hashblocks_sha512 14 472 2189 +35+48+15+51+1+0-31-3-23-12+0-6-11+23-1 +hashblocks_sha512 14 709 3595 +71+89+58+25+0-17+1+3-29+0-19+0-5+32-15 +hashblocks_sha512 14 1064 5732 -22+90+8-20+10-16+39+0+16-56+13-35+11-15-26 +hashblocks_sha512 14 1597 8566 +129+64+45+3+0+3-33-18-44-8-25-47-39+73+11 +hashblocks_sha512 14 2396 12869 +58+8+25-57+0-94+77-42-15+73-29-40+23+95-28 +hashblocks_sha512 14 3595 19961 +166+97-96+17-131-14+17+53-69-25+0-56+115-38+6 +hashblocks_sha512 14 5393 29936 +83-36-25+126+117+81+0-14-83-159+6-25+10+16-10 +hashblocks_sha512 14 8090 44867 +77+119-42-62+19-2-20+42+48-45-53+58+0-35+37 +hashblocks_sha512 14 12136 66881 +182+114-29-42+11+54+112-27+0+56+626-44-60-76-69 +hashblocks_sha512 14 18205 100867 +113-90+21-34+46-30+0-18-44+362+39+17-13-51+17 +hashblocks_sha512 14 27308 151388 +148+30+0-32+107-109+105-25-139-165+88+495+326-37-40 +hashblocks_sha512 14 40963 227412 +12622+778-100-34+90-3+85-15-40+0-182+45+136+747-253 +hashblocks_sha512 14 61445 341512 +21149+163+262-183-5+0+410-122+583+0-370-12-351+162-57 +hashblocks_sha512 15 implementation avx2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 15 0 25 +392+92+26+1+3-1+0+0-4-5-2-5-4-7+1 +hashblocks_sha512 15 1 26 +33-2+0-3+0+84+0-1-3-3+1+0+1+1+1 +hashblocks_sha512 15 2 24 +43+0+2-1+2-3+1+1+2-1+1+0-1+0-2 +hashblocks_sha512 15 4 26 +43-2-2+84+0-1-2+3-3+1-2+1+0+0+0 +hashblocks_sha512 15 7 24 +1+0-1+0+0-1+2+0+0+1+2-5+2-1-3 +hashblocks_sha512 15 11 25 +45+0+84+7+2-1+0+0-1-2-2-1-1+0-2 +hashblocks_sha512 15 17 24 +0+0+0-2-1+1+0+2+3+4-2-3+1+1-1 +hashblocks_sha512 15 26 26 +43-2+86+0-1-2+1-2+3-2+0+0-1+1-1 +hashblocks_sha512 15 40 24 +41+0+89+7+30+0+3+0+0-2+0+1+0-4+0 +hashblocks_sha512 15 61 24 +48-1+1-1-1+3-1+86+1+0-3+3+1+0-3 +hashblocks_sha512 15 92 25 -1-4+1+1-2-2+0-1+1+0+0-2+0+0-2 +hashblocks_sha512 15 139 766 +953+27-1-3+13-12-16+0-11+75+4-13-7+98+1 +hashblocks_sha512 15 209 760 +2-3+0-2-3+8-8+3+2+1-3+3-4+1-4 +hashblocks_sha512 15 314 1472 +67+126-2-20-7-20-5+0-4+3+6+4+14+6-18 +hashblocks_sha512 15 472 2185 +31+41+11-1+0+76+67-14+0-11-18-26-10-13+8 +hashblocks_sha512 15 709 3606 +81+68+65+2-11+72-22-21+1-20-10+17-19-14+0 +hashblocks_sha512 15 1064 5729 +19+38+20+41-30+0-2-29+27+79-15+20-24-10-8 +hashblocks_sha512 15 1597 8598 -18+130+0+10-48-31+27-26-42+14+1-37-60+700+55 +hashblocks_sha512 15 2396 12874 +118+55+2+20+0-30+20-47-32+23-41-82-40-50+2 +hashblocks_sha512 15 3595 19958 +227+80-52-36+0-24+45-85-12-21+46+12+46+106-22 +hashblocks_sha512 15 5393 29938 +146+51+29+0+26+51-87-61-30-26-13+8-57-132+23 +hashblocks_sha512 15 8090 44838 +58-45-21-84+40+18+3+42-38+65+1+0-58-15-53 +hashblocks_sha512 15 12136 66879 +74-76+17-161+79-50+5+29-7-23-118-46+76+111+0 +hashblocks_sha512 15 18205 101001 +0-77-82-5+0+36+16+600-85-76+21+61-221-40+35 +hashblocks_sha512 15 27308 151376 +74-64+0+25-2+128+3-70+187-76-105+101-65+28-18 +hashblocks_sha512 15 40963 227431 +41453+38-190-92-25-162-157-26+216+103+73+15+62-41+0 +hashblocks_sha512 15 61445 341275 +18150+96-49+0+16+87+21-115+115-16-158-223+759-239-84 +hashblocks_sha512 16 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 16 0 121 +805+82+32+30+0+1+0+0-1-1+1+102-5-19-20 +hashblocks_sha512 16 1 86 +94+9+8+153+21-1+0+0+1-1+0+0+1-1+0 +hashblocks_sha512 16 2 89 +89+22+19+3-1+2-3+2+0+0-1+1+0-1-1 +hashblocks_sha512 16 4 90 +71+32+22+5-1-1+0+144+18-1-3+0+0-1-1 +hashblocks_sha512 16 7 89 +17+19+9+1-2-1+0+0+1+0+0-2+1+0+15 +hashblocks_sha512 16 11 87 +150+57+38+9+6+4-2+0+0+0+0-1-1+0-1 +hashblocks_sha512 16 17 87 +20+34+10+3-4-2-2-2-1+0-1+0+0-1+0 +hashblocks_sha512 16 26 100 +54+24+27+23+6+2+3+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 40 87 +63+33+25+9+1+2-1-1+0-2-1+0-2+0-2 +hashblocks_sha512 16 61 86 +25+143+35+20+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 92 86 +21+7+9+4+0-1+0+0+1-1+0+0+0+0+0 +hashblocks_sha512 16 139 1222 +1421+215+42+45+10-10+0-9+2-2-5-10+2-3-16 +hashblocks_sha512 16 209 1226 +128+81+24+16+1+4-5-13+0-2-4-8-1+2-2 +hashblocks_sha512 16 314 2354 +228+79+58+130-4+1-22+0-24+6-52-14-29-33+12 +hashblocks_sha512 16 472 3471 +243+62+46+0+30-21-2+173+62-17-18-33+16-6-9 +hashblocks_sha512 16 709 5777 +259+150-3+41+0-7+129-5-4+34+60-30+132-22-28 +hashblocks_sha512 16 1064 9158 +342-56+11-11+137-48-10+237-99+0+90-11-46+11+100 +hashblocks_sha512 16 1597 13735 +325+3+106-111+33-125-28-120+5-80+14-88+1-133+0 +hashblocks_sha512 16 2396 20528 +142+12+12-154+71+15-163+46-84+0-201+34-141-68-147 +hashblocks_sha512 16 3595 31749 +407+52+50+156-71-36-134+175-7-34-58-17+0+33+28 +hashblocks_sha512 16 5393 47554 +228+86+498-107+0-134+147-139+76-102+28-84-124+194-157 +hashblocks_sha512 16 8090 71320 +213-7+0-38+114-239-175-61+149-104+234+57+4+110-68 +hashblocks_sha512 16 12136 105894 +454+0-148-76-61-369-119+6-264+22+143-125+116+3+99 +hashblocks_sha512 16 18205 160004 +200-66+944-139-146+181-245-132+175-193+97+316-163+0+197 +hashblocks_sha512 16 27308 240208 +103-195+451+442+409-77-288+862+812-416-511-33+536+0-494 +hashblocks_sha512 16 40963 360398 +1003+603+224-217+1062+1177+246-24-11+40-576-378-391-486+0 +hashblocks_sha512 16 61445 541727 +1570+643-360-270+5+0-30+238+1454+741+1527-55-164-517-822 +hashblocks_sha512 17 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 17 0 52 +305+188+2+1-1+0+2+0+3+0-7-7-4-11-8 +hashblocks_sha512 17 1 51 +51+3+1+3+0+3+1+0-2-4-10-7+74-2+0 +hashblocks_sha512 17 2 52 +28+0+1+3+3+1+3-5-1-9-8-9-12+72-8 +hashblocks_sha512 17 4 52 +24+3+2+1+1+5+0+0-3-6-6-11-10-8-15 +hashblocks_sha512 17 7 51 +25+4+2+3+4+1+4+0-5-6-6-10-8-8-7 +hashblocks_sha512 17 11 50 +23+5+4+4+5+3+5+0-1-7-4-11-4-11-1 +hashblocks_sha512 17 17 50 +26+5+4+3+3+7+2-2+0-4-5-6-8-6-9 +hashblocks_sha512 17 26 52 +23+2+0+83+7+5-2+5+1-4-6-6-9-11-7 +hashblocks_sha512 17 40 52 +24+3+1+3+0+4+0+0-2-9-8-7-12-6-10 +hashblocks_sha512 17 61 50 +26+5+3+5+3+4+5+0-3-5-5-7-9-5-13 +hashblocks_sha512 17 92 50 +25+5+2+5+6+1+6+0-3-4-6-9-6-9-7 +hashblocks_sha512 17 139 1122 +685+121+53+30-8-7+2-2-13+0-13+6-16+3-5 +hashblocks_sha512 17 209 1116 +79-8+20+11+6-9-1+4-10-3-4+0-11+41+3 +hashblocks_sha512 17 314 2193 +147+115+29+38-9-8+17-22-9-4+8+1+0-7-14 +hashblocks_sha512 17 472 3265 +120+58+60+31-2+0+8+1-11-19+19-1-10-17-18 +hashblocks_sha512 17 709 5425 +84+43+7-8+9+20-3+0+36-42-13-15-17-24+6 +hashblocks_sha512 17 1064 8666 +92+11+27+30+27-58-20+80+0+10-70-8-10-1-66 +hashblocks_sha512 17 1597 12932 +120+32-10+0-34+15-45-30-18+4-16+0+49+33+29 +hashblocks_sha512 17 2396 19383 +144+86-47-6+7-96+15-3+56+4+29-66-1+0-104 +hashblocks_sha512 17 3595 30124 +242+16-46+0+46+15-51-82-1-51+118+40-129-17+73 +hashblocks_sha512 17 5393 45218 +396+36+0-25-44+73-75-189-90+18+48+10+40-85-76 +hashblocks_sha512 17 8090 67782 +319-44-4-33+93-51-49+55+60-163+63+95+113-20+0 +hashblocks_sha512 17 12136 101175 +80+34+5+14+168-102-37+150-183-210-111-150+0-8+78 +hashblocks_sha512 17 18205 152754 -62+246-131-8+50-118+155+121+23-9+72+0+107-210-135 +hashblocks_sha512 17 27308 228993 -78+0+24-350-11+37+95-475+508+32+92+13-23-29-466 +hashblocks_sha512 17 40963 343679 +2577-207-12-168+450+101+101+292+0-118-155+86+647-119-253 +hashblocks_sha512 17 61445 515764 +2289-140+101+2569+562-415+0-764+490-832-303-184-510+3442+626 +hashblocks_sha512 18 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 18 0 96 +717+94+26+14+20-10-2+110+12+0-4-6-8-8-10 +hashblocks_sha512 18 1 89 +89+55+8+4-2+0-2-2-4+0-5+2-5+0-5 +hashblocks_sha512 18 2 89 +89+45+9+4+0-2-5+2-3-4+0-4-2+0-2 +hashblocks_sha512 18 4 106 +15+16+4+2-1+0+1+0-1+0-1-2+0-2+0 +hashblocks_sha512 18 7 104 +17+18+6+3+16+4-2+0-1-2+0-1-2-1-1 +hashblocks_sha512 18 11 89 +68+34+7+3-3-2-5+2-3-4+0-5+1-4+0 +hashblocks_sha512 18 17 95 +25+28+17+3-3+0-2+1-2+13+1-6-2-3-3 +hashblocks_sha512 18 26 94 +63+15+4-1+0+0+0+0-1+1+14+1-3-2-2 +hashblocks_sha512 18 40 94 +26+29+17+5-1+3+0+2+0+13-4-3-6-7-5 +hashblocks_sha512 18 61 92 +28+30+21+5+17+5-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 92 97 +65+26+28+1+0-1-8+0-8+6+2-8-9-3-7 +hashblocks_sha512 18 139 1065 +889+191+75+110-8+12+74-15-4-28+60+0-17-15-22 +hashblocks_sha512 18 209 1067 +131+77+29+104+32+9-10-13-33+0-31+49-13-11-32 +hashblocks_sha512 18 314 2014 +225+154+101+10-26-34-26+62-15+8+0-34-25-33+66 +hashblocks_sha512 18 472 2954 +317+95+36+96-17-6-24+1-29+75-32-15+19-19+0 +hashblocks_sha512 18 709 4853 +278+84+57+56+5-5-15+87-36+0-23-10+59-21-49 +hashblocks_sha512 18 1064 7672 +344+0+98-56-12+75-63+106-5-32+64-14+51-17+72 +hashblocks_sha512 18 1597 11510 +227+7-75+2-115+6+54-140+50-87-29+72-48+0-109 +hashblocks_sha512 18 2396 17129 +295+105-31-51-3+99-98-24+66+0+25-118+72-47+19 +hashblocks_sha512 18 3595 26583 +447+0+29+28-89+61-65-35+62-10-42+11-1-75+130 +hashblocks_sha512 18 5393 39925 +356+19+122-1-2-58+1057-63-41+122-167+23+0-133+175 +hashblocks_sha512 18 8090 59840 +239-85+7+2-69-3+8-184+0-108+188+35+812-349-123 +hashblocks_sha512 18 12136 89031 +214+81+6-43-21-121-144-74+54-113+2294-100+127+0+270 +hashblocks_sha512 18 18205 134526 +386+73+0+96+171+14+150+1016-234-193-180-309-229-33-180 +hashblocks_sha512 18 27308 201164 +457+74+0+50+46+0-385-35-103-238+63-276-100+131-54 +hashblocks_sha512 18 40963 303452 +407+0+13-56+449-11-124-97+67+13+367-271+581-909-736 +hashblocks_sha512 18 61445 454779 +472-256-836+488+1154-51+95-207+188+701-301-738+0+199-458 +hashblocks_sha512 19 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 19 0 243 +430-6+18-9+9-4+0+9+0+9+0+0+9+9-5 +hashblocks_sha512 19 1 247 -14+14-18+10+5+9+1-9+5-17+0-4-8+5-13 +hashblocks_sha512 19 2 78 +21+1+1+1-1-5-9-6+1+0-10+6-4+1-4 +hashblocks_sha512 19 4 78 +27+4+3+0-4+0-3-5-9-8+9-8+2-4+1 +hashblocks_sha512 19 7 76 +3+0+0+0+0-1+0-5+1-12+9-2+1+0-1 +hashblocks_sha512 19 11 77 +42+3+1+1+2-1-5-4-4-8+7+0-2+1+0 +hashblocks_sha512 19 17 77 +10+4+3+2+0-1-3-3-5+2-2-4+6-4+4 +hashblocks_sha512 19 26 76 +35+3+3+2+1-1+0-1-5-6+0+1-3+7-3 +hashblocks_sha512 19 40 76 +11+5+6+0+4+0+0-5-5+3-7+8+0+0+5 +hashblocks_sha512 19 61 76 +0+3+6+2-1-1-1-4-6-1+2+0+4+1+1 +hashblocks_sha512 19 92 76 +32+3+3+1+0+2+0-2-5-6-6+6-1+0-3 +hashblocks_sha512 19 139 1056 +1000+61+20+7+12-11+2-1-2+5-7-8+0+0-10 +hashblocks_sha512 19 209 1064 +56-28+22-7-5-19+66-11-6-17+0+0+5+5+4 +hashblocks_sha512 19 314 2039 +56+30+37-12-15-7-7+22-25+1+17+0-31+2-5 +hashblocks_sha512 19 472 3016 +58+44+32-12+3-33-16-6-12+0+19+3+0+1-22 +hashblocks_sha512 19 709 4964 +112+39+20+3-1+4+19-12+0-22-12-39-21+11-14 +hashblocks_sha512 19 1064 7868 +231+47+76-4+4-6+2-27+0+19+21-27-6-4-3 +hashblocks_sha512 19 1597 11743 +36+70+0+22+69-20-16-22+19-58+58-4-18+59-10 +hashblocks_sha512 19 2396 17598 +5+50-4-77-71+0-34+56+28-6+48+47-35-28+33 +hashblocks_sha512 19 3595 27318 -36+15+101-13+209+65+23+0-12-70+53-57-13+58-11 +hashblocks_sha512 19 5393 40995 +92+29-10-61+24-43+63-22+38+71-64-44+0-99+49 +hashblocks_sha512 19 8090 61392 +75-12+50-12-56-113+772+144+0+120-3+141-63+98-67 +hashblocks_sha512 19 12136 91558 +23+112+103-45-89-31+33-191+0+185-157+76-9+9-133 +hashblocks_sha512 19 18205 138234 +2-236+101+2+5+81-6-146-93-106+0+32-88-78+669 +hashblocks_sha512 19 27308 207212 -72+259+72+0+65+107-152-131+321+109+216-136-47-58-2 +hashblocks_sha512 19 40963 311384 +5738+59+0-246-351-348-251+40+391-112+207-77+109-226+1614 +hashblocks_sha512 19 61445 469727 +11842-128+1-111+168+26+534+0-439+4-362+23-329-373-447 +hashblocks_sha512 20 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 20 0 99 +2422+110+49+39+5+0+0-3+9-8+0-2-2-2+87 +hashblocks_sha512 20 1 93 +97+29+20+5+0-3+0-3-3-2+11+8+0-4-4 +hashblocks_sha512 20 2 97 +104+26+14+3-1+1-1+0+0-1+12+8-1-6-6 +hashblocks_sha512 20 4 96 +61+28+17-2-5-5-2-4-4-7+0+10+0+0+1 +hashblocks_sha512 20 7 95 +63+28+18+0-5+1+0+4-4+10-5-8-5-9-5 +hashblocks_sha512 20 11 93 +60+30+19+0+3-1+5+3-2-1+14-6-3-2-3 +hashblocks_sha512 20 17 92 +58+30+21+1+0-1+6+0-1+3+0+13-3-5-2 +hashblocks_sha512 20 26 91 +65+34+22+20+3+0-1+0+0+1+0+0+0+0-1 +hashblocks_sha512 20 40 99 +54+23+14+0-1-6-6-3+0+0-2+13+5-8-1 +hashblocks_sha512 20 61 92 +19+31+18+2-1-5-1-9+18-2-4+9+12+0+0 +hashblocks_sha512 20 92 93 +57+30+20+0+0+8+0+0-3+5-1+12-7-1-4 +hashblocks_sha512 20 139 1058 +1654+228+31+14-5-17+9-14+0+4-20-20-1-13+3 +hashblocks_sha512 20 209 1062 +135+82+9+6+12-8+7-12+0-12-3-2-10+0-5 +hashblocks_sha512 20 314 2017 +262+78+27+45-11-26+10+115+24-7-11+0-24-15-12 +hashblocks_sha512 20 472 2941 +315+62+71-6-9+122-26-20+0-12+81+44-11-35+2 +hashblocks_sha512 20 709 4902 +364+0+40+45+89-29+17-18+72-24-19+113-39-31-6 +hashblocks_sha512 20 1064 7777 +315-24+82-116+61-75+0+98-39+73-43+56-56-30+46 +hashblocks_sha512 20 1597 11575 +302+17+63+26-29+17+46-201-2+0-162-17-15-94+4 +hashblocks_sha512 20 2396 17257 +381+60-25-55+79-52+33+84-26-15-32-41+59+56+0 +hashblocks_sha512 20 3595 26755 +518+92-30-94-91+90+5+40-101+19-25-34+0+54-74 +hashblocks_sha512 20 5393 40027 +333-4+55-90+0-187+103-11+34-59+53+14-59+122-39 +hashblocks_sha512 20 8090 60304 +128+87+0-118-163+49+9+6-186-4-89+741-28-118+20 +hashblocks_sha512 20 12136 89540 +399+117-70+183+0+88+89-52-71+23-146-90+117-19-150 +hashblocks_sha512 20 18205 135053 +499+144+32-92+135+0-119-31-136+119-97+233-90-25+63 +hashblocks_sha512 20 27308 203459 +200-300+0-180-56+46-38+116+124+178-66-318+158-72+198 +hashblocks_sha512 20 40963 304562 +1239-145+421-177+115+14+213+20-180+1736-197-26-143+0-54 +hashblocks_sha512 20 61445 456952 +337-255-18-112+0-292-221+2678-201+127+172+63+74+242-315 +hashblocks_sha512 21 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 21 0 248 +2890-6+4-10+4+0-14-5+8+0-10+9-19+9-10 +hashblocks_sha512 21 1 247 -30+0+1+5+0+1-13+5-9+14-8+0-151-169-176 +hashblocks_sha512 21 2 77 +23+4+4+0+1-3-1-8-7-4+0+1-1-3+1 +hashblocks_sha512 21 4 77 +22+4+0+2+0+2-4-2-6-3+3-2+0+0+1 +hashblocks_sha512 21 7 76 +24+3+5+1+2+0-2-5-4-1+2-6+6-1-1 +hashblocks_sha512 21 11 76 +24+3+3+1+7+0-2-5-4-1+0+0+5+0-1 +hashblocks_sha512 21 17 77 +22+4+0+2+0-1-3-5-5-6+0-3+1+2-2 +hashblocks_sha512 21 26 78 +22+1+0+5-1+0-2-7-9-4+0-1+0+1-5 +hashblocks_sha512 21 40 77 +21+3+4-2+1-1-2-3-8+4-3+0+1-1+1 +hashblocks_sha512 21 61 76 +24+3+3+5-2+0+1-5-3-2+3+0-1+0+2 +hashblocks_sha512 21 92 76 +39+3+2+7+6-1+2-1-5-6-2-1+1+0+0 +hashblocks_sha512 21 139 1074 +2933+59+13+0-4+0-6+1-11+2-9-23+0+0-6 +hashblocks_sha512 21 209 1060 +56-10-3+9+0+3+6-3+9-7+9+0-6+0-16 +hashblocks_sha512 21 314 2035 +87-15+33+22+22-22-4-5+10-8+9+7-9-23+0 +hashblocks_sha512 21 472 3013 +87+18+5+0-2+13-2-33+27-10+34-8-11-1+1 +hashblocks_sha512 21 709 4966 +130+0+25+5-12+19-8+34-60-7+12-41-59+0-34 +hashblocks_sha512 21 1064 7876 +101+5+13+1327+847+17-47-35-21+17-45-37-13-16+0 +hashblocks_sha512 21 1597 11808 +13+59-8-36+59+14+0-12-17+65-27-69+13+24-26 +hashblocks_sha512 21 2396 17649 -20+37+13-49+0-16+0+0+26-57-78+9-13+36-65 +hashblocks_sha512 21 3595 27359 +30-11+139-25-29+11+49+0-52+20-57-16+4+1-124 +hashblocks_sha512 21 5393 41031 -62-65+39+89+40+40+62-61-24-72-53+58-9+0+53 +hashblocks_sha512 21 8090 61406 -13-90+60+126-13+45-64+31+86-81+0+66+47-119-117 +hashblocks_sha512 21 12136 91593 +71+5+660+113+0-10-20+12+129-204-130-94-80+47-67 +hashblocks_sha512 21 18205 138191 -10-36-56+60-78+93+4+125-93+69-155-147+0+43+210 +hashblocks_sha512 21 27308 207515 +0+996+2642+532+101-217+35-575-82-25+72-341+3-240-133 +hashblocks_sha512 21 40963 311534 +5761-122+1126+735+29-132+17-84-29+0+325+52-223-148-98 +hashblocks_sha512 21 61445 469590 +6236-151+135-1+358+0-265-156+803-366+66+405+924-219-212 +hashblocks_sha512 22 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 22 0 87 +719+90+31+25+4+0-1+0+21-1-1+0-2+0-1 +hashblocks_sha512 22 1 88 +82+18+13-3+5+0+8-2-2-1+0-1+0-1-1 +hashblocks_sha512 22 2 107 +76+17+19+0+0+0+0+0+0+0+1+3-17-19-15 +hashblocks_sha512 22 4 87 +59+37+38+6+2-2-1-1-1-1+1-1+1+0-1 +hashblocks_sha512 22 7 95 +16+18+4-3+2+0-2-1+0-1+12+5-3-4-4 +hashblocks_sha512 22 11 90 +64+32+20-1+0+0-3+1-1-1-3+0+0-1-4 +hashblocks_sha512 22 17 95 +59+17+5-2+1+1-1-2+0-1+11+8-4-3-2 +hashblocks_sha512 22 26 86 +64+24+23+23+30+2+1-1+0+0+0+0+0+0+0 +hashblocks_sha512 22 40 104 +54+5+8+5-2+0+0+1-1+16-2-14-16-14-16 +hashblocks_sha512 22 61 92 +53+19+19+4-1+0-1-1-2+0-2+0-2+0-2 +hashblocks_sha512 22 92 88 +64+23+22+20+16+6+16+0-3-1-2-1-3-2-2 +hashblocks_sha512 22 139 1040 +1363+216+69+42-14+9+0-15-16+142-1+15-12-24-17 +hashblocks_sha512 22 209 1044 +148+69+21+18+0-9-7-6-15+147+4+1-12-6-11 +hashblocks_sha512 22 314 1989 +251+86+49+0-23-37+129-18-8-19-5-30+11+146+17 +hashblocks_sha512 22 472 2936 +303+3+26+7+7-47-29-34+137-55-30-17+0+99-35 +hashblocks_sha512 22 709 4856 +360+7+17+137-3-42-27+143-38+0-33+141-57-19+155 +hashblocks_sha512 22 1064 7779 +154+24-134+27-142+12-192+9-129+0-146+47-152-166+19 +hashblocks_sha512 22 1597 11544 +133-9+70+27-200+123-144+17+22-213+28-54-5-133+0 +hashblocks_sha512 22 2396 17148 +348-9+0+27-33-1-48+3+0+96+23-29-206+132-94 +hashblocks_sha512 22 3595 26647 +90+46-201+0+31+36-201+8-44-2-140+9+42-181-28 +hashblocks_sha512 22 5393 39813 +498-7-44+126-46-7+10-152-161+0+59-210+84+34+70 +hashblocks_sha512 22 8090 59606 +431+138-42+0-140-187+103+113+81-53+48-32-8+31-89 +hashblocks_sha512 22 12136 88916 +227-20+200+65+0-111+61+985+134-135+2104-284-33-85-72 +hashblocks_sha512 22 18205 133972 +403+394+117+145+0-26+254+70-60+16-103-253-282-97-158 +hashblocks_sha512 22 27308 200651 +179+8+97-248+717-3+0-287-166-94+562-2+847+169-20 +hashblocks_sha512 22 40963 301377 +722-468-386-141+192+834+198-210-262-62-94+237+119+56+0 +hashblocks_sha512 22 61445 452686 +3470-92-177+120+289-398-273-239+0+33+355+153+261-89-268 +hashblocks_sha512 23 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 23 0 324 +630-66-97+0-41+45+5-9+0+0+13+26-104-9+5 +hashblocks_sha512 23 1 315 -65-18+4+0+9+0+23-5+9+0+9+14-41+72-4 +hashblocks_sha512 23 2 98 +22-9-16-11+2+1+7-9+1+1+0-2+0-3-1 +hashblocks_sha512 23 4 96 +23-8-12-15+14+0+0+1+0+9-10+1+1+0-1 +hashblocks_sha512 23 7 96 +22-8-12-15+10-1+9-9+1-2-3+1+0+2+2 +hashblocks_sha512 23 11 94 +24-6-14-8+6+0+0+0+0+2+5+5+2+0+1 +hashblocks_sha512 23 17 96 -13-8-11-14+3+2+3+4+0+0-1-2+1+1+1 +hashblocks_sha512 23 26 96 +28-7-16-21+10+7+3+0+1+0+0+0+1+0-1 +hashblocks_sha512 23 40 96 +24-6-22+0+8-1+7+0+0+3+2-1+1+0+1 +hashblocks_sha512 23 61 96 +22-6-17-18+9-1+1+3+0-1+2+5+1-4+0 +hashblocks_sha512 23 92 97 +23-8-14-9+4-1-1+0+0+0+1+0+0-1-1 +hashblocks_sha512 23 139 1040 +1678+45-6-7+3+5-4+3+9-2+1-17-4-10+0 +hashblocks_sha512 23 209 1036 +41+110-14-17+0+1+0+7-6-3+16-7+33-2+10 +hashblocks_sha512 23 314 1980 +11+17-3+1-11+0+27-27+9-18-22-5+1-6+34 +hashblocks_sha512 23 472 2916 +85+25+45-14-15-10-17-32-8+13+17+24+0+37-6 +hashblocks_sha512 23 709 4804 +82+84+27-6-1-15+2-7+3+9+0-16+0-22-46 +hashblocks_sha512 23 1064 7632 +159+80+16-35-3+6+6+0-37-12-24+61-57+4-30 +hashblocks_sha512 23 1597 11393 +20+67+0-14-29-61-79+39-50+700+34-3+53-1+11 +hashblocks_sha512 23 2396 17043 +38-7+52+41+8-9-49-39+54-46-31-45+63+0+81 +hashblocks_sha512 23 3595 26449 +56-46-37+37+32-121-85+0+89+70+45-44-91+133-7 +hashblocks_sha512 23 5393 39638 +103+85+95-92+88+50-4-21-102+38-97+31+0-152-82 +hashblocks_sha512 23 8090 59393 -122+48-30+776+44-104+0-42-44-68+82-80+44+45+154 +hashblocks_sha512 23 12136 88554 +98+76-80-43+395+200-72+50+124+38+0-104-79-140-185 +hashblocks_sha512 23 18205 133685 +479+20-29-188+31-59-179+0-61+32-14+8+25-173+94 +hashblocks_sha512 23 27308 200404 -113-61+947+2047+181+231+69-12+801-38-274+0+58-222-197 +hashblocks_sha512 23 40963 301390 +5836-258-505-104-184-19+0-326+3276+872+149+171+47+627-74 +hashblocks_sha512 23 61445 453411 +5996+33+779+190-191+170-331-543+627-149-438+0+967-161-186 +hashblocks_sha512 24 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 24 0 92 +744+102+28+1+1-3-3+0+15+11-7-6-6-6-5 +hashblocks_sha512 24 1 95 +114+26+2+0+0-2-3-5+0-2-4+12+8-7-3 +hashblocks_sha512 24 2 90 +117+32+21+6+2+0-6-3-4-1+7+3-4-4-2 +hashblocks_sha512 24 4 93 +68+32+21+17-2+2-3-4-1+0-4+0-6+0-1 +hashblocks_sha512 24 7 97 +56+27+13+0+0-1-2-1+2-2-1+11-2+2-1 +hashblocks_sha512 24 11 92 +67+31+17+0-4-3+14+8+3-7-1-2+0-5+0 +hashblocks_sha512 24 17 93 +28+31+19+20+2-1+0-3+1-3+0+0-3+0+0 +hashblocks_sha512 24 26 98 +23+25+27+3-2+2-1-2+0-3+0+0-1-2-1 +hashblocks_sha512 24 40 90 +79+33+20+15+0-3+0+1-1-5-1+0+0-4+1 +hashblocks_sha512 24 61 97 +25+27+14-4+0+1-4+0-1+0+11+2-1-2+2 +hashblocks_sha512 24 92 93 +75+31+18+0-5+2+14+11-4-1-3-2-5+0-4 +hashblocks_sha512 24 139 1062 +1074+205+52+0+8-5+12-28-16-15-22-14-11+9+2 +hashblocks_sha512 24 209 1043 +164+113+15+16-15+0+11-17-14-18+2-5-3-13+8 +hashblocks_sha512 24 314 1995 +299+126+61+21-13-16-6+125+26-10-34-1+5+0-28 +hashblocks_sha512 24 472 2938 +356+135-18+7-15+117-2-37-27+0+121-8-28+6+15 +hashblocks_sha512 24 709 4870 +269+80+178+0+20-16+118-17+1-22-6-57-34-18+156 +hashblocks_sha512 24 1064 7712 +243+221-89+82-82-22+131+0+94-13-20+151-35+124-16 +hashblocks_sha512 24 1597 11562 +329-71+51+46-141-22+9-121+0-130+37+14-1-52+44 +hashblocks_sha512 24 2396 17189 +364-29+29-1+26+0+116-11+83+8-78+30-46-8-16 +hashblocks_sha512 24 3595 26679 +368-136+91+22-18-79-59-49+17+92-108+94-22+44+0 +hashblocks_sha512 24 5393 39975 +457+22-72+682-83+80+0-127+44-10-112+67-120+40-7 +hashblocks_sha512 24 8090 59955 +145+157+191+34-50+41-122+4+11-80-50-82-29-110+0 +hashblocks_sha512 24 12136 89238 +192+24+45-35-202-70+53-263+187+0+3-170-138+127-22 +hashblocks_sha512 24 18205 134968 +227+74+432+225-50+132+447+960-107+0-472-588-283-175-395 +hashblocks_sha512 24 27308 201760 +428+148+14+0+434+208-27+64-355-239-225-398-487-195+467 +hashblocks_sha512 24 40963 302822 +153-446-32-438-267-82-543+476+244-160+109+598+0+25+53 +hashblocks_sha512 24 61445 455773 +525+0+2+1118+574+436+200-84+386-933-920-1072-1228-1216-1000 +hashblocks_sha512 25 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 25 0 315 +333-94-24-9+18-40+54+4+43-111+23-108-13+9+0 +hashblocks_sha512 25 1 324 -72+41-59-13+13+9-13+0+13+95-90+13-4-9+4 +hashblocks_sha512 25 2 95 +33-12-10-20+3-1+1+0-2-1+2+1+0+2+0 +hashblocks_sha512 25 4 96 +22-10-10-20+1+1+3+3-1+0+0+2+0-1+0 +hashblocks_sha512 25 7 96 +33-7-14-6+2+0+2-1+2+0+0+1-1+3+4 +hashblocks_sha512 25 11 97 +22-8-13-18+10+0+2+1-1+1-2-1+0-2+0 +hashblocks_sha512 25 17 97 -15-9-12-16+12+5+2-2+4-1+2+1+0+0+0 +hashblocks_sha512 25 26 96 -12-9-9-12+10+2+1+1+0-1-2+0+1+0+3 +hashblocks_sha512 25 40 97 +21-12-9-20-1+1+0-2+1-3+2+0+1+1-1 +hashblocks_sha512 25 61 96 -10-12-5+1+2+2-1-2+2+0-1-1+2+2+2 +hashblocks_sha512 25 92 95 +23-9-9-18-2+3+5+3+3+0+1+0+4-2+0 +hashblocks_sha512 25 139 1051 +796+13-19-6-27-2+6+7+0-11-15+14-24+4+12 +hashblocks_sha512 25 209 1040 +1+127-12+14-10-4-7+22+5+11-14-16-15+0+16 +hashblocks_sha512 25 314 1985 +19+22+37+19-8-14-4+11+19-3-9+0+9-17-7 +hashblocks_sha512 25 472 2913 +80+9+25-38+19-15+45+25-4+0-3-16-4-8+12 +hashblocks_sha512 25 709 4806 +89+63-20+24+7+11-42+32-31+0-19-41+18-46-28 +hashblocks_sha512 25 1064 7629 +140+46+57-40+0+1-66-46+78-13+25-31-63-11+5 +hashblocks_sha512 25 1597 11406 +27+12+60+62-29+32+0-41-63-76-12+0-4+20-28 +hashblocks_sha512 25 2396 17051 +15+40+42+39-14-27-4-57-21+35-28+1-44+0+83 +hashblocks_sha512 25 3595 26489 +86-37-94-4+48+0-40+6+6+121-83+44-17+48-64 +hashblocks_sha512 25 5393 39641 +75-21-61-40+11+20-42-26+0+127-1+62+94+3-58 +hashblocks_sha512 25 8090 59537 -134-54-158+48+0+531+74-89+1905-75+79+83-182+3-10 +hashblocks_sha512 25 12136 88469 +150+58-231-74+0-77-40-111+76+141+104+177-204+23-23 +hashblocks_sha512 25 18205 133699 +84-197+25-9-213-26+83-89-43+54+3-16+0+775+91 +hashblocks_sha512 25 27308 200614 -85-128+2249+238-122-114-180+102+0+62-244+186+79-290+139 +hashblocks_sha512 25 40963 301223 +12404-25-148+0-63-2+312+71+35+292+310-87-76+151-102 +hashblocks_sha512 25 61445 453533 +14461+202-140+100+549+530+321+866-587-76-319+0-169-56-151 +hashblocks_sha512 26 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 26 0 91 +887+90+82+0+0-1-3+1+17-1-4+0+1-1-1 +hashblocks_sha512 26 1 89 +94+54+22+4+0-2+0+0-3+0+3+0+0+0-2 +hashblocks_sha512 26 2 90 +69+15+2+2-2+2+0+0+0+0+0-1+1+0+0 +hashblocks_sha512 26 4 97 +55+12+1-1+135+23+5-5+0-8-1-4-2+9-9 +hashblocks_sha512 26 7 89 +46+18+20+2-2+1+0-4+1-4+2-1-1-1+0 +hashblocks_sha512 26 11 87 +44+22+21+5+0+0-2-1+4-4+3-3+4-1-2 +hashblocks_sha512 26 17 95 +67+28+5-1+2-2+0-3+0-6+9+5-9-2-4 +hashblocks_sha512 26 26 95 +38+16+17+4+0-2-1-4+1+9+4-8-6-1-5 +hashblocks_sha512 26 40 93 +44+21+17+5+1+0+2-2+11-7-3-6-9-2-7 +hashblocks_sha512 26 61 89 +54+20+19+3+0-2-1-3+1-1-4+0+1-3-2 +hashblocks_sha512 26 92 89 +49+20+22+3-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 26 139 1241 +1757+229+105-7-5+15-10+1+11-7+64+0-7-9-12 +hashblocks_sha512 26 209 1240 +161+42+8+12+2-12-6+84-5-9+0-6+15-13-2 +hashblocks_sha512 26 314 2372 +254+122+46-5-14-3+27+0+12+86+21-16-6-10-11 +hashblocks_sha512 26 472 3501 +302+102+38+2-3+74-8-25-21+0-2+10-7-4+122 +hashblocks_sha512 26 709 5782 +358+48+32+14+151-10-3+0-10+0+71-7-34-38-18 +hashblocks_sha512 26 1064 9178 +270+96-24+105+0-15+105-33-26-27+68+15-19-5+108 +hashblocks_sha512 26 1597 13767 +207+9+61-73+4-45-94+42-56+0-90-45+82-37+19 +hashblocks_sha512 26 2396 20562 +236+55-112-16-68+0+4-89+6+56-111+45-27-124+25 +hashblocks_sha512 26 3595 31889 +286+14+101-132+200+0-26-27+6+24-72-124+18-21-16 +hashblocks_sha512 26 5393 47741 +380-48-49+0-98+149-125+111-55+62-66+127+69+78-8 +hashblocks_sha512 26 8090 71604 +123+0+56-67-17+239-119+99-50-79-44-134+51+638+66 +hashblocks_sha512 26 12136 106774 +88+70+35+0+115-86-40+25+19+229-273-278-311-428-440 +hashblocks_sha512 26 18205 160829 +269+0+276+299+238+2155-117-130-5-5-412-196-246+444+33 +hashblocks_sha512 26 27308 241537 +240+94-219-30-463+173-82-221+0+224-84-184+24+64+30 +hashblocks_sha512 26 40963 363043 +316+74-314-531-481-596-360+0-222+136+584-160+44+264+1074 +hashblocks_sha512 26 61445 545169 +101-547+248+171+260+165-315-30+0+84-30+2989-332-381-178 +hashblocks_sha512 27 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 27 0 50 +359+81+33+9+0+4-4-2-6+18-5-4-2+0-2 +hashblocks_sha512 27 1 50 +47+13+13+15+8+8+0+3+0-9+0-3-5-2-6 +hashblocks_sha512 27 2 48 +48+15+18+11+10+5+1-4+0-1-1-2-3+0-4 +hashblocks_sha512 27 4 49 +10+15+16+10+11+3-3-4+0-4-3-6+0-1-6 +hashblocks_sha512 27 7 50 +8+13+16+14+8+4+8+0-6-3-6-3-3-6-2 +hashblocks_sha512 27 11 50 +8+12+16+14+7+6+7+0-4-2-6-4-5-2-5 +hashblocks_sha512 27 17 48 +10+17+18+10+13+0+4+0-3+0-5+0-3+0+89 +hashblocks_sha512 27 26 50 +46+12+16+16+4+9-1+4-2-4-5-4-8+0-6 +hashblocks_sha512 27 40 53 +6+10+13+11+7+8+0+6+0-4-10-5-8-1-13 +hashblocks_sha512 27 61 56 +2+7+10+9+1+0+2+2-4-7-15-7-8-10-9 +hashblocks_sha512 27 92 51 +44+11+15+15+6+5+8-4-5+0-4-6-4-7-3 +hashblocks_sha512 27 139 1155 +1174+99+86+17+10+2-15-9-8-7+0-11-1+98-6 +hashblocks_sha512 27 209 1157 +148+33+18-4-9+0-6-14+14+3-9+14-5+2-8 +hashblocks_sha512 27 314 2256 +167+99-13-9+0-5-3+13+28+98+3+2-19-29-7 +hashblocks_sha512 27 472 3349 +151+6+24+42-14-16-16+18-13+8-13-13+0-11+0 +hashblocks_sha512 27 709 5547 +166+139+108-10+7-23+0+0-9-1+11-30-40+57+35 +hashblocks_sha512 27 1064 8896 +113-15+13+34+0-38+16+32+22-43-11-60+31-40-9 +hashblocks_sha512 27 1597 13329 +90-47+12-31+44-56-47+16+6-18+793-9-22+0+52 +hashblocks_sha512 27 2396 19968 +72+75-71+71+36+40-28+4-36-31-77-111-108+33+0 +hashblocks_sha512 27 3595 31007 +206+2+15-47-2+21-38-25-37+20+0-5-153+23+1 +hashblocks_sha512 27 5393 46447 +110-56+11+114-31-92+0+22+147+49-32-10-31+38-47 +hashblocks_sha512 27 8090 69581 +124-6+178-5-55-47-2+184+0+215+184+39-34+5-143 +hashblocks_sha512 27 12136 103816 +48-14-99-8-10+63-5-24+12-101+108+541+66+0+42 +hashblocks_sha512 27 18205 156852 -322-333+0-207-185-90+91-38+883+36+28+101-68+124+66 +hashblocks_sha512 27 27308 235129 -84+63-279+1062+43+17-17-177+106-151-257-165+109+77+0 +hashblocks_sha512 27 40963 352996 +648+287+1005+504-331-61+156+61-312+0-278-83+4-200-29 +hashblocks_sha512 27 61445 531288 +0-17-566-156-98-185+705+452+660+94+11+777+127-114-40 +hashblocks_sha512 28 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 28 0 91 +675+95+23+21+0-6-4-4+18-3-3+2+4+0-5 +hashblocks_sha512 28 1 94 +94+58+39+5+2-3+0+0+14+0-2-1-1-1-1 +hashblocks_sha512 28 2 88 +109+61+34+22+0-3+0+7-4-3+0-2-1-2+4 +hashblocks_sha512 28 4 88 +71+35+46+3-1+0-1-1-1-3+0+1+0-2+0 +hashblocks_sha512 28 7 87 +72+36+46+9+3+0+1-1+0-1+0-1+1+0+0 +hashblocks_sha512 28 11 88 +71+35+39+0+0+1-3+1-1-4+2-1-3+2-6 +hashblocks_sha512 28 17 91 +67+32+36+5+0-1-1-1-5+2+0-5+3-1-2 +hashblocks_sha512 28 26 88 +71+35+46+7+0-3-1+0-1+0-2-2-2-1+0 +hashblocks_sha512 28 40 93 +67+30+32+2-2-4+3-4+2-1-2+0-1-2+9 +hashblocks_sha512 28 61 93 +28+30+23+2-3-1-3+1+0-1+0+7+8-6-6 +hashblocks_sha512 28 92 88 +69+37+46+4-1-4-1+1+0+0-2-4+1+0+13 +hashblocks_sha512 28 139 2043 +849+420+155+38+9+34+0+75-14-6-28-8-6-5-12 +hashblocks_sha512 28 209 2057 +101+42+47+0+20-22+0+46-5-30-13-7-12-21+34 +hashblocks_sha512 28 314 4050 +132+27+9+96-33-7-24+69+0-21-67+2-15-53+34 +hashblocks_sha512 28 472 6012 +179+0+103-25+77-2-1-4-24-36+80+0+14-41+2 +hashblocks_sha512 28 709 9930 +159+181+62+0+19-7+5-121-4-11-110+0-138-36+10 +hashblocks_sha512 28 1064 15749 +337+123-7+0+34-28-2-100+19-18-105+3+27-27+51 +hashblocks_sha512 28 1597 23583 +114+88-148-65-79+67-20+0-8+105-25+43-36+16+57 +hashblocks_sha512 28 2396 35289 +353-103-221+23-31-70-38+120-94+56+56+0+21-85+13 +hashblocks_sha512 28 3595 54725 +302+78+71-159+21-88-78+0-123+52-161-30-132+56+80 +hashblocks_sha512 28 5393 82083 +148-33-185+27-106+0+162-109+102+77+124-38-90+27-1 +hashblocks_sha512 28 8090 123073 +349+0+169+198-50+182+142+53-98-54-80+146-101-199-58 +hashblocks_sha512 28 12136 183491 +322-117-133+216-78+579-157-11-22+371+150+239+16-91+0 +hashblocks_sha512 28 18205 277083 +417-50-270+66-12-332+17+115+864-186+160-281+0+129-175 +hashblocks_sha512 28 27308 415747 +218-121+0+322+819-40+261-22-16+66-306+218-445-1+439 +hashblocks_sha512 28 40963 623800 +0-687-901-741-1673-966+31-142+423+305+577+410-116+278+373 +hashblocks_sha512 28 61445 937282 -933-851+1058+795+1221+563-786+750+373+376-410+0-759-731-88 +hashblocks_sha512 29 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 29 0 47 +757+57+28+30+19-4+0-6-3+19-10+3-9-2-2 +hashblocks_sha512 29 1 47 +30+9+6+7+4+1-2-1-3+0-8-2-9+2-5 +hashblocks_sha512 29 2 49 +22+5+5+3+3+2+1+0-7-4-6-8-4-9-2 +hashblocks_sha512 29 4 47 +31+7+8+6+3+2+1-7+0-5-5-3-7-1-9 +hashblocks_sha512 29 7 47 +31+8+7+6+3+1-1+0-6+0-5-3-4-4-4 +hashblocks_sha512 29 11 46 -6+5+8+8+5+3+3+0-3+2-7-2-1-3-2 +hashblocks_sha512 29 17 47 -7+3+8+4+7+5+1-1-1-6+0-9-1-9+2 +hashblocks_sha512 29 26 45 -5+6+9+8+6+8+4-1+2-2-2-1-4+0-4 +hashblocks_sha512 29 40 47 +29+8+8+5+0+2+0-1-7+1-8-3-4-3-7 +hashblocks_sha512 29 61 45 +32+9+8+9+5+3+0+1-1-2-3-3-3+0-3 +hashblocks_sha512 29 92 49 +27+6+5+3+3+1+1+0-3-5+0-9-1-10-3 +hashblocks_sha512 29 139 1944 +654+165+108+46+3+0-24-49-57-57-57+11+19-65-128 +hashblocks_sha512 29 209 1790 +170+161+63+54-14+23-4-2-21-12+94+7-15-28+0 +hashblocks_sha512 29 314 3539 +282+45+0+120+75-16-1-34+186-7-4-45+55+141-25 +hashblocks_sha512 29 472 5363 +201-70+55+87-129-5-46-42+0+70+14+54-89+9-91 +hashblocks_sha512 29 709 8898 +23+19-70+26-55-127+0-89+25-100+27+5-42+60-21 +hashblocks_sha512 29 1064 14050 +82-17-111-11+188-13+52-49+18-58+0+10+40-52+98 +hashblocks_sha512 29 1597 21085 +269-28+154+106+37-161+24-46+16-16-8+0-95-171+41 +hashblocks_sha512 29 2396 31534 +46+43-144-52-19+0+45+33+38-80-106+32+73-70-42 +hashblocks_sha512 29 3595 49002 +397+65+0+29-30-113+335+76-20-144-69+93-32+43-18 +hashblocks_sha512 29 5393 73483 +175+29+0+222-59+230-6-42+13+164-104-83-91-48+144 +hashblocks_sha512 29 8090 110265 +12+15-224-283-284+949-1+29+0-108-201+2+123-14+57 +hashblocks_sha512 29 12136 164433 -137-161-152+61+37+268+0+92-115-245+36-83-93+123+121 +hashblocks_sha512 29 18205 248333 +4+588+148+217-166+104+233+0-549+265-93-150-473-515-363 +hashblocks_sha512 29 27308 372287 +475+797-58+64+0-392-268-100-326+364-457+21-28+296+1115 +hashblocks_sha512 29 40963 559282 +1578-38-471-138-336+300-385-325+239-189+151+0+395+122+939 +hashblocks_sha512 29 61445 839705 +1411-944-149+625-103+0+193-291+436+217-290-494+698-214+3318 +hashblocks_sha512 30 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 30 0 92 +1665+95+19+31+21+0-5-7+15-5-8-4-9-5+90 +hashblocks_sha512 30 1 107 +80+1+7+3+0+1+0+0+1-1-4-16-17-22-18 +hashblocks_sha512 30 2 108 +76+15+4+2+0-2+1-1+1+14-4-4-4-5-4 +hashblocks_sha512 30 4 107 +41+13+20+2-1+1+0-1+1-1+14-2-5-4-4 +hashblocks_sha512 30 7 95 +53+25+20+2+0-1+1+0+13+2-4-3-3-2-4 +hashblocks_sha512 30 11 93 +17+30+18+6+0+1+1+12-3-3-8-4-6-8-6 +hashblocks_sha512 30 17 96 +14+26+31+2+0+0-2-1+13+0-5-5-5-5-5 +hashblocks_sha512 30 26 95 +52+28+19+5-4+2-2+0+12+0-6-7-1-7-9 +hashblocks_sha512 30 40 98 +50+24+29+0+1-2+0+0-3+4+0-7-7-5-9 +hashblocks_sha512 30 61 106 +5+3+6+2+2+0+2-2+0+0+0+1+0+0+0 +hashblocks_sha512 30 92 108 +40+14+3+0+1-1+1-1+1+0-2-1-1-1-1 +hashblocks_sha512 30 139 1987 +800+220+57+54+29+5-10-32-24+29+0-43-78-70-96 +hashblocks_sha512 30 209 1837 +293+99+47+30+33-25-1-6+122-11+92+0-3-3-26 +hashblocks_sha512 30 314 3620 +385+206+17-44+161+0-1+36-15-43+213-26-30-5+102 +hashblocks_sha512 30 472 5331 +186+18+92-8+22+77-1-23+134-52-26+60-25-25+0 +hashblocks_sha512 30 709 8839 +54+25-81+12-123+150+8-115-10-114+19-54-25+0+1259 +hashblocks_sha512 30 1064 14056 +207+103+26+62+0-11-49+3-103+26-58+47-70+0-38 +hashblocks_sha512 30 1597 20996 +100-83+200-89+11-17-158+0+229+12-193+30-53-64+113 +hashblocks_sha512 30 2396 31541 +234-30+0+5-44-12-55+0+179-77-137+47+11+187-128 +hashblocks_sha512 30 3595 48721 +298-8-24+45-51+32-128+93+16-51+24+0-127-241+11 +hashblocks_sha512 30 5393 72913 +158+119-99-50+97-3+148+0-27-78-83+66+1+43-23 +hashblocks_sha512 30 8090 109424 +491+53-146-108-106+26+359+44-196+43-83-174+0+177-56 +hashblocks_sha512 30 12136 163030 +368-87+761+2126+201+0-42+39-127+92-166-155-29+59-161 +hashblocks_sha512 30 18205 246401 +192+105-17+23-231-191+0+94+743-337+247-101-485+111-234 +hashblocks_sha512 30 27308 369130 +212-78-138-607-137-320+823-76+0+43-64+68+16+50+627 +hashblocks_sha512 30 40963 554660 +3153+385+157+247-37+0-247+1042-405+1293-527+1379-846-956-413 +hashblocks_sha512 30 61445 831907 +239-402-136+43+33+2890-158-687-25+412+1348+2035-526-422+0 +hashblocks_sha512 31 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 31 0 243 +496-15+9+0-4+13+5-5+0-9+0-4+0-9+0 +hashblocks_sha512 31 1 76 +25+6+8+4+3-1+0-5-5-6+7-4+1+0-1 +hashblocks_sha512 31 2 76 +32+4+8+1+4+0+0-1-6-8+2-3+2+0-2 +hashblocks_sha512 31 4 76 -5+8+5+5+0+2-3-7-5+7-2+2-2+2+0 +hashblocks_sha512 31 7 77 -9+9+6+0+1+0-4-10-6+2-1+0-2+0-5 +hashblocks_sha512 31 11 76 -4+9+5+4+5-3-2-7-6+4-3+0+0+2-2 +hashblocks_sha512 31 17 77 -9+6+6+0+3+3-2+1-4-13-6+3-1+0+0 +hashblocks_sha512 31 26 77 +31+3+6+1+2+3-2-1-6-6+2+0-3+0-3 +hashblocks_sha512 31 40 76 +44+7+6+0+3+4-2-1-3-6+3+0+0+0+1 +hashblocks_sha512 31 61 78 +30+2+5+0+1+0-3-6-6-4+3-5+2-3-3 +hashblocks_sha512 31 92 78 -10+6+2+1+2+1-1-3-9-9+5-7+0-2+0 +hashblocks_sha512 31 139 2046 +686+102+17+18-33-11-14+0+7-31+12-31-9-12+0 +hashblocks_sha512 31 209 2026 +211+112+25+51+22+33-1-38-73-29-53-23+11-80+0 +hashblocks_sha512 31 314 3815 +232+131+42+46-14+11-32+15-17-13-30+0+34-25-45 +hashblocks_sha512 31 472 5685 +140+23-41-15+35-7-3+26+7+4+0-19-16-30+7 +hashblocks_sha512 31 709 9400 +64-23+107+10+22+22+0-10-66+8-24-76-31+115+0 +hashblocks_sha512 31 1064 14994 +349-20-12-65+0+8-113+42+118-49+28-65+5+50-75 +hashblocks_sha512 31 1597 22413 -22+38-61+199-26-79+7+66+177-96-31+98+0+30-51 +hashblocks_sha512 31 2396 33570 +157+8+29-170+19+17-183+0-96-68-56+74-100+33-100 +hashblocks_sha512 31 3595 52283 +105-154+194+2+170-23+51-51-91+51-174+54+0-117-95 +hashblocks_sha512 31 5393 78230 -107-106+188-106-104-48+0-89+21+62+65+78+11+1042-159 +hashblocks_sha512 31 8090 117360 +65-259+516-129-91+19+35-206-103-196+0+170+134-120+79 +hashblocks_sha512 31 12136 174980 +132+0-212-216-89-100-69+396-222+40+80+76+373-107+14 +hashblocks_sha512 31 18205 264158 +56+6+378+94-124-176-25-137+213+237-444+0-81+1343-818 +hashblocks_sha512 31 27308 396602 -210+428-640-136+147-322-44-782-415+671+399+163+0+301+19 +hashblocks_sha512 31 40963 595574 +16663+431+590+196-330-1078-365+0-228+962+607+30-130-263-336 +hashblocks_sha512 31 61445 894813 +12870-191-421-754+440-800+69-644+933-175+769+0-510+116+800 +hashblocks_sha512 32 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 32 0 104 +878+80+17+12+7-15-17-12+6-16-16-15-15+0+101 +hashblocks_sha512 32 1 88 +89+49+16+7+4+0+6+0-3-3-2-2-2+0-2 +hashblocks_sha512 32 2 88 +106+61+24+8+3+0-2+0-1-1+0-2-3+1+0 +hashblocks_sha512 32 4 92 +63+32+20+7+1+15+3-1-2-1+0-1-1-2+0 +hashblocks_sha512 32 7 88 +63+34+9+3+0+0+0+1+0+0-1+0+0+0+0 +hashblocks_sha512 32 11 93 +64+31+19+6+0-1+0+1+0+11-2-1-1-1-1 +hashblocks_sha512 32 17 95 +17+27+30+3+2+0-1+13+2-5-2-3-3-4-2 +hashblocks_sha512 32 26 95 +16+28+29+4+2-1-2+0-3+12+0-3-4-4-4 +hashblocks_sha512 32 40 93 +64+30+19+7+0-1+1+0+11-2-3-7-5-5-6 +hashblocks_sha512 32 61 94 +63+30+18+5+0+1-1+14+3-5-1-2-3-1-2 +hashblocks_sha512 32 92 93 +19+30+31+6+3+1+0+0+0-1+1+0+0-1+0 +hashblocks_sha512 32 139 1892 +944+387+246+184+113+72+0-5-58-36-42+61-8-19-54 +hashblocks_sha512 32 209 1862 +476+28+20-9+10+19-23-14+0+10+43-17-15-26-32 +hashblocks_sha512 32 314 3669 +342+73-22-17-27+38-26+0+8+21-38-17+11-35+36 +hashblocks_sha512 32 472 5383 +222+0+0+52-8+5+43-3-8+56-20-29+168-23-24 +hashblocks_sha512 32 709 8915 +251-33+72-48+168+84-146+61+4-35+0-56-12-37+80 +hashblocks_sha512 32 1064 14189 +315-3+44-18+46-113+0+77+51+49-2-89-25+79-87 +hashblocks_sha512 32 1597 21200 +382-4+21+152+23-75-106+0-15+14-96+10-85-85+218 +hashblocks_sha512 32 2396 31756 +311+19-38-53+32-176+50-33+0+69-38+25-86+1-66 +hashblocks_sha512 32 3595 49327 +259+134-82-51+17+0-103-41+102-75-26+4+31+53-116 +hashblocks_sha512 32 5393 73869 +305+592-192+146-116+101-51+125-41-77+47+0-196-226+24 +hashblocks_sha512 32 8090 110846 +324+11+115-84-60+42-40-148+0-275-60+155+79+55-101 +hashblocks_sha512 32 12136 165044 +615+26+0-285-148+37-389-32+1144+123-191-121+88+40-56 +hashblocks_sha512 32 18205 249396 +712-253-79+1041+138-62+68+143+32-184+0-13+3138-56-20 +hashblocks_sha512 32 27308 373950 -504+69-347-102-403-419+330-621+551+2429+0+69-30+13+89 +hashblocks_sha512 32 40963 561749 +386+1038+51+0+280+1261-139-503+2016-623+382-634-182-1085-733 +hashblocks_sha512 32 61445 842292 +4038+327+524+0+414+1064-340-82-1914-1480+363+305-456-494-969 +hashblocks_sha512 33 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 33 0 244 +522+0-1+3-5+3-5+3-1-10+13+3-1+4-10 +hashblocks_sha512 33 1 243 -15+14-14+5+0+0-5+9+5+4-4+4+0+5-5 +hashblocks_sha512 33 2 243 -17+0+4+5+4-4+4+5+0+4-4+0-14+9-4 +hashblocks_sha512 33 4 169 +55+92+74+79+69+83+83+0-89-94-91-93-93-88-93 +hashblocks_sha512 33 7 77 +2+6+3+4+5-6-5-5-2+0-1+2-5+3-8 +hashblocks_sha512 33 11 79 +2+4+5+0-2-3-7-9+1-9+0+1-6+0-4 +hashblocks_sha512 33 17 77 +2+6+3+4+0-2-4-10+5-5+2-3+3-3+0 +hashblocks_sha512 33 26 77 +2+6+3+2+3-2-7-8-2-1+3-3+0-2+0 +hashblocks_sha512 33 40 77 +42+6+2+2+3-3-3-8+2-5+0-1+5-3+0 +hashblocks_sha512 33 61 77 +43+7+3+3+5-6-3-4-7+2+1-1-2+0+0 +hashblocks_sha512 33 92 77 +6+5+6+1+4-2-3-6-3-3+3-7+0+1-2 +hashblocks_sha512 33 139 2043 +1845+123+107+20-6-16+11-10-7-4-11-40+11+27+0 +hashblocks_sha512 33 209 2065 +251+84+23-25+4+14+40+0-2+2-27-37-4-4-16 +hashblocks_sha512 33 314 4026 +355+94+76+84+68+0-3+23-5-63-33-60-52-13+6 +hashblocks_sha512 33 472 6018 +237+303+50-2+59+3-34+32+12-28+0-10-30-37-35 +hashblocks_sha512 33 709 9972 +391+128+27-12+64-69-1+22-89+45-71+21-35-6+0 +hashblocks_sha512 33 1064 15694 +655+156+76+3-11-85-56-34+0-17+18+19-17-36+22 +hashblocks_sha512 33 1597 22529 +350+55+43+5-59-31+0+36-54+73-100-106-87-68+12 +hashblocks_sha512 33 2396 33665 +32-114-25+74-47-24+87+3+91+92-31+0-62+4-110 +hashblocks_sha512 33 3595 52368 +70-121-216+23+151-73-3-182-161+21+75+0+34+30-253 +hashblocks_sha512 33 5393 78380 +9+0+13-153+158-340+36+72+33-242-328-106+66-33-39 +hashblocks_sha512 33 8090 117394 +797-107-169+21-330-52+162-235+122-33+0+23+188+87-90 +hashblocks_sha512 33 12136 175019 +87-195-248-190+130-336+5-308+0-71+62-225+112+74+235 +hashblocks_sha512 33 18205 263511 -47+383+210-69-73-254-236+0+159-193+188+174+136-516+211 +hashblocks_sha512 33 27308 395059 +618-28+0-68+355-315+139+373-5+46+1260-110-51+358-232 +hashblocks_sha512 33 40963 595138 +43195+0+1508+1624+564+1056+3480-48-467-637+121-379-671-760-1003 +hashblocks_sha512 33 61445 895785 +15064+255+705-174+358+1945+858-1495-1389-384-277-316+0-695+217 +hashblocks_sha512 34 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 34 0 94 +585+110+38+120+0+3+1-5+14-9-9-6-7-8-8 +hashblocks_sha512 34 1 92 +99+38+39+32+5+6-1+0+6-5-6-4-6-4-6 +hashblocks_sha512 34 2 87 +102+43+44+27+3-1-3+0-1+0-1+0+0-1-1 +hashblocks_sha512 34 4 88 +61+37+30+7-3-1-2+0-2-2+0+0+0-1-2 +hashblocks_sha512 34 7 87 +24+36+32+5-2+4-1+0+1+0+0+0-1+0+0 +hashblocks_sha512 34 11 87 +24+36+33+6+1-2-1-1-1-1+0-1+0-1+0 +hashblocks_sha512 34 17 87 +41+36+31+6+3-3+0-1-1-1+0+0-1-1+1 +hashblocks_sha512 34 26 92 +36+33+40+25+2-3+3+0+0-3+3-1-6-4-2 +hashblocks_sha512 34 40 86 +71+39+30+29+4+2-4+2-1+0-1+0-1+0+0 +hashblocks_sha512 34 61 87 +62+38+30+8-1-1+1+0+0+0+0-1-1+1+1 +hashblocks_sha512 34 92 89 +22+35+23+5-2+0-4-2-3+0-2-5+3-5+16 +hashblocks_sha512 34 139 2083 +667+139+17+36-32+15-32+26-72+0-76+1-90-104-138 +hashblocks_sha512 34 209 1889 +281+139+150+86+33+21+0-35-43-37-53+123-57-21-53 +hashblocks_sha512 34 314 3664 +430+245+50+8-16+72-37+6-24-14+53-31+0-24-36 +hashblocks_sha512 34 472 5402 +162+21+252-34-34+326-21-40+96-6+0+90-21-38+80 +hashblocks_sha512 34 709 8900 +359+47+81-30-23-47+53+64-87+0-37+94-83+59-47 +hashblocks_sha512 34 1064 14205 +148+91-77-106-117-44-124-3+11+0-171+75+51+43+70 +hashblocks_sha512 34 1597 21125 +265+156+49-20-99+136-122-111+0-179+77+96-30-45+140 +hashblocks_sha512 34 2396 31525 +366-43-11-75-220+0+39+14+74+21-62-138-73+143+13 +hashblocks_sha512 34 3595 49075 +315+49-28+121-83-68+88+48+13+0+20-107-69-35-145 +hashblocks_sha512 34 5393 73333 +451-161-48+266+0+173-92+91-9+1121-149-231+17+56-35 +hashblocks_sha512 34 8090 110004 -12+12+41-30+0-132+200+148-64-190+1-75+141+41-3 +hashblocks_sha512 34 12136 164241 +0-217+158-204+321-234+84-197-34-182-9+337+832+50+153 +hashblocks_sha512 34 18205 247408 +647-133+70+157-166+96-29+304-58-124-100+108+0-22+101 +hashblocks_sha512 34 27308 372598 +130+396+3+152+313-65-199+0-262-31+619-377+96-33-40 +hashblocks_sha512 34 40963 558642 +249-487-141+1508+162-162+144-481+34-701+234+463+0-321-194 +hashblocks_sha512 34 61445 837448 +45+0+132-246+778-1008+1223-877-500-618-340-1268+3063+820+428 +hashblocks_sha512 35 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 35 0 324 +419-98-35+76-59+23-23-4+0+0+0+18-5+0-13 +hashblocks_sha512 35 1 95 +181-3-3+13-8+102-13-10+3+8-2-1+0+5+1 +hashblocks_sha512 35 2 97 +24-10-12-13+7+0+94-18-21-1+3+1+5+1-3 +hashblocks_sha512 35 4 97 +19-6-13-9+5-3+1-3+0-1+3+5+2+7+0 +hashblocks_sha512 35 7 95 -7-8-13-5+2+102-12-17+8+2+6+4+0+1-1 +hashblocks_sha512 35 11 96 -15-7-21-3+7+5+0-1+2+4+0-3+6+1+6 +hashblocks_sha512 35 17 97 -9-9-17-8+0+97-13-12+4+5+3+1+3+2-1 +hashblocks_sha512 35 26 96 -14-8-19+2+11+6+1+2+1-1+0-1+0-2+2 +hashblocks_sha512 35 40 95 +14-4-15-5+0+9-8+2+1+4+0+4-2+0+0 +hashblocks_sha512 35 61 98 +11-10-14-14+4+0+2-1-1-2+2+0-1+1+3 +hashblocks_sha512 35 92 97 -24-7-18+2+1+0+3-2+0+0+0+0+2+1+1 +hashblocks_sha512 35 139 2058 +620+111+109+10+40-16-16+0+127+34+0-26-6-25-4 +hashblocks_sha512 35 209 2059 +151+28+11+21-15-10+10+0+32+2-22-73-70-57-64 +hashblocks_sha512 35 314 3948 +23+14+62-5+11+20+0-3+45-72-99+31-73-54-57 +hashblocks_sha512 35 472 5816 +804+8+0-9-32-4+61-1+30-63+17+134-75+31-75 +hashblocks_sha512 35 709 9609 -34+113+41-60+32+191-79+49-75+85-103+46-17-94+0 +hashblocks_sha512 35 1064 15325 -126+78-46+40+15+0-61-89+0-100+14+80-11-135+50 +hashblocks_sha512 35 1597 22903 +54+106-49+26+72+184+37-30-68-145+49-85-26-59+0 +hashblocks_sha512 35 2396 34309 +40+69+27+0+214-97-52-112-112+52-6+43-74-99+36 +hashblocks_sha512 35 3595 53281 +177-152+162-125+203+0-111-80+789+116+12-83-104+65-127 +hashblocks_sha512 35 5393 79746 -79+253-32+184+81+51-77-56+314-103+55+1804-99+0-247 +hashblocks_sha512 35 8090 119763 -26+0+72+183-201+542+15-2-132+28+9-182-53+126-95 +hashblocks_sha512 35 12136 178401 +125+161+361+174+23-22+0-96+300-371-220-12-182+97-136 +hashblocks_sha512 35 18205 269426 +2258-50+0+23-292-96+375-61+72-93+325-75+153-16+205 +hashblocks_sha512 35 27308 404074 +65+89+348+173+0-318-34-150-3-42+248+1728-60-571+87 +hashblocks_sha512 35 40963 608343 +12865-216-516+1060+30-449-874-1109-1262+331+417+0-140+2298+393 +hashblocks_sha512 35 61445 912456 +24505-528+729-300-589+2447-406+307-163+0-27+2210+939+360-362 +hashblocks_sha512 36 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 36 0 90 +702+92+37+22+0-3-5-1+19+0+2-3-4-3+10 +hashblocks_sha512 36 1 90 +109+39+21+5+4-6+4-6+1-5-3-5-5+0-3 +hashblocks_sha512 36 2 88 +112+34+22+8+1-1+0-1-1-2+1-2+0-2-2 +hashblocks_sha512 36 4 86 +115+43+25+7+4+0-3+2-1-1-2-1+0-4+0 +hashblocks_sha512 36 7 88 +110+41+147+21+16+2+1-2-2-3+0-1-4-3-2 +hashblocks_sha512 36 11 87 +115+42+24+10+0+5-2+1-4-1+0+0+1-2-1 +hashblocks_sha512 36 17 87 +114+35+25+12+0+4-2-3-2+2-1-2-4-1+4 +hashblocks_sha512 36 26 88 +113+41+23+6+0-4-2+0+0-2-3-3+0-6+0 +hashblocks_sha512 36 40 88 +113+40+23+8+4-2+0+0-4-1-3-2-3-3+1 +hashblocks_sha512 36 61 91 +73+40+21+2+2-8+1-6+0-4-4-5+1-4-2 +hashblocks_sha512 36 92 87 +74+38+40+2+1-1-1+0-1-4+2-1-3+0+1 +hashblocks_sha512 36 139 2067 +683+173+86+75+0+0-9-1-50+0-25+84+0-51-58 +hashblocks_sha512 36 209 1972 +344+158+79+32+0+1+18-30+50-45-52-104-118-120-132 +hashblocks_sha512 36 314 3662 +647+283+12+3+185-21-34-63+164+0-5-32-35+210-54 +hashblocks_sha512 36 472 5396 +148+149+13-43+145-22-29-26+298+0-38+239-40-34+162 +hashblocks_sha512 36 709 8939 +140+192-123+58-97-37+2-92+0-72+81-87+45-10+161 +hashblocks_sha512 36 1064 14169 +307+101-37+19+47-80+103-38-77-152-63+20+0-40+53 +hashblocks_sha512 36 1597 21135 +503-28-44-99+102+0-16-183+37+28+8+209-49+92-95 +hashblocks_sha512 36 2396 31580 +350+86+96-7+0-20+90-47+66-189-48+114+66-77-146 +hashblocks_sha512 36 3595 49047 +407+31+193-39-99+124-84+65-64-146-110+0+31-48+17 +hashblocks_sha512 36 5393 73548 +21+15-163-183-235-40+253+0+726-60+2634-141+13-151+48 +hashblocks_sha512 36 8090 110019 +368+36+64+243+232-93+0-171-183-126+23-123-166+26-132 +hashblocks_sha512 36 12136 164247 +274-182-454+29-353-225-300+0+18-267-212+743+251+8+98 +hashblocks_sha512 36 18205 248332 +506+23+0-275+92-48-437-308+332-285-337-133+92+691+367 +hashblocks_sha512 36 27308 371535 +624+270-71+0-17-62+264+296+109+46+1289-292-51-48-213 +hashblocks_sha512 36 40963 558608 -777-986-479+131+68+101+140+0+138+358-350+253-32-705-121 +hashblocks_sha512 36 61445 839450 +554-386-1853-1699+0-511-78-411+1080+693+1267+609+784-1598+234 +hashblocks_sha512 37 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 37 0 319 +749-62-100-22+14-13+1+0+5+16-83-22+91-18+1 +hashblocks_sha512 37 1 97 +26-16-15+1-1-2+1+2+3-1-2+0+1+0+0 +hashblocks_sha512 37 2 97 +23-16-13-1+0+0+0+3+2-3+1+1+2-2+3 +hashblocks_sha512 37 4 96 +21-5-15-11-2+2-1+1+0+3+3+1+2-1-2 +hashblocks_sha512 37 7 98 +19-7-14-10+4-4+0+0+0-1-6+1+3+9-2 +hashblocks_sha512 37 11 96 +23-7-18-1+4+0+0+4-1+7-1+6+4+7+0 +hashblocks_sha512 37 17 96 +23-7-18-1+1+2+4+0+2+1+2+0+0+0-2 +hashblocks_sha512 37 26 96 +24-9-14-6-1+1-1+2-2-1+3+2+0+1+3 +hashblocks_sha512 37 40 95 +25-8-13-5+0+2+0+3-1+0+4+3+5+0+3 +hashblocks_sha512 37 61 95 -13-10-10-14+0+3+10-8+0+2+2+3+3-1+1 +hashblocks_sha512 37 92 96 +24-9-18-3+0+6+13-10-1-2+8+2+2+3-1 +hashblocks_sha512 37 139 2102 +781+16+49+0-18-33-21-23+49+14-24-56+663+0+13 +hashblocks_sha512 37 209 2077 +195+115+5+15-20+4-4+19-68-59-23-60+0+10-1 +hashblocks_sha512 37 314 3924 +220+90+12+43+0+45+13-39-7-18-66+9-6-54-13 +hashblocks_sha512 37 472 5786 +247+0+68-3-17+117+46+103-10+37-15-35+129-26-96 +hashblocks_sha512 37 709 9619 +54+34+81-37+32-55+48-11-47-21-4+72+0+53-68 +hashblocks_sha512 37 1064 15332 +1+10+116-20-39+43+56-88+29-27-93-153+38+0-117 +hashblocks_sha512 37 1597 22908 +195+64-56-101-67+0-34+35+22+110+0-30-56+15+58 +hashblocks_sha512 37 2396 34321 -6-25+214-147+136+19-136+44+0-39-58+36+41-109+210 +hashblocks_sha512 37 3595 53205 +453-31+207+7-62+120+165+28+18-33-67-42-34+0-148 +hashblocks_sha512 37 5393 79816 +406-155+208+116-56-49-175-50-128+59-93+0+56+36+103 +hashblocks_sha512 37 8090 119689 +253+50+245-157+689-17-276+34-246+0+177-42-365+11-97 +hashblocks_sha512 37 12136 178538 +409+134+24+169-318-8-247+24-163+251-77+249-49-178+0 +hashblocks_sha512 37 18205 269825 +0+14-533+151+302+3-151-33+130-399-595-90+2087+401-408 +hashblocks_sha512 37 27308 404364 -577+0+14-152-418-18-675-464+352+420+736+2902-259+202+315 +hashblocks_sha512 37 40963 608307 +11857-1453+513-162+0-1044+575-569+1465+383+522+0-93-407-1130 +hashblocks_sha512 37 61445 912636 +15427-231-238+0+991+416-381-620+330-483+935-184-366+369+744 +hashblocks_sha512 38 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 38 0 92 +608+89+29+24+22+19-1-3+17-9+0-5-5-5-1 +hashblocks_sha512 38 1 95 +99+27+18+4-2-2+0+0-2-1-1+14+10-3-2 +hashblocks_sha512 38 2 96 +100+26+20+4-2-1-1+0-2-1+0+11+7-7-3 +hashblocks_sha512 38 4 87 +71+36+38+21+2-1-1+0+1+0+1+0-1+0+0 +hashblocks_sha512 38 7 88 +70+36+22+7-1+0+0+0+0-3+3+0+0+0+0 +hashblocks_sha512 38 11 86 +72+37+38+10+0+1-1-1-1-3+1-1-4+2-1 +hashblocks_sha512 38 17 88 +70+35+23+6+0+0+0+0+0+0+0+1-3+2-2 +hashblocks_sha512 38 26 90 +68+34+21+4+0-3-2-3-3+1+0-2-2+0+0 +hashblocks_sha512 38 40 88 +73+35+23+7+2-1-2+0+0-2-2-2-4+0-4 +hashblocks_sha512 38 61 100 +58+23+26+9+5-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 38 92 85 +74+39+40+22+4+4+0+0+0+0+0+0-3+3+0 +hashblocks_sha512 38 139 2131 +711+422+152+82+33+7+10-47-58-66-73+0-98-67-104 +hashblocks_sha512 38 209 2080 +85+5+71-4+2-51-42+61-20+0-24-13-44+45+2 +hashblocks_sha512 38 314 4035 +199+20+15-32+75-3+62+0-6+14-16+58-14-13-56 +hashblocks_sha512 38 472 5990 +256+22+81-34+0+53+1-22+70-49-33+43-16-24-36 +hashblocks_sha512 38 709 9921 +121+82-31+0-47+36-66+91-69+64-60+25-121+27-121 +hashblocks_sha512 38 1064 15806 +68-104+8+23-27+42+32-46-107+9+20-104-34-44+0 +hashblocks_sha512 38 1597 23586 +203+161-46-48-18+28-14-10+53+9+0+180+83-60-17 +hashblocks_sha512 38 2396 35306 +157+158-66+48+25-54+666-21+0-3-94-54+66-215+4 +hashblocks_sha512 38 3595 54724 +69-52-64-67+172-25+18+14+113-33-20+0+24-15+126 +hashblocks_sha512 38 5393 82115 +301+110+20+0-41+210-70+1207+918-91+75-57-97-81-22 +hashblocks_sha512 38 8090 123120 +282+0+231-51+68-15+140+46-145+139-172-57-15-71+65 +hashblocks_sha512 38 12136 183566 +295-3-149+229-52+955+54+110-224+98-68-127+0-155+78 +hashblocks_sha512 38 18205 277506 +161-87-227+85-182+142-89+0+871+1759-315+14-31-292+56 +hashblocks_sha512 38 27308 415918 +82+0+605+536+391+1824-659-334-251-464-312-68+105-757+284 +hashblocks_sha512 38 40963 624449 -274-350-1213+551+0-191+3086+92+99+8+82-264-383-112+828 +hashblocks_sha512 38 61445 937643 +261+453-563+67+396-64+1135+248-1691+359-1326-550-301+0-143 +hashblocks_sha512 39 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 39 0 54 +996+104+37+33+5+2+0-4-4+7-8-6-5-3-4 +hashblocks_sha512 39 1 62 +96+2+3+0+5+1+3+3-3-6-1-9-19-10-12 +hashblocks_sha512 39 2 61 -15+0+2+4+4+5+3+6+0-3-1-8-8-12+17 +hashblocks_sha512 39 4 63 -11+0-2+1+3+2+2+2+0-1-7-8-16-13+15 +hashblocks_sha512 39 7 63 -15-3+0+0+3+2+1+4+0-4-2-10-11-11+9 +hashblocks_sha512 39 11 58 +31+1+7+5+3+2-2+0-3-8-9-10-8-9+17 +hashblocks_sha512 39 17 62 -14+0-3+4+3+4+2+4+1-3-2-9-13-10+13 +hashblocks_sha512 39 26 59 +26+5+3+5+5+0+0+0-5-6-8-7-9-8+13 +hashblocks_sha512 39 40 57 +36+7+5+6+6+6+0-2-2-7-13-9-7-9+19 +hashblocks_sha512 39 61 62 -8-3+1+2+4+4+3+4+0-3-4-8-11-9+9 +hashblocks_sha512 39 92 58 +31+2+5+4+5+0+0+0-3-8-7-12-9-7+24 +hashblocks_sha512 39 139 1943 +732+231+84-1+27-27+15-9+0-21+58-44+11-58-107 +hashblocks_sha512 39 209 1810 +82+28+3-3+82-16-5-9+0+20-5-21-30+135+13 +hashblocks_sha512 39 314 3578 +385+103+32+17+140-29-49-85+46-14+0-53+143-70-40 +hashblocks_sha512 39 472 5373 +99+86-35-48+60+95-58-35-59-66+12+46-56+0+34 +hashblocks_sha512 39 709 8858 +95+11-43+0+3-56+87-47+94-59-4-53+35+55-84 +hashblocks_sha512 39 1064 14124 -19+0+15-18+29-41-12-35+64+111-98+40-53+33+25 +hashblocks_sha512 39 1597 21223 -114-130+65-170-73-57-124+91+38+0+19+49+113-134+108 +hashblocks_sha512 39 2396 31593 +125+5+5+144+89-108-37-136-61+37-40-62+0-63+35 +hashblocks_sha512 39 3595 49272 +363+165-110+33-251-101-85-146+86-122+57+157+143-37+0 +hashblocks_sha512 39 5393 73656 +199+275-1+99-6-42+120+0+75-95-160-64-53+144+86 +hashblocks_sha512 39 8090 110647 -241+11-231+817+78-113-47+95-209-294+101+41+0-105+90 +hashblocks_sha512 39 12136 164921 +464-30-240+734-44-179+3-155-126+122-105+243+0+241+301 +hashblocks_sha512 39 18205 249113 +690-157+290-134+375-248+79-70-25+213-185-69+101+0+203 +hashblocks_sha512 39 27308 373551 +1798+122-646+25+132+169-80-174-451-13+0+161+212-428-69 +hashblocks_sha512 39 40963 561155 +649+831-159+375+616+1006-205-263-467-346-445+0-574+358+330 +hashblocks_sha512 39 61445 843101 +108+2208-177-1222-323-1299-1247-1739+2649+0+344+111+50+433-1217 +hashblocks_sha512 40 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 40 0 109 +1122+94+16+92+3-2+3+0+4-17-16-18-18-15-19 +hashblocks_sha512 40 1 91 +85+37+4-1+0-1+0+0+1+0+0+1+1+0+1 +hashblocks_sha512 40 2 93 +46+28+7+1-2-2-1+0+0-2-1+0+0+0+0 +hashblocks_sha512 40 4 92 +10+23+23+3+0+0+0+0+0+0+0-1-1-1-1 +hashblocks_sha512 40 7 91 +8+22+13+8+6+0+2+1+0-1+0-1-1-1-1 +hashblocks_sha512 40 11 93 +9+28+17+72+5+10-2-2+1+0+0+0-1+0-1 +hashblocks_sha512 40 17 93 +9+23+20+1-2+0+0+0+0+0-1+0+0+1+0 +hashblocks_sha512 40 26 92 +48+29+29+24+7-1+0+0+1+0-1+0-2+0+1 +hashblocks_sha512 40 40 96 +48+20+17+0-1+0-5-4+17-7-6-3+1235+6+8 +hashblocks_sha512 40 61 92 -1+28+16+14+9-1-1-2+21-3-1+1+0+0+0 +hashblocks_sha512 40 92 92 +11+31+21+0-2+1+1+0+0+0-1-1-1+1+1 +hashblocks_sha512 40 139 2099 +453+138+30+11+0+12-30+40-18-48-44-24-40+50-18 +hashblocks_sha512 40 209 2143 +97+60+7+25-8+23-34+16+0-32-35-67+30-42-56 +hashblocks_sha512 40 314 4200 +119+2+36+3-19+83-3-100-96-52+5+16+0-84-77 +hashblocks_sha512 40 472 6181 +199-71+0+69-110-60+72-28+4-37+48-2-15+12+24 +hashblocks_sha512 40 709 10112 +215-80+161+0+15-36-5+100+23+99-91-18-33+9+0 +hashblocks_sha512 40 1064 16199 +305+215+164+0+80-36+47-61+85-115+41-190-219-16-120 +hashblocks_sha512 40 1597 24131 +166+169+94-35+68-38+0-30-74+31-100+71+34-123-35 +hashblocks_sha512 40 2396 36240 +527+32+131-337-28+118+182+0-122-200+6+146-145+0-29 +hashblocks_sha512 40 3595 56186 +479+722+2443+298+77-190-139+91-59-202+0+105-63-54-94 +hashblocks_sha512 40 5393 84190 -172-95+28+98+166+0+138-84+8-198-368+199+15-142-76 +hashblocks_sha512 40 8090 126041 +95-3+262-432-190+0-161+143-12+602+1920+2652+388-180-307 +hashblocks_sha512 40 12136 187836 +2096+0-73+98+377+315+14-215-140+97-300+429-302-37-10 +hashblocks_sha512 40 18205 284136 +724+1061-98-126-280+371+140-519+331+0-42-73-189+308+228 +hashblocks_sha512 40 27308 426080 +647-795-143-92-470+523+914+0+604+499+213+196-576-918-1454 +hashblocks_sha512 40 40963 639834 +169+851+915+798+456+0+383-811-139-713+645-1544-982-680-1323 +hashblocks_sha512 40 61445 959434 -1448-1602-545-551+755+3120+318-271-173+1639+353+15-220+0+4148 +hashblocks_sha512 41 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 41 0 48 +379+35+3+5+3+0-1-3-3+15-3-4+0-6-6 +hashblocks_sha512 41 1 48 +39+5+6+8+4+3-2+8-12+0-3-3-6-6-1 +hashblocks_sha512 41 2 53 +35+0+1+0+0+0-4+0+0-19-4-10-11-10-2 +hashblocks_sha512 41 4 49 +38+6+3+8+4+0+5+2-12-3-6-8-4-5-6 +hashblocks_sha512 41 7 51 +35+2+4+3+2+4-5+0+4-16-1-4-12-5-12 +hashblocks_sha512 41 11 51 -1+0+3+3+83+7+4+2+0+0-3-7-4-9+71 +hashblocks_sha512 41 17 50 -1+3+2+5+3+0+1+1-2+0-5-1-5-8-3 +hashblocks_sha512 41 26 47 +38+5+8+7+8+2+7-5-1-3-3-5-1-4+0 +hashblocks_sha512 41 40 51 +36+2+2+4+2+0+0+0-6-3-12-4-12-4-9 +hashblocks_sha512 41 61 49 +38+6+3+7+2+6+3-4-7-1-9+0-8-4-10 +hashblocks_sha512 41 92 51 +0+1+0+2+2+1+0-3+1+0-2-8-7-9-7 +hashblocks_sha512 41 139 1751 +216+85+38+43+1-14+2-20-22-2+0+40-17-6-13 +hashblocks_sha512 41 209 1742 +124+45+30+11+2-12+76-9+0-6+0-11+10-10-2 +hashblocks_sha512 41 314 3463 +206+66+41+30+14+33-22+0-12-59-24-47-53-11+41 +hashblocks_sha512 41 472 5181 +172+7+56+50+63-41+0+50-35-64-21-34-38+72-35 +hashblocks_sha512 41 709 8619 +236+56+24-5+80-6+48+0-46-25+78-5+139-15-30 +hashblocks_sha512 41 1064 13810 +132+61+14+20-59+0+44-55-111+10-54-31-33+6-107 +hashblocks_sha512 41 1597 20685 +252+52+198+82-134+51+71-78-45-102+0-68+4-103-94 +hashblocks_sha512 41 2396 30965 +342+128-1+15+38-23-57-42+0+38-62+76+14-3-34 +hashblocks_sha512 41 3595 48126 +314-22+108+735-27+46+104-148-114+4+0-39-39+57+0 +hashblocks_sha512 41 5393 72211 +625+468-48-173+37-74+0-98+70+116-51-116-140+10+84 +hashblocks_sha512 41 8090 108224 +484+0-32+161-94+61-38+41+42+5-32-29+1-42-36 +hashblocks_sha512 41 12136 161295 +240+0+1092+88+645-227-77+32-22-68-100+100-52+156-98 +hashblocks_sha512 41 18205 243618 +410-161-66+14+339+99-14+167+0+151+1332-12-14-22-50 +hashblocks_sha512 41 27308 365761 +77-453-156-339-120-108+140+167+20+402-233+0-88+497+89 +hashblocks_sha512 41 40963 549188 +1112+969-213+0-279-351+3-346+100+463+241-115-109+52-248 +hashblocks_sha512 41 61445 824134 +1572-21+0+160+356+429-127-571-74-328+146+870-39-31+721 +hashblocks_sha512 42 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 42 0 92 +595+140+68+27-1-2-1+118+14+0-2-1-1+0-2 +hashblocks_sha512 42 1 92 +96+38+13+9-2+1-1+0-1-2+0-1-2+0-1 +hashblocks_sha512 42 2 91 +88+26+35+12+6+0+0-1-4+0+0-1+0+0+0 +hashblocks_sha512 42 4 99 +46+18+21+2+1-2-2-4+0-2-4+0-2-4+0 +hashblocks_sha512 42 7 106 -3+15+26+4+4-1+2-1+0-2-1-1+0-1+5 +hashblocks_sha512 42 11 106 -4+15+20+2+3+3+0+1+4-15-16-17-16-16-14 +hashblocks_sha512 42 17 106 -1+15+27+3+5+0+1+0-2-1-1+0-2+0-2 +hashblocks_sha512 42 26 98 +46+18+16-2-2+1-1-2+5-2+0-4+6-3+1 +hashblocks_sha512 42 40 92 +62+24+32+7+0-1+0+0+0+1-1-1-1+1-1 +hashblocks_sha512 42 61 91 +54+25+37+13+9-1+0-2+0+2-2-1+1+0+0 +hashblocks_sha512 42 92 94 +10+25+18+3+4+0-1+1+0+0+0+0+0+0+13 +hashblocks_sha512 42 139 1856 +393+159+43+103-15+42-21-7+0-22-42+52-15+4-19 +hashblocks_sha512 42 209 1847 +184+21+10+0-14+65+1-16-41-34-34+47+3-21-27 +hashblocks_sha512 42 314 3601 +228+91+109+23+0+75-62-44-73+143-63-78-3-71+32 +hashblocks_sha512 42 472 5397 +172+48-38+37-84+19-69+48-70+19-47+0-14+14-34 +hashblocks_sha512 42 709 8841 +143+75+53+0-12-82+1-7-87+99-5-28+0+12-103 +hashblocks_sha512 42 1064 14062 +272+11+46+3+8-14-63+35-44-48-49-21+82+0-37 +hashblocks_sha512 42 1597 21022 +171-51+4+0-6-102-76-5+38-47-52+22+56+23+47 +hashblocks_sha512 42 2396 31375 +245-22+80+16+48-21-49+58-9-19+0-100-63+18+74 +hashblocks_sha512 42 3595 48689 +384-118+146+7+0-25-4+8-8+15+36-43-39-19+55 +hashblocks_sha512 42 5393 73043 +172-35+105-55-103-22-88+49-106+0+20+197+0+164-96 +hashblocks_sha512 42 8090 109455 +111+66-6+812+26-11-46-44-126+57-87+0-103+4+91 +hashblocks_sha512 42 12136 163237 +690-126-219+103+68+0-23+99+62+124-143-167-14+2238-202 +hashblocks_sha512 42 18205 246326 +1133+25+295-80+35-221-449-91+134-87+0+295-82-89+125 +hashblocks_sha512 42 27308 369281 +1203+1968-157+147+10-113-80-70+0-7-106+344-33+862+629 +hashblocks_sha512 42 40963 555779 +160+812+2054+240-527+915-450-262-44-521-180-144+0+943+1263 +hashblocks_sha512 42 61445 833637 -9-272+272-358+0+384+89+121+772-841-169+1244-160-541+301 +hashblocks_sha512 43 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 43 0 247 +647-10+1-4+14-9-4-4+1-4+0+5-4+10+0 +hashblocks_sha512 43 1 252 +14+9-4+4-13-5+0+5-14+5-9-5-4+0+4 +hashblocks_sha512 43 2 252 -18+9-14-13+4-22+13+5-18+9-9+4+0+0-4 +hashblocks_sha512 43 4 76 +36+5+1+7-1+1-1+0-4+0-1+46-13-2+4 +hashblocks_sha512 43 7 77 +2+5+1+0+2-3-5-4-2+0+1-4+2-2+0 +hashblocks_sha512 43 11 76 -1+5+3+2+0+0+0-7-9-3+5+0+1+1+2 +hashblocks_sha512 43 17 76 -2+5+3+5-1+2+0+1-7-6+6-3+5-5-1 +hashblocks_sha512 43 26 77 -2+4+1+4+0-2-1-7-7+1+0+0+0-1+1 +hashblocks_sha512 43 40 77 +37+4+3+3+2-1-5-2-4-4+3-1+1-2+0 +hashblocks_sha512 43 61 77 +38+4+3+3+2-3+0-2-10+3-4+0-1+0-2 +hashblocks_sha512 43 92 76 +33+7+0+6+0-1-2-3-5+4-1+3+1+0+1 +hashblocks_sha512 43 139 1656 +372+62+77+13-2-15+0-18+26-14-30+12+15-9-15 +hashblocks_sha512 43 209 1637 +121+13+25+16-18+10+72-11-5+7-15+0-15-23-3 +hashblocks_sha512 43 314 3224 +92+12+61-6+12+92-8-68-13+33-68-61+0+11-38 +hashblocks_sha512 43 472 4787 +246+3+37+8-3-5-31+33-12-44+25-47+89-11+0 +hashblocks_sha512 43 709 7970 +55+63+32+0+49-15-29-85+7-9-55+74+57-4-15 +hashblocks_sha512 43 1064 12673 +55-36+46-161-68-143-40-48+0+77+60+125+129+93-61 +hashblocks_sha512 43 1597 19040 +79-120+49-47-42+104-214-143+15-91-141+736+0+46+8 +hashblocks_sha512 43 2396 28432 +152+175-113+0+108+54+28+148+98-3-84-79-3-39-10 +hashblocks_sha512 43 3595 44219 +717+49+101+17+79+204-101-10+85-42-328+0-125-69-208 +hashblocks_sha512 43 5393 66337 +133-114+0-56-27+38+33+25+2182+81-25+44-19-57-113 +hashblocks_sha512 43 8090 99347 +36+184+197-90+93-19-23-52+37-38-46+0+149-12+213 +hashblocks_sha512 43 12136 148014 +76-153+208+0-7+668+292-221-69+121-115+395+271-62-86 +hashblocks_sha512 43 18205 224067 -117+79+92-291+381+70+0-398+142-731-128-312+960+2584-267 +hashblocks_sha512 43 27308 335973 -10-508-152-346-277-434+348+290+781+760+1838+1202+521+0-547 +hashblocks_sha512 43 40963 505060 +3252-741-807+568+236-738-942+249+0-580+178-657-718+3575+1480 +hashblocks_sha512 43 61445 760169 +3189-121+343-1190+728-483+822+486+736-379+0-1549-30+535-1530 +hashblocks_sha512 44 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 44 0 92 +533+96+38+23-1-1+116+7+21+0+0-1-2-1+0 +hashblocks_sha512 44 1 111 +79+6+0+4-2-2+3-3+0-2+12+1-2-2-4 +hashblocks_sha512 44 2 114 +76+10+13+85-4+0-3-4+3-6-4+2+0-20-21 +hashblocks_sha512 44 4 92 +61+31+42+1-1+1+1+0+0+1-1-1-2+0+0 +hashblocks_sha512 44 7 92 +24+23+51+93-1+1-1+0+0+1+0+0-1+1+0 +hashblocks_sha512 44 11 92 +19+32+48+0-1+1-3-1-1-2-1+1-1+1+1 +hashblocks_sha512 44 17 92 +20+31+27+1+0-1-1+0-2+0+0+0+0-1-1 +hashblocks_sha512 44 26 91 +21+26+8+3-1-1+0+0+1+0-1+0+92+0-1 +hashblocks_sha512 44 40 92 +59+29+49+0-1-1+0+0-1+0-1-1+0-1+0 +hashblocks_sha512 44 61 98 +12+20+7+13+1+1+0-1+0-2+10-5-7-2-5 +hashblocks_sha512 44 92 92 +19+29+52+0-1-1+0+0+1+0+0+0+1+0+0 +hashblocks_sha512 44 139 1899 +342+140+57-42+25+50-54+40-72+0+44-54-50-61-86 +hashblocks_sha512 44 209 1848 +128+0+80+6+56-5-30-22-13-8-17+111+59+57-25 +hashblocks_sha512 44 314 3631 +191+40-9+34+4-81+0+39+130-5+0-71-84-87+45 +hashblocks_sha512 44 472 5449 +161+9+71+52-24-96-30-1+32+31-13-99+0-109+62 +hashblocks_sha512 44 709 8889 +284-59+190-23-43+27-64+201+0+8+15-11-33+29-13 +hashblocks_sha512 44 1064 14272 +115-2+91+32-9+184+15+0-122-179-128-253+138+23-59 +hashblocks_sha512 44 1597 21278 +340+0+60-8+18-145-68-191+52+9+27-77-70-6+234 +hashblocks_sha512 44 2396 31842 +281+58+0-61-426+92-54+76+296-124-238-206+119+83-118 +hashblocks_sha512 44 3595 49381 +42+118-82+187-24-135-193+104-66+0+151+5-130+135-143 +hashblocks_sha512 44 5393 74278 +88+11-74-425-241+407-62+204+0-75+631-642-258+219+132 +hashblocks_sha512 44 8090 111464 +208-497+890+113-634+103-35-136-341+400-450+0-249+130+194 +hashblocks_sha512 44 12136 165973 +193+0+381+147+314+154+922-989+88-210-851-407-1402-416-551 +hashblocks_sha512 44 18205 250179 +0-645-602+35-961-539-748+565-857+272-670+761+163+1996+415 +hashblocks_sha512 44 27308 375445 -117+18-122-1006-243-800-459+0-848+2005+948+489+867+366+952 +hashblocks_sha512 44 40963 565172 +1043+60-1437-676+526+561+1590-1153+309+846-1242-1016-2258-302+0 +hashblocks_sha512 44 61445 847303 +976-589-778+188+737+1125+196+1423-1374-1871+167+0-619-1378-446 +hashblocks_sha512 45 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 45 0 252 +1021+10+40+77-9+4-9-4+0+0+9+0-23-9-4 +hashblocks_sha512 45 1 79 +21+34+31+0+0-9-8-4-5+0-5+4-11-5+4 +hashblocks_sha512 45 2 76 +24+25+24+0-8-2-8+10-8+8-6+4-5-1+6 +hashblocks_sha512 45 4 76 +22+29+16-1-2-3-12+1+1-2-1+7-7+0+0 +hashblocks_sha512 45 7 75 +23+29+25+1-2-4-5+0+1-2-2+7-7+12-7 +hashblocks_sha512 45 11 76 +24+29+16-2-3-3-6+5-8+3-1+1-1+0+2 +hashblocks_sha512 45 17 77 -8+30+20-2-7-9+0-8+5+2-4+3+1-3+1 +hashblocks_sha512 45 26 75 +29+33+30-1-3-3+0+4-8+13-8+7-7+9-8 +hashblocks_sha512 45 40 75 -4+30+26+0-3-5-6+10-7+6+0+2-5+5-1 +hashblocks_sha512 45 61 75 -6+2+7+3+1+0-2-2-6+14-9+0+6-6-6 +hashblocks_sha512 45 92 76 -10+26+5+3+0-2-2-3-4+0+0+3-4+3-1 +hashblocks_sha512 45 139 1667 +360+30+22+6+22+46-10+0-37-23+13-63-25-3-58 +hashblocks_sha512 45 209 1645 +53+3+28-20-9+23-15-31+1-32+56-12-12+0+11 +hashblocks_sha512 45 314 3223 +114+17+19+115-60-9+88-54-13+29-2+47-16+0-19 +hashblocks_sha512 45 472 4785 +195+30+100-14+0+81+12-45-71-25+121-75+10-32-4 +hashblocks_sha512 45 709 7962 +171+213-39+69-90-11-59-11+59+0+99+0-5-36+10 +hashblocks_sha512 45 1064 12672 +145-93-33+16+48-83+39+36-80+146-94+0-11+175-32 +hashblocks_sha512 45 1597 19011 +292+61+126-80-144+204+130-156-73+63-104+8-48+0-48 +hashblocks_sha512 45 2396 28501 +22+3-109+41-67-299+0-164-228+42-145+124+113-177+50 +hashblocks_sha512 45 3595 44326 +379-327+302+195-49+101+108+121-397-192+247-578-14+0-78 +hashblocks_sha512 45 5393 66193 +0-4+186+83-241+5+134-37-140+442+156-34-134+44-168 +hashblocks_sha512 45 8090 99053 +826+455+317+39-326+28-241+1042-103+0-243-436-404+585-207 +hashblocks_sha512 45 12136 148159 -820+335-182+304-507+531-98+61-99+186+1+2253-207-314+0 +hashblocks_sha512 45 18205 222875 +1059+828-57-72+426+451-343-357+285-1442+880+530+0-538-739 +hashblocks_sha512 45 27308 334830 +497-526+3879+1816+1145-95-187+180-1417-272-45-52+0+97+55 +hashblocks_sha512 45 40963 502243 +3595+1891-929-873-286+715+1640-729+2097-956-581+0+1499+1127-573 +hashblocks_sha512 45 61445 759152 +1956-349-891-2622+184-421+0+1704+857+845-1005-1232+299+177-126 +hashblocks_sha512 46 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 46 0 108 +598+82+11+8+5+5+0-17+5-16-15-15-15-15-15 +hashblocks_sha512 46 1 100 +97+54+28+28+23-1-4+109+0+7-9-7-9-11-5 +hashblocks_sha512 46 2 97 +81+57+35+35+33+1-1+0+0+10-6-7-7-7-7 +hashblocks_sha512 46 4 95 +55+51+30+33+2+4+0-7+0-4-1-5+10-3-3 +hashblocks_sha512 46 7 98 +38+55+33+33+0+1+1-2-1-1+0-2-1-1-1 +hashblocks_sha512 46 11 97 +5+52+35+34+2+4+0-1+0+0+0+1-1+0+0 +hashblocks_sha512 46 17 97 +8+51+34+36+3+4-2-4-1-4-1-4+0+4-6 +hashblocks_sha512 46 26 96 +34+51+29+32+1+2+0-1-1+0-2+0-4+0-3 +hashblocks_sha512 46 40 99 +6+25+9+3+2-2-2+0-2-4+0-4-1-5+0 +hashblocks_sha512 46 61 94 +9+33+12+7+4+1-4+0-3-1+0-3-6+2-4 +hashblocks_sha512 46 92 99 +5+23+31+17+0+1+0-3-5-3-5-1-6-2+6 +hashblocks_sha512 46 139 1917 +309+164-37-39+30-67+10-60-96+3-63+12+705-71+0 +hashblocks_sha512 46 209 1874 +89+16+75+0-48-46+54-12+86-22+73+62-42-58-47 +hashblocks_sha512 46 314 3651 +173+142+76+114-34-34-73+19-103+87-54-62-115+0+53 +hashblocks_sha512 46 472 5460 +258+10-164-2+68+167+14-114-3-78+0+99+0+34-41 +hashblocks_sha512 46 709 9005 +81-56-114-51+181-167+99+27+64-19+0+1-46-89+83 +hashblocks_sha512 46 1064 14284 +398+213+90-79-44+74-99+0-80-51-85+3+25-10+136 +hashblocks_sha512 46 1597 21373 -16-55+163-174-125+91+134-28+83+23-93+144+126-198+0 +hashblocks_sha512 46 2396 31835 +382-156+118-216-130+58-34-71+219+151+353-27-196+0+133 +hashblocks_sha512 46 3595 49527 -34+89+134+17+72-134-6+201-33+183-137+0-33+202-11 +hashblocks_sha512 46 5393 74039 +103-153+136+150-214+36-139+0-280+110-139+799-58-13+94 +hashblocks_sha512 46 8090 111259 -342-221-334-433+362+357-103+2469-79-479+0+297+17+130+16 +hashblocks_sha512 46 12136 165963 +224-140+0-514-33+297-94+447+19+563+383-79+424-527-290 +hashblocks_sha512 46 18205 250099 +1354-367-64+1315-197+429-598+752-213+67+764+738-213+0-636 +hashblocks_sha512 46 27308 375586 +1321+2738-131+197-565+1260-32+0-1007-635+311-272-111+308+903 +hashblocks_sha512 46 40963 563756 +510+425+2076+503+1337-1040-2368-1638-1274-1540+156-1287+139+0-669 +hashblocks_sha512 46 61445 845568 -777-1231+826+2988+1434+2814+2551+960+3336+0-502-853-947-1191-1264 +hashblocks_sha512 47 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 47 0 324 +373-105-23+39-99-9+0+0+0-9-13+0-14+5+0 +hashblocks_sha512 47 1 324 -100-45+18-14+9-9+5+0-9+0+4+0+5+4+0 +hashblocks_sha512 47 2 324 -100-45+18-14+9-9+9+0+0+0+0+0-4+0+4 +hashblocks_sha512 47 4 95 +25-6-14-13+1-1+3+3-1+1-1+0+0+0-1 +hashblocks_sha512 47 7 96 -9-11-13-9+3-1+0+2+2+2-2+2+0+0+0 +hashblocks_sha512 47 11 96 +19-16-14-1+1+2+0-2-1+2+1+0-2+1+0 +hashblocks_sha512 47 17 96 -11-9-14-9+2+4-1+0+0+1+2+1+3-1+0 +hashblocks_sha512 47 26 96 -9-15-13+3+1-2+4-1+0+1+1+0+0-1+1 +hashblocks_sha512 47 40 96 -11-17-16+4+4+3-1+2+0+0-1+2-1+1-1 +hashblocks_sha512 47 61 98 -10-19-15+1-1-2+0+1-1+0+1+0+0+0+1 +hashblocks_sha512 47 92 96 -7-11-13-9+3+4+1+2-1-1-1+1+0+3+1 +hashblocks_sha512 47 139 1693 +434+33+32+118+36-20-17-23+7-14-23-14+47-52+0 +hashblocks_sha512 47 209 1688 +94+2+0+38+9-19-31-5-2+76+23+17-2-18-2 +hashblocks_sha512 47 314 3304 +87+52-25+78+25-36-34+36-17-52+0-12+5-31+17 +hashblocks_sha512 47 472 4898 +100+0+50-50+25-38+45-19+0-34+76+25-76+63-73 +hashblocks_sha512 47 709 8168 +62+32-12-45-58-17+23+72-46+72-71+72+0+72-38 +hashblocks_sha512 47 1064 13028 +197-23+77+0+48-33-3+76-91+18-7+123-43+57-69 +hashblocks_sha512 47 1597 19431 +103+105+0+47-76+67+5-130-60+103-12-55-126-102+49 +hashblocks_sha512 47 2396 29122 +44+107-98+0-70-110+63-209-22-68+208-59+523+61+40 +hashblocks_sha512 47 3595 45145 +176+83+237+36+148-41+191+0-214+61-180-13-71-35-249 +hashblocks_sha512 47 5393 67700 +216-112+0-79-62-223+181-20+282+87+107-8-171+101+145 +hashblocks_sha512 47 8090 101718 +74-110-46+158+44-11-211+105+81-128+0-55+280-314+73 +hashblocks_sha512 47 12136 151636 +106+83+53+624-48-122-67-87+0+311+352-374-55-213+161 +hashblocks_sha512 47 18205 228934 +98+185-463-520+213+0+159+188-296+113+311-632-448-196-80 +hashblocks_sha512 47 27308 343366 +976+280+1378+220-521+171-357-466+883-610+364-62-381-129+0 +hashblocks_sha512 47 40963 515143 +10311-566+1020+182+596-301-6-774-514-651-577+1567+1139+123+0 +hashblocks_sha512 47 61445 775907 +3913+134+536-50+670+1275-229+940-393-272-840+0-225+517-415 +hashblocks_sha512 48 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 48 0 93 +489+85+22+20+1-2+0-1+19-1+0+0+0+0-1 +hashblocks_sha512 48 1 96 +108+55+15+0+116+5+10+0+5-6-3+0-2-1-2 +hashblocks_sha512 48 2 94 +103+56+16-3+2-1-2+0-4+1-6+2-5+2-2 +hashblocks_sha512 48 4 91 +70+11+18+5+0+1+1-1-1-1+0+0+0+0+1 +hashblocks_sha512 48 7 91 +20+13+18+5+0+1-1+0-1+0+1+0-2-2+1 +hashblocks_sha512 48 11 93 +74+24+18+14-3-1+0+0+0+0-1-2-1+0-1 +hashblocks_sha512 48 17 91 +25+11+17+7-2+0+2+0+1-2+2-1-1-1+0 +hashblocks_sha512 48 26 96 +14+29+36-2+6+0-3+0-3+0-2-1-2+0-3 +hashblocks_sha512 48 40 95 +19+11+16+2-1-2+0-2+1-2+2-2+6-4-3 +hashblocks_sha512 48 61 96 +14+29+35+0+1-5-4-2-9+2-8+0-7+0-6 +hashblocks_sha512 48 92 92 +79+12+18+3-2+0-1+1-3-1+0+0-2-2+6 +hashblocks_sha512 48 139 1905 +290+146-6-47+48+29+28-55-48-79+0+50-43+19-40 +hashblocks_sha512 48 209 1853 +151+112+19+0-19-20-26+60+21+2+0-8-15-5-6 +hashblocks_sha512 48 314 3681 +125+31+51+58+27-96+10-116+3-120+0-106-24-38-112 +hashblocks_sha512 48 472 5474 +131+115-11-37+7-15-24+119-79-108+0+70+8-79+32 +hashblocks_sha512 48 709 8999 +71+2+3+0+106+41-87-106-91+45-88-103-51+41-88 +hashblocks_sha512 48 1064 14318 +202+0-32+3+149-93-151-28-88-222+1+99+19-117+38 +hashblocks_sha512 48 1597 21290 +158+7+187+154-74-132-115+0-13-99-76-187+178+53+83 +hashblocks_sha512 48 2396 31953 +749+37-50-213+0-11+0-7-37+162+17+566-318+65-105 +hashblocks_sha512 48 3595 49418 +124-89-2-80+89+11-64-103+0+4+87+46-47+78-128 +hashblocks_sha512 48 5393 74072 +425+155-120-147-62-390+389+0+413-7+403-201+525-20+413 +hashblocks_sha512 48 8090 111135 +261-36-16+345-231-137+39+269-19+0-126+391+202-426+424 +hashblocks_sha512 48 12136 165663 +1286-332-346+261-518-217+135+0-111+35-351+359+97-1+40 +hashblocks_sha512 48 18205 250132 +570+547+1503+92+946+0+754-44+730-1254-351-1189-494-1135-847 +hashblocks_sha512 48 27308 373683 +0-248-541-179-567+1312+310+280-466+1093-685+521-472+13+53 +hashblocks_sha512 48 40963 564252 +310-672+295+52+524-1378-568+1232-272-226+417+0+15-404-473 +hashblocks_sha512 48 61445 846325 +0-458+467+553-112-1159-1388-2324+210-960+2364+912+1605+1683-1042 +hashblocks_sha512 49 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 49 0 319 +1095-64-117+73-76+38-90+41+32-13+0+1-4+0+1 +hashblocks_sha512 49 1 96 +56-3-13-15+0+2+2+1+0+0-1+5+0+6+2 +hashblocks_sha512 49 2 96 -13-9-14-8+5+10-9+2+1+0-2+1+1-1+2 +hashblocks_sha512 49 4 97 -10-18-14-1-4+2+0+1+1+1+2+2-1+0+0 +hashblocks_sha512 49 7 97 -10-7-16-16+2+1+1-3+1+1+0-1+1+2-1 +hashblocks_sha512 49 11 95 +23-5-16-5+7+4+0-2+1+1-1+5-1+0+1 +hashblocks_sha512 49 17 96 -8-13-13-10-1+0+2+0+2+0+1+1+2+2-1 +hashblocks_sha512 49 26 97 -11-13-15-10+1+0+0-2-1-1+1+1+2+0+0 +hashblocks_sha512 49 40 97 -11-8-18-10+2+0+2-2+3+1+1-4+7+6+0 +hashblocks_sha512 49 61 96 -11-17-13+0+0+0+2+1+2+0+1+2-4+6+7 +hashblocks_sha512 49 92 97 -9-12-15-9-2-2+1+0+4+0-2+3+1+3+2 +hashblocks_sha512 49 139 1687 +502+33+45+0+7+70-27-10+7-19-7-20+57-14-11 +hashblocks_sha512 49 209 1693 +36+21-6-2+3+58-34-6-13-7+3+2-6+84+0 +hashblocks_sha512 49 314 3290 +38+43+46+78+9-16-33-42-38-18+18-53-42+0+55 +hashblocks_sha512 49 472 4919 +96-9+80+0-48+19-14-78+90+10-46+57-106+76-13 +hashblocks_sha512 49 709 8160 -82-20+65-29+67-119+63+42-63+0-89+37+37-71+49 +hashblocks_sha512 49 1064 13025 -26+68-11-24+37+15-26+25-56+2+15-109+51-96+0 +hashblocks_sha512 49 1597 19468 -31+25-75-99+152+4-95+99+0-39+49+68+90-47-90 +hashblocks_sha512 49 2396 29153 -57-27+48-46-109+38-50-19+5+105-37+94+34+160+0 +hashblocks_sha512 49 3595 45285 -50+113+14+38+55-66+0+65+105-73-31-16-136-107+30 +hashblocks_sha512 49 5393 67810 -8+35+211-109+863+140+2209+102-72+71-53+0-19-105-110 +hashblocks_sha512 49 8090 101584 +273+168-17+167+0-26+221+60-161+77-10+143-92-95-99 +hashblocks_sha512 49 12136 151647 +115-72+22+0-325-223-164+89+242-243+538-261+696+482-414 +hashblocks_sha512 49 18205 229005 +2196+342-263-83-214-128+42-254-11-191+52+233+0+438+34 +hashblocks_sha512 49 27308 343190 -373+889-1-195-493-12-599+469+0+75+117+59+1248+2683-67 +hashblocks_sha512 49 40963 515755 +3504-632+0+334+71+914+26+53-267-600-286-218-318-935+1323 +hashblocks_sha512 49 61445 775822 +4365+200-113-21+651+1302-227-272+1852+776-515-868+0-63+163 +hashblocks_sha512 50 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 50 0 92 +438+245+33+35+2-2-2+0+21-1+2+0+0+0+0 +hashblocks_sha512 50 1 91 +111+39+10+6-3-1+0-3+2-2+0+0+5+0-1 +hashblocks_sha512 50 2 92 +111+31+33+6+5+5-1+0-2-3-1+0-1-2-2 +hashblocks_sha512 50 4 95 +16+21+30+1+2-1+0+8+8-2-3-2-2-4-2 +hashblocks_sha512 50 7 95 +17+29+30+5+7+0+0-3-1-2-3-1-3-3+0 +hashblocks_sha512 50 11 95 +17+28+30+5+7+0-2-1-1-4+0-4-1-3+0 +hashblocks_sha512 50 17 91 +21+32+34+9+10+1-1-1+0-1+1-2+0+0-2 +hashblocks_sha512 50 26 94 +18+30+31+6+5+5-2+0-2-1+0-1-2+0-2 +hashblocks_sha512 50 40 95 +65+23+23+8+1-2+0-3+1-1+10-5-4-5-5 +hashblocks_sha512 50 61 94 +71+22+31+2+3-3-5+0-3+1+11-4-1-2-2 +hashblocks_sha512 50 92 95 +17+29+30+3+12+0+1-2-1-1-1-1-1-1+12 +hashblocks_sha512 50 139 2097 +295+174+47+90-15-18+20-9+0-24-5+73+0-5-7 +hashblocks_sha512 50 209 2090 +178+24+25+28+14-6-11+98-10+0-14-21-24+0+93 +hashblocks_sha512 50 314 4080 +254+89+42+47+1-14+0+62-15-32-10-37-11-43+90 +hashblocks_sha512 50 472 6151 +171-49+85-34+94-46+48-58-21+58-25+46-39+0+61 +hashblocks_sha512 50 709 10143 +111+62-85-8-75+13+46-129+1-8-84+0+22-138+22 +hashblocks_sha512 50 1064 16074 +141+27-13+51-29+92+0-55-14-31+8-16+32-17+15 +hashblocks_sha512 50 1597 24089 +175+113+17+98+50-18-41-67+21-106-74+50-104-14+0 +hashblocks_sha512 50 2396 36043 +172+24+0-2-8+6-42+73+80-5-29-33+45+101-17 +hashblocks_sha512 50 3595 55853 +150+37+7-72-55+0-52+3+19-74-94+90-44-30+821 +hashblocks_sha512 50 5393 84004 +453-88+50-134-104-114+16-57-78+95+0+112-15+899+4 +hashblocks_sha512 50 8090 125639 +0+148+76+21-10-206-92+2203-25-105+169+209-33+67-229 +hashblocks_sha512 50 12136 187042 +432+96+110+1139-94-211+49-196-122-108+0-47+22-82+249 +hashblocks_sha512 50 18205 282809 +391+206+218+104+212+0+136+3076-165-145-223-565-714-398-484 +hashblocks_sha512 50 27308 425031 -21-263-85+633+23+230+71-35-66+110+0+296-215-205+79 +hashblocks_sha512 50 40963 638458 -814+1182-319-108+129+818-1+0+274+117-11+325+426-1459-1369 +hashblocks_sha512 50 61445 956036 -284+863+80-131+31+66+921+470-155-140-91+560+0-1893-2241 +hashblocks_sha512 51 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 51 0 55 +396+94+48+7+7+3+0-6-7+7-8-9-9-7-7 +hashblocks_sha512 51 1 54 +95+9+12+12+7+4+5-1-3+0-5-5-3-3-6 +hashblocks_sha512 51 2 53 +74+7+9+13+7+8+5+0+0-4-2-5-3-3-2 +hashblocks_sha512 51 4 51 -6+10+14+7+12+4+0-1+0-2+1-3-2+0-1 +hashblocks_sha512 51 7 52 -7+8+14+8+8+4+2+0-1-1-1-1-1+0-2 +hashblocks_sha512 51 11 56 -6+4+4+9+6+3+0-3+2-8-5-6-5-7+36 +hashblocks_sha512 51 17 53 -4+9+6+12+9+4-1+2-1-2-4-3+0-5+38 +hashblocks_sha512 51 26 53 -4+7+10+12+9+8+4-1+0-5-3-4-5-7+28 +hashblocks_sha512 51 40 52 +34+8+11+9+10+5+0-3-6-6-2-2-4-6+18 +hashblocks_sha512 51 61 52 -2+7+11+9+9+4-1+0-3-5-3-4+0-4+27 +hashblocks_sha512 51 92 54 -9+7+11+6+9+6+2+0-3-4-6-4-4-2+30 +hashblocks_sha512 51 139 1752 +271+77+50+125+4-2+0-11+4-15-29+0-4-19+6 +hashblocks_sha512 51 209 1747 +129+3-6-12+6+16+6-3+18-17+0-8-6+10-9 +hashblocks_sha512 51 314 3456 +175+78+53+96+30+20-15-43-20-2-17-32+0-27+59 +hashblocks_sha512 51 472 5165 +143+55-42+22+119-16-31-33-18+0+85+18-11-10+1 +hashblocks_sha512 51 709 8616 +143-7+22+34-19+0+27+25-66-41+37-53-54-7+29 +hashblocks_sha512 51 1064 13709 +208-1+79+0+83-58-4-41+84+93-11+84-2+76-9 +hashblocks_sha512 51 1597 20583 +53+0+8+18-24-68+0-14-14-98+11+38-15+49-22 +hashblocks_sha512 51 2396 30784 +116-7-15-27-20+40-1-25+0+68+23+94-67+19+166 +hashblocks_sha512 51 3595 47799 +178-21+31+54-41-5+121-12-16+58-63-95+0+46+42 +hashblocks_sha512 51 5393 71703 +260+7-15+87+21-79+0-153-122-63+63+7-130-255+697 +hashblocks_sha512 51 8090 107424 +333+164+27-28+68-30+147+0+33+190-155-61-25-33-93 +hashblocks_sha512 51 12136 160182 +226-114-3-139-192+51+102+57+82+0-53-6+147-6+39 +hashblocks_sha512 51 18205 242054 +0+163+69-339-113+183+12-137-189+40-216-554+466+164-76 +hashblocks_sha512 51 27308 362942 +101+1+0-147-296+67-336-85-2-241+757+42+402-104+140 +hashblocks_sha512 51 40963 545264 +495-323-261-413+1213+129-166+0-489-476+0+181-173+2798+451 +hashblocks_sha512 51 61445 819254 -403-704+1747+1738-450+101-160-954+363-192+0-147+54+461+1837 +hashblocks_sha512 52 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 52 0 123 +835+71+22+18+19-15-14+108+1+0-16-15-14-15-14 +hashblocks_sha512 52 1 92 +105+17+1+7-3+3-4+9-3-3-1+2-2-1+0 +hashblocks_sha512 52 2 90 +102+18+3+8+6+3-1-5+2-1-1+0-1-1-3 +hashblocks_sha512 52 4 95 +63+12+4+9+6-1-4+0+0-6+15-5-4-8-6 +hashblocks_sha512 52 7 92 +25+17+2+0+0-1+0-2+2-2+3-3+3-2+1 +hashblocks_sha512 52 11 89 +31+37+35+20+0+1-1-1+0+0-1-1+0+0+1 +hashblocks_sha512 52 17 90 +30+33+31+21+4+0-1+0+0-1+0-2+0+0-2 +hashblocks_sha512 52 26 89 +31+35+19+4-2+0+1+1-1+0-2-1-2+0-2 +hashblocks_sha512 52 40 89 +67+20+4+3+1-2+0+2+0-2-1+0+1-2+0 +hashblocks_sha512 52 61 89 +67+20+18+3+0-1-1-4+0+0-1+1+0+1-1 +hashblocks_sha512 52 92 89 +30+20+22+4-1-1+0+0+0-2+0+1+0-2+0 +hashblocks_sha512 52 139 1454 +537+184+31-41+34-27+42-30+56+0-8+11-34-20-27 +hashblocks_sha512 52 209 1433 +152+83+20+19+1+0+12-12-6-16-2-20-8-4+6 +hashblocks_sha512 52 314 2819 +174-7-46+57-15+16-30+0+3+0+11-61-39-31+48 +hashblocks_sha512 52 472 4232 +53-1+7+0-25+116-11-35+28+57+10-6-48-49+42 +hashblocks_sha512 52 709 6870 +206-33+28+57-85+56-33+0-55+100+56-60+18-66-30 +hashblocks_sha512 52 1064 10961 +150+0-41+37-27+106+23-15-26+10-41-60-116+12+123 +hashblocks_sha512 52 1597 16413 +50+139+2+45-50+55-85-45+30-145+32-77-113-115+0 +hashblocks_sha512 52 2396 24397 +258+21+66+74-49-16-53-130-11+6+13-5+0-87+27 +hashblocks_sha512 52 3595 37971 +18-247-202-127+762+85+91+0-96+54-73+62+10-114-371 +hashblocks_sha512 52 5393 57127 +60+31+99+4-82-21+7-67-172+113+71-161-130+0-158 +hashblocks_sha512 52 8090 85138 +85-168+113+0-282-19+104+28+58-92+8+206-59-117-15 +hashblocks_sha512 52 12136 126714 +97-22+0+29+138+0-17+5+2-185-309+1063-116+114-157 +hashblocks_sha512 52 18205 190555 +252+32+57+67-15-10-164-162+28-132+180+0-58-56+10 +hashblocks_sha512 52 27308 287463 +1504+711-33+147+672+1016-288+240+0-437-1132-783+1842-249-15 +hashblocks_sha512 52 40963 431258 -17+297+279-43+198-164-273-93+198+512+1890+0+275-1786-1513 +hashblocks_sha512 52 61445 647509 +1552+2495+1082+718-289+522-1605-2210+418+578+0-1300-1721-1467-1875 +hashblocks_sha512 53 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 53 0 53 +470+79+28-5+0+73-9+3+0+1-7-9-7-12-1 +hashblocks_sha512 53 1 48 +59+33+5+7+1+0+7-5+1-4-3-3-5-4-2 +hashblocks_sha512 53 2 47 +28+38+9+6+2+0+3-6-1+0-2-5-3-2-4 +hashblocks_sha512 53 4 48 +28+31+8+8+0+0-2-1-10+1-4-2-8+2-8 +hashblocks_sha512 53 7 45 +30+36+12+9+8+1+0+0+0-1-2+0-3+0-3 +hashblocks_sha512 53 11 49 -10+35+7+7+1+7+2+3-2-1-2-1-8+0-10 +hashblocks_sha512 53 17 51 -13+35+5+5+1+4+0-1-3-6-4+79-2+1-4 +hashblocks_sha512 53 26 48 +28+31+8+8+0+4-5+1-6-1-3-6+3-8-1 +hashblocks_sha512 53 40 47 +35+40+6+5+3-3-1-5-4+5-4+2-7+0-3 +hashblocks_sha512 53 61 51 +28+1+5+74+9+5+0-1+0-12-1-7-7-7-9 +hashblocks_sha512 53 92 46 +2+40+10+6+0+6-2-1+0+0-5-3-3+0-5 +hashblocks_sha512 53 139 1389 +179+32-32-32+28+18+51-38-17+36-43-45+19+0-63 +hashblocks_sha512 53 209 1348 +104+53+11+10+5-16-40-33-29-32+9+3-6-7+0 +hashblocks_sha512 53 314 2641 +90+8+57+4-42-11+25-22-40-6+29+0-68-52+29 +hashblocks_sha512 53 472 3929 +117-19+18+71-41+1-7-69+37-36+3+0-65+25-43 +hashblocks_sha512 53 709 6529 +201+3+24+33-86+91+67-87-81+0-82-44+21-70-60 +hashblocks_sha512 53 1064 10387 +227+17-16+8-11-53-6-33+118+8+47+60+0-37-11 +hashblocks_sha512 53 1597 15661 +96+0+39+25-107+80-17+5-78+21-28-54-97-74+26 +hashblocks_sha512 53 2396 23332 +82+53+18+25-106+10+0-88-43+84-35+15-14-14-114 +hashblocks_sha512 53 3595 36373 +153+40+22+28+11-39+8+29+0-4-147-146-44-192-219 +hashblocks_sha512 53 5393 54253 +150+57-29+113+0-36+39-84-2-30-24+60+36-22+94 +hashblocks_sha512 53 8090 81519 +91-13+68+14+67-49-214+0-28+9-67-50-27+54+78 +hashblocks_sha512 53 12136 121499 +115+0-107-70+13+7-12+15-133-124+72-78+41+23-98 +hashblocks_sha512 53 18205 183197 +713+735+579+1309-308-204-242-77-90-209+49-358+0+66+102 +hashblocks_sha512 53 27308 275267 +1577+1419+1557+1567+1533+1462+1713-572-564+0-352-240-539-275-468 +hashblocks_sha512 53 40963 415111 +703-897-594+345+0-118-19+10-80+12+159+144-218-120+686 +hashblocks_sha512 53 61445 619384 +5429+3624+4128+3665+2544-331-162+636-84-248+0-253+750-428-521 +hashblocks_sha512 54 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 54 0 111 +584+74+111+13+16+9+5-26+0-21-22-22-21-23-22 +hashblocks_sha512 54 1 109 +94+41+37+36+34-1-1-1-1+0+13+9-3-4-2 +hashblocks_sha512 54 2 90 +105+59+56+4+1+0-2+0-1+0+0-2-2+0-2 +hashblocks_sha512 54 4 96 +60+27+30+3+9+2-1+0-4+7-3-7-9-7-7 +hashblocks_sha512 54 7 107 +49+16+20+1+0+0+0+0+0+1+0+14+11-4-1 +hashblocks_sha512 54 11 96 +24+26+20+0+1+3-2+13+8-2-1-8-5-7-7 +hashblocks_sha512 54 17 97 +16+25+5+1-1+0-1-1-1-2-1+9+5+2-6 +hashblocks_sha512 54 26 96 +60+29+31+1+14+0+0-2+1-1+0-1+0-2+1 +hashblocks_sha512 54 40 96 +60+27+31+15+3+0+0+0+0+11-5-7-4-5-5 +hashblocks_sha512 54 61 95 +26+29+31+2+14+0+0-2+0-2+1-3+1-3+0 +hashblocks_sha512 54 92 96 +25+27+5+2+1+0-1-2+0-2+10-6-7-7-5 +hashblocks_sha512 54 139 1235 +512+217+47-16-19-30+107-7-30+140-2-12+98+0+105 +hashblocks_sha512 54 209 1341 +30-108+23-116+26-136+14+17-89-133+0-58-126+20+107 +hashblocks_sha512 54 314 2443 +212+162+61-80-83-5-104+70+2-107+55+3-9+0-11 +hashblocks_sha512 54 472 3587 +51+0+2+2-48+80-117-40-72+66-96-34+54+9-38 +hashblocks_sha512 54 709 5910 +251+2+243-102+115+20+43+210-257-59-209+0-106-156-45 +hashblocks_sha512 54 1064 9419 +86-66-145-237-71+188+42+111+0+88-293-39-281+4+57 +hashblocks_sha512 54 1597 14014 +135-5-36+80+15-35-9+9+58+13-32-20+0+2-102 +hashblocks_sha512 54 2396 20924 +156-191-486-571+335-46-58+28+0+57+88-289+4+6-59 +hashblocks_sha512 54 3595 32319 +385+596-189+226+499+0+93-616+295-635-108+521-60-594-530 +hashblocks_sha512 54 5393 48637 +216+84+1+18-13+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 54 8090 73052 +450+0-71+52+115-159-313+23-40-114-121+78+109-162+65 +hashblocks_sha512 54 12136 107985 -658+0-675-98-11-644+409+684-1063+416+252-1122+770+61+774 +hashblocks_sha512 54 18205 164563 +236+132-60-228+0+173-347-170-220+69+258+248-706+273-227 +hashblocks_sha512 54 27308 242585 +362+687+865-1412+0-1664-704+1071-101-991+1084-420+977+1740-676 +hashblocks_sha512 54 40963 369858 -2562-3728-2269+0+901-1340+1080+807+1101+1194+1017+810-1233-6737-5103 +hashblocks_sha512 54 61445 556277 -1421-5098-4190-7104-6776+1930+2816+1263-808+2931+3089+579+0+3428-2142 +hashblocks_sha512 55 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 55 0 257 +466-11+4+18-1-5+4-5-5-9-1+13+0+4+4 +hashblocks_sha512 55 1 79 +197+227+0-3+1-2+2-2-4-4+3-9+0-3+0 +hashblocks_sha512 55 2 78 +43+4+4+3+4-1-4+0-3+1+0-1+2-1-3 +hashblocks_sha512 55 4 78 +3+5+3+4+3-1-2-7+0-2+0-3+5-12+12 +hashblocks_sha512 55 7 79 +2+4+4+2+0-2-5-5-4-5+1+1-9+0-5 +hashblocks_sha512 55 11 78 +2+4+5+2+2-2-4+1-2+3-6-2-1+0-3 +hashblocks_sha512 55 17 78 +5+7+2+2+1-2-3+0-1-1-2-3+1-2+0 +hashblocks_sha512 55 26 79 +38+6+3+1+0-1-2-6-1+0+0-6-1-5+0 +hashblocks_sha512 55 40 77 +46+5+5+3+3-1-1-2-1-1+0+0-2+0+2 +hashblocks_sha512 55 61 78 +45+4+4+2+1+1-4-3-3+2-4-2-3+0-1 +hashblocks_sha512 55 92 79 +1+4+2+1+0-3-4-5+2-3-3+0-3-4+0 +hashblocks_sha512 55 139 1238 +387+43+15+32+2+0+3-10+3-6-5-10-7-10-7 +hashblocks_sha512 55 209 1249 +61+24+11+22+4+2-1-8+0+0-9-13-17-13-17 +hashblocks_sha512 55 314 2401 +104+53+35+11+20-2-16+12-8+0-5-4-16+23-5 +hashblocks_sha512 55 472 3570 +111+25+14+27+23+1-13-9-10-22-12+16-1+0+0 +hashblocks_sha512 55 709 5862 +210+80+77+29-1-4+32-18-11-10-23+19-16+2+0 +hashblocks_sha512 55 1064 9364 +123+32+19+9+28+0-1-2-26-17-20-3+2+20-44 +hashblocks_sha512 55 1597 14032 +170+57+37+1+22-30+14-43-17-34+0-41-31+4-8 +hashblocks_sha512 55 2396 21013 +152+15+12-40+22-9+0-29-12-45+13-66-9+5+7 +hashblocks_sha512 55 3595 32547 +298+6+0-3+26-73-2+8-24-17-27-3+821+75+31 +hashblocks_sha512 55 5393 48759 +916+202+129+116+719-50+11-67+0-24-41-138-63-97+11 +hashblocks_sha512 55 8090 73132 +259+88+2336+85-22-85+107-104-84-35+0+7-27-60+84 +hashblocks_sha512 55 12136 109267 +202-205+74-167+116-148+147-172+0-218+75-135+43-132+78 +hashblocks_sha512 55 18205 165506 -472+964-275+98-32+226-190+88-65+120-367+64+0+83-284 +hashblocks_sha512 55 27308 247299 +0+497+156-78+123-2+317+3696+613-525+146-332-466-267-326 +hashblocks_sha512 55 40963 372119 +7717-743-521-527+615-170+581-1011-310-639+0+474+205+36+90 +hashblocks_sha512 55 61445 559725 +4191-751-26-316-174-347+870+33+120+670-948+0+1146+307-807 +hashblocks_sha512 56 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 56 0 99 +526+134+38+124+4+14+0-1+12-8-5-3-2-3-3 +hashblocks_sha512 56 1 111 +108+15+16+1-2+0+120+17+9-1-3-3-4-3-2 +hashblocks_sha512 56 2 110 +102+15+2+1-1+1-1-2-1+0+12+8-3-2-3 +hashblocks_sha512 56 4 94 +78+28+17+15-2+2+0+1+0+0-3+12-1-3-1 +hashblocks_sha512 56 7 95 +80+26+18-1+5+0+0+0-4+4+13-5-3-6-6 +hashblocks_sha512 56 11 98 +74+24+17+11+0-2-3+2+0+1+12-5-12-7-11 +hashblocks_sha512 56 17 89 +33+36+28+20+3-1+0+0+0-1-1-1+0-2-1 +hashblocks_sha512 56 26 98 +75+24+15+2-1+1-2+1+0+0+14-4-10-9-10 +hashblocks_sha512 56 40 96 +79+26+19+5-3+0+2-3+3+0+13-8-4-7-1 +hashblocks_sha512 56 61 97 +76+25+17+7+1-2+1+0+0+0+12-4-5-9-3 +hashblocks_sha512 56 92 94 +31+30+24+3+1-2-2+5-1+0+8-5-2-4-1 +hashblocks_sha512 56 139 1314 +392+108+58+23-2-23-19+0-50-20-13+44+5-24+2 +hashblocks_sha512 56 209 1283 +261+92+16-1+0+2-7-17-5+0-6+103-10+17-8 +hashblocks_sha512 56 314 2531 +212+31+66+0-6+40+30+18-34+10-29-6-28-4-29 +hashblocks_sha512 56 472 3742 +256+19+23+0+14+5-8-7-13-8-19-1+1-9+12 +hashblocks_sha512 56 709 6203 +157+66-5+25+3+17+9-9-2-32-5-20+16-9+0 +hashblocks_sha512 56 1064 9823 +254+33+2+0+18-36-4+29+2+6-16-19-61-29-19 +hashblocks_sha512 56 1597 14678 +243+30+10-7+20+31-31-16-45+39-1+0-10+22-16 +hashblocks_sha512 56 2396 21886 +167-15-17+6-26+34+42+30+12-10-41-42+0-12+13 +hashblocks_sha512 56 3595 33960 +108-25-16-10+0+22+43+3-8-18-30-10+0+22+43 +hashblocks_sha512 56 5393 50818 +188+95-28-8-30+0-18+22-11+2-6+2-54+744+89 +hashblocks_sha512 56 8090 76203 +395-20+129+124-51+80-119+45-46-56+21-109-25+0+19 +hashblocks_sha512 56 12136 113626 +157+207-29+21-110-20-6-21-90-33+34+2+41+59+0 +hashblocks_sha512 56 18205 171535 +149+0-77-85+725+9-110-16-189-128-89+674+92+87+621 +hashblocks_sha512 56 27308 253915 +2784-52+0+294-250-239-329+107+1151+265+277-274+126-277-9 +hashblocks_sha512 56 40963 382323 +36-555+226-362-52+2378+124-229+398+357-46+0+165-141-177 +hashblocks_sha512 56 61445 581550 -295-131-116-305-237-320+593+19-89+25+810+0+382+33+776 +hashblocks_sha512 57 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 57 0 261 +560-28+13+10+0+9-5-4+0-9-9+13+0-9-4 +hashblocks_sha512 57 1 79 +54+33+28+35-2+0-3+1-5-5-2+40-8-3+0 +hashblocks_sha512 57 2 79 +24+29+4+1+0+2+1-9+0-2-2-4-1-5+4 +hashblocks_sha512 57 4 77 +29+26+3+4+0-2+0+2-2+0+0+0-1+0+1 +hashblocks_sha512 57 7 77 -6+26+7+0-2-1+0-6+5-1+4-6+0+5-1 +hashblocks_sha512 57 11 77 +26+28+4+0+1-1-9+4-1-2+3+0-2-1+2 +hashblocks_sha512 57 17 77 -14+40+8-1+1-2+0-3+2+2+4-1-1-2+0 +hashblocks_sha512 57 26 76 +33+28+3+6+0-1+2+0-2+0-1+7-5+3-3 +hashblocks_sha512 57 40 78 +31+25+3+2-3-2-1-2+1+3+1-5-4+0-1 +hashblocks_sha512 57 61 78 +28+3+3+4-1+1-2-1+0+1-1-2+3-1-1 +hashblocks_sha512 57 92 79 +30+24+2+1-4-3-2-2+0-5+4-8+0-2+2 +hashblocks_sha512 57 139 1242 +322+99+19+14+1+1+0-4-6-10-7-7-7-12+4 +hashblocks_sha512 57 209 1242 +57+23+16+5+12-1+7-11+0-8+11-10-12-10-6 +hashblocks_sha512 57 314 2408 +98+56+32+14+12+0+2-14-6-13-2+3-7-2-11 +hashblocks_sha512 57 472 3568 +110+31+17+6+7+18-4+0-8-17-27+0+2-18-5 +hashblocks_sha512 57 709 5888 +138+57+20+6+0-12+9-9+5-54-17-13+0+5-37 +hashblocks_sha512 57 1064 9380 +249+30+32-24-27+0+0+2-11-26-26-1+10-52+8 +hashblocks_sha512 57 1597 14048 +167+78+24+18-7-16+0-5+41+15-13-28-10+20-2 +hashblocks_sha512 57 2396 21000 +76+8-53+0-35-24-33+38+34-4+23-20+13-65+30 +hashblocks_sha512 57 3595 32648 +47+19+0+33+6+22-16+16+5-17-15-94-119-91-144 +hashblocks_sha512 57 5393 48867 +392-24-12+34-100+20+6+0-103+21-48-29-39+561+44 +hashblocks_sha512 57 8090 73138 -106+55+32+43-68-3+75-16-69+20+0+53-15+234-73 +hashblocks_sha512 57 12136 108944 +341-67-20-145-53+29+50+185+182+0-70+208-12+246-157 +hashblocks_sha512 57 18205 164944 +96+191+44+0+42+1291+2577+177-205-31-199-228-303-149-357 +hashblocks_sha512 57 27308 247064 +275-513-386+115+168-368-555-159-290+685+140-578+0+111+219 +hashblocks_sha512 57 40963 372135 +11876+1116-50-15-181+1029+562+267-364+0-176+167-373+7-814 +hashblocks_sha512 57 61445 559352 +4139+0+369-318+216+30-377+49-48+176-192+13-546-39-40 +hashblocks_sha512 58 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 58 0 92 +806+101+35+130+3+10+0-3+17-3-4-3-2-3-1 +hashblocks_sha512 58 1 94 +102+31+31+14+0+4-3+0+0+0+13-2-1-3-6 +hashblocks_sha512 58 2 95 +98+29+5+1-4-1+9+9+0+1-1-5-1-3-6 +hashblocks_sha512 58 4 109 +52+14+6+3-1+1+0+0-1+14-5-4-4-4-4 +hashblocks_sha512 58 7 93 +64+28+22+3+3+15+12+0-4-4-5-3-4-3-5 +hashblocks_sha512 58 11 95 +14+29+5+0-2+0+0+1+0-1+9+10-1+0-5 +hashblocks_sha512 58 17 96 +15+29+3+1+1+0+0+12+6-1-5-6-4-4-6 +hashblocks_sha512 58 26 96 +71+29+18+15+12-1-2+0-2+0-1-1-1+7-3 +hashblocks_sha512 58 40 92 +70+31+21+4+12+6+13+0-4-1-2-5-3-2-2 +hashblocks_sha512 58 61 105 +64+18+22+7+1+1+0+0+0+0+0-1+1+0+0 +hashblocks_sha512 58 92 96 +72+29+17+16+13-1+0-4+1-3+0-3-1+9-1 +hashblocks_sha512 58 139 1311 +423+117+96+9+0+28-2-17-11-21-39+38-2-6+41 +hashblocks_sha512 58 209 1370 +59-71+14-80+19-68+10-76+26-100+16-92+0-66+5 +hashblocks_sha512 58 314 2537 +119+11-19+5+9+10-16-28-38+54+26-43+0-19-9 +hashblocks_sha512 58 472 3753 +77+73+58+0+2-40-36-55+32-28+28+30-39-35-21 +hashblocks_sha512 58 709 6177 +135+10+52+45-16+1-41-1+51+0-28-1+53-12-32 +hashblocks_sha512 58 1064 9793 +167-42-32-32-27+24-9+16+24+48-10+0-30+48+3 +hashblocks_sha512 58 1597 14679 +76-24-57-5+8+0+29-52+31-42+34-46+24-23+31 +hashblocks_sha512 58 2396 21891 +280+29+85-346-84-138-258-148-2+44+38-9+61+0+15 +hashblocks_sha512 58 3595 33909 -5+77-28-90-77-50-18+45+1+40+28-22+0+46+2 +hashblocks_sha512 58 5393 50869 +294-489-629-451-373-234+671-3+20-28+5+8+39+0+5 +hashblocks_sha512 58 8090 75700 +57-291-156+84+129+359+355-4-423-437+619+0-132+24-362 +hashblocks_sha512 58 12136 113454 -538-926-275+135+100+20-193+70-698+181+0+85-1032+124-466 +hashblocks_sha512 58 18205 171422 +180+219+189+121+52-273-987+38-1012+0+496-460-158-224-569 +hashblocks_sha512 58 27308 255116 +2609+4618-497-981-32-257-456+0-440-494+60+2913+2357+2226+2266 +hashblocks_sha512 58 40963 384958 +1988+1570+1287+1380+1472+1542+1953+0-2142-2174-2407-2493-1340-2802-2785 +hashblocks_sha512 58 61445 582269 +0+210-7089-7975-7639-8143-7444-9143-2088+914+877+433+774+395+908 +hashblocks_sha512 59 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 59 0 315 +283-88-4-22+22-13+43-73+50-71+0+40-9+9+5 +hashblocks_sha512 59 1 95 +41+13-4-13-7-1+5+3+2+0-1+95-15-9+0 +hashblocks_sha512 59 2 95 +9-9-18-8+0-1+0+3+2+1+0+9-9+3+2 +hashblocks_sha512 59 4 98 -18-17-11-4-1+2+4+1+1+5+5-3+6-1+0 +hashblocks_sha512 59 7 98 -22-22+2+7+0+1+3+2-2+0-3-1+0+9+5 +hashblocks_sha512 59 11 95 -19-15-6+4+4+8+0+0+0+0+2+2+12-11+0 +hashblocks_sha512 59 17 100 -24-16-16-2-2+0+2+0-3+2+3+3-3+1+1 +hashblocks_sha512 59 26 100 -31-12-19+6+3+0+1-6+0-1+1+0-3+6-14 +hashblocks_sha512 59 40 98 +1-9-20+2-2+6+3-2+8-4+7-15+0-2+1 +hashblocks_sha512 59 61 96 +5-12-14-1+0+2+1+0+7+6+0+9+0+10+0 +hashblocks_sha512 59 92 99 -1-11-23+0+3-4+4+4-3+0+0+4+1+7-4 +hashblocks_sha512 59 139 1294 +278+22+22+6+8-2-19+4+0+3-10-17-11-6-8 +hashblocks_sha512 59 209 1292 +36+12+3+12-13+5-12-2+0-7+1-18-14+3-1 +hashblocks_sha512 59 314 2489 +31+13+8-1+6+0+4+4-15-16-27-8-5+4-6 +hashblocks_sha512 59 472 3690 +46+34+9+11-5-2-12-11+5-35+0+10+0+28-5 +hashblocks_sha512 59 709 6101 +58-6+12-32-17-32-18+0-32+12+20-5+0+6+26 +hashblocks_sha512 59 1064 9735 +36+50+18-2+30+20-12+26-20-34-40-29+0+1-20 +hashblocks_sha512 59 1597 14527 +11+61+34-38-37-40-48-8+0+13+20-6+4-18+21 +hashblocks_sha512 59 2396 21791 +3+62-89+55-51+0+39-82+34-30-32+27-110-23+1 +hashblocks_sha512 59 3595 33794 +111-16+10+20-12-38+0-16+18-103-49+44+41-15+6 +hashblocks_sha512 59 5393 50713 +7+54+50+56-21-54+28-88-94+19-81+0+18-41-17 +hashblocks_sha512 59 8090 76016 +47+12-63+36+710+97-86+59-2-23-5-79+110+0-80 +hashblocks_sha512 59 12136 113356 -93-60-87+34+146+51-137-3-99-74+0+30+109+173+45 +hashblocks_sha512 59 18205 170951 +87-31+285-74+200+0-220+642+104-243-3+515-106+48-17 +hashblocks_sha512 59 27308 256586 +69+259-199-479-450-474+23-636+0+202+831-159-32+81+438 +hashblocks_sha512 59 40963 385063 +5054+272+2651+0+522-498+754-202-439-148+456+306-736-565-806 +hashblocks_sha512 59 61445 580654 +12909-744-434+321+18+0+23+1454+29+301-1103-1800-194-1381-1974 +hashblocks_sha512 60 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 60 0 95 +778+103+37+128+6+13-3-3+15-5-7-8-3+0-4 +hashblocks_sha512 60 1 96 +96+14+21+3-3+2-1-1-3+1-1-1+0-5+1 +hashblocks_sha512 60 2 97 +83+16+9-2+0+3+0-1-2+13+3-2+0-1-2 +hashblocks_sha512 60 4 92 +66+21+17+7-4+1-4+0-1+0-1+0-2-2-3 +hashblocks_sha512 60 7 98 +59+32+3+3-3+2-4+4+0-4+14-2-9-9-5 +hashblocks_sha512 60 11 96 +33+28+7+2+12+0-3-3+1-5-1-4+1-2-2 +hashblocks_sha512 60 17 97 +25+26+2+0+1-1+2+7+1-3-2+0-4-1-1 +hashblocks_sha512 60 26 94 +55+28+9+0+1+0-1-1+2+1+13-6-5-6-6 +hashblocks_sha512 60 40 99 +52+32+13+10+1-3+1-2+0-5+13-3-3-8-4 +hashblocks_sha512 60 61 98 +50+14+1+0-4+1-2+4-4+2+13-6-3-2-2 +hashblocks_sha512 60 92 96 +61+15+2+2-1+1+11-4+1-3-1-3-2+0-4 +hashblocks_sha512 60 139 1309 +305+110+41-2-14-38+56+0-26+44-17+52-25+52-16 +hashblocks_sha512 60 209 1357 +40-51+16-57+14-71+9-75+17-77+6-35+4-76+0 +hashblocks_sha512 60 314 2537 +168+0+0+4+0+21-1+15+2+17-1+4-29-10-29 +hashblocks_sha512 60 472 3731 +97+63+95+23+55+76+4-5+0-20-27-5-5-7-9 +hashblocks_sha512 60 709 6203 +90+69+41+72-25+20-1-12-9-16+0+49+44-34-33 +hashblocks_sha512 60 1064 9844 +45+4+52-5+49-39+9-66-3-11+94-20+24-45+0 +hashblocks_sha512 60 1597 14735 +87+5+9-88-25-47+43-31+9-48+18-74+0-82+23 +hashblocks_sha512 60 2396 21905 +104+72-7+71-4+77-5+51-14+49-7-60+0+29-32 +hashblocks_sha512 60 3595 34040 +108+57-9-17-53+1-13+86+0-18-29+31-65+93+48 +hashblocks_sha512 60 5393 50981 -128+88-33+99+42-10-12-13+33+75-41+26+0-9+118 +hashblocks_sha512 60 8090 76283 +547-445+1353+163-50+0-65+4-25+10-65+12-24-22+22 +hashblocks_sha512 60 12136 112358 +207+282-49+373+149+66+0-273+69-77-98-179+162-68-126 +hashblocks_sha512 60 18205 170055 +85-315-343-626-383-739+760+599+352+413+0+35-157-101+383 +hashblocks_sha512 60 27308 255134 +586+420-16-33-188+497+0+610+220+657+266-345-588-53-341 +hashblocks_sha512 60 40963 386476 +839+309+626+774+545+1248+443-51-92-147-170-277-260+0-280 +hashblocks_sha512 60 61445 576551 +3794+3400+3097+3394+3706+3437+3488-513-547-860-1209-2280-715+0-279 +hashblocks_sha512 61 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 61 0 306 +573-79+7-14+67-82+0+0+14+13-4+4+0-4+0 +hashblocks_sha512 61 1 96 +21+25-8-6-17+22-25+0+0-8+1+108-27-7+95 +hashblocks_sha512 61 2 89 -8+0-5-8+107-9-5+0+9+12+5+41-25+10+6 +hashblocks_sha512 61 4 97 -15-10-10-10+6+1+0-1-1+5+0+1+3+4+0 +hashblocks_sha512 61 7 95 -12-8-9-12-1+2-1+0+0+2+3-1+2+1+0 +hashblocks_sha512 61 11 94 -11-8-9-7+6+8-1+14+0+0+4+3+3+0+3 +hashblocks_sha512 61 17 95 -12-9-10-8+5+7-2+12-1+2-1+1+2+4+0 +hashblocks_sha512 61 26 99 +9-11-14-12-3+1+0+1-2+5-1+6+7-3+9 +hashblocks_sha512 61 40 96 +20-8-9-13+4+0+0-1+0+0+1+8+6+2+12 +hashblocks_sha512 61 61 96 +20-11-6-12+9-2+1+0+8-2+1+3+0+10+0 +hashblocks_sha512 61 92 94 +28-4-6-12-6+2+11-10+11-7+3+12-10+2+0 +hashblocks_sha512 61 139 1291 +496+40+28+45+34-23+0+0-3+4-3-8-3-14+14 +hashblocks_sha512 61 209 1285 +74+21-4-3+9+10-3+2-3+0-4-4+12+4-1 +hashblocks_sha512 61 314 2487 +86+14+19+9-19-43-4+4+0+5-19-16-5+30-1 +hashblocks_sha512 61 472 3706 +81-15-36-8+6+0+11+15+1-11+4+0+10+0-13 +hashblocks_sha512 61 709 6108 +101+20-24+7-39+0+11-14+30-20-22-28-12+17+19 +hashblocks_sha512 61 1064 9709 +74+45-12+0-15-26-18+15+22-23-48+3+6-76+2 +hashblocks_sha512 61 1597 14529 +15+44+58-36+38-9+3+11-29+0-67-14+0+23-18 +hashblocks_sha512 61 2396 21776 +100+24-10-20+37-52-40-86+0+5+0-35+19-8+13 +hashblocks_sha512 61 3595 33779 +191+25-17+17+10+0+27+36-17-25-31-19+17-74-7 +hashblocks_sha512 61 5393 50743 -135-36+51+4-52+1-130+31+6-58+17+0-69-37+638 +hashblocks_sha512 61 8090 75948 +20-5-53+34+82-40-36+139+0+17-44+36+127-49-32 +hashblocks_sha512 61 12136 113311 -159+0-51-62+38-125+47-15+53+95-2+63+6-122+13 +hashblocks_sha512 61 18205 170978 +136-65+172-109+932-35+12+74+0-29+194-45-173+114-93 +hashblocks_sha512 61 27308 256558 +270+67+121+0+495+245+234-765+33-557-341-743-685-316-548 +hashblocks_sha512 61 40963 385674 +5190+247+1030-562+1170+1040-601-382-630+19-582+0+149-63-247 +hashblocks_sha512 61 61445 579914 +4842-1626-1631-1235-1415-1250+591+964+204+2911+0+13-589+273-337 +hashblocks_sha512 62 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 62 0 103 +484+79+21+17+110+0+1-12+6-16-14-9-11-13-13 +hashblocks_sha512 62 1 97 +99+33+99+0-1-3+0+0+3+0-3+13-3-4-5 +hashblocks_sha512 62 2 97 +101+26+18+111+6-2+0+2+0-3-2+15-9-7-11 +hashblocks_sha512 62 4 101 +60+23+23+22+20+11-7+0-7-1-2-7+2-6+0 +hashblocks_sha512 62 7 90 +69+33+19+20+17+25-2-2-4-2+0-4+1-2-2 +hashblocks_sha512 62 11 90 +23+36+22+28-3+1+0-3-2+0-2+0-2+2-1 +hashblocks_sha512 62 17 99 +17+24+16-2-1+0+1-2+2+11+0-3+1-2-1 +hashblocks_sha512 62 26 108 +51+17+16+2+2+0+0+13+11-1-1-1-1-1-1 +hashblocks_sha512 62 40 101 +54+25+29+0+3-1+0-1+1+0-1+0+2+0-1 +hashblocks_sha512 62 61 111 +48+18+94-2+0-1+3-1+4-2+4+6-10-14-13 +hashblocks_sha512 62 92 89 +70+33+35+3+4-1+1-1+0-4+0+0-2-2+0 +hashblocks_sha512 62 139 1472 +362+85+106+23-4-69-5-53+8-47+0-65+46-50+39 +hashblocks_sha512 62 209 1446 +103+8+50-33+70-38+59-39+111+37+0-11-27-20-1 +hashblocks_sha512 62 314 2784 +149+115+213-8+14+0+110+22-48-14-14-18+71-31-18 +hashblocks_sha512 62 472 4130 +113+94-14+55-62+0-14+16-45-26+56-38-45+36+25 +hashblocks_sha512 62 709 6859 +107+34-53+66-84+30-63+0-107+30-101+35-93+118-68 +hashblocks_sha512 62 1064 10862 +157-37+60-7+0-24+26+76-12-121+77+26-55+5-26 +hashblocks_sha512 62 1597 16244 +102+80+0-124-35+28-82-74+38-107+60-172+95-223+56 +hashblocks_sha512 62 2396 24258 +99+61+18+317-60-67+110-16+0+43+125-160-91-133-124 +hashblocks_sha512 62 3595 37530 +205-145-126-15+0-166+54+102+64+48-101+188-217-23+222 +hashblocks_sha512 62 5393 56314 +151+13-246+0-33-70-143-158-66-51+1267+28+892+1411+39 +hashblocks_sha512 62 8090 84168 +473-97+84+144+76-21-172-125-121+18+48-39+0+74-49 +hashblocks_sha512 62 12136 125505 +338+0-52+259-88-143-31-22+321+271-168+127+169+149-2 +hashblocks_sha512 62 18205 189920 +908+323+784+656+340+0+655+1723-726-766-1204-1100-1266-810-1170 +hashblocks_sha512 62 27308 283603 +606+605+310+35+1228+236+0+125-116-295-105-278-178-430-17 +hashblocks_sha512 62 40963 426440 +506+3360+1422+1210+430+157-555-669-553-195+0-615+245-325-586 +hashblocks_sha512 62 61445 640204 -698-871-554+323+926+273+579+738+505+277+0-1642-958-1007-1667 +hashblocks_sha512 63 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 63 0 54 +337+63+25+3+0-1-7+1-1+5+1-4-1-6+0 +hashblocks_sha512 63 1 54 +31+5+4+8+5+8-3-3+0-3-4-3-5+0-3 +hashblocks_sha512 63 2 53 +30+6+7+7+8+7-3+0-3-1-6+1-5-2-4 +hashblocks_sha512 63 4 53 +31+6+6+9+6+8-1-4+0-1-2-2-1-5+25 +hashblocks_sha512 63 7 54 +30+5+5+7+6+5-3-2-2-4+0-4-2-2+28 +hashblocks_sha512 63 11 55 +39+4+6+6+3+5-2-7-3-5-2+0-6+0+16 +hashblocks_sha512 63 17 55 -4+2+4+6+3+3+1-4-5-4-5+0-7-6+22 +hashblocks_sha512 63 26 55 +28+4+7+5+5+3-1-2-3-4-5-4-6+0+16 +hashblocks_sha512 63 40 56 +38+3+5+5+2+4+0-7-2-10-1-13-1-8+24 +hashblocks_sha512 63 61 55 -12+6+5+2+4+4+2+0-6-2-3-8-1-7+24 +hashblocks_sha512 63 92 54 +30+5+5+9+4+5-2-5-2-3-3-3+0-5+34 +hashblocks_sha512 63 139 1366 +256+67+7+6-11-31+88-16+0-44-29+73-35+8-22 +hashblocks_sha512 63 209 1344 +90+9+8+110+53+35+9-9+0-19-12-7-13-23-9 +hashblocks_sha512 63 314 2705 +104-7-52+84+0-67+15+39-93+44+29-90-81+43-44 +hashblocks_sha512 63 472 3997 +64+22+19+82-67-48-15+29-19-3+0-18+53-73+9 +hashblocks_sha512 63 709 6623 +143+0-121-59-31+23-31+99-40+73-40+24+14-44+58 +hashblocks_sha512 63 1064 10447 +111-61+69+17-79-42+0-18-68+4+38-39-58+9+14 +hashblocks_sha512 63 1597 15592 +213-65-47+76-26+45+29-10+21+0+0+46-14-48+17 +hashblocks_sha512 63 2396 23380 +187+4-22+98-15-15-147+56+149-44-49-50+57+49+0 +hashblocks_sha512 63 3595 36310 +139-10+25+0+50-101-17-130+6+100+44-43-131-109+10 +hashblocks_sha512 63 5393 54358 +204-4-60+205+85+107+42+39-22+0-73-97-22+3-67 +hashblocks_sha512 63 8090 81512 +203+57-71+0+19-88-32-53-59-11+81-92+123+25+823 +hashblocks_sha512 63 12136 121576 +407-33+0-7-210+90+134-72-32+149-47-38+75+43+111 +hashblocks_sha512 63 18205 183522 -66-121-15+0-31+95+163-56+234+125+936+184+148-53-164 +hashblocks_sha512 63 27308 276990 +970-110+0+11+2502+456-268-574-260-2-415+629+170+317-117 +hashblocks_sha512 63 40963 416501 -1713-1800-1920-1867-2148-1445+2179+908+730+604+767+225-43+0+368 +hashblocks_sha512 63 61445 624446 -124-154+0+376-352+387-58-453-747-537+2733+2138+2305+1605+2234 +hashblocks_sha512 64 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 64 0 55 +692+43+10+11+9+7+0-2-8+2-11-6-10-4-6 +hashblocks_sha512 64 1 52 +39+13+10+9+5+4+4-3-3-6-7-1-1-1+0 +hashblocks_sha512 64 2 50 +51+7+9+2+0-2+1-4-5-1+1+0-1+1-1 +hashblocks_sha512 64 4 50 +48+11+9+3+2-1+1-7-4-2+1-3+0-1-1 +hashblocks_sha512 64 7 51 +46+12+6+4-1-4+0-4-6+0-2+0-2-1+1 +hashblocks_sha512 64 11 52 +45+9+7+3-2-6+1-3-6+1+0+0+0+0+0 +hashblocks_sha512 64 17 51 +13+9+8+2+1-3+5-5-7-2+0+0-3-1-1 +hashblocks_sha512 64 26 51 +44+10+7+5-1+4+0-2-7+0+0-1-1-2+1 +hashblocks_sha512 64 40 53 +4+9+5+0-3+0-1-5-7+1-2-2+0+1-1 +hashblocks_sha512 64 61 50 +10+7+9+6+1-1+2-2-6-1+0+0+0+0+0 +hashblocks_sha512 64 92 51 +44+7+7+5+0-4+2-3-5-5+0-2-1+1-2 +hashblocks_sha512 64 139 1397 +3046+80+44+0-8-10-13+13+8+6+2-1-2-6-7 +hashblocks_sha512 64 209 1403 +53+11+15+12+5-5-10-17+4+6+0-5-7-9-13 +hashblocks_sha512 64 314 2679 +118+167+118+35+21+10+3+0-5-19-20-22-2-1-4 +hashblocks_sha512 64 472 3974 +172+158+134+43+21+12+0-2-15-22-28-5-6-1+2 +hashblocks_sha512 64 709 6561 +325+240+86+33-1-12+47-8-12-18+7-42+15+0-11 +hashblocks_sha512 64 1064 10500 +348+297+215+99+6-7+23+0+17-7-35-57-59-21-19 +hashblocks_sha512 64 1597 15713 +461+209+31-13+20-5-113+59-78-21+4+0-51-58+68 +hashblocks_sha512 64 2396 23510 +696+235+8+26-76+38-51-44+0+46-14+17-51-54-10 +hashblocks_sha512 64 3595 36493 +793+92+0+64+42-35-10+43+11-33-10+78-30-4-107 +hashblocks_sha512 64 5393 54679 +821+1363+237-7+38+51-40-5-40+34+57-30-67-65+0 +hashblocks_sha512 64 8090 81895 +772+122-27-5+90-19-17+60-56-49+10+83-17+0+118 +hashblocks_sha512 64 12136 122187 +692+76-89+27-66-89+116-117+66-104+44-20+15-111+0 +hashblocks_sha512 64 18205 184424 +933+59-17+42+46-101-2-173+141-16+115+46-151-133+0 +hashblocks_sha512 64 27308 276599 +923+105+12+870+107-15+4-17-82+0-52+11-177-87-99 +hashblocks_sha512 64 40963 415523 +2651+332-67+45+43-204-45-186+0+2-116+47+1345-154-3 +hashblocks_sha512 64 61445 624836 +859+265+876+46-77-158-186+252-38+0+958-57-128+87-38 +hashblocks_sha512 65 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 65 0 89 +892+44+22+16+18+15+13-15+0-21-20-17-18-19-21 +hashblocks_sha512 65 1 75 +23+34+2+2+2+1+1+0+0+0-6-6-7-6-5 +hashblocks_sha512 65 2 70 +0+7+8+7+7+8+3-1-2+0-1+0-1-3-4 +hashblocks_sha512 65 4 74 -4+3+3+2+4+2+0+3+0-6-5-5-4-6-5 +hashblocks_sha512 65 7 70 +0+9+8+9+6+2+0+0-2+0-1-1+0+0-1 +hashblocks_sha512 65 11 70 +0+9+8+9+6+2+0+0-2-1-2-2-1-1-2 +hashblocks_sha512 65 17 69 +0+9+10+10+6+4+2+0-2-2+0+0+0+0-1 +hashblocks_sha512 65 26 70 +40+9+9+8+7+3+0-1-2-4-3-2-2+0-1 +hashblocks_sha512 65 40 70 +38+8+9+9+6+4+3+0-1+0-2-2-1-1-1 +hashblocks_sha512 65 61 71 -1+4+8+6+6+7+0+0-3+0-3-1-2-4-5 +hashblocks_sha512 65 92 74 +32+3+4+2+4+0+3+1+0-4-6-6-5-4-5 +hashblocks_sha512 65 139 1399 +4612+33+11+8+10+11-1+1+0-17-24-10-25-14-25 +hashblocks_sha512 65 209 1395 +12+7+12+14+15+7+10-4-9+0-11-15-11-20-19 +hashblocks_sha512 65 314 2724 +43+36+41+70+22+5-6-6-14-25-14-40-36+15+0 +hashblocks_sha512 65 472 4035 +112+65+15+56+11+4+0-22-19-43-33-48-53+42-31 +hashblocks_sha512 65 709 6663 +118+160+40+0+0-9+20-29+90-13+10-17+3-44-41 +hashblocks_sha512 65 1064 10609 +136+136+34-13+51+8-21+0-19+5-21-6+0-57-16 +hashblocks_sha512 65 1597 15851 +269+227+25+43-4+47+77-59-55-61-22-31-56+98+0 +hashblocks_sha512 65 2396 23729 +271+45+165+9-2-73-24+83-31+0-50-55+95+19-21 +hashblocks_sha512 65 3595 36890 +171+241+81-100+0-70+53-25-50-14+53-9-35+62+73 +hashblocks_sha512 65 5393 55252 +336+78-122+33-35+72+70-24-32+0-3+38-19-32+131 +hashblocks_sha512 65 8090 82912 +244-87+0-53-74+16+83-81+12+56-4-103+63+858-119 +hashblocks_sha512 65 12136 123644 +14+35+16-131+17-47+119-59+16-150+0-148-40+2506-11 +hashblocks_sha512 65 18205 186622 +166+86+148+11-13-72-43-26+0-17+66+890+14-83-120 +hashblocks_sha512 65 27308 279928 -56-91-48+123-131+0-118+132-74+38+293+1243+2704+300-53 +hashblocks_sha512 65 40963 420786 +284-504-371-103-131+1198+2372+216+2087+1378-333-112+29-139+0 +hashblocks_sha512 65 61445 633020 +202-99+412-294-243-140+3102+168-144+0+70+211-168+682-220 +hashblocks_sha512 66 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 66 0 55 +755+65+3+8+4+0-4-11+110+8+0-10-15-11-13 +hashblocks_sha512 66 1 50 +64+13+15+12+15+7+3+0-2-3-7-6-7-5-6 +hashblocks_sha512 66 2 48 +53+9+13+13+14+8+4+0-2-2-7-4-5-5-5 +hashblocks_sha512 66 4 48 +46+11+10+17+15+8+4-1-2+0-6-5-2-7-5 +hashblocks_sha512 66 7 43 +56+17+17+19+12+6-2+2-1+0-2-1-1-1+0 +hashblocks_sha512 66 11 49 +8+12+7+16+9+3+1-4-3+0-11-7-9-6-6 +hashblocks_sha512 66 17 49 +8+10+15+10+10+4+4+0-5-8-5-6-5-8-4 +hashblocks_sha512 66 26 48 +51+13+16+18+9+10+0+1-3-1-7-4-7-3-6 +hashblocks_sha512 66 40 47 +55+13+11+9+9+2+0-1-5-3-7+0-5-4-4 +hashblocks_sha512 66 61 47 +54+14+14+16+12+8+2-1-1+0-7-5-3-3-5 +hashblocks_sha512 66 92 48 +10+12+14+16+13+4+3-3+0-3-3-6-5-6-4 +hashblocks_sha512 66 139 1050 +2988+163+49+7+0+73+23-2-22-21-30-24-28-29+80 +hashblocks_sha512 66 209 1040 +68+25+98+32+14+19+0-2-5-11+0-17-17-6-21 +hashblocks_sha512 66 314 1995 +106+108+100+119+5+0-14-11-19-18-25+74+13-11-15 +hashblocks_sha512 66 472 2944 +188+128+23+3+0-9-12-11-9+6+9-20-10-16+31 +hashblocks_sha512 66 709 4847 +322+237+162+18+0+16+43+24-10-72-68-73-30-60-47 +hashblocks_sha512 66 1064 7742 +289+121+83+92+37+0-64-84-60-102-64+46+25-29-46 +hashblocks_sha512 66 1597 11503 +363+135+204+76-60-39-51-49-24-6-12+51+89+0+113 +hashblocks_sha512 66 2396 17244 +479+120-10+2-75+123-69-21+0+109-21-1+48+90-44 +hashblocks_sha512 66 3595 26814 +603+132+0-55-10+15-98-95+9-13-25+67+17+45-99 +hashblocks_sha512 66 5393 40124 +721-9-154-164+0+129+64+3+1303-75-188+67-156+104-25 +hashblocks_sha512 66 8090 60102 +1702-191-113+93+119+82-54-62+55-83+104+0-17+77-18 +hashblocks_sha512 66 12136 89633 +424+11-172-72+42-103+135+59-83-45+0+35+59-144-207 +hashblocks_sha512 66 18205 135329 +550-12+74-269+153-6+156-19+1271-97-65+201+79-447+0 +hashblocks_sha512 66 27308 202970 +1431+129+74+65-3-39-87-218+73+331+2529+0-116-400-193 +hashblocks_sha512 66 40963 304691 +548-214-487+179-77+143-87+0+76-11+52-709+3797+721-59 +hashblocks_sha512 66 61445 458694 +567-137+0+45-526+992+67+869-410+461-585+2275-495-134-105 +hashblocks_sha512 67 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 67 0 73 +521+32+6+6+6-1+1+0+15-3-3-5-4-3-5 +hashblocks_sha512 67 1 70 +38+8+11+11+9+10+5-3-2-3-2+0-1-2-1 +hashblocks_sha512 67 2 73 +38+4+4+8+5+4+2+0-5-4-5-5-5-2-3 +hashblocks_sha512 67 4 75 +36+2+3+6+4+2-1+0+68-6-7-6-5-7-7 +hashblocks_sha512 67 7 73 +38+4+4+9+6+2+2+0-5-4-5-6-4-3-6 +hashblocks_sha512 67 11 70 +41+7+83+13+8+4-1-1-2+0-2+0-2+0-2 +hashblocks_sha512 67 17 72 +39+5+5+9+7+3+3+0-3-5-5-2-4-3-2 +hashblocks_sha512 67 26 74 +37+3+3+7+6+2+2+0-5-7-6-4-4-4-6 +hashblocks_sha512 67 40 74 +37+3+3+7+6+2+2+0-6-5-5-3-3-5-5 +hashblocks_sha512 67 61 73 -1+3+4+5+6+4+7+0+71-4-2-3-3-3-3 +hashblocks_sha512 67 92 72 +39+5+6+7+9+4+5+0-2-5-5-4-2-4-4 +hashblocks_sha512 67 139 1145 +2908+45+38+15+15+11+12+0-2-2-1-6-6-7-12 +hashblocks_sha512 67 209 1147 +77+12+12+14+5+3-2+0+0-5-8-16-1+2-2 +hashblocks_sha512 67 314 2214 +100+118+76+47+41+22+0-9-7+16-11-9-33-44-35 +hashblocks_sha512 67 472 3289 +147+59+26+20+19+12+6+0-27-25-39-49-48-32-42 +hashblocks_sha512 67 709 5408 +183+96+78+29+5-18-5-3-23-28-7+0-33+3+32 +hashblocks_sha512 67 1064 8619 +136+151+86-35+56+0+19-30-10-14-8-56+13+50-30 +hashblocks_sha512 67 1597 12893 +220+106+38+41-4+47-64+0+46-4-73+18-48-46-59 +hashblocks_sha512 67 2396 19267 +243+139+56+18-37-78+62-31+8-42+23-26+0-40-48 +hashblocks_sha512 67 3595 29905 +522+9+41-130-13-35-7-21+68-53-52+27+4+24+0 +hashblocks_sha512 67 5393 44811 +299+23-160+105+43-21-82+49-69-38+99+1-74-91+0 +hashblocks_sha512 67 8090 67127 +199-98+74-10+1123-76+784+1731-216-77+124+0-21+33-46 +hashblocks_sha512 67 12136 100091 +37+30+9-39-69-147-49-87-91+6+14+0+8+93-30 +hashblocks_sha512 67 18205 151154 +0+142+192+63-21-16-70-126+114-86-62+816+164+47-29 +hashblocks_sha512 67 27308 226662 +182-16+137+107+77-112-86+78-72-38+26-146+38+0-106 +hashblocks_sha512 67 40963 340565 +540+84-80+1327+0-133+105-195-285-160+1045+845-200+35-311 +hashblocks_sha512 67 61445 512475 -84-254+159+656-389+0-88+64+114+251+63-279+647-222-83 +hashblocks_sha512 68 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 68 0 48 +764+51+14+14+9+9+4+0-5-3-2+0-4-2-3 +hashblocks_sha512 68 1 49 +47+16+16+7+9+1-4-3-4+0-2-8-3+95-3 +hashblocks_sha512 68 2 48 +48+15+15+11+7+1+3-10-3+0+0-1-6+0-4 +hashblocks_sha512 68 4 47 +43+16+9+9+4+0-3+2-1-6+0-2+3-4-2 +hashblocks_sha512 68 7 47 +42+13+11+5+5+4-6-1-1-2+3+0-1-6+0 +hashblocks_sha512 68 11 47 +52+13+8+8+8+1-1-3-1+2-4+0-2+0+0 +hashblocks_sha512 68 17 47 +37+16+8+3+0-2+0-5+1-2+1+0-4+0-2 +hashblocks_sha512 68 26 47 +39+14+12+5+4+1-3-5+0-2-1+2-4-2-1 +hashblocks_sha512 68 40 49 +37+12+11+1+0+2-2-6-2+0-3-7+1-7-2 +hashblocks_sha512 68 61 47 +6+9+6+9+4+3-1-2-2+0-2-1+1-2-2 +hashblocks_sha512 68 92 46 +41+16+10+8+7+0+0+0-5+1-2+1+0+0-1 +hashblocks_sha512 68 139 1071 +4634+75+38+97+8+0+75+15-12-12-16-18-22-20-21 +hashblocks_sha512 68 209 1059 +54+25+24+21+9+0+1+0-2-1-9-13-19-21-21 +hashblocks_sha512 68 314 2024 +148+115+106+88+2-6+0-2+55-17+37-16-30-18-30 +hashblocks_sha512 68 472 2966 +223+225+131+25+30+0-2-8+3+5-5-11-1-26-24 +hashblocks_sha512 68 709 4893 +355+223+113+66+26+49+24-2+0-18-66-68-36-33-37 +hashblocks_sha512 68 1064 7868 +348+366+153+63+17+0+30-49-107-157-78+15-30-63-64 +hashblocks_sha512 68 1597 11698 +519+275+91+33+4+5-115+0-13+14-41-117-84-55-74 +hashblocks_sha512 68 2396 17403 +581+185+199-35-87-123+12-37-90+108+13-36+140-29+0 +hashblocks_sha512 68 3595 26983 +1017+383-86-76+0-117+8+26-18+1576+351+36-148-51-68 +hashblocks_sha512 68 5393 40357 +1249+12-98-22-71+34+0-6+39-4+91+73+52-75-139 +hashblocks_sha512 68 8090 60384 +1607-73+0-116-2+223+80-3-86-1+27-94+99+9+82 +hashblocks_sha512 68 12136 90060 +1432-205-27+19+14-103-42-102+144+201-97+34-222+20+0 +hashblocks_sha512 68 18205 135877 +935+64-66+1420+146+33-87-37+56-15-191+0-34+76+0 +hashblocks_sha512 68 27308 203699 +1142-126-76-177-82-174-32+0+154+222+168+38+1600+91-221 +hashblocks_sha512 68 40963 305834 +1600+235-53-159-123+219-65+9-123+1342+638+0+38-18-145 +hashblocks_sha512 68 61445 460300 +890+0-28+2329-36+179-3-29+102-329-111+399+46+610-452 +hashblocks_sha512 69 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 69 0 78 +1785+33+25+0+1+3+5+0+13-9-8-6-10-9-11 +hashblocks_sha512 69 1 77 +32+0+1+1+4+1+0-3-4+0-6-6-6-6-7 +hashblocks_sha512 69 2 76 +35+2+1+2+4+3+0-1-3+2-4-5-3-5-3 +hashblocks_sha512 69 4 76 +36+1+1+2+4+3+0-1-3+1-6-5-5-4-5 +hashblocks_sha512 69 7 77 +32+1+0+2+2+2+0+1-4-2-3-6-7-8-7 +hashblocks_sha512 69 11 76 +33+2+1+2+5+2+0-1-4+1-5-9-7-7-8 +hashblocks_sha512 69 17 73 -4+5+5+5+7+5+1+0+0+0-1-1-6-7-5 +hashblocks_sha512 69 26 76 +36+1+1+2+5+3+0-1-3+1-3-4-2-4-3 +hashblocks_sha512 69 40 75 +35+2+2+3+5+5+0+0+0+0-1-2-2-2-2 +hashblocks_sha512 69 61 73 -2+4+4+7+7+3+1+6+0-2-1-4-5-6-6 +hashblocks_sha512 69 92 74 -5+3+5+5+5+4+0+4+0-5-4-6-6-6-6 +hashblocks_sha512 69 139 1146 +3175+71+38+9+15+0+2+3-10-10-15-7-14-3-2 +hashblocks_sha512 69 209 1149 +47+10+11+15+4+0+6-7-5-6-8-10-12+62-13 +hashblocks_sha512 69 314 2209 +103+101+83+47+45+39+0+0-9-7-13-35-23-27-24 +hashblocks_sha512 69 472 3297 +88+89+54+17+7+0+34+17-10-16-26-44-43-46-38 +hashblocks_sha512 69 709 5417 +189+127+48+20+35+1+0-20-19-41-32+0-40-21+26 +hashblocks_sha512 69 1064 8615 +251+189+52+0+39+0-12-4+32+74-28-52-55-28-41 +hashblocks_sha512 69 1597 12895 +333+64+55+52+11+21-72-17-66-22-1+0-24-12+9 +hashblocks_sha512 69 2396 19259 +304+99+17+72-10+18-13-96+46-54+0-23-56+38-2 +hashblocks_sha512 69 3595 29909 +194+204+13-31-30-26+56-52+0+742+47-106-40-130+31 +hashblocks_sha512 69 5393 44836 +265+44+15-243-120+0-95+991+56-196-48+1-65-43+32 +hashblocks_sha512 69 8090 67063 +270+189-91-46-12+0+39-32-46+39-95-94+2099+236+58 +hashblocks_sha512 69 12136 99827 +319+144+11+136-12+0-7+2+48-27-8+61-44-31-107 +hashblocks_sha512 69 18205 150724 +323+39-53-75+94+1092-138-54-55+55+44+69-46-27+0 +hashblocks_sha512 69 27308 226085 +172-70+6-177+149+53-82-446-105+0-185+1586+3069-32+67 +hashblocks_sha512 69 40963 339612 +420+40-166-135-338+0-407+1487+2948-57-425+3192+1066+48-463 +hashblocks_sha512 69 61445 511517 +268+995-784+266-203+113-38-129-159+49+1021+2243-504+0-443 +hashblocks_sha512 70 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 70 0 44 +863+51+23+15+11+9+0-1-1+0-1-2-2-2-2 +hashblocks_sha512 70 1 45 +55+12+18+13+6+1+1-8+0-4-3-3-2-4-1 +hashblocks_sha512 70 2 51 +48+6+7+14+7+6+2+0-5-4-5-7-6-5-7 +hashblocks_sha512 70 4 54 +45+4+12+13+7+8+1+0-8-7-15-9-14-10-12 +hashblocks_sha512 70 7 49 +44+10+13+10+11+3+3-1-5+0-3-5-3-3-1 +hashblocks_sha512 70 11 49 +50+8+11+12+11+8+7+0-1-1-6-4-6-4-6 +hashblocks_sha512 70 17 50 +52+11+8+11+9+6+1+0-1-6-5-6-7-9-5 +hashblocks_sha512 70 26 50 +52+11+9+11+8+8+4+0-3-4-5-8-4-9-4 +hashblocks_sha512 70 40 49 +53+12+9+12+10+7+6+0-3-4-5-5-6-7-5 +hashblocks_sha512 70 61 49 +50+12+9+10+12+6+0-6+0-8-7-3-6-7-6 +hashblocks_sha512 70 92 48 +54+10+18+15+10+9+4+0-1-5-4-6-4-8-5 +hashblocks_sha512 70 139 1055 +3293+135+37+18+86+33+14+0-6-10-17-18-3-17-22 +hashblocks_sha512 70 209 1060 +12+26+24+17+9+0-3-9-18-13+54+10-13-23-22 +hashblocks_sha512 70 314 2026 +150+62+34+17+10+0+42-18-21-29-35-30+45+0-18 +hashblocks_sha512 70 472 2985 +213+152+107+24+2-10-24+2+0-21-27-24+80-12-28 +hashblocks_sha512 70 709 4930 +419+328+279+51-23+37+0-7-26+0-87-105-110-109+17 +hashblocks_sha512 70 1064 7823 +359+208+88+157+74-49-96+0+34-107-31+23-95-131-87 +hashblocks_sha512 70 1597 11708 +395+30+20-65-191-198+883+217+24+0-150+66-142-151-214 +hashblocks_sha512 70 2396 17419 +648+257-48-112-98-119+21+81-7-139+41+47-138+0+57 +hashblocks_sha512 70 3595 26987 +565+56-270-21-92+4+116-49+7-108-6+186+0-101+77 +hashblocks_sha512 70 5393 40349 +871-231+0-5+65-85+114-90-25+107+20+3-8+51-4 +hashblocks_sha512 70 8090 60555 +553-155+54-149-173+8+0+90-86-100+16-59-83+2+36 +hashblocks_sha512 70 12136 90173 +704-143-42+0-70+174-56+154-46+32-26-26+10+49+113 +hashblocks_sha512 70 18205 136089 +944+1411+0-158+6-64+63+34-73-11+139-41+10-118-112 +hashblocks_sha512 70 27308 204259 +522-283-527-347+14-80+0+813+180+53+36-341-449+1141-524 +hashblocks_sha512 70 40963 306687 +1000-126+3371+95-239+50+0+1682+51-69-583+37-62-302-95 +hashblocks_sha512 70 61445 460790 +905+4193-147-3-158-141-70-176+0-427+69+1297+126+321+1766 +hashblocks_sha512 71 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 71 0 78 +547+28-1-1+0-2+1+1+13-9-7+82+0+1-10 +hashblocks_sha512 71 1 72 +28+6+33+7+3+4+0-2+0-5-4-4-5-3-4 +hashblocks_sha512 71 2 73 +25+4+4+8+4+2+0+1+0-3-4-5-5-5-5 +hashblocks_sha512 71 4 77 -8-4+0+2+3+1+2-1+0+1+0-1+0+1+0 +hashblocks_sha512 71 7 76 -7-3+1+4+2+2+5+0+0+0-1+1+0-1+1 +hashblocks_sha512 71 11 73 +23+4+4+8+4+2+0+1+0-3-4-6-6-6-3 +hashblocks_sha512 71 17 73 +28+4+4+8+6+0+1-1+0-4-6-5-5-3-4 +hashblocks_sha512 71 26 72 +27+6+7+7+7+0+4+1-1-3-4-5-3-2-2 +hashblocks_sha512 71 40 74 +27+3+3+7+4+0+0-1-2-5-7+18-6-6-6 +hashblocks_sha512 71 61 78 -1-1-1+2+1+2+1+0+0+0+0+24+0-1+0 +hashblocks_sha512 71 92 75 +33+42+2+3+1+2-3+0+2-4-3-3-8-4-7 +hashblocks_sha512 71 139 1148 +3037+45+10+23+14+11+4+0-8-5-14-14-21-8-20 +hashblocks_sha512 71 209 1148 +48+12+13+8+9+0+5+0+3-10-5-6-15-14-12 +hashblocks_sha512 71 314 2222 +56+61+45+10+10+9+11-4+0-20-23-32-32-31-36 +hashblocks_sha512 71 472 3277 +121+106+70+29+15+18+0+4-4-32-24-39-7-21-33 +hashblocks_sha512 71 709 5401 +245+108+108+43+14+14-23+0-4-5-27+9-12-14-20 +hashblocks_sha512 71 1064 8605 +180+163+87+59+17+28-3+0-6-4-30-47-40+56-28 +hashblocks_sha512 71 1597 12894 +230+92+36+68-25+15-3+0-24-48-27+0+64-49-52 +hashblocks_sha512 71 2396 19256 +261+91+73+24+52-31-107-44+0+0-27-34+35-17-109 +hashblocks_sha512 71 3595 29878 +259+155+50+42+9+76-14-89-56-67-40+0-86-56+65 +hashblocks_sha512 71 5393 44678 +461+381+87+137-6-74-32+0+2-44-19-2-55+10+33 +hashblocks_sha512 71 8090 66951 +432-13-40-82+1+60+48+2+51-129-62+28-124+0-67 +hashblocks_sha512 71 12136 99804 +425+19+5-23+0-189+18-193+31-38+0-137+47-22-93 +hashblocks_sha512 71 18205 150652 +3193+199-4-39+24-28+11+0-37+27+136+34-114-23-68 +hashblocks_sha512 71 27308 225871 +322+141+4+105+43-104-105+1196-47-57-102+12-72-63+0 +hashblocks_sha512 71 40963 339366 +604-81+0+48-156+1779+97-154-116-90-73+1383+185+122-94 +hashblocks_sha512 71 61445 511231 -34+33+0+103-416-90-466+29+1035+54+77-182+3-79-167 +hashblocks_sha512 72 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 72 0 48 +759+51+15+10+11+0-4-1-4-2-2-3+1-5+0 +hashblocks_sha512 72 1 47 +96+8+10+12+14+5-1-7-1-2-1+1-2+0-1 +hashblocks_sha512 72 2 51 +40+9+15+8+6+0-9-6-8-5-2-7-3+119+11 +hashblocks_sha512 72 4 47 +6+13+21+15+11+2+0-6+0-1-1-1-1-1-1 +hashblocks_sha512 72 7 47 +8+15+10+11+9-1+1-2+0+0-1-2+0-1-1 +hashblocks_sha512 72 11 47 +5+13+10+14+8-1-7+0-3-1+1-3+0-1-1 +hashblocks_sha512 72 17 47 +41+19+16+13+12+5-4-1-2-3+0+0-2+0-1 +hashblocks_sha512 72 26 47 +51+14+13+12+7+3-5-3+0-2+0-1+2-5-1 +hashblocks_sha512 72 40 47 +41+14+11+13+8+5-4-4-1+0-1-2+0-1-2 +hashblocks_sha512 72 61 47 +47+12+13+12+9+2-6-1-1-2+0-2-1+0-2 +hashblocks_sha512 72 92 47 +46+11+14+13+7+1-7+1-3+0-2+0-3-1+0 +hashblocks_sha512 72 139 1057 +3915+139+38+19+12+7-7-4+9-1+0-23-22-23-22 +hashblocks_sha512 72 209 1074 +41+11+9+3+0+5+2+1-4-8-8-14-21-18-22 +hashblocks_sha512 72 314 2006 +126+139+128+101+86+109+19+0-6-11-14-19-12-17-24 +hashblocks_sha512 72 472 2988 +201+148+75+0+47+11-20-31-19+67+13-15-15-25-39 +hashblocks_sha512 72 709 4901 +396+221+105+42+10+36+0-11-33-42-91-86-79-11+30 +hashblocks_sha512 72 1064 7875 +343+259+143+133+4+49-147-135-92-77+24+0-72-66-155 +hashblocks_sha512 72 1597 11632 +676+185+88+57-64-65+127+65-66-94+118-15-79-19+0 +hashblocks_sha512 72 2396 17393 +744+183+44-94+105-46-103+0-26+149-19-48-75+23+36 +hashblocks_sha512 72 3595 26957 +926+246+72-48+0-110+67+76-38-41-38+55-22-44+43 +hashblocks_sha512 72 5393 40362 +1203+168-214-49-146+38+104-52-95-63+16+121+70-76+0 +hashblocks_sha512 72 8090 60451 +1130-76-16+101-90+0+4-25-100+0+83+0+69+45+104 +hashblocks_sha512 72 12136 90094 +1481-46+0-157+65+1351+123-28-53-84+5-51+35+56-216 +hashblocks_sha512 72 18205 135839 +875-109+42+69+328+0-149+61-66-35+114+42-64-53-39 +hashblocks_sha512 72 27308 203703 +762+223+1918+166-161-80-62+0-7-204-148+100+115-94+255 +hashblocks_sha512 72 40963 306067 +1658+156+0+1362+543-241-191-187-49+122-49-142+141-21+113 +hashblocks_sha512 72 61445 460390 +648+356+15-407-48-338+0-188-52+1307+40-268+203-101+21 +hashblocks_sha512 73 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 73 0 74 +1796+96+26+1+0+0+14-4+14-5-6-5-6-7-7 +hashblocks_sha512 73 1 70 +36+8+8+11+7+6+1-1+0-3-2-2-3-3-2 +hashblocks_sha512 73 2 70 -1+8+7+11+7+6+6+6+0+0-2-3+0-3-2 +hashblocks_sha512 73 4 73 -4+5+4+7+4+5+5+5+0-1-3-4-5-6-5 +hashblocks_sha512 73 7 70 +0+7+7+9+8+7+3+2-1+0-2+0-2-1+0 +hashblocks_sha512 73 11 71 -2+7+6+10+6+6+5+0+5-2-1-2-2-2-1 +hashblocks_sha512 73 17 71 +35+9+8+7+8+6+6-3+0-1-1-1+0-3+0 +hashblocks_sha512 73 26 71 +34+9+9+7+8+5+5+0-3+0-1-1+0-2+0 +hashblocks_sha512 73 40 76 +30+1+1+5+1+0+0-6+0-6-7-6-9-8-7 +hashblocks_sha512 73 61 69 +36+12+9+10+9+7+6+0-1-1-2+0-2+0-2 +hashblocks_sha512 73 92 78 +27+1+1+1+2+2+1-2+0+0+0+0+0+0+0 +hashblocks_sha512 73 139 1142 +5225+70+158+44+17+7-4+3-2-4+0-13+0-6-17 +hashblocks_sha512 73 209 1146 +65+11+14+21+10+0+3-5-5-6-13-6+1-8-1 +hashblocks_sha512 73 314 2223 +79+123+85+45+0+3+22+5-11-5-24-37-36-18-53 +hashblocks_sha512 73 472 3276 +105+172+115+48+26+12-3+0-22-6-30-34-36-3+18 +hashblocks_sha512 73 709 5400 +240+121+137+20-20+66-2+45-22-13-49-31+0-20+0 +hashblocks_sha512 73 1064 8626 +172+146+53+1+33+23-40+0-14-26-114-18-17-49+18 +hashblocks_sha512 73 1597 12883 +206+128+97+33+0+122-17-81+16-52-52+84-30-73-21 +hashblocks_sha512 73 2396 19234 +333+143+130+115-31+157+70-17-126-54-45-13-33+48+0 +hashblocks_sha512 73 3595 29807 +381+202+376+127+0-114-29+0+4-47-11+90-92-80-48 +hashblocks_sha512 73 5393 44712 +377+135+0+65-67+30+0-25+38+79-53-105-85-6+42 +hashblocks_sha512 73 8090 66994 +351-89+30+81+63+8+44-80-48-48-212+4-117+0-76 +hashblocks_sha512 73 12136 99801 +408+151+37+58-29+39-156+0+1030-167-115-217-192+67-118 +hashblocks_sha512 73 18205 150624 +479+78+1-52-64-146+19+78-104-128-256+0-42+117+57 +hashblocks_sha512 73 27308 225758 +580+86+1264+79-16+140-57-70-17+89+51-138-76+0-24 +hashblocks_sha512 73 40963 339208 +930-24+2151+74-159+195+0+18-40-53+74-50-125+45-143 +hashblocks_sha512 73 61445 511135 -128+149-221+187+5+36+1091-116+0-66-132+159-131-63+138 +hashblocks_sha512 74 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 74 0 46 +740+73+19+16+11+7+3-1-2-4-5+0-1+0-1 +hashblocks_sha512 74 1 50 +51+8+8+9+11+8+4+0+0-3-5-8-7-5-2 +hashblocks_sha512 74 2 51 +41+9+6+9+9+8+3+0-4-4-8-12+0-6-1 +hashblocks_sha512 74 4 49 +13+12+12+15+11+8+3-1-3-6+0-7-1-4-5 +hashblocks_sha512 74 7 47 +17+6+18+16+13+11+7-2-3-5+0-2-2-3-1 +hashblocks_sha512 74 11 48 +49+8+11+5+12+4+0-5-9+0-2-4-2-4-1 +hashblocks_sha512 74 17 54 +41+2+4+7+7+4+3+0-8-5-8-7-15-9-10 +hashblocks_sha512 74 26 54 +6+4+9+11+8+6+1+0-11-13-9-11-8-8-8 +hashblocks_sha512 74 40 51 +48+7+7+14+8+6+4+0-1-5-10-8-3-8-8 +hashblocks_sha512 74 61 55 +39+3+3+5+5+2+0-4-7+0-21-12-8-11-6 +hashblocks_sha512 74 92 49 +45+10+8+11+12+10+4+0-2-1-6+0-9-4-4 +hashblocks_sha512 74 139 1395 +5063+120+51+20+14+15+5+0-5-9-7-9-11-11-12 +hashblocks_sha512 74 209 1396 +70+11+22+15+15+8+7+0-4-7-12-13-13-18-16 +hashblocks_sha512 74 314 2701 +102+92+77+58+40-30-34-45-43-24+0+14-22+13-32 +hashblocks_sha512 74 472 3963 +222+144+118+29+14-7-4-8-10-18-16-15+0+11+13 +hashblocks_sha512 74 709 6587 +330+172+56+0+35+61-16-21+25-6-13-24-51+23-32 +hashblocks_sha512 74 1064 10470 +378+298+185+128+102+21+27+0-15-45-25-13-59-33-24 +hashblocks_sha512 74 1597 15649 +611+312+105+58+12+0-21-16-54-58-13-41+84+8-32 +hashblocks_sha512 74 2396 23432 +698+216+29+42-50+3+87-17-79-2-25+10+0-43-12 +hashblocks_sha512 74 3595 36343 +841+388+52-8-2-11-9+23+105-7+0-22+5+16-16 +hashblocks_sha512 74 5393 54506 +961+109+20+0-53+56-33-43+16-14+82-28-24+7-55 +hashblocks_sha512 74 8090 81680 +617-67-6+78-27+19-13+85-49-18+17-1+29+0+16 +hashblocks_sha512 74 12136 121774 +1223-39+34+42-12+59-16+117+3+0+128-31-1-9-5 +hashblocks_sha512 74 18205 183910 +1215+8-47+831+73+0+44-8-89-18+44-42-16+7-120 +hashblocks_sha512 74 27308 275908 +866+11+54+12-63+0+877-47-142-5+28-11+65-123-12 +hashblocks_sha512 74 40963 414494 +1031-50-92+1220-193-128-228-68+12+55-81+31+4+0+1090 +hashblocks_sha512 74 61445 622819 +929+87+62-200+689-196-71+134+0-141-165-61+729-157+30 +hashblocks_sha512 75 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 75 0 78 +478+56-3+0-1+0+1-1+11-9-5+72-1+3-8 +hashblocks_sha512 75 1 75 +33+2+0+2+0+2+1+3-3-1-7-5-6-9-10 +hashblocks_sha512 75 2 72 +34+5+5+6+5+5+4-2+0-4-2-4-3-3-5 +hashblocks_sha512 75 4 77 -7+0+0+0+0+0+1+0-1-4-8+27-9-8-8 +hashblocks_sha512 75 7 73 -3+4+4+6+1+4+2+2+0-3-6-4-4-3-4 +hashblocks_sha512 75 11 74 +31+3+3+5+0+1+2+2-1-4-6-4-5-4-5 +hashblocks_sha512 75 17 70 +36+7+8+7+7+7+4-1-1-1+0-2-1+0+0 +hashblocks_sha512 75 26 74 -4+3+3+5+0+3+1+1+1-6-7-5-5-4-5 +hashblocks_sha512 75 40 75 +30+2+2+2+3+1+0+4-2-3-6-6-6-5-6 +hashblocks_sha512 75 61 70 +40+7+9+9+8+6+6-2-2-3-2-1+0-1-1 +hashblocks_sha512 75 92 76 +29+1+1+0+2-2+1+1+0-7-8-9-10-7-9 +hashblocks_sha512 75 139 1396 +2976+76+43+7+9+0+9+0-9-9-13-10-8-21-16 +hashblocks_sha512 75 209 1391 +53+26+12+12+9+8+2+0-1+0-1-10-3-5-11 +hashblocks_sha512 75 314 2706 +151+137+81+15+5-4+13-4-14-33-27-16+0+1-39 +hashblocks_sha512 75 472 4035 +140+51+7+6+3-6+6-13+0-25-32-57-53-40+26 +hashblocks_sha512 75 709 6624 +225+122+83+36+39-9-10+42+0-16-24+21-20-28-2 +hashblocks_sha512 75 1064 10601 +193+136+51+11+14-13-22-32-22+71+6-67-42-34+0 +hashblocks_sha512 75 1597 15886 +283+2079+205+28-40-6+0-22-63-37+48+714+225-4-58 +hashblocks_sha512 75 2396 23732 +302+94+115+11-83-115+63-15-38+79-13-63+88-15+0 +hashblocks_sha512 75 3595 36892 +157+267+21+21-109+41+0-57+63-1-25-52-105-41+71 +hashblocks_sha512 75 5393 55370 +93+5+0-99-94-80+88-181+25-145+37-113+80-92+87 +hashblocks_sha512 75 8090 82943 +179+27-246-31+116+41-41-19+16+26+9-78-110+0-114 +hashblocks_sha512 75 12136 123606 +208-57+140-37+143+0+1171+2074+212+21-146+0-71-55-220 +hashblocks_sha512 75 18205 186720 +34+0+15-74-21+36+36-51-65+31-37-55-49+24+41 +hashblocks_sha512 75 27308 279959 +207-8-183-58-92+721+128+484+82-178+977+1837-56+0-96 +hashblocks_sha512 75 40963 420609 +238+135-76-190-6-40-200+20+1190+3181+307+178+0-245-209 +hashblocks_sha512 75 61445 633169 +732+0-242+24-77-355-447-129+427+65+395-523+218-125+1 +hashblocks_sha512 76 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 76 0 56 +1547+102+71+36+33+7+4+0-3-2-6-7-3-6-4 +hashblocks_sha512 76 1 50 +43+7+6+8+4+3-2-2+0+95-7-3-8-3-8 +hashblocks_sha512 76 2 52 +41+4+4+10+9+2+5+0-8-9-7-6-8-3-8 +hashblocks_sha512 76 4 50 +46+5+4+12+11+9+0+1-1-6-1-12-4-1-3 +hashblocks_sha512 76 7 50 +42+9+6+11+9+8+0+0-1+91-4-5-1-4-3 +hashblocks_sha512 76 11 50 +44+5+4+13+13+4+11+0-2-6-7-4-6-4-5 +hashblocks_sha512 76 17 49 +7+9+10+13+8+9+4+0-4-2-9-6-5-4-5 +hashblocks_sha512 76 26 49 +0+10+12+12+6+6+3+1-3-6-4-2-7-6-2 +hashblocks_sha512 76 40 50 +40+9+5+3+11+5+9+0-4-5-2-13-8-7-3 +hashblocks_sha512 76 61 50 +42+9+6+11+9+8+0+0-1-8-6-6-5-4-5 +hashblocks_sha512 76 92 47 +8+11+15+12+1+6-1-3-1-5+0+0-2-3-3 +hashblocks_sha512 76 139 1366 +3006+156+51+13+3-2+0-8-7-11+6-6+1-14-12 +hashblocks_sha512 76 209 1370 +46+18+15+12+8-2-5-8-14-13-17+3+0-2+1 +hashblocks_sha512 76 314 2655 +166+84+22+5+0+8-12+14+15-51-58-72-70-69-73 +hashblocks_sha512 76 472 3866 +234+176+91+62+43+2-12-4-8+11+0-19-3-17-12 +hashblocks_sha512 76 709 6386 +365+320+231+32+6+5-12+0-11-23-34+3-8-26-4 +hashblocks_sha512 76 1064 10220 +363+360+82+23-23+14+84+5-17-21-4-39-32-1+0 +hashblocks_sha512 76 1597 15257 +529+252+44-1-3+19+60-25-23-19+2-5-16+67+0 +hashblocks_sha512 76 2396 22865 +626+97+3-55-19+8+77+4+0-11+15-32-17-11-33 +hashblocks_sha512 76 3595 35525 +739+41-80-42+51-13+1+64+13+4-1-40-21-10+0 +hashblocks_sha512 76 5393 53214 +709+0-69+51+20-14+14-26-7+94-78-15-40+18+84 +hashblocks_sha512 76 8090 79783 +549+156-60+2678+18+60-69-28+11+21-116-64-122+0-39 +hashblocks_sha512 76 12136 118915 +355-68+62-53+124-4+104-122+0-64-42+5+87-88+120 +hashblocks_sha512 76 18205 179572 +657+0-22-157+1514+81+90-81-55-192+163+110+31-63-52 +hashblocks_sha512 76 27308 269299 +534+67-118+0-187-47+83+1178+3124+223+53-78-178-92-130 +hashblocks_sha512 76 40963 404561 +583+1520+1741-36+4458+732+246+243-133-108-186-167-171+0-168 +hashblocks_sha512 76 61445 608169 +156-85-104-38-155+4099-23+202+166+0-75-26+792+880+134 +hashblocks_sha512 77 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 77 0 74 +929+57+2+2+3+0+1-1+15-4-4-6-9-7-7 +hashblocks_sha512 77 1 69 +36+6+7+8+11+3-2-1-1+0+0+0-1+0-1 +hashblocks_sha512 77 2 71 -4+5+2+9+3+1+1-3+0-4-3+30-2-3-3 +hashblocks_sha512 77 4 69 -2+83+18+7+7+7+4+0-1-3-2-2-1+0+1 +hashblocks_sha512 77 7 68 +0+6+8+10+8+9+8+0-1-1-1+0+0-2-1 +hashblocks_sha512 77 11 72 -4+1+5+6+2+0+0-5-5-4-3+31+3-6-4 +hashblocks_sha512 77 17 68 -1+8+5+11+7+6+5+0+0+0+0+0+0+0-1 +hashblocks_sha512 77 26 70 -4+5+3+9+8+5+5+0-3-3-3+34-2-2-2 +hashblocks_sha512 77 40 72 +18+4+5+7+7+0+1-4-4-3-4+31-3-4-4 +hashblocks_sha512 77 61 72 +19+4+5+6+7+0+1-4-3-5-4+30-4-3-5 +hashblocks_sha512 77 92 70 -3+3+6+8+6+5+5+0-3-3-2+21+0-2-1 +hashblocks_sha512 77 139 1417 +4646+32+1+2+71+78+6+0-10-12-17-16-22-25-31 +hashblocks_sha512 77 209 1406 +8+10+17+11+11+4+0-2+0+3-10-9-20-16-18 +hashblocks_sha512 77 314 2726 +100+65+61+30+33+22+8+0-2-7-8-16-15-25-28 +hashblocks_sha512 77 472 4063 +101+121+81+19+19+11+9+0-35-32-44-40-40-21-43 +hashblocks_sha512 77 709 6702 +180+142+98+38+11-35+15+0+30-7-35-36-28-31-11 +hashblocks_sha512 77 1064 10720 +225+69+46+0+13-58-15+22-47+106-6-34+24-83-73 +hashblocks_sha512 77 1597 16005 +168+75+37+40+87+0-4-35+96-1-16-102-121-3+77 +hashblocks_sha512 77 2396 23965 +264+56+0+17+4-90-56-45+68-86-20+865-48+7-65 +hashblocks_sha512 77 3595 37258 +907+87+9-16-113-133+58-30+40-2-80+0-111+0+20 +hashblocks_sha512 77 5393 55832 +221+59-57-38+1+84-24-10-74+19-63+0-15+100+25 +hashblocks_sha512 77 8090 83647 +193-58-48+4-76+81+0-8-48+25+48+211-36+60-74 +hashblocks_sha512 77 12136 124794 +0-187-29+15-31+40-36+16+50-66+682+102-146+81-47 +hashblocks_sha512 77 18205 188439 -51+91+185+0+53-1-22+58-156-16-3+2-34+65+27 +hashblocks_sha512 77 27308 282621 +790-174-145+56-231-119+38+61+22+48-57-56-48+23+0 +hashblocks_sha512 77 40963 424564 +325-58+0-69-330-112-122-19+58+880+314+117+17+38-105 +hashblocks_sha512 77 61445 638113 -430+509+107-77+81+115+57-65+421-223-41-136+121+0-177 +hashblocks_sha512 78 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 78 0 48 +2000+89+22+13+11+5+0-2-2+0-1-1-1+0+97 +hashblocks_sha512 78 1 50 +34+9+13+12+2+0-4+0-1-1-2-1+0-1-2 +hashblocks_sha512 78 2 49 +41+9+7+6+9+8+4-1-4-2-2+0-2-2+0 +hashblocks_sha512 78 4 51 +41+4+5+14+9+3+0+1-2-2-3-4-5-4-4 +hashblocks_sha512 78 7 50 +2+16+16+8+6+0-4+2-2-1-1+0-2+0-2 +hashblocks_sha512 78 11 50 +5+10+12+11+4+0-5-5+0-5-3-3-3-2+0 +hashblocks_sha512 78 17 49 +6+10+11+7+1-3+0+0+0+1+0-1+1+0-1 +hashblocks_sha512 78 26 48 +5+12+15+8+6+3+0-1-4-1+1+0-1+0+0 +hashblocks_sha512 78 40 48 +41+11+8+8+16+5-1+1+0+0+0+0-1+0+0 +hashblocks_sha512 78 61 49 +41+8+8+7+8+8+2+0-4-2-1-1-1-1-1 +hashblocks_sha512 78 92 50 +42+9+6+6+8+3-6-4+1-1-1-2-1+0-1 +hashblocks_sha512 78 139 1073 +4091+97+99+0-17-38-40+32+54-15+42-21-41+14-33 +hashblocks_sha512 78 209 1045 +42+7+14+3+2+0-5-14-9-10-20-23-29+48+11 +hashblocks_sha512 78 314 1979 +99+111+100+92+124+33-5-18-36-36-26+40+0-17-33 +hashblocks_sha512 78 472 2913 +214+190+109+80+60+27+14+0-10-28-5-8-1-16-27 +hashblocks_sha512 78 709 4798 +393+331+123+7+56+0-26-16+68+138-16-30-73-69-68 +hashblocks_sha512 78 1064 7674 +368+269+155+109+61+0+17-68-68-76-112+72-56-27-100 +hashblocks_sha512 78 1597 11381 +610+154+100+132+51-28-45+0-32-15+16-38+16-12-3 +hashblocks_sha512 78 2396 17056 +624+189+61-33-129+39+0-82-1-37+9-51+40+17-4 +hashblocks_sha512 78 3595 26497 +810+144-138+48-60+0-4+111+22-60+101-40-57-78+81 +hashblocks_sha512 78 5393 39630 +865-69+104-49+84-53-28-66+2+0+16+10-17+50-126 +hashblocks_sha512 78 8090 59380 +795-100-74+42-43+13+72+57-95+0-149+880-47+27-116 +hashblocks_sha512 78 12136 88442 +725+59+31+174+0-25+53+74-25+26-49-180-42-2-66 +hashblocks_sha512 78 18205 133445 +833+127+0-89-41+72+40-15-34-24-15+157-142+253+62 +hashblocks_sha512 78 27308 200149 +844-33+71-118-64+896+0-35+41-60-93-144+62+79+165 +hashblocks_sha512 78 40963 300542 +1805+742-49-199+21+0-79-122-256+204+15+37-173-317+105 +hashblocks_sha512 78 61445 452744 +792-72+167-44+0+83-48+71+746-271-29-99+1214+1302-29 +hashblocks_sha512 79 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 79 0 74 +1693+106+28+4+4+4+0-1+15-6-7-6-6-4-6 +hashblocks_sha512 79 1 70 +27+4+6+11+7+4+1+0+0-2-2-1-1-1-1 +hashblocks_sha512 79 2 70 +18+4+6+10+7+6+3+0-4-4-3-2+0-2-2 +hashblocks_sha512 79 4 69 +20+6+8+11+7+7+4-1-1-1-1+0+0-2-2 +hashblocks_sha512 79 7 73 +16+2+3+7+4+0+0-5+16-6-6-2-4-3-6 +hashblocks_sha512 79 11 70 -1+5+6+8+7+5+3-1+0-3-3-2-2-2+0 +hashblocks_sha512 79 17 70 +39+4+7+9+7+4+2+0+0-2-2+0-3-1-4 +hashblocks_sha512 79 26 70 -1+7+4+9+8+4+1+0+0-2-3-2-2-1-3 +hashblocks_sha512 79 40 69 +40+5+8+10+8+5+3-1+0-1-1-1+0+0+0 +hashblocks_sha512 79 61 69 +1+5+7+10+9+5+2-1+0-1-2-2+0+0+0 +hashblocks_sha512 79 92 70 +39+4+7+10+7+4+3+0-1-3-2-3-2-3-1 +hashblocks_sha512 79 139 1166 +2941+66+144+43+0+5+1+8-4-4-16-15-14-8-21 +hashblocks_sha512 79 209 1160 +48+34+5+18+11+3-1+0+1-2-8-9-4-15-15 +hashblocks_sha512 79 314 2253 +54+95+65+15+18+8+2+0-21-14-22-26-29-38-37 +hashblocks_sha512 79 472 3325 +94+144+75+17+18+15+14+0-40-35-33-38-35-41-37 +hashblocks_sha512 79 709 5456 +193+102+106+25+19+66-3-15+21-5-22-14-10+0-24 +hashblocks_sha512 79 1064 8703 +170+136+95+23+16+42+0-8+8+0-21-12-31-13-24 +hashblocks_sha512 79 1597 13061 +210+63+54+4+31+0+4-19+7-33-49-13-51-24-38 +hashblocks_sha512 79 2396 19485 +385+142+66+32-16-43+14-1-52-1-3+33-17+38+0 +hashblocks_sha512 79 3595 30290 +357+159+84+8+10+44-5-19+0+21-8-37-59-8-40 +hashblocks_sha512 79 5393 45489 +307+115+81+32+0+16+19-59-36+1-37-28-26-36-15 +hashblocks_sha512 79 8090 68190 +135+899+2116+94+69+66+19-14+0-41-64-10-42-61-14 +hashblocks_sha512 79 12136 101620 +113+72+923+278+3102+2317-110+30+0-233-248-323-280-238-207 +hashblocks_sha512 79 18205 153050 +587+123-9+3+66-3-72+35+12-66+187+0-12-7-94 +hashblocks_sha512 79 27308 230136 -150-591-584-595+0+130+105+11+84+29+5-221-11+15-47 +hashblocks_sha512 79 40963 345759 +4434+1101+182+104-770-882-1161-930+1471+416-69+0-6+1176-126 +hashblocks_sha512 79 61445 520818 -483-1111-714+0-834-58-557+1687+158+115+75+213-223+49+188 +hashblocks_sha512 80 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 80 0 46 +1046+75+19+13+8+4+0-1+0-3-4-3+2-5-5 +hashblocks_sha512 80 1 47 +62+12+6+17+15+12+3-1-2-5-3+0-7-6-4 +hashblocks_sha512 80 2 54 +54+1+4-5+2+0+108+9+4-11-9-12-14-5-15 +hashblocks_sha512 80 4 50 +59+12+3+8+8+7+0-1-11-6+0-10-10-2-6 +hashblocks_sha512 80 7 48 +56+10+18+9+11+4-5-3-10-7+0-8-8+1-10 +hashblocks_sha512 80 11 48 +56+13+8+14+9+8+4+0-7-6-7-7-2-6-4 +hashblocks_sha512 80 17 49 +15+8+4+7+10+9+4+0-10-1-8-5-5-3-7 +hashblocks_sha512 80 26 44 +24+10+14+13+3+1+3-1-2-1+0-2-1-3-2 +hashblocks_sha512 80 40 46 +56+18+17+10+10+2-1-5-2+0-7-3+0-6-2 +hashblocks_sha512 80 61 48 +10+13+7+8+11+4+0-6-4-5-11+2-8-5-7 +hashblocks_sha512 80 92 47 +15+13+9+13+2+1-5-6-5-4+1-6-3+0-3 +hashblocks_sha512 80 139 1048 +3209+182+38+21+8+8-1+0-6-5-8-12+2-10-18 +hashblocks_sha512 80 209 1056 +21+13+21+11+6-3-3+15-2-6-1+11-2+0-8 +hashblocks_sha512 80 314 2010 +118+111+104+83+68+0+98+22+0-25-26-24-26-22-34 +hashblocks_sha512 80 472 2953 +231+214+176+56+33+5-3+0-10-9-11+14-10-20-16 +hashblocks_sha512 80 709 4872 +412+319+237+26+108+40+18-4+0-57-49-75-77-33-80 +hashblocks_sha512 80 1064 7754 +401+329+239+132+73+44-2-57-8-4+183+0-54-50-56 +hashblocks_sha512 80 1597 11593 +537+395+145+93-2-79+195-33-67+48+0-19-11-15+70 +hashblocks_sha512 80 2396 17343 +774+221+124+0+47-86+25-40-35+36-6-38-14+28-35 +hashblocks_sha512 80 3595 26925 +862+264+26+8+21-92+0-43-28-30+137-52-15-61+21 +hashblocks_sha512 80 5393 40264 +1019+82-148+49-2+0+12-40-14-41+34+23-46-29+1 +hashblocks_sha512 80 8090 60339 +865-147+55-91+92-18+0+38+56-43+9-92-16-150+7 +hashblocks_sha512 80 12136 89941 +1502-227+16-94-15+30+119-83-8+44+130-62-97+53+0 +hashblocks_sha512 80 18205 135912 +1385-222+985+664-22+81+841+0-170-137+1019-191-156+3178-224 +hashblocks_sha512 80 27308 203561 +1069-6+214+39-6-98-72+45+196-92+27+0-54+79-14 +hashblocks_sha512 80 40963 306022 +939-83-214-4+110-433-9-102+24-26+31+0+77+5193+512 +hashblocks_sha512 80 61445 460594 +645+85+49+103-305+1037+163-438-400-540+1525-292-135-161+0 +hashblocks_sha512 81 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 81 0 76 +583+77+5+3+2+3+0-3+12-9-4-8-7-8-7 +hashblocks_sha512 81 1 70 +47+4+6+9+7+8+5-4-3-3-3+0-1+0-3 +hashblocks_sha512 81 2 70 +50+4+6+9+8+4+1+0+0-2-2-2+0-2-3 +hashblocks_sha512 81 4 68 +2+8+8+11+9+6+4+0+0-1+0-1-2-1-2 +hashblocks_sha512 81 7 70 +3+8+6+8+9+9+3-1-3-2-2-1+0-1-3 +hashblocks_sha512 81 11 71 +0+5+5+8+0+1+1+0+1-4-5-5-3-3-3 +hashblocks_sha512 81 17 70 +1+7+8+8+4+0+3+0-3-3-3-3-2-2-3 +hashblocks_sha512 81 26 71 +2+7+5+7+8+8+2-1-4-3-4-3+0-5-4 +hashblocks_sha512 81 40 70 -2+8+5+8+1+0+2+1+0-3-4-3-3-2-2 +hashblocks_sha512 81 61 69 -2+9+6+9+2+1+2+3+0-2-3-2-1-2+0 +hashblocks_sha512 81 92 70 -2+8+5+8+1+0+2+0+0-2-2-2-1-2-1 +hashblocks_sha512 81 139 1163 +3174+61+9+11+9+4+0+2-3-8-19-15-19-14-8 +hashblocks_sha512 81 209 1161 +16+11+14+19+12+9+12-5+0-4-4-18-12-14-16 +hashblocks_sha512 81 314 2239 +73+55+41+32+19+41+17+0-13-15-8-16-30-22-17 +hashblocks_sha512 81 472 3325 +105+76+57+52+17+10+17-21-14+0-31-38-43-26-20 +hashblocks_sha512 81 709 5484 +182+113+94+52+25+22+0-26-33-16-41-35-48-17+40 +hashblocks_sha512 81 1064 8720 +266+222+100+26+14+7-38-8+26-21+0-52-49-17-28 +hashblocks_sha512 81 1597 13080 +198+78+43+9-47+0+8-80-168-103-106+43-99-64+23 +hashblocks_sha512 81 2396 19491 +297+130+100+63-50+7-20-80-84+102+52-49-52-56+0 +hashblocks_sha512 81 3595 30263 +305+146+88-151-2-65-66+40+0-11+31-33+11+10-22 +hashblocks_sha512 81 5393 45410 +362+128-248+0-44+16+121-48+67-16-32-45-4+7+13 +hashblocks_sha512 81 8090 68036 +377-148+28+59+862-166+0-47-75+12-138+13-99-33+12 +hashblocks_sha512 81 12136 101367 +316-362-34-181-119-161-148+72+10+36+0+16+20+8-47 +hashblocks_sha512 81 18205 153013 -58-109+0+114+7-95-128-57+177-63+103+604-220+281+132 +hashblocks_sha512 81 27308 229634 +72+15-474-7-33+182+13-378+37-440+0-373-273+68+986 +hashblocks_sha512 81 40963 344903 +513-494+226-795-708+0+130+176-548+93+1753-512-555-625+246 +hashblocks_sha512 81 61445 519130 +543+699+750-379-401+404-1199-29-578-215-119+667+1084+0+789 +hashblocks_sha512 82 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 82 0 54 +2010+92+8+12+10+7+4+0-8-2-10-7-5-4-7 +hashblocks_sha512 82 1 47 +53+15+14+10+9+4+0+2+0-5-6-2-5-4-4 +hashblocks_sha512 82 2 50 +48+9+13+14+11+6+1-1+0-5-2-8-5-10-5 +hashblocks_sha512 82 4 49 +51+18+14+9+11+8+6-2-1-5-2-3-4-8+0 +hashblocks_sha512 82 7 48 +52+9+19+14+20+13+6+0-4-7-2-4-1-5-5 +hashblocks_sha512 82 11 48 +48+13+7+11+15+5+6-3+0-2-3-3-3-7-1 +hashblocks_sha512 82 17 46 +63+17+20+18+12+5+2-3+0-1+0-3-3-1-7 +hashblocks_sha512 82 26 48 +49+13+8+10+7+5+1-4-4-3+0-7-4-4-4 +hashblocks_sha512 82 40 58 +5+0+7+8+7+3+0-3-10-16-12+82-14-13-15 +hashblocks_sha512 82 61 48 +14+12+19+19+12+12+4-3-5-2-4-7+0-5-5 +hashblocks_sha512 82 92 52 +9+7+13+12+13+9+10+0-4-10-8-6-9-6-12 +hashblocks_sha512 82 139 1049 +4077+62+140+37+13+10+0+10-5-8-16-15-16-19-21 +hashblocks_sha512 82 209 1057 +55+17+20+16+11+12+11-8-5-8-8-9+0-13-5 +hashblocks_sha512 82 314 2009 +115+110+104+85+14+0-1-8+10+35-20-25-25-29-32 +hashblocks_sha512 82 472 2971 +192+196+171+79+0-12-10-12+4-30+39+1-16-24-28 +hashblocks_sha512 82 709 4848 +412+368+147+113+49+24+32+0-27-22-31-32-46-54-38 +hashblocks_sha512 82 1064 7764 +448+404+196+123+61+113+87+0-67-32-39-50-66-56-69 +hashblocks_sha512 82 1597 11586 +585+118+257+98-17-66-74-98+0-15+10-54-6+48+28 +hashblocks_sha512 82 2396 17362 +819+232+304+0-106-186-100+7-123+85-82-111-58+34+7 +hashblocks_sha512 82 3595 26924 +811+129-174-85+146+70-24-26+92-10+0-41-77+90+51 +hashblocks_sha512 82 5393 40342 +833-138+61-23-85+164-76-41-21+40+10+40+0+44-177 +hashblocks_sha512 82 8090 60378 +1236-311+103+96-17+55-36+177-43+107-13-12+0+93-67 +hashblocks_sha512 82 12136 90038 +700+16+11+52-122+1-42+47-46-122-114-47-14+0+35 +hashblocks_sha512 82 18205 136007 +1459-475+174-236+29-45-178+46+82+27-101+21-69-44+0 +hashblocks_sha512 82 27308 203814 +598+57-321+67+0+112-32-71+25+601+365-59-476-89-245 +hashblocks_sha512 82 40963 306076 +1140+1648+238-25-264-39-323+2315+2656+311-111+0+196-122-410 +hashblocks_sha512 82 61445 460942 +366+56+4400-574+270-402-197-68-593-162+443-847+1015+0+38 +hashblocks_sha512 83 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 83 0 75 +1911+53+0+4+1+1+1-3+14-6-5-7-6-6-6 +hashblocks_sha512 83 1 71 +32+4+5+7+5+2+0-3+0-4-3-2-2-2-3 +hashblocks_sha512 83 2 73 +18+3+4+5+0+2+3+2-4-3-3-5-6-6-6 +hashblocks_sha512 83 4 74 +17+2+4+3+1+1+0+1-3-5-7-7-7-7-5 +hashblocks_sha512 83 7 72 -4-5+5+4+4+4+4+1+2+0-3+0-2-4-4 +hashblocks_sha512 83 11 73 +18+3+5+5+1+1+1+0-4-3-6-5-5-4-4 +hashblocks_sha512 83 17 72 -4-5+6+4+3+5+4+0-1+1-4+0-2-5-4 +hashblocks_sha512 83 26 74 +19+1+2+5+0+3+1+0-4-4-6-6-8-8-7 +hashblocks_sha512 83 40 70 -2+0+6+9+5+4+3-1+0-2-2-1-1+0-3 +hashblocks_sha512 83 61 70 -2-3+6+7+7+4+4+1-1-2-2+0+0-2-1 +hashblocks_sha512 83 92 70 -2+0+6+7+9+4+6+2-1-2-2+22-3-1-1 +hashblocks_sha512 83 139 1167 +13322+127+0+5-9-1+2+2+5+0-9-5-9-2-4 +hashblocks_sha512 83 209 1161 +42+10+11+16+10+7+3+0-8-13-3-15-20-5-18 +hashblocks_sha512 83 314 2255 +27+38+51+12+0+5+5+8-16-11-24-6-34-44-37 +hashblocks_sha512 83 472 3334 +95+84+41+50+9+0+0-21-21-28+14+15-35-24-25 +hashblocks_sha512 83 709 5479 +176+64+98+10-10+34-10+0+27-11+41-11+0-4-9 +hashblocks_sha512 83 1064 8750 +151+141+25-27-25+15-47+1917+181+40+0-10-36-36-23 +hashblocks_sha512 83 1597 13030 +245+120+127+23+5+60+3-123-114-113-82-21-42+0-16 +hashblocks_sha512 83 2396 19438 +374+169+147+138-44+74-41-52+13-95-51+0+27-47-20 +hashblocks_sha512 83 3595 30179 +396+226+84+28-162+31-107-93-14-56+0-2-52+978+268 +hashblocks_sha512 83 5393 45124 +524+235+256+7+68+0+120+123-13-11-48-35-47-27-12 +hashblocks_sha512 83 8090 67613 +560+21+340+188+92-15+114+66+0-71-88-24-57-57-40 +hashblocks_sha512 83 12136 100683 +780+112+202-50+3-7+12-78+15-31-70+0-12+138-26 +hashblocks_sha512 83 18205 152130 +519+991+1185+2961+5-60-42-81+53-42+0-51-58-103+27 +hashblocks_sha512 83 27308 228072 +493+97-76-114+79+4+19-78+1547+36-66-31+0-56-84 +hashblocks_sha512 83 40963 342589 +1112-24-142+0-185-149+2050+26-122+130+13+21-5-140+1606 +hashblocks_sha512 83 61445 516202 +334+272-62-165-176-129+37-364-29+1446-104+132+0+263+171 +hashblocks_sha512 84 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 84 0 54 +1071+65+11+6+7+6+2+0-5-6-9-9-12-11-11 +hashblocks_sha512 84 1 54 +47+13+8+7+4-3-7-7+105+10+0-6-8-10-8 +hashblocks_sha512 84 2 52 +38+6+14+15+12+10+6+0-1-8-4-6-7-8-7 +hashblocks_sha512 84 4 47 +68+17+21+15+11+8+0-3-2-3-1-2-2-7+0 +hashblocks_sha512 84 7 49 +39+12+12+14+9+7+2-4+0-4-2-6-4-4-3 +hashblocks_sha512 84 11 47 +46+20+17+15+16+11+7+0-3-2-1+0-6-4-7 +hashblocks_sha512 84 17 53 +35+4+12+14+13+7+6+0-1-2-6-7-6-9-10 +hashblocks_sha512 84 26 57 +30+0+10+9+8+6+4+0-4-5-11-7-13-12-11 +hashblocks_sha512 84 40 45 +10+13+17+18+11+6+2-2-2-2+0-4+0-3-4 +hashblocks_sha512 84 61 51 +2+8+11+12+8+4+4-4+0-11-5-3-6-9-12 +hashblocks_sha512 84 92 48 +7+10+16+13+10+6+3-1+0-4-2-4-5-5+0 +hashblocks_sha512 84 139 1059 +3928+198+85+44+9-1+0-7+9-11+3-22-21-10-12 +hashblocks_sha512 84 209 1064 +50+15+15+9+7+5-4-5-11-15-15-19+0+1+0 +hashblocks_sha512 84 314 1998 +166+125+112+93+29+11+9+0-6-12-13-9-20-10-13 +hashblocks_sha512 84 472 2969 +195+203+138+31+10+91+25+0-9-22-15-21-11-24-4 +hashblocks_sha512 84 709 4886 +359+208+94+29+0+0-10+9+79-13-85-69-95-40-11 +hashblocks_sha512 84 1064 7748 +413+223+202+130+79+34+51-55-34+0-46-50-57-25-52 +hashblocks_sha512 84 1597 11624 +610+149+141+0+12-149+61-70-126-66-7+72+7-52-20 +hashblocks_sha512 84 2396 17335 +755+354+202+59-53-23-82-5+11-21+69+32-28+0-41 +hashblocks_sha512 84 3595 26910 +1079+200+28-159-5+115-1+0+96-8+46-26-111-4+79 +hashblocks_sha512 84 5393 40292 +728-67-131-51+59-8+110+147-43+41+104-98+0-30+51 +hashblocks_sha512 84 8090 60348 +1032-322+113-36+178+128+40+82-65-16-1-30+0+196-16 +hashblocks_sha512 84 12136 90058 +565-43-93-173-85+1319-105+128+108+1-5-254+57+6+0 +hashblocks_sha512 84 18205 135903 +399-302-105-136+72-135-87-53-90+0+43+141+31+22+59 +hashblocks_sha512 84 27308 203768 +475+221+1632-68-121+0-189-112+165+9+99+69-196-41-183 +hashblocks_sha512 84 40963 306104 +885-112-373+1808-905+0+199-22-101-161+3061+452-122+111+10 +hashblocks_sha512 84 61445 460685 +1015-509-73+172-127+0+77-72-237+1533+2642-18-904+61+57 +hashblocks_sha512 85 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 85 0 77 +2030+54+1-2+0+1+1+0+11-9-10-9-9-10-11 +hashblocks_sha512 85 1 69 +34+9+10+9+8+5+2+0+0-1+0-1+0+0+0 +hashblocks_sha512 85 2 74 +28+2+2+4+3+0+2-6-8-7-7+17-7-6-6 +hashblocks_sha512 85 4 75 +29+2+3+3+1+1+0-7-6-5-6+17-8-8-6 +hashblocks_sha512 85 7 70 +36+7+8+8+7+7+2-2-1-2-1+0-1-1-1 +hashblocks_sha512 85 11 72 +31+5+6+4+5+4+3+0-1-3-4-5-3-3-3 +hashblocks_sha512 85 17 75 -8+1+1+3+3+1+0-2+0-4-4+25-4-6-7 +hashblocks_sha512 85 26 71 +32+6+7+5+6+5+3-3-3+0-1-3-1-4-3 +hashblocks_sha512 85 40 74 +32+1+2+5+2+0+1+0-3-7-7-7-4-4-4 +hashblocks_sha512 85 61 70 -1+7+7+7+9+7+3+0+1-3-2-1-2-1-1 +hashblocks_sha512 85 92 69 -1+8+6+9+6+5+2-3-2-2+0+0+0+1+0 +hashblocks_sha512 85 139 1162 +3779+705+99+37+16+10-4+0+2-2-11-12-2-21-8 +hashblocks_sha512 85 209 1162 +46+16+12+0-2+1+6+5-5-8+1-15-2-11-10 +hashblocks_sha512 85 314 2240 +83+87+61+20+22+19+5-5+0-5-3-16-23-36-34 +hashblocks_sha512 85 472 3339 +90+83+60+16+4+0+13-14+2-46-36-48-54-49-22 +hashblocks_sha512 85 709 5521 +128+84+0+0-44-37-45+687+43+9+2+1-14-56-49 +hashblocks_sha512 85 1064 8755 +224+204+86+14-20-72-67-28+0-25+682+78-18+5-38 +hashblocks_sha512 85 1597 13038 +378+152+21+31+8+0+63+5-3-82-105-30-9-139-30 +hashblocks_sha512 85 2396 19436 +321+181+109+112+80-6-41-103-26+37-3+0-6-34+5 +hashblocks_sha512 85 3595 30251 +296+78+62-145-172+2069+337+51-81-266+0-77+56-120-118 +hashblocks_sha512 85 5393 45296 +334-54+93+28-71+22+2+0+52-163-38-22-58+11-72 +hashblocks_sha512 85 8090 67786 +428-155+150+75-10-84-120-154+13+27+22+0+7-53-20 +hashblocks_sha512 85 12136 101067 +282+35+4-21-93-13+17+0-88+1049-123-84+42-52+22 +hashblocks_sha512 85 18205 152537 +310-19+0-35+98+30+13-16+18-34+20-73+57-54-49 +hashblocks_sha512 85 27308 228730 +243+329+1418+3191+181+70-4-100-73-133+0-149-86-20+52 +hashblocks_sha512 85 40963 343533 +603+0+1897+250+14+103-41-45-11-71-72-168+95-257+258 +hashblocks_sha512 85 61445 517806 +42-62-127+0-199-161+1003+409+946-315+176+123+2506-58-245 +hashblocks_sha512 86 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 86 0 49 +644+71+9+13+13+6+0-4+0-8-2-2-3+0-3 +hashblocks_sha512 86 1 46 +63+11+21+13+7+7-6-2-1+0-1+0+0+2-1 +hashblocks_sha512 86 2 47 +56+10+10+7+9+8-2-5-2-2+0-4+1-2+0 +hashblocks_sha512 86 4 48 +50+10+14+9+12+4-1-2-2-2+0+0-1-2-2 +hashblocks_sha512 86 7 48 +53+11+9+98+4-5+1+0-9-2-2-2-2-4+1 +hashblocks_sha512 86 11 48 +51+12+16+12+8+2-1-4-2-2+0-3+0-4+2 +hashblocks_sha512 86 17 47 +53+12+11+7+12+7-2+1-5-3+0-1-1-1-2 +hashblocks_sha512 86 26 48 +46+8+10+11+8+0+2-6-3-3-3+0-4-1-6 +hashblocks_sha512 86 40 47 +52+12+11+11+6+1+3-3-1-4-2+0+0-3-3 +hashblocks_sha512 86 61 48 +51+11+12+13+11-1-2-6+0-2-1+0+0-2-2 +hashblocks_sha512 86 92 48 +11+8+15+18+12+6+4-1-5-1-1-1-2+0-2 +hashblocks_sha512 86 139 1369 +3125+140+135+27+0+14+70+25-3-11-16-17-21-30-35 +hashblocks_sha512 86 209 1366 +63+20+24+21+10+10+0+0-1-4-6-2-14-14-21 +hashblocks_sha512 86 314 2630 +130+122+120+98+32+21+1-9-21-25-37-38-39-36+0 +hashblocks_sha512 86 472 3858 +260+253+177+73+28-7+0-5-2+12-11+4-7-2-1 +hashblocks_sha512 86 709 6404 +389+265+130+74+2+45+7-14-15+0-29-34-2-14-1 +hashblocks_sha512 86 1064 10250 +404+291+87+101-1-8+45-25-33+0-13-15+25+14-34 +hashblocks_sha512 86 1597 15327 +583+273+0+7-12-47-8+17+22-35+76+5-8-7+0 +hashblocks_sha512 86 2396 22940 +713+115+38-51-31-14-6-12+16+51-61+0+85-23+7 +hashblocks_sha512 86 3595 35639 +805-3+71+65+108-1+104-2+0-6-53+95-34-15+0 +hashblocks_sha512 86 5393 53389 +912+37-57-22+24+49-38+0-100+70-17+60-40+104-6 +hashblocks_sha512 86 8090 80031 +3529+64-89-87+66-84+11-111-110+81+29+0-113-78+34 +hashblocks_sha512 86 12136 119305 +861-61+13-39+127+47+18-39+89-64+0+58-4-32-72 +hashblocks_sha512 86 18205 180201 +617-145-71+0+1532-45+56-77+59-95-58+1269+12-138+758 +hashblocks_sha512 86 27308 270153 +2207+154+46+120-31-74-150+1516-26-118+0+14-37-11+54 +hashblocks_sha512 86 40963 405777 +1188-191+144+1746+3714+277-82-17-195-36-17+62+0-62+5 +hashblocks_sha512 86 61445 610322 +570-188-170-102+76+886+208-34+826-67+161+0+952-45-132 +hashblocks_sha512 87 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 87 0 72 +663+87+4+1+0+1+3-2+17-2-4-3-3-4-4 +hashblocks_sha512 87 1 72 +34+1+0+2+0+2+0+1-3-5-4-3-2-3-2 +hashblocks_sha512 87 2 69 +27+4+7+5+4+0+2+2-3-3-1+0-2-2-4 +hashblocks_sha512 87 4 70 +33+6+5+5+3+4+2-1-3-2-1+0-1-3-3 +hashblocks_sha512 87 7 74 +21-1+2+0+1+1+1+0+1-1+2-5-5-6-7 +hashblocks_sha512 87 11 72 +28+3+1+3+2+3+3+0-5-5-3-3-3-2-3 +hashblocks_sha512 87 17 69 -2+6+5+6+6+4+3+0-1-2-1+0+2+0-2 +hashblocks_sha512 87 26 73 +22+0+2+2+2+2+2+0+2+0-2-6-5-5-4 +hashblocks_sha512 87 40 69 +25+6+4+8+0+6+1+0-1-3-3-2-1+1+0 +hashblocks_sha512 87 61 69 -2+5+5+4+1+3+0+1-1-3-3-1-1+1-1 +hashblocks_sha512 87 92 69 -3+5+5+4+0+3+0+2-1-3-3-2-1+1-1 +hashblocks_sha512 87 139 1412 +4306+73+5+6+3+82+5+0-9-12-15-21-20-17-21 +hashblocks_sha512 87 209 1407 +17+9+11+13+10+0-3-2-7-10-11-15-16+28+9 +hashblocks_sha512 87 314 2728 +65+61+56+26+29+22+14+0+0-5-10-15-20-22-29 +hashblocks_sha512 87 472 4055 +116+102+60+25+10+12+0+3-23-28-41-37-35-27-37 +hashblocks_sha512 87 709 6711 +177+121+44+33+9+0-16-5+62-19-7-36-29-21+6 +hashblocks_sha512 87 1064 10713 +254+201+41-60-49+19-13+0-44-65+21+5-29+107-41 +hashblocks_sha512 87 1597 15980 +405+119+45-3+0-7+5-23+137+13-92-27+0+47-38 +hashblocks_sha512 87 2396 23997 +243+95+38+16+42-34-199+0-22+40-76+6-64-135-1 +hashblocks_sha512 87 3595 37253 +204+4+41-196+0-49-13-54+63-71+66-23+1+98-87 +hashblocks_sha512 87 5393 55797 +287+5-183-28-44-7+0-113+37-39-78+3+68+34+33 +hashblocks_sha512 87 8090 83662 +141-371-159-14+41+0+31+54-93+44-44+47+1-36-4 +hashblocks_sha512 87 12136 124768 +132-327-14+7+0+92+46-113-84+23+412-239-72-144+146 +hashblocks_sha512 87 18205 188370 -115-217-274+0-29+16+67+48+87+9-1-9-15+16+77 +hashblocks_sha512 87 27308 282277 +386+243+374+363+236-73+0-217+0-127-93+32-51-53+235 +hashblocks_sha512 87 40963 423948 +615+311-186-151-76+0-151-134+432+894+875+208-4+126-156 +hashblocks_sha512 87 61445 637523 +1201+440-115-52+204-72+0+181+351+43-382-307-343-402+618 +hashblocks_sha512 88 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 88 0 24 +299+30+5-1+3-1+2-1+0-1-2+0-4-12+1 +hashblocks_sha512 88 1 26 +41+1+88+2-2+3-2+1-1-2+0+0-3-7-3 +hashblocks_sha512 88 2 26 +34+0+1-1+1-1+3+3+0+3+2-2-5-1-6 +hashblocks_sha512 88 4 26 +33+3-2+3+0+0-4+0+0-1-3+0-8-3-6 +hashblocks_sha512 88 7 26 +34+0+1-1+1-2+0+4+4+0-1-3-4-11-3 +hashblocks_sha512 88 11 26 +38+2+0-1+1-1+2+0+2+0-1+1+2+0-5 +hashblocks_sha512 88 17 25 -6+0+2+2+1+5+0+2+3-4-2-7-1-3-4 +hashblocks_sha512 88 26 26 +37+2-1+1+1+0+0+0+3+3+2+0-5-5-12 +hashblocks_sha512 88 40 26 +34+3+2-2+1+0+0+2+0+1-1-3-7-4-11 +hashblocks_sha512 88 61 25 +32+3+1+0+2+3+3-2+0+0+0-5-3-3-10 +hashblocks_sha512 88 92 25 -6+0+1+2+0+1+4+5+0-2-6-4-4-6-2 +hashblocks_sha512 88 139 1244 +1254+130+71+6-23-24+98-23-20+36-29+0+98-32-20 +hashblocks_sha512 88 209 1240 +105+90+3-27+45+5+51+0-16-20-32+34-38-16-31 +hashblocks_sha512 88 314 2414 +170+25-31-19+46-26+52-15+41-35+63-6+39+0-26 +hashblocks_sha512 88 472 3562 +171+74+0-30+71-34+39+119-11-19-23+27-17-37+32 +hashblocks_sha512 88 709 5997 +180-52+48-82-74+78-72-80+0+120+70+146-102+46-131 +hashblocks_sha512 88 1064 9524 +75-16+15+241+96+148+0-37-18+58-53-6-1-22+28 +hashblocks_sha512 88 1597 14244 +0-38+33+141+22-3+113-6-137+80-55-19+163+35-147 +hashblocks_sha512 88 2396 21322 +213+330+164+214-79+85+205+0-88-158-86+383-92-9-245 +hashblocks_sha512 88 3595 33323 +0+682-117+359+190-167-129+126+226+9-14-228-79+423-151 +hashblocks_sha512 88 5393 50409 +603-82-162+405-81+0-491-365+46-204-193+65+534+79+95 +hashblocks_sha512 88 8090 75345 +47-385-829+206-238+225-216-398+69+458+492+0-234+20-49 +hashblocks_sha512 88 12136 112011 +683+112+2049+187-1077-259-57-1285+395+5-8+0-151-4+889 +hashblocks_sha512 88 18205 168667 -479+0-391+2145+174+260+4+1349-439-415-222+882+616-239-124 +hashblocks_sha512 88 27308 253458 +51-663-359-41+0+637-78+511-758-203+792+3751-19+1121+250 +hashblocks_sha512 88 40963 381207 +677+278+1039+0+88-1058+2387+2592-48+2471-1001-868-1716-830-223 +hashblocks_sha512 88 61445 572946 +178+2527+833-866+1057+679+641+172-2707-6731-6997-7889+0-1338-903 +hashblocks_sha512 89 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 89 0 25 +669+27+3-2-1+2+2-3+1+0-3-3+1-3-1 +hashblocks_sha512 89 1 25 +42+4+1-3+1+0+0+1+1+3-3-4-4-2-10 +hashblocks_sha512 89 2 24 +35+4+90+1+0+0+0+2+0-3-2+0-2-1-7 +hashblocks_sha512 89 4 24 +36+2+0+2+2-1+1+2-2+2-3-4-1-6-1 +hashblocks_sha512 89 7 23 +34+3+1+3+3+0+2-1-2-2-5+3-7-1-5 +hashblocks_sha512 89 11 23 -1+2+2+3+0+3+2+1-3+4-1-2-2-1-10 +hashblocks_sha512 89 17 25 -3-1+89+0+90+0+1-1-1+1+0+3+1-6+1 +hashblocks_sha512 89 26 25 +39+2-2+1+1+0+1+0+1-2-3-4-3-4-9 +hashblocks_sha512 89 40 23 +34+5+0+2+4+1+2+1+0-1-1-4-3-4-2 +hashblocks_sha512 89 61 23 +1+2-3+5+0+3+2+2+2+0-1-2-8-2-2 +hashblocks_sha512 89 92 24 -2+0+1+1+77+10-1-1+5+0+0+1-3+1-10 +hashblocks_sha512 89 139 1050 +880+130+25+20+10+9-2-1+0+1-9-13-7-8-14 +hashblocks_sha512 89 209 1050 +93+13+7+9-5+0-7-6+0-14+11-5+0-21-9 +hashblocks_sha512 89 314 2059 +122+40+4-6+8-15+20+18+17-20-15-21-3+0-4 +hashblocks_sha512 89 472 3063 +78+61+65-7+5+11+34+34-6-20-20+0-6-2-1 +hashblocks_sha512 89 709 5084 +68+65+60+22+29-25-19-1+19+26-26-10-15+0-9 +hashblocks_sha512 89 1064 8121 +87+69+66+29-20+13+15-22-32-3+0+10-17-29-9 +hashblocks_sha512 89 1597 12148 +31+83+43-1+11+6+0-7-20-2-36-14-39+23+28 +hashblocks_sha512 89 2396 18183 +94+62+39+73-15+53-8-21+37+0-1-5+48-18-48 +hashblocks_sha512 89 3595 28316 +124+175-8-19-33-23+3-10+0+18+9+76-42-7+21 +hashblocks_sha512 89 5393 42420 +96+0-14+47+4+25+26+9+55-43-8-15-72-61-57 +hashblocks_sha512 89 8090 63567 +65-31-7-15+27-74-2+24-50+53+0-34+677+68+42 +hashblocks_sha512 89 12136 94770 +870+30-7+12-47-37+34-45-126-20+53-119+0+31+57 +hashblocks_sha512 89 18205 143210 +132+29-40+151-205+49-106-45+41+0+9-20-114-120+100 +hashblocks_sha512 89 27308 214631 +127+27-150+774+97+0+0-124-81-114-81-84+18+2928+325 +hashblocks_sha512 89 40963 322607 +1747+0+79-180+69-125-141-129+34-38+85-68+133-8+3600 +hashblocks_sha512 89 61445 486528 +7603+16-490-280-374+212-208-311+268+960+42+541-1462-300+0 +hashblocks_sha512 90 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 90 0 25 +301+79+0+0+5+0-2+0-6+1+0-2-4-3+1 +hashblocks_sha512 90 1 25 +21+4+2+0+1+2+0-2+2-1+0-4-2-6-3 +hashblocks_sha512 90 2 26 +41+2+0-1+1+2+1+3+2-1-5-3-5-4-2 +hashblocks_sha512 90 4 25 +49+3+1+0+2+1+4-1+1-4-7-3-7-4-3 +hashblocks_sha512 90 7 24 +44+5+4-1+4+2-1-1+3+0-3-1-10+0+0 +hashblocks_sha512 90 11 24 -11+4+3+3+0+3+4+1+3-3-1-6-2-4-3 +hashblocks_sha512 90 17 26 +13+3+0-2+1+0+1+4-2+0+0-5-9-4-4 +hashblocks_sha512 90 26 24 -9+5+2+2+0+5+2+4+0-1-3-3-2-2-10 +hashblocks_sha512 90 40 24 -9+5+2+2+0+5+2+5-1+1-2-5-4-3-5 +hashblocks_sha512 90 61 24 -12+2+3+4+2+0+5+5-3+1-3-5-2-9-1 +hashblocks_sha512 90 92 24 -7+4+2+0+4+2+5+5+0+2-8-3+0-10-3 +hashblocks_sha512 90 139 1061 +1128+166-58+32-50+55+36+21-62-48-65+51-47-89+0 +hashblocks_sha512 90 209 1006 +179+21+9+0-17-31+78+27-23-29+74-28+66-39-15 +hashblocks_sha512 90 314 2053 +108-42+0+31+108-60-58+13-50+15-19-58-122+33+58 +hashblocks_sha512 90 472 2995 +14+34+33-16+82-6-34+0+18-44-87-138+49-80+41 +hashblocks_sha512 90 709 4940 +169+142+19-20-19+49-69-47+109+0-122+99-99-51+131 +hashblocks_sha512 90 1064 7810 +210+66+40+0-38-121-117-27+47-126-66-45+70+46+108 +hashblocks_sha512 90 1597 11657 +0-33+305-46-100-119-26-76-39+16+196+64+152+100+18 +hashblocks_sha512 90 2396 17503 +188-188+128-177+142-118+0+54-30+133+20-1+86-141-181 +hashblocks_sha512 90 3595 27071 +441+18+210-256-37+0-89-95-149-86-226+456+150+311+90 +hashblocks_sha512 90 5393 40482 +0+393+286+295-236+40+173-226-171-440-401-24+35+127-262 +hashblocks_sha512 90 8090 60653 +139+230-55-88-144+0+5+519-222+668-91-394+1996-233+108 +hashblocks_sha512 90 12136 90467 +555-251+0+252+395+180-191+591+26-261-120-3+245-217-293 +hashblocks_sha512 90 18205 136993 -179+423-308+78-503+201+406-641+132+204-397+0-655-26+34 +hashblocks_sha512 90 27308 204802 -404+578-714+650-413-68+0+396-283+316+339+138+76-639-936 +hashblocks_sha512 90 40963 307684 +941+744+580+214+713-364+1830-9-57-1418-1481+0-923+377-58 +hashblocks_sha512 90 61445 461718 -2650-209-1296+0-349+274-2882+2042+1916+561+1091+21-576-118+2381 +hashblocks_sha512 91 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 91 0 24 +350+52+1+0+4+1+2+0+2-2-3-7-3-9-3 +hashblocks_sha512 91 1 24 +15+5-2+4+0+1-1+7+0-2-15+1-3-3-2 +hashblocks_sha512 91 2 25 +26+2-1+1+0+0-1+2+3-2-1-1-8+2-14 +hashblocks_sha512 91 4 25 +2+2-1+1+0+0-1+2-1+2+3-1+2-3-4 +hashblocks_sha512 91 7 24 -12+0+2-1+2+1+4+0+0+2+5-9+3+0-4 +hashblocks_sha512 91 11 25 +28+3-2+1+0+0-1+3-2+0+3-5-4-2-4 +hashblocks_sha512 91 17 23 -14+0+2+2+3+0+4+1+2+2+0+0+0-8-1 +hashblocks_sha512 91 26 24 -15+2+4-2+2+1+0+0+0+1+1-1-1-3-2 +hashblocks_sha512 91 40 24 -14+0+3+1+1+1+4-1-1+0+1+1-1+0-2 +hashblocks_sha512 91 61 24 -15+2+2-1+4-1+5+0+2+2-2-1+1-3-9 +hashblocks_sha512 91 92 22 -11+5+5+3+2-1+3+0-1-1-1-1+0-8+0 +hashblocks_sha512 91 139 915 +780+128+30+5-5+1-6+17-6-7+0-15-5-14+5 +hashblocks_sha512 91 209 916 +46+0-7+0-1+4+0+0-15-8+2+12-1-5-4 +hashblocks_sha512 91 314 1811 +63+14+24-11+12-7+0-7+9-10+2-8-12-3+20 +hashblocks_sha512 91 472 2710 +52+9+33-9+2+0+3-6+10-7-23-13-9+1-6 +hashblocks_sha512 91 709 4486 +86+31+23-11+2+7+0-4-2+57-45+24-18-9-16 +hashblocks_sha512 91 1064 7177 +54+29+30+26+5-6-12+15+0-26+7-48-22-14+0 +hashblocks_sha512 91 1597 10760 +96+17+27-23-7+0-23+14+15+10+3-13-21-25-14 +hashblocks_sha512 91 2396 16128 +23+25+10+20+1+7-39-3+0+11-19-30-32-43-51 +hashblocks_sha512 91 3595 25077 +95+1-28+16-17-26-44+87-5+49-7+75+0+22-41 +hashblocks_sha512 91 5393 37630 +57+28+16+35+0-62+46+12-20-47-45-7-8+42-7 +hashblocks_sha512 91 8090 56369 +158-19-69+31-13+0+11+44-72+76-62-53+20-22+20 +hashblocks_sha512 91 12136 84173 +17+772+72-137+7+0-111+1-69-83-104+38-102+67-95 +hashblocks_sha512 91 18205 126982 -36+75+19+35-12-3-31+75+65-15+0+71-95-40+68 +hashblocks_sha512 91 27308 190461 +53-129+802+278+58+59+0-59-51-92-26-177+43+169-151 +hashblocks_sha512 91 40963 286177 +14302+101-71+32+813+99-109+0+13-139-35-219-95-182+34 +hashblocks_sha512 91 61445 429610 +24042-124-6+66-11-64+187-42+174+0-182+761+186-12+327 +hashblocks_sha512 92 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 92 0 27 +263+29+2-2-2-3-2+2-4-3+0-3+0+0+0 +hashblocks_sha512 92 1 27 +61+17+0+0-2+0+0+0-3+2-3-1-2-6-2 +hashblocks_sha512 92 2 26 +28+2+89+6+3+2-3+0-2+3+0+0+0-5-3 +hashblocks_sha512 92 4 25 +50-1+2+90+1+0+2-1-1+1+0+4+0+0-2 +hashblocks_sha512 92 7 26 +39+2+90-2+4+0+1-1-5+1-2-1+1-1-4 +hashblocks_sha512 92 11 26 +36+2+0+0+89+2+0+0+1-3-3-2+1-2-2 +hashblocks_sha512 92 17 26 +38-1+1+1+3-3+1-1+84+1+0+0-1-1-6 +hashblocks_sha512 92 26 26 -1-2+2-2-1+76+6+4-2+0-2+0+0+0-5 +hashblocks_sha512 92 40 24 +0-1+5+3-3+5+5+1+0+2-5+0-6-4-3 +hashblocks_sha512 92 61 26 -1-3+2-2+3-2+1+0+1+0+0+0+0+0+0 +hashblocks_sha512 92 92 26 -1-2+2+89+0+0+1+0+0+0+1+1+0-1-4 +hashblocks_sha512 92 139 963 +1421+220+37-4+74+80-6+74+78-10+0-11-23-32-27 +hashblocks_sha512 92 209 954 +167+55+4+2+0-11-15+0+1-23-9-10-5+50-9 +hashblocks_sha512 92 314 1860 +347+43+45+86+0+99+6+0-22-20-28-4-3-10+52 +hashblocks_sha512 92 472 2766 +341+37-28-13+53+2-14-27-30+23+0-11+54-33+0 +hashblocks_sha512 92 709 4570 +344+70+51+90-26-1-43+41-24+0+25-15-4-50+28 +hashblocks_sha512 92 1064 7299 +333+10+97-37+27-60+0-27-18-54+66-51-35+11+10 +hashblocks_sha512 92 1597 10935 +267+141+171+57-45+14-82+39-107-8-3-113+80+0-65 +hashblocks_sha512 92 2396 16405 +294+0+123+120+70+52-44-131-97-69-115-114-108+81+8702 +hashblocks_sha512 92 3595 25377 +393+86+14+0-53+45-45-1-47-113-26+17+20-17+31 +hashblocks_sha512 92 5393 38240 +183-74+108-25+48-33+28+0-58+11-48-114-7+39+43 +hashblocks_sha512 92 8090 57311 -64-478+142+112-83+56+82-76+50-57+6-85+0+25-23 +hashblocks_sha512 92 12136 85415 -239+158-67+0+117+148+25-24-57+149+98-126-70-19+39 +hashblocks_sha512 92 18205 129564 -494-723+0-1407-1425-1375-1441-579+6049+5952+6000+6025+8151+5517+5517 +hashblocks_sha512 92 27308 203388 +195+83+56+71-76-38-164+0-55+5-225+803-72+88-192 +hashblocks_sha512 92 40963 304442 +580-258+32-473-248-117-62+0-91+799+3006+448+17-3+35 +hashblocks_sha512 92 61445 463282 -4206-5038-4281-2082-3380+0+10078+9816+9941+12836+13035+12841+3179-3258-2777 +hashblocks_sha512 93 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 93 0 23 +287+32+2+4+2+0+0+1-2-2-6-2-9-1-9 +hashblocks_sha512 93 1 22 +27+6+2+2+0+5+4-1-1+0+0-8+0-9-1 +hashblocks_sha512 93 2 24 +37+3+1+0+0+2+2+4-4+0-3-1+1-11-1 +hashblocks_sha512 93 4 23 -13+1+0+4+3+0+5+3-2+0-1+0-2-5-5 +hashblocks_sha512 93 7 25 -14+2+0-1+2+1+0+0+0-2+2-2-5-1-4 +hashblocks_sha512 93 11 24 +41+5+2-2+2+1+0+3-2+0+0-3-2-3-9 +hashblocks_sha512 93 17 24 -14+4-1+1+2+0+2+1-1+1+1-1+0-2-6 +hashblocks_sha512 93 26 23 -14+0+4+1+5+2+1+3+3-1-1-2-2-2+0 +hashblocks_sha512 93 40 24 -14-1+4+0+3+0+1-1+2-2-3+0-3+0-6 +hashblocks_sha512 93 61 24 -15+2-2+2+0+0+4+0+3+1-1+1-8-3-3 +hashblocks_sha512 93 92 24 +30+0+3-2+4+0+1+0+3+0-1-3-1-4-9 +hashblocks_sha512 93 139 916 +888+129+38+29-17+5+2-9-10-3-8-13-1+0+0 +hashblocks_sha512 93 209 917 +59+7-6+3+0+13-10-8+6-4-3+10+11-12-3 +hashblocks_sha512 93 314 1814 +159+25+0+12+2-14-8+1-3-18-11+11+0-18+4 +hashblocks_sha512 93 472 2715 +69+24+27+3+37+21+23-16-5-5-22-13+0-17-8 +hashblocks_sha512 93 709 4496 +48+25+17+9+27-2+0-33-31-4-11-7+1-3+2 +hashblocks_sha512 93 1064 7176 +68+61+57+35+24-7-10+14-5-7-26+0+2-36-23 +hashblocks_sha512 93 1597 10764 +132-1+14+1+21-31-55+13+4+8+0-43-40-55-22 +hashblocks_sha512 93 2396 16119 +187+25+0-6+67-37-11-27+23+4-2+24-34+22-27 +hashblocks_sha512 93 3595 25091 +41+44-27+1+67-11+60+0+22-32-6-66-36-33+41 +hashblocks_sha512 93 5393 37612 +143+6+15+38-9-24+53-46+3-40-24+0+26-34-40 +hashblocks_sha512 93 8090 56395 +117+47+0+20+16+37-11-20-36-59+21-87+86-15-30 +hashblocks_sha512 93 12136 84088 +186+4-47-138-44+43+33+61-58-56-28+49+25+0-15 +hashblocks_sha512 93 18205 126995 +0-7+61+2-27+75-94-65+65-34-117-57+761+70+91 +hashblocks_sha512 93 27308 190403 +89+0-140+76+18+95-51-27-68+69-25+34-31+101-36 +hashblocks_sha512 93 40963 286010 +23585+247-10-36-32-125-53+24+24-228+15+77-66+0+42 +hashblocks_sha512 93 61445 429795 +15512-147-29+1768-134-206-135+630-74+3-252+8+61+0+125 +hashblocks_sha512 94 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 94 0 26 +272+51+3-1+2-2-1+0+0+1-1-2+0-3-4 +hashblocks_sha512 94 1 20 +43-7-1-12-11+4+4+4+5+4+0-4+2-1+0 +hashblocks_sha512 94 2 24 +44+4+2+0+5+0+4-2+2+1+0+0-1-4-1 +hashblocks_sha512 94 4 25 +8+3+0+4-2+2+2+2+0+3-1-5-1-5-1 +hashblocks_sha512 94 7 25 +41+3+4+0-1+1+3+1-2+0+4+0-1-1-4 +hashblocks_sha512 94 11 25 +34+3+0+1+2+5+0+0+3-1+4+0-5+0-5 +hashblocks_sha512 94 17 25 -10+2+0+2+3+0+0+4-1+1-2-4-1-2-5 +hashblocks_sha512 94 26 23 -12+1+4+3+4+1+0+0+0-3-2-2-1-5+0 +hashblocks_sha512 94 40 25 -12+3+3+0+1+0+5+3-1-2-4-3-6+1-9 +hashblocks_sha512 94 61 25 -12+3+3+0+1+0+4+2+3+0+0-10-3-4-5 +hashblocks_sha512 94 92 26 -13+2+1+1-2+1+1+0+3-1-3-5-3-6+0 +hashblocks_sha512 94 139 966 +1157+216+102+92+86-3+6+63+0-6-6-14-19-26-20 +hashblocks_sha512 94 209 974 +127+24-16-26-28-17-19+45+63-5+0+49+66+65-22 +hashblocks_sha512 94 314 1966 +185-1-62-83+0-32+81+55+9-38-1+21+23+35-98 +hashblocks_sha512 94 472 2896 +114-65-114+38-15+3+53-116-125+77+0-112+28-19+50 +hashblocks_sha512 94 709 4803 +290+0+38-235-90+53-64-98+13+27-24+24+12-78-253 +hashblocks_sha512 94 1064 7628 +147+0+22-116-125+12-275+34-90-4+81-114-174+147+89 +hashblocks_sha512 94 1597 11357 +372+164+0-47+164+37-268+54+42-219+43-26-96-232-183 +hashblocks_sha512 94 2396 16949 -15+113+0+182-59+129+188+76+252-117-184-78-146-78+6 +hashblocks_sha512 94 3595 26365 +378-215-142+57-360+361+282-180-81-266+585-215+203+225+0 +hashblocks_sha512 94 5393 39395 +777-53+930-54-282+577+755+573+299-169+178-160-49+0-217 +hashblocks_sha512 94 8090 59329 +640+0+287+531-274-968+114+250-154-578-266+701+205-549-847 +hashblocks_sha512 94 12136 88228 +492+320-455-167+19-1265+0+1373-819-267-606-870+111+157+322 +hashblocks_sha512 94 18205 134079 +0-312+545-744+886-1009+46+35-200+93-977+636-1278-10+374 +hashblocks_sha512 94 27308 200226 +561+611+48+257+1118-201-356-1131-451-1826+0+403-1054+69-113 +hashblocks_sha512 94 40963 300230 +939-247-182+0-454+275-17+256+99+333+424+1049-808-843-483 +hashblocks_sha512 94 61445 451911 +228-518-1742-33-554+1209+743+428-2081-1630+242+0+744-1026+676 +hashblocks_sha512 95 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 95 0 25 +136+95-11-13-2-1+0-1+1-2-1+31+25+20+20 +hashblocks_sha512 95 1 24 +43+4-1+3+0+1+0+2-1+0-4+0-3-6+0 +hashblocks_sha512 95 2 24 +40+5-2+3+0+2-2+3+1-1+1-3+0-3-2 +hashblocks_sha512 95 4 25 +32-2+2+0+0+0-3+1+0+0-2-1+0-4-2 +hashblocks_sha512 95 7 24 +45+5+0+2+1+1+1+0-1+1+0-5-6-1-4 +hashblocks_sha512 95 11 24 +44+4+0+2-1+1+2-1+3+3-3-1-3-4-4 +hashblocks_sha512 95 17 25 -5-2-2+1+0+1+0+2+0+0+0+0-2-10-1 +hashblocks_sha512 95 26 24 -1+0-1+0+2+1-1+1+0+3-1+2+0-6-1 +hashblocks_sha512 95 40 24 +45+4+2+2+0-2+1+1-2+0+4-3-3-3-4 +hashblocks_sha512 95 61 22 +0+2+5+4-1+4+0-1+0-1+1-6-2-1-2 +hashblocks_sha512 95 92 24 -2+1+2+1-5+3+1+0-3+3-1-1-1+0-7 +hashblocks_sha512 95 139 860 +2005+156+34+17-3-4-4+0-4+13-4+6-6-4+4 +hashblocks_sha512 95 209 870 +50+11-9-7+5-12-17+13+2-16-19+7+0-5+4 +hashblocks_sha512 95 314 1707 +81+34+59+26-16-11+0+2-17-11+0-4+8-1-1 +hashblocks_sha512 95 472 2561 +69-2+20-6-15+6-4-4+9+11+23+13-19+0-6 +hashblocks_sha512 95 709 4240 +82+40+25-13+29+7-22+0-17-8-19+24-7-15+13 +hashblocks_sha512 95 1064 6781 +120+35+11+1-19-20-35-3+0+23+20-3-31+0+18 +hashblocks_sha512 95 1597 10139 +104+47+30-6-4-14+10-12-4+18+40-1+34+0-7 +hashblocks_sha512 95 2396 15246 +27+28+48+57-28+6-35-42+707-7-30-30-8+0+28 +hashblocks_sha512 95 3595 23695 -18-12+26-12+0+61+33+34-23-11-24+1+5-2+23 +hashblocks_sha512 95 5393 35534 +54+37-27-3+34-68+16+24-39+50-62-39+0-32+15 +hashblocks_sha512 95 8090 53248 -25+131-14+110+33-35+0-22-12+11-19+112+32+2+0 +hashblocks_sha512 95 12136 79403 -20+81-16-80+12-21+113+8+76-53+0+24+2-92-11 +hashblocks_sha512 95 18205 119992 +156+43+2+0+804+41+5-103-62-69+17-92-36-58-103 +hashblocks_sha512 95 27308 179842 +179-36-144-91+61+217+55+0-32+0-26-34+135+212-15 +hashblocks_sha512 95 40963 270253 +13666+187+111+172+11-58-78-314-70-22-75+0+117+874-8 +hashblocks_sha512 95 61445 405754 +24150+166+182+78+164+0+601-54-221-46+171-290-134-130-358 +hashblocks_sha512 96 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 96 0 24 +288+75-6-16-10+1-1+2-1+2+1+5+0+0+0 +hashblocks_sha512 96 1 24 +38+0+3+3+5-1+4+0+5-1-3-5+2-7-3 +hashblocks_sha512 96 2 25 +45-1+2+2+2+3+0-1+0-1-4+0-7-2-8 +hashblocks_sha512 96 4 24 +45+0+3+3+5-1+4+0+5-1+1-2-3-1-8 +hashblocks_sha512 96 7 25 +46-1+2+2+4-2+4-4-2+1+4-5+0-4-2 +hashblocks_sha512 96 11 25 +45-1+2+2+2-1+1+4-2+1-3+0-7-10-1 +hashblocks_sha512 96 17 24 +48+0+3+3+5-1+3+1+0+4-4-1+0-6-3 +hashblocks_sha512 96 26 25 -14+2+0+4+90+0+2+4+1-2-1-1-1+1-3 +hashblocks_sha512 96 40 24 +46+1+3+3+3+0+5+0+2-1+0-4-4-4-7 +hashblocks_sha512 96 61 24 +47+0+3+3+5-1+0+2+3+0-1+2-6+0-9 +hashblocks_sha512 96 92 26 -12+0-2-1+1+1+0+1+0-2+3+3-3-2-8 +hashblocks_sha512 96 139 988 +1401+171+0-31+10-29+33+36+46-37-55-47+31-35-42 +hashblocks_sha512 96 209 947 +148+45+11+10+4-6+5-19-10-8-6-18+0-5+6 +hashblocks_sha512 96 314 1927 +126+45+78-55-69-17-19+189-37-99-41+0+65+79+35 +hashblocks_sha512 96 472 2831 +223+86-55+0+69-80-71-94-24-25-63+84+130+110+166 +hashblocks_sha512 96 709 4808 +155+27+20-107+10+17+49-185-59-57+0-63-102-104+30 +hashblocks_sha512 96 1064 7548 +46+32+50-43+0-49-33-11-135-75+142+234+175+92-165 +hashblocks_sha512 96 1597 11393 +348+181-21+38+118-31-133+200-155-123+0-233-306+19+84 +hashblocks_sha512 96 2396 17131 +295-212+142+34-269-314-407+31+4+0+22-44-270+198-215 +hashblocks_sha512 96 3595 26340 -259-786+63+491-79-16+214+0-3+225-101+279+900+268-65 +hashblocks_sha512 96 5393 39809 +299-205-18-852+309-371-334-79+1019+130+319+0+272-644+131 +hashblocks_sha512 96 8090 59491 +521+114+369-1196+309-56-517-196+525+0-865-342+237-764+174 +hashblocks_sha512 96 12136 88480 -323-326+280+1476+0+1221-529+107-34-421-876+676+13+224-1211 +hashblocks_sha512 96 18205 134473 -1117+1290-498+782+90+1044+1298-1310-270-2220+766-113+117-49+0 +hashblocks_sha512 96 27308 200778 -696-1625+2657-406-830-93+479+1188-8+740+497+0-1079+1850+293 +hashblocks_sha512 96 40963 302167 +625-335+1719-206-3712-5692-28+0-353+1379-2088+52+390+631+1173 +hashblocks_sha512 96 61445 446926 +3150-2480+3595+1449+942+2990+2916-99+3404+0-2855-4620-5051-4721-1231 +hashblocks_sha512 97 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 97 0 25 +295+28+3-2-1+1+1+0+0+0-2+1+2+0-4 +hashblocks_sha512 97 1 25 +47+0-1+2+1-2+4+0+1+0-1+1-4-2-3 +hashblocks_sha512 97 2 26 +22+3-2+0-3+2-3-2+1-3+1+0-3+0-6 +hashblocks_sha512 97 4 25 +28+5-2+0+0-1+1+0+0-1-2-1+1-3-9 +hashblocks_sha512 97 7 24 -14+3+1+3+2+0+3+1-3-1+0-3-3-6-3 +hashblocks_sha512 97 11 24 -14+4+0+3+2+0+2+3-3-1+0-4-1-9-3 +hashblocks_sha512 97 17 25 +29+3+1+0+1+0+1-1+0+3-3-3-9-3-7 +hashblocks_sha512 97 26 24 -14+4+0+5+0+1-2+1-4+2-3-7+0-4-5 +hashblocks_sha512 97 40 24 +34+4+1+0+0+2+0+0-1-1-1-3-2-1-6 +hashblocks_sha512 97 61 24 +33+6+1+2+1-1+0+2-1+2+0-3+0-4-4 +hashblocks_sha512 97 92 23 -14+5+3+4+4-3+1+3-7+0-2-1-8+1-5 +hashblocks_sha512 97 139 865 +709+79+18+5+0-10+0+7-16+9-8+7-3-15+0 +hashblocks_sha512 97 209 871 +126+48+0+13+1-7-18-17-1-10+5-2-7+7+0 +hashblocks_sha512 97 314 1713 +98+7+18-17+2-15+15+3+0-10+1-12-9-13-15 +hashblocks_sha512 97 472 2557 +87+26+39+0-19+34-11-24-20-3-8+0-26+6+16 +hashblocks_sha512 97 709 4252 +88+22+46-5+3+4-23+21-38-25+15+0-8-37-12 +hashblocks_sha512 97 1064 6795 +129+20+24+26-17+3+26-22+0-9+2-6-64-9-23 +hashblocks_sha512 97 1597 10163 +100+98+12+13-39-24+31-22-25-14+0+6+5-6-36 +hashblocks_sha512 97 2396 15263 +232+24+54-52+18-28-27-25+1922+0+117-20-9+4-20 +hashblocks_sha512 97 3595 23729 +54-8-17+2-37+20-68+16+41-28+22+0+12-30-79 +hashblocks_sha512 97 5393 35563 +61+10+55+50-21-9+0+12-35+0-14+22-40-53-2 +hashblocks_sha512 97 8090 53299 +100+17-5+8-63-7-24+22-31+15-47-58+0+19+2 +hashblocks_sha512 97 12136 79500 +162+75+70-13-69-25-29+0+17-2-34+26+125-95+93 +hashblocks_sha512 97 18205 120094 +767-41+720+680+8-69-41+92-99+0+73+1906-110-80-177 +hashblocks_sha512 97 27308 180001 +329-169-40-64+166+36-155+23+0-50-5-54+35+885+87 +hashblocks_sha512 97 40963 270533 +16450-293-50+26+34-132-237-47+16+184+0-117+495+2036-108 +hashblocks_sha512 97 61445 406136 +14554+127+237+64+27+22+804+0-241-26-46-28-39-46-239 +hashblocks_sha512 98 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 98 0 26 +357+59+3-1+0+0+4-4-5+0-6-1-7-1+0 +hashblocks_sha512 98 1 25 +79+42+0+1+1+0-3-1+1-3+0+0-4+1+0 +hashblocks_sha512 98 2 25 +73+4+1+4+0+0+4-1+0+1-2-4-3-5-5 +hashblocks_sha512 98 4 26 -14+0+1-1+1+0+3+1+0+1-1-3-7-5-5 +hashblocks_sha512 98 7 26 -13+2+87+0+2+0+0+5+0-1+1-3-6-9-5 +hashblocks_sha512 98 11 25 -12+3+88+2+1+2-1+3-1+1-1+0-4-2-7 +hashblocks_sha512 98 17 25 -12+0+0+4+0+1+2+1+2+1-4-7-4-12-1 +hashblocks_sha512 98 26 25 -13+0+1+3-1+3+2+1+4+1-3-11-3-9+0 +hashblocks_sha512 98 40 26 +49+2+0+0+0+0+0+1+0-5+0-10-5-6-5 +hashblocks_sha512 98 61 24 -12+2+1+3+3+3+0+3+2-2-2-4-9-2-3 +hashblocks_sha512 98 92 24 +0+3+1+0+3+4-1+5+1-1-4-1-3-2-5 +hashblocks_sha512 98 139 1265 +1637+175+106+41-30-47-65+24+26+35+0-44-39-44-50 +hashblocks_sha512 98 209 1230 +157+129-11+67+0-3+46-6-18-20+24+63-16-2+29 +hashblocks_sha512 98 314 2457 +98+50+47-1+0+15+17-56+1-34-30-68-27-98+9 +hashblocks_sha512 98 472 3554 +240+141+125+8-22-79+0+34+57-24-16-91-107+107-27 +hashblocks_sha512 98 709 5934 +308+170-92+20+49-17-5+44-8+5+75-41+0-26-75 +hashblocks_sha512 98 1064 9462 +332+55+103-17+43+21-41-82+30-66-37+5+0-41-85 +hashblocks_sha512 98 1597 13996 +246-24+51-31+491+159+256-98-91+170+79-103-23+0-59 +hashblocks_sha512 98 2396 21143 +188+47-71+0+69+133-253-76+25-56-262-108+102-53+61 +hashblocks_sha512 98 3595 32701 +103-57+4+52-230+18-114-253+89+114+0-243+93-176-296 +hashblocks_sha512 98 5393 49090 +167+0-231+225+310+2-312-78-208-285+22+172-266+257-276 +hashblocks_sha512 98 8090 74040 +117+11+0-8-95+156-531+67+45+106+304-25-65-161-59 +hashblocks_sha512 98 12136 109754 +425+387+462+1615+382+0-423-152-551+260-217+492-514-261-166 +hashblocks_sha512 98 18205 166140 -3-1368+2983+95+450-96-344-724-400+0+171-326+1544+459+408 +hashblocks_sha512 98 27308 247990 +164-107+301+103-561+424-11+791-147-246-187+0+128-127+1478 +hashblocks_sha512 98 40963 372901 -256+371-744+310+514+185+0+135-462+1301-510-872-627+638-460 +hashblocks_sha512 98 61445 560651 -391+171-1532-464-140-756+183+622-522-894+1924+393+938+341+0 +hashblocks_sha512 99 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 99 0 24 +338+30+27+28-1+2-3-1-2+2-3+1+0-2+0 +hashblocks_sha512 99 1 22 +30+29+31+3+2+1+2-3+0-7-1-3-1-7-2 +hashblocks_sha512 99 2 25 +32+1-1+0+1+0+1+1+0-4-2-5-3-8-3 +hashblocks_sha512 99 4 24 +39+3-1+1+0+0+0+0+2+1-3-4-1-8-2 +hashblocks_sha512 99 7 25 +36+2+1+0-4+0+2+1-5+0+1-2-4-3-3 +hashblocks_sha512 99 11 24 -1+0+0+2-1-2-1+1+2+2+1+0-3-1-2 +hashblocks_sha512 99 17 24 +0+1-1+0+0+2+1-1-1+1+1-1-1-2-4 +hashblocks_sha512 99 26 24 -2+0+0-1+2-1+2+2+2-1+0+1+0-5-2 +hashblocks_sha512 99 40 24 -1+0+0+0+2+0+2+1+1+1+0-1+2-6+0 +hashblocks_sha512 99 61 24 -1+0+0+0+0+2+4+1+3-1+0+2-2-5-2 +hashblocks_sha512 99 92 26 -8+1-3+3-4+3-5+0+0-3+0-5-4+976+28 +hashblocks_sha512 99 139 1164 +1640+144+45+30+41+1-7+7-5-15+0-3-2-8-14 +hashblocks_sha512 99 209 1171 +61+21-10+3+0+6+0-1+0-14-2-6+24-11-11 +hashblocks_sha512 99 314 2312 +92+36+26+2-8-35-43-26+8+6-37-18+0-26+0 +hashblocks_sha512 99 472 3434 +96+63+62+0-49+8+13-2-14-26-12-7+1+2-37 +hashblocks_sha512 99 709 5691 +59+47+46+6+5-52-22+0-56-67+31-21+2-6-21 +hashblocks_sha512 99 1064 9110 +76+60+25+2-32+21+0-13+7-6+6-33-32-13+0 +hashblocks_sha512 99 1597 13610 +129+40+43-51+4+28+16+0-49-9+26-38-37-30-74 +hashblocks_sha512 99 2396 20376 +114+48-12+35+75+6+0+0-5+8-10-25+41-30-61 +hashblocks_sha512 99 3595 31730 +111+68-48-63+0+23-64-160+11-13-59+39+56+1-1 +hashblocks_sha512 99 5393 47593 -68-159-155-18+1-26+220+65+1+58+0-1-140+38+94 +hashblocks_sha512 99 8090 71230 +121+115+52-23-19+65-49+104+31-64-35+0-90-54+103 +hashblocks_sha512 99 12136 106372 +0-21-19-209+732-11+225-6-139+11+138+43+1-96+48 +hashblocks_sha512 99 18205 160501 +142+36+983+0+3+124-28-39+55-37-173-336+34-31-156 +hashblocks_sha512 99 27308 240604 +489+248-162-148-22+19-111+59+0-372-368-55+38+97+212 +hashblocks_sha512 99 40963 361986 +1598-316+17-116-136+48-11+17+194-308+0-288+388+799-314 +hashblocks_sha512 99 61445 544364 -72-266-241+11+254-141-602-241+0+215+193-124+876+85+173 +hash_sha512 selected implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 selected 0 3026 +6773+275+149+89+245+0+27+23-508-2243-2170-2228-2219-2224-2218 +hash_sha512 selected 1 788 +2538+95+11+6-9-6-15+7+6-4-13-1-5+0+3 +hash_sha512 selected 2 792 +80+44-9+0-14+4-15-4-20-3+4-5+10+5+75 +hash_sha512 selected 4 789 +62+45+69-11-1+11-3+0-12+1-4-8-6+8+8 +hash_sha512 selected 7 787 +24-12+9+79+79-10+164-7+93-12+0-8+0+7-3 +hash_sha512 selected 11 792 +60+40-8+12+0+0+0+80+71-1-3-16+7-8+2 +hash_sha512 selected 17 790 +72+35+7+0-8+0+3-1-2-18+9-7+10-3-3 +hash_sha512 selected 26 789 +36-18+5+96+68-12+0+94-21+5+2-12+0-7+0 +hash_sha512 selected 40 791 +85+29+0-19-5+2+12-5-1+16-9-8+0+73-12 +hash_sha512 selected 61 789 +12+1-19+0-4+4-11-5+63-5+7+4-5+81-5 +hash_sha512 selected 92 788 +151+79-4-7+12-4+8+86-9+8+0+3-4+0-2 +hash_sha512 selected 139 1518 +23+39+116+179-15+19-17-20+0+17-12-3-24-27+3 +hash_sha512 selected 209 1520 +86+89+107+93-5+7-3+5-3-8-2+0-11+5-28 +hash_sha512 selected 314 2229 +124+89+147+29+19-21-9-5+107+0-12-5-23+27-7 +hash_sha512 selected 472 2943 +145+45-23+13-25+86+23+39-9-3+4-6-35+0-14 +hash_sha512 selected 709 4366 +72+25+91-6-9+12-29-10+45-29-30+0+33+6-28 +hash_sha512 selected 1064 6488 +120+24+27+61-16-26+23+0-15-11-17+30-27-19+14 +hash_sha512 selected 1597 9337 +21+71-29-43-8-18-38+11+7-32+56+0+61+31-32 +hash_sha512 selected 2396 13616 +198+25+91-22+10+71-43-40-77-83+3-13+0-5+56 +hash_sha512 selected 3595 20724 +99+84-27+17+36+118-99+19-31-53-11+49-9-12+0 +hash_sha512 selected 5393 30731 +254+99+114-43-50-62+53-36-49-132+8+49-38+0+39 +hash_sha512 selected 8090 45682 +50-52+53-116+0+55-82+14+85-100-150+18+84-58-88 +hash_sha512 selected 12136 67639 +163-3+23+19-112+128-72+107+0-140+67-2-62+37-73 +hash_sha512 selected 18205 101787 -30+33-73+20-190-114+0+176+3+16-130-62-76+773+110 +hash_sha512 selected 27308 152209 +100+127-98+206+50+149+27-97-86+146-99-78-132+0-47 +hash_sha512 selected 40963 228393 +28526+536+155-239+0-99-192-38+133-79+60+97+8-83-62 +hash_sha512 selected 61445 342424 +15329+167-166+0-33-172+301-136+204-178+505+117-170-15+955 +hash_sha512 0 implementation blocksplusavx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 0 0 843 +2586+2415+2323+2182+2190+944-48-58+0-45-41-38-39-43+57 +hash_sha512 0 1 790 +113+52+10-8-2+6-6-3+8+0-11-4+4-3+2 +hash_sha512 0 2 791 +68+35+3+94+4-25-5+0-1-4-8+7-1+1-11 +hash_sha512 0 4 787 +48+23+32+91-7-17+220-1-9-4-3+9-5+102+0 +hash_sha512 0 7 795 +66+83+31+7-9+4-14-5-16+1-13+0-8-21+3 +hash_sha512 0 11 798 +89+67+50+7+7+0-17-20-11-9-18+5-15+14-18 +hash_sha512 0 17 795 +82+42-17+3-4+9+7-11-5-4+2-2+0-2+4 +hash_sha512 0 26 801 +85+57+45+101+8+17-4-6-12-14-13+0-13-6+100 +hash_sha512 0 40 836 +63+35+36+2+4+7+4-20-7-23-4-13+0-2-13 +hash_sha512 0 61 854 +70+40+16+11-19+1-4+0-1+12-6-1-16-3+4 +hash_sha512 0 92 895 +64+11+10+7+0-10-6+1-14+3-4-17+3-7-7 +hash_sha512 0 139 1539 +110+25+58+37+0-21-8+45+73-22-12-22-39-38+55 +hash_sha512 0 209 1602 +125+68+35-13-4-9+28+118+28-19-17-8+12-1+0 +hash_sha512 0 314 2280 +129+50+38-7+0+30-3-10+16+111+17-13-4-10-14 +hash_sha512 0 472 3051 +48+23+40+3+1-6-17+28-19+0-3-31+48-41-13 +hash_sha512 0 709 4440 +100+59+14-3+1+7-40-19+12+8+0-32-1-3-14 +hash_sha512 0 1064 6549 +84+17+64+13-50-8-5+31+0-61-5-20-28+33+31 +hash_sha512 0 1597 9400 +100+112+44+3-29-56+6+0+30-76-4-9+2-20-22 +hash_sha512 0 2396 13732 +179-49+53-15+7-32+28+12+0-82+28+1-20-37-76 +hash_sha512 0 3595 20718 +175-25+35-74+73+19-7+13-25+38+54-47-19-47+0 +hash_sha512 0 5393 30713 +179+76+30-120-105-37-102-120+24+53+50-21+20-25+0 +hash_sha512 0 8090 45645 +260+175+0-27-84+83+583-31+80-26-58+4-99-23+44 +hash_sha512 0 12136 67735 +234-20+0+10+99+34-2+27-118-31-25+32+21-1-43 +hash_sha512 0 18205 101809 +159-168+16-6+31-193-45+31+0-54-85-49+3+82+87 +hash_sha512 0 27308 152280 +118-274+1063+2195-67+128-33-49+109-29+23+61-173-242+0 +hash_sha512 0 40963 228192 +12700+85-110-323-306-60+883+1008+736-32-121-85+1781+517+0 +hash_sha512 0 61445 342541 +19094+0-17-262+485+7+154+45-462+107-280-121-338+7-143 +hash_sha512 1 implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 1 0 3021 +318+217+100+66+153-33-4+0+49+7-917-2124-2220-2219-2219 +hash_sha512 1 1 796 +233+77+3-12+3+86+96-11-9-5-27+5+0-6-13 +hash_sha512 1 2 791 +68+20+10+3-2+7-11+0+7-5+5-10-11-8-5 +hash_sha512 1 4 786 +47+15-14-15+6-8-3+1-1+9+12-2+3+0-14 +hash_sha512 1 7 786 +37+2-8+4+3-7-5+10-3+124-11+0+114-2-9 +hash_sha512 1 11 793 +22+16+7+1-8+6+6-19+0-8-13+5-8-8-18 +hash_sha512 1 17 789 +35+11-12-11+17+3-13-4+7+0-3+7+6-11-8 +hash_sha512 1 26 789 -10-14+6-8-3+8-9+3+3+0-5+16+2+11-3 +hash_sha512 1 40 790 +55+40+16+0-5-3+0+12-3-13+13-3+8-16+2 +hash_sha512 1 61 789 +33-6+2+1-11-2+10-4-8-4+10+5-5+91+0 +hash_sha512 1 92 791 +75+14+26+8+3+0-4-1+0-10+0-5+100-10-13 +hash_sha512 1 139 1518 +72+59+36-3+136+6-14+84-8-3-26-5+6+0-2 +hash_sha512 1 209 1523 +93+15-2-6+11+28-12-5-4+5-22+0+1-12+107 +hash_sha512 1 314 2234 +61+26+107+5-13+98-1-4+0-27-4-1-11+0+17 +hash_sha512 1 472 2963 +82+68+68+146-40-29-34-13-21+3+7-38-19+20+0 +hash_sha512 1 709 4374 +74+22+70+10+4+0-4-42-25-10+0+24-19-29-5 +hash_sha512 1 1064 6509 +18+179+44-51+35-34+52+0+54-15-31-56-42-10+4 +hash_sha512 1 1597 9345 +14+61+22-58+36-51+44-26-1-24+44-5+5+0-4 +hash_sha512 1 2396 13621 +0+27+137-39+57-12-68+117+6-74+18-53-8-32+58 +hash_sha512 1 3595 20713 +258+39-23+124+19+0-57+42-53+16-92-47-26-71+28 +hash_sha512 1 5393 30710 +365+66+162+98+0+2-121-26-83+10-135-6+35-21-55 +hash_sha512 1 8090 45604 +117-11+25-55+14+0+86-9-106-83+37-78-5+53+74 +hash_sha512 1 12136 67643 -41+87+0-3+59-97+16-2+2-1+819+76-156+96-231 +hash_sha512 1 18205 101682 +59-68+44+0+161+149-50-8+113-181+16+119-23-127-15 +hash_sha512 1 27308 152182 +89+47-15-103-205+0-64-131-127-87+47+775+1+37+656 +hash_sha512 1 40963 228387 +18674-183+84+106-145-2-129+297+0-94+26+28-220+878-266 +hash_sha512 1 61445 342106 +13221+219-88-254-132+0-251-174+803+229+144+268-26-20+297 +hash_sha512 2 implementation blocksplusavx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 2 0 888 +2552+2351+2246+2273+2233+1982+1-109-79-94-95-97-106+0-110 +hash_sha512 2 1 792 +120+22+18-17-4+7+0-10-9+5-3+2-8-14+1 +hash_sha512 2 2 792 +83+7+18+3+9-3+4+79-2-7-1-9-7-5+0 +hash_sha512 2 4 789 +80+23-16+9-10-5+5+9-9-3-3-5+2+0+79 +hash_sha512 2 7 790 +88+95+21+0-16-5+74+7-8+99-2-1+1-1-1 +hash_sha512 2 11 792 +42+44+52+30+0-6+7-5-17+0-19+75-9-2+7 +hash_sha512 2 17 801 +43+26+34+5+0+4+3+1-17-11-4-8-7-12-1 +hash_sha512 2 26 806 +44+31+25+87+23+9+0+0-3-13-6-4+78-13-17 +hash_sha512 2 40 868 +27+0-1+63+94+56+31+43-27+28-28-45-38-24-37 +hash_sha512 2 61 864 +26+10+19+5-1+5-4+65-9+10-19-15-24-1+0 +hash_sha512 2 92 890 +37+16+8+19+18+0+4+2-22-7+0-18-8-8-15 +hash_sha512 2 139 1588 +46-27+38+12+53-15+11-63+10-69+0+42-63-66-68 +hash_sha512 2 209 1622 +48+32+2+148+4-18+1+64-40-14-6-20+0-9-32 +hash_sha512 2 314 2297 +69+60+67-19-14-12-25-5+0-6-30+2+2+7+11 +hash_sha512 2 472 3045 +104+47+23+138-9-14+0-2+51+2-5-11-27+33-4 +hash_sha512 2 709 4438 +134+66+15+39-27-27+10-8+736-22-9+4+0-11-25 +hash_sha512 2 1064 6556 +10+44+117+16-49+18+42-67-46+14-24-52-29-37+0 +hash_sha512 2 1597 9389 +126+239+112+6+62+0-10-66+6-15-15+138-29-3-22 +hash_sha512 2 2396 13718 +130+74-30+34+12-50+0+34+51-3+64-17-66-14-67 +hash_sha512 2 3595 20726 +196+24-34+20+119+23-55+0+78-36+32-14-39+0-21 +hash_sha512 2 5393 30659 +223+108+46+133-64-57+59-5-27-40+143+0-5+94-68 +hash_sha512 2 8090 45684 +141+73-135+0-59+3+105+6-10-91+53-95+40-116-54 +hash_sha512 2 12136 67715 +175+91-102-131+134+73+81-219+197-54+17-10-9+0-52 +hash_sha512 2 18205 101762 +15+22-61+706-101-21-6+20-64+20-117-55+0+112+34 +hash_sha512 2 27308 152188 +222+260+2+170+0-128+53-41-216+42-44-174+104-147-169 +hash_sha512 2 40963 228294 +13136+82+34-69-97-352-207+144-232+0+123+101-386-91+6 +hash_sha512 2 61445 342346 +12542+141+49-166-41+302-259-257+119-103-221+820+62-251+0 +hash_sha512 3 implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 3 0 805 +2553+2395+2294+2313+2334+573-25+0+125-32-22-21-13-29-32 +hash_sha512 3 1 782 +152+41+0+7-6+9-5+27-4-6+2-6+16-6-3 +hash_sha512 3 2 787 +93+25+0-6+8+1+5-5-2-5+0+23+0-13+71 +hash_sha512 3 4 790 +17+24+95+0+6+13-4-6+1+0+9-9-17-7-1 +hash_sha512 3 7 788 +2-3-1-6+11-13-6+8-8+91+1-19+14+13+0 +hash_sha512 3 11 786 +60+12+7-9-6+87-4-1+14+2-16+0-8+10-11 +hash_sha512 3 17 793 +14+24+64+13-17-5-13+8-9-9-15-11+0+0+7 +hash_sha512 3 26 786 -6+7+8-7+5+4-1+5-9-1-2-2+69+0+6 +hash_sha512 3 40 789 +48+38-12+10-13+0+15+68-3-6-2-1-14+0+88 +hash_sha512 3 61 789 +3-7+1-6-1-12+5+60-21+7+90+0-2-2+2 +hash_sha512 3 92 790 +72+56+17+87-9+92-7-14+0+68-22-1+9-10+0 +hash_sha512 3 139 1517 +38+91+109+88+13+0+0-14+10-17-21+0+0-2-7 +hash_sha512 3 209 1520 +51+86+87-22+0-5-2+16-10-7+62-3+4-4+18 +hash_sha512 3 314 2251 +39+6+0+44+46-23-20+40-34-20-23-28+29+26-39 +hash_sha512 3 472 2956 +82+107-7+77+3+62-25+29-28-8-13-30-14+0+8 +hash_sha512 3 709 4363 +124+28+14-23-29+31-9-10+0-3+13+94-9+16-16 +hash_sha512 3 1064 6506 +2+42-10+56+0-25-20+28-8-35+16-50-31+26+15 +hash_sha512 3 1597 9319 +90+74-22+79-39-31+80-8-64-29+5+0-16+6+24 +hash_sha512 3 2396 13600 +15-5+129+34-8-52-51+40+66+23+0-28-48+54-62 +hash_sha512 3 3595 20728 +136+93+110-15+13-26+26+139-61+0-67-28+32-7-100 +hash_sha512 3 5393 30768 +189+103-114+0-62+55+36+745-119-146+36-16-120-110+19 +hash_sha512 3 8090 45628 +71-58+12+82+35+0-136-7+134-119-23+83+51-42-71 +hash_sha512 3 12136 67605 +222+18-35+93-42-49-15+9+2-29+0+1-54-91+146 +hash_sha512 3 18205 101676 +253+79-34+62+221-84-30+182-59-116+7-24-110+49+0 +hash_sha512 3 27308 152202 +229+105+282-141-160-140+25-144+5+0-66-345+243-26+36 +hash_sha512 3 40963 228328 +33459-105-191+2460+759-36+0+11+72-119-278+476+1989-15-8 +hash_sha512 3 61445 342651 +12207+232+2397-120-423+0+320-122+151+24+290-297-105-298-247 +hash_sha512 4 implementation blocksplusavx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 4 0 807 +2675+2351+2311+2426+2228+820-16-3+0-22-27-30-14+73-11 +hash_sha512 4 1 797 +80-3+7-21+123+61+72-22-1-8-17-10+3+0+109 +hash_sha512 4 2 789 +123+27+0-1-2+1-10+6-2-4-9-10+7+4+60 +hash_sha512 4 4 789 +150+26+3+2+9-15-2+0+7-6+3-5-8-5-3 +hash_sha512 4 7 792 +90+42+39+0-7+97-14-16-19-13+2-6+103-11+3 +hash_sha512 4 11 792 +97+31+97+25-11+83-4-12-8+4+0-8+47-7-4 +hash_sha512 4 17 794 +78+23+112-12+5-9-1-3+0+2-2-5+4+11-7 +hash_sha512 4 26 804 +199+63+40-16+63-5+0-5+3+0+57-10-6+74-16 +hash_sha512 4 40 828 +96+54+62+33-7+0+6-2-16-9-6-9+3+1-8 +hash_sha512 4 61 855 +37+99+27+15-1-12+73+0-5-3-11+94+76+0-10 +hash_sha512 4 92 884 +98+20+1+8+7+0+0-4+4-5-4-5-1-5-1 +hash_sha512 4 139 1521 +115+24-5+77-13-19-1+74+0+88-22-19+13-14+21 +hash_sha512 4 209 1602 +80+21+2+6-20-21+0-3-18+3+7-7+89-7-15 +hash_sha512 4 314 2288 +213+54+87+40-8-5-24-5+65-5-4+150+11+0+0 +hash_sha512 4 472 3046 +108+7+72+10+36-46-24+7-23-29-14+15-6+0-44 +hash_sha512 4 709 4437 +184+12+25+30-10-17+3-8-2-7+0-8+4-32+9 +hash_sha512 4 1064 6543 +112+11+140+33+10-4+58-17-1-12-35+0+2-15-5 +hash_sha512 4 1597 9407 +71+94+64+4+28-39-48+56-3+37-6-27-33-28+0 +hash_sha512 4 2396 13708 +88+105+15+0+26-5+24+56-50-51-52-79-72+23-39 +hash_sha512 4 3595 20756 +187+48+0+22+15-86-9-23-21-96-52+938+47+18-45 +hash_sha512 4 5393 30718 +132+77+13-42+111+1-42+101-21-115-55-14+0+36-95 +hash_sha512 4 8090 45625 +184-130+15+89+127-74+0-18+26-170-34-20+10-5+85 +hash_sha512 4 12136 67756 +208+134+0+79+47+17+47-25-58-166-5-43+76-4-14 +hash_sha512 4 18205 101769 +233+202-38-95-44+71+0+59-32-104+22+163-203-168+29 +hash_sha512 4 27308 152199 +469-1+2+216+326-74+918-71+0+135-43-32-311+85-10 +hash_sha512 4 40963 228114 +13483-215-37-200-92+0-165-187+77+1+714+384+141-122+42 +hash_sha512 4 61445 342146 +12994-55+360+204+149-13+579+0+1-77-30-253-14-378+22 +hash_sha512 5 implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 5 0 803 +2298+2391+2384+2378+2265+1184-20-4+27-2+0-12-22-20-10 +hash_sha512 5 1 794 +170+97+175+129-1-16+83+90-8-23+122-8+0-16-7 +hash_sha512 5 2 793 +141+60+25-3-3-3-7-8+0+70-11+19-5+3+8 +hash_sha512 5 4 805 +100+24+29+0-17+154-13-16+736+100-15-9-27-33+4 +hash_sha512 5 7 788 +129-6+10-2-4+9-5-8+74+67-4+0+85-15+7 +hash_sha512 5 11 796 +124+1+0-4-32-2+7+0+3-6-29+10-15+0-8 +hash_sha512 5 17 787 +83+19+9-2+1-9+8+120-18+0-10+14-1-12-4 +hash_sha512 5 26 788 +80-13-16+81-7+0+8+20+63-4-1+1-11-16+69 +hash_sha512 5 40 803 +87+26+24+50-9-9-6-3+10+73-23-7+61+0-3 +hash_sha512 5 61 791 +121-13+3+0-1-5-12+11+11-5+10-8+4-5+3 +hash_sha512 5 92 801 +114+9+49+6+88+43+38-20-15-8-18-9-17-8+0 +hash_sha512 5 139 1543 +96+48+32-6-35+54+33+42-13+2+0-34-38-46-34 +hash_sha512 5 209 1525 +81+69+62-7+60+0-2-16-4+3+35-15+2-10-15 +hash_sha512 5 314 2240 +165+7+41+63+0-30-22-9+82+2-15+13-9-5-18 +hash_sha512 5 472 2956 +132+80+29-16-22+162+0-34+14-1-36+53+67-27-50 +hash_sha512 5 709 4369 +31+110-2-13+77-2-7+0+3-25+73-34+7-14+5 +hash_sha512 5 1064 6489 +116+154+50+11-7-4-8+42+0-7+40+1-31-3-17 +hash_sha512 5 1597 9328 +135+167-12+12-5-50+30+60+28+0+0-1-29-42-24 +hash_sha512 5 2396 13628 +157-23+65+4+27-89-23+25+11-40+73-52-31-92+0 +hash_sha512 5 3595 20726 +359+114+41+0+36+23-53-20-52+20+56-50-61-35-60 +hash_sha512 5 5393 30713 +194+15-4+15-83+0-13+45+6-10+44-130+18-54-130 +hash_sha512 5 8090 45590 +241+12+59+0-57-53-130+20-80+38+64-107-43-23+7 +hash_sha512 5 12136 67653 +100+69-72+125+434+1824-100+0+4-120-97-106-26+79-184 +hash_sha512 5 18205 101706 +415+45-131+290-136+50+115-57-194-94+142+51-28-32+0 +hash_sha512 5 27308 152202 +287+48+24-50-12+0-118+92-239+36+44-38-26-337+864 +hash_sha512 5 40963 228245 +14432-44-77-41+0+184+263-141+136-249-51+151+332-110+111 +hash_sha512 5 61445 342566 +12440-100-139-38-107+179+137+7-142+1157-249+570+0+1543-225 +hash_sha512 6 implementation blocksplusavx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 6 0 813 +2929+2377+2312+2278+2316+2248+1286-28+0-23-23-1-24-22-28 +hash_sha512 6 1 786 +105+15+0+15+0+0+85-3-21-11-2-15+6-11+1 +hash_sha512 6 2 793 +131+27+32+0-8-13-12+1+2+1-24-10-15+0-7 +hash_sha512 6 4 794 +121+47-14+60-7+79-15+5-20+0+1-8-9-9+4 +hash_sha512 6 7 793 +128+99+40-10-5+0+61-20+2+10-9-1-4-8+0 +hash_sha512 6 11 788 +120+73+147-7-3-2+14-2+12+111-6-7+0-12+90 +hash_sha512 6 17 801 +84+28+4+2-3+0-5+1-16-8-2-3+2-5+1 +hash_sha512 6 26 804 +90+54+49+0+2+3-6-1-8-19-13-17-7+140+53 +hash_sha512 6 40 832 +81+52+49+28+0+77-2-7-4-19+10-20+2-8-4 +hash_sha512 6 61 854 +43+22+12+6-5-10+18-4-1+3-5-3+2-2+0 +hash_sha512 6 92 894 +77+9+10+14-1+0-11-13-5-10+2+110+28-3-20 +hash_sha512 6 139 1554 +127+0+3-11+49+23-21+39-41+42-28+31-35-47-23 +hash_sha512 6 209 1606 +92+28+21+8+112+24-7-10+3-23+0-12-19-5-14 +hash_sha512 6 314 2274 +95+85+48+2+29-2+0+9+57-7-7-7-7-7-7 +hash_sha512 6 472 3029 +173+36+44-9+10+5-45-8+5+59-5+0-2-3-12 +hash_sha512 6 709 4425 +164+52+41-11+10+11-16-17-15-13-26+11+0+13+0 +hash_sha512 6 1064 6544 +61+48+38+1-3+0-29-43-11-6-4+35+59-26+83 +hash_sha512 6 1597 9423 +6+0+53-42+9+53-36+67+24-27+35-32-51-29-19 +hash_sha512 6 2396 13722 +19+53-35-33+4-1+23+23-7+0+53+75-1-75-9 +hash_sha512 6 3595 20751 +198-33-69+26+55-54+53-27-29+0+6+55-75-56+7 +hash_sha512 6 5393 30735 +384+46-5+0+16-42+14-67+28-109-47+19-54+55-24 +hash_sha512 6 8090 45626 +270+27+65-61+89-52-43-27+69+0-55+63-28-2+25 +hash_sha512 6 12136 67803 +249+28-194+177+33-91+0-37+20+9+94-11-89-97-14 +hash_sha512 6 18205 101737 +209+0-60+67+104-50-51-68-123+62+923+171+2108-5-14 +hash_sha512 6 27308 152307 +146+154-6-88+5-41+33+1-20-48+22-40+0-98+35 +hash_sha512 6 40963 228229 +14082+134+31-46+127-208+189+94-245-68+99+0-78-21-22 +hash_sha512 6 61445 342495 +16446-486+62+107+0+59-332-15-30+67-234-30+132+659-84 +hash_sha512 7 implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 7 0 899 +2478+2146+2255+2117+2250+2116+2045-1-120-89-89-92-111+0-134 +hash_sha512 7 1 801 +107+11+0-4+106+47-31+4-5+71+38-30-12-16-9 +hash_sha512 7 2 804 +173+14-16-2-3+0+20-4+4-15+0+1+3-8-4 +hash_sha512 7 4 805 +54+16-9-9+1-2-18+91+79-21-15+12+0-3+2 +hash_sha512 7 7 804 +48-15+3+10-3+12+0-7+96-30-4+5-13-2+9 +hash_sha512 7 11 799 +51+11+12-6-3+5-4+18-11+76-19-9+0+27-4 +hash_sha512 7 17 805 +57-1-4-1-12+3+10-14+67+65-35-10+4+0+7 +hash_sha512 7 26 802 +42-4-9-15+3+11+2+3-7-15-5+0+3+1-7 +hash_sha512 7 40 804 +123+1-7+97-15-19+76-21+2+2-8+3-15-15+0 +hash_sha512 7 61 797 -5-6+7-16+80-23+0-21+6+17+14+1+108-19+0 +hash_sha512 7 92 812 +115+22+0-11-10+99-24+1-5+11+4-18+113-11-2 +hash_sha512 7 139 1517 +136+26+84-1+9+33+0-4+0-17-4+82+98-4-7 +hash_sha512 7 209 1532 +70+29-5+3+0+56+3+71+84+0-14-6-10-26-7 +hash_sha512 7 314 2239 +15+32+123-5+75+109-12-47-7-38-22+66+9-2+0 +hash_sha512 7 472 2945 +145+99+30-8-12-7-38-5+67+69+24+0+38-23-14 +hash_sha512 7 709 4375 +156+63+0-16+48-13+2-43-20-13-45+77+64+7-39 +hash_sha512 7 1064 6516 +12-23+11+4-30-23-12-14+14+29+16-77-21+0+3 +hash_sha512 7 1597 9342 +98+67+190+26-45+0-26-8-25-11-9+50+13+0-13 +hash_sha512 7 2396 13605 +241+24+55-9+24-41+23-43+0-7-45-46+48+40-52 +hash_sha512 7 3595 20726 +396+0-31+2007-54+131-39-19+15+17-36+59-4-48+50 +hash_sha512 7 5393 30691 +170+94+2-9-157-141+5-17+0+74+8-68+109-56-27 +hash_sha512 7 8090 45642 +259-70-28-54-48+66-123+82-128+10+0+11+36-91+4 +hash_sha512 7 12136 67662 +231-55+0+118+11-88-63+105-116-54+93-93+33+58-72 +hash_sha512 7 18205 101724 +37-51-7+119-107-10-48+84+84+0-4+1+39+173-8 +hash_sha512 7 27308 152071 +1414+2207+200+0-100+17+10-166-231-163-96-72+47+9-102 +hash_sha512 7 40963 228190 +13411+42+27-50-94-114+1028+53-269-63-38+587+0+696-2 +hash_sha512 7 61445 342560 +15752-105+0+693-213+307+89-43+93+140+140-185-154-173-223 +hash_sha512 8 implementation blocksplusavx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 8 0 881 +2518+2326+2279+2241+2257+2250+1574-95-75-87-97-81+0-83-88 +hash_sha512 8 1 789 +97+42+25-10+99+6-5+7+0+0-2-4-8+7-1 +hash_sha512 8 2 789 +106+14+14+0-7+0+3+9-14-6-8+131-4-16-4 +hash_sha512 8 4 791 +122+16+2+0-12+2-7-6+11-16+6-18-5-7+7 +hash_sha512 8 7 793 +119+51+33+18-11+3-6+0-3-6-18+87-9+0-7 +hash_sha512 8 11 852 +115+14-3-42+20-79+17-77+27-58+32-71+22-75+0 +hash_sha512 8 17 810 +92+36-29-29+77-25+73-17+74-24-19+68-31+0+68 +hash_sha512 8 26 798 +109+49+29+2+0-10+79-9-8+3-3-7-2+0+0 +hash_sha512 8 40 826 +100+35+38+17-6-1+0-9+5+0-14-18+2-7-14 +hash_sha512 8 61 861 +41+8+95+7+114+121-21+94-8+0-7-2-14+0-2 +hash_sha512 8 92 887 +84+121+25+17-4-12+0-7+7-11-6-7+10+9-4 +hash_sha512 8 139 1529 +110+30+79+4-9+0+65+58-17-23+1-36-8-10-19 +hash_sha512 8 209 1596 +87+34+36+4-4-9-12-19+5+129+0+0-4+0+4 +hash_sha512 8 314 2298 +60+13+1-8-8-23+2-17+30+2-24-15-13+8+0 +hash_sha512 8 472 3025 +134+60+27+74-12+0-9-9+13-18+2-1-34+80-21 +hash_sha512 8 709 4474 +132+12+101-40+0-31-63-35+31+11+26-26+25-42-20 +hash_sha512 8 1064 6538 +25+76+38+3-44-32-3-15+2+14+3+0-35-20-27 +hash_sha512 8 1597 9404 +25+78+0+54-6+11-12+47+115-64-85-63-32-29+19 +hash_sha512 8 2396 13728 +14+44-9+26+44-49-40+0-35-65-100+31+46+41-91 +hash_sha512 8 3595 20738 +154-54-50+32-5+91+59+28-81+59-47-112+70-70+0 +hash_sha512 8 5393 30715 +133+0-31-24+61-77+14+95+26-67+93-52+78-41-75 +hash_sha512 8 8090 45674 +218+84+45-132+43+159-53+27-68+0-115+23-36-47-194 +hash_sha512 8 12136 67724 +239-41+0-35+679+217-32+41-76+73-54+59-30+134-20 +hash_sha512 8 18205 101760 +0+86-61-19+153+15-16-54+13+48+37-35-75+85-257 +hash_sha512 8 27308 152139 +9+102-6+284+0+87-87-17+941-30-114+170-166+53-49 +hash_sha512 8 40963 228134 +17594-25+17-137+103-28-328+6+73+216+0-30+1006-30-443 +hash_sha512 8 61445 342362 +13436-18+0+41-595+11+28+573-243-242-13-140-74+298+84 +hash_sha512 9 implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 9 0 890 +2587+2280+2172+2241+2263+1123-3-113-74-85-94-89-92+0+10 +hash_sha512 9 1 813 +155+8+0-16+121+120+62+67-23-24-18-22-3-20+0 +hash_sha512 9 2 805 +103-17+2-4-6+2+2+4+6-11+0-12-8-16+92 +hash_sha512 9 4 803 +97+8+9-24+0-5-5+3-2+1-15+7+0+72-22 +hash_sha512 9 7 800 +71-5+6-4+0-8-2+105-36-11+1+0-4+0+5 +hash_sha512 9 11 808 +96+9-13-14-4+8+0-1+55-19-3+15-8+94+28 +hash_sha512 9 17 800 +96+10-1+17+7+1+95-23-4+1-10-11-15+0+0 +hash_sha512 9 26 798 +81-3+33-28+12+86-11+6-3+0-12+14+1-2-15 +hash_sha512 9 40 804 +141+9-5-5-4+76+33-14+0+5-15+3-12+2-10 +hash_sha512 9 61 795 +50-4-1+18+0-1+4+6+65-10+106-12-1-18+19 +hash_sha512 9 92 808 +144+33-2+5-26+6-1-5+51+685-13-8+6+0-20 +hash_sha512 9 139 1540 +98+8+130+0-15+111+2-35+76-9-20+70-17-20-10 +hash_sha512 9 209 1521 +71+42+0+69+15-28+61-29-5-7+94-11+4+0-22 +hash_sha512 9 314 2240 +95+26-3-6+14+45+13+26-27-23-40-40+71-4+0 +hash_sha512 9 472 2948 +110+18+53-7-16-24+28+74+0-17-20+34-18-22+37 +hash_sha512 9 709 4379 +148+3-12+55+54+5-55-6+2-4-18+89-39+0-10 +hash_sha512 9 1064 6488 +131+91+49+33-29-4+7+0-52-40-18+14+11-1-40 +hash_sha512 9 1597 9353 +145+40+58-2+0-16+5-1-50-7-43-66+28+17+10 +hash_sha512 9 2396 13612 +189+104-4+11-34+24-63+7-59+0-61-7+32+64-5 +hash_sha512 9 3595 20721 +114+0-4-47+59-36-5+27-84-30+68+14+86-14+5 +hash_sha512 9 5393 30678 +153+156-52+118+0-44+134-26+69-23-39+8-6-20+45 +hash_sha512 9 8090 45596 +180-9+107-39+14-2-24+13+27+43-100+91-76+0-114 +hash_sha512 9 12136 67559 +253+104+94+0-63-86-146-65+15+66-55+24+39-22-20 +hash_sha512 9 18205 101738 +88+585-163-174+23+0+15+65-54-118-67-7+137+52-56 +hash_sha512 9 27308 152025 +343+62+92-28-38+114-40-36-61+4+58+27-64+0-40 +hash_sha512 9 40963 228267 +43710+2196-12+126+92+28-156+183+68-32-56+0-121-73-420 +hash_sha512 9 61445 342599 +14096+2332+9-118-78-134-58-20+94+0+290-478+130-33+29 +hash_sha512 10 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 10 0 1165 +3008+2276+2173+2221+2073+0+57-15+6-36-12-22-13-27-22 +hash_sha512 10 1 1130 +134+58+23+118+23+44-3-9+0-13+0-3+8+0-1 +hash_sha512 10 2 1141 +170+49+0+6-16-9+67-5-2-6+85+11+16-14-16 +hash_sha512 10 4 1135 +156+55-1+0-20-9+0-2+6-2+9+3-5+1-1 +hash_sha512 10 7 1140 +171+53+26+1+75+5+0-2+1+0-5-14-12-6-4 +hash_sha512 10 11 1145 +177+42-3-8-10-10+99-2+76+75+43+33-7+0-4 +hash_sha512 10 17 1174 +84+13-48-32+17+0-64+2-44-64+12+22+34-90-61 +hash_sha512 10 26 1153 +112+13-5-14+0-18-4+7+9+13+1-3-11+4-7 +hash_sha512 10 40 1149 +132+29+8+83+2+2+16-16-11-3-6-7+0-5-2 +hash_sha512 10 61 1154 +46+0+3-9-13-2-7-5+82+12+17-9+4-8+61 +hash_sha512 10 92 1131 +111+45+13+12-29-13-12+0+7-34-15+7-38+4-50 +hash_sha512 10 139 1874 +145+161+62+12-4-10-6+42-1+0+13-25-11-9+90 +hash_sha512 10 209 1877 +73-10+45+35+62+225+18-1-21+20+0-12-5-3-1 +hash_sha512 10 314 2588 +70+99+117+118-11+0+19-8-5+5-20-11-28-17+3 +hash_sha512 10 472 3279 +87+164+97-37+23-1-25+0+3+27-31+6-107-90-90 +hash_sha512 10 709 4714 +86+116-4+0+9-2+32+5-9-48-4+14-15+4+0 +hash_sha512 10 1064 6849 +121+32+27-26-19+77+95-7+0-16+20-3-4-16+22 +hash_sha512 10 1597 9709 +161+111+81+29-19-19+7-57-2-21+7-60+0-21+7 +hash_sha512 10 2396 13949 +153+31+45+66+8+101-83-10-72+0-35+50-106-56-64 +hash_sha512 10 3595 21116 +174+124-82+54+0+51-61+108-87+47-26-96-96-80+122 +hash_sha512 10 5393 31065 +180+163+47+0-60+58-1-11-39-130-8+123-5+21+79 +hash_sha512 10 8090 46013 +166+26-2-37-133+33-84+23+12-116-102+9-11+0+86 +hash_sha512 10 12136 67975 +277+0+18-21-11+0+83+145+16+105-84-106-62-231+76 +hash_sha512 10 18205 102133 +268+72-18+0-3+30+38-14-101-148+702+58-77+8-54 +hash_sha512 10 27308 152398 +232+273+206-75+105-59+109-168+158+70+0-37-80-44-66 +hash_sha512 10 40963 228738 +21947+1105-25-168+20+167+8+1973-47-177-46-225+51-123+0 +hash_sha512 10 61445 342962 +60738+80+65-86-499-152-5-216+0-107+2253+76-152+1064+623 +hash_sha512 11 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 11 0 807 +6127+2535+2311+2335+2235+2351-43-19-6+63-16-1-18-7+0 +hash_sha512 11 1 789 +103+62+27+36+2-11+0+11-7-6+91-6-2-4-12 +hash_sha512 11 2 787 +87+52+39+19-4+0+7-6+13+5-5-10-14-1-14 +hash_sha512 11 4 796 +111+50+18+4-11+76-35-1+65-16+0-21+0+11-14 +hash_sha512 11 7 791 +110+107+17+18+6-11+9+0-11+76-3-7+0-30+0 +hash_sha512 11 11 806 +63+45+35+20+79+0-18+52-18-20-19-16-27+0-7 +hash_sha512 11 17 801 +66+33+33+7-10+6-21+0-10-14+8+12-7-11-8 +hash_sha512 11 26 812 +98+56+48-14+93-13+0+5+0-16-22-6-13-12+60 +hash_sha512 11 40 856 +58+33+25+21-1-4+0-5+5-6+5-17-6-2+3 +hash_sha512 11 61 894 +70+76+40+1-13-5+14-9-7+4-14-6+6-17+0 +hash_sha512 11 92 948 +118+68+16+117+0-11+10+8-3-3+13-19-28-10-9 +hash_sha512 11 139 1544 +143+82+33-15-14-28-20-9-12+87+0+56-36+4+2 +hash_sha512 11 209 1643 +76+45+49-18+99-4+21+3-6-10-11-28-6+8+0 +hash_sha512 11 314 2334 +23+35+31+65-20-9-22-42-30-5+14+6+0+3-22 +hash_sha512 11 472 3098 +132+70+59+1-22+54-24-20-4+1-17-11+0+2-13 +hash_sha512 11 709 4483 +82+72+80+35-45+0-17-43+49+23-43-19-13+2-11 +hash_sha512 11 1064 6578 +77+90+14+0+9-20-53+24-35-49+71+17-38-56-19 +hash_sha512 11 1597 9434 +114+95+48+15-27-6+95+0+94-4-52-41+42-24-53 +hash_sha512 11 2396 13780 +127+151+22+105+2-55-47-57-34-61-73+100+1+0-21 +hash_sha512 11 3595 20727 +184+108-20+36+73-76+0+9-18-5+29-43+12-25-14 +hash_sha512 11 5393 30714 +178-42+64+31-77-11+59-4-163-36-56+4+0+22+28 +hash_sha512 11 8090 45701 -21+648-68+0-67+669+21-59+36+3-19+23-78+123-6 +hash_sha512 11 12136 67905 +121+23+1146+848+0-132-80+59-164-129-27+34-239+49-83 +hash_sha512 11 18205 101750 +371-152-11+16-104-57+79+3-213+2+119-35+0-36+26 +hash_sha512 11 27308 152284 +664+47-115+132+86-146+3-83+0-87-53-189+199-28+86 +hash_sha512 11 40963 228392 +13035-455-99-266-248-225+492+1795+64+40+0+8-146-251+12 +hash_sha512 11 61445 342689 +14060-203+294+686-74-67+0-221-173-127+160+134+32+213-199 +hash_sha512 12 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 12 0 1150 +2696+2379+2181+2181+2139-13-4-8-4+0-24+0-14+0-21 +hash_sha512 12 1 1147 +110+72+111+13-2-22+0-18-16-1-11+4-3+90+4 +hash_sha512 12 2 1143 +142+44-2+12-8-5-4+125+0-8+2-3+14+14-4 +hash_sha512 12 4 1143 +123+37+26+2-6-7-13+0-5+3+36-1+3-26-5 +hash_sha512 12 7 1140 +164+45+78-11-22+52+5-7+0+0-3-1+65-7+0 +hash_sha512 12 11 1137 +102+59+16+56-14-4+0-3-1+30+126+27-7-10-4 +hash_sha512 12 17 1126 +116+46+7-6+0+68+3+8-39+11+0-26+0-54-15 +hash_sha512 12 26 1156 +81+47+125-4+65+0-2-9-24-7-16-7+62+41+1 +hash_sha512 12 40 1157 +42+25+11-18+0+2-17-16-7-8-24+2+4+90-18 +hash_sha512 12 61 1147 +29+38+38-3+5+79+17-20+3+0-7-11-8-9-14 +hash_sha512 12 92 1103 +94+78+2+33-12+35-6+50+0-57+36-10-71-54-73 +hash_sha512 12 139 1870 +54+8+3+26+9+6+93-20-14+0-9-20-98-98-69 +hash_sha512 12 209 1896 -14+11+27+15-41-28+34+19-12-9+13-24+0+3-3 +hash_sha512 12 314 2593 +41+52+0+2+49+3-10+24-8-31+2-26-13-47-34 +hash_sha512 12 472 3260 +73+47+77+5+9-18-20-87-83-77+39-47-63+51+0 +hash_sha512 12 709 4722 +43+36-20+27+93-15-19+22+0-15+12+15-15-20-45 +hash_sha512 12 1064 6842 +179+36+19-29+29-23+62+0-24+0+38-32-34-2-39 +hash_sha512 12 1597 9686 +110+72-15-61-52-9+63+52+0+63+4+30-28-74-39 +hash_sha512 12 2396 13989 +120+24+0+11+30+78+7-52-25+100-77-60-64-60-47 +hash_sha512 12 3595 21057 +110+46+21-17+133-1+0+61-77-68+20-5-85+19-44 +hash_sha512 12 5393 30997 +86+103+48+26-39-15+64+49+0-40+33-6-134-41-86 +hash_sha512 12 8090 45887 +203+32+125+184-17+49-56-111-9-46+70+0-11+41-59 +hash_sha512 12 12136 68052 +201+41+45-27-102-18-26+523+10+111-95-38+13-96+0 +hash_sha512 12 18205 102091 +6+44-53-129+71+12+602-123-246-153+409-106-278+0+17 +hash_sha512 12 27308 152600 -68-182-108-21+551+3-6+81-197+26+527-74+1374+1728+0 +hash_sha512 12 40963 228587 +13666+115+0+54+117-23-148-70-106-293-80-334+413+318+83 +hash_sha512 12 61445 342854 +13395-150+129-115-349+0+322+80+1654-537-403+369-370+576-103 +hash_sha512 13 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 13 0 3069 +567+196+119-30+53-30+0+68-16-23+40+11-15-9-21 +hash_sha512 13 1 793 +133+148+121+0-20+93-6+1-21+3-13-17-17-15+1 +hash_sha512 13 2 802 +43+36+6-19+110-23-23-4+0+1-23+92-20+0-29 +hash_sha512 13 4 793 +73+45+4+2-9-2+0-10-6+3-7-9-15+7+114 +hash_sha512 13 7 795 +74+90+37-1+0+70-15-12-1+6-15-18-8+126+65 +hash_sha512 13 11 796 +67+50+60+15-17-2-6-4-6+5-10+7+2+0-21 +hash_sha512 13 17 807 +77+30+43+104+2-1-11-14+3-27-8-20+0+56-12 +hash_sha512 13 26 803 +97+70+70+40+22-4-2-7-6+10-6+0+0+2-9 +hash_sha512 13 40 868 +64+15+5+17-13-6-13+105+64-8+0-27-4+1-11 +hash_sha512 13 61 890 +111+60+17+0+9-5+2-15+2-7-16+16-7-2-6 +hash_sha512 13 92 952 +132+43+21+0+3-13-12+3-10-9+19+2-10-10-8 +hash_sha512 13 139 1521 +153+113+25+0+100+0+0-7-10+100+57-9+0-26-9 +hash_sha512 13 209 1661 +92+60+71+11+9-18+7-20-3-21-14+2+0-21-10 +hash_sha512 13 314 2320 +133+10+25+0+79-15+20-7-9+9-20+9-19-13-2 +hash_sha512 13 472 3102 +253+38-48+0-4-3+32+67-27+46+7-18-8+11-26 +hash_sha512 13 709 4486 +94+59+51+21+11-32+11+695-2-33-20-25+0-15-40 +hash_sha512 13 1064 6566 +91+268+51+16-18+40+0-10-13-18-28-17+96-17+3 +hash_sha512 13 1597 9426 +131+63+100+101+79+41+18-18+0-6-12+0-26-48-28 +hash_sha512 13 2396 13770 +174+73+0-16-27+43+6-51-47+14-47+65-15-23+57 +hash_sha512 13 3595 20740 +354+72+15+14-1+11+42-124+0-28-59-8+33-101-81 +hash_sha512 13 5393 30702 +67+109+48+0-43-185+19+96+9-35-1-21-11+53-14 +hash_sha512 13 8090 45700 +196+56-35+9+47-30-39-128+7-11+0+17-58-13+83 +hash_sha512 13 12136 67833 +365+162-32+153-41+33+111+48-37+39-73+0-8-20-21 +hash_sha512 13 18205 101896 +244+55-103+110+759+1841+80-159+0-118-40+650-130-222-91 +hash_sha512 13 27308 152252 +0+1342-26-59+61-113-22+169+158-109+147+48-25-123+89 +hash_sha512 13 40963 228249 +22002-118-312+314+69+92-35-54+235+0-146+71-287+110-33 +hash_sha512 13 61445 342448 +26082-334-193+71+607-11+0-212-76+282+237+754-269+10-157 +hash_sha512 14 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 14 0 1144 +2877+2360+2281+2317+2261+195+110-2+0-16-15-3-4-12-11 +hash_sha512 14 1 1140 +86+33+15+4+10+28-5+14-2-7-2+0-23-19-22 +hash_sha512 14 2 1139 +50+47-6+72+0+81+37-6-1+2+0+4-3-3-3 +hash_sha512 14 4 1140 +129+36+5-14-21+78+0+9-12-7+24+3-6-16-11 +hash_sha512 14 7 1142 +114+53+5+10-15+3-22-12+7-2+0-12+15-4-12 +hash_sha512 14 11 1139 +117+46+2-11-4+6-14-11-3-10-2+1+28+4+0 +hash_sha512 14 17 1127 +131+49+61-4+84+60+46-19+4-10-7-47+0-38-18 +hash_sha512 14 26 1160 +70+6+12-19+47+55-9+4+0-19-5-19-11-9+2 +hash_sha512 14 40 1147 +47-24+5+3-7-15+80+2-8-6+0+0+0+8+5 +hash_sha512 14 61 1148 +0-17+28+23-4-2-2-7+3+7-5+4+0+5+0 +hash_sha512 14 92 1099 +99+18+51+0+3-3-72+65-3-76+21-12-69+24-6 +hash_sha512 14 139 1875 +161+67+33+7+11+4-8-22+0+3-7-42-9-39-19 +hash_sha512 14 209 1867 +21+21+14-19+7-11-13+0+0-6-3+3-11+20+94 +hash_sha512 14 314 2588 +153+196+42+50+54-9-4+7-13-9-23+35+0-6-5 +hash_sha512 14 472 3282 +27-1+1-36+70-4-42+46+0+47+118-113+4-27-80 +hash_sha512 14 709 4699 +192+42-50+10+3-15-8+9-12-4+54+0+0-2-5 +hash_sha512 14 1064 6837 +24+1+41+32-24+16-2-5-17+0-2-19+1+5-1 +hash_sha512 14 1597 9719 -62-26+0+59+18-73+4+33-68+67-42+74+6-28-21 +hash_sha512 14 2396 13957 +129+19+68+49+133-69+142+0-11-33-68+8-109-5-70 +hash_sha512 14 3595 21082 +23+103-36+41-62+0-46-22+82+63-21+57-51-16+3 +hash_sha512 14 5393 31114 +95+5+6+10+655+88-82-63-151+0-72+17-165-192-154 +hash_sha512 14 8090 46019 +29-7-85+81-41+138+56+58-10-146+96-208-155+0+51 +hash_sha512 14 12136 67964 +251+279+0-10-16-102+13+15-39+5-28-136+18+0-4 +hash_sha512 14 18205 102061 +59+14-94+66-21-99+168+165+118+194-3+0-51-41-174 +hash_sha512 14 27308 152463 +100+0-165-78+125+7+11-84+23+74-325+10-190-237-68 +hash_sha512 14 40963 228652 +13874-229+0-230+900-193+115-76+1-359+223-274-140+251+81 +hash_sha512 14 61445 342872 +12470-57+637+250+153-95-318+102-152+0-112-340-4+822+2035 +hash_sha512 15 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 15 0 809 +2708+2513+2252+2334+2249+506-13-18-4+0-11-12-39+95-7 +hash_sha512 15 1 787 +117+33+32-21+10+3+0-4+6+6-9-9-5-13-13 +hash_sha512 15 2 792 +166+35+11+6+1-17+4-24-2-3-10-7-17+0+69 +hash_sha512 15 4 798 +54+31+1-11+75-29+74+4-3-26-16+93-15+0-13 +hash_sha512 15 7 795 +77+90+0+2+109-6-7-6+4-3-5+85-7+0-15 +hash_sha512 15 11 799 +69+60+11+6+117+0+18-17-8+53-25+0-9+0-19 +hash_sha512 15 17 804 +176+34+41+87-2+0+1+0-3+7-13-24+10-22-20 +hash_sha512 15 26 805 +80+71+58-12-3-17-2+6+0-11+2+15-17+5+0 +hash_sha512 15 40 844 +67+49+58-9+13-4+11-2+9+0-2-4-18+2-15 +hash_sha512 15 61 892 +81+72+35+28-11+1+3-5-4-8+4-8-4-18+0 +hash_sha512 15 92 951 +140+13+16-10-9-5+1+0+5+5+13-12-11-9-14 +hash_sha512 15 139 1523 +227+195+91-16+11+64+2-28-4-15+11-12-14-3+0 +hash_sha512 15 209 1655 +88+18+26-16+5-21+1+87+0-8+57-1-30-2-19 +hash_sha512 15 314 2325 +58+63+28+8-9-9-15-4+3+0-20-16+41+3-5 +hash_sha512 15 472 3084 +92+145+99+19-6-17-32+7+14+0-20-19-24+5-12 +hash_sha512 15 709 4482 +65+68+96+43+22+19+1-6-4+0-17-33-34-17-27 +hash_sha512 15 1064 6571 +235+57+53+43+0-15+0-8-7-23-36+19+2-34+8 +hash_sha512 15 1597 9426 +118+114+88+3+44-24-14+67-1-7-5-47+38+0-24 +hash_sha512 15 2396 13769 +164+97+241+0-9+8-33+23-33+15-50-50-5+171-22 +hash_sha512 15 3595 20754 +209+91+37+0-19+126-111-10+99-2-52-42+60+10-26 +hash_sha512 15 5393 30741 +215+143-34+29-82-78+17+0+48+5-129-59-32+102-57 +hash_sha512 15 8090 45683 +146-12+151-24-51+0+72+34+72-17-29+115+20-158-65 +hash_sha512 15 12136 67839 +2388+79+104-193-33+7+90+18-105-190-122+0-41+12-83 +hash_sha512 15 18205 101806 +0+18-7-128-129-34-17+60+66+49+95-69+93+35-80 +hash_sha512 15 27308 152228 +123-73-19-107+376+694+78-102-57-99+225+0+84+54-57 +hash_sha512 15 40963 228300 +13275-119-7+148-91-378+0+500-213-173+444+158+203+1899-390 +hash_sha512 15 61445 342502 +23502-68-290-247-243+877-228-59+651+238+156+0+711-126+1118 +hash_sha512 16 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 16 0 1149 +2758+2346+2236+2214+2196+1894-1+43-19+0-16-19-8-11-15 +hash_sha512 16 1 1154 +117+44+0-34+67+1+71+61-19-31-29-39+95-19-18 +hash_sha512 16 2 1137 +76+173+33+14+3+0-12+6-2-12+5-7-13-10-19 +hash_sha512 16 4 1130 +125+44+34+5-11+0+1-1+0-20+3-22+4-31-18 +hash_sha512 16 7 1166 +82+68+16+0+96+100+96-19-20-29-33-24-29+11-39 +hash_sha512 16 11 1138 +102+44+10+10-8-1-13-4+4+0+6-4+2-26-8 +hash_sha512 16 17 1121 +175+30+65+20+0-9+7-12-20+1-21-17-27+37-28 +hash_sha512 16 26 1128 +57+60+12-3+5+0+47+3+2-6-3-8-28-10-22 +hash_sha512 16 40 1165 +24+27+14-9+83+862+0+10+15-6-5-16-23-7-11 +hash_sha512 16 61 1157 -4+97+16+6+4+0+4-10+97-19-8-20+0-12+2 +hash_sha512 16 92 1166 +11+4+33-12+86+57+0+66-2+0-21-3-23+0-24 +hash_sha512 16 139 1850 +158+57+51+28+31-9-4+0+6-31-17-25-1-23+1 +hash_sha512 16 209 1863 +57+13+32+28+0-25+99+140+19-10-5-7-6-9-2 +hash_sha512 16 314 2601 +45+67+3+68-24-29-19-12-4+0-5+42+27+44-1 +hash_sha512 16 472 3282 +78+75+48-3-17+17+4+22-85-77-69-80+11+0-72 +hash_sha512 16 709 4718 +88+83+15+28+77-16-4+0-6-9+7-10-41-19+100 +hash_sha512 16 1064 6852 +91+153+14+4-27+43-30-12+11+0-25-35+5+0-20 +hash_sha512 16 1597 9691 +109+131+111+25+12+0-54+9-69+5-55-19-3-4-8 +hash_sha512 16 2396 13948 +221+60-9+64+51-32-18-62+0-55+52+4-55-111+60 +hash_sha512 16 3595 21087 +111+29-15+33+0-23+83-27-91+56-77-3+52-57+33 +hash_sha512 16 5393 31039 +110-12+109-56+23-30-4-60-126+15+6+0+61+90-29 +hash_sha512 16 8090 46004 +209+0+71-55-28+21+40+22-76-1-52+17-65-74+11 +hash_sha512 16 12136 67852 +315+119+34-2-30+53-4+28+0+92-17+65-47-2-2 +hash_sha512 16 18205 102127 +266+9-40-21+77+45-113+0+73-165-47-29-93+168+37 +hash_sha512 16 27308 152557 +196-153+0-29+30+28-341+10-46-75-104-179+844+1140+787 +hash_sha512 16 40963 228744 +33410+138-109+93-139-289+81+10-76-25-6-217+138+47+0 +hash_sha512 16 61445 342902 +12223+112-165-157+0+96-798+26-498+1952+142+6-321-254-242 +hash_sha512 17 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 17 0 811 +2705+2434+2376+2267+2223+1367-3-18+6-22-27+0-16-20-11 +hash_sha512 17 1 803 +123+29-4-5+0-6+0+5-2+23+5+1-15-14-9 +hash_sha512 17 2 797 +140+36+27-2-1+3+155-17-2+2-5-7-1+0+1 +hash_sha512 17 4 801 +81+23+104+0-2+0-2+7-4+181-5-7+5-21+9 +hash_sha512 17 7 804 +82+88+40-16+1-12+11+0+4-8-7+8+0+0-1 +hash_sha512 17 11 816 +57+48+132+38-19-8+92-17-23+2+109-38-16+0-13 +hash_sha512 17 17 816 +63+60-3-31-5-8+2+89+96-16+140-14-20+9+0 +hash_sha512 17 26 824 +78+60+43+175-18-11-13+10-9-7-6+0-24+5+1 +hash_sha512 17 40 852 +79+42+23+28+3+0-7+0-23-3-4-15+3-15+3 +hash_sha512 17 61 892 +93+64+140-6+16-3+12-13-11-9-12-5+4+0+2 +hash_sha512 17 92 951 +154+51+20+10-15+118-11-16-2+4+9-24-23+0-2 +hash_sha512 17 139 1527 +207+119+55-7+87+1-8+0-15+0+121+10-8-1-2 +hash_sha512 17 209 1653 +106+59+36-8+10-4-15-10+10-18+5+1-14-12+0 +hash_sha512 17 314 2322 +129+47+53-17-10-4+0-20-8+152-15+110+7+20-19 +hash_sha512 17 472 3089 +96+183+29+130-28+17+28+146-21-20-25+0-7-20-22 +hash_sha512 17 709 4482 +113+65+160+62+43-19+84-12-37-33+0-30-23-16+42 +hash_sha512 17 1064 6584 +125+31+42+153+0-36+77-34+9-40-20+15-24-43-35 +hash_sha512 17 1597 9439 +299+219+81-1-29+44-7+96+10-53-37+32-82-73+0 +hash_sha512 17 2396 13804 +214+115+0+922+159-31-21-56+24+75-82-32-33+10-111 +hash_sha512 17 3595 20730 +212+33+109-26-46+143+58+31-16-28-49-19+124-14+0 +hash_sha512 17 5393 30738 +307+54+70-8+134+38-17-67+48+47+0-33-67-10-93 +hash_sha512 17 8090 45741 +258+48+0-41-72-32+0-18-127+69+35-112+8+26-120 +hash_sha512 17 12136 67855 +289+15+1-58+93-34+33-113+0+8-217-121+1-37-60 +hash_sha512 17 18205 101806 +25-81+39-72+162+79-14-100+1502+1497-26+0-62+902-107 +hash_sha512 17 27308 152274 +401+132+44-69-73+136-145+0-104+78-7-20+196+35-114 +hash_sha512 17 40963 228356 +15162+1879-173+729+3+0+194+41+1754-444-119-276-214-46-477 +hash_sha512 17 61445 342528 +15891+406+44-209+239-164-111+1794-59-113+597-128-378+0+1031 +hash_sha512 18 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 18 0 1254 +2582+2244+2202+2224+2123+2150+1702+0-124-124-35-110-118-110-113 +hash_sha512 18 1 1137 +183+44+48+44+31+3-8-10-14-10-4+41+0-6-18 +hash_sha512 18 2 1145 +44+36-28-10-9-6-22-4-15+1+0+79+68+135+12 +hash_sha512 18 4 1133 +91+46-23+10-6+9+7-4+3-9-32+0+61-65-3 +hash_sha512 18 7 1151 +67+54+8-6+20+8-22-2-8-29-7-19+81+0+3 +hash_sha512 18 11 1140 +75+53-29-2-55+4-5-7-17+11+0+0+105+10+41 +hash_sha512 18 17 1176 +28+6-21+119-51-3+15-69+2-51-9-33+28+24+0 +hash_sha512 18 26 1144 +67+3+12+125+0+0+32-35-61+35-23-72-56-70-66 +hash_sha512 18 40 1153 +32+54-10-8+52+2-7-10+70-3-4-3+30+18+0 +hash_sha512 18 61 1150 +34-9-5+19+0+8-9-5+8-9+14-2+76+2-8 +hash_sha512 18 92 1075 +100+64+48+173+50+0-14+57+30-34-41-33-39-39-30 +hash_sha512 18 139 1877 +76+39+73+10+74+79-16+0-11-20+66-17-9-6-26 +hash_sha512 18 209 1878 +154+83+43+91-2+37-36+0-3+9-18-11-2+0+27 +hash_sha512 18 314 2598 +24+27+22+40-17-9+25+57+0-18-4-19-19+0-17 +hash_sha512 18 472 3271 +52+69+7-22+0+4+16+5-7-117+13-112-7-11-12 +hash_sha512 18 709 4716 +155-29-12-7+1+29+94-33+8-11+85+0-14+71+0 +hash_sha512 18 1064 6851 +180-17+35-8+26+169+17+11+0-10-6-1+5-16-33 +hash_sha512 18 1597 9727 +13388+0+100+26-10+14-25+4+56-11+95-52-87-4-57 +hash_sha512 18 2396 13950 +174+4+35+20+0+26-25+11-92+5-80-29-60-122-58 +hash_sha512 18 3595 21095 +133+22+0-46-45-40-39-12-67-20+0+5+43+47+3 +hash_sha512 18 5393 31067 +165-25-92+0-19-70+32-98+12+103-20+756-49+49+45 +hash_sha512 18 8090 46024 +205+10-1-143+60+0+13-81+22+3-42-50-81-149+15 +hash_sha512 18 12136 68010 +85-58+125-89+93-17-37+84+0+2-53-79-62+50+15 +hash_sha512 18 18205 102031 +248+126-120-85+20+78-119-30+100-15+26-72+137+0-27 +hash_sha512 18 27308 152496 +456+291+36+107-40-8-49+117+0-87-23+110-120+1229-110 +hash_sha512 18 40963 228787 +14411+61-47-272+2762+25-125+0+1865-209+151-47+229-55-102 +hash_sha512 18 61445 342672 +13141-7+989+51-74-58+0-58+294-7-34+84+8-131+47 +hash_sha512 19 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 19 0 3073 +724+183+103+35-89+56-13-27+0-47-41+75-57+7-1228 +hash_sha512 19 1 801 +255+21+0+4+92-6-5+1+10-18-1+0-4-2+4 +hash_sha512 19 2 809 +87+3+7+0-4+2+0-14-17-6+105-27-4-8+86 +hash_sha512 19 4 800 +104+17-3+8-4-4+2+6-5-4+10+0-6-4+15 +hash_sha512 19 7 807 +111+79+22+0+144-13-17+8-16-12-2-1-10+6+3 +hash_sha512 19 11 814 +48+50+33-13-12+0-13+89-31+8-7+91-20-17+3 +hash_sha512 19 17 813 +63+48+18+9+4-6-20+6-16-1-5-11+17-23+0 +hash_sha512 19 26 827 +57+47+42+99-26-2+96-23-9-3+102-16-14+61+0 +hash_sha512 19 40 860 +59+29+29+13-1+0+87-14-6+15-10-18-1+2-16 +hash_sha512 19 61 892 +83+58+15+10+9+0+67+0-17-15-10-5+19-8-14 +hash_sha512 19 92 948 +168+70+27+7+12-12-9+5-5-6+0-9-5-23+1 +hash_sha512 19 139 1532 +138+86+13+74+0+88-3-3-21-17+75-18-3+7-27 +hash_sha512 19 209 1648 +107+77+20-3+16-3-18-5+31-4+10+3-13-19+0 +hash_sha512 19 314 2319 +91+102+69+82+9+6-8-2+0-28+1-30-2-19-1 +hash_sha512 19 472 3084 +88+76+66-17+4+5+0+102-9-14-12+11-21-16-12 +hash_sha512 19 709 4469 +85+76+114+97+18-77-22-9+0-21+0-42-40-10+0 +hash_sha512 19 1064 6586 +130+96+19+6-36+883+29-52-40-2+98-29-77-39+0 +hash_sha512 19 1597 9455 +76+164+40-47+77+2+0-41+65+6-16-33-103-54-40 +hash_sha512 19 2396 13767 +267+43+242+63+63-13-36-19-29-61+130-35+0-16+105 +hash_sha512 19 3595 20756 +264+49+0-82+39-51+59-93+18-78-22+36-153-75+22 +hash_sha512 19 5393 30706 +332+66+82+83+0-93+49+20-135-27-46+25-51-24-40 +hash_sha512 19 8090 45688 +322+106+63+0+116-201+91+46-24+8-83-29-79-64-115 +hash_sha512 19 12136 67814 +441+200+166-13+0+154+5+205+78-54-19-176-106-165-36 +hash_sha512 19 18205 101844 +315-83+10-86-11-21+255+13-161+113-94+145-45+0+95 +hash_sha512 19 27308 152329 +415+112-18-264+0+880+211-40+96-52+67-5-64+27-55 +hash_sha512 19 40963 228155 +15546-53+68-1+27+105+160-228+11-279+2872-395-141-250+0 +hash_sha512 19 61445 342460 +15119-313-557-39-299-294+737+102-151+579-211+0+85+3280+571 +hash_sha512 20 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 20 0 1218 +2822+2291+2160+2151+2150+2137+335-80-91+0-86-103-72-77-79 +hash_sha512 20 1 1132 +104+33+4+10+9-4-2+8-2-7-6+0-6-9+6 +hash_sha512 20 2 1143 +150+27+27+0-2-5-13-6-11+98+2-6-7+16+6 +hash_sha512 20 4 1142 +144+49+47-10-13-25+3-18+0-4+11+13-17+7-3 +hash_sha512 20 7 1150 +127+32+7-5+0+0-7-11+10-25+0-26-3-33+28 +hash_sha512 20 11 1158 +96+20+0-7-7+3+0+4-14-12-8-11+8+2-5 +hash_sha512 20 17 1114 +139+61+21+7-14+9-10+18-24+2-55-34-40+0-44 +hash_sha512 20 26 1156 +103+12+7+9-15+13+0+0-3-13-17+3-19+3-10 +hash_sha512 20 40 1162 +53+7+83+1-13+82-6-6-9+3+2-12-8+0-11 +hash_sha512 20 61 1162 +69+22+3-11+45-9+57-2-9+0-23+6-7+4-13 +hash_sha512 20 92 1117 +126+54+26+4-27-7-16+0-19+28+25-12+7-19-84 +hash_sha512 20 139 1868 +116+139+119+29+99-1-3-11-15+4+3+0-15-2-14 +hash_sha512 20 209 1879 +115+34+3+0+1+7-16-19-20-5+19-18+4-33-3 +hash_sha512 20 314 2581 +103+126-2+19+0-6+2-1-3+33-9+18+1-4-5 +hash_sha512 20 472 3253 +123+343+51+0+0-11+25+0+84-1+47-50-108-59-65 +hash_sha512 20 709 4740 +129+157+14-18+0-1-25+74-26-7-3+3-30+55+31 +hash_sha512 20 1064 6881 +81+5+14-69-22-16-1+33-34+0+43-48-18+2+53 +hash_sha512 20 1597 9706 +56+46+14-58+44-7-31+34-20-10+0+17-40-49+39 +hash_sha512 20 2396 13922 +244+115+16-57+0+24-37+92-17+19-10-41+74-1-44 +hash_sha512 20 3595 21113 +222+42+58+43-52+21-9+0-84-28-57-76-94+114+11 +hash_sha512 20 5393 31054 +176+16+1219+849+665-17+66+95-158-200-86+0-118-72-79 +hash_sha512 20 8090 45969 +491-84+63+68+104-77+52-114+60-8-35+0-69+57-36 +hash_sha512 20 12136 68006 +402+15+33-63-80+65+42+89-27-37-104+10+0-6-2 +hash_sha512 20 18205 102100 +1011-1-25+43-33+187-77+132+0-67+89-40+55-18+2096 +hash_sha512 20 27308 152616 +441+212-221+8-114-33-99+87+0+109-110-127-11+788+27 +hash_sha512 20 40963 228379 +13978+146+258+58-32-46-5-91-206+60+348-90-18+0+88 +hash_sha512 20 61445 342927 +38536-140-23-95+14-40+773+207-179+362-137+0+229-60+154 +hash_sha512 21 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 21 0 819 +2712+2358+2328+2313+2326+2039-8+3+0-25-34-43-39-34-25 +hash_sha512 21 1 796 +122+50+15-15-5-19+114+3-14+1-15+0-10-7+1 +hash_sha512 21 2 785 +114+71-2-1+143+23+1-8+0-11+0+3+108+0-7 +hash_sha512 21 4 794 +105+37+3-14+12+113+135-4-15-3-14+5-7-14+0 +hash_sha512 21 7 795 +165+56+30+5+110+0-2-31+10-19-17-1+4-12-11 +hash_sha512 21 11 796 +137+54+44+10-17+2-8+0+108-4-22-9-9-6+2 +hash_sha512 21 17 810 +145+61+25+1-31+101+0-26-27-17-17-25-13+111+3 +hash_sha512 21 26 807 +167+77+70+0-1+1-14+0-11-13+1-6-4+9+92 +hash_sha512 21 40 797 +233+62+36-2-8+112+10+0+1-17-1-23+6-11-18 +hash_sha512 21 61 851 +188+101+45+42+6+17-4-27+0+0-19-9-7-13-13 +hash_sha512 21 92 857 +129+57+7+0+12-2-20+5-15+140+14+0-15-11-14 +hash_sha512 21 139 1557 +137+81+162-19-1+6-7-6-10-8-14+107+12+8+0 +hash_sha512 21 209 1565 +188+125+30+117-12+88+16-5-12+0-17-19-21-3+68 +hash_sha512 21 314 2314 +173+116+72+69+0-21-17-12+14+81+10-12-9-32-9 +hash_sha512 21 472 3027 +192+142+21+17-17-56-8-23+14-7+1+8-17-18+0 +hash_sha512 21 709 4394 +92+89+112+8-2-12+0-46-53-18+15+2+9-5-5 +hash_sha512 21 1064 6581 +78+107+30-79+16+60+38-50-120-103+55-53-72-54+0 +hash_sha512 21 1597 9425 +108+66+25-28-34+71-40-16+0+34-59+55-27+43-63 +hash_sha512 21 2396 13713 +154+90-42+55+60+647-19-6+77-17+0-14-11-44+41 +hash_sha512 21 3595 20807 +223+77-11+28+12+20+0-94-18-134+10-166-85+161-22 +hash_sha512 21 5393 30774 +194+5+62-122+54-128+72-54-45+13+0-24+55-125-19 +hash_sha512 21 8090 45678 +316-33-32+97+51+146-91-37+61+0-18+43-47-116+1942 +hash_sha512 21 12136 67747 +212+649+108+0+5+74-57-62+111-244-21-21+15-206-17 +hash_sha512 21 18205 101917 +2+0+8+1524+17+9-191-68+658-110-72-60-164-204+32 +hash_sha512 21 27308 152172 +52-98+187+108-217-16-43+145-20-18+124-82+120+0+116 +hash_sha512 21 40963 228437 +16266+5+15+8-175+0-175+241+180+171-92-31-269-7-112 +hash_sha512 21 61445 342707 +14729-514-284-387-554-514+763-344+420+0+53+130+1075+843-519 +pow_inv25519 selected implementation amd64-safegcd compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 selected 32 4631 +5067+143+201+29-54-27+15-28-30+0+42+29-58-33-59 +pow_inv25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 0 32 15356 +7259+18-174-160+149+0-55+224-116-282-178+8+216-100+43 +pow_inv25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 1 32 15315 +972+45+58+50+98+99-258-41+0-143+57-125-158-128-16 +pow_inv25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 2 32 15314 +1125+184+0+7+43-42+129-260+59-179-24-209-33+216-49 +pow_inv25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 3 32 15390 +681-171-103+132-41-60-189+86-160+67+11+0-54+161+53 +pow_inv25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 4 32 15378 +1363+0-23+372-118-80+187+156+210+188-32-3-123+385-18 +pow_inv25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 5 32 15406 +837-5+0+17-172+96+74-253+121-125+72+37-27-116-12 +pow_inv25519 6 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 6 32 15295 +5097-63+72-11-47+15+61+0-94-194+8+10-42+16-169 +pow_inv25519 7 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 7 32 15385 +1073+45-59-147+239+46+101-31-85-58+0+112+271-246-109 +pow_inv25519 8 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 8 32 15480 +1658-18+57+0+173+146-282-157-1+0-16+268-101-6+88 +pow_inv25519 9 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 9 32 15367 +1334-104+27-102-9-33-149+390-29+0+101+76+63-77+218 +pow_inv25519 10 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 10 32 15429 +1216-164+59-187+100+46+56-159-115-166+0-89+81-129+57 +pow_inv25519 11 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 11 32 15229 +1111-30+0+21+10-12+56+33-17+11-3-288-3+111-31 +pow_inv25519 12 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 12 32 15784 +7291-19+75-15-15+23+220-18+0-48+56-71+70+72-35 +pow_inv25519 13 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 13 32 15851 +1107-130+624-5+70-146+28+0-44-64-92+45+102-71+20 +pow_inv25519 14 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 14 32 15792 +987+219+144+34-23+0-14+43+37-26-32-89+95-103-58 +pow_inv25519 15 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 15 32 15884 +1082+0+60+55+34+54+72-57-82-36-29-142-112-130+17 +pow_inv25519 16 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 16 32 15832 +1177-146-67+20+59+0+36+3+80-107-2-62+44-10-135 +pow_inv25519 17 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 17 32 15724 +1076+215+146+61+129+0+57+100-25-65-71-3-77-87-31 +pow_inv25519 18 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 18 32 15864 +1680+14+77+195+188+0+47-45-37+52-89-103-66-75-151 +pow_inv25519 19 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 19 32 15759 +1037+65-16+20+0+93+61+7-86-93-117-95-105-45+72 +pow_inv25519 20 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 20 32 15714 +2266+19-12-27+11-119-41+28-93+2+48-19-16+58+0 +pow_inv25519 21 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 21 32 15832 +943+34-17-45-10-52-81-23+41+40+116+8+0+98-17 +pow_inv25519 22 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 22 32 15930 +1072-33+39+0+92+0-14+42+4+9-43-94-78+16-113 +pow_inv25519 23 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 23 32 15816 +899-11-34+0+139+70+35+78-8+20+11-171-16-50-8 +pow_inv25519 24 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 24 32 14530 +12386+134+0-4+14-30+42-85+41+1-9-21-8+160-37 +pow_inv25519 25 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 25 32 14456 +1795+131-75+24-4+42+18-46+145-39-51-46+0-8+17 +pow_inv25519 26 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 26 32 14494 +1560+198+153+134-3+47-23-56-14+14+76-101-105+0-4 +pow_inv25519 27 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 27 32 14422 +1569+209+13-22+1+6-145-1-4-50+28-37+0+141-35 +pow_inv25519 28 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 28 32 14502 +1438+195+49+144+0-14-39-48-20-4-36+62+63-29+48 +pow_inv25519 29 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 29 32 14453 +1538+180-33+4-44-74+19-20+33+0+12-59-92+26-71 +pow_inv25519 30 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 30 32 14526 +1985+201+57+0-4-49-86+20-64+882+0-97-58+6-91 +pow_inv25519 31 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 31 32 14483 +1455+734+1388-53-74-40+21+0-69-110-21+1-35+10+35 +pow_inv25519 32 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 32 32 14492 +1179+255-114+37-18-43+24+29+34-45-35-25+0-13+90 +pow_inv25519 33 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 33 32 14459 +1636+279-29+71+35-70-45-21+22+0+130-9-98+85-83 +pow_inv25519 34 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 34 32 14696 +1330+112-119-38-40-83+3+22-7+20-3+11+0+20-3 +pow_inv25519 35 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 35 32 14463 +1059+208+25-90-46+9-129-46-57-40+5+86+21+0-7 +pow_inv25519 36 implementation amd64-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 36 32 14127 +3663+246+479+268+0-17+50-97+118-48-21+22-85-41-15 +pow_inv25519 37 implementation amd64-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 37 32 14117 +453+47+171+47+0+73-23+21-47-86-25-25+83-45-67 +pow_inv25519 38 implementation amd64-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 38 32 14146 +358-85-33+9-12-92+0-11+4-130+45+39+26+8-92 +pow_inv25519 39 implementation amd64-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 39 32 14096 +604-14+46-83-28-23+92+67+82+0-28+19-44+0-55 +pow_inv25519 40 implementation amd64-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 40 32 14168 +366+1-91-160+0-167-56+29+26+70+114-37-22+55-114 +pow_inv25519 41 implementation amd64-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 41 32 14090 +398+0+75+69+238-101-72-130-49+65+6-91-12+6-68 +pow_inv25519 42 implementation amd64-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 42 32 14103 +493+63+73+111+8+16-60-43-71-3+0-75-1-90+46 +pow_inv25519 43 implementation amd64-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 43 32 14107 +381+0-35+57+2-3-69-49+44+64+57+33-109-73-39 +pow_inv25519 44 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 44 32 10162 +4770+233-8-104-63+43-8+0-43+67+64+15-69-40+63 +pow_inv25519 45 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 45 32 10063 +614+29-35+148+6+61-8+0-80-39-66+88-31-58+94 +pow_inv25519 46 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 46 32 10159 +466+64+74+0-30+159-26+4-31-9+19-27-22-30+32 +pow_inv25519 47 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 47 32 10174 +393+0-18-2-88+53+1+96+18+45-40-23-44+65-50 +pow_inv25519 48 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 48 32 10178 +384+74+185+48-44+14-68-12+85+22-29-40-20-23+0 +pow_inv25519 49 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 49 32 10132 +383+27-93-40+28-60+44-54-17-76+144+30+103-50+0 +pow_inv25519 50 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 50 32 11733 +3139+34+143-68+100-141-142-200-170-73+68+508+0-19+33 +pow_inv25519 51 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 51 32 11653 +49-246+57+121+33-65+22-90-122+74+0-45+117-37-3 +pow_inv25519 52 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 52 32 11625 +467+11-5+0-40-71+71-2-23+47-81-24+74+43+0 +pow_inv25519 53 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 53 32 11677 -74+0+694+94-195-45+83-181+100-10+140+5-145-150+131 +pow_inv25519 54 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 54 32 11611 +777+168-2-82+231+137+217-2+50-92+69-70+0-10-17 +pow_inv25519 55 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 55 32 11667 -144+72+122+51-8+55+1-138-179+93-163+85-49-121+0 +pow_inv25519 56 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 56 32 11715 +185-89-113-170-95-57-52+88+17+28-202+39+92+25+0 +pow_inv25519 57 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 57 32 11600 +263+0+85+0+61+87-115-53-70+0+114-85+53-104+224 +pow_inv25519 58 implementation amd64-safegcd compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 58 32 4610 +500+57+115+80+0+74-37-24-56+0-44-48-33-47+70 +pow_inv25519 59 implementation amd64-safegcd compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 59 32 4594 +321+108+44+53+0-41-57+31-6-47+16+35-40-32-35 +pow_inv25519 60 implementation amd64-safegcd compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 60 32 4584 +336+111+36+39+58+44+0-12-36-11+0-40-3+30-15 +pow_inv25519 61 implementation amd64-safegcd compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 61 32 4614 +309+113+64+83+11+80-90-54-36-51-49-30+0+7-21 +pow_inv25519 62 implementation amd64-safegcd compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 62 32 4598 +576+89+56+18+2+133-21+58-19-64-1-49+0-50-50 +pow_inv25519 63 implementation amd64-safegcd compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 63 32 4597 +802+125+106+20+5+49+0-65-1-57-22+68-23-6-24 +pow_inv25519 64 implementation amd64-safegcd compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 64 32 4602 +226+137+108+44+0-15+7-32+143-37-6-68-28+8-13 +pow_inv25519 65 implementation amd64-safegcd compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 65 32 4598 +219+165+97+50-10+38-41+0-9-10-32+0+8-16-26 +pow_inv25519 66 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 66 32 15202 +1922+2+194+55-66+49-20-30-27-31+0+71+23-17-12 +pow_inv25519 67 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 67 32 14699 +3057+27+0-21-14-6+27-96-43-39+57+5+2-73+46 +pow_inv25519 68 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 68 32 14372 +2694+129+123+40-45-5+9+73-116-27-13+0-36+8-30 +pow_inv25519 69 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 69 32 14652 +2994+204-20+71-21-40+0-30+53+6-24+53-3-1+8 +pow_inv25519 70 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 70 32 14260 +2120+181+594+194+6+16+0+20-87-73-63-1-35-29-9 +pow_inv25519 71 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 71 32 14733 +2561+297+169+9-118+51-13+2-43-58+40+0-6-58-50 +pow_inv25519 72 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 72 32 14231 +2123+385+122-1+86-50+139+14-30-10-27-42+0+3-34 +pow_inv25519 73 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 73 32 14679 +4790+197+136-31-18-36-1+41+0+16+1-61+9-56-16 +pow_inv25519 74 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 74 32 14245 +1893+270+16-34+44-11+32+4-12-44-60+3-70+0-69 +pow_inv25519 75 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 75 32 14688 +3711+160+134+0-19-5-42-23+36+12-45+3-12-30+20 +pow_inv25519 76 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 76 32 15546 +1261+90+10+33+0-53+22+17-19-20-45-102-3-62+3 +pow_inv25519 77 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 77 32 14642 +3104+328+263+11+43-1+0-10-63-12-12-13+73-7+12 +pow_inv25519 78 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 78 32 24589 +2036+339+31-240+181-26-26+0+524-151+248-273+35-14-142 +pow_inv25519 79 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 79 32 28127 +1405+125+47-11-113-58+681-167-77+23-88+55+0-136+145 +pow_inv25519 80 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 80 32 24560 +3402+180+148+0-78+141-155+87-111+295-31+65-108-78-158 +pow_inv25519 81 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 81 32 27640 +1455+91-18-30+27+67-34+65-67+71-86-44-123+0+142 +pow_inv25519 82 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 82 32 25513 +2243+317+0-111-52-90-36+219+46-37+35+97+140-88-3 +pow_inv25519 83 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 83 32 27659 +1949+60+18-78-55-29+18+28+48+0-25-31-110-103+38 +pow_inv25519 84 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 84 32 25617 +2186+2008+15-51+35-308-151+0-253+23-154-60+21-83+56 +pow_inv25519 85 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 85 32 27865 +1612+0+142+87-59-197+9+83-158-36-28-85+30+20-198 +pow_inv25519 86 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 86 32 25515 +1403+298+142+0-103+27+126-329-21-126+191+654-53-2-218 +pow_inv25519 87 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 87 32 27748 +1587+110+90+174-159-121-24+54+99+0-47+222-43-205-88 +pow_inv25519 88 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 88 32 25625 +2111+426+0-86-230-221-1+230+83-144+10-18-371+280+15 +pow_inv25519 89 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 89 32 28173 +1727+181+0+60-58-35+4-76-68-18-56-85+73+42+4 +pow_inv25519 90 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 90 32 14804 +5116+16+51-11+32+33-101+0-102-50+49+52-46-147-73 +pow_inv25519 91 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 91 32 14690 +432+149-32+74+41+94+0+53-17-73-30-96-54-31+133 +pow_inv25519 92 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 92 32 14701 +419+57+168-80+218-27-155-56+43-121-70+53-103+0+104 +pow_inv25519 93 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 93 32 14627 +972+161+0+21+34-10+106-40-20-7-43-74-14+69+67 +pow_inv25519 94 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 94 32 14675 +558+30+0-52+330-6-39+151-81-12+53+39-136-26+83 +pow_inv25519 95 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 95 32 14727 +517+0-92-19+180-107-2-17+113-34+3-35+114+73+25 +pow_inv25519 96 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 96 32 14667 +832+49+14+50+36-42+0+28+4-17-40-137-5-124-33 +pow_inv25519 97 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 97 32 14635 +627+163+117+0-65-36-1+44+59+161-44-22+33-33-22 +pow_inv25519 98 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 98 32 14766 +310+131-115+1-37+28-78+81-92-82-109-45+175+30+0 +pow_inv25519 99 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 99 32 14728 +512+18+63+47+100-71+117-52-50-90-117-7-19+20+0 +nP_montgomery25519 selected implementation amd64-avx512ifma-ns5l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 selected 32 64628 +7679+300-2-2-103-57-137+38-187+887+104+2187+12+0-67 +nP_montgomery25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 0 32 129531 +7136+590+55+101-693-322-67+5558+247-1113-414+1052+0-511-104 +nP_montgomery25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 1 32 129247 +1277-112+82-229-255+78-171+137-427+16+0+2396-356-322+9 +nP_montgomery25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 2 32 130437 +0-394+200+263-69+275-709-730+1274+435-545-280+105+18-383 +nP_montgomery25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 3 32 130100 +716+370+887-258-295+384+128+170+283-353-618-323-21-258+0 +nP_montgomery25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 4 32 129596 +493+524-714+994+2-261-865+82-551+0-47+1823-243+1582-860 +nP_montgomery25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 5 32 130029 +2997-450+281-145+201-210+0+1991+346-405-296+33+1044-95-336 +nP_montgomery25519 6 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 6 32 130139 +728+278-452+121+2150-598+1071+442-189+0+4-195-94-75-52 +nP_montgomery25519 7 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 7 32 128975 +979+126+163-139+92+0-42+349-95-170-118-47-84+141+21 +nP_montgomery25519 8 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 8 32 131048 +390-196-274+31-676+277+332+80-436+0+146-462+1324-726-446 +nP_montgomery25519 9 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 9 32 130130 +209-236-116-503-232-234+0+958-168+787+391+577-300+127+185 +nP_montgomery25519 10 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 10 32 130253 +462-5-594+624+688-504+576-371-350-1019+449+829+0-211+726 +nP_montgomery25519 11 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 11 32 129730 +614+56+329-152-140-401-338-350+131+0+39-650+68-466+376 +nP_montgomery25519 12 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 12 32 139747 +7184+45+0+83-86+158+253-30-73-82-146+163-45+21-30 +nP_montgomery25519 13 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 13 32 139747 +804+495+176-6+277-136+112+176+0-229-342-200+23-191-123 +nP_montgomery25519 14 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 14 32 139943 +877+150-53-162-57+39+177+203-134+86+0-181+174-338-82 +nP_montgomery25519 15 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 15 32 139621 +1130+138+304+349-229-204-341-79+214-223+0+1078+214-119-334 +nP_montgomery25519 16 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 16 32 140270 +260-454-364-688-510-445-669+646+23+318-116+458+71+254+0 +nP_montgomery25519 17 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 17 32 139502 +1190+909+829+607+984-355-215-234+0-117-83+50-215+186-236 +nP_montgomery25519 18 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 18 32 139864 +947+34+157+22-156-271+81-183+96-84+0-26+76-303-282 +nP_montgomery25519 19 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 19 32 139072 +1226+252+0+422+131+685+501+507-527-408-689-342-271-561-658 +nP_montgomery25519 20 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 20 32 139189 +762+50-100-103-190+2139-258+22+0+144+526-341-362+15-90 +nP_montgomery25519 21 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 21 32 138940 +323-405+45+97+296-289-368+761-125+26-493+0+14-64-12 +nP_montgomery25519 22 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 22 32 139295 +1003+170-56+136+39+23+183-85+91+0-17-269-238-158-117 +nP_montgomery25519 23 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 23 32 138900 +662+0+202+365-421-306+126-491-202+471+2329-405-154-175+21 +nP_montgomery25519 24 implementation amd64-avx2-hey10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 24 32 87418 +6583+207+87+0-117+158-232-25-196-134+22-86+173-85+52 +nP_montgomery25519 25 implementation amd64-avx2-hey10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 25 32 86966 +1627-62+88-84-62-26-60-84+6+12-111+74+1+92+0 +nP_montgomery25519 26 implementation amd64-avx2-hey10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 26 32 87469 +1141+26+355+101-239+168+1+0-19-204+1802-168-214-70-6 +nP_montgomery25519 27 implementation amd64-avx2-hey10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 27 32 87070 +1703+27+157-137-124-32+129-160+0+141-298+101-135-92+410 +nP_montgomery25519 28 implementation amd64-avx2-hey10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 28 32 87245 +1677+248+74+137-39-7+254-28-248-79+35+0+9-208-204 +nP_montgomery25519 29 implementation amd64-avx2-hey10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 29 32 87072 +1721-104-288+154-12+19-64+2-95-72+234+0+86-100+48 +nP_montgomery25519 30 implementation amd64-avx2-hey10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 30 32 87350 +1939+444+315+252+213-107-138+41-151+601+0-9-75-169-306 +nP_montgomery25519 31 implementation amd64-avx2-hey10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 31 32 87182 +1075-8-46-6+138-130+6-229+136-175+19-380+88+84+0 +nP_montgomery25519 32 implementation amd64-avx2-hey10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 32 32 87602 +5575+193-106-163+309+0+376+167-270+1695+449-111-218-123-11 +nP_montgomery25519 33 implementation amd64-avx2-hey10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 33 32 87257 +1609+94-107-195+0+1727-550-118+172-122+20-381+83+114-267 +nP_montgomery25519 34 implementation amd64-avx2-hey10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 34 32 87317 +1574-129+143+196+34-7+245+54-245-147+0-106+1-121-217 +nP_montgomery25519 35 implementation amd64-avx2-hey10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 35 32 87177 +1055-368+54-133+16-150-104-17-231+31+32+76+0-70+153 +nP_montgomery25519 36 implementation amd64-avx2-hey10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 36 32 87539 +1266-7+148+86+0-106+71-150-122-293+2372+139+215-344-230 +nP_montgomery25519 37 implementation amd64-avx2-hey10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 37 32 87094 +2376+693+238-66+169-90+69-84-112+5-258+51-188+0-268 +nP_montgomery25519 38 implementation amd64-avx2-hey10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 38 32 87411 +1327+2503+1831-74+84+0+1059-113+432-231-107+7-195-493-217 +nP_montgomery25519 39 implementation amd64-avx2-hey10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 39 32 87153 +1160-163+328+301+80-101-2-135-56+1425+179-102+0+24-245 +nP_montgomery25519 40 implementation amd64-avx2-hey10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 40 32 87495 +6284+128+0-259+58+195-52-220+41-500+36173-113-77+27-509 +nP_montgomery25519 41 implementation amd64-avx2-hey10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 41 32 87120 +1153+162-164-171-89+122+129-164+274-371+0-249-230+200+778 +nP_montgomery25519 42 implementation amd64-avx2-hey10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 42 32 87307 +1328+185-112+891+110-184+14+0-147-114-171+1412+3270-69-112 +nP_montgomery25519 43 implementation amd64-avx2-hey10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 43 32 87024 +1182+40+1919+137+65-44-147+0-121-159-100+1-166+70-63 +nP_montgomery25519 44 implementation amd64-avx2-hey10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 44 32 87393 +1389+450+203+145+0-154+1708-163+25+993-141-287-419-315-70 +nP_montgomery25519 45 implementation amd64-avx2-hey10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 45 32 86981 +1031+494-114+151+37+3426-87-79+0+136-51-1-208+16-155 +nP_montgomery25519 46 implementation amd64-avx2-hey10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 46 32 87630 +3109+0+41-108+1670-251-112+1673+958+1935+143-112-537-379-25 +nP_montgomery25519 47 implementation amd64-avx2-hey10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 47 32 87139 +1737+0+205+3084+61+9+86-89-81-74-100-18+49-111-103 +nP_montgomery25519 48 implementation amd64-avx2-hey10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 48 32 87249 +1416+110+266+85-6+167-53+26-70-163-199+17-76+0-101 +nP_montgomery25519 49 implementation amd64-avx2-hey10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 49 32 86950 +1613-123+356+245+142-54+250-102-1+0-14-27+1671-116+268 +nP_montgomery25519 50 implementation amd64-avx2-hey10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 50 32 87489 +1358+371+3-118-7-21-243+172+34-165+266+0-136+99-60 +nP_montgomery25519 51 implementation amd64-avx2-hey10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 51 32 87070 +1454+515+265+275-10-202+121-51-2+44+61+0-18-251-171 +nP_montgomery25519 52 implementation amd64-avx2-hey10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 52 32 87412 +3010+79+70+256+100-253-41-63+81+405-369-182-266+0-268 +nP_montgomery25519 53 implementation amd64-avx2-hey10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 53 32 87187 +3081-85+4052+7+58+241-238-139-239-185-137-338+0+13+194 +nP_montgomery25519 54 implementation amd64-avx2-hey9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 54 32 88603 +4654+164+21+1-151-17-110-251-215+194+41-99-102+0+38 +nP_montgomery25519 55 implementation amd64-avx2-hey9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 55 32 88329 +1058+113+25-39-31-26-12+16+0+11-149+80+74-30-33 +nP_montgomery25519 56 implementation amd64-avx2-hey9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 56 32 88627 +1237+43-248+0+20+4050-152-119-175-248-148+23+55+15-106 +nP_montgomery25519 57 implementation amd64-avx2-hey9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 57 32 88404 +513-73+63+2+0-37+35-139+124-90+63-97-186+58-208 +nP_montgomery25519 58 implementation amd64-avx2-hey9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 58 32 88433 +1955+375+135+115-79-189+69-28-117-132+107+93-15+0-98 +nP_montgomery25519 59 implementation amd64-avx2-hey9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 59 32 88276 +788+60-8-162-165+10+2756-232-2+787+0+63-110-118+24 +nP_montgomery25519 60 implementation amd64-avx2-hey9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 60 32 88494 +1062+104+250+194-121-136-170-26+73-6-100+14+81-151+0 +nP_montgomery25519 61 implementation amd64-avx2-hey9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 61 32 88141 +953+41-1-74+99+82+91+0-93+30-37+16-60-73-88 +nP_montgomery25519 62 implementation amd64-avx2-hey9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 62 32 88443 +5395+35+0+14+44-91-95+125+6-100-103-142-134-61+906 +nP_montgomery25519 63 implementation amd64-avx2-hey9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 63 32 88093 +838+138-53-46-131-155+60+6-51+15+236-26-171+153+0 +nP_montgomery25519 64 implementation amd64-avx2-hey9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 64 32 88375 +1182+193-2+105+36+0-193-177+19+106-107-115+1-76-161 +nP_montgomery25519 65 implementation amd64-avx2-hey9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 65 32 88084 +1248+260+30+261-140+174-46-123+213+1-192-122-118+0-68 +nP_montgomery25519 66 implementation amd64-avx2-hey9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 66 32 88400 +997+126+967-36+128-111-35-210-68+0+59+135-27+160-69 +nP_montgomery25519 67 implementation amd64-avx2-hey9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 67 32 88126 +1276+345+671-5+55-99-167-230+28-75+61+0+415-65-175 +nP_montgomery25519 68 implementation amd64-avx2-hey9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 68 32 88454 +1235+168-131-168+70-158+178-113-121-133+0+2102+22+313-35 +nP_montgomery25519 69 implementation amd64-avx2-hey9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 69 32 88184 +1066-99+717-86+66+25+905+98-43+0-99+42-52-38-23 +nP_montgomery25519 70 implementation amd64-avx2-hey9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 70 32 88534 +4456+80-34-222-219-346+66-15+94+883-51-147+236+71+0 +nP_montgomery25519 71 implementation amd64-avx2-hey9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 71 32 88382 +478+150-6-45+13+2382-131-11+0+38-129+67+10-73-5 +nP_montgomery25519 72 implementation amd64-avx2-hey9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 72 32 88652 +636-6-153-173+53+97+0-35+165-145+829+1997+128-23-131 +nP_montgomery25519 73 implementation amd64-avx2-hey9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 73 32 88181 +13656+30+130-116+31-141-30+779+34-303+0-134-125-69+132 +nP_montgomery25519 74 implementation amd64-avx2-hey9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 74 32 88517 +714+1+2-263-148-241-98-38-77+145+9+30+19-137+0 +nP_montgomery25519 75 implementation amd64-avx2-hey9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 75 32 88102 +450+47+0+192+129-5-7+36+0-73-136+54-113-156+1234 +nP_montgomery25519 76 implementation amd64-avx2-hey9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 76 32 88510 +2689+287+15+232-19-32-46-93+134+0+147+46-4-22-20 +nP_montgomery25519 77 implementation amd64-avx2-hey9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 77 32 88285 +1186-34+340-51+168-44+4-70-4+90-42+48+265-70+0 +nP_montgomery25519 78 implementation amd64-avx2-hey9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 78 32 88487 +862+269-72+70+43+0+16+623-169-159+225-44-67-98-233 +nP_montgomery25519 79 implementation amd64-avx2-hey9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 79 32 88417 +2086+224+1050+578+5+2442-16+10-288-72-73+0-117-233-131 +nP_montgomery25519 80 implementation amd64-avx2-hey9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 80 32 88530 +1217+0+89-34-44+251-105-23-126+25+7-148+45+2155-215 +nP_montgomery25519 81 implementation amd64-avx2-hey9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 81 32 88191 +633+0+59-53+68-62-147+155+37-152-31-68+91-14+19 +nP_montgomery25519 82 implementation amd64-avx2-hey9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 82 32 88469 +1769+150-78+50-39-97+928+83+80+178-34-74-101-93+0 +nP_montgomery25519 83 implementation amd64-avx2-hey9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 83 32 88228 +1413+33+0-150-212+51+36+2098-30-342-145+167+124-87-134 +nP_montgomery25519 84 implementation amd64-avx2-ns10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 84 32 86157 +5161+234-48+240-184+0-177+247+0+149+885-181-47-121-292 +nP_montgomery25519 85 implementation amd64-avx2-ns10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 85 32 85676 +1005+39+345+150-52-107-60+91-350-30+0+2004-29+4572-57 +nP_montgomery25519 86 implementation amd64-avx2-ns10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 86 32 85955 +1127+0+144+48-267-52+70+251-131+148-238-130-226+279-178 +nP_montgomery25519 87 implementation amd64-avx2-ns10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 87 32 85959 +674-178+1396+142+0-759+195+1003-537+56-356-48-213-336+443 +nP_montgomery25519 88 implementation amd64-avx2-ns10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 88 32 86225 +921+126+224+0-149+107+148-317-338-371+664-340+1108-164-256 +nP_montgomery25519 89 implementation amd64-avx2-ns10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 89 32 85555 +2948+0+536+95-179+13-72+50-110-102-28-49+1348-209+10 +nP_montgomery25519 90 implementation amd64-avx2-ns10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 90 32 86243 +2032-44+29-82+0-275+2659+245+642+339-214+217-457-320-195 +nP_montgomery25519 91 implementation amd64-avx2-ns10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 91 32 85619 +697-153+18-158+106+139-181+206-34+22-84-92+0+323-184 +nP_montgomery25519 92 implementation amd64-avx2-ns10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 92 32 85647 +5849+491-20+197+0-7+1328+13-106+1358-131-234-104-402+243 +nP_montgomery25519 93 implementation amd64-avx2-ns10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 93 32 85376 +1955-483+124+106-447-27-232+0-404+88+151-92+231+35-165 +nP_montgomery25519 94 implementation amd64-avx2-ns10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 94 32 85806 +1121-272+534+117-269-16+285+0-246-110+209-393+672-193+317 +nP_montgomery25519 95 implementation amd64-avx2-ns10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 95 32 85302 +1596-344+165+77-185+66+93+0-567-312-175-305+2070+3248-326 +nP_montgomery25519 96 implementation amd64-avx2-ns10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 96 32 85815 +1270+117+150+221-60-366-138-309+218-278+167-144-247+0+695 +nP_montgomery25519 97 implementation amd64-avx2-ns10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 97 32 85497 +1396-123+360+215-467+3701-116-74+0+93+131+519-151-254-248 +nP_montgomery25519 98 implementation amd64-avx2-ns10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 98 32 85677 +1112+342-9+0-214-135+16-157-273+1303+71+420+94-28-313 +nP_montgomery25519 99 implementation amd64-avx2-ns10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 99 32 85543 +964+1665-257-47+227+242-302-265-35-294+0+118+47-225+21 +nP_montgomery25519 100 implementation amd64-avx2-ns10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 100 32 86037 +2564+84+428+150-292-157-305-104-380-432-9+1041+2+108+0 +nP_montgomery25519 101 implementation amd64-avx2-ns10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 101 32 85538 +1067+324+2327-46+467+0+103-62-154-110+375-52+44-235-85 +nP_montgomery25519 102 implementation amd64-avx2-ns10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 102 32 86357 +805+328+64+102+0-147-153+1389+480+1407-410-271-401-212-581 +nP_montgomery25519 103 implementation amd64-avx2-ns10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 103 32 85440 +762+0+408+3-48-102-118-45+370-331-362+1787-431+21+30 +nP_montgomery25519 104 implementation amd64-avx2-ns10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 104 32 86084 +904-280+218+38-143-87+237-96+169+848-113+0-565+1126-138 +nP_montgomery25519 105 implementation amd64-avx2-ns10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 105 32 85562 +700-90+2863+2519-235+400-47+147-198-15+0-126+1327+160-205 +nP_montgomery25519 106 implementation amd64-avx2-ns10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 106 32 86154 +2453+53-102+113-112-355+307-113-302+149+627+3401+0-78-395 +nP_montgomery25519 107 implementation amd64-avx2-ns10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 107 32 85690 +1024-123+348+166+4-171+0+3599-159+731-126+337-397-77-274 +nP_montgomery25519 108 implementation amd64-avx2-ns10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 108 32 85684 +2397+826+540-241+73-180-83-20+0-18+0+103+123-366+146 +nP_montgomery25519 109 implementation amd64-avx2-ns10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 109 32 85912 +3075-428+215+69-121-172+0+27+348+167+128-10-86-351-196 +nP_montgomery25519 110 implementation amd64-avx2-ns10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 110 32 86178 +1961+359+266-170-24+300+5-143-270+80+99+0-275-148-546 +nP_montgomery25519 111 implementation amd64-avx2-ns10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 111 32 85420 +1131-209+342-107+11-26+43+17+0+318-222-68-185-115+74 +nP_montgomery25519 112 implementation amd64-avx2-ns10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 112 32 86300 +802-162+120+0+8-276+116+4882+39772+108-217-312-21-214-678 +nP_montgomery25519 113 implementation amd64-avx2-ns10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 113 32 85473 +829-132+552-181+129-235+155-105+0+251-197+103+36-240-141 +nP_montgomery25519 114 implementation amd64-avx2-ns9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 114 32 87960 +5654-144-264+303+68+18-14+133-63+0+43-84-71+18-200 +nP_montgomery25519 115 implementation amd64-avx2-ns9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 115 32 87682 +1129+323-315+33+1046+162-128-207-69+272-3+1180+0-49-60 +nP_montgomery25519 116 implementation amd64-avx2-ns9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 116 32 88064 +913+73+357+48-190+135+0-49-156+12-61+246-298-209-92 +nP_montgomery25519 117 implementation amd64-avx2-ns9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 117 32 87726 +1486-8+301-113+0+104+811-240+149-27+95-160+17-151-97 +nP_montgomery25519 118 implementation amd64-avx2-ns9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 118 32 88016 +811+275+6-66-106-146-101+48+771-296+95+0-125+1452-72 +nP_montgomery25519 119 implementation amd64-avx2-ns9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 119 32 87623 +1006+228-158+130+162-2-113-248+43+2635-175+118-150+0-368 +nP_montgomery25519 120 implementation amd64-avx2-ns9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 120 32 87884 +1244+611+0+183+57-202-57+145-78+1-161-26-53-78+77 +nP_montgomery25519 121 implementation amd64-avx2-ns9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 121 32 87610 +697+1086-82+136+160-66+0-38-154-212-77+28-21+1323+6 +nP_montgomery25519 122 implementation amd64-avx2-ns9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 122 32 88053 +5512+416+126+1056-186-42-97+0+7+162-44+91-213-113-171 +nP_montgomery25519 123 implementation amd64-avx2-ns9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 123 32 87812 +858+7-33-48-197+52-169+4+0-160+9-56+60-205+107 +nP_montgomery25519 124 implementation amd64-avx2-ns9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 124 32 88103 +1260+0+51+125-125+92+35-9-73-80-29-349+299+610-86 +nP_montgomery25519 125 implementation amd64-avx2-ns9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 125 32 87819 +1370-506-135-126-329+2419+408+1206+5+2161-100+149-67-214+0 +nP_montgomery25519 126 implementation amd64-avx2-ns9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 126 32 88115 +981+81-118-183-151-81+11+16+215-57+75-20+0+61-177 +nP_montgomery25519 127 implementation amd64-avx2-ns9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 127 32 87920 +875+8-126-173-29+186-112+0+278+76-75-241+30-5+105 +nP_montgomery25519 128 implementation amd64-avx2-ns9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 128 32 88149 +971+366-32+63+55-144-128+0-1+1016-309+32+1069-61-113 +nP_montgomery25519 129 implementation amd64-avx2-ns9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 129 32 88021 +1174+108-101+0+142-26-261-263-10+52+78+31-22+827-172 +nP_montgomery25519 130 implementation amd64-avx2-ns9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 130 32 87879 +2619+142+145+0-406+61-49-181-49+4369+25766+42-44-256-88 +nP_montgomery25519 131 implementation amd64-avx2-ns9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 131 32 87671 +796+18+142+1970-133+51+40+0-314+57-127-325-166-123-37 +nP_montgomery25519 132 implementation amd64-avx2-ns9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 132 32 87901 +1093+89+139+19+0+114-8-88+77-137-93-19-41-92+158 +nP_montgomery25519 133 implementation amd64-avx2-ns9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 133 32 87630 +680+128+0+247-116-11+32+768-169+33+22-55-27-206-110 +nP_montgomery25519 134 implementation amd64-avx2-ns9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 134 32 87860 +1949+71+68+1966+56-147+0-96+108-108-37-104-157-190+108 +nP_montgomery25519 135 implementation amd64-avx2-ns9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 135 32 87634 +803-71+81+186+1112+80+42-74-156-17-37+0-12+127-147 +nP_montgomery25519 136 implementation amd64-avx2-ns9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 136 32 88018 +2638+412-168+424-48+49+0+15-300-204+207-3+216-197-76 +nP_montgomery25519 137 implementation amd64-avx2-ns9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 137 32 87689 +1498-26-16-118+259-76-333-266+80+917+25+289-43+57+0 +nP_montgomery25519 138 implementation amd64-avx2-ns9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 138 32 87831 +1599+2934+0+92-128-151-84-94+1393+69+2447+135-112-95-93 +nP_montgomery25519 139 implementation amd64-avx2-ns9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 139 32 87586 +1219+101+204-108-174-75+21-90-10+61-132+27-197+91+0 +nP_montgomery25519 140 implementation amd64-avx2-ns9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 140 32 87944 +1288+159-232-34+274+0+58+36+45-75+139-248-99-217-135 +nP_montgomery25519 141 implementation amd64-avx2-ns9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 141 32 87648 +975-31+289+97+86-68-2+137-42-130-97-100+22+1215+0 +nP_montgomery25519 142 implementation amd64-avx2-ns9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 142 32 87771 +1082+56+51+1604+92-49-84+42-130-219-107-149+15-104+0 +nP_montgomery25519 143 implementation amd64-avx2-ns9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 143 32 87652 +826+51+11+181+176-57-131+62-256-159-272+28+0-96-149 +nP_montgomery25519 144 implementation amd64-avx512-hey10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 144 32 86463 +3369+159-52+0-73-30+15+34-5+2-125+46+28-46-65 +nP_montgomery25519 145 implementation amd64-avx512-hey10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 145 32 86168 +423+118+759+48-99+0-60-2-101-7+47-60+36+147-140 +nP_montgomery25519 146 implementation amd64-avx512-hey10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 146 32 86478 +559+48+147-45-57-91+0-7+35+105-89+50-138+26-115 +nP_montgomery25519 147 implementation amd64-avx512-hey10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 147 32 86154 +367+138-3-23-58-100+108+148+118-23-21+37+0+210-61 +nP_montgomery25519 148 implementation amd64-avx512-hey9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 148 32 87967 +3613+0+81-156-66-17+56+23+551+105-84-212+115-72-248 +nP_montgomery25519 149 implementation amd64-avx512-hey9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 149 32 87761 +472+98+21-237+117+31-89-78-36-184-144+37-61+0+31 +nP_montgomery25519 150 implementation amd64-avx512-hey9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 150 32 88003 +599+63-139+128+162-80-19-17-2+0+61+5+207-34-61 +nP_montgomery25519 151 implementation amd64-avx512-hey9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 151 32 87651 +264-22+3+96+0+23-23+84-89-92-94-2+21-238+838 +nP_montgomery25519 152 implementation amd64-avx512-ns10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 152 32 84888 +3524+153+55+35+38+213+73-254-89+0-143-63-189-156-34 +nP_montgomery25519 153 implementation amd64-avx512-ns10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 153 32 84420 +735+0-23-107+81+165-59+18+4+22-216-72-115+58-95 +nP_montgomery25519 154 implementation amd64-avx512-ns10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 154 32 84882 +682+264+189+117-64-94+32+0+50-58-72-19-41-128+115 +nP_montgomery25519 155 implementation amd64-avx512-ns10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 155 32 84433 +317+96+68+56-5+901+83-91+0-70-87+48-72-12-14 +nP_montgomery25519 156 implementation amd64-avx512-ns9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 156 32 87280 +3291+199+199-25+999+110-57+52-66-140-76-117+0-78+1 +nP_montgomery25519 157 implementation amd64-avx512-ns9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 157 32 86977 +320-23+0-78+91-169-159+44-75+121-48+220-54+318+34 +nP_montgomery25519 158 implementation amd64-avx512-ns9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 158 32 87356 +480+169-55+3-39-130-235-68-52+27023+603+92+60+0-107 +nP_montgomery25519 159 implementation amd64-avx512-ns9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 159 32 87105 +257+134-74+237-181+27-235+0+92-167+38-120+351-100-113 +nP_montgomery25519 160 implementation amd64-avx512ifma-hey5l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 160 32 66682 +6703+233+71-140-160-12+62-179+0-18+37+18-55+39-72 +nP_montgomery25519 161 implementation amd64-avx512ifma-hey5l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 161 32 66510 +844+153-81+211-117-101+52-305-165+35+2007-141+0-56+30 +nP_montgomery25519 162 implementation amd64-avx512ifma-ns5l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 162 32 64841 +1486+191+0+93-58+7+93-287-83+589-149-122+247-49-279 +nP_montgomery25519 163 implementation amd64-avx512ifma-ns5l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 163 32 64588 +390+66-65+184-24-52-75-243-162+0-49+45+32+66+70 +nP_montgomery25519 164 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 164 32 118492 +4503+239+46-153+35-160+5643-36+61-76-253-48-37+0+85 +nP_montgomery25519 165 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 165 32 118180 +219+78+0-33-39-123+178-48+137-194-190+614+2226-19+258 +nP_montgomery25519 166 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 166 32 118459 +448-26+306+158-113+35-180+5787+168-80+0-8-138-157+21 +nP_montgomery25519 167 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 167 32 118240 +586+210-98-255+44-115-291-416+21+0+259+48+30-69-202 +nP_montgomery25519 168 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 168 32 118485 +646+9+1095+52-272+0-151+5613-39+67-275-34-52-70+49 +nP_montgomery25519 169 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 169 32 118247 +320+0-12+105+762-350-166+36+696-138+111-101-90-81+7 +nP_montgomery25519 170 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 170 32 118452 +1355+20-151+210-227-51-29+38-179+467+102+73-32-37+0 +nP_montgomery25519 171 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 171 32 118167 +19-233-56-235-64+0+2-40+6+85+159-284-48+18+149 +nP_montgomery25519 172 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 172 32 118321 +1006+22+1+157+143-157-42-26-227+0+35-120+91-33-89 +nP_montgomery25519 173 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 173 32 118200 +101+784+727+1378-24+75+73-56-148-98-72+0+119-250-125 +nP_montgomery25519 174 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 174 32 118425 +365+95+25+15-31+169+0-61-251-183-127+172-43+142-261 +nP_montgomery25519 175 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 175 32 118244 +272+101-84+59+4-93+0-16+520+17+92-182-296-73-74 +nP_montgomery25519 176 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 176 32 94768 +5597+38+0+101-504-34-35-483+234-82+75-233+54-96+257 +nP_montgomery25519 177 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 177 32 94316 +632-8+117+1+80-125-282+6+120-117-371+162+0-447-93 +nP_montgomery25519 178 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 178 32 94423 +91-5-23+65+225+127+0-18+648-98-74+7+73-346-192 +nP_montgomery25519 179 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 179 32 94177 +525+323+72-90+711+63-70-155-112+76+4-113-407+0-47 +nP_montgomery25519 180 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 180 32 94476 +18+54-273+153-524-51-99+640+347-165+0+128-56-134+7 +nP_montgomery25519 181 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 181 32 94449 -102+1-357-15-322-187-413-69+0+3+641+305+250+93+96 +nP_montgomery25519 182 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 182 32 99514 +5163+171+300-101-284-6+96+31-110+80+0-324-247-33+76 +nP_montgomery25519 183 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 183 32 99246 +398-184-105-296+196+27+0+77-142-84+191-114+255+193-195 +nP_montgomery25519 184 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 184 32 99336 +309+194+300+62-260-122-27+28-5+811+69-421-78+0-58 +nP_montgomery25519 185 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 185 32 99173 -9+54+65+1159+958+0+148-85+149-259-112+100-167-321-117 +nP_montgomery25519 186 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 186 32 99485 +451+0+67+3-243-26+92+79-42-8+19+106-229-197-292 +nP_montgomery25519 187 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 187 32 99175 +869-140-93+260+49-353+57-149+810+89-334-186-126+223+0 +nP_montgomery25519 188 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 188 32 99249 +389+151+82-54-61+82+108+0-40+165-16+200-146-226-48 +nP_montgomery25519 189 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 189 32 99089 +444+243-111-105-259-65-8+0-216+79+17+195-205+140+278 +nP_montgomery25519 190 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 190 32 165105 +3779-326-1189-1521-406+1004+78+457+348-201+0-203+636+123-295 +nP_montgomery25519 191 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 191 32 197266 +6462+484-19-28-319-475-295-421+7+398+0+652+2-376+1581 +nP_montgomery25519 192 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 192 32 159192 +5867-1171-1492-1641-1466+426+0-198+27+427-336-97+69+505+17 +nP_montgomery25519 193 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 193 32 196638 +5933-2+93+106+0+148-346+452+388+162-374-142-208-358-88 +nP_montgomery25519 194 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 194 32 153437 +5535-837-541-121+431+0+208-589+1894+816+100-269-178-189+580 +nP_montgomery25519 195 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 195 32 196588 +8537+189-5+0+1233+2796+36+66+29-173-65-236-80-32-124 +nP_montgomery25519 196 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 196 32 152999 +5880-703+270+395-580-221-246+240-180+72+0-492+257-190+235 +nP_montgomery25519 197 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 197 32 195820 +7138+704+224-170+80+0-35+91+229-17-174-76+696-10-217 +nP_montgomery25519 198 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 198 32 152861 +7681+784-29-461+197+321+517-584+389+197-186-227-888-497+0 +nP_montgomery25519 199 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 199 32 196584 +8583+624-121+97+80-314+0-411-285-106-6+542-99+475+362 +nP_montgomery25519 200 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 200 32 161054 +4446-321+14+937+622-97+157-727-262+555-318+0+1875-364-407 +nP_montgomery25519 201 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 201 32 191784 +6050+141-144-325-110+515+0+93-35-42+59-272+138-111+848 +nP_montgomery25519 202 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 202 32 315108 +1922+0+841-387+231-71-1723-216-247+1640+817+1619-1803+285-408 +nP_montgomery25519 203 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 203 32 324765 +2516+317+521-7-159+46-562+0-256-428-744+18+799+1910-1112 +nP_montgomery25519 204 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 204 32 312879 +2676+0-748-431-60-1257+197+343+320-654+477-64-708+1016+236 +nP_montgomery25519 205 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 205 32 325312 +1768-371-40+101+0-872+713+41-1159-567+646+1028-1694-414+48 +nP_montgomery25519 206 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 206 32 323722 +1507-1144+0-2233+34+781-476-986+562-64-453-345+873+182+170 +nP_montgomery25519 207 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 207 32 325762 +2789+1293+424-421-459-818-927+780-381+644+517+0-425+1576-676 +nP_montgomery25519 208 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 208 32 324337 +2485-1277-1920-186-38-1452+1649+33+833-392+0+323+351+527-560 +nP_montgomery25519 209 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 209 32 327920 +2675-226+1205+746+936+2546-400-993+0+503-328-491-816-549+313 +nP_montgomery25519 210 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 210 32 321935 +2465-861+6388+0+25-245+418+380+143-883+894-245-1054-628-1031 +nP_montgomery25519 211 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 211 32 328671 +1119-149+0-1849-243-1316+642+62+187+260-587-1285+278-592+510 +nP_montgomery25519 212 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 212 32 314048 +5195+107+8554-931-111+487+882+866-32+0-786-177-454+519-629 +nP_montgomery25519 213 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 213 32 324796 +474+932+106-207+775+408-118-265-108+331-1051-1432+0+7-717 +nP_montgomery25519 214 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 214 32 152774 -24504+0-144+96+79-218+36-264+158-21-101+116-189+19+68 +nP_montgomery25519 215 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 215 32 120632 +815+164+460+117-71-154+78-37-176+0+89-162-3+1499-143 +nP_montgomery25519 216 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 216 32 152662 -30826-37+214+212-179+64+208-256-119-47+0+562+393-33+275 +nP_montgomery25519 217 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 217 32 120833 +864+1183+236+36+0-95-163-104-289+82-217+12-267+27-124 +nP_montgomery25519 218 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 218 32 152775 -30197+307+169+193-120+0-174-427+128-5-39+52-23+140+149 +nP_montgomery25519 219 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 219 32 120540 +804+47+0+164-179-248-302+56+25-9-333+11-43+119-114 +nP_montgomery25519 220 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 220 32 152654 -31021+247+912-111+201+95-83+0-202+79+13+54-85-28-19 +nP_montgomery25519 221 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 221 32 120501 +1212+379+338+307+40-11-169-230-37-58+95+0-21+41-2 +nP_montgomery25519 222 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 222 32 152786 -31032+47-37+50+0+799-48-150+385+136-86+357-53-97+162 +nP_montgomery25519 223 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 223 32 120559 +912+444+355+48-139+250-208-178+227+72-211-6-231-262+0 +nG_merged25519 selected implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 selected 32 28143 +13246-19+116+196+193-66+252+195+44-157+0-224-265-192-143 +nG_merged25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 0 32 39451 +18048-131+210-62+112+93-307+344-409-436+0-131+452+90-129 +nG_merged25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 1 32 39130 +1625+226+0+110+213-342+181-507-96+167-342-174+287-278-216 +nG_merged25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 2 32 39443 +2540-10+158-174+468+187-68+13-138+348+0+516-127-253-258 +nG_merged25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 3 32 39132 +8915+737-295-238-82-36+0-193+375+280+457+279+15-472-143 +nG_merged25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 4 32 39305 +2544+344+0-133+488+140+63-219+400-331-73-131-288+177-26 +nG_merged25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 5 32 38835 +1811-81+161+377-307-301-47-299+0+117+331+109-195+398-55 +nG_merged25519 6 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 6 32 39188 +2878+46-365+215+0-176+26+134-32+260-458+509-27-63-18 +nG_merged25519 7 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 7 32 39164 +1692+23-270-18+175+18-502+113-315+68-14+0-417-194+26 +nG_merged25519 8 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 8 32 39294 +2095+236+133+899-590+254-322+0-638-148+293-493+105-6-712 +nG_merged25519 9 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 9 32 39044 +1523+122-81-75-356+373+0+143-281+20+373+104-182-71-595 +nG_merged25519 10 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 10 32 39360 +2370+0+453+64-32+89+323-101-116-659+216-280+94-67-99 +nG_merged25519 11 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 11 32 38999 +1880+118-520+109+4+2+0-20-222-75-159+16-423+63-1 +nG_merged25519 12 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 12 32 36658 +7407+222+29+63+458-123+135+0-113-258+163-284-128-304-194 +nG_merged25519 13 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 13 32 36200 +1152+86-68+36-347+142-373+0+77-267-258+50+17-61-176 +nG_merged25519 14 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 14 32 36459 +1884+350-68+0+89+56+95-134-13-60-10+83-32+37-27 +nG_merged25519 15 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 15 32 36133 +4864+3-71-108+101+27+167-316-33-337-99+0+722+73-12 +nG_merged25519 16 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 16 32 36538 +2107+310+279-11-71+8+68-76-66+141+132+0-6-116-45 +nG_merged25519 17 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 17 32 36152 +1027+115+54+17-56+73+0-137-62-49+63-35+113-46-109 +nG_merged25519 18 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 18 32 36371 +1931+121+102+101+91-24+28-249-73-113+0-151+196-55-189 +nG_merged25519 19 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 19 32 36038 +1264-100+52+140-23-112+154-61+66-36-19-57+0+415+424 +nG_merged25519 20 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 20 32 36292 +2219+302+178+146-246+258+330+134+0-33-92-143-292-95-132 +nG_merged25519 21 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 21 32 36410 +1066+54+102+274-244+0-191+72-108-97+121-128-27-289+85 +nG_merged25519 22 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 22 32 36446 +1983+136+274+50+58-232+0+152+86-67-173-54-37-220-277 +nG_merged25519 23 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 23 32 36141 +1200-185+70-82-60-40+0-196-512+232+719-3+53+60+33 +nG_merged25519 24 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 24 32 32803 +7279+255+248+196-84-47+11+81+71-168+0-68-54-164-70 +nG_merged25519 25 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 25 32 32365 +857+142+260+0+67-160-66+99+12-229-161-20+48-52-52 +nG_merged25519 26 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 26 32 32956 +745+396+46+43+16-125+112-22-169-115-231+18-158-31+0 +nG_merged25519 27 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 27 32 32360 +379+67+57+84-199+106-75+135-137-62-109+0-160+72-305 +nG_merged25519 28 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 28 32 32948 +653+6+80+2-50-154-206-57+7-135-38-116+0+80+14 +nG_merged25519 29 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 29 32 32350 +617+137-36+22-68-47+0-62+149+212-68-76+79+26-184 +nG_merged25519 30 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 30 32 32945 +843+17+0+196-8-81+29+12-254-76+55+58-103-68-75 +nG_merged25519 31 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 31 32 32372 +487-40+30-13+93+16+116-55-40+107+65-72-55+0-58 +nG_merged25519 32 implementation amd64-avx2-10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 32 32 31177 +6697+398-169+817-15-62+113+0-12-137+3+92-30+167-164 +nG_merged25519 33 implementation amd64-avx2-10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 33 32 30584 +104-155-66+96-34+14+120+0-89+129-24-215+57-102+16 +nG_merged25519 34 implementation amd64-avx2-10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 34 32 31015 +553+143+164+6-96+68-127-96-167-155+116-239-45+79+0 +nG_merged25519 35 implementation amd64-avx2-10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 35 32 30595 +343+127-118+60+0-83+28-204-92-61+6+9-116-63+137 +nG_merged25519 36 implementation amd64-avx2-10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 36 32 31161 +698-88+103+32+26-36-137-268+31+28-147+0+62-219-204 +nG_merged25519 37 implementation amd64-avx2-10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 37 32 30514 +391-161+47+0-56+70+41-106+72-246-22-76-93+71+61 +nG_merged25519 38 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 38 32 31043 +7205+393-28+83-27+277+0+158-64+48+130-57-19-556-306 +nG_merged25519 39 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 39 32 30672 -123+102-452+97+142-11+123+0-15-72+47-25+100+48-97 +nG_merged25519 40 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 40 32 31252 +5+75+73+0+2+6+144-64-71+45-255-213-636-60-214 +nG_merged25519 41 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 41 32 30790 +41-75+0-143-10+24+665+23-64-117+17+173+21-249-43 +nG_merged25519 42 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 42 32 31261 +979+88+269+223+126-99-174-227-263-262+0-177-46+51+91 +nG_merged25519 43 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 43 32 30126 +688+0+44+39-66-57-22-82+143+30-37-32-137+116+200 +nG_merged25519 44 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 44 32 31172 +755+59+223+7+25-28-38-146-52-51-147+202+0+26-120 +nG_merged25519 45 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 45 32 30664 -49+57+19+12-22-71+213-7+27+0+35+64-84-41-24 +nG_merged25519 46 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 46 32 32502 +4856+191+70-43+0+7+37-135-130-129-141+62+52-160-291 +nG_merged25519 47 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 47 32 31855 +11+362-72+82+0+19-12-55-83+95+125-13-113+132-15 +nG_merged25519 48 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 48 32 32394 -75+215-69+175+32+30-193+0-153+93-4-186+45-108+171 +nG_merged25519 49 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 49 32 31890 -266+189+110+110-162-80+0+11-208+18-5-77-96+120+188 +nG_merged25519 50 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 50 32 32356 -185+0+8+17-263-193+766+70+137+118-40-153-250-233+105 +nG_merged25519 51 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 51 32 31854 +597-219+227+192-29-225+103+293-458+0+289-105-478+155-192 +nG_merged25519 52 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 52 32 32404 +562+376+0-65+0-48-95-79-102+33-183-15+23+54+23 +nG_merged25519 53 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 53 32 31873 +11+198-5-25+83-28+83-29+0+53-25+149+50-118-226 +nG_merged25519 54 implementation amd64-avx2-9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 54 32 30580 +5389-154+46+35-258-512+68-424-427-378+37-293+37+32+0 +nG_merged25519 55 implementation amd64-avx2-9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 55 32 29913 +195+110-150+47+32-185-155-268-56+0+179+20-300+2-9 +nG_merged25519 56 implementation amd64-avx2-9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 56 32 30416 +244-76+231-267-406-299+383+0-129-15+234-105+415+45+250 +nG_merged25519 57 implementation amd64-avx2-9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 57 32 30071 +0+240+163-472-415-86-100+27-201+80+250-159-288+102+72 +nG_merged25519 58 implementation amd64-avx2-9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 58 32 30456 +377+397+22+67+81-108-146-407+147-534+45-38-123-421+0 +nG_merged25519 59 implementation amd64-avx2-9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 59 32 29944 +221+81-62+269-243+139-163+96-273+861-243-23+0-235+171 +nG_merged25519 60 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 60 32 30690 +6297+23+26+31+201+210-154+56-207-182-83-74-306+0-289 +nG_merged25519 61 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 61 32 30111 +42+288+11+0+156+12+78-10-85-181-152-136-50-229+179 +nG_merged25519 62 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 62 32 30496 +247+210+123-90-17+139+99-17+0+389-26-113-129+180-15 +nG_merged25519 63 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 63 32 30100 +78-212-102+82-184+40+2+4-133+0-157+4+110-228-76 +nG_merged25519 64 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 64 32 30593 +349+310-223+20-21+0+7+154-56-48+175+154-50-211-347 +nG_merged25519 65 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 65 32 30066 +125-77+210+147+53-50-172-78+0+10-98-35-135+52+190 +nG_merged25519 66 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 66 32 30746 +1121+75+39-82-64-262+20-337+0-12+17+3+5-25-202 +nG_merged25519 67 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 67 32 30098 +184+0+105-173-153+66+83-74-76+116+45+215-16-204-63 +nG_merged25519 68 implementation amd64-avx512ifma-5l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 68 32 26922 +5175+101-40+28-126-113+150-70-242+46-151-175+121+0+935 +nG_merged25519 69 implementation amd64-avx512ifma-5l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 69 32 26419 +679-166+273+167-71+185-35-50-24+222+0+138-69+29-125 +nG_merged25519 70 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 70 32 33596 +3958+437-51-20+0+55+167+248+35-1-53-1-11+346-38 +nG_merged25519 71 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 71 32 32994 +630+0-58+340-38-206-261-25+112+125-48-172+77+211+168 +nG_merged25519 72 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 72 32 33776 +419+232-55+18-79+0+57-143+154-278-4-39-237+59+47 +nG_merged25519 73 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 73 32 33374 +302+33-23+72-57-88+0+6-269-108-69-113+96+8+106 +nG_merged25519 74 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 74 32 33716 +636+126-22+48-17+31+135-85+140-24+0+54-139-47-79 +nG_merged25519 75 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 75 32 33192 +288+97-112-41-221-64-144+4+94+86+47-27+0-22+21 +nG_merged25519 76 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 76 32 33555 +917+141-138-222+26+121-131+0-76-52-200+83+41-28+171 +nG_merged25519 77 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 77 32 33113 +340+207+0-53+236-234-83-82+85+1072-114-243-417+72+2320 +nG_merged25519 78 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 78 32 33713 +439+181+0+42-26+56-195-282+13+257-118-97-187+14-46 +nG_merged25519 79 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 79 32 33195 +356-58-179+0+55+147+11-82-56+78-123-52+53-303+13 +nG_merged25519 80 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 80 32 33558 +852+137+0-64-168+55+46+24-228-68+166-110-21+70-142 +nG_merged25519 81 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 81 32 33143 +528+167-178+49-60+0-74+95-429-305-425+19-206+41+129 +nG_merged25519 82 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 82 32 28349 +1673+116+0+1+13+135+113-21-117-53-70-24-79-125+5 +nG_merged25519 83 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 83 32 27980 +478+100+0+14+6-139-32-99+177-69+14-155-28+72-91 +nG_merged25519 84 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 84 32 28443 +682+41-22-172+39+43-303-403+97-48+111+35-122+0-12 +nG_merged25519 85 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 85 32 27900 +433+64+3+59+266-62-162-185-182+274-125-16-30+18+0 +nG_merged25519 86 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 86 32 28573 +648+318+0+89+52+260-115-91+77-166-377+995-195-72-213 +nG_merged25519 87 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 87 32 27976 +520+201+101+369+99+0-103-147+212-194-48-183+84-175-86 +nG_merged25519 88 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 88 32 29347 +4523+197+234-45+276-14+60-127+190-87-103+0+111-168-158 +nG_merged25519 89 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 89 32 28870 +423+15+0-225-82-117-78-253+111+22+33-220+159+105-87 +nG_merged25519 90 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 90 32 29425 +541-126+227+351-320+179-184-39+0-346+59-143+4+7-79 +nG_merged25519 91 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 91 32 28850 +389-15+82-86+56-35+124+136+46-19+190+0-65-79-72 +nG_merged25519 92 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 92 32 29363 +659-99+0-13+277+268-331+16-39-126-5-56+38+81+339 +nG_merged25519 93 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 93 32 28940 +581+116+125+14-1-69-147-100-35-126+385-96+254+0+7 +nG_merged25519 94 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 94 32 29361 +366+9-89-18+176-145+170-64+57+0+3-151-207-1+33 +nG_merged25519 95 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 95 32 28791 +551+104-107+144+68-9+28+0+1+116-13-49-115-47-81 +nG_merged25519 96 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 96 32 113241 +5883+761+276-90-447+187+42-302+272-208-880+437-69-782+0 +nG_merged25519 97 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 97 32 95450 +5320+420+1047-306+528-416-653-3-58-80+171+0-198+255+208 +nG_merged25519 98 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 98 32 113603 +5313+255+15-45+34-18+0-45-77-192+937-57-150+417+1126 +nG_merged25519 99 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 99 32 95647 +1955-540-431-190-361+963+58-990+347+429-1169+58+46-464+0 +nG_merged25519 100 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 100 32 113485 +4162+755-81+254+265+308-180-282-169+0-359+121+188-246-258 +nG_merged25519 101 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 101 32 94570 +5207-349+0+39-270+41+685+83-291-191-308+545-6+757-192 +nG_merged25519 102 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 102 32 113000 +5213+808+603+0-100+122+557-241-318+491-46-162-118-360+336 +nG_merged25519 103 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 103 32 94138 +4107+871+798-284+0-501-536+190+65-484-396+412-529-778+42 +nG_merged25519 104 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 104 32 113359 +3842+202-180+0-72-520+6993+754+823-525+120-502+190-204-179 +nG_merged25519 105 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 105 32 94306 +4778-507+128-236+457-467-90+331+132-381-163+0+419-4+225 +nG_merged25519 106 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 106 32 112356 +4044+1364+201-43-90+90+7328-216-262-768-411+204+0+110-526 +nG_merged25519 107 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 107 32 105455 -5575-112+35-111+2784+0-367+183+279-63-200+16-80+624+10 +nG_montgomery25519 selected implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 selected 32 28137 +3502+385+0+105+335+70+333-114-144-262-131-215+9-156-238 +nG_montgomery25519 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 0 32 64576 +4794+351+199+87-94+0-70+63+3-216-50-156-35+18-156 +nG_montgomery25519 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 1 32 64660 -57-125-76-30+109+57+0+34-21+121+33-16+125+86-37 +nG_montgomery25519 2 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 2 32 64658 +15-150-124+145+179-146+43+0+61-113-236-218-100+19+668 +nG_montgomery25519 3 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 3 32 64636 +219+123-115-166-83+30+0+47+41+37-34-29-56-125+18 +nG_montgomery25519 4 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 4 32 64538 +76-98+0-94+153-101+92-39+72-32-116-106+145+49+49 +nG_montgomery25519 5 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 5 32 64522 +39+0-80-84+56-98+82-43-123-53+103-50+271+240+14 +nG_montgomery25519 6 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 6 32 64546 +297+14-140-2+0-19-209+101+96+114-104+205-10-164+86 +nG_montgomery25519 7 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 7 32 64638 +81-55-173+13-80+723-59-106-42+31-88+82+18+37+0 +nG_montgomery25519 8 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 8 32 64586 +39+92+70+65+0-40-121+3+21-223-213-49-99+40-18 +nG_montgomery25519 9 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 9 32 64743 +211-140-52-114+49+877+69-92+59+0-157-249-180+653+46 +nG_montgomery25519 10 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 10 32 64622 -141-3+175-149-54-46+0-180+1+141-45+2070+143+72+159 +nG_montgomery25519 11 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 11 32 64560 +291+93+0+76+26-155+278-59-104-16+34-135+924+0-66 +nG_montgomery25519 12 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 12 32 142909 -27133+12+155+15-157+82+0+82-244-201+55-60+211-426-80 +nG_montgomery25519 13 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 13 32 111449 +395+156-94+306-50-9+98+0+115-148+19-57-184+14-84 +nG_montgomery25519 14 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 14 32 142995 -30303+341-86+489+1811+40-49+47+0-183-485+89-382+268-23 +nG_montgomery25519 15 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 15 32 111581 +455+16+166-31-87-166-146+6+0+260-143-13-124+100+148 +nG_montgomery25519 16 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 16 32 142978 -30612+182-65-108+104+93-16+636+154+0-284-85+43-130+102 +nG_montgomery25519 17 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 17 32 111526 +771+294+134+179+91+101-4-16+208-112-5-9-78+0-245 +nG_montgomery25519 18 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 18 32 142780 -30535-18-172+0+79-18+153+110-5-58+232+80+963-139+164 +nG_montgomery25519 19 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 19 32 111584 +882+342-18+23+75-58-157-346+0+32+123-27-189-96+138 +nG_montgomery25519 20 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 20 32 142866 -30557+131+219+310+780-208+0+21-111-61+160+161-406-241-244 +nG_montgomery25519 21 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 21 32 111608 +514+1455-207+76+41+66-92-74-155-214+0-205+75-110+139 +nG_montgomery25519 22 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 22 32 28158 +338-76+282+379+183+0-284-106-213-47+442-21+254+332-159 +nG_montgomery25519 23 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 23 32 27999 +95-81+187-147+156+0+339+35+43-22-63+165-81-115-7 +nG_montgomery25519 24 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 24 32 28044 +166+180-124+0+81-182-42+6-208-30-307+82+280+61-45 +nG_montgomery25519 25 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 25 32 28058 +155+26-34-39-77+178+130-74-87+3+34-20+0+13-79 +nG_montgomery25519 26 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 26 32 28043 +382-212-70+98+59+213+0+76-119+38-29-35+253-140-121 +nG_montgomery25519 27 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 27 32 28002 +291+198+33+240+0-50-119-152-147-44-186-28+125+54+3 +nG_montgomery25519 28 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 28 32 28110 +226-47+501-115-242+342+0+92+106+668-101-58+45-97-207 +nG_montgomery25519 29 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 29 32 28104 +101+0+122-209+152+76-5+185-28-26-168-158+2-133+97 +nG_montgomery25519 30 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 30 32 28007 +372+0+35+384+115+85-20+384-95-103+74-106-25-173-243 +nG_montgomery25519 31 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 31 32 28082 +138+93+0+272+51-64-107-163+74+79-141+17-71-51-93 +nG_montgomery25519 32 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 32 32 28057 +255+90-15+12+71+427+10-66+52-68-141-146-154+0-55 +nG_montgomery25519 33 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 33 32 28038 +162+298+0+95+530+178-13-15-176-69-167+51-118-147+367 +mGnP_ed25519 selected implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 selected 33 112492 +40670+5818+1864+433+0+146-96-71-306-445+93-107+22-111-75 +mGnP_ed25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 0 33 152800 +30340+6335+1522-336-264+206-148+28+0-78-22+226-234+458-330 +mGnP_ed25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 1 33 150834 +11928+5740+1506+1082+210-26-24-358-152-426+278-34-428+176+0 +mGnP_ed25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 2 33 151920 +12029+4511+709-272+726-1279-989+0-739+237+749-241-510-1163+295 +mGnP_ed25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 3 33 153699 +10393+4834+1320+318-330+280-109-842+34-223+0+392-114-88-94 +mGnP_ed25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 4 33 153807 +12934+5657+1175-177+55-378+65+0-423-721-318-199+307+316-229 +mGnP_ed25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 5 33 152751 +10085+5982+2855-231-220+78-406+118-3-226-51+0-32+1672+63 +mGnP_ed25519 6 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 6 33 152524 +10870+2032+307-266-118-388-242+482-59-369+2895+1005+20+0-437 +mGnP_ed25519 7 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 7 33 153426 +12018+4181+2516+984+0-265-248+192+421-22-180-395+1460-573-41 +mGnP_ed25519 8 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 8 33 154780 +12680+4014+447+284+5464-301+12-157-471-402-654-472-750+199+0 +mGnP_ed25519 9 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 9 33 153559 +11861+3256+131-381-367-573-449-299+123+527+880+2037+0-813-997 +mGnP_ed25519 10 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 10 33 151646 +12722+3941-122-455+5889-436+255+0-407-463+624-286+310-218+453 +mGnP_ed25519 11 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 11 33 154604 +9788+4392+1003-124-119-269-447+4+616+323-156-513-536+0+123 +mGnP_ed25519 12 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 12 33 162418 +21200+3396+846-204-284-436-506-898-902-810+0+3464+1981+1406+1052 +mGnP_ed25519 13 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 13 33 160800 +8103+3298+1332+379+318+0-380-655+216-578-409-321-29+52-123 +mGnP_ed25519 14 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 14 33 162479 +9385+4246+1418+0-144-300+164-169-287-326-361+123+15-223+61 +mGnP_ed25519 15 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 15 33 159888 +9305+4731+2706+2840+406-210-146-270+0-305-303-44+234+11-74 +mGnP_ed25519 16 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 16 33 161596 +7799+4233+382-96-391+94-443-351+19+413-7-46+0+19-424 +mGnP_ed25519 17 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 17 33 158273 +7745+4701+1764+266+941+167-129-104-533-366-278-392-590+0+129 +mGnP_ed25519 18 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 18 33 160244 +9912+4001+1284+375-255-240-212-110+24-24-164+98+1083+0-677 +mGnP_ed25519 19 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 19 33 158308 +9971+5026+2295+982+311+296-139-721-372-317-205-237+0-66+290 +mGnP_ed25519 20 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 20 33 160442 +9191+3371+1363+89+5325-222-488-522+0-326+111-740+143-17-262 +mGnP_ed25519 21 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 21 33 162306 +8358+3060+1345+1354+0+112+342+64-340-97-513-81-587-183-165 +mGnP_ed25519 22 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 22 33 161632 +7663+4249-358+3016+6156+279+1287+0-264-44-524-310-316-78+296 +mGnP_ed25519 23 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 23 33 160950 +7846+4592+1137+411-390+372-446-294-384+0+57+91-98-162-496 +mGnP_ed25519 24 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 24 33 149369 +29154+3463+1076-230+923+2290-371+0+82-208-39-139-235+55-205 +mGnP_ed25519 25 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 25 33 148508 +10134+3212+1074+452-32+0-468-320-278+362+60-218-522-196+182 +mGnP_ed25519 26 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 26 33 147340 +10605+3228+62+1454-52+0+480-142-212-268-206-140+764-429+212 +mGnP_ed25519 27 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 27 33 148742 +10182+3722+1648+492+120+2363-13+63-239-190+0-68-722-312-196 +mGnP_ed25519 28 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 28 33 149068 +9964+2564+1336+12-104+0-180+50-80-162-108+390-82-332+176 +mGnP_ed25519 29 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 29 33 149258 +9615+3684+1206+542+0+336-262-20+58-180-226-124+16-176-132 +mGnP_ed25519 30 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 30 33 147120 +13501+4843+4512+1355+146+0-36-88-546+64-260-238-422-104+92 +mGnP_ed25519 31 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 31 33 149744 +9540+2536+314+20+238-284+110-104-196-94-264+0-63+7-128 +mGnP_ed25519 32 implementation amd64-avx2-10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 32 33 117872 +25454+3144+580+130+188+78-24+0-202-498+296-126-472-318-46 +mGnP_ed25519 33 implementation amd64-avx2-10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 33 33 117715 +6419+2403+620+159+0-159-347-797-681+5+207-643+275-289-185 +mGnP_ed25519 34 implementation amd64-avx2-10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 34 33 117128 +6581+1874+780-238+0+510+98-72+862-86-216-134+42-198-360 +mGnP_ed25519 35 implementation amd64-avx2-10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 35 33 118334 +6463+2658+1326+267+85-70-231-199-15-74+739-151-62+65+0 +mGnP_ed25519 36 implementation amd64-avx2-10l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 36 33 118200 +7169+2264+710-6+234+54-188-130-258+0+298-198-372+32-60 +mGnP_ed25519 37 implementation amd64-avx2-10l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 37 33 119484 +8743+1856+135+111-500+0+148-196+138-106-110-42+370-340-70 +mGnP_ed25519 38 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 38 33 122198 +20310+2388+1086-54-328-232-200+198+24+0+116-376-156-116+104 +mGnP_ed25519 39 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 39 33 123836 +7908+2820+948-318+44+244+540+76-58-716-416-234-256+0-120 +mGnP_ed25519 40 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 40 33 122529 +7011+2610+608-36+28-176+0-138-98+5+383-376-293+246-119 +mGnP_ed25519 41 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 41 33 123276 +7477+3109+762+238+218+100-74-258-366-210-384+0+542-480-340 +mGnP_ed25519 42 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 42 33 122004 +7592+2216+100+214-244-490-356-144-290+0+266+198+48-204-154 +mGnP_ed25519 43 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 43 33 121314 +7390+2530+582+22-152+0-320-220+352+121-153-188-200-484+621 +mGnP_ed25519 44 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 44 33 122461 +7868+1605+1373+403+0-547-565-899-23+1700+43-785-79-375+764 +mGnP_ed25519 45 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 45 33 121302 +7318+1972+598-10+130+278+0-66-480+952-338-668-334+78-312 +mGnP_ed25519 46 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 46 33 147830 +24640+2568+560+0+10646-424+814-254+85-353-547+35-601-271-408 +mGnP_ed25519 47 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 47 33 147672 +9588+2888+1075+631-416-16+124+0+98-184-118-50-216-38+17 +mGnP_ed25519 48 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 48 33 148282 +9180+2330+58+0-294-364+765+2561+555-242+364-10-102-602-306 +mGnP_ed25519 49 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 49 33 148313 +9705+3031+2359+381-297-665-181-68+120+275-291+1876+0-353-241 +mGnP_ed25519 50 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 50 33 148890 +8727+1838+0-334-68+742-156+282-218-300+116+34+174-394-350 +mGnP_ed25519 51 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 51 33 148200 +9092+2512+876+49+237-20-437-73+144+112+0-212-246-206-347 +mGnP_ed25519 52 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 52 33 147260 +9234+1370+16-262+1021+2071+245-182+64-256-242+0-440-462-26 +mGnP_ed25519 53 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 53 33 147685 +9143+2417+577+139-54-34-73-369-345-219+21-113+301+758+0 +mGnP_ed25519 54 implementation amd64-avx2-9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 54 33 117154 +23798+2920+1770+468+1001-443+580-374-50-182-94-358+0-404+28 +mGnP_ed25519 55 implementation amd64-avx2-9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 55 33 116772 +7172+2644+518+6+424-174+130+54+0-330-4-238-628-538-682 +mGnP_ed25519 56 implementation amd64-avx2-9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 56 33 117473 +6614+806+559-15-291+238-552-344+0+48-421-509+809+164-487 +mGnP_ed25519 57 implementation amd64-avx2-9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 57 33 116580 +5898+2080+0+398-700-388+1793+593-118+350-476+134-560-248-264 +mGnP_ed25519 58 implementation amd64-avx2-9l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 58 33 117852 +5877+1588+515+150+6+0-694-282+61+8-128-20-260-50-226 +mGnP_ed25519 59 implementation amd64-avx2-9l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 59 33 116286 +6975+2460-62+203+1317+223+0-228+288-23-1-104-110+25-135 +mGnP_ed25519 60 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 60 33 120848 +20304+3403+732-140-372+390-226+190-68+0+136-706+176-834-740 +mGnP_ed25519 61 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 61 33 122978 +6953+4504+2014+116+306-316-38+0-270-223-128+1646+2348-285-168 +mGnP_ed25519 62 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 62 33 122030 +6671+2331-158+252+68-646+280-264+262-38-10-10+306+0-116 +mGnP_ed25519 63 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 63 33 122966 +7833+3621+776+306-20+92-213-75-262-492+34-204+0-466+721 +mGnP_ed25519 64 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 64 33 123304 +7434+1978+0+863-180-106-450-132-288-290+1960+278-38+146+86 +mGnP_ed25519 65 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 65 33 121768 +7293+2189+542+330-596+2+0+124-174-80+382-106-236-162-428 +mGnP_ed25519 66 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 66 33 123791 +6014+2320+437+191+97+63+417-347-97-164-330-203-81-187+0 +mGnP_ed25519 67 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 67 33 121380 +6145+2265+323-75+256-42-418+58-94+20-636+0-270-100+292 +mGnP_ed25519 68 implementation amd64-avx512ifma-5l-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 68 33 120038 +39848+1503+42-28+0-222-280-298+0+1326-248-198+109+2241-275 +mGnP_ed25519 69 implementation amd64-avx512ifma-5l-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 69 33 117789 +5535+1281+552+307+28+73-531-473-327-115-385+0-96+315-179 +mGnP_ed25519 70 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 70 33 149554 +25296+3863+1045+0+125-67-207-54+396-208+140-237-455+151-105 +mGnP_ed25519 71 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 71 33 148435 +10719+4358+1981+446+234-79+0+62+15-573-389-221-103-85-51 +mGnP_ed25519 72 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 72 33 149602 +8663+2438-62+336+0-110-236-394+246-62-134-216+96+30+1008 +mGnP_ed25519 73 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 73 33 149892 +9256+4125+780+101-275-275+396-89-425-1-249+0+93+41-6 +mGnP_ed25519 74 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 74 33 150018 +9530+1754+234+156-286-349+144+0-43-60-271-159+63+912-100 +mGnP_ed25519 75 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 75 33 149038 +9531+2258+1214+834+550+0-134+39+3-101-315-71-145-103-253 +mGnP_ed25519 76 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 76 33 147091 +10276+3302+1132+333+269+448+0-289-334-140-171-117-13+521-398 +mGnP_ed25519 77 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 77 33 149822 +8857+3265+944+516+370-216-166-92+76-178+0+16-246-286-100 +mGnP_ed25519 78 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 78 33 150392 +8920+3047+430-26-148-386+104-514-476+0+2854-301+1288+76-556 +mGnP_ed25519 79 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 79 33 148096 +8509+2857+648+696+374-216+76+0-266-8-192-88-118-258+30 +mGnP_ed25519 80 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 80 33 150690 +10819+3882+982+40+104-210+0-182-448-554-244+1584+2158-556-56 +mGnP_ed25519 81 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 81 33 150980 +10175+4116+1469+1302-252+20-346-6-288-182+0-12-22+272+122 +mGnP_ed25519 82 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 82 33 112312 +17263+2815+996+296-33-221-157-293+61-75-294+0+228+606-106 +mGnP_ed25519 83 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 83 33 112676 +7542+3021+909+4+80-392-292-94-462-340+0+288-490-118+420 +mGnP_ed25519 84 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 84 33 115114 +7791+1291-117+0+100-653+261+950-244-477-599+228-98+147-578 +mGnP_ed25519 85 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 85 33 114501 +7151+2071+903-89-403+0+98-109-502+2193-297+185+397-393-389 +mGnP_ed25519 86 implementation amd64-maax compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 86 33 113710 +8442+2653+862-390-62+96-84+10+40+26+0-16-352-220-358 +mGnP_ed25519 87 implementation amd64-maax compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 87 33 112771 +7047+1379+569+2558+452+456+0-35-593-145-675-415-3+787-579 +mGnP_ed25519 88 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 88 33 120092 +19414+3186+544+206+30-202+202+6-4-150-102-22+0-298-258 +mGnP_ed25519 89 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 89 33 120528 +7720+3516+1734+1066+192+426+0-754+254-598-490-158-118-244-706 +mGnP_ed25519 90 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 90 33 118398 +6919+1902+888+0+993+2162+470-430-82+214-348-274-470-276-428 +mGnP_ed25519 91 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 91 33 119154 +6616+2374+1458+452-46+1085+699-91+0+60-264-256-586-262-448 +mGnP_ed25519 92 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 92 33 119549 +9314+4244+176-120-293-183-415-39-573-45+1336+1927+217+0+28 +mGnP_ed25519 93 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 93 33 120126 +6634+2546+998+696-180-212-198-116+0+126-408-84+180-214+98 +mGnP_ed25519 94 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 94 33 121004 +7058+1942+244+160+176-44+246+0-640-498+0-610-314-488-88 +mGnP_ed25519 95 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 95 33 120848 +7997+4240+345+550+0-363-397-227-635+159+255-460+631-182-38 +mGnP_ed25519 96 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 96 33 356171 +18367+5427+1946+170+1558+1465-1594-310-217-808-575-1553-1056+309+0 +mGnP_ed25519 97 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 97 33 379810 +26560+7045+1897+2440+5559-629-1569-1777-1322+80-1620+1393-1809+0-606 +mGnP_ed25519 98 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 98 33 361453 +20545+7333+2643+0-1277+717+1357+703-1332-1044-563-1078-371+1553-387 +mGnP_ed25519 99 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 99 33 379917 +15978+5550+397+850+0-414-125-259+132-648+642+1835-1821-786-1254 +mGnP_ed25519 100 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 100 33 359717 +14810+7901+3633+333-193-1351+1633+0-1074+895-1316-1123-1405-694+1861 +mGnP_ed25519 101 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 101 33 372387 +18068+6109+1425+4362-268-412+686+0+1288-948-487+58-748-389-351 +mGnP_ed25519 102 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 102 33 364348 +16559+5399+1009+1914-630+0-1350-1437+376-2477+341-2510-415-3406+344 +mGnP_ed25519 103 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 103 33 386590 +13397+2045+190-1415-1084+0-475-1720-2454+2796+492-1059+1446-407+511 +mGnP_ed25519 104 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 104 33 365966 +14364+9817+2099+636+587+10204-210-435+929-869-1576-1447+0-783-2375 +mGnP_ed25519 105 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 105 33 385444 +18625+7732+4911-193+362-715-268+1817-886+0-462-592-60+1450+1179 +mGnP_ed25519 106 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 106 33 358498 +22640+3997+2983-871-831-901-3039+1125-499+0-1966+168-1468+250+121 +mGnP_ed25519 107 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 107 33 387513 +17166+3369+558+603-284-1445-842+0+119-1655-684+709-1336-2179+1474 +dh_x25519 selected implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair selected 32 28425 +12148-25+45+123+86+0-281+10+124-145-91+48-176-14-103 +dh_x25519 selected 32 64673 +2706+94+0+259-112-203-425+6+820-95-88-24+565-51+43 +dh_x25519 0 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 0 32 28218 +395+63+30-64+92-31+996-44-178+0+124-130+122-117-198 +dh_x25519 0 32 64611 +265+215-78-79+1265-62-132-29-66-169+74+54+37+1979+0 +dh_x25519 1 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 1 32 28141 +261-35+150+22-116+57-148+0+184-17-30-28+33+54-128 +dh_x25519 1 32 64586 +892-90-221-71+8+70-99+22-73-130+63+0+90-8+84 +dh_x25519 2 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 2 32 28234 +190+93+31+100+133-178+22+216-202-22+0-31-178-56-96 +dh_x25519 2 32 64624 +78+195-39-85-28+69+0-50-90-75+929+224-97+2188+66 +dh_x25519 3 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 3 32 28235 +541-5+0+132+308-89-105+21-119+10-31+132+16-55-200 +dh_x25519 3 32 64602 +59-156+193-190+62-35+100+61-120-106+0+32+1230-90-29 +dh_x25519 4 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 4 32 28213 +466-172+6-126+60-12+0+173-53+88-128-13-206+1272+341 +dh_x25519 4 32 64637 +300-44+87+26+29+34+69+2+0-247-128-48-294-100-81 +dh_x25519 5 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 5 32 28215 +131+42-50-113+155+211+41-195-19-122+43+0+140-14-128 +dh_x25519 5 32 64633 +176-3+69+100+0-196+132-168+742-131-265-203+63+29-145 +dh_x25519 6 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 6 32 28285 +143-10+92+106-138+31-82-56+89-196+63-57-117+32+0 +dh_x25519 6 32 64628 +139+674+0-77-136-118+8-16-114+107-12+29-17+68+53 +dh_x25519 7 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 7 32 28157 +448+222-109-115+118+103+18+10-162-97-52+80+0-164-72 +dh_x25519 7 32 64583 +87+157+0+105-165-272+173+78+180+1386-21-157-49-115-72 +dh_x25519 8 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 8 32 28130 +107-108+71-2+0+20-71+2-8+28+114+132-48-68-118 +dh_x25519 8 32 64518 -30-65+0-59-15-116-63+893-48+767+1559+60+142+213+162 +dh_x25519 9 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 9 32 28114 +409+164+276+172-28+5-43+28-119-104+0-52+10-61-46 +dh_x25519 9 32 64595 +93-162+577-18+80+62+39-14+0+158-19+47-12-54-79 +dh_x25519 10 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 10 32 28249 +124-26+49+85+92-8+95-40-339-99-115-223+774+717+0 +dh_x25519 10 32 64516 +111+64-244-10-47+182-21-95+169+32-15-39+0+1207+44 +dh_x25519 11 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 11 32 28154 +425-64+139-65+71+345+196-13+0+74-6-12+50-109-62 +dh_x25519 11 32 64715 +0-16+157+21+1877+731+40-127+19-32-111+90-28-208-233 +sign_ed25519 selected implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair selected 32 28906 +8977+293+36+21+35+472-127-10+27+0-43-37-126-89-193 +sign_ed25519 selected 0 32490 +4563+271+243+356+331-138-22-110-16+23-46-62+0+150-69 +sign_ed25519 selected 1 32622 +84+938-92+62+330-12+176-21-143+0-320-169+107+105+0 +sign_ed25519 selected 2 32647 +143-219+180+19+154-92+95-145-204+212-46+189+0-162-246 +sign_ed25519 selected 3 32524 +28+187+227+0-127-76-59+74+0+209-28-40+11-79+116 +sign_ed25519 selected 4 32713 -178-250-144+110+1711+49+35+85+0+27+187-176-173-240-317 +sign_ed25519 selected 6 32606 +98+188+8+17+0-6-282+52+11-126-28-187-92-173+23 +sign_ed25519 selected 8 32606 -56-7-37+0+305+39-34+124-19+206-114+180-130+1172+101 +sign_ed25519 selected 11 32602 -29+47+14+66+34+437+172-61-11+44-21+0-239-81-199 +sign_ed25519 selected 14 32619 -228+453-110-72+102-5+110-52+277+257+157-149+0+71-131 +sign_ed25519 selected 18 32587 +315+179+166-34-19+126+0-144-75-63+72+78-80+42-13 +sign_ed25519 selected 23 32619 -199+122+241+0+6-90-138+177-43-172+26-175+65+19-182 +sign_ed25519 selected 29 32712 +38+277+23-96-191+251+130-266-122+0-68-76+106-41+194 +sign_ed25519 selected 37 32569 -6-72+16+12-159+69-151+16-247+126+0+86+19-92-17 +sign_ed25519 selected 47 32559 -6+11-184+0+253+232+17+116-292-92-153+218+1-83-259 +sign_ed25519 selected 59 33278 +182+13+206-45+84+712-38-93-173+101-230+84+0-198-102 +sign_ed25519 selected 74 33440 -122+56-68+28+1001-196+100+0+180-104+156-37-55+190-173 +sign_ed25519 selected 93 34124 +1585+1078-29+133-82+89+41-90-3-12+0-137+117+70-6 +sign_ed25519 selected 117 34142 +159+448+0+189-4-256-54-209+39-105-152+198+90+68-82 +sign_ed25519 selected 147 34196 +40+244+100-289+41+71-63+86-99+0-94-1+731-62-127 +sign_ed25519 selected 184 34903 +92+298-161+123-77+123-12-153+25+24-134-32+67+0-75 +sign_ed25519 selected 231 35628 -59+351-4+244+389-58-328+128+18+0+47-119-21+76-31 +sign_ed25519 selected 289 35623 +336+263+11+0+73+10-1-122+44+30-226-200-11-149-206 +sign_ed25519 selected 362 37168 +142-279+37+207+57-210-76+48+47+0-209-111-46+179-314 +sign_ed25519 selected 453 37761 +1134-60+298+234-68+78+10+42+346-29-58-50+0-53-47 +sign_ed25519 selected 567 39245 -29+336+147-18+41+289+123-48-161-101+35+32+0-54-162 +sign_ed25519 selected 709 40574 +180+162-89-89+120+107+3-15-201-309-284+0+3-164+107 +sign_ed25519 selected 887 42772 +95+281+179+243-156-81-80+154+38-224+77-36+0-97-105 +sign_ed25519 selected 1109 45558 +231+0+17+178+180+188-66+66-37-62-60-26-58-155+279 +sign_ed25519 selected 1387 48432 +98+127-190+0+118+61-75-12-166+24+72-196-81-36+9 +sign_ed25519 selected 1734 52082 +227-122-41+238+214-4+903-365+820+1316+0-251-31+200-126 +sign_ed25519 selected 2168 57114 -10+59+144+1280+54-118-78-84+262+35+0-316-17+88-80 +sign_ed25519 selected 2711 62852 +102+74+12+0-59-276-79-333+2-162+47-317-164+1768+230 +sign_ed25519 selected 3389 70524 +401+0+11+18-141-374-193-97+60+51+178-93-306-66+41 +sign_ed25519 selected 4237 79829 +11+128+178-61-160-68-113-65+831+309+0-121+196+36-292 +sign_ed25519 selected 5297 92000 +181-64+70+133+195+11+45+68-21-99-14-275+0-188-79 +sign_ed25519 selected 6622 107073 +0-287-398-170-279-159-523+83+1678+389+283+248+102-111+83 +sign_ed25519 selected 8278 125622 -138+0+852+1845+164+254+248+319+42-123-62-251-128-295-300 +sign_ed25519 selected 10348 148542 +41+54+61+126-308-37+586+11+0-258+30-136-117-174-215 +sign_ed25519 selected 12936 177046 +726+213-58+154-152+45-391+0+89-298-253-115+176+107-352 +sign_ed25519 selected 16171 212673 -242-251+334-609+133-3+8+680-185+145+87-311+0-303+342 +sign_ed25519 selected 20214 258266 +480-14-72+1555-225-383+153-215-318+1007+285+0+78+164-137 +sign_ed25519 selected 25268 314795 +484-224+635-51-113-251+2195+872+2484-466-68-170+492+0+228 +sign_ed25519 selected 31586 385953 +654+3473-97+1300+0-143+2035+1387-537-45-394+81+110-317-462 +sign_ed25519 selected 39483 474288 +31181-144+0-632-372+3280-4+2623+34-351+354-467+763-84+11 +sign_ed25519 selected 49354 584298 +10267-398-235-6+7-242-187+604+778+1300+55-323-51+0+6 +sign_ed25519 selected 61693 722198 +8136-112-385-164+2152+1101-13-303+0+380+159+507-49-32+99 +sign_ed25519_open selected 0 114983 +32403+5066+1681+0-479-358-1082-556-708+1315+154-661-397+161+7 +sign_ed25519_open selected 1 115392 +7491+3063+54-88+4+0-190-346+112-592-106+407+59-104-382 +sign_ed25519_open selected 2 114208 +6485+1310-124+214+18+260+476+0+148-119-331-235-148-236-311 +sign_ed25519_open selected 3 115739 +6434+2223+209+130-430-160-152+168-8+325-237-26+0+499-205 +sign_ed25519_open selected 4 115358 +5504+392+258-646+136+96-130-206-428-270-100-528+0+644+180 +sign_ed25519_open selected 6 114390 +6123+1717+87-335+0-400-259-101+1379+1416+723-424-184-92+150 +sign_ed25519_open selected 8 115952 +5696+760-102+4-304-80+164-82-68+166+22+142-258+0-12 +sign_ed25519_open selected 11 114503 +5712+1327+13-262-154-10-372-189-66+187+174-199+0+71+237 +sign_ed25519_open selected 14 114964 +5381+2790+75-260-492-58-204+76+0-666+2059+9-94-254+440 +sign_ed25519_open selected 18 114510 +5622+1176+848+501-18+128-46-26+304+86+0-364-368-106-174 +sign_ed25519_open selected 23 116756 +4899+1087+0+111-113+79-301-419-523+894-193+316-1+40-316 +sign_ed25519_open selected 29 114800 +5820+377-559-795+1190-196+0-296-36+266-494+378+194+166-474 +sign_ed25519_open selected 37 114362 +6023+1454+356+16-302-76+0+62-348-134+180+438-482-676-186 +sign_ed25519_open selected 47 115104 +5662+1674+350+2313+13+220+0-136-44-384-222+220-384-274-262 +sign_ed25519_open selected 59 114582 +5532+1124-288-132-196+168-62-372+216+74-250+42-276+0+184 +sign_ed25519_open selected 74 113566 +5894+1452-98+0-296+952-552+184-264+1200+308-128-400-294+368 +sign_ed25519_open selected 93 117470 +6851+856+327+216-270-433+0-480+66+140-371-109-472+118-452 +sign_ed25519_open selected 117 117011 +4521+855+313+60-373-168+0+262-22+57-161-283-173+634-175 +sign_ed25519_open selected 147 116684 +5884+1722+794+102+24-312-498+0+152+192-2-92-154-204-174 +sign_ed25519_open selected 184 116828 +5685+732-162+72+12+0-16-2-326+403+98-166+170-176-216 +sign_ed25519_open selected 231 116342 +5419+477-82+1186-50+152-74+52+1154+169-70-104+0-284-120 +sign_ed25519_open selected 289 115864 +4859+1723+238-332-568+126-524-56-376+684+1996+127+0-34-368 +sign_ed25519_open selected 362 117486 +5375+534+1041+12-339-16-75-154-62-154+786+922-180+0+746 +sign_ed25519_open selected 453 119344 +4776+618+280+1160-408+0-68+472-550-82-244+1657-49-532+276 +sign_ed25519_open selected 567 120546 +4930+1638-86-364+1313-238+140+0-310+472-54+64-208-68+1006 +sign_ed25519_open selected 709 120944 +4774+3203+168+1131+775+1740+88-246-500+0-122-260-522-408-8 +sign_ed25519_open selected 887 120521 +4931+1044+394-169+869+214+208-196-615+9-158+0-195-491-271 +sign_ed25519_open selected 1109 122831 +5058+249-18+138-235-17-561-133+1271+409-183+139+0-29+397 +sign_ed25519_open selected 1387 125406 +3845+119-254-284-72-378+116+10+274-126+90+0+78-54-414 +sign_ed25519_open selected 1734 126140 +4002+604-116-48-42-140-104-10+2209+94-24+0+855+2098+29 +sign_ed25519_open selected 2168 127696 +4966+592-196+193+100-246-76+0+348+28-412-94+144+0-84 +sign_ed25519_open selected 2711 131314 +4638+2026+545+384-450-174-110+348-272-174+80-152-194+70+0 +sign_ed25519_open selected 3389 135834 +4953+869+94+90-336-164-166-114+2-106+16-266+14-148+0 +sign_ed25519_open selected 4237 140233 +4655+1145+364-226+313+0-107-163+50+18-84-167-70+84-192 +sign_ed25519_open selected 5297 146328 +4719+591-136+2+378-462-254+0-438-336-132+304-144+1232+484 +sign_ed25519_open selected 6622 151680 +4700+1144-224+32+1046+2218+347-94-476-262-258+1094+0-360-180 +sign_ed25519_open selected 8278 162436 +5288+826+0-296-26+8+2522-29+344-174+0+368-14+34-220 +sign_ed25519_open selected 10348 174674 +4961+958+156+1114+3318+498-62-218-317-339-141-540-144+210+0 +sign_ed25519_open selected 12936 186880 +4940+1149-58-398+0+706+64-198-245+407-198+425-290-512+2196 +sign_ed25519_open selected 16171 206092 +5346+1858+64+198+342-358-298+0-40-828-328+108+170-496-182 +sign_ed25519_open selected 20214 229605 +5088+1710+102-29-342-198-257-402-529+2216+943+735+162+0-319 +sign_ed25519_open selected 25268 257479 +4964+532-551+699+116-291+55-149-113+2822+0-475-257+67-701 +sign_ed25519_open selected 31586 293558 +5629+1361-162+2172-271-178-285-75+3438-321+0+843+3714-165+138 +sign_ed25519_open selected 39483 339821 +3793+76-5+0-124-12+1041-565+437-158+120-424-87+288+133 +sign_ed25519_open selected 49354 396884 +3740+587+1158+18-506+2225-202-620-676-422-168+2724-63+0+176 +sign_ed25519_open selected 61693 466516 +4325+1198-46+432-320+7+0-918-164+85-452-729+191-228+529 +sign_ed25519 0 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 0 32 28995 +9791+844+367+320+16-126+114-257-108+0-205-64-57-83+120 +sign_ed25519 0 0 32105 +5592-2+218+380+177+12-155-22+208-111+163-1-65-83+0 +sign_ed25519 0 1 32120 +94+142-23+180-226+138-1-64-23+123-18+297-106+0+70 +sign_ed25519 0 2 32162 +283+101+64-15+105+29-201-86+0-191-48+224-4+49-10 +sign_ed25519 0 3 32170 -24+90-62+78-190-1+110+91+204-174+0-122+175-17+31 +sign_ed25519 0 4 32129 +0+223+33-29+20+145-100+26+383-18-113-84-319-164+191 +sign_ed25519 0 6 32188 -338-132-9-34-31+1240+234+204+2609+349-148+0+105+44-162 +sign_ed25519 0 8 32134 +129+325+16-42+0+179+312+45-8-100-347-280+128-37-215 +sign_ed25519 0 11 32169 +65-38-76+219+130+0-20+34+345-81+161-115-56-28+4 +sign_ed25519 0 14 32130 -6+218+164-147-73+0-227+37-126+128+162+76-113+0-167 +sign_ed25519 0 18 32162 -82+71-18+102-33+96+51-70+0-55+927+58+55-85-18 +sign_ed25519 0 23 32216 +43+22+165+38+0-172-121-73-32-170+2116+234+86-176-300 +sign_ed25519 0 29 32181 -251+67-177+28+62-25+169-73+12-154-178+57-151+308+0 +sign_ed25519 0 37 32063 +239-78+3-186+306+0+165-162-2+90-41-202+99+225-135 +sign_ed25519 0 47 32101 -62-52+10-26-126+35+46-166-181-80+1075+103+0+193+83 +sign_ed25519 0 59 32980 -111-207+64+0+165+119-232-61-159+25+70-61-69+46+120 +sign_ed25519 0 74 32904 +133+77-136+0-208+13+5+74+15+238-95-13-32-97-8 +sign_ed25519 0 93 33711 +1185-187+0+149-71+101-88+112-190+351-257-228+73+36-53 +sign_ed25519 0 117 33704 +98-109-71+366+61-89+145+208-108+9-219-287+0-155+130 +sign_ed25519 0 147 33727 +47+219+6+48+237-233-53+0-8+4-31-9-74-21+24 +sign_ed25519 0 184 34430 +7+129+444-209-156-164-92+38+5+90+120-14-71+0-49 +sign_ed25519 0 231 35255 +164+98-155+368+0+69-264-182+280+39+160-100-94-56-476 +sign_ed25519 0 289 35177 +40+135-266-188-181+0-241-80-38+90+5-8+298+1222+162 +sign_ed25519 0 362 36654 +533+210+0+158-222-334-95-9-24-104-90+38+96+262+137 +sign_ed25519 0 453 37405 +37+201-13-209-52+97-108-332+603+122-197+102-95+43+0 +sign_ed25519 0 567 38755 +47-57+0+83-110-55+90+54+189+910-266-195-1-3+61 +sign_ed25519 0 709 40208 +126+192+26-49+8-153+0+125-259+170-178+69-431-125-43 +sign_ed25519 0 887 42303 +141-57-72-209+141-193+77-180-288+0+443+2701+2516+233-95 +sign_ed25519 0 1109 45275 +181+132+0-47+379+808-1+1143+741-22-136-334+86-41-406 +sign_ed25519 0 1387 48016 +261+264-127+342+947-64+47+173-128-110-166+150-218+0-448 +sign_ed25519 0 1734 51649 +0+253-181+124-250+70-174+84+204-212-133-106+8-329+233 +sign_ed25519 0 2168 56591 +124-92-394+0-123+116+199+170+22-442-174-123+130-299+32 +sign_ed25519 0 2711 62368 +153+216+4+164+8-118-252-82-7-135+54-310-32+62+0 +sign_ed25519 0 3389 70123 +755+313+323-35+9+386+241+46-115-228+0-133-339-64-108 +sign_ed25519 0 4237 79453 +1947-91+98-16-256+4+70-107+0+87+280-183+4-103-245 +sign_ed25519 0 5297 91627 +351+188+2+268-19-194+51-273+0-155+9-331-165+78-12 +sign_ed25519 0 6622 106629 +776+157-361-29-181+338+23+157-18-159-288-164+0+714+142 +sign_ed25519 0 8278 125112 -7+192+183+10-70-195-180-103+0-279+39-68+631+63+267 +sign_ed25519 0 10348 147984 +320+0+17-41+24+1883-22-278-108-4-304-215+502+2270+262 +sign_ed25519 0 12936 176476 +124+0+293-258-294-15+31-28-67-25-358+380+42+2552+212 +sign_ed25519 0 16171 212150 +357+53+0+1131+31+149+61-122-20-37-304-343-253+53-171 +sign_ed25519 0 20214 257687 -124+390-502+183+35-161+599+1983+202-218-53+11+0-51-135 +sign_ed25519 0 25268 314487 +683+709-4+1566+0+188-245-472+283-155+361-209-176-124+520 +sign_ed25519 0 31586 385550 +328+545+2252+43+0-434-406-461-73+152-365-296-672+295+186 +sign_ed25519 0 39483 473477 +10659-154+94-25-215+330+799+348-80-105+336-78-151+0+199 +sign_ed25519 0 49354 583945 +28532-125-209-412+147+120+484+81+0-274-583+244-111-58+1302 +sign_ed25519 0 61693 721713 +10471-28+264+792+529+606-108-401+0-746+2633-66-216+7-3 +sign_ed25519_open 0 0 113636 +8780+2074+1307-147+248+124-48+514-490-422-342-658+0-200+310 +sign_ed25519_open 0 1 115012 +6907+1278-91-295+0-597-237-799+81-68+270+49-443+276+70 +sign_ed25519_open 0 2 115608 +6343+1314+0-396+126-284+11+238+290-533-418-680-570+739-477 +sign_ed25519_open 0 3 114234 +5363+789+0+390-108+152-188+336-220+312-462-48-234-366+286 +sign_ed25519_open 0 4 116273 +4471-673+663-33-711+0+419-436+111-511-799+190-15+114+313 +sign_ed25519_open 0 6 115314 +5522+946+98-183-259+911+2071+653-112+328-974-196-184+0-27 +sign_ed25519_open 0 8 114687 +5430+781-422+33+153+215-139-203-671-399+0-298+61-365+93 +sign_ed25519_open 0 11 114724 +6097+1747+738+256-594+14-360+0-446-18-68-284-208+1075+529 +sign_ed25519_open 0 14 115178 +6380+1880+480+341-508-40-48-86+78+54-176+0-21+105-746 +sign_ed25519_open 0 18 115199 +5744+1650+457-33+427-455-655+635+0+140-147-640+105-300-257 +sign_ed25519_open 0 23 114770 +5364+858-496+23-797+781-540+481-115+0+905+240-81-739-600 +sign_ed25519_open 0 29 115468 +5647+798-435+186+90-55-834-238-216+146+192+64+0-120-358 +sign_ed25519_open 0 37 114407 +6704+1236+0+217-459-237-389+165+187+141-29-351-343-653+920 +sign_ed25519_open 0 47 114696 +6052+991+304+169-459-602+6-608-416+0+25-185+189-703-538 +sign_ed25519_open 0 59 117031 +4713+1016-260-239-704+294+282-854+210-59-547+577+2158+0-133 +sign_ed25519_open 0 74 115316 +6232+752+26+801-569+974+269-482-192-342+0+824-156-336-342 +sign_ed25519_open 0 93 116592 +5919+860+237+208+8+0+314-130+78-2-2-172-434-246-134 +sign_ed25519_open 0 117 115050 +7059+1123-72+667-171-58+5-95+414-106+0-252+118-48+1331 +sign_ed25519_open 0 147 116494 +5882+813-112+656+335-220-156+114+0-88-237+299-200-692+365 +sign_ed25519_open 0 184 116068 +5443+79-460-422-418+202-192+76+34+0-804+148-194+146-410 +sign_ed25519_open 0 231 117634 +5994+589-154+48+4+1044-206-266-94+0-320+20+474-826-204 +sign_ed25519_open 0 289 116826 +4747+840-12+796+0+34-36-87-75+76+82-124+2132-255-240 +sign_ed25519_open 0 362 116911 +5347+784-173+360-315-145-201-63-97+113+87-277+670+0+337 +sign_ed25519_open 0 453 118499 +6389+1618+500+0-242-397+10+11-360-5+249-454+46-23-463 +sign_ed25519_open 0 567 119878 +5398+1050+355+369+273-42-64-542+203-246-292+0-61+240-309 +sign_ed25519_open 0 709 119619 +4114+365+924+82+1953-222-519-458+164-535-185+108-27-275+0 +sign_ed25519_open 0 887 121017 +4704+667+187+87+308-180+338-604+0-248-106+66-368-638-384 +sign_ed25519_open 0 1109 121680 +5501+652+77-103-140+0+68+0+639+189+74-319-475-160-325 +sign_ed25519_open 0 1387 122592 +5309+1033+282-204-270+0+92-172-66+410-226+397-276-319+85 +sign_ed25519_open 0 1734 126016 +4934+1136+360+127-505+73+170-29-204+0-367-113-130+865-25 +sign_ed25519_open 0 2168 128953 +5453+679-222+45-322-358+162-263+96-384+86-178-226+547+0 +sign_ed25519_open 0 2711 131798 +5151+816+448+0-48-110-272+274-258+198-118+26-128-422+16 +sign_ed25519_open 0 3389 133532 +5522+390+398-450+254-466-194-630+0+340+242-194-242+346-12 +sign_ed25519_open 0 4237 137702 +6500+317+31-381+172+588-242+150-186+0-226-550-364+373-901 +sign_ed25519_open 0 5297 144650 +5053+649+0-536-144-301+213-132+213+424+17-299+45-23-405 +sign_ed25519_open 0 6622 153882 +5953+652-88-360-252-44+120+246+264+0-716-42-272+1957+838 +sign_ed25519_open 0 8278 162590 +5097+454+484-343+130-242-22+168-52-54+286-140+128-226+0 +sign_ed25519_open 0 10348 174414 +6057+638+1252-27+754+634+2555-672-494-700-754+444-1132-364+0 +sign_ed25519_open 0 12936 187808 +6429+1237+0+190+10+94-224-160-34-338-540-400-638+1130+328 +sign_ed25519_open 0 16171 205972 +6904+959+0+100-130-222-166+12+220-282+54+560-220-288-22 +sign_ed25519_open 0 20214 228768 +6561+1637+0-310+266-138+266-396-550-228-592+70+257+37-838 +sign_ed25519_open 0 25268 256509 +5859+430+0-70-8-341-633+253+155+285-47+116+222-101-407 +sign_ed25519_open 0 31586 292252 +6141+829+37+0+250-76-71-485+200-208-9-217+411-471+610 +sign_ed25519_open 0 39483 339619 +5231+662+678-328-413-612+684-289+770-245-35+0+1509+1979-153 +sign_ed25519_open 0 49354 396239 +3524+1557+172+0-305-345-165+42-205-14+285+270-423+3858-308 +sign_ed25519_open 0 61693 466161 +3748+837-189+1797+633-427+1290-137+0-730-400-1284-110+587+2408 +sign_ed25519 1 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 1 32 28972 +3521-52+0+28+161-93+61-147-123+87+10-168+249-209-185 +sign_ed25519 1 0 32033 +1030+324+54+118-123+0-52+4+77-128-26-73-29+35-155 +sign_ed25519 1 1 31984 +480+272+10+308+85-132+366-86-15+122-233+0-8-87-28 +sign_ed25519 1 2 32033 +140+0+216+25+69+201+109-154-252-54-302-55+2-141-85 +sign_ed25519 1 3 31981 +219+245+109+0+133+199+90-176+188-17-138-11-250-2-50 +sign_ed25519 1 4 32078 +85-122-4+212-124-206+142+0-33+5+163+77-127-216+97 +sign_ed25519 1 6 31920 -2+58+443-30+127+68-17+11-9-67+12-42+0+149-118 +sign_ed25519 1 8 32076 +130+60-237-69+38-168-146-35-119+36+0+164+157+901-95 +sign_ed25519 1 11 32201 +0+142+23+54+53+181+204-186+90-93-213-266-150-303-136 +sign_ed25519 1 14 32037 +60+97-63+45+232+17-55-94+289-265-112+0-69+193-168 +sign_ed25519 1 18 31988 +204+114-13+156-14-240-389+16+297+145-60+0+61-55-9 +sign_ed25519 1 23 31994 -28-130+203+98-189-91+45-67+316-33+223-2+2+139+0 +sign_ed25519 1 29 31963 +69-124-44+67-44+0+210-22-128+112-48-18+154+116+366 +sign_ed25519 1 37 32008 +40-94-135+98-39+0+134+109+26-224-113-160+90-20+208 +sign_ed25519 1 47 31971 +35-55+0-36-130-81-154+93+144+16-9+45+16+239-20 +sign_ed25519 1 59 32807 +13+78+122+149-42-117+106-126-22+71-104-241+46-318+0 +sign_ed25519 1 74 32924 -80-171+131+149-112-66+1009+113+117+188+247+0-172-107-249 +sign_ed25519 1 93 33642 +75+63+0-336-141+1129-218-127-165+36-48+180+22+22-94 +sign_ed25519 1 117 33625 +120+0-178+128-138+33-107-81-87+89+7+94+32-78-128 +sign_ed25519 1 147 33570 +193-113+154-152-65-17+0+143+63-126+54-21+106+105-8 +sign_ed25519 1 184 34371 -174+25+138+50+204-40-230+0+8-41-2-166+188+184-192 +sign_ed25519 1 231 35063 +46+463+79+0+261-158-38-82-58-51-152+212+105-84+153 +sign_ed25519 1 289 35075 +306+57+142+109-28-169+15-2-241+0-23+26+7-162-111 +sign_ed25519 1 362 36463 -3+0+19+306+46+443-28+83-41-4-171-206+189-150+6 +sign_ed25519 1 453 37297 +128-292+116-117-150+1300-198+176-385+82-62+142-93+21+0 +sign_ed25519 1 567 38680 +123+196+106-132-104+67-28-54-156+183+74-367-288+0+40 +sign_ed25519 1 709 40020 +209+108+234+173-65-76-140-183-64+42-91-58+62+183+0 +sign_ed25519 1 887 42184 +319+426+380-126+133-199+71+17-141-82-30-77-106+0+202 +sign_ed25519 1 1109 45005 +284+305-314+0-79-94+113-108+10-6+188-10+217-171+74 +sign_ed25519 1 1387 47850 +88-84+0+276+60-39+29-240-2+57+10+139-110-7-71 +sign_ed25519 1 1734 51380 +333+230+134+243+0-17+269-53-171-8-124+1026-94+74-54 +sign_ed25519 1 2168 56522 +174+64-55-80+106+0+65+170-138+178-154+317-188-388-39 +sign_ed25519 1 2711 62296 +297+239+213+245-69+63-154-123-107-76+0+24+177-239-292 +sign_ed25519 1 3389 70009 +419-120+222-55-23-126+118-157+173+240-92+202+24-276+0 +sign_ed25519 1 4237 79447 +5-96+0-73+78+54-105-112+41-65-78+60-97+1044+1 +sign_ed25519 1 5297 91444 +258+0-86+381+294-3-53+2-134-45+5+193-92-342+88 +sign_ed25519 1 6622 106610 +0+8-124-50+98+126-67+750-235-12-127+154-340+77+218 +sign_ed25519 1 8278 125219 +42-337+1204+83+0+13+600+4-82-198+97-450-463-8-146 +sign_ed25519 1 10348 147717 +514+20+440-195-16-127-19+324-439+26-12-113+0+370+214 +sign_ed25519 1 12936 176581 +33-463+78+784+1843-292-247+0+2-199-435-199+5063+2139-271 +sign_ed25519 1 16171 212134 -182+505+121+355-188-158+0-57-122+537+74+699+451-166-300 +sign_ed25519 1 20214 257807 +964+1644+199+122-274-319-209+38-200+54-340+812-92-136+0 +sign_ed25519 1 25268 314262 +295+57+13+27-226+0-106-42-181+2243+544-29+80-98-77 +sign_ed25519 1 31586 385359 +264+0+281+35+575+342+196+159-43-128-174-253-305-362-576 +sign_ed25519 1 39483 473736 +11727-154+1778-289-4-379-188+143+241+369+0-412+233+19-110 +sign_ed25519 1 49354 583734 +9366+1979+26-78+696+497-373+0+485-319+40-11-158-209-177 +sign_ed25519 1 61693 721694 +21194+649+462-419-523+618-527-101-97+0+206-124+783+305-91 +sign_ed25519_open 1 0 115298 +10799+2046+144-10+228-330-274+776-92+42+128-140-76-198+0 +sign_ed25519_open 1 1 116102 +6369+1623+470-22+72+288-42-248-280-59+222-130-228+0+146 +sign_ed25519_open 1 2 116363 +5403+1569+201-2+189-323+183-209-177-161+53-239+0-98+127 +sign_ed25519_open 1 3 115406 +4735+905+124+0+84-574+1058-568+892-230-224-292+220-542-340 +sign_ed25519_open 1 4 116146 +4888+1322+0+156+41-108-70+164+2244+299-284-304-306-176-35 +sign_ed25519_open 1 6 115034 +5616+1479+864-147-99+88-108-102+162+202-288+0+371-123-102 +sign_ed25519_open 1 8 114684 +5477+1587+242-234-138+12-14+296-130+154+170+0-186-88-4 +sign_ed25519_open 1 11 116034 +5820+1644+365+61-96-133+31-146+30+158-128-66+0-67-99 +sign_ed25519_open 1 14 115080 +5243+1484-394-692-200-166-38-340+797+2767+105+304-30+207+0 +sign_ed25519_open 1 18 114066 +5392+904-42+213-150-77+0+237+253+90-58-224-8+126-190 +sign_ed25519_open 1 23 115808 +5365+497-311-275+133+22+0-205+135+271-135-178-185-135+1110 +sign_ed25519_open 1 29 116184 +5211+919+164+116+0-114-146-212-148-186+2189+55+132-6-86 +sign_ed25519_open 1 37 116424 +5536+576+158+0+196-100+492-20-676-70-104-6+176-680+586 +sign_ed25519_open 1 47 115934 +6068+639+80-172+0-192-286+869-71+246+58+170-142-172-190 +sign_ed25519_open 1 59 115606 +5761+568-204+0-112+578+200+52-222-414+275-642-128-346+208 +sign_ed25519_open 1 74 115310 +5977+935+26+106+2702+329-84+8-188-144-238+0-300-68-266 +sign_ed25519_open 1 93 116846 +7197+1218+436-218+98+236-248+200+26+0-488-348-270-166-216 +sign_ed25519_open 1 117 115272 +5462+394+116+274+272-236-155-251+0+668+390-64-316-362-182 +sign_ed25519_open 1 147 115552 +5092+496-182-68-362-276+784+216+228-140+0-520+454-462+42 +sign_ed25519_open 1 184 117096 +5266+76+237+0+718-105-68+123+284-192-113-180-629+18-239 +sign_ed25519_open 1 231 117787 +4765+997-119+64-136+0-93-110+284-300-79-48+255+116+1329 +sign_ed25519_open 1 289 117216 +5410+1314+1468+42+50+448-270-262-156-160-302-384+208+0-150 +sign_ed25519_open 1 362 117072 +5929+801+543-133-64+274+0-240+78-294-215+118-421+110-117 +sign_ed25519_open 1 453 118692 +5631+1120+262-11-125+515+130+0+26-138+132-198-170-53-83 +sign_ed25519_open 1 567 118868 +6288+726+0-350-94+24+264-48-600+696+36-316-360-30+76 +sign_ed25519_open 1 709 119917 +4802+3656+485-521-299+287+69-697-585-121-151-189+1103+0+221 +sign_ed25519_open 1 887 120477 +5355+1044+87+182+0+35+260-345+17-79-241-79-243-37-143 +sign_ed25519_open 1 1109 123222 +4847+1108+229+0+14-294-115-367+53-177+2-32+15-119-89 +sign_ed25519_open 1 1387 123566 +5805+2094+2333+519-180-66-86-316+4+212+46-190+0-140-156 +sign_ed25519_open 1 1734 125016 +5374+616+66-180-6-356-152+22+672-228-28+498+126+0-8 +sign_ed25519_open 1 2168 127082 +4997+270+0-342+100+412+22+72-306-486-186-256+134-516-446 +sign_ed25519_open 1 2711 131748 +5770+346+352+44-483-126+168-357-102-178+2242-1-506+0+112 +sign_ed25519_open 1 3389 133046 +5720+512+24+202+0+390+963+0-44-320+338-44-250-276-48 +sign_ed25519_open 1 4237 139125 +5926+1059+233-83+178-216+133-183-99-187-264+0+77+203-13 +sign_ed25519_open 1 5297 145319 +5067+1039-73-23-215-376+1507+820+417-97-231+0-382+72+1501 +sign_ed25519_open 1 6622 151321 +5007+260+0-202-209+189+154-480-565-538+73+179-441-538+263 +sign_ed25519_open 1 8278 163262 +5263+1994+484+291-423+228+0-278-253+212-254-464-137-177+80 +sign_ed25519_open 1 10348 174451 +5355+286+400-286-633-261+0-498-294-106-556+1144+2654+677+361 +sign_ed25519_open 1 12936 188982 +4552+832+134-4+1026-71+58-226-84-300+502+180-260+0-246 +sign_ed25519_open 1 16171 205296 +5858+1489-278-82-163-23+77+108+126-22+253+0-105-198+36 +sign_ed25519_open 1 20214 229326 +5492+1238+1607+68-325-104-318+612+190+80-386-110+0-94-320 +sign_ed25519_open 1 25268 257397 +4859+788+712+590-494-488-280+0-675-132-217+226-418+240+187 +sign_ed25519_open 1 31586 292638 +7168+1027+523-283-140+158+62-198+175-483+1043-218+0-133-22 +sign_ed25519_open 1 39483 340805 +4317+557+43-494+192-100-75-222-450-440+524-515+70+0+323 +sign_ed25519_open 1 49354 395097 +4511+1046+912+2175-227+224+0-261-400+0-167-332-454+127+260 +sign_ed25519_open 1 61693 465626 +4307+985-70+325-424+995-113+0+203-529+125-657-279-180+140 +sign_ed25519 2 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 2 32 29053 +9758+2737-90+0-116-204+30+755+358-62+66-20+241-15-127 +sign_ed25519 2 0 32174 +1911+180-11-43+45+7+135+24-8+236-101-235+0-9-249 +sign_ed25519 2 1 32192 +424+7+203+0+64+6+137+123-12-134-170-65-210-87-313 +sign_ed25519 2 2 32099 +134+160-149+0+200+177+118-263-9-285-32-37-102+116+267 +sign_ed25519 2 3 32172 +0-128+184+199-232+91+1-29-217+51-204-38+210-181+82 +sign_ed25519 2 4 32233 +120+9+177+60+16-105+57-10-282-137-267-286-183+0+106 +sign_ed25519 2 6 32161 +51+103+159-14-115-130+0+0-96+142-72+44+52-12-101 +sign_ed25519 2 8 32226 +379+262+85-183-198+46-81+191+0-310-151+227-404-41+181 +sign_ed25519 2 11 32188 +85+236+54-132-187-22+41-77+10-14+12+0+137-13-12 +sign_ed25519 2 14 32179 +92+1422+282-67-168-213-161+1027+20+0+2+72-191-158-168 +sign_ed25519 2 18 32150 +8+84+55-74-289+37+80+60-142-101+52-85-211-63+0 +sign_ed25519 2 23 32080 +135+0+123+37-39-16+258+147+65-92-87-69+53-72-58 +sign_ed25519 2 29 31990 +54+76+132-44+269-35+347-20+99+0-69-147-4+42-28 +sign_ed25519 2 37 32070 +32+72+265-49-64-93+107-102-76+114+0+327-41-207+11 +sign_ed25519 2 47 32088 +124+64-93-7-68+80+0-3+150-144-5+249+33-284+67 +sign_ed25519 2 59 32736 +89+368-212+0+76-42+140-19+216-25+324-7-35+49-50 +sign_ed25519 2 74 32902 +80+211-57+0-105-185-60-63+10-147-225+136+86+66+6 +sign_ed25519 2 93 33659 +950+91-65+309+76+209+0+962-15+39-91-140-61-191-37 +sign_ed25519 2 117 33686 +209+182+50+288-16-51+87-52-82-158+0+341+29-217-25 +sign_ed25519 2 147 33766 -71+102-17+59+4-199+35-301+2247-23+24+72-209-3+0 +sign_ed25519 2 184 34465 +5+142+27+88-146-426+67+0-176+27-244-143+9-157-257 +sign_ed25519 2 231 35121 +240+285-20+127+0-173+164-186-79+90+8-58-121+3-125 +sign_ed25519 2 289 35170 +272-37+8+34+0+4+45-140-84+65-163-189+84-127-6 +sign_ed25519 2 362 36492 +38+109-133-106-202+0+64-35+347+8+171-46-85+320-129 +sign_ed25519 2 453 37271 +222+11+109+46+60+212-92+22-235+0-231-17-238-146-122 +sign_ed25519 2 567 38778 -118-151+3+920+315+0+180-87+144+256-18+5-236-16-215 +sign_ed25519 2 709 40048 +222+195-59+167-49+38+326-80-130-53+0-23-23+123+378 +sign_ed25519 2 887 42407 +150+126+79-169+125-104+317+64+114-39+0-134-287-54-31 +sign_ed25519 2 1109 45097 +285+307-23-70+106-243+25-68+0+6+217+320-106-136-53 +sign_ed25519 2 1387 47988 +326+6-175-54-219-67+238+18+54+0+67-41-151+326-56 +sign_ed25519 2 1734 51463 +492+256-197-51-107-57+0+90+2+344-247-25+169-2+801 +sign_ed25519 2 2168 56569 +0+9+59+33+888+264+246-164-17-55-122-125-198-58+75 +sign_ed25519 2 2711 62357 -66+291+56+105-97-156-44+0+117+1493+65-293+166-245-56 +sign_ed25519 2 3389 70140 +129+332+49+114+85-257-187-42+71+0-72-29-143+208-321 +sign_ed25519 2 4237 79403 +82-52+50+113-5+150-136+112-41-115+18-17+16-1+0 +sign_ed25519 2 5297 91608 +340+698+139-264+0+226-220+119-26-172+174-34-233+61-220 +sign_ed25519 2 6622 106593 +490+21-113-37-105-28+234+203+192-285-299+0-21+218+9 +sign_ed25519 2 8278 125238 +65-100+115-81-130-11+8-66-61+189+920+1671+0+620-26 +sign_ed25519 2 10348 147955 -223+96+0-80-315+273+116-66+11+229-358+22+39-46-100 +sign_ed25519 2 12936 176658 +472-42-243+32+228+644+82-319+235+19-14-140-11-199+0 +sign_ed25519 2 16171 212080 -31+194-97-158-62+170-112+0-83+28-38+116+738+240+244 +sign_ed25519 2 20214 257829 +276+85-486+184-104-241-112+236+39+0+43-181-374+649-374 +sign_ed25519 2 25268 314463 +521+155+125+0-284-126-462-130+81-238+9+1039+4-190-199 +sign_ed25519 2 31586 385575 +146+516+0-336-349-110+702-279+112+753-340-336+371-175+123 +sign_ed25519 2 39483 473549 +11577+529-61+128-87-106+185-316+374-34+759+0-44+1128-7 +sign_ed25519 2 49354 583818 +10505+700-105+229-192+1744-561+1690+220+2513-199+0-585-253-213 +sign_ed25519 2 61693 722103 +11383-173-190+862-389-266+269+127+41-9+36+0+1867-326-441 +sign_ed25519_open 2 0 115260 +9016+2660+293+1544+277-58+588+396-358-422-206+0-336-131-453 +sign_ed25519_open 2 1 116578 +5554+777+1163+261-433+597+546+0-40+230-398-22-36-24-150 +sign_ed25519_open 2 2 117394 +5217+698+0-428-524-40+94-114+860-520+604-704+146-592+486 +sign_ed25519_open 2 3 115438 +6098+997-502-490-322+374-490+166+92-4-394+224+0-156+138 +sign_ed25519_open 2 4 115849 +5212+1134+520-279-1043+296+0+19-177-131-379+35-13-459+629 +sign_ed25519_open 2 6 113122 +6225+1149-254+350-298+0-256+224+192+834+176-204-34-168-186 +sign_ed25519_open 2 8 117171 +5337+465-521+457+85-229-321+534+0-469+265-577+297-281-647 +sign_ed25519_open 2 11 113798 +6189+871+300+407+147-38+0+65+269-680-34-420-245-296-297 +sign_ed25519_open 2 14 116530 +5364+931+6-97-466-321-182+404-1025-655+0+101+125-90+829 +sign_ed25519_open 2 18 116592 +5576+426+847+0-388-925-729+591-895-1204+250-879+37-586+36 +sign_ed25519_open 2 23 116105 +6142+1532-367-232+0-104-239-238+255-131+454+419+427+85-21 +sign_ed25519_open 2 29 117170 +4544+584+0+1209+1354-13+732-332-128+73-571-155-307+148-416 +sign_ed25519_open 2 37 115559 +5434+893+311+159+39-38-418-323-277+0-27-112+76-7+480 +sign_ed25519_open 2 47 114252 +5514+1516-50-91-157+840-230+159-176+0-175+711+646-254+428 +sign_ed25519_open 2 59 115123 +5700+678-183+21-538-472-137+2017+0-315+243+85+97-417-271 +sign_ed25519_open 2 74 117328 +5912+1096+229+0+344-412+397+79-659+232-116-360-545-755-309 +sign_ed25519_open 2 93 117426 +5387+1369+827+307-36+60-424-420-246-582+5+0+479-474-449 +sign_ed25519_open 2 117 117247 +4453+841+233-74+1036-371-43+0-610-31+107+121-347+69-351 +sign_ed25519_open 2 147 116252 +5904+1163-217+139-91-329+178-21-141-436+1171+2530+0+106-330 +sign_ed25519_open 2 184 117023 +5341+2303-71+78+159+0+31-401-89-1069+321-114-312-135+108 +sign_ed25519_open 2 231 115942 +6209+1694+305+53+94-444-402+598-80-290-22+0+158-280-136 +sign_ed25519_open 2 289 116875 +5655+1939+296+617+421-399-75-451-57-189-48+970+1090+0-322 +sign_ed25519_open 2 362 116557 +6635+582+208-120-396+260+0+42-198-242-326+272-188-242+304 +sign_ed25519_open 2 453 118171 +5945+540-172+283-417-426+0+15+759+169-6-35-161+107-37 +sign_ed25519_open 2 567 120079 +4895+514-112+621+83-414-200-1+103+155-155+0-222+514-209 +sign_ed25519_open 2 709 119991 +5093+515-212+9-230+0+96-279+317+574-86+867-545-13-315 +sign_ed25519_open 2 887 120782 +5308+668+4+348-444-460-956-228-426-356+1304+1292-328+0+508 +sign_ed25519_open 2 1109 121966 +5490+1046+182-110+77-84-69-324+98-413+1044+608-366-232+0 +sign_ed25519_open 2 1387 122688 +6044+987+467+682-23+620+908-170-240-172-106-314+488-192+0 +sign_ed25519_open 2 1734 125036 +4936+1444+280+15+234-148+48-258+30+0-611-275-146-388+0 +sign_ed25519_open 2 2168 127286 +5347+918-76-300+0-11-273-107+844+1484+98+38+615-180-179 +sign_ed25519_open 2 2711 130502 +5138+814+0-436-185-104+11+447+262-418-166+286-206-213+370 +sign_ed25519_open 2 3389 136203 +4705+698+2+0-7+199-242-349-83+427-13-198-199+68+252 +sign_ed25519_open 2 4237 139555 +5448+868-155+0-32+137-219-151+80-20+527-123-103+371+2947 +sign_ed25519_open 2 5297 147416 +5082+811+0+658-62-504+120+214+599-29-154+528-366-106-214 +sign_ed25519_open 2 6622 152316 +5000+1678+420-307-398+468+164-426-388-248-60+80-332+728+0 +sign_ed25519_open 2 8278 162423 +5006+553-236+786+3318+0-35-62+509-97+63-99-219+87-295 +sign_ed25519_open 2 10348 172822 +5448+617-360+251-148+168-195-149-219+409-361-413+0+737+704 +sign_ed25519_open 2 12936 188857 +4767+416+562-457+93-503-329-355-65+1754+116-322+2-376+0 +sign_ed25519_open 2 16171 206044 +6017+2648+378-37-26-349-123+48-194+394-118+129-150+228+0 +sign_ed25519_open 2 20214 229676 +4854+1010+37-374+3840+47-530+330-447+0-384-264+362-161-341 +sign_ed25519_open 2 25268 258271 +5540+1226-72+246+1471+306+0+19-158+203-628-2-130-18-111 +sign_ed25519_open 2 31586 293861 +5551+1611+2794+420-76-235+47-59+1188-352+181-26+0-407-57 +sign_ed25519_open 2 39483 339188 +4620+1101+276-142+314-156+272-53-142-23+0+1300+17-280-116 +sign_ed25519_open 2 49354 395750 +3866+412+203+998-282+282+313-427-930-248+60-450+0-1015-807 +sign_ed25519_open 2 61693 467824 +4238+1334+293-412-164+816-191-628+503+2-172+0+246-162-462 +sign_ed25519 3 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 3 32 29037 +3379+148-58-54-221+962-39+93+62+118+0-161-77-78+9 +sign_ed25519 3 0 32162 +2019+188+35-2+61-19-131+235-213-268-111-1+39+0+382 +sign_ed25519 3 1 32109 +156+150+341-91-136-58-114-3+57+15+79+34-6-173+0 +sign_ed25519 3 2 32082 +178-131+167-82+74-111-100+153+199+0-44-9+57-101+42 +sign_ed25519 3 3 32163 +10+65-157+23+0-31-314+78+112+93-248+385-10-246-218 +sign_ed25519 3 4 32160 +154-143+118-206-96+132+0+20-156-36+110-261+182+12-132 +sign_ed25519 3 6 32039 +92-11+52+166+0-101+222-28-37-80+181+56-5-162+14 +sign_ed25519 3 8 32161 +88+23+99-194-207-202+0-109+13-11+77-182+23-351+183 +sign_ed25519 3 11 31967 +204-23+169-42+193-51+0-73+98+314-55-64+75-136+141 +sign_ed25519 3 14 32172 -59+113+153+4+53-128+0-132+73-89-83-114+48-99+104 +sign_ed25519 3 18 32148 -138+63-163-225-157-25+0-63+57+72-5+57+118+1+35 +sign_ed25519 3 23 32086 +0+65+14+4-94-3-77+35-78+285+34-85+225-289-64 +sign_ed25519 3 29 32158 -114-200-342-25+0+70+24+2+30-32+303-80+168-88+284 +sign_ed25519 3 37 32201 +113+10+40+401-226-125+84-369-35+72+122+0-262-344-2 +sign_ed25519 3 47 32062 -24+285+0+57-30+176+95+97-192-136+37-92+17-66-121 +sign_ed25519 3 59 32727 +61-75+47+18-202+40-85-59+0+293-26+451-93+24-209 +sign_ed25519 3 74 32816 +7+367+288+77-197+144-77-64+68-28+156-254+0-169-154 +sign_ed25519 3 93 33703 +10-409+3-68-137-89+776+87+4-150+231-183+222+0-218 +sign_ed25519 3 117 33580 +190+159-40+0-34+22+64-303+72-45+194-8-196+40-204 +sign_ed25519 3 147 33625 +320+123+198+122-328+376-237+6-214-78+0-8-4+174-174 +sign_ed25519 3 184 34339 +247-17+99+29-219-146+16+185+118+48+0-81-102-274-208 +sign_ed25519 3 231 35125 +50+153+50+15-74-7-29+0-3-34+13-29-117+156+155 +sign_ed25519 3 289 35070 +76+0+68-327+31-28-147+276-170-65-274-131+499+69+53 +sign_ed25519 3 362 36490 +232-204+29+204-4-229+18+379-115+628+0-55+39-173-77 +sign_ed25519 3 453 37261 +57+158-305+74-17-149+16-188+51+0+136-146-306+119-87 +sign_ed25519 3 567 38669 -145-179+80-180+820-208+0+74+15+85+159+57-30-167-72 +sign_ed25519 3 709 40176 +70-100+114-184-13+200-49-143+7-145+69-111+2134+295+0 +sign_ed25519 3 887 42281 +290+77-126+28+48-335+60-199+0-84+159-250-166-178+124 +sign_ed25519 3 1109 45063 +469+427+95+261-135+169-289-130-40-266+0+211-238-124+224 +sign_ed25519 3 1387 47945 +88-9+18+119+207+118-140+186+0-312-143-162-440+58-215 +sign_ed25519 3 1734 51585 +95-162-35+51+105-82-311+0+2-237+198-173+72-44+13 +sign_ed25519 3 2168 56544 +277+162+219+813+165-34+0-25-70+44-197-175+17-108-131 +sign_ed25519 3 2711 62181 +225+265+7+209+73-150-11-34+75-192-177+205-125-48+0 +sign_ed25519 3 3389 69983 +353-16+162+0-44+80-188+93+393-269+64+223-181-433-44 +sign_ed25519 3 4237 79368 +498+196-178+0-21-213+30-24+232+169+0+188-230+49-61 +sign_ed25519 3 5297 91506 +379-91+1010+2245+0+106-56-112-50+92-125-65+82-188+0 +sign_ed25519 3 6622 106521 +414-117-15-145+190+0+229-30+69-8+7+82-202+183-65 +sign_ed25519 3 8278 125138 -12+0-24-161-26+74+346+100+683-222+1098+939-10+381-36 +sign_ed25519 3 10348 147882 +137+2170+0+231-257-78-38-275-5+37+155+105+226-104-361 +sign_ed25519 3 12936 176368 -80+231+82+58+131-205+602-91+488-121+20-334+0-31-283 +sign_ed25519 3 16171 212067 -151+251+91+300+100-67+40-399-206+0-113-152+293+1690-249 +sign_ed25519 3 20214 257788 +50+0+271+52-150-424+116-466-76-74-394+30-481+404+94 +sign_ed25519 3 25268 314375 +363-616-18+39+45-309-214-108-38+191+41+627-71+395+0 +sign_ed25519 3 31586 385190 +709-57+184-49-345-239+4409+311-150+0-43-91+39+100+172 +sign_ed25519 3 39483 473490 +17271+52-136+506-119-639+0-495-113+33+214+184-27+6-110 +sign_ed25519 3 49354 584052 +8866+1309+0+318+1098+296+1095-286-832-496+2625-696-796-917-596 +sign_ed25519 3 61693 721828 +8224+103+0-1143-79-1011+625-812-988-355-57+941+104+230+1856 +sign_ed25519_open 3 0 115934 +8007+1693+541+146+535-7-75+14-194-72-338+0-598+351-159 +sign_ed25519_open 3 1 114246 +5869+975+237+47+0+600-177-155-402-50+836-131+312-68-164 +sign_ed25519_open 3 2 114346 +6340+1204-96-100+158+64+0-48+64+316+446-90-348-288-54 +sign_ed25519_open 3 3 114252 +5864+752+258-97+17-360-41-127+443-258-245-206+0+53+962 +sign_ed25519_open 3 4 115042 +5978+1386+98-86-74+414+268-154-410-278+0+390-86-356+785 +sign_ed25519_open 3 6 112896 +4800+1554+0+118+326-428-320-322+34-100+156-290-78+66-16 +sign_ed25519_open 3 8 113936 +5871+700+120+26-204-288+940+0+118-154-312-142-130-76+22 +sign_ed25519_open 3 11 116419 +5193+559+410+0+286-255-230-161-250+66-618-229+238-244+41 +sign_ed25519_open 3 14 116070 +5783+1168+204+142+62-122-312-50-90-182+0+94-236+1047-58 +sign_ed25519_open 3 18 116194 +5630+640-229+54+0-251-78-39+173+138-550+74+457-229-324 +sign_ed25519_open 3 23 116473 +4927+1088+119-494-323-401+938+0-239+590+29-369+195-231-367 +sign_ed25519_open 3 29 115574 +5814+1788+230-230+0+865+2360+573-36-314-220-356-452-376+1764 +sign_ed25519_open 3 37 115418 +5918+1256+190-186-30+665+143+0+140+258-222-4-266-192-70 +sign_ed25519_open 3 47 115717 +5139+1418+132-408+325-150-415+190-122+0-261-52+908+168-70 +sign_ed25519_open 3 59 117742 +5732+824-36+0-428-118+98+326-496-330-260+258-96+66+146 +sign_ed25519_open 3 74 116289 +5375+493-33+155+208-310-5-190+525-183-43+0+7+245-395 +sign_ed25519_open 3 93 116678 +5972+1436-275+979+0-244-692-18+322+106+180-60+176-322-66 +sign_ed25519_open 3 117 116499 +5787+797+370+272-119+155-132-199+185-433+23-260-127+0-257 +sign_ed25519_open 3 147 116969 +6307+511+117-46+0-81-439-231-267+63+949+162+345-287-250 +sign_ed25519_open 3 184 117631 +6379+1218+178-329-15-263-71-215-171+89-61+11+1+217+0 +sign_ed25519_open 3 231 116152 +5861+319-260+93-292-18+146+326-186+617+337-46-36+0-28 +sign_ed25519_open 3 289 118358 +4819+523+1225+2412+106+26-288-110+38-394-432-144-624+0-228 +sign_ed25519_open 3 362 119776 +5164+849+0+6-274+164-102-334+98+192-48-178-68-156+1208 +sign_ed25519_open 3 453 118258 +6164+926+0-85-213+0+513+14+630+618-152+0-352-15-363 +sign_ed25519_open 3 567 118720 +5872+1102+380-134-146+238+304-30+68-326-42-90-464+242+0 +sign_ed25519_open 3 709 120298 +5883+1164-159-70+66-398+44-16+72+72-196-288-280+0+603 +sign_ed25519_open 3 887 120040 +5458+1198+314+0-212-182-134-138+14-124+246-288+547-129+8 +sign_ed25519_open 3 1109 121882 +5465+526-116+4+152-28+837-166+116-112-288+0-152-108+655 +sign_ed25519_open 3 1387 124512 +5143+1224-68+762+717-147+245+373+51-29-388-218-186+0-76 +sign_ed25519_open 3 1734 126832 +5469+1338+0+186-234-76+3993-69-56+154+268+264-52-92-482 +sign_ed25519_open 3 2168 127424 +5183+893-150+64+1029-336+1115+494-562-560-266-272+1574+0-202 +sign_ed25519_open 3 2711 130450 +5959+1660+446+280+38-320-152+914+0-16-202-414-166-318+54 +sign_ed25519_open 3 3389 136539 +5457+594+0-174+59-52-576+1241+2354+64-99+1-101-131-117 +sign_ed25519_open 3 4237 139006 +5374+1832+435+213-269+0-128-72+176-94+82-186-54+259-450 +sign_ed25519_open 3 5297 147187 +4654+819-42+205+134-8+1545-89-33-245-129+510+0+50-128 +sign_ed25519_open 3 6622 152758 +5410+1259-368-176+120+0+62+120-154+52-60+212-750-174-164 +sign_ed25519_open 3 8278 163282 +5530+2536+2369-257-457-140+266-249-136+19+68-93+295-165+0 +sign_ed25519_open 3 10348 174474 +5381+544+398-150+0-68+673-58-310-76-266+437+68-266+723 +sign_ed25519_open 3 12936 189482 +5358+624-132+233-52+218-56+122+156+0-128+184-128-124-48 +sign_ed25519_open 3 16171 206866 +5023+680+98+0-388+500-356-210-210-324+62+96+106-80-260 +sign_ed25519_open 3 20214 229275 +5909+642+3107+425+0-163-311-464+446+140-148-141-143+75-365 +sign_ed25519_open 3 25268 258731 +5113+1304+3788+596+105-116-81-325-165-563-490-212+119+228+0 +sign_ed25519_open 3 31586 294566 +8773+1057+968+413+1722+0-99-319-46+2835+241-124-170-162-306 +sign_ed25519_open 3 39483 339761 +4803+320+383-340-102-180-224+358+0+93+3467+105-435-20-268 +sign_ed25519_open 3 49354 399663 +3031+1056+1029+441-112-566-508+436-45-105+583-562-34+0+731 +sign_ed25519_open 3 61693 466283 +3967+142-290+105+843+81-802-484-721+0+766-305-187-254+394 +sign_ed25519 4 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 4 32 28952 +3661+175+310+53+55+9+133-129-123-80-233-131-3+0-213 +sign_ed25519 4 0 32119 +1156+0+6-72-155+284+16+6-133-259-120+182-113+90-276 +sign_ed25519 4 1 32124 +159-228+57-178-70+52+107-109+159-156+0+9+254-270-267 +sign_ed25519 4 2 32171 -29-353+2455+215+0+123+171-386-54-123+53+98-263-18+173 +sign_ed25519 4 3 32190 +25+106+70+228-276-170-193+147+72-25-226+105+0-43-151 +sign_ed25519 4 4 32129 +0+118+246-103+138-175-83-9-21-2+14+9-88+223+104 +sign_ed25519 4 6 32056 +186+293-113-13+157-36+0-167-106-59+174-19+212+155+298 +sign_ed25519 4 8 32213 +33+126+190-156-95+90-348+78+30-273-189+109+0-127-89 +sign_ed25519 4 11 32248 +0+11-156+54+111-76-238+2139-96-104+37-298+24+132-50 +sign_ed25519 4 14 32160 -27+37-15+292+0+202+168-138-242+45+93-61+91-157-266 +sign_ed25519 4 18 32205 +41-174+45-250+0+148-30+136-142+48-95+214-172+189-64 +sign_ed25519 4 23 32151 +13-120-260+73+0+189+229-61+125-110-129-119-180+61+157 +sign_ed25519 4 29 32221 +91-76-187-135-166+0+41+9-38-422+5+64+233+22-38 +sign_ed25519 4 37 32100 -117+87-186-172-236+1338+0+54-104-1+97+448+129-4+352 +sign_ed25519 4 47 32056 -188-242+164+278+112+784-80+26-45+72-25+3+0-109-126 +sign_ed25519 4 59 32812 +0-17+240-228-159+39-24-106+245-143+4+49+304+100-190 +sign_ed25519 4 74 33025 +987+0-5+411-282+179+35-402+1201-252-157+87-201-257+352 +sign_ed25519 4 93 33639 -91-65+275-66+108+68+79+29-217-17+97+11+0-38-115 +sign_ed25519 4 117 33655 +246+56+25+108+43-138+2-76-21+0-227+370-125-33-70 +sign_ed25519 4 147 33597 +227+318+390+89+131-39-56+0-50+1-224-191+46-80-67 +sign_ed25519 4 184 34327 +143+132-170+4+364-117-7-119-234+9-149+0+151+177-55 +sign_ed25519 4 231 35195 +48-187+174-322+188-23+90-59+104+5+534-9-43-53+0 +sign_ed25519 4 289 35185 +196-79+30-77-56-76+99+0+158+100-171-293+26+47-355 +sign_ed25519 4 362 36526 +291+117+114-66+113-35+304+232+0-98-87-284+208-123-35 +sign_ed25519 4 453 37334 +152-49-205-92-332-193+709-52+0+311+253+283+204+49-156 +sign_ed25519 4 567 38817 +302+35+14-318-49+58+81-32-28-194-218-108+177+0+55 +sign_ed25519 4 709 40215 +605-111+134+116+0+275-164+216-84-361+95-279+0-105-137 +sign_ed25519 4 887 42252 +346+31+0+21+282+108+129-3+79-3-238-182-68-46-228 +sign_ed25519 4 1109 45195 +188+270+122+116+599-356-194+0-174-215-237+55-23-193+151 +sign_ed25519 4 1387 47952 +179+174+257-223-127-215-276+0+33+36+53+271-65-82-75 +sign_ed25519 4 1734 51649 +120-166+166+44-208+249-363-281+0-77+761-118+105-182+89 +sign_ed25519 4 2168 56627 +0-217+2418+38+15+89-147+51+108-106+53-208-151-139-54 +sign_ed25519 4 2711 62134 +453+465+492+0+22-16-101+183+68+199-59-50-85-200-84 +sign_ed25519 4 3389 70057 +504+225+90+112+75-403+110+0+15-150-94-73-51-32-94 +sign_ed25519 4 4237 79512 +0-46+71-115+309-136-93-74+137-210+6-30+863+244+1795 +sign_ed25519 4 5297 91548 +558+246+118+193+22-157-18+0-331-114-132+410+149-178-42 +sign_ed25519 4 6622 106647 +152-247+43-65-237+242+106-354+0+8+234-114-169-348+445 +sign_ed25519 4 8278 125150 -39+347+88+0-52+1295-464-122+1808+300-132+236-142-36+84 +sign_ed25519 4 10348 148059 -230-153-116+649+163+155-296+66+92+0-290+108-244+27-188 +sign_ed25519 4 12936 176729 +599-190+859+0-1+81+409+57-263-111+432-283-265-311+103 +sign_ed25519 4 16171 212310 +86+1096+0-441-84+31-213-474-490+1996+1751+93-28-263+220 +sign_ed25519 4 20214 257899 +73-379-128+93-50-245-420-21+231-336+483+48+0+402+188 +sign_ed25519 4 25268 314248 +522-30+168+0-105-195-59-98+1520+2809+216+218+7-24-101 +sign_ed25519 4 31586 385768 +183+1596+429+144+818+161-423-441-319-146-243+0-156+709-565 +sign_ed25519 4 39483 473557 +12463-143-309-129-285-369+374+244+644-140+111-106+0+136+181 +sign_ed25519 4 49354 584129 +20252+1178+399+987-414+41-463+0+972-647-542-593-502-663+1430 +sign_ed25519 4 61693 721896 +10151-390-197-185+874-494+1025+1052-394-572+0+1136+16+250-465 +sign_ed25519_open 4 0 114633 +10479+1243-178+53+0-211+195-589+243+24-217+271-169-475-198 +sign_ed25519_open 4 1 115704 +5479+1519+514+934+64-206-82-378+1387+36-548-200-190+0-426 +sign_ed25519_open 4 2 114459 +5585+1125-246-28+67+0+1055-283-567+39-423+49-205-75+3 +sign_ed25519_open 4 3 113788 +5464+3062+911+1531+455+0+330+224-704-716-300-85-314-626-511 +sign_ed25519_open 4 4 114512 +5767+1270-482-11-195+762-34-358+627+143+315+261-430-223+0 +sign_ed25519_open 4 6 115950 +4778+539+69-637-332+0-148-96-44-548+88+513+264-32+200 +sign_ed25519_open 4 8 113452 +5355+680+1143-292+171+51-594-276-292+260+176-562-482+0-342 +sign_ed25519_open 4 11 114180 +5048+1339+67+23+487+196-58-284-88-394-271+97-40-480+0 +sign_ed25519_open 4 14 115461 +4691+4237+807+1228+123+29-337+35-296-260-123+0-1-10-776 +sign_ed25519_open 4 18 116564 +5465+755+288+292+381+1091+0-144-718+152-630-614-468-758-373 +sign_ed25519_open 4 23 115850 +4904+2971+679+21+242+0-410-248-307-289-534+816+2828-354-774 +sign_ed25519_open 4 29 115642 +5515+545+1083+29-240+275-255-270-166-168+700-11-267+0+300 +sign_ed25519_open 4 37 115488 +5823+433-272+2018+184-338-252-204+14+0-299+548-110-84+554 +sign_ed25519_open 4 47 115560 +4804+1953+75+117+127-62+104+1968-86-164-286+0-278-266-668 +sign_ed25519_open 4 59 116046 +5797+1812+628+119+22-530-106-288+180-316-204+0-382+118-210 +sign_ed25519_open 4 74 117631 +4490-29-238-418+0-495+1415+340+802+100-199+134+92-87-47 +sign_ed25519_open 4 93 115819 +5967+251-18+356-579+27-386-249-577+447+112+183+0-383-331 +sign_ed25519_open 4 117 117459 +4743+556+202-707-72+314-301-139+355-124+373+0-638+155-575 +sign_ed25519_open 4 147 118513 +5247+2330-272+92-203-67-397-44+281+38+12-207+0+11-213 +sign_ed25519_open 4 184 118332 +5010+692+0-30-416-189-381+104+1081+672+807-612+54-14-159 +sign_ed25519_open 4 231 117669 +4112+104+2400-921+269+21+293-826-898+0-1022+115-228-164-568 +sign_ed25519_open 4 289 117584 +5483+938+208-42+18+0-138-262-428+180+504+0-164+648-314 +sign_ed25519_open 4 362 117963 +4714+998+87+378-17-10-459-186-151-147+70+0-476+1156+60 +sign_ed25519_open 4 453 118674 +7107+948-90-162-192+98-142+0+42-102-232+227+266-223+274 +sign_ed25519_open 4 567 119441 +5300+639-361+208+52-284-230+75-303-232+1184+0-31+13-15 +sign_ed25519_open 4 709 120454 +4452+479+136+1013+30-50-108-492-46+0-118-164+170-402+56 +sign_ed25519_open 4 887 121964 +4639+752+160+0-614-506+203-584-10-370+214+30+1913-127-446 +sign_ed25519_open 4 1109 123205 +5020+811-328+264-309-329+69+355+673+1655-566+0-612-243-43 +sign_ed25519_open 4 1387 123860 +6235+1429+440+24+302-62+0-16-72-400-344+104-80+240-66 +sign_ed25519_open 4 1734 124870 +5771+1452+134+310+1308-23-190-78+1111-334-104-242+869-320+0 +sign_ed25519_open 4 2168 127822 +6285+1504+101-245+100+0-306-738-220-4+298-132+232+82-220 +sign_ed25519_open 4 2711 130840 +6418+1553+208+835-233+0-22-54-219-13+123-52-340+178+252 +sign_ed25519_open 4 3389 135856 +6043+2585+137-155+0+52-454-302+352-316-464+115-425-11+154 +sign_ed25519_open 4 4237 138193 +6044+4075+538+1348-120-239-116-251+96-69-483+29-209+0+775 +sign_ed25519_open 4 5297 145109 +6430+1358+1798+1151-175-19+0+41-277-143-439+203-363+261-305 +sign_ed25519_open 4 6622 151690 +6180+2061+924-368-48+0-20-242+1472-30-186+1793+2538+627-342 +sign_ed25519_open 4 8278 160373 +6239+937+228+267-532+733+0-77+173-68-234-398-458+70-385 +sign_ed25519_open 4 10348 174512 +4587+134+320-359+1547+1687-423-890+0-720+1821+362-250-718-938 +sign_ed25519_open 4 12936 187090 +5754+1433+72+167+48+0-806-480-164-1056+606+869-85-161-349 +sign_ed25519_open 4 16171 205510 +5025+1231-248-149-340-223+2857+370+1041-122+82+78-262+0-428 +sign_ed25519_open 4 20214 228893 +5675+2660+710+335+77-249+92-776+72+0-31-744-287-613-181 +sign_ed25519_open 4 25268 258714 +5925+1152+182-388-50+7-169-272-351-329+157-185+24+270+0 +sign_ed25519_open 4 31586 294458 +4746+104-184+110-408+1151+699+387-1056-678-730-618+119+0-441 +sign_ed25519_open 4 39483 339721 +4275+286+49+1174-110+59+1106-319-340-549-365-346+0-344+131 +sign_ed25519_open 4 49354 398205 +3010+763-408-890-710-706-772-936+2333+187+0+360-261+2213+521 +sign_ed25519_open 4 61693 466370 +4432+1471+149+53-161+463-261-73-7-872-203+768+359+0-547 +sign_ed25519 5 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 5 32 28953 +3168+195+40-77+201+192+122+389-245-91+0-148-125-110-29 +sign_ed25519 5 0 32165 +1523+190-9+234+0-141+128-61-159-136+5+390-270-80+57 +sign_ed25519 5 1 32169 +62+214+202-97-385+30-192+0-122+283+135-153+152-51-159 +sign_ed25519 5 2 32294 +36-404-208-134+1206+113-124+1518-148+0+1371-22-141+68+709 +sign_ed25519 5 3 32100 +75+430+0-51+67-71-245-171-192+116-66-57+101+24+137 +sign_ed25519 5 4 32144 +135+0-194-230-164-92+139+184-30+129-205+125-115+227+148 +sign_ed25519 5 6 32146 -79+49+998+326+0-123+227-302+185-95+31-146+380-201-69 +sign_ed25519 5 8 32267 +116+140+3+124-79+1422+1034+51-157-86-387-75-30+0-392 +sign_ed25519 5 11 32076 -78+139+297-235+40+187+203-64+0+200-81-14-67+97-34 +sign_ed25519 5 14 32127 +92+84-118-5-16+120-123+0-13+158+48-313-48+5+791 +sign_ed25519 5 18 32195 +0-98-275+191+110+97+312-23-389-406+42+888+20-27-208 +sign_ed25519 5 23 32079 +14+176-114+36-36-173-184-96+84+319+136-119+0+273-211 +sign_ed25519 5 29 32049 +141+257+45+182-50+74-12+0-137+181-19+283-118-158-5 +sign_ed25519 5 37 32098 +1598+1141+258+91+27-65+95-153+163+0-145-182-76-125-213 +sign_ed25519 5 47 32144 +223-28+181+14+0-118+44+130+955+282-260-140-65-128-209 +sign_ed25519 5 59 32915 +21+336+4+84+58-272-3+91-42-322-125-121-6+0+110 +sign_ed25519 5 74 32870 +298+178+120+141-19-43-235+0+10+69-75-82-77+127-257 +sign_ed25519 5 93 33519 +0+94-93-158-138-44+295+199-91+13-60+109+118+224-72 +sign_ed25519 5 117 33634 -174-84+187+13-137+150-341+33+29-37+0-118+49+64-262 +sign_ed25519 5 147 33608 +263+70-57-62+0+141-42-25-124-153+73+59+38-90+80 +sign_ed25519 5 184 34265 +73-54+222-23+247+21-55-44+0+71-29-29+64+148-74 +sign_ed25519 5 231 35090 +219+0+142-159-57-93+268-212-147+77+10+51-82-228+113 +sign_ed25519 5 289 35175 -53-137-77+0-83-51+77+197+14+35-67+694+59-133+165 +sign_ed25519 5 362 36690 +18+1067+125+2690+214-71-133+127+230-199-122+0-267-263-111 +sign_ed25519 5 453 37206 +246+282+127+62+197-198+134-162-5+0-267+103-94-334-96 +sign_ed25519 5 567 38598 +51+333+57-246+69-144+51-40+93-39+839+0-75-118-1 +sign_ed25519 5 709 40134 +364+43+38-87+90-111-123+0-14-90-212+58+127+47-243 +sign_ed25519 5 887 42173 +186+80+201+190-26+48+78-11-43+0-139-9-20+16-68 +sign_ed25519 5 1109 45032 -8-28+37+88+206-114-72+52+25+0-4-11-156+137+146 +sign_ed25519 5 1387 47933 +45+63+185-58-142+212+575-88-176+207-8+0+2-289-57 +sign_ed25519 5 1734 51507 +42-118-8+198-126-148+149+0+273+300-207+110-59+138-173 +sign_ed25519 5 2168 56464 +52-1+141+291-94-93+1027-24-107+0+23-17+4-97+1289 +sign_ed25519 5 2711 62175 +128-86+59+374+146-295-26-56+95-170+137-30-82+82+0 +sign_ed25519 5 3389 70211 +94+0+77+87+80-110-115-80+57-90+104-31-390+6-150 +sign_ed25519 5 4237 79433 +514+509+149-41-128-14+49-113+211+59+0-163+27-372-216 +sign_ed25519 5 5297 91570 +203+170-101-163-53+6-50-18+14-238+49+91+0-201+1258 +sign_ed25519 5 6622 106593 +209-111-297-369-131+192+0-305-17+55+35+27-70+32+793 +sign_ed25519 5 8278 125119 +269-352-32+0-103+246-341+120-7-89+402+52+196-279+244 +sign_ed25519 5 10348 147745 +238-78+415-7-63+56-139-285+119+71+0-143-16+153+940 +sign_ed25519 5 12936 176337 +255-105+162+2-283+892-415+0+123-186-131-166+86+348-51 +sign_ed25519 5 16171 211982 +48+0-72-357+576-162-326+51-213+17-284-505+846+1296+781 +sign_ed25519 5 20214 257828 +110+23+41+237-63+1692+420-230-209-192-133+0-218+61-120 +sign_ed25519 5 25268 314336 +216-472+812+0-106+856+3269+753-246+132-87-481-258+37-117 +sign_ed25519 5 31586 385353 +246+139+512+235-399+358+0-280+615-106-632-83-608-565+127 +sign_ed25519 5 39483 473511 +16938+392+2123-544-463+0+493+2381-8-129+111+102-267-168-152 +sign_ed25519 5 49354 584047 +8767-168-230-421-3-289+484+3012+1936-322-260+243+0+318+125 +sign_ed25519 5 61693 721977 +8094+1429-305+1052+2199-483+0-354+7-363+1092+270-245-404-563 +sign_ed25519_open 5 0 115200 +9722+1712+908+896-2+882+0-20+604-158-204-176-176-328+98 +sign_ed25519_open 5 1 115798 +4739+860+0+414-101-280+2237+83+80-454-182-214-103+8-323 +sign_ed25519_open 5 2 114832 +5815+1013+163-338-242+248-126+0+72-56-298+86-287+565-92 +sign_ed25519_open 5 3 116940 +6198+507+390-392-606+268-464+370-302+318-444-132+0-96+36 +sign_ed25519_open 5 4 115485 +6609+2159+909-19-213+136-16+71+0-12-269+1167-319-229+221 +sign_ed25519_open 5 6 115110 +5514+247-1038-476+3270+3459+5-388-74-496+24+0+20-122-262 +sign_ed25519_open 5 8 113802 +5579+1493+298+0-122-64+10-170+418-16-232+178-190+64-292 +sign_ed25519_open 5 11 114640 +5417+1150-74+62-385-170+56-394+0-524-34+134+234+680-567 +sign_ed25519_open 5 14 115496 +5629+496-157+0-566-964-346-668+1749+557+590+196-528-110+154 +sign_ed25519_open 5 18 114387 +6301+755-48+157+393+0+587-643-75+311-198-88+449-73-355 +sign_ed25519_open 5 23 115642 +6074+482+95+168+0+27+103-236-222-206-524-8+0-86-212 +sign_ed25519_open 5 29 114678 +5952+764+158-553-449+0-655-462-218+455-656-760+1973+910+1080 +sign_ed25519_open 5 37 115829 +5432+986+1318+203+0+106-427-401-11-261-617-123-303+726+198 +sign_ed25519_open 5 47 114430 +4737+980+476+196+470-172+428-28-186+14-416+0-274-350-266 +sign_ed25519_open 5 59 116212 +4503+390+74-6-154+186-426-204+0-432-522+560-294+72+246 +sign_ed25519_open 5 74 116721 +4933+952+167+148+1254+299-138-417-93+38-108+0-331-639-318 +sign_ed25519_open 5 93 117366 +6710+2088+373-72+20-46-196+80+366-126-318-156-432+0+94 +sign_ed25519_open 5 117 116428 +4818+675-284+1214+1331+345-108-138-412+0+154+780-218-14-16 +sign_ed25519_open 5 147 117668 +4732+644-96+0+110-364+45-100+32-504+60-292-384+1526-119 +sign_ed25519_open 5 184 117308 +5098+673+304+572-274-266-430-64-110-46-300+74+122+0+248 +sign_ed25519_open 5 231 117542 +5103+875+2338+1138+109+44+73-195-259-439-254+0-166-196-474 +sign_ed25519_open 5 289 118044 +5179+592+282+472-14+0+224-6-224-230-256+128-86+162-154 +sign_ed25519_open 5 362 119202 +4701+787+162-316-146+434-158-248+28+1117-352+933-340-252+0 +sign_ed25519_open 5 453 118286 +5716+681+500-40+474+30-131-137-2+326+360+0-194-100-116 +sign_ed25519_open 5 567 118345 +5404+640+599+86+760+0-207-33+153-217+23-243-323-91-135 +sign_ed25519_open 5 709 119677 +6430+1035+35-169+1581+830-64+0-139+203+348-303-1-187-203 +sign_ed25519_open 5 887 121310 +6619+1978+272+158-108+0-46+420-184-230-144-198-270+218+76 +sign_ed25519_open 5 1109 123118 +5296+468-106+24-78+808-22+20+0+100-444-372-338+148-176 +sign_ed25519_open 5 1387 124523 +5367+1004-3+154-289-294-289+0+108+209-58-402+682-189+437 +sign_ed25519_open 5 1734 125804 +5683+530+2+0-336-255-188-106-238+849+549+422+2402-88-254 +sign_ed25519_open 5 2168 126467 +5429+924+722+0+29-145+151-341-155-238-426-327-241+70+28 +sign_ed25519_open 5 2711 131900 +4841+914+158+348+230-250+0-632-19+885-120-93+131-145-128 +sign_ed25519_open 5 3389 135257 +4977+905+367-358+0+244-845+56+394-31+367-405-227-25-327 +sign_ed25519_open 5 4237 137864 +5547+928+0-386-562-504+416-620+436+30-456-648+500-28+154 +sign_ed25519_open 5 5297 145824 +5464+1450-186-46-154-24+0+80-280-312+836+325+199+140-186 +sign_ed25519_open 5 6622 155144 +5266+730+394-104-810-392+2414+0-54+1146+14-266-514+2716-154 +sign_ed25519_open 5 8278 162745 +5365+891+189-11+58-421-292+325+213-319-132-184-188+0+380 +sign_ed25519_open 5 10348 175457 +5292+1357+151+4-397-885-12-315+1946+290+0+80-439-662-271 +sign_ed25519_open 5 12936 188336 +4916+1416-474-43-340-232+0-640-268+1102+2514+2124-28+718+272 +sign_ed25519_open 5 16171 207711 +5590+662+91+88-58-4-258+534+121-87-89+0-23+982-33 +sign_ed25519_open 5 20214 228550 +5573+1120+0+2391+43+373+64-1399-388-295-419-1474-232-748+191 +sign_ed25519_open 5 25268 258326 +5506+1580+452-50-14+0-240+108-206+562-63-996-173+1947+1696 +sign_ed25519_open 5 31586 294241 +5103+630-62+0+180+397-13-196-297+65-9+469-38-537+81 +sign_ed25519_open 5 39483 339454 +4374+474+8+298-49+1251-421-99-42-188-84+55+249-138+0 +sign_ed25519_open 5 49354 398224 +3462+378+141-101-167-84-744-780+0-132+871+280+459-727+32 +sign_ed25519_open 5 61693 468492 +3161+1239+154-246+98+0-82-124+164-216-612+565+77-130-239 +sign_ed25519 6 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 6 32 29001 +10021+2293+163+200-162-184-93-114-72+0-152+48-94+14+46 +sign_ed25519 6 0 32133 +2058+11+88+265+174+159+177-175-36-39-207+0-186-58-12 +sign_ed25519 6 1 32091 +273+326+0-147+230-145-61-214+241+125-99-85-212+43+45 +sign_ed25519 6 2 32035 +267+195+0+8-23+153+131-21-128-50-47-69+116-115+140 +sign_ed25519 6 3 32019 -12+43+0+427+418-92-88+46-61-3-150+91-31+244+71 +sign_ed25519 6 4 32191 -41+160+12+54-112+0-46+14-54+87-203-236-146+498+130 +sign_ed25519 6 6 32130 -177+148-212-78+117-55+70+227+36+15-60-207+57-12+0 +sign_ed25519 6 8 32174 +0+111+64+123+210-284+17+38-49-4-186-318-17+7-276 +sign_ed25519 6 11 32030 +328+34+168+95+69+36+54-182+0-40+0-48-125-78-140 +sign_ed25519 6 14 32096 +56-268+261+23-6-70-228+0+111+106-85+21-70-65+2 +sign_ed25519 6 18 32126 +137+0+251-357+112-16+97+44-83-58-251-65+128-22+5 +sign_ed25519 6 23 31996 +0+185+57-83+98-56+222+82-98-60+100+55-11-1-97 +sign_ed25519 6 29 32125 +133-145+196-36+35-257+82-10-168+0+54+60-210-293+13 +sign_ed25519 6 37 32082 +72+385+109+125+99-187-113+58-323-66-15+9+0-87-108 +sign_ed25519 6 47 32128 -39-34+0+39+10-71-281+966+121+219-173+24-309-299+14 +sign_ed25519 6 59 32838 -112-10+156+0-91+0+179-140-55+68+155+87-107+20-63 +sign_ed25519 6 74 32819 +353-121+75-93+34+146+111+0-287-109+71+121-56-104-258 +sign_ed25519 6 93 33563 -133+271-1+1-32-195-107-61+22+25-46+191+0+29+126 +sign_ed25519 6 117 33624 +256+18+79-250-159-249+235+28-201-42-61+307+0-210+103 +sign_ed25519 6 147 33706 -91+137+0-115+0+52-82+5+49-233-317-12+167-304+218 +sign_ed25519 6 184 34261 +271+510-83+46-62+304+0+28+377+89-245-9-135-78-111 +sign_ed25519 6 231 35129 +43-33-129+26+36+73+12-48-61+0+20-86+56-8-169 +sign_ed25519 6 289 35145 +128+0+13-94-205-74+68+259-220-117+984+567-104+72-83 +sign_ed25519 6 362 36559 +245+13+111-63+3-43+348-299-177-177+280-145-160+0+169 +sign_ed25519 6 453 37278 +24-313+27+162+0+170-151+167+172-79-106-74-101-53+40 +sign_ed25519 6 567 38633 +63+376-12+244-12+19-62-165+53-28+174+149+0-134-59 +sign_ed25519 6 709 40123 +47+74-79-121+143-79+148-77+0-180+352-117+56-149+153 +sign_ed25519 6 887 42318 +224-219-182-88+0-45+144-174+269-21+7-145+62+28+28 +sign_ed25519 6 1109 45118 +205-70+205+136+91+29-100-240+329-124-128-43+215-175+0 +sign_ed25519 6 1387 47950 +71+122+310-185-76-245+695-73+307-40+114+0-129-178+231 +sign_ed25519 6 1734 51482 +0+90+232-30-80+186-16+22+104-89+21-98-278+304-17 +sign_ed25519 6 2168 56586 +191+187-50+127-42+55-115-106-147+62+0+272+84-45-137 +sign_ed25519 6 2711 62258 +232+343+21-83+125+0-112+120-197-2+162-281-197+159-273 +sign_ed25519 6 3389 70134 +450-48+88-220-155+4+12+108-123+278+164-64-20+0-37 +sign_ed25519 6 4237 79427 +252+364+0-86-153+105+39+213-109-206+31-122+38-243-122 +sign_ed25519 6 5297 91534 +472+128+0+93+171+126-102-21-134-84+103-130+70+0-41 +sign_ed25519 6 6622 106489 +612+172+397-126-243+193+32-97+0+78-90-95-123+394-36 +sign_ed25519 6 8278 125134 +332+33-110+0-119+20-86-197+8-174+711+2-187-343+272 +sign_ed25519 6 10348 147875 +598-201+221+68-19+0-201+142+41-151+179-44+162-10-30 +sign_ed25519 6 12936 176450 +83+151+60+137-418+6-387-31-124-168-80+0+143+231-76 +sign_ed25519 6 16171 212224 +175+62+1954+223+162+641-295+213-195-95-265-300-394-195+0 +sign_ed25519 6 20214 257850 +58+0-87-217+203-57+263+533+2442+469+271-73-575-92-408 +sign_ed25519 6 25268 314330 +1329-71+562-207-203-382+240+0+2207+138-376+34+140-331-483 +sign_ed25519 6 31586 385359 +522+103+5295+176-4-152+519-68+0-156+236-563-433-493+538 +sign_ed25519 6 39483 473562 +11478+235-312-26-217+0+249+105-442-398+3910-447+4-222+689 +sign_ed25519 6 49354 583863 +22576+0-305-356-157+152+261+3662-212-39-476+562+227+85-126 +sign_ed25519 6 61693 721660 +9393+819-217-267+490+489+225-208-263-171+2790+509-127-20+0 +sign_ed25519_open 6 0 114252 +7489+1125+134+242-370-66+1291+420-228+104-332+0-328-70-10 +sign_ed25519_open 6 1 115108 +5259+1506+52-88+278-214-122-60-58-394+0-174+196+116+326 +sign_ed25519_open 6 2 115798 +5129+516+0-214-72+404-272-100+160+164-178+20-286+320-230 +sign_ed25519_open 6 3 116136 +4964+561+54-634-150+0+124-86+218+154+96-16-20-110-178 +sign_ed25519_open 6 4 115703 +5696+515-2-110-354-32+102-116+147+329-46+116-158+0+285 +sign_ed25519_open 6 6 114102 +5227+721-212-8-68+195-316+298+904+264-158-190-42+114+0 +sign_ed25519_open 6 8 115393 +5117+411+298-11+7+695-168-31-106-141+0-131+229+503-396 +sign_ed25519_open 6 11 115990 +5237+1330-252-336+84-38+8+292-32+26-70+0-338-254+80 +sign_ed25519_open 6 14 115342 +5565+347-478+600-153-176+135+232-142-18+0-32-222+540+74 +sign_ed25519_open 6 18 115830 +5055+890+600+50+634+479-55-433+211-41-323-123-177+0-74 +sign_ed25519_open 6 23 115635 +4673+480+28+0+5+335-27+665-423-261+59-332-492-119-227 +sign_ed25519_open 6 29 116766 +4840+803+196+184-226-82-384-252-118+45-389+154+0-310+87 +sign_ed25519_open 6 37 117066 +4777+1142-170-89+303-40+327-139-304+0+239-396-271+58+468 +sign_ed25519_open 6 47 115068 +4946+1413+644-294-394+472-386-472+130+72+212-196-448+0-462 +sign_ed25519_open 6 59 115746 +5048+1258-258+0+22+184-278-96+34-32-202-234+262-408+530 +sign_ed25519_open 6 74 117354 +4914+398+12+24-491-315-282+495+296+74-414-168-290+0-246 +sign_ed25519_open 6 93 115890 +5405+292+457+142+0-220+296-192+140-122+190-404-128-134-326 +sign_ed25519_open 6 117 115984 +5798+890+419-546+0-164-145-293+421-108-227+32+82+57-52 +sign_ed25519_open 6 147 116578 +5074+472-36-549-476-10+632+122+40+0-718+682-18+212-90 +sign_ed25519_open 6 184 116496 +5798+713+628+329-102-290-171-229+129+153-232+0-79-372+223 +sign_ed25519_open 6 231 115942 +5799+688-243+140-450-49+145+689+155-245-678+79-97-98+0 +sign_ed25519_open 6 289 116632 +6279+951-76+0-200+1628+1703+936+30-590-496-140-210-716+664 +sign_ed25519_open 6 362 116252 +5790+1250+164-49+64+0+290-78-118-153-11+104-29-67+1068 +sign_ed25519_open 6 453 117098 +8380+1486+440+0+244+92+118-22+174-298-196-72-48-86-148 +sign_ed25519_open 6 567 116924 +6593+1912+892+638-170-38+192+228-288-64-40-170-54+670+0 +sign_ed25519_open 6 709 117975 +5907+943+248+114+1210-1-194+0-18-40-219-234+154-269+133 +sign_ed25519_open 6 887 119734 +5879+408-252-742-118-124-30-206+0+20+137-177+144+140+20 +sign_ed25519_open 6 1109 120707 +5136+240-108+393+51-138+143-483-379-209-135+1198+2519+0-143 +sign_ed25519_open 6 1387 122193 +6312+1544+749+159+435-117-447-181-187+25-393+945+0-19-79 +sign_ed25519_open 6 1734 124490 +5680+1554+210-240-82-34+2416-139+284+254-66-134+158+0-328 +sign_ed25519_open 6 2168 126220 +5897+1447+625+357+678+20-296+0-40-40+10-108-34-198-422 +sign_ed25519_open 6 2711 130066 +6093+1165+227-80-15+0+48-115+15-286-144-132+18-286+64 +sign_ed25519_open 6 3389 134337 +5755+2158+2606+389+0-284-439-515-119+541-340+35-345+305-283 +sign_ed25519_open 6 4237 138159 +5974+1743+43+433+32+0-387-300+1374+374-352-176-331-358-467 +sign_ed25519_open 6 5297 145769 +6865+1184+0-249+27-477-49+91-121+179+1-199-281-187+203 +sign_ed25519_open 6 6622 153244 +5508+844+202-294-306-508-114+28+108-42+0-434+128-394+838 +sign_ed25519_open 6 8278 164248 +4486-142-526+390+56+32+0-322-22+110-210-288+32-74+1302 +sign_ed25519_open 6 10348 174772 +4879+531+0+151-345+82+775-196-102-251-310-254+118+71-206 +sign_ed25519_open 6 12936 187750 +5858+646+158-406+102+0-188-52+44-6+1170-15-88-78+840 +sign_ed25519_open 6 16171 207235 +5846+188+2878+413-754+591+0-229-229-19-91+20-198-341+9 +sign_ed25519_open 6 20214 228999 +5400+672+366+81-110-130+51-76+143-100-208+0+209-47-123 +sign_ed25519_open 6 25268 256619 +9611+1423+0+795-46+44+3+233-293-345-66-104-317-127+519 +sign_ed25519_open 6 31586 292232 +6005+974+753+73-129+178+86-735-353-469-396-810-568+0+480 +sign_ed25519_open 6 39483 338085 +5848+1769-163+32-403-543-268-131+4356+700+0+236+257-120-90 +sign_ed25519_open 6 49354 395588 +4247+1805+215-389-413+280+436+0-303-52-312-247+628+586-151 +sign_ed25519_open 6 61693 464438 +4543+545+405+769-63-43-156-790+39-206+0-82+234+700-186 +sign_ed25519 7 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 7 32 28906 +4807+30-149+177+214+22-88+0-1-96-17+157-39-52+125 +sign_ed25519 7 0 32094 +1589+336+1-216+220+20-26-148-31-120-130+0-29+76+122 +sign_ed25519 7 1 32073 +254+189+111+368-57+0+76-132-26-4+125-57-16+242-81 +sign_ed25519 7 2 32153 +77+160+123-151+286-243-84+80+0-188-20+125+15-39-39 +sign_ed25519 7 3 32103 -9+0+62-146+38+167-46-135+108-26+54-78+191-181+190 +sign_ed25519 7 4 32046 +0+279-52+152+67-2-36+24+194+82+364-133-15-119-17 +sign_ed25519 7 6 32104 +22+16-178+56+273-93-221-126+0-213-78-194+257+34+22 +sign_ed25519 7 8 32073 +1-39+51-359+0+72+63+978+109-206+154-320-347-252-155 +sign_ed25519 7 11 32179 -225+253+0+454-45+20+861+115+160-198-177-130-255+14-200 +sign_ed25519 7 14 32054 +323+260+227-13+106-172-101-38-87+89-79+150+0-12+28 +sign_ed25519 7 18 32115 -67+24+0-76+155-126+154+233-195-63-263+169+72+15-28 +sign_ed25519 7 23 32189 +155+0-31+83+33+79-98-76-131+44-305-94-197+17+184 +sign_ed25519 7 29 32036 -41+470+143-78+28+33-141-173-83+93+119-73+75-60+0 +sign_ed25519 7 37 32108 +184+0+134-125+47+117+20+92-135-87+24-126-106-156-135 +sign_ed25519 7 47 32021 -56-33+208+3+123+136-50-44+0-27+231-31-154+5+47 +sign_ed25519 7 59 32779 +335-82-168+120-18+104+0+158+4-216-32+191+284-16-73 +sign_ed25519 7 74 32953 +557+347-191-353+36+492-171+0+100+210-70-124+66-48-306 +sign_ed25519 7 93 33576 -44+27+0-132-96-100-5+32-290+3+164-141+99+255+161 +sign_ed25519 7 117 33553 -2+19-8-18+302+5+63-145+0-105-29+12+51-3+10 +sign_ed25519 7 147 33470 +404+334+107-105-113-39-118+25+116-31-111-59+43+67+0 +sign_ed25519 7 184 34367 -120+10+8+0-251+141+64-76+230-135-284+205-29+108-240 +sign_ed25519 7 231 34992 +121-236+137-6+213+274-47+206-3-201+0-38-125+25+215 +sign_ed25519 7 289 35001 +414+46+300-38+120-88+63-10+115-129-155+0-251+133-7 +sign_ed25519 7 362 36563 +247+84+0-309+74+46-275-156+37+537+71-65-173-33-358 +sign_ed25519 7 453 37264 +402-133+236+11-383+0+102+142-84+18-7+28-384-62-292 +sign_ed25519 7 567 38737 +170+1+57-133+126+70+261-286-102-137-73+58-113-159+0 +sign_ed25519 7 709 40099 +45-106+179-197+23+57+76-84-86+0-62-79-143+2545+144 +sign_ed25519 7 887 42098 +565+174+301+293-29+170-29-193+101-156-168-66+0+42-65 +sign_ed25519 7 1109 45007 +132+161+0-15+188-96+39-28+4+37+43-101-33-18-66 +sign_ed25519 7 1387 47905 +415+224+81-8+10-78-194-50+182+87-114+0-226+100-238 +sign_ed25519 7 1734 51548 +316+12+0-56+113+260+866+135-160-304-229-136-437-120+29 +sign_ed25519 7 2168 56421 +327-17+77+118+89+202+0-75-33-138-44-96+61-119+130 +sign_ed25519 7 2711 62133 +457+0+56+127+128-243-271+134+74+35-26-45-19-86-53 +sign_ed25519 7 3389 69993 +350+99+142+55-38+143+11+148-162-138-93-96+0-139-149 +sign_ed25519 7 4237 79296 +330+148-4+39+0+8-103-13-145-43+1059+740+1475-67-70 +sign_ed25519 7 5297 91525 +193-41+33-43-296+60-201+480-211+215+0+176+513-119-6 +sign_ed25519 7 6622 106544 +164+18+0-62+1713-13+0+174+199-287-150+25-137-161+65 +sign_ed25519 7 8278 125058 +187-69-16+224+494-383-71+43-9+102-3+147-266+86+0 +sign_ed25519 7 10348 147803 +700+231+939+0+63+65+74-1-63-361-20-93-170-293+19 +sign_ed25519 7 12936 176478 +538+1805-67-144-208+116+51-2+17-234-549+0+65-121+1217 +sign_ed25519 7 16171 212024 +259+0-37+45+63-171-171-160+640-18+195+389-172-227+2 +sign_ed25519 7 20214 257804 +0-379+17-143+115-437-306-195+242-289+869+1690+273+17-104 +sign_ed25519 7 25268 314348 +566+703-388-293+1610+497+273-275+470-241-195+0-195-319+55 +sign_ed25519 7 31586 385379 +408-72+42-128+2592+1494-168-30-309+281+0+1051+333-177-613 +sign_ed25519 7 39483 473599 +16896-550-59+49-298-119+183+0+711+2260-503+459+123-212-354 +sign_ed25519 7 49354 583696 +17239+145+263-482+0+201-138+352+446-610+63-441-61-288-296 +sign_ed25519 7 61693 721906 +7791+137+0+91-159+198-364-201-181-671+230+694-308-170+105 +sign_ed25519_open 7 0 115464 +8019+2048+199+203+0-415+0-138+411-275-67+871-556+898-109 +sign_ed25519_open 7 1 115024 +5515+1612+418+290-150-345-70-252+208+59-191-276+0-286+2823 +sign_ed25519_open 7 2 116724 +5874+1944+355+392-115+657+394-188-69-138+0-43+27-232-901 +sign_ed25519_open 7 3 116022 +5779+1030+388-30+0+831+296-284-11+416-106-60+168-54-488 +sign_ed25519_open 7 4 117009 +5007+516+139-47-274-71-310-282-236-347+1+0+207+222+97 +sign_ed25519_open 7 6 115492 +5368+918+405-210-424-260-264+72-317-350-395+0+240+987+1505 +sign_ed25519_open 7 8 116517 +5215+1171+172+523+491-138+0-211-190-35+146+51-2-242-93 +sign_ed25519_open 7 11 116696 +6104+579+396+248+18-178-282-84-554+116+0+30-338-132-134 +sign_ed25519_open 7 14 115988 +4820+0+834-203+698-210-128+787-28-138+138-342-50+158+220 +sign_ed25519_open 7 18 115958 +6255+831+278+310-278-2-112+102-40+202+0+4-116-32-306 +sign_ed25519_open 7 23 114611 +5719+554+170+0-27-45-131-323-90-10+35-148+782+505+238 +sign_ed25519_open 7 29 115441 +5786+588+133+105+0+165-143+123-233+199-137-65-531-219-101 +sign_ed25519_open 7 37 116149 +4706+1138-433+254-95+140+52-100-105+713+36+0-77-141-344 +sign_ed25519_open 7 47 116992 +4849+424+7-545+665-189+40+0-146-556-382-273+1132+103-140 +sign_ed25519_open 7 59 116016 +4872+973+628+512+116+38-50+0-350-210-2-44-310+152-170 +sign_ed25519_open 7 74 116836 +5311+1163-299-173-310+176+0-151-80-212-42+100+853+129+172 +sign_ed25519_open 7 93 117080 +5507+819+368-114-48-4+0+68+184-224-376+76-238-236+162 +sign_ed25519_open 7 117 116351 +5248+725-55+548-180-58+150+250+24-49+164-58+0-66-103 +sign_ed25519_open 7 147 116624 +5097+1048+416+878-87+2812+0+870+217-866-516-746-666-438-478 +sign_ed25519_open 7 184 116706 +5059+892+115+0-277-81-42+228+46-478+289-407+92-170-153 +sign_ed25519_open 7 231 115746 +5659+1192+289+102+70-368-477-302+0-373-263+1100-264+66-30 +sign_ed25519_open 7 289 117432 +5725+970+720+55+208-746-316+0+104+130-54-18-54-8-190 +sign_ed25519_open 7 362 118618 +5193+600-475-115+2364+595+213-452+59-196+150-152-82-268+0 +sign_ed25519_open 7 453 119008 +5953+2189+298+454+2+250-492-24-238-18+14-14-284+0-192 +sign_ed25519_open 7 567 120060 +5478+1462+254-98+612+0+6-182-292+188+30-304-332-160-402 +sign_ed25519_open 7 709 120662 +5133+1566-320+287-167-188-180-530+1322+2370+62-12+0+14-100 +sign_ed25519_open 7 887 120248 +5887+1485+322+27-80-26-72+0+112-410+64+156+0-158-12 +sign_ed25519_open 7 1109 120910 +5465+997+68+44-34-234+308+0+92-562-40-100-422-162+960 +sign_ed25519_open 7 1387 123414 +5297+1115-30+138+200-166-102-96+1172+168-150-356+926+0-34 +sign_ed25519_open 7 1734 125310 +5242+703+1400+832+0+38+350-225+396-307-423-198-236-630-286 +sign_ed25519_open 7 2168 128512 +6038+2300+327-98-210+500+0-38+182-144-490-250-212+0+26 +sign_ed25519_open 7 2711 131304 +4840+1122-291+204-364+46-298+0-338+254+82-212-72-136+98 +sign_ed25519_open 7 3389 135588 +5369+364-502+587+1192-184+172+0-30-136+2-320+698-376-80 +sign_ed25519_open 7 4237 140130 +4870+306-676-586+1337+319+0-610-456+362-140+90-443+9-306 +sign_ed25519_open 7 5297 146809 +5484+1141+1057-37+117+202+93+332-251-289-79+0-176-51-229 +sign_ed25519_open 7 6622 153046 +5204+1208-174+0-596-306+112-414+30+120-146-84+126+108-150 +sign_ed25519_open 7 8278 164380 +6112+781-124-259-249+263+212-18+462+0-246+889-60+104-38 +sign_ed25519_open 7 10348 173451 +5285+401-5-41-263-308-274+277+812+187+72-297-105+42+0 +sign_ed25519_open 7 12936 186792 +5665+536+100+58+118-298+430-122-28-110-328-156+0+22-208 +sign_ed25519_open 7 16171 206446 +11971+7730-104-201-402-328+570-302-376+6+0+254+394-10+260 +sign_ed25519_open 7 20214 229120 +6291+1443+205+222-162+83-207-371+428-161-39+0+85-496-134 +sign_ed25519_open 7 25268 258541 +5222+3727-176-78+252-446-690-239+136-424-411+0+846+79+297 +sign_ed25519_open 7 31586 293927 +5198+1236+988+993-190-587-80-559-668+339+132-190+79+0-86 +sign_ed25519_open 7 39483 340304 +4012+2511+0+551-278+516-398-164+229+1411+323-187-125-50-342 +sign_ed25519_open 7 49354 397310 +4705+508+1891-223-5-450-472-123+773+0-122+174+336-309+1080 +sign_ed25519_open 7 61693 466901 +3536+1487+187-948+451-821+161+77+565-254-1251-912-700-1137+0 +sign_ed25519 8 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 8 32 29003 +5800+601+182-32+144+40-74-90-59-110+281-52+49-266+0 +sign_ed25519 8 0 32101 +1693+91+115+61+0-136+275+49-228+119-302-228-115-64-101 +sign_ed25519 8 1 32141 +55+0-18+130+121-427-71+285-105-78-171+87+25-47+27 +sign_ed25519 8 2 32079 +38+11-158-68-170+210+0+202-95-171+116-129+134+197-24 +sign_ed25519 8 3 32081 +61-56-46-187+103+68+103+181+0-117+61-179-57+215-132 +sign_ed25519 8 4 31978 -34-118+207+109+211-101+66+55-229-282-5+140+0-24+16 +sign_ed25519 8 6 32062 -2+78+228+51-252-43-181-33+105-153+215+0+295+106-22 +sign_ed25519 8 8 32142 -171-17+254+19+102-37+39+183-206-128+0+67-82-78+1056 +sign_ed25519 8 11 32131 -37+75+93+11-174+795+0-60-60-202+239+84+826-192-185 +sign_ed25519 8 14 32040 +175+61+34+39-84-111+47-38-84+0+50-52+252-131-107 +sign_ed25519 8 18 32028 +252+0-77+12-88-81-21+2637+100+12-115-125-44+10+160 +sign_ed25519 8 23 31970 +138-89+173-87-21-16+0+72+55+105-104+144-47+13-7 +sign_ed25519 8 29 32131 +11+228-153+216+186-97+235+0+75-329-89+26-194-23-251 +sign_ed25519 8 37 32052 +132-26-110-68+84+27-27+118+0+61-18+6+7-31-196 +sign_ed25519 8 47 32106 +75-226-20-104+80-15-264+0+21+183+117+286-257+119-94 +sign_ed25519 8 59 32732 +149+113+194+148+302-93-67+0+73-182-100-192-78-96+230 +sign_ed25519 8 74 32815 +84+9-184+328+77-80+0+145-2+164-74-106-23+652-232 +sign_ed25519 8 93 33529 -110+1+187+33+0+164+407+165-130-20+78-43-110-88-38 +sign_ed25519 8 117 33687 +66-328+66+0+93-127-337-188+140+212-129-202+28+243-132 +sign_ed25519 8 147 33680 +16+67-40-18-95+80+10+153-61+0-17-157+9+84-43 +sign_ed25519 8 184 34381 -147+35+181-7-161+138+38+0-229+135+114-41-69+102-88 +sign_ed25519 8 231 35068 +79+0-11+143-12-249+39+140-74+181+25-114-57-80+212 +sign_ed25519 8 289 35160 -129+152-111+678-163+152+23-312+215-284-185+0+258+95-76 +sign_ed25519 8 362 36543 +96+104+83+0+169-252+34-184+100-87-203+13-124-66-55 +sign_ed25519 8 453 37255 -74+63-224-158+7-172+0-59+145-269-36+21+1063+233+321 +sign_ed25519 8 567 38724 +83-20+183+142-234-117-101-46-171+67+0-169+62+1548+172 +sign_ed25519 8 709 40202 +91-103-88+188+118-242-117-227+0+29-105+451-130+163+13 +sign_ed25519 8 887 42238 +298-124-64+83-83+167-13+398-203-10+67+188+0-7+21 +sign_ed25519 8 1109 45130 +92+210+0+229+23-175-188-111-233-256+62-207+74-283+147 +sign_ed25519 8 1387 48019 +162+193+56+59-37-313-55-436-80+40+167-78+0-190+152 +sign_ed25519 8 1734 51521 +266+300-15-149+0+163-126+222+173-8-301-94-139+44+799 +sign_ed25519 8 2168 56565 +360+303-7+349+11-38+58-107-113+72-62+202-325+0-31 +sign_ed25519 8 2711 62213 -37-143+159+35+0+32+97-118-212+113+186+179-46-31-254 +sign_ed25519 8 3389 70088 +365+371+448+174+63-125+0-136-41+408-49-157-201-12+115 +sign_ed25519 8 4237 79442 +197+80-58+70+75+0-176-46-88+149-249+108+74-29-94 +sign_ed25519 8 5297 91651 +1725+109+89+617-82-8+150+0-44-171+135-188+37-249-211 +sign_ed25519 8 6622 106735 +389+313+28+64-230-56+0+179-134+60-70-49+10-80-178 +sign_ed25519 8 8278 125062 +0+95+22+113-100-57-100+715-147+121-57-71-274+199+598 +sign_ed25519 8 10348 147913 +404+83+208-101+376-134-83-401-16+131+0+1954+661-189-16 +sign_ed25519 8 12936 176523 -154-189-77+0+420+100-124-34+143+23+45-176+52-121+143 +sign_ed25519 8 16171 212223 -66-34+19+43+0-334+235-50-262-196+434+2437+46+100-548 +sign_ed25519 8 20214 257787 +518+398-27-57+0+125-9-275+112+258-215-133+662-6+27 +sign_ed25519 8 25268 314444 +599-190+295+1677+0-178-221+183-116+102+82+341-56-218-254 +sign_ed25519 8 31586 385407 +462+0+154+52-348+85+545-190-129-181-230+67+1337-32-425 +sign_ed25519 8 39483 473692 +21240+114+34-515-526-328+0-520-181+861+2094+80-155-119+281 +sign_ed25519 8 49354 583839 +14444+706+20-429+210-529-172-430-466+371-62+2+0-221+122 +sign_ed25519 8 61693 721889 +15904-77-41-373+369+104+232-129+92+521-845-406+93-671+0 +sign_ed25519_open 8 0 116717 +6516+2046+523+552-157+465+151-284-163+0+55-108-28-132-253 +sign_ed25519_open 8 1 116364 +5183+1391+78-172+672-226-240+280-124-366+76-570-206+0+16 +sign_ed25519_open 8 2 115034 +5942+110+250-374+24+506-172-340-134-332-305-109+0+74+81 +sign_ed25519_open 8 3 116688 +5677+1565+378-182+526-421-177+0+15+782-49+306-326-126-174 +sign_ed25519_open 8 4 113076 +5344+576-280+49+121+263-86-81+0-262-137+148-388-25+457 +sign_ed25519_open 8 6 116803 +5734+1631+599+112+15-7-33-310-338-350+319+81-689+0-138 +sign_ed25519_open 8 8 115938 +4701+1093+1457+87+100+0-116-16+704-90-561-113-145+134-70 +sign_ed25519_open 8 11 115802 +4958+1273+530+174+132-152-72-222+136-2-210+0+604-326-122 +sign_ed25519_open 8 14 115363 +4614+743+221+257-489-307-667-515+93-521+399+0-207-281+69 +sign_ed25519_open 8 18 115442 +4932+1067+88+0-170-222-314-110+150+720-272+132-252+74-80 +sign_ed25519_open 8 23 116309 +5287+1289+7+0+194-130-413-267-228+20+240-453-652-12+148 +sign_ed25519_open 8 29 117410 +5165+923+263-170-62+162+422+66-196-644-384-602+0+86-310 +sign_ed25519_open 8 37 115774 +5243+201-95+1758+457+252-430+360+0-440-278-8+113-292-6 +sign_ed25519_open 8 47 115537 +6093+753+35+75+206-315+0-94-560-41+666-26+21-253-453 +sign_ed25519_open 8 59 115344 +5558+688-128-178-382+218+226+160-366+24-274-400+8+0-506 +sign_ed25519_open 8 74 116878 +6324+836-137-85+0+46+142-432+126+64-10-598+132-436-302 +sign_ed25519_open 8 93 116216 +5189+1214+233+2715+261-156+0-346+281-334-438-606-239-301+263 +sign_ed25519_open 8 117 115218 +5630+782+88-84-160+396-86-142-156+14+258-680+0-666+66 +sign_ed25519_open 8 147 116958 +5134+1-70-538+0-628-394+734-174+818+48+531-326-370+182 +sign_ed25519_open 8 184 116964 +5906+622-40+2689+516-45-286-58+0+30+306-170-274-210+140 +sign_ed25519_open 8 231 117238 +5599+465+170-346+36-610-74+308+190-2-194-130+298+0-17 +sign_ed25519_open 8 289 117288 +5930+918-78-296+144-18+0-10-304+30-100+370+186-140+388 +sign_ed25519_open 8 362 117938 +5885+881+0-232-170+130-48-66-209+307-158+1126+347-204+184 +sign_ed25519_open 8 453 120365 +5174+598+111-93-506+30+0+1145-132-291-261+648-83-300+1221 +sign_ed25519_open 8 567 119514 +5282+1237+0-246-202+64+204+552-140-430+318-392+152-122-100 +sign_ed25519_open 8 709 119760 +5233+504+100-238+218+0+342-174-98-6-198+120-50+619-132 +sign_ed25519_open 8 887 120016 +5710+796+0+20+270-32+390-204-82+164-60-82-298-164+322 +sign_ed25519_open 8 1109 121770 +5754+1119+440+471-132+0-89-136+509-356-11+506+214-17-350 +sign_ed25519_open 8 1387 124533 +5046+1098+257+1226+1913-173+333+0-533-129-219+49-221-401-283 +sign_ed25519_open 8 1734 123742 +6299+617-128+150+224-8+10-160-194-126+378-4-76+0+170 +sign_ed25519_open 8 2168 128302 +6265+764+12+96-204+33+913+42-44-116+0-346-192-12-88 +sign_ed25519_open 8 2711 130450 +5494+850+236-8-54+286-270-20+0+124+88-44-46-50+306 +sign_ed25519_open 8 3389 136015 +5875+776-61+4-303+177-360-776+627+356+0-456+40-62-148 +sign_ed25519_open 8 4237 138756 +6071+973+0+165+104-302-108+711+32-267-284+50-126-219-234 +sign_ed25519_open 8 5297 145763 +6132+1063+0-185-182-64+1483+1206+215-35+153-259-251+117-235 +sign_ed25519_open 8 6622 152077 +6286+1429+21-103+243-173-137-87+131-439-193-124+0+456+190 +sign_ed25519_open 8 8278 162806 +6397+1645+337+1341+2584-117+0+80-470-294-334+257-89-170-343 +sign_ed25519_open 8 10348 173761 +5619+649+281+117-73-533+55-31-67-221-23+155+1063-59+0 +sign_ed25519_open 8 12936 186877 +4900+758+223+156+348-31-516-503-515-243+0+28-135-302+12 +sign_ed25519_open 8 16171 204164 +7467+1451+527+151-56+79-346-100-48+0+288-355+267-683-137 +sign_ed25519_open 8 20214 228296 +6868+59-232-246+3877+490+345-395-128-142+506-298+0-26+284 +sign_ed25519_open 8 25268 255638 +5399+258-697-689+681+110+0-310-396-172-874+16+1133-383+587 +sign_ed25519_open 8 31586 293636 +5208+75+1010-309+0+144-188-230+70-469-3+47+151-842-138 +sign_ed25519_open 8 39483 338740 +6291+503-74+64-148+0+370+2296-102+92-160-435+1019-203-26 +sign_ed25519_open 8 49354 397075 +3528+447-418-232+1585+926+99+111-40-309-496+1264-557+0-378 +sign_ed25519_open 8 61693 466749 +4116+331-482-428+594-502+1479-503+2655+0+412-413-409+29-82 +sign_ed25519 9 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 9 32 28912 +3602+313+196-45-57+167+146-6+115-2-44+0-55-27+57 +sign_ed25519 9 0 32219 +980-65-140-120+1155+148+36-263+531+1239+136+0-115-323-235 +sign_ed25519 9 1 32140 +433+227+90-216+137-169+5-60+67+49-97+0-230-281-211 +sign_ed25519 9 2 32039 -42+36+165-18+96-12+20-24-19+58+0-40+77+214-109 +sign_ed25519 9 3 32154 +265+20-376+4+245-27+0+114-9+67-122-362-156-108+382 +sign_ed25519 9 4 32151 +204+47-315-52-74+99-29+20-73-74+16+0+153-127+121 +sign_ed25519 9 6 32066 +84-99-64+129+232-124+0-15+186-99-3-90+39+15+69 +sign_ed25519 9 8 32111 +145-236-79+117-229+67+98+321+0-154-35-66+2-42+1066 +sign_ed25519 9 11 32117 +62-163+73-146-181-82-73-223+41+165+751-358+143+102+0 +sign_ed25519 9 14 32115 +60+0+56-113-93+95+240-179-212-158-95+179+1431+80-2 +sign_ed25519 9 18 32056 +205+0-11-219+82+2649+314-84+285+171-97-187-107-13+296 +sign_ed25519 9 23 32034 -115+223+0+58+60-56-17+19-32+25-50+267-29-169+37 +sign_ed25519 9 29 32042 +114-229+103-250+98-159+116-137+509+0+170+22-250-33-66 +sign_ed25519 9 37 31890 +412+177-142+0+202+247+59-59+126+122-228-134-91-81-110 +sign_ed25519 9 47 32021 +188-115+30-69+87+0-163-161+88-40-344+56+244-216+130 +sign_ed25519 9 59 32825 -102-25+94-72+146-153-45+171+99+69+212+94-53-25+0 +sign_ed25519 9 74 32850 +27+253-41-110+230-9-150+312-35-165-67+45+0+205+40 +sign_ed25519 9 93 33595 -21-54+31+69+144+81-33+25+310+16-162-161+0-26-180 +sign_ed25519 9 117 33753 +12-181-103+640+377+117-135+170+87-241-242+0-138-56+109 +sign_ed25519 9 147 33705 +263+338-216-109+2+14-149+8-11-124+33-425-119+0+298 +sign_ed25519 9 184 34324 +171-49+232+145-33-104-93+92-101+0+4+33+117-61-132 +sign_ed25519 9 231 35081 +0+269+4+178-47+231-304+59+42+9-208-51-167-32-339 +sign_ed25519 9 289 35067 +10+785+97-314+2+121-134-169-59-110-91+51-120+0+87 +sign_ed25519 9 362 36507 +131-98+270+0+109-186-158+194-275+42+3-121+38-127-206 +sign_ed25519 9 453 37031 +300+134+179-40-64-132+121-104-11-8+320+170-63+0+347 +sign_ed25519 9 567 38587 +266-208+18-26+40-168+15-203-183+40-137+0-146+1638+913 +sign_ed25519 9 709 40010 +808+12+0-321+130-94+82+222-92+23-10-21-22+191-92 +sign_ed25519 9 887 42273 +195+167+0+92+196-196-14+89-75+171-68-12+4-41-157 +sign_ed25519 9 1109 45165 +327-276+290-52-349-304+0+19-12+214+118+119+156-306-312 +sign_ed25519 9 1387 47815 +215+312-45+345-68+0-25+223-63+77-9+218-106+10-32 +sign_ed25519 9 1734 51445 +110+180-1+234-84+51+78-153-324-29+0+81+56-362-42 +sign_ed25519 9 2168 56494 +31-16+53-65-366+0-68-334-14+96+766+62+117-150+40 +sign_ed25519 9 2711 62153 +379+49+17+199-91-371-102+75-267-123-46+0-194+6+92 +sign_ed25519 9 3389 70009 +442+48+22-172+43-286+0+125+131+119-219-38-112-166-160 +sign_ed25519 9 4237 79306 +203+242-272+134+13-117-26-40-58+119+27-26-129+40+0 +sign_ed25519 9 5297 91509 +298+264+224+696-254+0+442+78-171-117-183-359-110-60+223 +sign_ed25519 9 6622 106523 +403+181+127-205-115+68-13-187-75-61+202+0+83-75+272 +sign_ed25519 9 8278 124929 +156+129+13-147+208+34-283-73+199-25+0-14-357-23+1012 +sign_ed25519 9 10348 147808 +259+61+131-141-142-2+0+256-86-260-137+169+235+37-181 +sign_ed25519 9 12936 176311 +195+342+190+211+323+0-230-151-156+126-187-91-67-105+97 +sign_ed25519 9 16171 211886 +417+250-77+151+210+0-72+4-138-5-196-66+26-10+770 +sign_ed25519 9 20214 257663 -184-228+0-230+202-242+1-208+7-24+363-77+166+15+36 +sign_ed25519 9 25268 314205 +121-376+308-376+70-183-401-23+0-513+47+295+606-59+0 +sign_ed25519 9 31586 385242 +1182-198-214-303-179+0+185+534+44-74-146-204+258+485+256 +sign_ed25519 9 39483 473490 +9360+1335+182+0-39-120-298+45-733-497-513+659-480+175+99 +sign_ed25519 9 49354 583490 +8955+65+500-442-1+64-84+319+0-272+797-255-10+523-289 +sign_ed25519 9 61693 721751 +9434+184-497+58-78+380-381+698-344+183-1092-33+0+924-115 +sign_ed25519_open 9 0 116130 +7080+3841+950+129-285-78+0-172-76+126+536-26+88-86-297 +sign_ed25519_open 9 1 115578 +5244+534+114+0-48+446+26-284-390-164-14+698-53+400-224 +sign_ed25519_open 9 2 116464 +5278+1218+244+260-579-273-153+249+0+253-160-431-218+278-352 +sign_ed25519_open 9 3 115083 +5971+601+187+165-177-281+399-242-113+164+0-199-312+139-90 +sign_ed25519_open 9 4 115226 +5289+546-254+1087+155+206-72+212-512+0-332+342-302-172-66 +sign_ed25519_open 9 6 115303 +5975+1245+443-61-163+213+77-4+0-183-64+118-84+32-233 +sign_ed25519_open 9 8 114266 +5395+1303+530-260-278-206+0-206-486-424+116+814-381+63+61 +sign_ed25519_open 9 11 113432 +5399+783+120+30+0+65-175+24-235-148-189-287-383+114-214 +sign_ed25519_open 9 14 114835 +5037+1387-33-203+0-120-209+34+151-206+312-111+70-99+392 +sign_ed25519_open 9 18 115911 +5263+1591+437+37+459+281-137+87-79+0-11-137-298-384-197 +sign_ed25519_open 9 23 115240 +5899+1183+64+16+0-116+154+144-238-564-162+40-140-74-154 +sign_ed25519_open 9 29 114537 +5955+828-148+0-168+93+106-292-25-16+376-212+786+73-171 +sign_ed25519_open 9 37 116552 +6031+902+706-70+0+268-100-8-74+118-64+192-144-18+40 +sign_ed25519_open 9 47 115540 +5764+706-174-208+654-132+1+62+41+188-170-86+0-61-244 +sign_ed25519_open 9 59 115432 +5942+276+113+365+348+0+357+312-31-100-66-366-15-296-385 +sign_ed25519_open 9 74 117008 +5572+860+178-226-20-530+0-410-18+246+42-166+172+148-118 +sign_ed25519_open 9 93 116909 +5787+958-2+124+0-34-575-63-217-473+123+81+863+78-28 +sign_ed25519_open 9 117 114712 +5460+1189+102-112-510+370+102-256-160+110+0+64-234-204-318 +sign_ed25519_open 9 147 116657 +5888+672+0+153+209-165-151+265-199+141+319-113-43-49-55 +sign_ed25519_open 9 184 117323 +5193+1230+399+200+1026-235-35+0-49-503+38-322-7-384+83 +sign_ed25519_open 9 231 117026 +4849+1042-47+26-72+0-193+281-153+165+235-108-78-385+37 +sign_ed25519_open 9 289 117338 +5908+1016-80+290-16-24-92-54+24+14-350+90+932-50+0 +sign_ed25519_open 9 362 118465 +5816+608+1305+254-351-210+476-622-126+0-152+69-341-283+153 +sign_ed25519_open 9 453 116630 +5353+758+193-126+2826-55-222+28+82-32-58+0-188-114+260 +sign_ed25519_open 9 567 119638 +5650+1093+1092-296+6-485+122+0-566+55+39-70-717-629-435 +sign_ed25519_open 9 709 118034 +5894+1370+482+232-118+96+0-50-18+26-278-32-232+196-240 +sign_ed25519_open 9 887 120266 +5300+1273+38+104-503-681-700-314-949+1068+407+1457-332+0-248 +sign_ed25519_open 9 1109 122510 +5452+670+147+81-52-222+158+84-231-236-188-271-228+122+0 +sign_ed25519_open 9 1387 122521 +6318+1260+146-35-112+223-31+29-31-280-201+0+1042-220+626 +sign_ed25519_open 9 1734 124784 +4761+1138+102+80-468-210+42+2428-235+0-200-134+4-214-512 +sign_ed25519_open 9 2168 128082 +5805+1764+211-400-184+58-79+155-95+17-473+2-82-64+0 +sign_ed25519_open 9 2711 129557 +5058+2085+275-38+190+0-39+14+76-132+0-89-414-41-80 +sign_ed25519_open 9 3389 133864 +5368+825-68-546+238+386+0+74-198+194-236+865-361-509-568 +sign_ed25519_open 9 4237 139130 +4314+692+1120+247+0-526-45-144-286-425-424+1643+604-680+246 +sign_ed25519_open 9 5297 144456 +6384+454+30-14-374+28-222-342+0+28-30+662-112-182+16 +sign_ed25519_open 9 6622 152590 +6162-8+188+174+70-8+244-106+224+0-106-26+140-146-68 +sign_ed25519_open 9 8278 161042 +4904+996+290+0-108-220-292+166-256-8-326-228+1382+2893+241 +sign_ed25519_open 9 10348 173536 +5400+836-290+0-532+304+336-242-202-116+74-140-232+286+92 +sign_ed25519_open 9 12936 187032 +5426+542+400+136+76-128-332-16-536-60+860+0+237-194-554 +sign_ed25519_open 9 16171 204548 +5644+396-196+2869-146-221+86-297+1506+879-154+118+0-493-331 +sign_ed25519_open 9 20214 227927 +5383+814+136-213+0-868-206-438-115-545+1262+3077+536+125-247 +sign_ed25519_open 9 25268 257931 +5666+1081+435+0+155-348-403-160-52-192+562+20-68-362+425 +sign_ed25519_open 9 31586 292511 +8311+1263+689-280-156-804-158+727+388+639+479+0-67-305-29 +sign_ed25519_open 9 39483 338549 +4681+0+1691+4351+838-75-45-177-174-146+1519+29+91-455-508 +sign_ed25519_open 9 49354 394821 +4089+1092+390-326+0+328-105-99+2774+60-739-589-548+227-484 +sign_ed25519_open 9 61693 464868 +4301+844+424-628+1-188-145+71-114+696-852-338+0+416-342 +sign_ed25519 10 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 10 32 28980 +9301+3003-3-44-185-147+0+25+167-83-5+163+256-217+114 +sign_ed25519 10 0 32160 +1808+169-169+157+116+143-49-116-13+71+416-155-245+0-214 +sign_ed25519 10 1 32188 +82+7+141+143-303-266-205+96+29-99+40-189-70-150+0 +sign_ed25519 10 2 32269 -50+58+31-175-118+66+0+84-365+1188+79-35-119+202+0 +sign_ed25519 10 3 32131 -35+8+80+58-18-80+133-86-242-129+231+121+0+31-31 +sign_ed25519 10 4 32139 -11+231+0+113-100-114+214+191-27-194+153-130+95-5+51 +sign_ed25519 10 6 32145 -163+81-253-161+174+186+156+202+112+0-122+264-59-124-68 +sign_ed25519 10 8 32101 -25+229-89-86+253+44+22-29-3+0+50-110+299-299+112 +sign_ed25519 10 11 32133 -94-11+230-74+222-23-20+203+0+115+199-92-17+847+185 +sign_ed25519 10 14 32260 -131-101+89+110+163-234-51-94+195+213+14-283+0+69-238 +sign_ed25519 10 18 32224 -169+17+0-70-3+55+169+2-50-151-27+46-81+152+181 +sign_ed25519 10 23 32181 -47-77+328+234+24+0-161+37+89-53-24-5+9-11+122 +sign_ed25519 10 29 32181 +933+176-109-96+55+138-65+82+68-43-143+49+0-23-15 +sign_ed25519 10 37 32162 -36-198-82+15+143-101-17-101+0+37+202-18+193+15+171 +sign_ed25519 10 47 32190 +132-74+62+30-77+103-27-170+12-73-196+0-68+168+19 +sign_ed25519 10 59 32881 +336+62+82+0-77+88-79-19-47+211+23-96-110+54-182 +sign_ed25519 10 74 32958 +59+95+58-18-168-23+42-125+0+17-299+105+62-164-46 +sign_ed25519 10 93 33605 +10-25+0-245-68+2+158+66-224+29-73-209+94-148+89 +sign_ed25519 10 117 33660 +153-215-18+294+111+262-152-156-10+0+248-332-14+3+118 +sign_ed25519 10 147 33656 +79+96+142-220+0-106+106+6-9-54+235-168-147-141+249 +sign_ed25519 10 184 34525 +77+0-139-80-74-94+871+120+8-77-194-99+150+16+90 +sign_ed25519 10 231 35219 +327+156+82-65+76+76-121-36+0-178-23+332-83-137+21 +sign_ed25519 10 289 35263 +375-266-5+6+66-235-80+130+0+76-80-23-252+46+64 +sign_ed25519 10 362 36507 +514-30-93+161-115-139+75+123-18+134-127-174+0+178+220 +sign_ed25519 10 453 37236 +486-13-41+441+0+238-85-42+115+138+208+129-353-111-26 +sign_ed25519 10 567 38662 +348+0-143+44+84+63-178-42-231+30+19-8-138-224+12 +sign_ed25519 10 709 40069 +201+50-18+148-146-81-140+40-136+0-97+184+240-213+296 +sign_ed25519 10 887 42288 +24-226-73-61-89-194-79+29+0+296+134+952+38+219-138 +sign_ed25519 10 1109 45099 +380+195+232+59+319-41+63-27+0-5-134-121+89-11-111 +sign_ed25519 10 1387 48061 +352+108+53-85-219-13+76+0+34-235-195-193-181+308+70 +sign_ed25519 10 1734 51677 +315-8+242+119-55+203+21-21-60-131-207+173-257+0+34 +sign_ed25519 10 2168 56530 +430-44-89+222+166-159+133-110+0-48+34-58-104+214+371 +sign_ed25519 10 2711 62370 +556+186-177+0-54-21-31+606-223-165+197+50+21-215+1185 +sign_ed25519 10 3389 70033 +850+269-14+177-15-140+63-11-148+157-144+182+0-81+328 +sign_ed25519 10 4237 79454 +243-201+202+383+29-123-233+44+119+86+0-38-115-86-152 +sign_ed25519 10 5297 91618 +132-139+69+36-3+0-31-26-77+176+256+138-286+38-247 +sign_ed25519 10 6622 106619 +423+574-259+89-93-61-180-122+34+137-71+165+0-23+46 +sign_ed25519 10 8278 125128 -28+14+137+0+169+127-113-242-183-221+147-45-79+112+57 +sign_ed25519 10 10348 148050 +1+228+0-298+89+784-320+1136-246-43-182+14-209-251+92 +sign_ed25519 10 12936 176488 +173+41+75+2406+537-54-157-53+0+78-199-344+44-186-331 +sign_ed25519 10 16171 212071 +264-21+163+0-163+417-180-93+0+215-280-120+235-16+454 +sign_ed25519 10 20214 257818 +471+658+2746-21+72-160+0-367-298+55+43+20-226-283-237 +sign_ed25519 10 25268 314345 +647+1298+799-219-290+2070+54-237-61+296-493-116-2+118+0 +sign_ed25519 10 31586 385372 +438-305-60+0-37+120-19+424-338-237+927+192-402+1754+244 +sign_ed25519 10 39483 473536 +9020-31-109+303-377+150-78-336-277+13+91+343-302+0+2819 +sign_ed25519 10 49354 583757 +9055-174+243+22+820+1156-55-274-389+1184-78-278+775-264+0 +sign_ed25519 10 61693 722395 +9213+253+2154-792-807-931+120+0+895-1061+182-53+1569-500-1047 +sign_ed25519_open 10 0 114219 +7185+890+355+0-194+9-141-11+433+17-180+29-257-328-207 +sign_ed25519_open 10 1 114997 +4979+507+211-97+467-18-293+60-326-423+367+0-127+683-10 +sign_ed25519_open 10 2 115266 +5064+1679+154+0-16+494+350-24-410-388+162-372-120-344+44 +sign_ed25519_open 10 3 115136 +6082+2372+64-272+101+449+0-112+104-524-352+34-74-154-120 +sign_ed25519_open 10 4 114908 +5187+747-210+44-264-74+0-28-234+472-279+76+150-36+38 +sign_ed25519_open 10 6 112354 +5292+1005+322-414-146-2+234+58-154+110-136-134+0+166-122 +sign_ed25519_open 10 8 115276 +5821+1400+45+0+46-205-17+4-404-445-461-20+9-320+122 +sign_ed25519_open 10 11 114070 +5080+271+991+2437-75+0+26-56+88-286+568-132-498-358-154 +sign_ed25519_open 10 14 114426 +5912+760-89+447+355-436-236+523+40-302-214+0-162+20-242 +sign_ed25519_open 10 18 115250 +5256+926-272+164+14-90-210+0-150-318+719-6+32-284+64 +sign_ed25519_open 10 23 116138 +5641+476-100+100+362-178-122+184-478-286-316+0-234+532+2 +sign_ed25519_open 10 29 114686 +5145+286+179-220+321+223+0+158-219-182-110-57-265+71-7 +sign_ed25519_open 10 37 115862 +5851+498+915+3025+215+675-126+76-118-622-539-451-793+0-432 +sign_ed25519_open 10 47 114138 +5667+820+123+35-419-142-259+0+1503+96-220+488-274-272-166 +sign_ed25519_open 10 59 115922 +5632+821-175-167-221+62-34+178-80+1208-67+0-178+346+126 +sign_ed25519_open 10 74 115929 +6224+1346+495+201+46-335+130-70+0-253-290+0-285-309+287 +sign_ed25519_open 10 93 114654 +5645+677-190+144-22+201-571-568-424-556-226+8+0+14+38 +sign_ed25519_open 10 117 116090 +5273+1907-335+2584+243-652+428-174-446+140+0-530-218+114-372 +sign_ed25519_open 10 147 116252 +5022+524+14-394-328-40+0-394-242+126+528+70-166+168-70 +sign_ed25519_open 10 184 115615 +5953+656+14+0-436+32+254-378-117+978-433-73-127-367+143 +sign_ed25519_open 10 231 114374 +5852+826+232+146+114-174-32+342+0+234-272-146-92-14-70 +sign_ed25519_open 10 289 117526 +5013+372+58+48+184+44-186-34-124-110-184-78+30-286+0 +sign_ed25519_open 10 362 115786 +6221+1400-84-354+44+96+82-118-66-42+72+0-222-302+64 +sign_ed25519_open 10 453 118337 +5492+1450+101+231-84+0-65+0-129+49-131+9+42-105-13 +sign_ed25519_open 10 567 119065 +6004+1582+179+260-361-198-44-311+764+43-148+170-81-159+0 +sign_ed25519_open 10 709 119092 +6095+1624+586+272+0-294-320-34+216-46-28-126+10+372-310 +sign_ed25519_open 10 887 120800 +6565+517-343-140-491-599+714-466+76-378+122-272+0+212+461 +sign_ed25519_open 10 1109 123181 +4882+1112+448+89-67+66-94-190-464+80+46-82-92+0-466 +sign_ed25519_open 10 1387 123842 +5407+1012+61+114-144+300+194+0-152-8-106+1228-156-86-156 +sign_ed25519_open 10 1734 125924 +4684+891+983+0+498+64-76-44+8-250-296-194-58+98-372 +sign_ed25519_open 10 2168 128701 +5656+512+0+186-30-13-51-55+62+232+41+13-193-285-19 +sign_ed25519_open 10 2711 132216 +4465+271-299+28+4-311+998-232+693+122-522+0-236-310-356 +sign_ed25519_open 10 3389 134626 +4654+958+0-202-142-182-64+2172+306+298-160-136+188-4+202 +sign_ed25519_open 10 4237 138970 +5696+796-51-232+73-242+1150+168+34+0-180-210-270+324-28 +sign_ed25519_open 10 5297 146394 +5435+98+175+69-31+255-236-132+64-9-101+36-136-167+0 +sign_ed25519_open 10 6622 153268 +4589+515-96-142+1708+1971-479+0+46-234-130+383+248-104-217 +sign_ed25519_open 10 8278 162272 +5126+347-210-14+107+151+86-16+324-202-331-17+0-199+582 +sign_ed25519_open 10 10348 173194 +5355+620+2-210+2375+108-492+203-33+0-35-225-224-145+79 +sign_ed25519_open 10 12936 187464 +4995+832-103-128-190+1154+330+40+0+456-220-172-292-172+72 +sign_ed25519_open 10 16171 205837 +4518+515+90+645+165-227-561-159-798-596+746-193-392+0+1551 +sign_ed25519_open 10 20214 228744 +4838+1013+0-375+486-252+102-34-427-304-188-328+610+444+319 +sign_ed25519_open 10 25268 258830 +5176+872+35-314-627+0+179-58+465-102-216-510+3708+1318-183 +sign_ed25519_open 10 31586 293907 +4583+1229+0-124+203+20-71-338+1230+290-269+744-155-160-56 +sign_ed25519_open 10 39483 338106 +4154+1343+220+692-166+487+571-41-161-138-293+0+390-32-50 +sign_ed25519_open 10 49354 395860 +3933+700-48+367+175-94-72-108-693+469-353+0+1362-47+864 +sign_ed25519_open 10 61693 463121 +4776+1617+383+0-619+182-612-470+437-188+1168-199+56-16-173 +sign_ed25519 11 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 11 32 28893 +3702+395+106+299-43+0-175-30-253-89-17+17-57+94+81 +sign_ed25519 11 0 31999 +1952+101+241+164-32+0-194-138+90-101-73+146+183-52-22 +sign_ed25519 11 1 32056 +195+186+36+6+213+0-123+19-275-60+94-219-84-202-187 +sign_ed25519 11 2 31980 +76-33+200+148-118+75+167-25+283+0+45-47-102-1-20 +sign_ed25519 11 3 32112 -56+77-291-432-215-198+0+850+206-46-8+300+654+1572+19 +sign_ed25519 11 4 32067 +57-164+73+253+221-67-40-351-223-132+0+361-29+55+20 +sign_ed25519 11 6 31987 +13-20+130+0-149+77-237-40-3-63+376-10+249+93+210 +sign_ed25519 11 8 31938 +168-66-227+205+35-115+80-40-25+20-239-99+0+51+69 +sign_ed25519 11 11 31912 +595+121-33+1121-91-76+0+278-104+598-82+168-23-46+10 +sign_ed25519 11 14 31969 +293+34+216-50-129-140+286+75-108+130-369-185-14+0+141 +sign_ed25519 11 18 31994 +132+280+8+39-88+39-76+0+214-78-219-131-183-110+47 +sign_ed25519 11 23 31975 +242+65+93-183+119-162+36+0+49+16-118-121-133-115-77 +sign_ed25519 11 29 31928 +369-20-37+252-7+178-22+160+139+0-134+200+60-59-121 +sign_ed25519 11 37 31976 +237+279+99+64+79-180-142-38-91-133+162-184+132+0-79 +sign_ed25519 11 47 31860 +194-116+32-217+97+0-39+162-19-28+38-52-208+34+103 +sign_ed25519 11 59 32672 +156-178-64+203-31+46-32+58-90+0-87-119+157+169+364 +sign_ed25519 11 74 32733 -120-39+229-8+103+223-215+0+296+146-278-156-261+353+30 +sign_ed25519 11 93 33456 -82+164+80-108+334+148-79-132+138+0+169-5-5-172+158 +sign_ed25519 11 117 33536 +228+5+44-77+10+122-66+0-198+3-89-68-192+160-76 +sign_ed25519 11 147 33535 -25+272+129+15-39+117-79+46-12-68+0+61-105-98+67 +sign_ed25519 11 184 34219 +41+238-65-75+136+67+25-234+0-219+144+230-105-100-39 +sign_ed25519 11 231 35074 +0-22+109+123+765-148-5+55+513-298+26+324-66-13-83 +sign_ed25519 11 289 35058 +296+180+79-11+308+62-91-121-279+75+196+0-23-387-263 +sign_ed25519 11 362 36498 +262-72-17-170+0+54+186-281+266-64+187+159+83-100-39 +sign_ed25519 11 453 37132 +97+445-112+30-97+258+1+344-3-69-320+80-32+0-125 +sign_ed25519 11 567 38544 +457+113+7+48+68+251-97-85+0-221-116-155-185-182+181 +sign_ed25519 11 709 40001 +444-161+151+316+79-133-115-173+0+94+87-230-190-183+52 +sign_ed25519 11 887 42201 +0-25+207+284-178-189+148+25-136+119-35-44+83+50-180 +sign_ed25519 11 1109 45069 +77-63+91-10+171+26+1224-130-114-145+25+0-106-72+14 +sign_ed25519 11 1387 47804 +139+188+281-49+141+145+0-273-78-87-23-52+165+127-199 +sign_ed25519 11 1734 51457 +96+143+3-215+0-75-56+22+134-55+13-92-235+19-92 +sign_ed25519 11 2168 56365 +320+0-165+132+63-123+89-173-221-67+166+111-8-67+194 +sign_ed25519 11 2711 62079 +216-74+81+36-289-53-53+245+123+52+0-105-112-148+26 +sign_ed25519 11 3389 69931 +315-23-213+0-56+1442-6+86-115+190+67+140-41-154+137 +sign_ed25519 11 4237 79157 +465+241+246-53-130-125+157+105+440+0-8-122-75-139+92 +sign_ed25519 11 5297 91360 +236-30+0-198-22-266+601-1+93-14+190+172-210+136+256 +sign_ed25519 11 6622 106492 +270-88-80+0+207+45-287+584-113+4-114+293-41-125+119 +sign_ed25519 11 8278 125071 +357-82+64+329-172-167+0+14+22-300-195-102+65-258+55 +sign_ed25519 11 10348 147904 -161+0+341+218-267+2+65-78+134+257-168-98-223+44-143 +sign_ed25519 11 12936 176347 +180+235-110+123-195-26-452-154+46+410-115-206+234+0+120 +sign_ed25519 11 16171 211979 +293+904-114+67-105-147-257+185-36+0+121+107-165+126-66 +sign_ed25519 11 20214 257736 +392-142+86+229+779+209+0+94-59+436-156-239-376-368-324 +sign_ed25519 11 25268 314261 +69-114+158+772-112+19-197+22-88+0+92+56-182-53-429 +sign_ed25519 11 31586 385292 +1778+299-49+0-21+2405-429-194+283-253+39-108+541+59-300 +sign_ed25519 11 39483 473458 +11178-317+113-95+114+2398+83-362-23-309-182+27+0-35+860 +sign_ed25519 11 49354 583753 +40456+516+278-675-425+550-396-230+0+192-951+523-692+648-114 +sign_ed25519 11 61693 721692 +9602+43-431+729-441-520-130-468-612+2755+1426-295+399+257+0 +sign_ed25519_open 11 0 115330 +7645+2768+1192+346+548+62+12-418-152-260-324+0-386-26-132 +sign_ed25519_open 11 1 116016 +5801+1229+598+0-386+334-113-254+38-102-292+74-356-56+84 +sign_ed25519_open 11 2 115216 +5152+1123+1387+1191+250-76-428-416+962+623-720-172+0-234-164 +sign_ed25519_open 11 3 115901 +5228+528-99+401+164-188-207+0-21+192-343+37-247-325+38 +sign_ed25519_open 11 4 115470 +5328+940+22-24+90+58+0-66+215-21-337-391+409-163-265 +sign_ed25519_open 11 6 115436 +6603+3545+148+0+550-212-250-290-236-322+462-406-252+70+230 +sign_ed25519_open 11 8 115213 +5560+907+77-289-227+0-118+308+88-97-109-214-238+177+75 +sign_ed25519_open 11 11 116109 +5456+664-99-175-339-229-368-335+758+297+221+73-123+284+0 +sign_ed25519_open 11 14 115480 +5059+548-106+1029+577-226+394-184+432-8+0+318-182-216-148 +sign_ed25519_open 11 18 115953 +5459+821+249+486+80-94-86+50-85+0-146-38-355-264+155 +sign_ed25519_open 11 23 116322 +6642+872-45+0+256+246-64+84-344+12-378-152+162-286-172 +sign_ed25519_open 11 29 116409 +4906+831+300+35-58-155+391-246+0-284-94+42-165+100-175 +sign_ed25519_open 11 37 114698 +5759+863-56-26-423+134-63+56+561+1022-252+442+0-242-186 +sign_ed25519_open 11 47 114442 +5667+847+34-270+196-430-414+0-606-268-606-154+829+554+412 +sign_ed25519_open 11 59 115794 +5751+1044+0-182-312-438+94+92-242+104-272+34-236+16-370 +sign_ed25519_open 11 74 115450 +5615+572+0+21+32-335+108-63-480-86+20+38-504-370-134 +sign_ed25519_open 11 93 115668 +4963+564+176+135-500-46+56-370+36-186-54-398-200+124+0 +sign_ed25519_open 11 117 117277 +4641+671+28+0-20-161+389+94+848+2065-237-231-121-249-227 +sign_ed25519_open 11 147 117900 +4927+987+430+286-138+0-8-36-108+986-85+352-378-78+92 +sign_ed25519_open 11 184 117456 +5475+1545+418+252-30+100+0-62-104+40-508+118-162-120-84 +sign_ed25519_open 11 231 116255 +6154+1577+465+492+177-269+0+53-55-242-365-17+299-61-10 +sign_ed25519_open 11 289 117225 +4697+1160+669-92+157-217+65-375-108-128-58+140-2+372+0 +sign_ed25519_open 11 362 120063 +4105+863+353+73-240-335+633-85+130-22-62-125+0+407-301 +sign_ed25519_open 11 453 116264 +5641+1414-14+276+228-246-190-614+118-388+34+0+6-368-148 +sign_ed25519_open 11 567 118756 +4664+1083+138-64+44-256-224-164+0-292+364-530+120+1046-64 +sign_ed25519_open 11 709 120372 +4905+1082+146+38-84+108-118+78-234-312-82+212+0-160-258 +sign_ed25519_open 11 887 120233 +5258+594+538-169-25+359-160+0+82-171-478-211+99-247+110 +sign_ed25519_open 11 1109 121638 +5691+653+0+979+489+76+86-48-96-422-422-10+106-328-160 +sign_ed25519_open 11 1387 123740 +5282+305+122-210-156+148-60+426-314-386+1635-208+0-42+196 +sign_ed25519_open 11 1734 126332 +5337+1006+0+134-192+61-255-369+1049-182+2+530-62-306-158 +sign_ed25519_open 11 2168 127504 +5526+874+450+294+478+0-176-276-302+96-172-116-44+178-72 +sign_ed25519_open 11 2711 129926 +5996+679+0+44-196+64-379-5-7-127-218+1108-83+119+14 +sign_ed25519_open 11 3389 132706 +5138+711+398-34+266-42+424-122+72-24-102+374+0-78-82 +sign_ed25519_open 11 4237 138819 +5445+970-98+47-150-122-374+379-100-98+104-8+752+0+48 +sign_ed25519_open 11 5297 145292 +4849+1037+324+186-80+52+0+238-216-102-116-456-246+476-168 +sign_ed25519_open 11 6622 153395 +5513+337-306+110-511+45-265-165-230+963+174-290-118+0+119 +sign_ed25519_open 11 8278 162070 +5600+407-252-18-362-186-714+344+0-56+186+144+8-62+406 +sign_ed25519_open 11 10348 172764 +5385+908+1231+27+128-202-248-184-66+0-134+336-46+274-234 +sign_ed25519_open 11 12936 187214 +5442+700+63+361-49-95-405-366+0-224+2274+327-5-45+272 +sign_ed25519_open 11 16171 206429 +5445+1259+2867+172-42+36-560-269+174+0-20-136-336-18+783 +sign_ed25519_open 11 20214 228571 +5072+1301+148-92-261-4-367+0+79-247+304+262+203-57-207 +sign_ed25519_open 11 25268 257710 +5188+1036-115-38-247-275+807+291-206+0-176+13+223-424+730 +sign_ed25519_open 11 31586 294123 +5872+812+116+85+250-336+345-175-594-261-117+905-208+0-11 +sign_ed25519_open 11 39483 339101 +4913+846+1552-12-70+0+616-462+103+1994+14-298-362-73-40 +sign_ed25519_open 11 49354 397352 +3451+660+430+0-36-359-141-190-44-332-320+874+2664+29+279 +sign_ed25519_open 11 61693 467130 +4033+1543-6+46+218-562-219-220+2229+8+0-266+280-386-14 +sign_ed25519 12 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 12 32 28999 +4477+205-50-280+59-85+0+49-43+83+151+62-70-182-31 +sign_ed25519 12 0 32497 +2145+68+405+86-175-218+0-193+1-113+64-212+41-142-88 +sign_ed25519 12 1 32378 +127-49+132+159+260+0-45-12-174+112-82+100-2+123-203 +sign_ed25519 12 2 32359 +349-41-241-32-177+86+47+70+39+0-112-97+78+28-37 +sign_ed25519 12 3 32295 -111-1+234-49+105-83-18+0+86+147+196+148-85-43+1 +sign_ed25519 12 4 32366 -49+50-124+131-53+166-99+134+240-81-60+0+1138+169-2 +sign_ed25519 12 6 32386 -2-275+44+56+132+275-48+252+34-202-95-111-203+42+0 +sign_ed25519 12 8 32461 -194+120+42-38+186-111+16-146+0+4+76-93+103-18-47 +sign_ed25519 12 11 32398 +82+1184+93-162+0-249+94+225-33+121-107-262-159+74-203 +sign_ed25519 12 14 32510 +694-206+14+58-165+176-92-258+96+253+31+0-108-118-239 +sign_ed25519 12 18 32487 +54-70-1-100+115+141+0+23+176-81-204+2294+195-153-69 +sign_ed25519 12 23 32386 -226+256-124+107-32-22+138+21-92-67-24+98+0+147+64 +sign_ed25519 12 29 32506 +133-81-195+140+0-171+120+0-27-29+138-193+4-245+38 +sign_ed25519 12 37 32496 -64-116-249+63+0+112+81+179+33-218+56+89-75-208-69 +sign_ed25519 12 47 32464 -375-170+1474+253+256-20+0+211+115+90-141-34-92-56+74 +sign_ed25519 12 59 33156 +197+444+0+72+49-251+1+63-34+19-62-33-32-32-33 +sign_ed25519 12 74 33013 +434+482+351-72+133+60+271-74-60-82+38+0-5-21-91 +sign_ed25519 12 93 33935 +129+68+165+167+0-146-107-67+40+57-331+205-154-94-106 +sign_ed25519 12 117 33932 +0+80-49+110+207-94-183+106-81-115-341-30+71+58+53 +sign_ed25519 12 147 33989 -32+140+16+134+0+30-50-51-263+99+139+26-63-115-68 +sign_ed25519 12 184 34653 +217+91+0+15-71-129-239-120-78+354+302+90-140-70+76 +sign_ed25519 12 231 35372 +0-188+53+412-155+166+25-19-140-200+44-238+339-157+108 +sign_ed25519 12 289 35502 +117+249-6-181+1250+109-2+1164-306-122-274-171+0+35+36 +sign_ed25519 12 362 36831 +208+140-2+268-83+144+100+149-71-51-102+0-95-236+223 +sign_ed25519 12 453 37495 +360+182+261+29-48-107+128+0+18-75-101-359-24-99+51 +sign_ed25519 12 567 39004 +327+106+70+96+35+162-184-21+146-8+0-142-38-197-124 +sign_ed25519 12 709 40469 +1733+63+282+60-98-7-127-188+42+0+226-200+207-58-294 +sign_ed25519 12 887 42547 +108+184+146-274+102-103-11+76-80-71-3+0-22+4+48 +sign_ed25519 12 1109 45421 +407+120-85-57-100-45+184-140+0+24+6+97-50-83+178 +sign_ed25519 12 1387 48289 +49+238+16+13-48-26+0-160-273+102-1+25-2-235+18 +sign_ed25519 12 1734 51878 +110+161+33-77-308+101-31-133+230+164-19+0-124-218+168 +sign_ed25519 12 2168 56840 +288+27+125+59-129+213-159-194+69-249+0-17-55-61+13 +sign_ed25519 12 2711 62488 +291+49+335+19-37+93+74-302-39+26-17+0-69-88-155 +sign_ed25519 12 3389 70315 +265+468-31-36+129+0-122-181+149-389-227-60+825+427+3146 +sign_ed25519 12 4237 79676 +505+147-27+10-62-108+71+150+32-7-22-78+0+23-160 +sign_ed25519 12 5297 91806 +251+163-72+733+72-23+310-1+6-88-26-120-131+0+93 +sign_ed25519 12 6622 106895 -62+16+0+37-66-55+127-132-72-25-139+542+258+155+113 +sign_ed25519 12 8278 125346 -27+48+0+199-10+105-228+57+180-151-13-60+70-70+51 +sign_ed25519 12 10348 148216 +229+241+158+117-167-189-225+150-133-130-299-16+1022+0+241 +sign_ed25519 12 12936 176675 +625-40+0-13-253+166+208+84-23-163+177-96+172-26+123 +sign_ed25519 12 16171 212356 -117-84-226+992+212+348+167+127+119+354-72-75+0-134-81 +sign_ed25519 12 20214 258119 -88+0+81+66+36+43+782+526+43-229-65-68-83-231-96 +sign_ed25519 12 25268 314613 +368-400+538+0-289+323+100+69+55-415-155-82-169+283-227 +sign_ed25519 12 31586 385729 +431+992+0+271+43+122-119-190-178-509-389+107-352+716-341 +sign_ed25519 12 39483 473698 +10784-164+99+140+1+0+1114+358-357+486-223-44-174-156-222 +sign_ed25519 12 49354 583953 +13537+139+0-176+42-250+1853+150-180-379+1739-43-359-51+991 +sign_ed25519 12 61693 722482 +16410-521-419+1821-335-352+64+0+418+304+1175+1653-813-1014-571 +sign_ed25519_open 12 0 115404 +6347+1738+492+62+902-342+64-62+68-428-408-340-266-570+0 +sign_ed25519_open 12 1 115858 +5753+992+540-396+0+126+40+18+136-284-96-398-38-42-12 +sign_ed25519_open 12 2 115256 +5400+1127+336-87-303+43-511+450+0-42+8-31+498-67-288 +sign_ed25519_open 12 3 116506 +4811+775-475+1571+0-344+118-358-182+10+52-42-172-395+81 +sign_ed25519_open 12 4 114766 +5290+760+664-38+138-14+274+4+198-118-119+0-158-99-94 +sign_ed25519_open 12 6 115439 +5850+1296+490+946+639-70-116+32+0-72+444-55-141-133-698 +sign_ed25519_open 12 8 115246 +5630+1568+150+78+122+0+264-306-348-26-520-170-504+72-250 +sign_ed25519_open 12 11 116320 +5604+785+793+52-242-90-360-136-446-588+0-108+1131+545+2181 +sign_ed25519_open 12 14 116482 +6983+1173+718+30-6+0-426-310+98+52-224-272+356-290-22 +sign_ed25519_open 12 18 116002 +5466+538+156+68-202-42-24+320+122+0-316+184-14-366-12 +sign_ed25519_open 12 23 115026 +5140+978+150+1138+95-24+0-212-128+234-138+264-48-20-48 +sign_ed25519_open 12 29 115286 +5038+372+400+133+190+200+0-276-26-490+94-160-65-211-160 +sign_ed25519_open 12 37 116297 +6156+860+849-175+2230+307-297-257-179+215-321+0+583-245-643 +sign_ed25519_open 12 47 114468 +5769+895+350+490+12+88+0-20-18-264-96-214-232+298-42 +sign_ed25519_open 12 59 116479 +5887+640+447-133-193+72+0+108-145+127-57+268-37-478-214 +sign_ed25519_open 12 74 115458 +5744+677+80+1151+104+2374-128-156-268-635+131-531+0-411-503 +sign_ed25519_open 12 93 114146 +6606+531+277-18-224+148-328+438+0-312+28-534-506-332+262 +sign_ed25519_open 12 117 117283 +5395+420+0-248+10-63-157-108-62+32-194+626+302+123-27 +sign_ed25519_open 12 147 116266 +5180+586+254+0-356+122+562+77-484-278-269+301-52-294-298 +sign_ed25519_open 12 184 116884 +5414+512+2840+422-194+470-16-234+16-236+230-310+0-74-112 +sign_ed25519_open 12 231 117418 +5445+816+1146+286-218-354-274+0-448+248-608-368+130+146-484 +sign_ed25519_open 12 289 115870 +5153+892+290+172+0+534+138-534-46-330+102-92-10-300-128 +sign_ed25519_open 12 362 117777 +5812+1090+39+125-720+0-187-837-563-757+1150-377+786-446+183 +sign_ed25519_open 12 453 118738 +5926+1585+210+26-72+10-298-56-194+678+94-456-200+0-360 +sign_ed25519_open 12 567 119040 +5995+1078+115-69-78+0-612-104+310-340+40+214-354-268+90 +sign_ed25519_open 12 709 119672 +6854+870+150+152-76-302-448+692+134+0-36-1158-160-14+42 +sign_ed25519_open 12 887 119476 +5849+1062+90+72-564-504+52-282+0-204+156-662-248+408-280 +sign_ed25519_open 12 1109 121408 +5130+1070-350-656+0+112+1365+661+2542+293-78-274-82-20-306 +sign_ed25519_open 12 1387 123629 +6030+1638+181-207+163-67+633+0-415-5-257-53-263+279+355 +sign_ed25519_open 12 1734 125789 +5464+1171+499+0-349-223-239+409+288-150-61+1150+251-201-313 +sign_ed25519_open 12 2168 128408 +5993+990+954+130-496-224-96-100+0+62-148+22+140-224-158 +sign_ed25519_open 12 2711 129880 +5918+846+90-194-88-314-236+0-410+76-56+80-372+16+947 +sign_ed25519_open 12 3389 133330 +6004+1192+536+302-196-372-10+266+140+12-430-332+0-326-182 +sign_ed25519_open 12 4237 140020 +6028+1604-228-222+341-121-58+158+0-365-33+337+76-528+963 +sign_ed25519_open 12 5297 145472 +5559+322+37-4-213+247-212+4-276+81+207-370-478-41+0 +sign_ed25519_open 12 6622 152937 +5489+353-394-585+238-156-96+0+120-199-107+1765+294+153-78 +sign_ed25519_open 12 8278 162138 +5469+690-449-105+221+27+71-243-259-349-645+686+0+58-404 +sign_ed25519_open 12 10348 173566 +5856+594+318-106+1134+86-390-163+6-296-292-208-38+0+6 +sign_ed25519_open 12 12936 186944 +5250+774-109-126-82+0+630-576+608+488-22-620+1901+11-266 +sign_ed25519_open 12 16171 205473 +6185+544+65+0+19+113-239-450-212-59+119-265-189-13+161 +sign_ed25519_open 12 20214 228009 +5460+664+173+346+0-105+129-489-19-443+119-150+76-419-373 +sign_ed25519_open 12 25268 258312 +5788+1110+105+83+80-178-345-29-357-461-217-314+0+49+51 +sign_ed25519_open 12 31586 293262 +4822+903+55+75-107-290+109-736-326-21-703+463-642+1406+0 +sign_ed25519_open 12 39483 337953 +4596+495+604-145-268+30-317+835+169-268-1422-133-624+0+41 +sign_ed25519_open 12 49354 395092 +5362+2673-654+0-149+36-32-310+304-199-15+308+1269+867-393 +sign_ed25519_open 12 61693 466203 +4432-14+1384-678+0-158-363+78-187-721+879-571+1137+809+1609 +sign_ed25519 13 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 13 32 28862 +4145+145+158+260+19+9+0-28-129-80-87+3-50-113-171 +sign_ed25519 13 0 32497 +3918+207+12+6+92+13-197+0+177-29+0-79-42-209-4 +sign_ed25519 13 1 32512 +164+129+16-63-101-60-2+0+200-133+26+35-187-61+25 +sign_ed25519 13 2 32461 -68+218+52-6+84-173+138+46+0-63-223+36-86-39+84 +sign_ed25519 13 3 32448 +217+348-107-87-4+203+35-36-38+112-45+336+13-148+0 +sign_ed25519 13 4 32619 +0-212+24+11-18-69-113+45-117-43+24+944+343+111-106 +sign_ed25519 13 6 32629 +2861+370-152-230+0-153+83+57-39+1155-149-96-16+153+93 +sign_ed25519 13 8 32599 -120+8+459+107-117-41-144+91-81+186+213-302+0+275-48 +sign_ed25519 13 11 32582 -197+14-31+112+0-267+143+67+113-104-109-216+45-217+19 +sign_ed25519 13 14 32616 +155+148-68-163-170+169+27-184-234+197-70+55-212+0+94 +sign_ed25519 13 18 32550 +277+204+218+218-35-109-111+2-260+160+4-317-172-189+0 +sign_ed25519 13 23 32597 +147-22-266+81+54-24+189-224+170-113+134+0-57+215-167 +sign_ed25519 13 29 32543 +204+131-146+71-66+0-45-39-168+62-52+42+132+173-22 +sign_ed25519 13 37 32584 +63+60-54-24-134-162+22+102+198+107-287+0-193-227+89 +sign_ed25519 13 47 32574 +59+745+130+57-14+20+0-61+54+209-218-257-166-142-129 +sign_ed25519 13 59 33260 +40+516-107+29-112-106+0+104+96-90-170-101+268-19+28 +sign_ed25519 13 74 33442 +192-140-74-51+0+143-206-92+70+64-218+159+114-128+622 +sign_ed25519 13 93 34125 +209+148-85-96+207-342-124-156-238+136-91+0+3+6+79 +sign_ed25519 13 117 34036 +342+35+405-87-82-21+147-12-152-20+161-94+0+80+149 +sign_ed25519 13 147 34126 +204-273+4-155+126-64+154+149+31-87+0-145-31+14-39 +sign_ed25519 13 184 34831 +600+33+86-184-9-170-61-133+1425+354-67+0+56-92+132 +sign_ed25519 13 231 35519 +69+236+68+175-108-152+151+126-183-35-96+0-84+13-163 +sign_ed25519 13 289 35659 +15+1263+181-406+463-236+0-20+51-66-98-90-276+231+81 +sign_ed25519 13 362 37086 +173+37-104+27-270+0+7-147-47-308-212+234-267+248+267 +sign_ed25519 13 453 37775 +0-55+108-136+101+9-73-55-123+28-51-30+0+96+159 +sign_ed25519 13 567 39097 +206+155-170+176+102+346-113-150+0-29+39-300-87+120-70 +sign_ed25519 13 709 40490 +500+210+191-101-199-88+95+0-5-100-29+13+4+88-45 +sign_ed25519 13 887 42704 +43-203+88+0+25+2-10-171-168+185-134+202-286-177+59 +sign_ed25519 13 1109 45521 +483+142+226+37+250+0+90-64-154-153-200-50-117+32-92 +sign_ed25519 13 1387 48429 +779+627+2329+601+0+110-47+17-76+64-185-118+0-233-55 +sign_ed25519 13 1734 51995 +479-3+171+0+255+2+234+340-233-161-175-269-125+50-20 +sign_ed25519 13 2168 56838 +182+234+275+142+129-134-103-62-54-193-127+0+146+144-207 +sign_ed25519 13 2711 62554 +300+86+55+30-189-133-19-51+126+35-181+0-204+324-63 +sign_ed25519 13 3389 70640 +255+229+16-77-324+10-345-80-424+112+0+704+143-247-392 +sign_ed25519 13 4237 79907 +177+56+255+36+201+0-314-50-25+171+687-44-120-172-110 +sign_ed25519 13 5297 91962 +94+15-76+0-300-133+3+39+2808+115-84+132-168-164-79 +sign_ed25519 13 6622 106973 +5-52+0-165+179+24-3+20-143+69+841+20-31-134-187 +sign_ed25519 13 8278 125519 +296-174+136-353-29+151+10-43+0-204+117-91+24+142-164 +sign_ed25519 13 10348 148294 +140+182+71+89-114-219+22-148+222-507-27+563-23+0-50 +sign_ed25519 13 12936 176792 +349+154+147-51-111-77+137+1917+498-6-186-136+0-43+49 +sign_ed25519 13 16171 212434 +106+62+1213-189-121-81+0+32+233-102-23+1-46+80-197 +sign_ed25519 13 20214 258115 -68-561+7-256-322+785+1866+0+187-288+51-71-283+774+12 +sign_ed25519 13 25268 314706 -65-6-151+145+697+130+0+136-558-35-363+130+333-170+271 +sign_ed25519 13 31586 385868 +413+717-257+189+172-36+176+11-111-280-9+0-284+201-173 +sign_ed25519 13 39483 473780 +9674+240-364-350-253+923+156-61+686-231-224-52+629+0+31 +sign_ed25519 13 49354 584249 +11156+100-159-563-403+162+265-309+125-116+238-542-441+0+954 +sign_ed25519 13 61693 722017 +11794+0+106+1214-223-276+31-79-432-145+107-33-459+497+160 +sign_ed25519_open 13 0 117482 +6490+1207+1029+914+691+438+0-270-530-398-232-192-462-398+264 +sign_ed25519_open 13 1 114590 +4814+990-176-66+306+316-76-266+0+362+68+212-267-353-312 +sign_ed25519_open 13 2 115040 +5122+1390+226-462-268-320+342+172-124-35-68+504+0+15-64 +sign_ed25519_open 13 3 117265 +4546+977+238-236-151+79-467+453-653-63-422+0+605-395+121 +sign_ed25519_open 13 4 116790 +5132+1006+368-278+358+270-38-360+54+0-215-351+92-466-123 +sign_ed25519_open 13 6 114386 +4409+1094+0+942+204-216+275-40-349-156-302+176+537-485-419 +sign_ed25519_open 13 8 115665 +5140+965+167-40+401+658-46-289+217-349+231-81+0-489-25 +sign_ed25519_open 13 11 116148 +5362+690-390+163-140-420-211+42-212-223-359+0+170+92+708 +sign_ed25519_open 13 14 116618 +5027+294-106-250+568+160-172-46+306-14+138-218+38-92+0 +sign_ed25519_open 13 18 116472 +5355+432-304+10+174-348+586-460-628-564-616+0-142+328+118 +sign_ed25519_open 13 23 114594 +5234+71+4+864-69+0+278-644+250+142-8-194-220-148-184 +sign_ed25519_open 13 29 116118 +5238+1080+178-22+184+0-28+90-324+156-154-48-114-258+350 +sign_ed25519_open 13 37 116880 +4650+971-110-382-402-230-154+88+0+36-178+548+871-124+508 +sign_ed25519_open 13 47 117312 +5491+1301-84+32+0+218-12-14+20-112+654-556-210+126-50 +sign_ed25519_open 13 59 116720 +5397+996-78-102+418+276+24+48-112-144+76+0-56-318-254 +sign_ed25519_open 13 74 115666 +5181+312+452+550-205+534+0-394-352-388+386+58-27-282-590 +sign_ed25519_open 13 93 116754 +5083+1303+184-166+0+142+0-226-160-250-187+127-616-278+166 +sign_ed25519_open 13 117 117105 +3981+408+16-269-154+0-317-262-371+154-433+336-216+402+259 +sign_ed25519_open 13 147 117516 +5932+536-274-314-150-344-194-166+764+402+334+210+200+0-184 +sign_ed25519_open 13 184 117146 +5738+1229+652+182+366-638-202-66-184+316-438-24+0+402-246 +sign_ed25519_open 13 231 116578 +5278+549+737+203-362+212+102-538-294-156-306-198+450+0-548 +sign_ed25519_open 13 289 118136 +4819+1164+570+264-82+198+0+380+244-114-228-128-156-82-44 +sign_ed25519_open 13 362 117724 +5024+609-20+198+600-414+0-736+128-184+614-240+96-410-430 +sign_ed25519_open 13 453 118486 +5415+1114+154-208-500+0+2287+243+400+732-516-670-450-41-482 +sign_ed25519_open 13 567 119866 +5111+1038+20+0+279-372+281-70+553-411-6-370-160+120-48 +sign_ed25519_open 13 709 118526 +6415+1062+240-18+106-30-87+40+137-288+298-342-348+0-280 +sign_ed25519_open 13 887 121536 +5442+1700+110+240-306-262+0+76-160-614-424-410-174+104+486 +sign_ed25519_open 13 1109 123370 +4937+1026-32+284-232+174+1050+375+1422-41-214-196-618-588+0 +sign_ed25519_open 13 1387 123080 +5765+393+116-394+969-126-564-204-654+0-88+1152+930+309-298 +sign_ed25519_open 13 1734 124626 +5555+1277+487+226-423+432-314+40-454+0+1178-206-654-710-454 +sign_ed25519_open 13 2168 127392 +5199+848-178+600+94-392+126-112+0-516+48-452+670-644-404 +sign_ed25519_open 13 2711 131314 +4855+1516+490+0-736-1074-702+16-1084-876-866-760+1878+658+567 +sign_ed25519_open 13 3389 134065 +5807+1562+197+733+152+0-44-33-158-233+392-454-182+284-604 +sign_ed25519_open 13 4237 137779 +6605+1403+0-21+419+34-183-38+149-221-113+275-268+938-75 +sign_ed25519_open 13 5297 144687 +5432+1071+952-47+266+0-559-397-100+369-526-122+491+158-557 +sign_ed25519_open 13 6622 152202 +5813+716+0-188+290-435+167-518-545-484+1398+988+1560-182-167 +sign_ed25519_open 13 8278 162041 +5239+990+317+223-567+705+0-169+520-287-539-521-643-65+2438 +sign_ed25519_open 13 10348 172404 +6278+1472+64+1229-96+0-148-160+92-240+262-86+180-292-66 +sign_ed25519_open 13 12936 187558 +5497+560-158+574+434-490+0-690-250-666-494+1436+3124-35+568 +sign_ed25519_open 13 16171 205868 +6193+1004+502-302-254-126-38+1812+0+6+691-91-160+694-239 +sign_ed25519_open 13 20214 228085 +6404+1552+118+93-305+206+333+789-477-370-403+0-719-509-222 +sign_ed25519_open 13 25268 258491 +5786+1450-117-296+545+833+0-231+1110+266+356-32-304-51-550 +sign_ed25519_open 13 31586 293028 +5724+1081+220-45-225-656-926+0-321+478-230+160+1198+224-223 +sign_ed25519_open 13 39483 338553 +5081+757+334+350-643-279+694-258-23+0-609-199+830-396+564 +sign_ed25519_open 13 49354 397029 +4562+1570+248+80+99+0-126-1205-828+135-349+851-934-432-323 +sign_ed25519_open 13 61693 465843 +5009+608+160-664-541+246+2197+257-299-1015-1030-489+379-670+0 +sign_ed25519 14 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 14 32 29027 +3996+0+162-27+174-175+166-127+41-174-70-121+17+36-40 +sign_ed25519 14 0 32271 +2474+238+196+0-71-102+125+49-18-183-173-132+224+37-105 +sign_ed25519 14 1 32393 +139-20-24-125+116+15-75+51+63+174+0-230-176-131+76 +sign_ed25519 14 2 32358 +26+225-152+125-57+57+32-74+106-195-93-209-86+144+0 +sign_ed25519 14 3 32402 -91-199+12-96+15-257-87+167+181+16+0-54-66+219+118 +sign_ed25519 14 4 32479 +950+40-3-39+58+0-119+952+114-106+198-337-154+740-93 +sign_ed25519 14 6 32441 +376+68+41+22+150+0-108+91-117-50-132+175-32-147-316 +sign_ed25519 14 8 32432 +152-80-20+70-57+0-267+2086+273-186+120-201+208+5-108 +sign_ed25519 14 11 32347 +51+0+24+190-154+10+135+132-125+122-118-69-132-144-145 +sign_ed25519 14 14 32324 -23+174+65+218-141-82+148-111-285+156+202-22+52-10+0 +sign_ed25519 14 18 32385 +39-289+297+0-42+94-126+173+84+168+235-208-18-139-206 +sign_ed25519 14 23 32349 +165+17-148+0+129-40-46+167+201-29-1+63+96-30-207 +sign_ed25519 14 29 32346 +38-79+123-26+31-138-60+164-47-13+186+135+0-118+113 +sign_ed25519 14 37 32384 -89-227+32-20+82+177+329-109+0-133+159-95-163+164+897 +sign_ed25519 14 47 32395 -25+147+213-77-30+93+184-189-303+73+226+0+8-66-244 +sign_ed25519 14 59 33056 +318+401+162+176-97+83-135-10-56-64-136+0+105-131+20 +sign_ed25519 14 74 33093 +228+137-63+168-74+101+0+4-73+161-65-154-173+16-226 +sign_ed25519 14 93 33813 +160-87-103+125+220-275-98-89+86+113+9+0+195-84-82 +sign_ed25519 14 117 33943 +239-264-142+54-201-117+88+13+33-176+0-1-302+72+54 +sign_ed25519 14 147 33938 +0+300+96-133-117+860+199+184+24-219-187-173-59-61+90 +sign_ed25519 14 184 34561 +161+137+46+148-4-6+0+200-30-46+282+281-57-140-117 +sign_ed25519 14 231 35378 +132+16-63+0+216+82+13-67-190-168-20+114-172-7+217 +sign_ed25519 14 289 35508 +1007+334+367-148-127+82-58+0+67-29+155-164-253-73+5 +sign_ed25519 14 362 36848 +250-127+1528+62+300+0+212-245+12-48-227-143-452+87-75 +sign_ed25519 14 453 37562 +141+312+182-27+182+8+11-141-162-40-243+116-111+0-35 +sign_ed25519 14 567 38970 +0+343+105+39-9-31+97-191+26-176-113-135+192+9-110 +sign_ed25519 14 709 40289 +274+352+91+267-14+136-90+110+0+0-165-29-12-165+49 +sign_ed25519 14 887 42550 +213+143+49+142-76-131+69-219-146+51-135+0+164-143-90 +sign_ed25519 14 1109 45409 +118+217+279-190-81+0-96+114-219-121+64-176-50+24+1345 +sign_ed25519 14 1387 48325 +192+4+242+276+114+0-132-153-177-67-55+12-49-210+128 +sign_ed25519 14 1734 51739 +262-29+63+57+62-71+52-293-27+336-51+0+171-67-75 +sign_ed25519 14 2168 56720 +428+96-194+199-146-133-238+99-176+86+61-244-363+46+0 +sign_ed25519 14 2711 62432 +440+139+109+0+115+194-240+16-163-141-153+9-24-292-170 +sign_ed25519 14 3389 70394 +152-61-99+75-121-219-79-27+23-55+1132+164+2007+353+0 +sign_ed25519 14 4237 79671 +494-104+0+159+57+164-106-7+15-189+2-106+117-140-57 +sign_ed25519 14 5297 91797 +177-210-190+42-25+0-162-26-24-153+273+15+61+114+52 +sign_ed25519 14 6622 106822 +233+0+25-316+108-132-173-101+263-185+803-156-68+250+117 +sign_ed25519 14 8278 125239 +545+264+134+385+1068-33-288-60+125-19-63-39-115+0+89 +sign_ed25519 14 10348 148162 -31-5+143+2437+60+52+0-28-110-227-89+118-28+18+267 +sign_ed25519 14 12936 176513 +286-98+344+119-84+302+509+149-162-11+0-55+37-185-42 +sign_ed25519 14 16171 212269 -180-250+1507+1445+514+175+120+0-11+77-120-110-74-23+233 +sign_ed25519 14 20214 258139 -97+116-53+12+428+133+0-24-117-343+266+499-37+287-163 +sign_ed25519 14 25268 314698 +540+261-324+269+230+457-188-452+523-55+0+37-16-380-351 +sign_ed25519 14 31586 385575 +1263+1321+139+0-105-80+202+1518-254-201-90-302+780-8+106 +sign_ed25519 14 39483 473735 +13552-416-783-261-270+367+1809+230-26-639+424-65+0+21+78 +sign_ed25519 14 49354 583865 +13531-356+0+340+536+436+683+163-277-251-165-50-223+852-343 +sign_ed25519 14 61693 722170 +22577+517+1054+483-226+0+371-209-184+447-245-129-579-155+732 +sign_ed25519_open 14 0 116016 +8076+2988+628+208+400+0-10+126-252-236-10+52-208-76-256 +sign_ed25519_open 14 1 115186 +4523+560+456-150+166-274-224-188-150+248-330+82+526-442+0 +sign_ed25519_open 14 2 115978 +5433+1082+141+337+6+212+624-261-534-30-115+0-504-229-205 +sign_ed25519_open 14 3 116248 +4762+739-152-139+36-310-218+278+90+114-206+0-391+151-248 +sign_ed25519_open 14 4 117012 +4990+1010-6+52+0-20-240-528+66+12-476-60-268+150+648 +sign_ed25519_open 14 6 115780 +4861+1251-166-586-340+78+354+124+68-52+152-146+0-314-128 +sign_ed25519_open 14 8 114791 +5153+420+249-110-26+221-69-101-275+18+108-127-118+0+181 +sign_ed25519_open 14 11 115582 +4771+654-441+202-259+29-143+879-242+56+243+0-233-54-272 +sign_ed25519_open 14 14 116248 +5345+328-512-346+131+396+0+122-162+36+139-41-32-143-3 +sign_ed25519_open 14 18 116520 +4968+859+36-7-25-276+350+0-105+293-169+510+251-171-254 +sign_ed25519_open 14 23 115714 +5180+175-316+108+141-49+64-266-124-134-98+0+152+326-240 +sign_ed25519_open 14 29 116123 +5288+500+2564+520-289-496+218+0+55-66+410-204-424-257-67 +sign_ed25519_open 14 37 116319 +4882+939-377-89+0+200+457-433-493+117+189-179-381+57-1 +sign_ed25519_open 14 47 116174 +5866+738+280+245+87-16-20-207-113+0-128-213+190-20+111 +sign_ed25519_open 14 59 115393 +5717+100+176-54-301+163+0+110-2-44+259-291-384-192+846 +sign_ed25519_open 14 74 117979 +6560+627-208+342+114+0+40+2-321+1-249-685-110-260-601 +sign_ed25519_open 14 93 118258 +5393+618+123-331+419-211-59-37+0+127-94-1+116-182+152 +sign_ed25519_open 14 117 117980 +5521+1263+39+1202-189+570-14+725-42+0-22-196-276+324-298 +sign_ed25519_open 14 147 117184 +5504+1663+1068+775-174+62+134-62+0+268-28-172-146-102-22 +sign_ed25519_open 14 184 116935 +4917+833-138-307-232+0-102+153-135+259-379+10+1018+983-279 +sign_ed25519_open 14 231 117690 +4312+556-351-142+184+0+376+136+124-188-376-397-851+296-46 +sign_ed25519_open 14 289 117196 +5438+555+116-66-230+142+709+232-376-318-134-136+0-86+296 +sign_ed25519_open 14 362 119268 +4412+415+676+1015+422-589+163-602+0-677+1557-590-82-482-102 +sign_ed25519_open 14 453 119240 +5567+1353+94+333-69+194+330-140-326+52-204-74+0-64-574 +sign_ed25519_open 14 567 120685 +4646+512+59-167-16+0-333-127-69+3+516+66-21+29-263 +sign_ed25519_open 14 709 120456 +4733+878+124-12+160+0-268-168-272-184+24-290+350+222-252 +sign_ed25519_open 14 887 118545 +5487+549+140-117-109-147+267-199+107-264+307-273-84+0+407 +sign_ed25519_open 14 1109 120976 +7784+4174+481-16-83+75+0-140-94+58+102-8-468-262+82 +sign_ed25519_open 14 1387 123267 +5808+1217-424+74+139+44-318-609-46+0-35+111+6-476-40 +sign_ed25519_open 14 1734 126262 +5335+765+26-128+914+573-234+0+749-15+40-478-1-357-169 +sign_ed25519_open 14 2168 127422 +6132+1052+0-88-462+334+120-16-382+2199-182-22+52-178+44 +sign_ed25519_open 14 2711 131404 +5938+902+134-368+0-394+12+967-170-198-602-288+350+240-216 +sign_ed25519_open 14 3389 133742 +5864+762+104+452+72-31-392-502-658+0-130-260-270+326+86 +sign_ed25519_open 14 4237 139383 +5749+183-346-180+125-471-148+0+658+2491+122+25-299-426-29 +sign_ed25519_open 14 5297 145129 +5246+1103+301+210+0-181+44-123-265-167+137-631-332-441+85 +sign_ed25519_open 14 6622 153990 +5358+501-119-63+74+1302+276-168-130+0+32-175-290-168+207 +sign_ed25519_open 14 8278 162261 +5308+336+356+196-80+2101+452-877-122-188+0-234-124-110+192 +sign_ed25519_open 14 10348 173830 +5639+1707-114+516-180+502+312+188-168+0-336-108-494+120-310 +sign_ed25519_open 14 12936 187690 +5602+518-684-324+6-112+768+180+785+0-830-504+66-162-4 +sign_ed25519_open 14 16171 204737 +6175+2892+467-270+464-601+150-847-468-362-49+1063+0-405+111 +sign_ed25519_open 14 20214 227302 +6390+592+513-125+80-246-64-494+52-80+158+0-222-56+4738 +sign_ed25519_open 14 25268 257414 +5972+2366+1193+573+342+483-500-217-338-368-215-411+0+1254-327 +sign_ed25519_open 14 31586 294387 +5704+1365+71-31-133+0-275-111+129-539+1175+154+348-646-272 +sign_ed25519_open 14 39483 338821 +4392+527+271-446+594-86-483+0-295-82+82+4-239-472+140 +sign_ed25519_open 14 49354 397028 +3305+168+276+0+24-78+244+199-336+741-100-223-303-213-126 +sign_ed25519_open 14 61693 466574 +5043+90-475+203-385+3-433-122+202+0+1111-269-102+282-2 +sign_ed25519 15 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 15 32 28930 +3236+224+16-10+34+162-165-53+0-163+2-27-157+8-170 +sign_ed25519 15 0 32551 +4891+71+291+253-157+0-24+134+394-108+460-55-103-260-96 +sign_ed25519 15 1 32620 +246+356+23+220-108-88+92-121-121+225+16+0-174-154-43 +sign_ed25519 15 2 32524 -45+152+157+123-82+146+0-125-34-150+54+46-12+16-200 +sign_ed25519 15 3 32519 +40-18-50+70+436-35-45+99+0-1+763+158-83+4-129 +sign_ed25519 15 4 32630 +204+307+157-22+249-189-121-109-152+149+41-99+163-59+0 +sign_ed25519 15 6 32539 -69+31+146+120+28+82+0-100-21+7+110-1-120-21-89 +sign_ed25519 15 8 32526 +54-50+33-119+203+199+31+168+0-181-71-9-60-96+155 +sign_ed25519 15 11 32526 -59-67-17+82+88+43+16+98+0-55-106+64-65+0+33 +sign_ed25519 15 14 32581 -203+49+0+178+27+78-33-65-56+75+52-150-61-223+279 +sign_ed25519 15 18 32571 +97+35-105+189-163+136-80-173-130+124+30+0-59+190-13 +sign_ed25519 15 23 32452 -204+13+1+322+61+137-18-94-174-71-115+22+198+0-39 +sign_ed25519 15 29 32495 -18+7+172+0-81+93-135-165+211+117+26+132-33-206-24 +sign_ed25519 15 37 32479 +683+165+825-81-112+66+0-45+45+236-19-164-25+56-61 +sign_ed25519 15 47 32569 -25-101+8+6+119-271-97-71-129+128+29+128+0+132-119 +sign_ed25519 15 59 33279 +323+196+127+25-40+121-67-29-226+45+145-81+0-34-118 +sign_ed25519 15 74 33281 -5+233+385-60-120+54-15-49+0+132-18+39-142+156+88 +sign_ed25519 15 93 34007 +91+162-125+192+0-29-16+52-76-50-208+95-205+73+26 +sign_ed25519 15 117 34166 +277-84+243+0-320+109+21+93+40-58-347-39-6+93-170 +sign_ed25519 15 147 34088 +100+56+5+66-13+210-1-316+42+0-139-53+140-93-183 +sign_ed25519 15 184 34762 -85+57+151+309-5+0+197+26+116+221-20-36-107-120-56 +sign_ed25519 15 231 35596 +16-185-9+20+536+16-167-219-66+0+17+45+17-54-147 +sign_ed25519 15 289 35474 +222-64+227+164+0-110-101-424+2-63+195-106+38+240-58 +sign_ed25519 15 362 36961 +161+82-40+0+167+176-106+82-122-157+51+29-45-242-114 +sign_ed25519 15 453 37659 +327-7+147+293-64-187-80+55-124+176-78+31+64-40+0 +sign_ed25519 15 567 39165 +263+142+12+31-125+174-35-212+9-68-151+5-46+0-259 +sign_ed25519 15 709 40555 -38+50+0+7-197-20-150+10+237+211-186-118+187+31-237 +sign_ed25519 15 887 42750 +151+115+3+0+43+14-210+104-281-103-350-267-60+158-193 +sign_ed25519 15 1109 45610 -194+137-5-76+0+1111+127-203-114+2630+167-77+19+41-114 +sign_ed25519 15 1387 48453 +210+92+90+98-56-11-26+1+47+0+124-108-7-139-20 +sign_ed25519 15 1734 51844 +163+222+0-49+46+29-237-73+115+1-27+87-48-179-175 +sign_ed25519 15 2168 56879 +167-33+342+59-66+0-60+416+45-198-127+184+14-161-161 +sign_ed25519 15 2711 62687 +374+17+36-30+5-172+48-45+0-117+21+139-184-125-158 +sign_ed25519 15 3389 70599 +1389+333+150+1175-18-103+818+36+114-43-33+0-100-276-186 +sign_ed25519 15 4237 79851 +313+2212+25-24-144+46+79+0-322-191+110-29+33-106-90 +sign_ed25519 15 5297 91964 +442+18+30-69-76-130+0+61-87-121-1+148-2+14+79 +sign_ed25519 15 6622 107026 +213-43-100+30+104-191+826-138+97-237-173+56+0-239+19 +sign_ed25519 15 8278 125461 +186+199-56+0+192-40+83-130-43+41-309-1-134+77+374 +sign_ed25519 15 10348 148307 -271-164-163-16-243+13+119-146+1020+257+160+321+0-87+1288 +sign_ed25519 15 12936 176631 +590+69+83-260-21+118+52+363+101-235-210-65-40-83+0 +sign_ed25519 15 16171 212337 +842-54+269+337+72+14-162+143+0+343-115-296-71-17-5 +sign_ed25519 15 20214 258267 +0-242-195+697+1665+562+221+107-252-122-324+93-2-175+135 +sign_ed25519 15 25268 314672 +193+21-103+354-477-284-15+402-49-261-139+0+144+1957+676 +sign_ed25519 15 31586 385755 +796+103-199-248+0-50-464+91+90-118-426-326+2802+97+323 +sign_ed25519 15 39483 474112 +12113+0-108-593-72+739-226+662+387-547+1692-59+114-542+472 +sign_ed25519 15 49354 584345 +11007+249-454-144-635+2683+0+81-73+1230+16-220-588-368+165 +sign_ed25519 15 61693 722436 +13151-7+2328+96-243+510-418-78-839+518-374+0-608+316+293 +sign_ed25519_open 15 0 116911 +6947+2810+1664-362-47+85-269-146+113+0-514+477-24+136-65 +sign_ed25519_open 15 1 115278 +5128+1035+739+362-45+291-23-68+0-388-138+500-216+72-290 +sign_ed25519_open 15 2 115291 +5334+699-72-243-54+729+0-397-459-659-289+145+174+92+9 +sign_ed25519_open 15 3 115492 +5334+1543-88+512+58+76+0-112-572-148-236-392+56-238+28 +sign_ed25519_open 15 4 115226 +5777+69-121+132-188-448+0-216-328+18-54+214+546-484+916 +sign_ed25519_open 15 6 116470 +5403+1372+462+584+262+220-174-182-150-48+108-56-364-710+0 +sign_ed25519_open 15 8 117842 +5064+332+126-203-236-199+348+140+32-44+0-310-220-346+42 +sign_ed25519_open 15 11 116132 +5501+752-166-138+0+872+102-273+88-494+312-488-238+40-518 +sign_ed25519_open 15 14 115980 +4956+1154+192+300+372-404-94-12-360-14+562-106+574+0-310 +sign_ed25519_open 15 18 115237 +4322+1470-221-356-280-203+57+391+33-345-253-458+0+114+772 +sign_ed25519_open 15 23 115736 +4857+707+282+70+0+360-170-298-286-106-270-314+78-312+66 +sign_ed25519_open 15 29 115403 +5596+983+173+62+0-681-429-168-375-258+325+279+101-195-419 +sign_ed25519_open 15 37 116281 +5280+1352-167-8-285+562+535+103+105-40-358-244-107+0+155 +sign_ed25519_open 15 47 116750 +5098+679+442+0-144+164+150-50-232-302-118-162+350+132-74 +sign_ed25519_open 15 59 116708 +5711+1925+314+274-210-204-148+466-58-128-442+0+238-28+1287 +sign_ed25519_open 15 74 115478 +4639+693+8+0-182+60-196+368+244-366+284-232-354-244-390 +sign_ed25519_open 15 93 116574 +4927+961+227+124+0-253-412-284+158+323-183-172-242-336+434 +sign_ed25519_open 15 117 117596 +5657+759+182-598+466+1261+474-149+350-595-396-667-719+0-172 +sign_ed25519_open 15 147 116902 +5917+844+92-923-74+122-576+218-296+0+198-146-194-358+96 +sign_ed25519_open 15 184 118102 +6194+534-358+234-149-234+0-547+167-280-536+253+700+781-344 +sign_ed25519_open 15 231 117616 +5825+662+500+448+234-32-18+22-380-96+30+0-32-428-48 +sign_ed25519_open 15 289 115916 +7894+1455+459-62-253-150-362-352+220+224-220+0+220+138-410 +sign_ed25519_open 15 362 118762 +5468+943+0-177+1208+373+227-235-260-106-220+280-172-174+148 +sign_ed25519_open 15 453 120068 +4473+810-700-430+0+154+80-84+58+324-56+128-286-282-36 +sign_ed25519_open 15 567 119680 +5163+193-76+0+209-364-13-17-439-347+984-341+2161+369+170 +sign_ed25519_open 15 709 120196 +4953+420-326+441+18+51-512-220-431-483+0-133+88+129-322 +sign_ed25519_open 15 887 122128 +4446+982-360-306-158+96+66+111+158-297-304+0-152-379+1427 +sign_ed25519_open 15 1109 121344 +5925+1207+1007+41-252-232-190+776-288+2292+1918+0-448-306-690 +sign_ed25519_open 15 1387 125020 +4358+987-24-236+32+0-408-268+138+136-294+258-236+570-260 +sign_ed25519_open 15 1734 125316 +4753+374+32-281+511+25+309-348-90+0-134-364-248-400+104 +sign_ed25519_open 15 2168 127792 +6105+1028+0-260+342-170-146+72+350-104-474-352-104+909+312 +sign_ed25519_open 15 2711 130480 +6072+916+104+174+0-430-660+574+159-499-251-268-592-216+1921 +sign_ed25519_open 15 3389 135727 +5432+1466+739+262-104-374-145+626+86-10-43+834-591+0-2 +sign_ed25519_open 15 4237 139116 +5345+1478+253+701-241+103-24-346+563-499+0-766-29+287-568 +sign_ed25519_open 15 5297 144178 +5779+1067+726+293-208-22+528-276+558-158-16-74+0-162+112 +sign_ed25519_open 15 6622 153094 +5199+510-458-1052-502+583+2055+224+1225-25+0-310+134-204-230 +sign_ed25519_open 15 8278 162028 +5663+1375+450+96-198-68+102+616-454+0-68-24-98+206-184 +sign_ed25519_open 15 10348 174404 +4971+788+1028-47-112-100+437-303+18+146-338+0-84-40+2559 +sign_ed25519_open 15 12936 189770 +5705+1489+304-309-74+0+819-112-140+106-340+168-198+328-276 +sign_ed25519_open 15 16171 207846 +4960+979+6-328-336+12-560+0-400+40-366+794+2473-369-1033 +sign_ed25519_open 15 20214 228048 +5811+1108-114+1+188-289+0+640-135-580-303-345-215+1876+1333 +sign_ed25519_open 15 25268 258000 +5240+1881+0-169+235+1665-756-268-1267-1339-521-708+1193+70+277 +sign_ed25519_open 15 31586 295702 +4541+1444+283-321-34-316-219+0+76+1275+572-93-141-626+96 +sign_ed25519_open 15 39483 339237 +4461+546-434-2+431+557-251-485+187-307-184+270-227+73+0 +sign_ed25519_open 15 49354 397475 +4060+1199+1145-362-283+95-588-26-25+1069+80-491-221+287+0 +sign_ed25519_open 15 61693 465441 +6399+1786+795+565+176-72-576-374+123-159+437-139-19-962+0 +sign_ed25519 16 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 16 32 28980 +3597+237+236-95+74-128-59-22+69+103-56-147+0-31+5 +sign_ed25519 16 0 32431 +4550+66+221-90+200-140-10-102-6+108+0-20-191+63+40 +sign_ed25519 16 1 32328 +110+104-130+296-117+182-139-184-35+201+0+26+4-113-25 +sign_ed25519 16 2 32372 -41-31+176+100+0+111+138+159-11-181-223+24-169+88-80 +sign_ed25519 16 3 32358 -9-201+68+0-48+310+225-4+121+87+261-131-109-192+9 +sign_ed25519 16 4 32480 +6-153+93+84+39-90+143-28+91-296+0+376-137-51-136 +sign_ed25519 16 6 32408 +112-182+42-4+60-25+0-299+209-288-102+148-99+97+110 +sign_ed25519 16 8 32372 +79+136+21-96-335-33-69-67+82+0-1+158-191+46+26 +sign_ed25519 16 11 32397 -155-74+21+162+20+272-39+115+0-198-5+147-37+159-164 +sign_ed25519 16 14 32394 -26-5-324-82+275-40+173+113+106-236+262-31+0+251+136 +sign_ed25519 16 18 32379 -39+128-133+0+312-154+69+187-98+73-96-253-243+69+164 +sign_ed25519 16 23 32343 -138-120+387+211-75+0+246-79+47-120-143+210+175+24-92 +sign_ed25519 16 29 32335 +33+0-50-183-67+125+84+24-76+94-98-74-36+893+30 +sign_ed25519 16 37 32325 +207-56+16+165-92+133+2+15-51-151+0-10-157+131-52 +sign_ed25519 16 47 32394 -18+42-309+217-197+18+120+52-121+52+42-90+0-53-163 +sign_ed25519 16 59 33154 -142+69-22+146+120+30-140+262+106-255-193-127-287+0+63 +sign_ed25519 16 74 33118 +246-78-116+132+49+137+0-255-249+63-32+80-160+69+0 +sign_ed25519 16 93 33865 +220-45+95+112-56+109+28+0-82-10-62-135+48+83-107 +sign_ed25519 16 117 33894 -48+114+20-158+209+35+23+109-110+583-122-47+0-89-138 +sign_ed25519 16 147 33945 +56+192+0+10-145+135+222+23-42-1-57-48-98-67+34 +sign_ed25519 16 184 34652 -40+242+22-9+86+87-28+134+188+15-110-65-67+0-134 +sign_ed25519 16 231 35458 -138+1076+242+310+43-147-284-15+0+102+54-153+135-81-97 +sign_ed25519 16 289 35437 +344+537+77-379+90+485-61-153+249+0-208-32-27-180+252 +sign_ed25519 16 362 36905 +14+90-35-24+0-36+19-3-32-90+141+94-216+75+295 +sign_ed25519 16 453 37631 +0+244+82+73+186-42-89+94-449-341-302+126-209-176+3 +sign_ed25519 16 567 38999 -99+13-7+38+32+0-166-57+0+144+14-9-164+23+274 +sign_ed25519 16 709 40476 +27+136+155+0+122+53-185-259-62+26-160+39-3-51-20 +sign_ed25519 16 887 42533 +178+398+120-105+41-20-80-159-27-87+33+80+0-75+223 +sign_ed25519 16 1109 45486 -23+5+133+664+126+313-29+63-95-126-77+10-183+0-268 +sign_ed25519 16 1387 48300 +305+261-111-175+50+0-218+51-166+39-134+7+83-235-70 +sign_ed25519 16 1734 51774 +277+441+91-268-75-230+87+0-2-263-129+73+122+205-52 +sign_ed25519 16 2168 56822 +0+382+130-290+108-158-85+42-55+160-211+68-212+394-115 +sign_ed25519 16 2711 62475 +276+302-75+272+263+0+129-185-1+58-4+186-48-141-64 +sign_ed25519 16 3389 70377 +338+1+612+224-88-98-60-180-3+0+99+88-97-175+13 +sign_ed25519 16 4237 79851 +125+232+0+27+1-167-255+74-182-187+54-287-55+74-246 +sign_ed25519 16 5297 91888 +225+195-6+0+182-152-120-43+9+39+104+159-222-178-199 +sign_ed25519 16 6622 107080 +15+2+281+0-1+549-1+0-395+107-34+123+167-145-272 +sign_ed25519 16 8278 125505 +43+0+126+2002+123-11+32-83-9+15-55-44+66-218-46 +sign_ed25519 16 10348 148337 -57+115-261+144-58-282-231+440-6+290+0+16+47+51-2 +sign_ed25519 16 12936 176835 +194+350-202+13+0+0+152-172+31-159+91-118-53-140-132 +sign_ed25519 16 16171 212330 +2893+784+376+194-214-197+107+266-137-126+180-65-353+0-189 +sign_ed25519 16 20214 258255 +339-164+458+243+446-24-278+1804+541+118-266-164-12+0-463 +sign_ed25519 16 25268 314615 +81+378+739+324-178-254-25-31+205-100+189+0+591-7-407 +sign_ed25519 16 31586 385823 +1315+1549+361+83-180-180-124+58-209-225-197+173+47+0-444 +sign_ed25519 16 39483 473880 +25848-48+321-87+187+2768+48-299-199-339-431-159+0+190+582 +sign_ed25519 16 49354 584295 +11046-217+147+2245-541+553+257+129-101-470-153-485-514+1876+0 +sign_ed25519 16 61693 722368 +8460+0+663-739+809+670+1094-543-582+682-478-445+172-112-57 +sign_ed25519_open 16 0 114472 +8986+3328+1350-40+0+436-160+238-216+22+132-338-318-54-74 +sign_ed25519_open 16 1 115470 +6737+1250+0+424+240-2-43+91+47-160-572-146-178-148+28 +sign_ed25519_open 16 2 113945 +5150+811-279-15-169+918+8+81-600-108-271+353-229+16+0 +sign_ed25519_open 16 3 115088 +4386+363-414-552+244+0+0+254-70+96-440+234-502-180-146 +sign_ed25519_open 16 4 114969 +6027+933+148+270+267-90-89+275-7+0-376-33-218-21+684 +sign_ed25519_open 16 6 115579 +6156+992+264+29-222-352+320+0-218+324-86-83-35+221-39 +sign_ed25519_open 16 8 115806 +5108+1183+318+72+6-392+292-322-44-280+18-312-138-620+0 +sign_ed25519_open 16 11 115807 +5191+1028-279-147-215+801+4+0-335-186-60+83+767+127-7 +sign_ed25519_open 16 14 115219 +7129+1719+618+409+439+0+334-112-132-156-450+64-136-364-353 +sign_ed25519_open 16 18 116112 +5331+913+272+0+77+126-80-236-449-147+108-80-832-764+1336 +sign_ed25519_open 16 23 114228 +6162+956-169-348-386+428+0-241+90-691+466-130+88+274-720 +sign_ed25519_open 16 29 115360 +5704+1026+294-134-68-74+92+274+188+2+0-30-324-2-142 +sign_ed25519_open 16 37 116138 +5687+1071-70+208+34-426+1220+254-1095-1010+0-368-338+56-1024 +sign_ed25519_open 16 47 114490 +6325+1072+157+700-223+234-315+6-424-506-530+0-462-77+64 +sign_ed25519_open 16 59 115262 +6250+1207-236+259+159+0-398-148-29+168-282-620+575-237+928 +sign_ed25519_open 16 74 114843 +7035+1613+232+0-517-381+239+63-67+53-379-21-335-15+339 +sign_ed25519_open 16 93 117178 +4988+1016+0-528-34-601+64+847-112-316-15+253-48+430+344 +sign_ed25519_open 16 117 115275 +5619+819+24-165-455-237+686+0+424+198-22-149-69-315+343 +sign_ed25519_open 16 147 115979 +5249+968+0+128+44+72-416-276-32-53+14-163-108+111-410 +sign_ed25519_open 16 184 118028 +5337+733+66-234+304-264-23+0-375+117+34-202-217-101+929 +sign_ed25519_open 16 231 116636 +5498+611+280-91-238-3+56+56-55-18+164-457-405+0+371 +sign_ed25519_open 16 289 117034 +5883+1334+375-170+0-235+332+291-258-86+57-58+80-117-183 +sign_ed25519_open 16 362 118285 +5985+458+121+69-472+539+0+332-113-723+111-479-417-315-179 +sign_ed25519_open 16 453 118901 +5508+1147+81+9-35+55+197+265+0-126-734-181-326-523-45 +sign_ed25519_open 16 567 120113 +5272+555+106-109-452-271-71+117+257-408-74-160+878+0+106 +sign_ed25519_open 16 709 119162 +5336+805+277+140-36-408-226-588-436-199+223+330+0+112-404 +sign_ed25519_open 16 887 121638 +5668+926-76+176-268-182+14+160-112-192-172-336+0+18+34 +sign_ed25519_open 16 1109 122049 +4445+746+1233+0+4-283+21-278-124+105+15-421-141-307-75 +sign_ed25519_open 16 1387 124109 +4979+965-50+186+74-256-339-21+588+175-60+592-22+0-25 +sign_ed25519_open 16 1734 126332 +5325+295+139-403+345-358-129+724-208-115+543+262-468+0-277 +sign_ed25519_open 16 2168 126122 +5476+1266+1023-665-514+18-164-376+0-150+535+2227+327-602-272 +sign_ed25519_open 16 2711 131885 +6841+972+234+247-467-463+160+0-636+997-409+155-28-80-171 +sign_ed25519_open 16 3389 136066 +5291+1181+50-52-468+210+4+0+84-142-182+186-156-420-346 +sign_ed25519_open 16 4237 138448 +4662+617-71-156-742-300-118-570+0-429+1159+2238+458+780+136 +sign_ed25519_open 16 5297 146271 +4693+1028+345+183+451+230-165-262+0-87-35-289-454+362-261 +sign_ed25519_open 16 6622 153088 +4929+601-464-425-522+811+0+591+697-190-782-586+48-120+1538 +sign_ed25519_open 16 8278 162074 +5090+570+123+139+94+0-161-344+0+101-966-1131-119-946+156 +sign_ed25519_open 16 10348 174523 +5652+639+14-291+171+28-407-291+5-217-873+251-196-429+0 +sign_ed25519_open 16 12936 189332 +5499+853-28-99-131-502+438-319+958+0+62+1691+301-462-356 +sign_ed25519_open 16 16171 205931 +6098+588+6-416-626-577-328-445-299+237-117+179+0+639+329 +sign_ed25519_open 16 20214 226543 +6870+2329+420+57-179-1-121+213-1+105+195-397-225-79+0 +sign_ed25519_open 16 25268 258903 +5460+1029+373-346-202-17-607+359+617-151-253+0-66+250+430 +sign_ed25519_open 16 31586 295042 +4952+32+526-724-574-290+58+2433+660-157+705-399+0-446-724 +sign_ed25519_open 16 39483 339775 +4478+841+636+138+357+1130+1915-161-97-623-421-933-487+0-277 +sign_ed25519_open 16 49354 396646 +3733+922+1663+1365-385+1850+371-401-27-168+0-245+220-679-748 +sign_ed25519_open 16 61693 465744 +4570+1462+333-795+1773+117+744-203-482-366-377+725+0-63-192 +sign_ed25519 17 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 17 32 28994 +3799+177+33-231+82-137+1060+300-219-62-141-202+0+65-231 +sign_ed25519 17 0 32601 +97+207+33+848-228+0+330+31-265-441+16-206-206-239-78 +sign_ed25519 17 1 32545 +205+288+105-73-58+88-88-155+46+55-336+0-55-249+2500 +sign_ed25519 17 2 32556 +62+0+186-152+330-73+128+72-45+101-33-191+28-139-94 +sign_ed25519 17 3 32524 +183-37+63+175+97+194-24-138+81-206-72+0+265-209-56 +sign_ed25519 17 4 32528 +1298-369-300-268+141-193+153+36+108+240+0-141-57-253+168 +sign_ed25519 17 6 32494 -41+167+28+72-114+24+0+87-274-75-108-125+55+314-107 +sign_ed25519 17 8 32493 +114+144-83-98-180+252-31+78+218-44-174-33+0+31+44 +sign_ed25519 17 11 32536 -85-232+7-217+0-33-221+226-162+285+18-149+76+103+110 +sign_ed25519 17 14 32535 +40-135+283-163+52-222-45+0+95-153-23-132+46+117+48 +sign_ed25519 17 18 32442 -4-17+104+204-28-31-4-2+249+0+128+288+34-91+446 +sign_ed25519 17 23 32460 -168+14+156-340+186+245+251-109-37-143+70-132+57-91+0 +sign_ed25519 17 29 32479 -89+154-39+104+6-5+123+63-53+122-122+0-110+304-173 +sign_ed25519 17 37 32600 -4+111+143-232-268-265-233+17+1272+125+98-139+2165-161+0 +sign_ed25519 17 47 32529 -48+100+30+69-148-157-60+241+49+144+56-90-227-112+0 +sign_ed25519 17 59 33230 -95+292+11+750+91+86-75+0-120+50+55-243-182-139-5 +sign_ed25519 17 74 33284 +19+0+120+48-17-50-53+7-178+97+202-70+265-157-134 +sign_ed25519 17 93 33930 +66+205-44-30+34+167-42-68-122-152+91-83+152+68+0 +sign_ed25519 17 117 34033 +318+48-211-119-53+134-100-189+122+22+165-69+0-68+37 +sign_ed25519 17 147 34198 -92+77+235+1708+259+166-82+0+383-171-91+0+82-312-158 +sign_ed25519 17 184 34768 +315+123-22-81+65+36+32+0-47+23-26-105+89-262-45 +sign_ed25519 17 231 35564 +60-12+148-166-14-110+84+771+171+0+41-367+7-177-322 +sign_ed25519 17 289 35615 +383+51+173+0+135+394-6-353+108-358+46-110-26-228-122 +sign_ed25519 17 362 37018 +48+118-120+157-9+10+0-427+13+166-194-116+91-177-180 +sign_ed25519 17 453 37753 -87+436+268+6-119-170+55+12+8-40+0-176+50-62-168 +sign_ed25519 17 567 39110 +340+139+105+233+322+92-83-402-133+0-15+450-28-217-282 +sign_ed25519 17 709 40473 +286+400+342-22-95+129+170+173+0-42-36+2-220-81-183 +sign_ed25519 17 887 42711 +0+83+172+23+6-6-125-201+16+188+14-296-128-107-139 +sign_ed25519 17 1109 45583 +554+197-22-184-188+143-168-137+1394+457+0+1970-350+458-260 +sign_ed25519 17 1387 48412 +196+127+114+48+95+0+9-79+233-204-3-50-235-202-135 +sign_ed25519 17 1734 51926 +259+173+475-162+80-71-4+0+553-160+17-4+26-45-150 +sign_ed25519 17 2168 56867 +197+239+400-15-57+33-211+34+3-223-76-90+888-263+0 +sign_ed25519 17 2711 62754 +75+75+103-120+5+0-37-216-19+55+173-84+152-103-7 +sign_ed25519 17 3389 70569 +250+0+679+268+39+1039+49-279+217-103-126-146-27-103-197 +sign_ed25519 17 4237 79701 +790+347-169+189-151-249-35+53+56+106-149+0-95-122+42 +sign_ed25519 17 5297 91998 +352+414+0+180+16-286-165+73-29+58-161-231+110-350-428 +sign_ed25519 17 6622 107051 +189+215+13-101+0+186+129+764-89-154-118-162+51-36-40 +sign_ed25519 17 8278 125530 +244+176-238+255+133-14-118-22-38+59+244-44+0-123+230 +sign_ed25519 17 10348 148230 +481+219-216+41-275-243-138-283-10+762+138+151+0+73-81 +sign_ed25519 17 12936 176977 +37+15+51-103-145-38+55+288+304-158-291-1+0-146+150 +sign_ed25519 17 16171 212452 +1046-134+203+541+0+152+312-60+75-253-146-23-59+37-13 +sign_ed25519 17 20214 258176 +993+0+200+231+978-36-234-307+223+10+4-261-211-42-155 +sign_ed25519 17 25268 314630 +598-127+208+1180-21+349+145-267-401+2354-304+29-116+0-375 +sign_ed25519 17 31586 385772 +1282-180-294+309-524+112-106+277+43-253-329+0+2217+443-383 +sign_ed25519 17 39483 473968 +7906+509-75+0+378+1456-22+1392+301-180+28-132-59-354-454 +sign_ed25519 17 49354 584395 +21845-266-83+637+61+910-24+1712-552-198+264+0-438+498-491 +sign_ed25519 17 61693 722031 +25493+0+1944+2761-200-65-102+473+508+1161+567-520-262-436-3 +sign_ed25519_open 17 0 116034 +8214+2974+92+42-46-374-168+112-588-462+252-348+0-116+68 +sign_ed25519_open 17 1 115952 +4898+517+137-359+5+43-258+120-283+75-379+0-351-399-287 +sign_ed25519_open 17 2 117025 +5040+566+222-17+0+88+884+130-139-512-81-49+67-210-328 +sign_ed25519_open 17 3 117186 +5151+1085+380-188+170-160-20-154+274+250-40-110+286+0-206 +sign_ed25519_open 17 4 116292 +5017+856+384-72+92-114-341+140-227-413+93-477+0-266+538 +sign_ed25519_open 17 6 116235 +5629+714+235+163+394+0-424-398-98+737+189-509-91-503-25 +sign_ed25519_open 17 8 115154 +5291+595+38-136-236-418-246-206+248+82+180+12+0-116-52 +sign_ed25519_open 17 11 114790 +4749+1136+581-331+386+282+810-106-230-104+102-16+0-84-248 +sign_ed25519_open 17 14 115978 +5213+1678+567-95+196+252+108-110-248-158-278-58-322+0+182 +sign_ed25519_open 17 18 116375 +4967+756-11-396+180+85-245-337+59+155-132+54-217+0-342 +sign_ed25519_open 17 23 115390 +5311+895+170+88+90+0-106+358-10-112-396-154-10+88-146 +sign_ed25519_open 17 29 116126 +5083+1340+166-52-228+44-108+112-82+252+0-72+22-110-278 +sign_ed25519_open 17 37 114190 +5807+1529+163+130-180-214-96+702-34-524-212+80-242+270+0 +sign_ed25519_open 17 47 114988 +5683+954-62-174+0+642+706+756+72-284-700+394-598-388-120 +sign_ed25519_open 17 59 116544 +5516+996+122-227+0-98-246-334-230+425+901+172-637-360+712 +sign_ed25519_open 17 74 115896 +5670+818+110-40-25-421+37+327+106-524-377+0+165-43-230 +sign_ed25519_open 17 93 115750 +5308+1175+355+299+62-177-85+47+177-56-9-138-206-402+0 +sign_ed25519_open 17 117 117179 +4700+73+168-224-128-419-352+1033+43-188+46+0-213+134-82 +sign_ed25519_open 17 147 114714 +5688+623+42-20+0-140-156+244+22-232-204+12-88+62-274 +sign_ed25519_open 17 184 117996 +5728+940-276-122+86-152+0-138-136-98+298-332+98+26+50 +sign_ed25519_open 17 231 117744 +6106+1087+528-42-168-36-96+50+140+144+0-118-304+190-53 +sign_ed25519_open 17 289 117304 +5583+688+0+202+6-124-6-110+28+340-246+438-18-100-32 +sign_ed25519_open 17 362 115278 +6013+939+99-134-36-286+614+204+94-143+14-170-6-136+0 +sign_ed25519_open 17 453 118347 +5371+755+249-7-80-137-43+182-194+90+0-24+34+54-140 +sign_ed25519_open 17 567 118426 +6073+1046+60+375-105-238+50+0-388-24-98-37-207+1023+476 +sign_ed25519_open 17 709 120100 +5845+671+0-22+244+124-26+106-42-338-10-290+447+131-120 +sign_ed25519_open 17 887 120846 +6244+1342+300+212-54-50-24-62+84+108-342-126+0+24-290 +sign_ed25519_open 17 1109 121607 +5488+785-378+760+39+20+12-378+0-422+99-212-447-308-448 +sign_ed25519_open 17 1387 124262 +5331+1124+24+28+60-354-242+46-540+0+288-112-298-152-574 +sign_ed25519_open 17 1734 125898 +5805+633-306-64-306+544-431-333+1023+167+84+0-139-116+16 +sign_ed25519_open 17 2168 127078 +5460+907+80-230+286-240+666+542-492+0-280-90+210-144-210 +sign_ed25519_open 17 2711 129999 +5741+1004+503+332+278-54+0-54-442-313-83+595-38+57-181 +sign_ed25519_open 17 3389 136029 +6012+1593+428+494-181+0-312+125-337-241-261-99-389+659+255 +sign_ed25519_open 17 4237 140206 +4601+701+228-40-265-428-319-474-375+35-309+499+101+0+238 +sign_ed25519_open 17 5297 146071 +6048+1407+320+555-76-236-136+422-69-94-143+161+218-10+0 +sign_ed25519_open 17 6622 154240 +4975+1156+360-3-345+0-135-384+560+275+40-148-668-380+62 +sign_ed25519_open 17 8278 163188 +5887+824+472-428-336-358-102+220+0+58-256+156+22-186-276 +sign_ed25519_open 17 10348 171656 +5745+800+1870+215-49+104+69-9-220-108-205+191-357+0-271 +sign_ed25519_open 17 12936 188521 +5261+492-332-250+2-144-7-378+206+1128+75+46+0-169-319 +sign_ed25519_open 17 16171 206726 +5720+1444-100+0-22+40-118-60-470-40+288+46-54+500+1347 +sign_ed25519_open 17 20214 229781 +5829+613+471+0-8-104-87-81+305+31-53-19-181+22+37 +sign_ed25519_open 17 25268 259272 +4981+2864+382+0-342-347-207+380+59-217-124+84-422-362+240 +sign_ed25519_open 17 31586 293463 +5499+385-490-278-133-383+428+15-311+0-180+1393+497-427+1816 +sign_ed25519_open 17 39483 339992 +4214+445-38-211+501-129+835-4+102+63+0-304-214-456+309 +sign_ed25519_open 17 49354 395579 +5369+1116+559+258-19-149+372-238-84-221-410+628+764-10+0 +sign_ed25519_open 17 61693 466960 +4484+1683+72-106-185+33-739-256+0-770-323+149+1474+18-35 +sign_ed25519 18 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 18 32 29041 +3594-105+119+0+96-56+179+11+192+506-337-104-154-192-209 +sign_ed25519 18 0 32398 +7380+184+20+0+83+125-229-16+212-97-183-296-81-160+25 +sign_ed25519 18 1 32526 -204+192+0+63+2159+279+85-248-317+248+172-154-187-210-100 +sign_ed25519 18 2 32460 +193+11-128-198+111-347+99-45+0-268+129+182+129-6-35 +sign_ed25519 18 3 32451 +65+44-165-24-252+120+49-104+206-196-103+47+30-105+0 +sign_ed25519 18 4 32496 -56+84+163+0-105-173-18-245+10-154+1069+101+134+31-59 +sign_ed25519 18 6 32460 +11-94+155+1-130+27+117-328-429+159-27+154+0-205-17 +sign_ed25519 18 8 32389 -216+186-76-333+105+62-83-116+181+105+297+212-286+0-165 +sign_ed25519 18 11 32392 -182-58+263+277-299-59+0+108+257-68+23-212-134+46+172 +sign_ed25519 18 14 32438 +91+266+62+22-7+0-120+105+69-154-125+103-68-75-219 +sign_ed25519 18 18 32393 -16+236-83+284-4-3+98+55+50-21+0+123+325-113-111 +sign_ed25519 18 23 32353 -183+146+85-65+87-62+0+202+79+38-276-104+84-20-218 +sign_ed25519 18 29 32357 +0-20+279-114-101+80-38+65+97-67+105+182-184-192+18 +sign_ed25519 18 37 32356 +15-48+272+100+193-27-7+81+57+9+0-114-24-21-66 +sign_ed25519 18 47 32540 -125+0+865-181-192-266+574+1507+598-90+228+37+163-48-299 +sign_ed25519 18 59 33065 +138+204+500-1+75-25+178-73+0-132-139-126+145-321+121 +sign_ed25519 18 74 33214 +96+3-84-49+19+106-258-236-45+0+8+224+70-87-141 +sign_ed25519 18 93 33858 +360+275+124+249-85-37+161+226+39-34-6-124+0-60-179 +sign_ed25519 18 117 33996 -111-224-271+93-176-152+0+30+111+1889+54+198+212-84-391 +sign_ed25519 18 147 33952 +178-88-33+93+40+159-362-193+0-1+88+22-150+85-114 +sign_ed25519 18 184 34674 +111-78+305-239+29+0-60+12-72+130-127-4+262+24-169 +sign_ed25519 18 231 35423 -101+110+285+154+165+134+50-428+0-241+46-5-163-79-37 +sign_ed25519 18 289 35437 +155+20+1094+114-14+52-100+21-93-243+37+0-15-74-176 +sign_ed25519 18 362 36793 +86+0-60+240-93+198+28-36+209+116-122-154-117+3-111 +sign_ed25519 18 453 37447 +299+0+140-94+404-105+66-20-114-106-52+372+170-190+11 +sign_ed25519 18 567 38959 +100+258+0-177-50-100-48+80-100+188-22+92+3+215-156 +sign_ed25519 18 709 40376 +227+133+1-139+0-52+36+120+127-114+30-85-51-86-238 +sign_ed25519 18 887 42508 +432-126+283+242+185-126-60-96-21-332+0-82+78+73+186 +sign_ed25519 18 1109 45443 +70+178+41-124+77+100+0+188-7-79-238-158+2-60-279 +sign_ed25519 18 1387 48432 +1360+283-36+0+2162+439+34-188+95+93-226-501-310-227-258 +sign_ed25519 18 1734 51802 +121+482+13-91+350+0-101-114+124+78-230-157-114+93-96 +sign_ed25519 18 2168 56922 +333-238-133+27+154+1215-34+0-357-281-253+8+71-383+298 +sign_ed25519 18 2711 62478 +249+181+350+52+0-206-39-74+11-95-203+58-122+154-77 +sign_ed25519 18 3389 70330 +266+188-161-88+66-326-101-34-256-80+0+855+73+205+250 +sign_ed25519 18 4237 79625 +61-85+149-61+248+364+0+186-277-133-81-52+329+229-146 +sign_ed25519 18 5297 91642 +464+268-20+143-52-119-23-135+0-142+121-73+267+125+163 +sign_ed25519 18 6622 106772 +205-67+483+57-222-88+69-145+0-6-95+617+317+169-180 +sign_ed25519 18 8278 125466 -114+126-287+152+13+167-181-260+148-67-175-403+0+9+93 +sign_ed25519 18 10348 148143 +192-236-12-403+469+13-36-112+120+0-32-106+718+125+18 +sign_ed25519 18 12936 176744 +18-197+545+112+118-18-123+153+38-62+0-269-203-91+308 +sign_ed25519 18 16171 212276 +46-283+46+609+386+200-78+255-39-280-139-168+0+126-100 +sign_ed25519 18 20214 258111 +747+211+310+69+231+664-243+0+6-133-93-403-287-316-18 +sign_ed25519 18 25268 314534 +279+308-133-613-364+349-148+1-413-178+20-136+70+184+0 +sign_ed25519 18 31586 385629 +492+861+113+0-245+328-325-536-134-453+20-329-388+445+331 +sign_ed25519 18 39483 473649 +9227+81-544-369-86-55+734-66+22+126-150+0+94+78-405 +sign_ed25519 18 49354 584014 +10192+2187-196+0-16+395-14-697+108-304-505+256+657-184+2397 +sign_ed25519 18 61693 722322 +9096+66-407+1502-26+1858+133+66-754+0+705-92-38-213-692 +sign_ed25519_open 18 0 114066 +8504+4117+1176-451+1055-14-228-94-396+28+0-266-244+2289+244 +sign_ed25519_open 18 1 116141 +5974+821+0-453+209-16-77+360+3+65+392-116-143-325-297 +sign_ed25519_open 18 2 115759 +6075+1367-139+125-595-128+77+0-238-100+123-65+1377-215+85 +sign_ed25519_open 18 3 113693 +6354+606+591+645-206+318-504-541-113+117-49-572+26+0-250 +sign_ed25519_open 18 4 113863 +6110+925+89+343+274-102-106-232-564-149+276-488+164-103+0 +sign_ed25519_open 18 6 115758 +5509+1033+435-120+1041+237+2268-97+497+0-344-470-628-408-173 +sign_ed25519_open 18 8 114150 +5835+608+488+510+0+314+40-592-351+45-331-509-254-602-348 +sign_ed25519_open 18 11 113470 +5353+680+607+168-152-312-18-199+73-312-522+0+864-214+162 +sign_ed25519_open 18 14 113280 +5412+411+0+84-170-34+64-478+132-272+10-82+1232-169-210 +sign_ed25519_open 18 18 115373 +6985+1174-45+132+62+152-206-18+4+0-237-179+226-449-108 +sign_ed25519_open 18 23 113854 +6765+799+0+37+650-176-197-332-367-154+264+147-103+544-151 +sign_ed25519_open 18 29 115325 +6413+1122+501+131-18+0-31-250+271-188-89+17+591-17-77 +sign_ed25519_open 18 37 116058 +5627+504-240-193+56+341-14-497+0+4-83-178-211+908+3203 +sign_ed25519_open 18 47 114708 +5194+1062+136-12-392-264+4-302+0-458-178+250+162-234+146 +sign_ed25519_open 18 59 116184 +6108+1644+79+182-248+0+86-22-211-256+84-17-41-248+23 +sign_ed25519_open 18 74 116239 +5295+883+0-141+557-195+71-78+329-283+101-295-505+201-67 +sign_ed25519_open 18 93 117466 +5278+737-192+0+267+96-426-302-282-336-372-418+1848+39+44 +sign_ed25519_open 18 117 116254 +5776+1000+148-70+178+130+78-62-28-130+0-142+667-816-430 +sign_ed25519_open 18 147 115900 +5268+858+10+0-210+154-582+14-264-374-364-344+540+508-184 +sign_ed25519_open 18 184 116502 +6877+1424+636+626+522+290-202-206-93-151-131+0-285+220-213 +sign_ed25519_open 18 231 115242 +6566+1412+474-34+2115+1163+22-84+286-116-394-93-120-226+0 +sign_ed25519_open 18 289 118284 +4803+862-154-486-12-210-928-1020+1584+235+55+206+204+0-358 +sign_ed25519_open 18 362 117590 +5742+1219+85-9+35-47-239+89-36+0-86+1504-132+27-39 +sign_ed25519_open 18 453 117062 +5680+1102+476+338+236+368-34-140-187+0-326-417+116-107-558 +sign_ed25519_open 18 567 118110 +5433+830-130-144-67+142+0+31-126-18-350+92+40-214+98 +sign_ed25519_open 18 709 119950 +5766+1590+822+2087+398-51-111+435-207+46+0-32-421-222-76 +sign_ed25519_open 18 887 120224 +5673+246+746+380+30-78-52+266+288-118+0-106-114-218-308 +sign_ed25519_open 18 1109 122788 +5611+782-269-402-161+155-220+1442+57-4+52-25-323+122+0 +sign_ed25519_open 18 1387 123933 +6413+380+663+269-537-423+161-61-101+22-266+39+0-260-113 +sign_ed25519_open 18 1734 125565 +5786+375-132+44+0+679+19-45-385-263-57-164+604+508-104 +sign_ed25519_open 18 2168 126878 +5670+321+212+187-210-9-59-177+238+46-133+0+115-396-232 +sign_ed25519_open 18 2711 131448 +5682+965+299-3-88-115+137+285-142-45+98+0-65+107-356 +sign_ed25519_open 18 3389 134346 +5790+1395+530+40+0-24-238+14-160-112-44-42+214+80-802 +sign_ed25519_open 18 4237 139605 +5449+989+175-185-67+60-184-41+39+163-436+29-384+0-221 +sign_ed25519_open 18 5297 144789 +5590+868+35+123-65-113-207-90+202+0-106-401+20-51+149 +sign_ed25519_open 18 6622 153145 +5931+735+1041+233-15-435+149-394-384-184+0-489+954-471+212 +sign_ed25519_open 18 8278 163016 +5504+684-189+328+0-116+139+407-140+130-364-115-161+5-25 +sign_ed25519_open 18 10348 174320 +5031+939+22+490+0+560+84-561+417-133-478-349-182-49-350 +sign_ed25519_open 18 12936 189116 +6064+707-84-186-130-116-358-305+97+7+255+58+1285-145+0 +sign_ed25519_open 18 16171 204170 +5159+1279+242-40+325+35-180+234-232-60-117-61+0-168+352 +sign_ed25519_open 18 20214 227024 +6552+1271-72-94+26-300+222+18+76-288+330-286-232-354+0 +sign_ed25519_open 18 25268 255862 +5851+1263-34+150+0+102+199+231+746-14-231-703-180-542-358 +sign_ed25519_open 18 31586 293038 +5518+1418+384+3161+469+80+0-92-110-304-778-112-396+466-10 +sign_ed25519_open 18 39483 339842 +4209+1174+227+2-146-437-684+1029+2809+9+0-345-401-82-129 +sign_ed25519_open 18 49354 396396 +5585+1843-74+2055-214+131-448-650+100-266-597+0+539+28-177 +sign_ed25519_open 18 61693 465272 +4563+735+1092+119-81+1098-330-797-93+0-195-226+453+898-475 +sign_ed25519 19 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 19 32 28915 +3765+0+71-100+246-159+60-42-194+21-57-24+67-115+15 +sign_ed25519 19 0 32612 +2340+0-5+74+111-3-226-179-52+135+21+149+27-155-145 +sign_ed25519 19 1 32619 +178-221+3-17+67+147-277-231-163+9-301+72-100+191+0 +sign_ed25519 19 2 32534 +64+127-84+124-32-68-21+0-141+86-35+158+160+5-69 +sign_ed25519 19 3 32653 +8+105+4-218+162+47+170-154-72-125+81-70-183+0-227 +sign_ed25519 19 4 32630 -32-102+14-232-239-134+0+125-49+112+4+29-304+4+40 +sign_ed25519 19 6 32636 +0+71-153+40+19-225-101-185-54+94-28+154+1178+161-222 +sign_ed25519 19 8 32532 +222+177+104+176-169+2-143-97+81-81-45-50+0+50-70 +sign_ed25519 19 11 32531 +30+228-179+117-33-101-87+242+58+88-112+99+0-77-44 +sign_ed25519 19 14 32550 -85-57-98+546+42+33-221+165+82+0-107-133+226-264+41 +sign_ed25519 19 18 32526 +168-257-151+193+0+21+139-32-16-64-40+147+36+139-150 +sign_ed25519 19 23 32533 +0+28-89-119+37-84+134+234-138+181-72-97-81+96+145 +sign_ed25519 19 29 32588 -20-8+121+49+0+66-19+37-16-140+267-24-96+96+37 +sign_ed25519 19 37 32494 +250+2587+400+26+45+418-7-38+141-67+0-54-27-17-78 +sign_ed25519 19 47 32546 +0+62-114+58+31+26+363-31-94-40-102-64+95+160-23 +sign_ed25519 19 59 33303 +76+1065+325+176-82+150-4+151-125-133-265+99+0-143-66 +sign_ed25519 19 74 33286 +278+179+153+19-87+45-109+142-188-84+0-82+194-85-42 +sign_ed25519 19 93 34123 +80+182-131+18+56+104-75+100-206-135-20-152+85+0-23 +sign_ed25519 19 117 34066 +163+365+81+211-2-175+0+132-93-85-136+160+137-104-222 +sign_ed25519 19 147 34116 +249+0+98+121+81+21-90-36+16+290-59-58-140-67-29 +sign_ed25519 19 184 34768 +235-25+123+139-123+193+207+402+0+285-195-155-7-105-56 +sign_ed25519 19 231 35646 +99-101-132+120+79+29-59+247-244-209-12+3+129-31+0 +sign_ed25519 19 289 35561 +305-22-7+55+93-65+306+315-144-58+0-285+132-271+46 +sign_ed25519 19 362 37185 -247+771-5+10-185+2477+28+0-267+123-210+34+80-313-136 +sign_ed25519 19 453 37648 +43+391+115+200+49+336+170+0-40-76-152-150-148-133-122 +sign_ed25519 19 567 39122 +177+99-27+0-58+222+117-56-196+92-20+246+436-14-40 +sign_ed25519 19 709 40559 +92-114+95-222+156+0-6+27-116-71+12+10-44+35-108 +sign_ed25519 19 887 42733 +13+143-60+87+319+65+0-145-70+102-123-203-104-103+152 +sign_ed25519 19 1109 45556 +389+173+55+103+0-36+124-54-65+177-55+235-25-246-10 +sign_ed25519 19 1387 48413 +0+90+26+34-63-143-189+67-274-164+667-57+71-12+21 +sign_ed25519 19 1734 51916 +12+70+8+0-31+9-2+214-100-111-61+0+227-78-98 +sign_ed25519 19 2168 57048 +18+964-68+0+65-44-271-3-213+442-105+166-66+95+60 +sign_ed25519 19 2711 62776 +234+9-262+139+84-208+0+67+1964+68-97-274-14-64-204 +sign_ed25519 19 3389 70544 +258+265+126+0-13+122-86-105+7+92+119-169-68-110-261 +sign_ed25519 19 4237 79848 +521-125+192+46-26+83-154-103+207-50+0+0+186-20-159 +sign_ed25519 19 5297 91924 +143+324+146-135-165-55-206-49+5-168+50+82+141-65+0 +sign_ed25519 19 6622 106954 -205+98+237+126+98-130-39+227+8-5-170-71+0+292-85 +sign_ed25519 19 8278 125563 +1942+0-112+279+74-135-40-155+15+36+37-29-226-121+78 +sign_ed25519 19 10348 148326 +1501+572+213-297-112+18+93-129+0+113-99-84-23-178+620 +sign_ed25519 19 12936 176751 +412+583+195-8+80-19+219-121-98-64+0+147+110-228-219 +sign_ed25519 19 16171 212719 +44+0-334-262+30+964+1265+34-101-361+35-554-121-684+212 +sign_ed25519 19 20214 258065 -22-134+371-123-60+25+57+813+99+101+189-33-262+0-54 +sign_ed25519 19 25268 314681 +529+51-205-250-69-286+398-407-162+0+16+40+164+161-340 +sign_ed25519 19 31586 385717 +681+47+902+309-129-165-98+436-90-356-201+108+0-45+760 +sign_ed25519 19 39483 473960 +9196+121-486+568-117-359-94+444+0+153+24-30+86-12-703 +sign_ed25519 19 49354 583900 +17893-130+694+0+48-114-846+1036-63+246-461-68-33+474+751 +sign_ed25519 19 61693 722156 +13117+588-93+452-94-813-344+0-282-423+382+853-22+48+1579 +sign_ed25519_open 19 0 116964 +8239+2353+276-548+236+45-56+715-52+241-152-322+0-144-250 +sign_ed25519_open 19 1 114836 +6602+660+332-164-162-2+102-508+0-216-48+402+14-290+326 +sign_ed25519_open 19 2 116400 +6070+1551+56-164-409-130+196+118-519-302+236-463-1+127+0 +sign_ed25519_open 19 3 117050 +8088+1407+402+286-243-259+190-375-451+0+21-242-404+104-333 +sign_ed25519_open 19 4 115663 +5903+1308+55-275-356-302+0+120-755+95+17-36-478+182-560 +sign_ed25519_open 19 6 115015 +5559+602-61-287+777+0+1180+110+736-327-47-189-211-357+93 +sign_ed25519_open 19 8 115178 +7790+941+690+216-758-624+118-198+24+0-694+176-674-560-512 +sign_ed25519_open 19 11 115128 +5897+955-407-66-181-131+224-188+78-54+404+201-185+94+0 +sign_ed25519_open 19 14 116080 +5147+620+0-744+20+174-26+64-46+62+52-430-364-280-76 +sign_ed25519_open 19 18 114806 +6289+1258+176-172-736-572+118-106-248+0+799+42-476-666+90 +sign_ed25519_open 19 23 116108 +5097+303+104-20-112-540-716+1230-225+324+0-378-752+208+1107 +sign_ed25519_open 19 29 115952 +5611+1529+532+56-140-2-468-26+420+270+0-512-134+18-80 +sign_ed25519_open 19 37 115413 +5867+665+543-19+198+103-197-410-240+133+0+81-204-546-67 +sign_ed25519_open 19 47 115110 +5826+1023-72+0+60+116+76-104-154-368+32-208+506-462-22 +sign_ed25519_open 19 59 116608 +5934+1133-141-167-172-17+515-103+0+117+123+74-508+214-285 +sign_ed25519_open 19 74 114972 +5512+566-320+0-224-90+721+838+2108-167-500+765-117-204+238 +sign_ed25519_open 19 93 117026 +6144+569+78+54+408+134+0-94-874-518-392-610+46-280-770 +sign_ed25519_open 19 117 114928 +5596+925+161-217+22+138-348+0-288-73+183-326-544-103+1013 +sign_ed25519_open 19 147 116224 +6221+1018+330+368+0-626-144+42-396-242-258+621-314-242+186 +sign_ed25519_open 19 184 117078 +6206+737+242+660-196-233-266-110+138-97-38+427+0+3390-45 +sign_ed25519_open 19 231 115064 +6006+692-192-610+0+413+338+1132+552+794-482-658-774-790-1078 +sign_ed25519_open 19 289 116980 +5605+748+22+200-208-522+94+400+394-124-228-254-278+0-478 +sign_ed25519_open 19 362 117182 +5998+671+198+144-71-383+11-12-160-323-1073-282+0+1441+828 +sign_ed25519_open 19 453 118478 +6499+933+572-298+702+228+0+284-330-444+192-362-296-488-158 +sign_ed25519_open 19 567 120020 +5407+514-124+42+0+248+76-36+246+58-76-360-178-304-564 +sign_ed25519_open 19 709 119528 +6026+976-728+1262+680-520+0-376-104-64-806+330-102+12+570 +sign_ed25519_open 19 887 120146 +5834+1847+178+144-90-24-120-86+2245+306+0+274-126-52-12 +sign_ed25519_open 19 1109 120846 +5727+1601+932+322-58+0-510-261-611+1325+408-36+88-116-150 +sign_ed25519_open 19 1387 123364 +6154+1767+682+0+72-248-46+18-82+244-124-630+242-246-362 +sign_ed25519_open 19 1734 124684 +6891+1807+1329+962-131+196-211-453+453-202-54+0-455-250+2577 +sign_ed25519_open 19 2168 127974 +5512+768+449+280+64+224+0+272-454-746-766-590-978-932-826 +sign_ed25519_open 19 2711 128936 +6655+2022+690-108+84-505-412+276-640-229-13+84-267+70+0 +sign_ed25519_open 19 3389 133996 +6435+2529+868+768+198-307-58-4-32-82-31+0-121+39+303 +sign_ed25519_open 19 4237 139234 +6519+631-148+433-146+164-171-255-940+0+469+99-10+251-270 +sign_ed25519_open 19 5297 146306 +8557+1983+0-42+20-436-134+774+24-98-448-572-230+882+536 +sign_ed25519_open 19 6622 153049 +6101+1063+143-159-79+73+197-415-113-285-261-117+349+1056+0 +sign_ed25519_open 19 8278 161598 +6281+874+161-279-642+443+10-433-11+10+187-129-237-291+0 +sign_ed25519_open 19 10348 172290 +6726+1305+298+127+170-90+1873+0-305-234-195-55-131-386+77 +sign_ed25519_open 19 12936 187301 +6409+1009+184-73+0-10-46-454+181+52-262-34-332+1187+292 +sign_ed25519_open 19 16171 206080 +12412+10386+102-348-142+140-122-14+0-22+264-32+744+442-220 +sign_ed25519_open 19 20214 229357 +6353+2186+442+73-373+58-264-476-101-306+67+741+0-218-204 +sign_ed25519_open 19 25268 259013 +5598+412+1673+397+266+0-365+19-283-82-210-117-63+111-163 +sign_ed25519_open 19 31586 294127 +5011+204-344+181-365-281-529-205+0-50-36+58+457+143+1479 +sign_ed25519_open 19 39483 339892 +4043+781-183+385+119+0+158-189+870-55+74-67-435-354-247 +sign_ed25519_open 19 49354 397173 +4598+2287-729-415+160-671-724-784-401-574+94+0+270+364+702 +sign_ed25519_open 19 61693 465126 +5117+1341+2556-623-460-512-1242-984-677+311+0-1017+845+2643+641 +sign_ed25519 20 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 20 32 29013 +3682+359+0-262-125+12-163-234+7-147-108-107+2342+183+207 +sign_ed25519 20 0 32421 +2167+356+41+21-103-145+0-132+132+31-207-47-260+12-371 +sign_ed25519 20 1 32362 +193-287+60+305+174-6+323+0-2+143-22-76-20-17+1 +sign_ed25519 20 2 32365 +211+24+138-18-108+121-78+9+317-88-31-117-19+0+131 +sign_ed25519 20 3 32403 +52+0+272+386-104-75-62+156-208+65-38-25-27+34+248 +sign_ed25519 20 4 32421 -2-27+140+0-190-82+159+184-118+118+96-35+72+91-30 +sign_ed25519 20 6 32452 -128+77+69-156+191+104-101-106-47+0-229-47+36+72+127 +sign_ed25519 20 8 32439 +953+74+37-68-180-75+48+50-122-104-142+0+16+78-14 +sign_ed25519 20 11 32496 +92+240+110+85+119-229-121-111-190+13-60+96-15-181+0 +sign_ed25519 20 14 32397 -36-214+228+239-150+0-103+39+65+38+91-45+81-64-86 +sign_ed25519 20 18 32330 +292+131-74+175-6+123-50-35+212+97-60-42+0-78+83 +sign_ed25519 20 23 32410 +41+27+170-180+189-58+0-145-117+115-24+46-141+154-149 +sign_ed25519 20 29 32428 +0-54-166+70+25+157-39+67+62+8-106-26-119-71+829 +sign_ed25519 20 37 32419 +144+74-293-75-52-134+65+0-45+14+110+73-52-126+172 +sign_ed25519 20 47 32371 -13-126+162-132+0+108-143-32+172+133-97-13+66+210+48 +sign_ed25519 20 59 33119 +0+70+10-9-185+56-171-165+1194+210-139+132+310-176-137 +sign_ed25519 20 74 33162 +394+365+251+222+314-13+0+209-129-66-30-86-63-91+205 +sign_ed25519 20 93 33974 +373+379-31+143+81-117-77+148-238+23-231-146+0+22-337 +sign_ed25519 20 117 33906 +153+286+86-57-52-74-248+0-166+13-21+119-250+137+29 +sign_ed25519 20 147 33948 +115+0+74+20-97+97-104-129+162-171-261-138+112+15-173 +sign_ed25519 20 184 34590 +144+10+63+0-3-59+244-96+184+9+24-51-110-18-61 +sign_ed25519 20 231 35413 -120+90+339-256-158+169-254+204+0+33-93-117-189+35+62 +sign_ed25519 20 289 35353 +125+85+172+101+0+129-32-13-47-5+90-10+42-26-105 +sign_ed25519 20 362 36833 +75+177-87+240+0-178+70+828+411+184-20-67-156-100-138 +sign_ed25519 20 453 37649 +112+123+0-80-31-114-115-178+136+186+195+220-142+67-157 +sign_ed25519 20 567 38911 +198-1+29-23-19+73+0-141+85+61-41+195-177+120-166 +sign_ed25519 20 709 40351 +90+257+78-34-9-30-97+57+215+0-86+109+129-268-231 +sign_ed25519 20 887 42560 +24+150-210+0+128-45+170+41+160-75-143+2-106-96-17 +sign_ed25519 20 1109 45302 -22+39+414+77+124+17+224-18-77+99-15+0-224-24-141 +sign_ed25519 20 1387 48245 +268+98-10-2+164+48+174-50-67+30-354-107+0+5-244 +sign_ed25519 20 1734 51934 +238+2242-104-72-284+28+187+856+0-143+148+48-199-179-144 +sign_ed25519 20 2168 56657 +509+141+138-37-182-93-41-79+177-20-201+7+56+101+0 +sign_ed25519 20 2711 62481 +284+68-8+35-126+83+0-115-85-115+45+32+223-125-14 +sign_ed25519 20 3389 70321 +109+60-141-80+34+106+40+168-72-210-164-5+19-44+0 +sign_ed25519 20 4237 79741 +183+142+185+759+0+106-213-283+1-215-261-107-151+243-200 +sign_ed25519 20 5297 91865 +274+100+0+301+59+86-48-85+40-138+385-27-55-31-106 +sign_ed25519 20 6622 106801 +231+68+59-51+44+422-31-197-20-75+0-43-142+1967+215 +sign_ed25519 20 8278 125415 +1021+187-160+356+0+129-6-39-118+17+108-120+8-19-206 +sign_ed25519 20 10348 148144 -20+205+136+0-98+161-50-39-42+177+18+33-43-51+51 +sign_ed25519 20 12936 176822 +875+86+129+0-22-122-197-343+431+117+52+44-149-44-32 +sign_ed25519 20 16171 212415 +601+217+0+12-195-247+495-164-127-341+65-162+504-51+252 +sign_ed25519 20 20214 258190 +1780+97-172+17-65-275+25-249+1503-285-470-221+31+91+0 +sign_ed25519 20 25268 314608 +273+15+117-155-129+0+660+3300+442-278-538-46-174-67+81 +sign_ed25519 20 31586 385591 +744+26+470+291-51+297-599+290-143-227-106+32-289+0-105 +sign_ed25519 20 39483 473958 +10808+954+572+74+1320+298-212+153-800+0-409-368-446-423-542 +sign_ed25519 20 49354 584176 +9864+38+902+525+0-521+133+788-209-113+1-354-163-281-169 +sign_ed25519 20 61693 722230 +12774+762+65+94-81-260-727+4-605-350+540-234+102+0-770 +sign_ed25519_open 20 0 116720 +8420+1597-114-115-45-126+88-294+624-104+122+0+268+30-214 +sign_ed25519_open 20 1 115222 +5590+605+334+50-326+89-291-83-275+62-150+0-256-109+243 +sign_ed25519_open 20 2 117632 +4438-892+618+407+375-1106+0+19-584+100-1119-123-69-426+135 +sign_ed25519_open 20 3 115244 +7012+1988+300-14-88+112-324+104-374-232-110+0+140-118+814 +sign_ed25519_open 20 4 116934 +5694+1564-105-166+299+88+120-333-287-94-14-242+115+0+87 +sign_ed25519_open 20 6 116518 +4502+337+64+185-268+385-431-418+219-406-344+0-634+2-372 +sign_ed25519_open 20 8 115850 +5001+576+520+0+72+146+200-158-140-138-211-183-122+6-98 +sign_ed25519_open 20 11 115606 +5102+120-279-248-108+224+228+110-62+0-212-60+114+60-276 +sign_ed25519_open 20 14 116553 +5501-283+568+270-865-170+238+543-529-915-1208+6-1034+527+0 +sign_ed25519_open 20 18 116034 +4961+413+300-123+176+2485-147-252+194-470-360-415+0-55+40 +sign_ed25519_open 20 23 116182 +5611+1148+492-430-8+0+418-238+413-491+38-138+12-338-258 +sign_ed25519_open 20 29 115352 +4766+310-112+0-236+1809-131+654-222+1364-212+994-170+1736-162 +sign_ed25519_open 20 37 115845 +5167+332-298-14-17+577+85+97+0-638+283+271-634-360-148 +sign_ed25519_open 20 47 116060 +6498+3757+351+46+0-229-234-92+88-306+279-293-410+94-170 +sign_ed25519_open 20 59 115368 +4972+790+468-234+0-452+13-3+229+43-293-279+193-219-168 +sign_ed25519_open 20 74 117497 +4934+758+16-166-467+394-61+309+86+94+0-187-305-303-407 +sign_ed25519_open 20 93 117401 +5639+3482+399-69+215+169+165-407-511-662+0-62+65-21-43 +sign_ed25519_open 20 117 117294 +5107+1421+743+232-15+60-160-78+0-318-124+328-21+151-311 +sign_ed25519_open 20 147 116448 +5942+1030+142-56+226-54-642-172-198+374+0+22+132-162-88 +sign_ed25519_open 20 184 117938 +3962+926+64-394+92+0-346-422-332-652+263-484+152+394-750 +sign_ed25519_open 20 231 118786 +4925+1298+44-74-32+0+1224+441-188-141-410-272-114+1727+574 +sign_ed25519_open 20 289 118128 +5703+968+66-98+0-304+18-382-394-260-384+10+118-394+152 +sign_ed25519_open 20 362 118941 +5662+1236+223+332-5-32-91-227+0+331-51-174-299+1175+539 +sign_ed25519_open 20 453 119046 +5590+263-178+168-326-486+181-272+185-204+14+118-226-10+0 +sign_ed25519_open 20 567 119233 +5927+1292+1011+391-131-223-423-465+260+359-121-325-564+278+0 +sign_ed25519_open 20 709 119800 +5415+694+0+968+1698+45-52+532-920-535+145-51-362-496-306 +sign_ed25519_open 20 887 121008 +4755+1014+394-585-265-315+0-35-311+190+638+194-99-596+77 +sign_ed25519_open 20 1109 123884 +4522+703-98+176-297+257+170-556+983+499-294-360-116+0-76 +sign_ed25519_open 20 1387 123483 +4458+880+639+0+443+193+625-283-633-671-13-115-57-775+255 +sign_ed25519_open 20 1734 126177 +5206+503+2687-12+317-149+88+0-297-218-407-325-677+249+176 +sign_ed25519_open 20 2168 129240 +5082+1416+0-204+22-454-91+255+294-606+28-182-154+290-36 +sign_ed25519_open 20 2711 130919 +5653+1192+186+540+50-14-20-383-202-80-149+355+73-228+0 +sign_ed25519_open 20 3389 136072 +8298+1591+480+218+88-186+0-79-331-345+133-381+280-350-149 +sign_ed25519_open 20 4237 140084 +5661+672+130-434+6-58-170+200-500+0+250-398-430-496+204 +sign_ed25519_open 20 5297 146552 +5525+915-26-286+300+26-380+470-341-438+748-30+0-114+184 +sign_ed25519_open 20 6622 152238 +6325+1352+603+427+0+138-148-51-11-758-280+735+54-410-303 +sign_ed25519_open 20 8278 161626 +6362+1436+808-8-148+0+280+82-384-376-14+128-380+400-270 +sign_ed25519_open 20 10348 174795 +5071+567-334-243+871+244-315+383+342+0-146+845-206-480-189 +sign_ed25519_open 20 12936 188172 +5849+204-294-115-80-1090+420+274+12-396+0+111+88-509-1414 +sign_ed25519_open 20 16171 206888 +6535+872-26+0-264-18-26-70+20+126+92+293-101-90+144 +sign_ed25519_open 20 20214 230098 +5814+1198+444-59+267+0+927+268-8-356-213+58-35-146-88 +sign_ed25519_open 20 25268 257867 +5342+493+119+343+401-63+447+0+85-439-261-471-554-285-140 +sign_ed25519_open 20 31586 294104 +4900+1079+217-124+0+102-134-512-806+98-9-256-815+746+402 +sign_ed25519_open 20 39483 339358 +4493+1272+29+0-608+289+324+553+500-60-573-578-188-201-788 +sign_ed25519_open 20 49354 397408 +4531+724+1229+390-332-51+0+218-28-319-389+8+261-432-340 +sign_ed25519_open 20 61693 467891 +3835+742+777+751-758+0-407-1075-663-997-76+116+631-956+80 +sign_ed25519 21 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 21 32 28984 +3723+98-120-40+129+0+499+78-69-51-130-24+3-170+52 +sign_ed25519 21 0 32524 +2425+72+0+224+37+16-52+38-106-313-1-32+46-28-217 +sign_ed25519 21 1 32651 +178+148-4+74-276-48+130-93-144+60+0+6+142-165-214 +sign_ed25519 21 2 32596 +171+67+48+106+2-10-23-13-118-62+112+158-243-67+0 +sign_ed25519 21 3 32618 +35+0+16+195-41+248-164-84-140+24-56+44-12-137+13 +sign_ed25519 21 4 32501 +276-35+242+123-150-97+0-177-76-257+232+101-39+143+81 +sign_ed25519 21 6 32538 -104+91-19+773+185+1080-149-78-28+0-155+205-61+440+136 +sign_ed25519 21 8 32571 +228+104+199-31-263-16-194+0-180+323+91+89-141+111-75 +sign_ed25519 21 11 32569 +5+25+133-130+61-122+243-50-217-155+82-63+0-140+2 +sign_ed25519 21 14 32622 -18+94-5+112-283+132-86+0+24+6+30-38+13-66-225 +sign_ed25519 21 18 32567 +105+2534+684+282-156-54+57+54+0-41-168-31-121+19-125 +sign_ed25519 21 23 32557 -67+205-1+350-83-24+156+69+25-82+188+0-185-165+7 +sign_ed25519 21 29 32557 -69+116+168-139+0-84+262-136-94-61-18+60+18+39+57 +sign_ed25519 21 37 32510 +171-60+501+282+367+79+0-156-128-76-61-16+187+131-96 +sign_ed25519 21 47 32542 +5-84-57-209+53-10+107-48+228-41+0-195+821+275+150 +sign_ed25519 21 59 33491 -124+49+45+110+46+23-31+12-270+0-105-200+5-377-294 +sign_ed25519 21 74 33352 +288-246+210-105-57+68-205+116+158-72-122-103+108+0+52 +sign_ed25519 21 93 34076 +118+293-148+0+255+42-60-20-86+56-46-157-46+176+62 +sign_ed25519 21 117 34240 +108-84-76+31+34-181-308+46-112+66+0+297+150-210-137 +sign_ed25519 21 147 34174 -55+4-22-131+191+116+0+43+18+89-215-207-190-106+69 +sign_ed25519 21 184 34774 +147-7-158+157+185-2+328-180+203-115-65+0-73+43+201 +sign_ed25519 21 231 35621 +25-89+19-111+96-176-50+77+0+0+9-246-131+89-45 +sign_ed25519 21 289 35681 -99+258-265-88+55+57-15-155-16+2-214+29+1261+0+38 +sign_ed25519 21 362 37100 +1399+351-58-136+144-292-47+82-133+0+30-32-126+131+362 +sign_ed25519 21 453 37730 +238+5+10+70-25-52+0-162+334+174-38-40-20-189+20 +sign_ed25519 21 567 39145 +43+273+114-8-97-248+0+173-285+75-100-139-117+65+95 +sign_ed25519 21 709 40537 +150+75+65+9+79+39-244+0-36-11-22-78-136+213-50 +sign_ed25519 21 887 42760 +30+201-297+81-52+0-79-100+174+167-93+305-123+133-295 +sign_ed25519 21 1109 45586 +24+282+118-37-85-187-20-76-237+129+0+151+29-83+212 +sign_ed25519 21 1387 48511 +120+1040+70-203+125+667-343-17+200-55-81+520+0-354-174 +sign_ed25519 21 1734 51997 +296-88+1-100-138+201-179-163-170+17-4+1157+747+121+0 +sign_ed25519 21 2168 57006 +75+325+66+79-55-83+1-215+0-114-305+114+12-71-94 +sign_ed25519 21 2711 62686 +369+54+68+141+59+234-76-10-140-323-14+0+279-174-94 +sign_ed25519 21 3389 70519 +8+132+156-180-37+72-25+134+108-44+0-79+105-77-351 +sign_ed25519 21 4237 79881 +395+242-60+375+45-62+49+38+0-7-78-332-105+68-70 +sign_ed25519 21 5297 91953 +171-282+105+185+241+53-140+273-91-133-40-57-130+51+0 +sign_ed25519 21 6622 107016 +1013+93+272+81-31-86-225+37-67+0+5-289-239-188+1016 +sign_ed25519 21 8278 125572 +219+457-71+1384+300+0+202-188+125-42-56+83-266-199-91 +sign_ed25519 21 10348 148412 +82-268+128+62-309+8+0-329-107+96+8-175-313+583-102 +sign_ed25519 21 12936 177055 -33-210+407+85+28+10+37-245+0+279-194+78-288-362-450 +sign_ed25519 21 16171 212489 +200-49+0+47+1395+700+1032-122-14-219-87+30-372-243+154 +sign_ed25519 21 20214 258312 +698+248+209-423-144-670+896+70-383+62+100+0-40-188-319 +sign_ed25519 21 25268 314658 +2551+222-137+311-211+776+222+119-14-1-26-214-182+0+19 +sign_ed25519 21 31586 385786 +683+543+2327-608-233+262-240-90-112+24-296+0+44-397+1118 +sign_ed25519 21 39483 473914 +17048-191+2053+250+106-165+960-397-158-231-224+124+157-444+0 +sign_ed25519 21 49354 584196 +11540-45+1313+0+76-136+554-122-115-260-51+324+394-152+267 +sign_ed25519 21 61693 722158 +40325+67-253+680-273-138-483+169+127+853-176+0+150-145-234 +sign_ed25519_open 21 0 113778 +7455+3284+1069+1219+540-180+74+342+0-340-36-247-209-67-202 +sign_ed25519_open 21 1 116993 +5151+1085+180+262-244+393-143+95-129-162+0-138-10+88-217 +sign_ed25519_open 21 2 115578 +4845+1142+237+226-461-390-412-146-598+0+47+863+333-60-224 +sign_ed25519_open 21 3 116065 +6572+1223+121-88+34+43-87-126-79+428-26-263+0-7+51 +sign_ed25519_open 21 4 114601 +5464+617-197-181+783+270+85-222+0-86+4-26+130-438-267 +sign_ed25519_open 21 6 114940 +4901+619-86+811-172+0+38+76-186-410+118+128-236-104-86 +sign_ed25519_open 21 8 115256 +5392+616-258-258+68-24-192+50-153-147-532+0+26+29+96 +sign_ed25519_open 21 11 113806 +4995+580+336-155-143-179-192-66+0+4-201+2+1032+19-153 +sign_ed25519_open 21 14 115270 +5646+486+280+70-202-104-244+0-142+334+310-16-324+84-248 +sign_ed25519_open 21 18 114392 +5500+622-294+30-418-4+0-170+44+22-106+8+26-210-48 +sign_ed25519_open 21 23 115032 +5169+636+141-116+544+197-294-182+16-118-343-117+0-525+311 +sign_ed25519_open 21 29 115975 +5440+642-58-385-51+63+121+48-436-141+14-17+103+0-501 +sign_ed25519_open 21 37 114597 +6022+562+112-107-187-33-30-295+190+128-54-80+0+942+704 +sign_ed25519_open 21 47 115154 +5458+1125+90+343-47+0-22-287+252-69-147-311-95+128+83 +sign_ed25519_open 21 59 116075 +5961+961-120-57+227-375+11-441-362-175-208+280+144+0+3 +sign_ed25519_open 21 74 115695 +5353+844-148+153-11+933-147+187-2-149+60+209+0-398-214 +sign_ed25519_open 21 93 116660 +5385+780-61-94+154-314-142+39+0+71-201+262-62-107+124 +sign_ed25519_open 21 117 117108 +5227+1178+236+135-135-409+172-575+0-183+120-397-277+657-296 +sign_ed25519_open 21 147 115742 +5353+1331+678+258-199-93+307-2-70+6+60-334-236-236+0 +sign_ed25519_open 21 184 116837 +5439+980+168-392-204-239+210+0+87+308-139-630-8+27-247 +sign_ed25519_open 21 231 115570 +5000+1123-59+0+705-33+521+273+245-72-169-26-65+43-101 +sign_ed25519_open 21 289 116290 +6077+1129+250+276+168-158-188+248+0-156-228-204-650-152+320 +sign_ed25519_open 21 362 116184 +5890+992-171+0-111+63+194-354-124-306-288+66+1147+232-470 +sign_ed25519_open 21 453 116882 +5954+470+112+48-40-300+68-46-194+80+26+0+0-172-232 +sign_ed25519_open 21 567 118688 +5921+815+212+356+14-282-128-172-240+0+4+48-156-226-726 +sign_ed25519_open 21 709 120852 +5523+638-144+565+659-46+0+274-368+90+54-18-188-184-180 +sign_ed25519_open 21 887 119744 +5630+948+214-34+190-170+4+6-148-322-62+214-8+0-192 +sign_ed25519_open 21 1109 122904 +5411+1126+380-164-432+16-370-394+0+995-32+530-50-208+416 +sign_ed25519_open 21 1387 122055 +6414+978+265-507+623-101+55-65-65-100+154+1-127+0-168 +sign_ed25519_open 21 1734 126252 +5445+448+0+354-151+157+170-75-6-125-193-135-234+419+1129 +sign_ed25519_open 21 2168 126278 +6398+568+440-72+34+110-642-260+292-104-180-72+42+0-446 +sign_ed25519_open 21 2711 130020 +5868+869+381+10-245+1051-189-229-99-340+166-224+11-227+0 +sign_ed25519_open 21 3389 134338 +6731+1058+154-10-56+300+292-534-258-318+274-206+0-378+232 +sign_ed25519_open 21 4237 138780 +5921+816+96-312+252-236+100-82+0+12-102-282-130+146-86 +sign_ed25519_open 21 5297 144409 +6267+769+142+225+64-56+2-39-85-248-230-49+0+36-12 +sign_ed25519_open 21 6622 152708 +6135+1180+106+0-291-114+95+76+93-109-154-289-269-122+1023 +sign_ed25519_open 21 8278 160644 +5941+1635+94+194-194-424+0-110-152+12+506+46-528-222-26 +sign_ed25519_open 21 10348 173494 +5997+1090-29+83+13-232+71+655-287+0-247+188-159-403-108 +sign_ed25519_open 21 12936 187006 +5743+791-74+306-770-310+0+34+34-116-626+0-400-156+961 +sign_ed25519_open 21 16171 205751 +12387+9791+604+532+46-377-103+90-614-267-9+92+0-35-382 +sign_ed25519_open 21 20214 228617 +5654+1986+477+357-56+0-299-30-248-181-133+97-245+67+190 +sign_ed25519_open 21 25268 257466 +5820+1886+215+244-79+187-151-236+69+919+0-704-574-241-373 +sign_ed25519_open 21 31586 294704 +4772+1320+519-185-221-142+75+0-221-136+180-77-332+125+1647 +sign_ed25519_open 21 39483 339231 +4941+3084+0-282+42+21-444-283+875-291+230-776-554-27+241 +sign_ed25519_open 21 49354 395699 +3600+1658+39+0+211-269-493-152-14-429-624+236-322+1253+1491 +sign_ed25519_open 21 61693 464612 +5595+3589-291+1051-208+77-196-103-421+129-245+0-352+515+1545 +sign_ed25519 22 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 22 32 28982 +3786+378+41-6+0+319-14-52-19-101-142+15-157+72+223 +sign_ed25519 22 0 32424 +2064+144-74-69+0-156+38-242+147+97+150-164-125-214+124 +sign_ed25519 22 1 32537 +133+0+124-8-52-115-129+43+8+78-154-173-85+75+100 +sign_ed25519 22 2 32378 +274+28-132-80-26+139-19+0+354-111+202+139-186+158-4 +sign_ed25519 22 3 32359 +264+104-9+160-79+0+7+229+42+171-38-10-82-234-86 +sign_ed25519 22 4 32469 +202+166-174+131+48+0-141-179-74-232+23+83+129-116-152 +sign_ed25519 22 6 32310 -147+203+56+45-130-10+47-127+54+253-112+0-51+59-93 +sign_ed25519 22 8 32407 -29-108+142-79-178-116+238+198-12+0+39+42-51+984+94 +sign_ed25519 22 11 32393 -148+124-77-53+126+245+44+230-165+201-78+0-112+212-33 +sign_ed25519 22 14 32445 -21+17-253-49-115-95-137+17-161+21+233+88+47+92+0 +sign_ed25519 22 18 32412 +152+0+86-185+14+47-39+186+46+88-30-103-65-152-26 +sign_ed25519 22 23 32392 +122+47+282+83+0+333+51+191-125-8-172-7-64-83-35 +sign_ed25519 22 29 32444 +82-46-11+6+126+156-212+39+0-60+127-81-94-62+74 +sign_ed25519 22 37 32382 +230-88-53+13+170-134+33-21+111+0-2-58+235-206+250 +sign_ed25519 22 47 32436 -314+117+33-10-3+39+158-51-132+0+49+63+20-80-90 +sign_ed25519 22 59 33101 -108+214-37-152+146-70+6+0+63+179+161-74-94+5-57 +sign_ed25519 22 74 33168 +121+120-80-59+518-5+111+0-58+29+27-196+10-15-145 +sign_ed25519 22 93 33881 +222+0+219-136+258-167+100+126-113-2+73-121+335-164-161 +sign_ed25519 22 117 33912 +58-11+311-23+57+141+69-74+0-117-91-28-100+162+250 +sign_ed25519 22 147 33956 -41+392-84+11+49+48+4-8+0-150-156-146+136+241-102 +sign_ed25519 22 184 34639 +21+51+276+87-145-137-130-11+84-1-68+1-141+0+107 +sign_ed25519 22 231 35406 -87-7-79+0+112+104+123+89-4+87+82-5-202+41-45 +sign_ed25519 22 289 35406 -66+15-58+91+189+42-323-68-35+33+0+42+114-146-314 +sign_ed25519 22 362 36826 -55+7+178+55+219+142-32-266-70+0+11-26-282-122+162 +sign_ed25519 22 453 37596 +0-152-89+788+255+265+87+4-65+186+184-189-105-13-9 +sign_ed25519 22 567 39065 -88+181+279-35+69+82+2-119-205-232-125+0+24+31-120 +sign_ed25519 22 709 40421 -94-48+74+0+224-61-228-135-15+27+49+178-87+58+83 +sign_ed25519 22 887 42585 +199+186-163-67+99+0-205+30+42-83-89+105-101-12+123 +sign_ed25519 22 1109 45380 -87+22-169+109-13-92+82+0-37+38+90+49+131-51-21 +sign_ed25519 22 1387 48161 +147+118-137+126+1190-65+258+0+71-81-142+19-184-51-45 +sign_ed25519 22 1734 51854 +142-54-143-140-93+11+0+973+239-224+66-261+74+0-100 +sign_ed25519 22 2168 56798 +299+203-44+220-91-33-329+101+175+83-61+68+0-69-111 +sign_ed25519 22 2711 62505 +366-116+120+204+70-2+0-246-75-228+135+96-10+25-227 +sign_ed25519 22 3389 70358 +337+66+16-172+205-126+57-58-2+0+108-95-32+341-65 +sign_ed25519 22 4237 79745 +174+115-92+318-118+124-61-193+36-82+436-168-31+319+0 +sign_ed25519 22 5297 91916 +524+108+81+102+16+0+47+161-177-124-72-87-300-226-437 +sign_ed25519 22 6622 106915 +23+1208+587+255-134+117+201+0-30+231-10-130-115-77-242 +sign_ed25519 22 8278 125408 -65-164+18-239+737+105+28+42-417+151+3+0-131-73-177 +sign_ed25519 22 10348 148222 -150+1+76+56+186-127+0-220-318+194-161+31-100+375-197 +sign_ed25519 22 12936 176759 -23-295+1010+2229+55+61-266+0+124+36-54-110+177-70-107 +sign_ed25519 22 16171 212434 +14+88+0-225-220-42-320+592+621+642-204+63-122-234+1965 +sign_ed25519 22 20214 258060 +574+55-126-184-190+119-278+0+36-155+750+259+267-7-333 +sign_ed25519 22 25268 314772 +78-49-259+725-16+145-354-227+337+515+373+1416+0-287-249 +sign_ed25519 22 31586 385476 +619+150+0+86+1204-114+21-196-76-117-283+52+105-176-177 +sign_ed25519 22 39483 473776 +23387+284+0+179-238+157-764-54+234+438+416-256-31-639-101 +sign_ed25519 22 49354 583952 +11960-214+138-554-358+226-100+7+397-226-75+80-42+0+647 +sign_ed25519 22 61693 722204 +11021-453+333+54+801-210+183+0-115-97-683+1645+142-383-212 +sign_ed25519_open 22 0 115084 +7063+1478+550+180+60-416-24-246-32+0-248-378+680+512-1248 +sign_ed25519_open 22 1 116546 +5219+924+258+74-124+0+0+0-282-86-32+86+10-110+130 +sign_ed25519_open 22 2 115396 +6022+530+386-79-34+160+0+165+128-217-130-488-84+176-498 +sign_ed25519_open 22 3 116809 +5215+298-64+34+766+535+1641-348-43-409-3-397+119-327+0 +sign_ed25519_open 22 4 114876 +5634+438-178-144-76+350+561+322-102+427-300+22-140+0-72 +sign_ed25519_open 22 6 114838 +5492+2284+368-654-182+0+39-254-397-470+88-412+728-97+336 +sign_ed25519_open 22 8 115686 +5489+755+540+0-160-4+124-296+466-128+328+152-272-90-148 +sign_ed25519_open 22 11 114437 +5230+37+52+67-334-25+0-454+294-292-159-153-161+521+132 +sign_ed25519_open 22 14 116102 +5004-403+57-616+886+2173+358+80-106+378-72-480+0-462-108 +sign_ed25519_open 22 18 114094 +5309+680-223+0+17-242-247-193+261-400-485+116-19+1328+543 +sign_ed25519_open 22 23 113640 +5360+401-50+138+36+0+314-88-132-48+56-22+664-148-406 +sign_ed25519_open 22 29 115916 +4837+278+508-102+98-314+254+0-172-96-48+430-182+378-120 +sign_ed25519_open 22 37 113965 +5237+970+858+139+0-253-65-7-99-137-271+415+275+207-85 +sign_ed25519_open 22 47 115712 +5357+647+96-227+760+1437+253+0-207-427+95-448-212-659-432 +sign_ed25519_open 22 59 116462 +4733+420-74-132-244+102+0-256-418-830+268+374+756-479+112 +sign_ed25519_open 22 74 116658 +5666+746+456+0-206-412+302-56+90+80-474+490-174-298-112 +sign_ed25519_open 22 93 115512 +4971+1501+345+674-137+375+0-229-263+37-187+616-134-305-213 +sign_ed25519_open 22 117 116833 +5024+1406+258+0-177-38+105-500+1159-208-367+278-261-836+31 +sign_ed25519_open 22 147 116272 +5364+968+209+787-148-444+0-243+51-177+2215+162-298-204-466 +sign_ed25519_open 22 184 117390 +4782+536+256+324-320+66-264-630-458+578-440-408+0+114-636 +sign_ed25519_open 22 231 115804 +4783+859+192-114+0+18-18+284-443-221-312+444-74-102+104 +sign_ed25519_open 22 289 116696 +5045+1690-452+171+0+28-57+264+93+151-218-348-295-318-118 +sign_ed25519_open 22 362 118216 +5154+1197+272-230+592+0-508+122-254-348+180-474+48-174-496 +sign_ed25519_open 22 453 118398 +5720+1164+752+2471-246+7-406-353+317+0-158-75-67+37-157 +sign_ed25519_open 22 567 120082 +5160+988+0+217+241-158+292-403-219+5-712-460-529-602+101 +sign_ed25519_open 22 709 120226 +6285+526+214+235-606+0-416-582+399-313+198+1904-453-506-756 +sign_ed25519_open 22 887 121308 +6316+1766+408-49-89+493-82-172+449+162-6-4+44-156+0 +sign_ed25519_open 22 1109 121566 +5207+696+160-18+40-362-392+242-460-168-217-627+80+0+671 +sign_ed25519_open 22 1387 124056 +5782+672+24+38-584+638+30-486-498+422-528-346+0-786-424 +sign_ed25519_open 22 1734 125504 +5761+1042-40+70-136-120+198-224+50-50+152+196+0-480-327 +sign_ed25519_open 22 2168 128116 +5316+2551+876+40+346-710+50-518+0-72-154-6+234-326-526 +sign_ed25519_open 22 2711 132127 +5252+734+34-26-320-78+574+148+202-222-580+454+0-10-436 +sign_ed25519_open 22 3389 134140 +4824+631-34+611+0-74+344-85-231-134+111+114-266-230+524 +sign_ed25519_open 22 4237 137556 +5516+580+0+48+34-122-6+416-546-158-92-396-288+374+204 +sign_ed25519_open 22 5297 146132 +5164+1745+225+985+3043+0+664+32-255-390-34-384-12-302-612 +sign_ed25519_open 22 6622 151268 +5065+1391-143-200+165-196+123+196-119+74+51-218-102-132+0 +sign_ed25519_open 22 8278 163304 +5619+1229-118+118-202-88+436+0+256+152-16-36+192-2-52 +sign_ed25519_open 22 10348 173690 +5192+466-188+89-344+6-506-482+538+1231+0-574-406+148-452 +sign_ed25519_open 22 12936 188662 +5598+658+0+546-80-194+0-306-134+102-330-54+12-54+34 +sign_ed25519_open 22 16171 205272 +5346+1075-612+0-68+174+170-70-93-153+384+33-141+638-284 +sign_ed25519_open 22 20214 226908 +7015+1878+370+762+303+0-202-594-567-379-163+509-52-720+22 +sign_ed25519_open 22 25268 257663 +5292+2498+740-105-41-213+135-289-249-4+0+651+347-43+167 +sign_ed25519_open 22 31586 293949 +6462+931+1917-271+1629-350+1746-296+0+282+177-750-3-440-815 +sign_ed25519_open 22 39483 339202 +4307+1511-792+0+770+345-121-119-268+3366+457-416-711-648+46 +sign_ed25519_open 22 49354 395440 +3647+266+144+1160-77-150-263+204+0+26-131-165-318-179+210 +sign_ed25519_open 22 61693 466431 +3287+345+172-166+682+0+6+164-330-249-319-958-155-154+2612 +sign_ed25519 23 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 23 32 29013 +3557+219+171+103+0+27-30+73-178+229-63-178-116-41-143 +sign_ed25519 23 0 32625 +2551+178+0+203-144+29-65+5-245+89-181+41-85-1-26 +sign_ed25519 23 1 32567 +230-35+169+209-111-16+0+17-163-26+179+31-56+26-43 +sign_ed25519 23 2 32639 +111-158-80+34-40-109+0+426+43-131-237+76-6+65+90 +sign_ed25519 23 3 32579 +124+16-68-161+140+66+21+0+39+115-78-39-184-143-51 +sign_ed25519 23 4 32650 -105-240+201+109+54+74-435-306-76-148+0-54+33+154+34 +sign_ed25519 23 6 32676 -13+179+25-113+100-149-158+23-184+86+0+109-250+33-163 +sign_ed25519 23 8 32558 +144+7-314-97-220+209+52-43+276+0+68-159-94+90-167 +sign_ed25519 23 11 32695 +30-103+0-197-111+1200+27+17+36+2200+72-298-72-150-31 +sign_ed25519 23 14 32586 +0+299+7-145-58-46+13-14+125+50-128-164-41+83+161 +sign_ed25519 23 18 32605 +114-41+29+92-363-255+0+107-43+128+207-164+17-87-106 +sign_ed25519 23 23 32539 +149-115-33+0-44+128+118-40+70-99+26+111-141+96-112 +sign_ed25519 23 29 32517 +81-1+104+60+0+298-12-83-18+129+99-140-206+191-179 +sign_ed25519 23 37 32548 +26-13+42+15+159-5-10+48+0+98-110-107+66-9-79 +sign_ed25519 23 47 32628 +190+224+0+221+331+32-183-62-114-69+88-219-131+128-160 +sign_ed25519 23 59 33311 +200+25+165-189+152+22-119-112+73-66-297+0+79-252-156 +sign_ed25519 23 74 33382 +180-28-85+75+56+0+432-255+78+897-195-20-218-30+49 +sign_ed25519 23 93 34057 +205+498+248-63+142+181-10-12-63+0-22+57-28+29-216 +sign_ed25519 23 117 34184 +206+98-93+151+53-195-128-178+72-12+0-77-103+3+3 +sign_ed25519 23 147 34145 +145+38-64-56-69-42-94+41+108+283+167-276+0+173-22 +sign_ed25519 23 184 34786 +274+142+66+27-21-145+2+0+153-174-130-27+185-329-75 +sign_ed25519 23 231 35575 +188+0-40+58+13-137+124+186-256-42+36-263+207-107-87 +sign_ed25519 23 289 35560 -5+180+0+316+76-219+17+234+172-97-23-116-94-182+28 +sign_ed25519 23 362 36966 +264+80-109+134+123+181+140-42+4-65-163+0-210-77-42 +sign_ed25519 23 453 37676 +44-115+160-142-11+0+1424+179+6-53+615+1711-45-85-248 +sign_ed25519 23 567 39094 +251+234+403-215-142-244+22-185+34-50+38+95-46-236+0 +sign_ed25519 23 709 40618 +119+138-252+156-49-55-49+280-249+109-212-97+72+171+0 +sign_ed25519 23 887 42715 +216+364+251-258-41+65-244+22+213+95-134-145+0-83-92 +sign_ed25519 23 1109 45589 +325+170+180-129+0-296+725+113-113-67+43-159-201+93-234 +sign_ed25519 23 1387 48328 +268+232-182+120-161+93-69+135+21-186+0-39+21-86-130 +sign_ed25519 23 1734 51937 +356+130-179-60-139+0+60-87+45+1039-141-91+74+44-166 +sign_ed25519 23 2168 56914 +304+265-85-159-7+85+30-159-56+85+82-316+0-114+0 +sign_ed25519 23 2711 62703 +431+179+28+50-173-15-170-375-104+188-275+0+87+3-158 +sign_ed25519 23 3389 70411 +226+384-112-56-230+217-124+14+208+108-20-128+0-193+68 +sign_ed25519 23 4237 79766 +557-128+1123+14-37+0-221-60-156-113+84+1257-61+521+62 +sign_ed25519 23 5297 92096 +381+215+146-192+0-585+71-249-94+2052+304-268+23-183-208 +sign_ed25519 23 6622 107004 +364+96-70+236-137-287+269+45+70+104+0-22-12-225-211 +sign_ed25519 23 8278 125521 -116+39-368-382-79+1040+0-41+138-153+13+99-189+37+36 +sign_ed25519 23 10348 148397 +215+120+35+117-23+27-30-166-199+0+149-141-266+9-292 +sign_ed25519 23 12936 176952 +0+203+745+2463+195-37+23-136-102-386-155-56+36+18-29 +sign_ed25519 23 16171 212699 +182+0-146-14+479+308+340-162-162+1916-198+2280-29-186+31 +sign_ed25519 23 20214 258214 -102+121+287+244+177+12-123+0+263-127-141+706-352-173-107 +sign_ed25519 23 25268 314768 +290-221+737-236-90+220+61-159+75+2334+325+0-289-244-11 +sign_ed25519 23 31586 385834 +618-49-254-296-389+1496+40+0+432+256-301-207+42-95+69 +sign_ed25519 23 39483 474207 +10374-333+72+20-94-152-439+156-557+470+74+0-506+266-284 +sign_ed25519 23 49354 584335 +16486+6+164+462+298-280-339-293+1108+0-594-358-195-41+314 +sign_ed25519 23 61693 722272 +10897-168-297-787-267+1396-442+202-95+0+116+1117-225+338+1954 +sign_ed25519_open 23 0 116031 +7642+3397+835+166-16-9+22-201+58-153-487-155+0-165+905 +sign_ed25519_open 23 1 114046 +5592+883+166+185-53-455-129+423+359-255-379-331+0+100-157 +sign_ed25519_open 23 2 115214 +5709+1491+0+253+43-560-3-157-17-31-310+54+164+112-56 +sign_ed25519_open 23 3 115671 +5226+756-213-262-483-45+989+2155+0+410-19-287+391+185-477 +sign_ed25519_open 23 4 114978 +6775+864-231-155+860+174-120+0-60+80-56-108+200+2072-36 +sign_ed25519_open 23 6 114946 +4955+897+429+193-108+250+168-418-349-115-281-335+0-582+1013 +sign_ed25519_open 23 8 115694 +5037+829-106+24+196-32-336-22+38-94+94-404+733-40+0 +sign_ed25519_open 23 11 116424 +5555+502+390+241-280+82-280-554+0-352-188-180-504+80+2463 +sign_ed25519_open 23 14 115702 +4392+915+517-35-328+455+2556+512+912-95+0-290-184-314-111 +sign_ed25519_open 23 18 114808 +5053+798+96-406-88-224+0-110+256-184+562+40+1634-11-196 +sign_ed25519_open 23 23 117391 +4671+327+390+0+66+99-30-175-315-387-145-321+703+92-333 +sign_ed25519_open 23 29 116226 +5454+1448+26+338-142+80-144+170-32-294+0+162-170-124-294 +sign_ed25519_open 23 37 114820 +5588+906+38-182+638+0+190+72-390-142-116-6-410+34-346 +sign_ed25519_open 23 47 114448 +5702+268+201-142+3323+1095+580-342-178-371-117+0-249+249-113 +sign_ed25519_open 23 59 115606 +5344+715+330-375-397-120+1152+0-400-200+423-366-366+46+8 +sign_ed25519_open 23 74 116128 +5174+1290+2199+295+244-56-118-488+0-478-522-192+714+242-216 +sign_ed25519_open 23 93 116716 +5187+497+40+45-283+26-468-240+336-136-362+106+0-256-308 +sign_ed25519_open 23 117 114603 +5100+391+139+298-272+0+73-48-39-54-137+58+386-277-241 +sign_ed25519_open 23 147 116350 +6034+622-73+976-3-108-246+0+270-88+116+146+302-54-324 +sign_ed25519_open 23 184 117958 +4982+685-308-392+1552+165+64-508+0-90-386-530+256+25-156 +sign_ed25519_open 23 231 116852 +4657+621-86+0+74-22-302-142-54+200-288+1040-32+44+217 +sign_ed25519_open 23 289 118576 +4882+266+0+340-170+346-426-356-686-144+766-354-582+128+222 +sign_ed25519_open 23 362 118636 +4719+491-334-231-312+68-412-18+48+120+230-60+218+0-158 +sign_ed25519_open 23 453 117676 +5729+1993+247+2668+121+0-86-10-84-202-169+39+83-29-273 +sign_ed25519_open 23 567 121094 +4849+1317+144+130-2-54-218-296-142+954+0-4-234+254+10 +sign_ed25519_open 23 709 120954 +4376+584+221-5-38-178-140+875-228+0+34-182-318+148+92 +sign_ed25519_open 23 887 121950 +5298+6-290-174-58+0-378-110+346+394+10-114+386+0+186 +sign_ed25519_open 23 1109 123228 +5266+1088+406+92+470+146-132-202-118-204+0-268-168+681-380 +sign_ed25519_open 23 1387 124496 +5052+953+0+32+294-322-38+120-366-18-8+114+26-36-330 +sign_ed25519_open 23 1734 126008 +5563+1308+346+62-4-82-108+2+0-266-184+538+26-104-388 +sign_ed25519_open 23 2168 128653 +5299+1872+70+50-218+316-308-672-178+232+0+16-142-194-446 +sign_ed25519_open 23 2711 131440 +5231+362+110+430+566+0-394-356-108-668-473+30-127-370+461 +sign_ed25519_open 23 3389 135332 +4727+1349+406+1562-255-36+194+300+0-468-38+142-354-184-248 +sign_ed25519_open 23 4237 139472 +5440+1598+580+458-24-292-86+418-200-194+546+0+798-90-96 +sign_ed25519_open 23 5297 145758 +4845+455+682-236-580+44+490+0+174-390+30-544-16-572-934 +sign_ed25519_open 23 6622 154258 +4746+659+480-214+478-14-104+82+30+126-212+0-90-86-268 +sign_ed25519_open 23 8278 162907 +5584+927+70+87-30-24-479+92-385-109+3058+689-175-111+0 +sign_ed25519_open 23 10348 173866 +5558+1246-24+156+50-328-246+72+891-64-490-302+0-92+44 +sign_ed25519_open 23 12936 188525 +5169+1169-4+151-116+7+274+663-277+429-363-427-95+0-13 +sign_ed25519_open 23 16171 205394 +5854+959+114+476+0-378-312+158-52+300-238-166-222-244+184 +sign_ed25519_open 23 20214 229692 +6543+2202-104+104+82+2838+196-262-110-530-131+274+0-21-244 +sign_ed25519_open 23 25268 258414 +5345+1572+447-225-18-74+22+250+0-376+8-244-760+803-599 +sign_ed25519_open 23 31586 294182 +5604+551+1718+35+114-170-88+307-119-195-166-443-96+118+0 +sign_ed25519_open 23 39483 339711 +4188+308+0-259-17-153+127-219-301+1830+2569-109-101+232+66 +sign_ed25519_open 23 49354 396128 +3294+1037-55-379+223-521+778-403+0-648-554+2426+233+1052-525 +sign_ed25519_open 23 61693 466239 +4251+835+900+492+1204+0-364-552-275-326-444+150-737-526+243 diff --git a/lib-25519/lib25519/benchmarks/titan0 b/lib-25519/lib25519/benchmarks/titan0 new file mode 100644 index 0000000000..de9b3d6041 --- /dev/null +++ b/lib-25519/lib25519/benchmarks/titan0 @@ -0,0 +1,3292 @@ +lib25519 version 20221221 +lib25519 arch amd64 +cpuid 756e6547 6c65746e 49656e69 65746e49 2952286c 6f655820 2952286e 55504320 2d334520 35373231 20337620 2e332040 48473035 0000007a 00000000 000306c3 06100800 7ffafbff bfebfbff 00000000 000027ab 00000000 9c000600 00000000 00000000 00000021 2c100800 00000007 00000000 00000000 00000000 00000000 +cpucycles selected persecond 3500000000 +cpucycles selected implementation amd64-pmc +cpucycles selected 0 46 +21+23+23-2-1+0-1+0-1+0-1+0-1+0-1 +randombytes selected 0 51 +3416+96+28+1+0-2+2-2-1+0+0+0+0+0+0 +randombytes selected 1 126 +2110+70+0-1-3+0-3-3+2+0-1+1-4+2+0 +randombytes selected 2 123 +76-1-2-3+0+5+3+0+3+3+4-1+2-2+0 +randombytes selected 4 126 +4-1-2-4+3+2+0+0+6+0+2+0+0+0-1 +randombytes selected 7 123 +27+6-4-2+4-3+3+0+0-1-1+3-2+5+3 +randombytes selected 11 126 +3+0+0+1-4-6-4-4+3+1-4+2+0+0-1 +randombytes selected 17 123 +5+2+0-2+3-1+4-1-1+5-1-2-3+1+4 +randombytes selected 26 123 +6+2-2-2-1-1-3-1+3+3+2+4+0+0+2 +randombytes selected 40 126 +2-1-4-5-3-3+0+3+1-3+4+0+4+1-5 +randombytes selected 61 125 +7+0-3-1-2-4+8+1+0+1+2+1+0+4-5 +randombytes selected 92 125 +3+0-4-3-5+2+3+3+0-3-3+2-3+4+2 +randombytes selected 139 125 +0+0-2-3+0+5-2+1-3+3+1+4+0+8-3 +randombytes selected 209 124 +5+1+0+0+0+1-2+0-1+2-2+2+0+1-3 +randombytes selected 314 125 +7+0-3-4+3-2-2+2-2+5+0-1+2-1+5 +randombytes selected 472 125 +3+0-3-1-1+3+1+3-1-3+8+0-2+3+2 +randombytes selected 709 124 +4+1-2+0+0+0+0+3+5+5-1+5+5-3+0 +randombytes selected 1064 125 +3+0-1-1-1+4+0+1+2+5+2-3-1-2+7 +randombytes selected 1597 132 -4+27-9-10+19+13+24-3+0+23-6+1+27-4-4 +randombytes selected 2396 156 +27+5-5-5-1+0+3+5+0+0+1+5+0+0-3 +randombytes selected 3595 158 +5+1-7-5-3+1-3+0-2+4+1+4-1+5-1 +randombytes selected 5393 156 +4+5-4-1-3-3+16+0-4-3-2+1+0+1+1 +randombytes selected 8090 167 +1-5-9+3-7+4-6+0-7+4-6+0+3-13+3 +randombytes selected 12136 172 -4+4-2-4-2+0+0+0+0+0+0+0+0+0+1 +randombytes selected 18205 173 +2+4+26-1+8-4+0+0+0+1-1-2-1+2+0 +randombytes selected 27308 182 -8+7-3-5+0-1-4+0+2+4-2+0+1+4-1 +randombytes selected 40963 203 +2+80+17-4+4+0-2+1-4-5+3-5+8-2+0 +randombytes selected 61445 200 +8+7+11+9-1+0-1+0+1-6-6+2+4-1-2 +verify_32 selected implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 selected 32 52 +1275+69+44+17+17+2+3+0+0+0+0+0+0+0+0 +verify_32 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 0 32 78 +190+43+41-5+3-3-2+0+3-3-2+0+3-3-2 +verify_32 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 1 32 59 +69+42-1+0+0+0+0+0+0+0+0+0+0+0+0 +verify_32 2 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 2 32 77 +1263+44+18+14-1+0+3+1+0-4-2-2-1-2-2 +verify_32 3 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 3 32 55 +432+46+20+1-1-1-1+0-1+0-1+0-1+0-1 +verify_32 4 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 4 32 76 +1305+43+19-1+0+5+0+7+2-1-1+0+0-1-1 +verify_32 5 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 5 32 52 +63+68+0+0+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected implementation avx2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 selected 0 50 +1754+90+51+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 1 52 +45+22-2-2+32+1-3+1-3+0+0+0+0+0+0 +hashblocks_sha512 selected 2 50 +47-1+2+1+3+0+3+0+4+0+0+0-1+23+0 +hashblocks_sha512 selected 4 52 +45-3+0-1+0+1+0-3-1-2-2+0+0+0+0 +hashblocks_sha512 selected 7 50 +48-1+2+1+3+0+3+0+4+0+0+0+0+0+0 +hashblocks_sha512 selected 11 50 +48-1+2+1+3+0+3+0+4+0+0+0+0+0+0 +hashblocks_sha512 selected 17 50 +48-1+2+1+3+0+3+0+4+0+0+0+0+0+0 +hashblocks_sha512 selected 26 50 +48-1+2+1+3+0+3+0+4+0+0+0+0+0+0 +hashblocks_sha512 selected 40 52 +46-3+0-1+0+1+0-3-1-2-2+0+0+0+0 +hashblocks_sha512 selected 61 52 +46-3+0+0+2+2+2+0+2+1-4-2+0+0+0 +hashblocks_sha512 selected 92 50 +48-1+2+1+3+0+3+0+4+0+0+0+0+0+0 +hashblocks_sha512 selected 139 814 +5825+140+33+25+14+3-2-7-8+0-9+0-1+62-6 +hashblocks_sha512 selected 209 825 +105+14+12+4+0-7-12-13+0+13+0-16-23-13-12 +hashblocks_sha512 selected 314 1546 +236+57+19+0-15-19-45+3-6+4-5+6-7+4-4 +hashblocks_sha512 selected 472 2214 +291+117+53+25-16-23-22+3+2-31-30-29-1+0+0 +hashblocks_sha512 selected 709 3555 +393+221+107+88+36+65+9-23+0-5-5-5-5-5-5 +hashblocks_sha512 selected 1064 5572 +757+280+99+150-29-25-2-1+7-1-5+0+6-1+6 +hashblocks_sha512 selected 1597 8258 +889+354+226-14-3+7+12-5+4+0+4+0-1-2+0 +hashblocks_sha512 selected 2396 12336 +952+114+239+51+178-18+22+0-14+0-14+0-14+0-14 +hashblocks_sha512 selected 3595 19148 +856+268+109+152+173+0-12+0-12+0-12+0-12+0-12 +hashblocks_sha512 selected 5393 28592 +835+13+52-17+0+0+0+0+0+0+0+0+0+82+0 +hashblocks_sha512 selected 8090 42785 +797+229-99-36+33-45+9-59+13+0-61-36+7+0-36 +hashblocks_sha512 selected 12136 63739 +752+64-42+1-71+160+8+0-63+27-79-72+249-142-55 +hashblocks_sha512 selected 18205 96021 +795+179+16+70+0+52-89+219-136-5-71-6-105+33-125 +hashblocks_sha512 selected 27308 143825 +971+365+2-53+197-90+14+0-24+0+97-24+0-24+0 +hashblocks_sha512 selected 40963 217838 +269+3+46-40+48+76-224-220+36+18-110-178+0-48-144 +hashblocks_sha512 selected 61445 324948 +1413+3154+117-99-53+112+0+60-106-122+264-168+66-38-138 +hashblocks_sha512 0 implementation avx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 0 0 54 +89+43+0+27-4+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 0 1 52 +34+27-1-1-1-2+0-1-1+1+3+0+2+0+2 +hashblocks_sha512 0 2 52 +33-2-1-1-1-1+1+0+0+0+1+3-2+24+1 +hashblocks_sha512 0 4 52 +33-2-1-1-1-1+0-1-1+1+3+0+2+0+2 +hashblocks_sha512 0 7 52 +33-2-1-1-1-1+0-1-1+1+3+0+2+0+2 +hashblocks_sha512 0 11 52 +3-2-1-1-1-1+0+0+1+5+1+3+0+2+0 +hashblocks_sha512 0 17 52 +3-2-1-1-1-1+0-1-1+1+3+0+2+0+2 +hashblocks_sha512 0 26 52 +4-2+1+0-2-1+0+1+0+1+3+0+2+0+2 +hashblocks_sha512 0 40 52 +4-2-1-1-1-1+0+0+1+5+1+3+0+2+0 +hashblocks_sha512 0 61 52 +3-2+1+0-2-1+0+1+0+1+3+0+2+0+2 +hashblocks_sha512 0 92 52 +4-2-1-1-1-1+0-1-1+1+3+0+2+0+2 +hashblocks_sha512 0 139 970 +5089+83-1-1-1-2+1+1+0-1+3+68-1+0+1 +hashblocks_sha512 0 209 971 +84+5+2-1+0+0-3-3-1+66+1-3-1-2+0 +hashblocks_sha512 0 314 1852 +73+26-3-2+57-4-1+2+1+0+0-2-4+58+4 +hashblocks_sha512 0 472 2736 +73+6+0-6+7+8+7-1-3-7-2+52-5+1-4 +hashblocks_sha512 0 709 4499 +124+36+0+1-5-8+0+2+33-5+1-9-4-7+2 +hashblocks_sha512 0 1064 7160 +58+34+26+65+1-10-11-1-7-3-15+3-13+0+1 +hashblocks_sha512 0 1597 10684 +73+29+2+24+13+5-12-9+5-14-9+0-3-11-7 +hashblocks_sha512 0 2396 16042 +61+76-28+19+72-45+0-38-33-2-65+3+10-36+65 +hashblocks_sha512 0 3595 24856 +42-2-11-7+1+7-3-1+0-4+70-12+7+6+128 +hashblocks_sha512 0 5393 37207 +112-4+0-12+64-12-13-16+53+2+66+1-22-1+70 +hashblocks_sha512 0 8090 55724 +64-1-40+92-6+20+0+29-17-12+107-6+56-19+159 +hashblocks_sha512 0 12136 83129 +29-28+24+42+25+27-31-45+22+0-34-38-48+0-34 +hashblocks_sha512 0 18205 125465 -7-53+5-2-1+49-73+20+88-77+66+35-35+0+18 +hashblocks_sha512 0 27308 188090 +19+44-10-26+116-62-4+12+0+805+62-28-90-64+6 +hashblocks_sha512 0 40963 282584 +380+9-74-39-86+146-56+0-78-185+62+28+32-80+138 +hashblocks_sha512 0 61445 423756 +168+0-50+22+184+122-116+60-22-163-90+41-98-140+72 +hashblocks_sha512 1 implementation avx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 1 0 53 +1290+62+45+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 1 53 +62+1-2-3-1-1+1-2+0+0+0+0+0+0+0 +hashblocks_sha512 1 2 53 +5-4+2-5-2-1+0+1-2+0+0+0+0+0+0 +hashblocks_sha512 1 4 53 +4-3+2-5+1-1+0+1-2+0+0+0+0+0-2 +hashblocks_sha512 1 7 53 +4-3+2-5+1-1+0+1-2+0+0+0+0+0-2 +hashblocks_sha512 1 11 53 +5-4+2-5-2-1+0+1-2+0+0+0+0+0-2 +hashblocks_sha512 1 17 53 +4-3+2-5+1-1+0+1-2+0+0+0+0+0-2 +hashblocks_sha512 1 26 53 +4-3+2-5+1-1+0+1-2+0+0+0+0+0-2 +hashblocks_sha512 1 40 53 +4-3+2-5+1-1+0+1-2+0+0+0+0+0-2 +hashblocks_sha512 1 61 53 +5-4+2-5-2-1+0+1-2+0+0+0+0+0-2 +hashblocks_sha512 1 92 53 +5-4+2-5-2-1+0+1-2+0+0+0+0+0-2 +hashblocks_sha512 1 139 862 +4977+93+57+22+2+5+0-6-9-7-5-2-3+4-5 +hashblocks_sha512 1 209 865 +101+30+3+3-4+8+3+0-1-6+3-4-8-3-1 +hashblocks_sha512 1 314 1657 +176+74-1+5-20-6+10-18+1+0+5-1+3-16-4 +hashblocks_sha512 1 472 2446 +181+96+20+4-7+3+0+27-5-19-28-3-20-6+7 +hashblocks_sha512 1 709 4024 +116+102+70+0-18-10+28+27+13+13-22-6-23-7-21 +hashblocks_sha512 1 1064 6398 +207+57+14-19-26+11+13-30-22+0-10-36+4+8-19 +hashblocks_sha512 1 1597 9546 +188+30+32-19-28-5-26+40+23-6+0-2+16+3-19 +hashblocks_sha512 1 2396 14293 +78+55+41+18-61-32-2+11-15+49+0+71-31-9-34 +hashblocks_sha512 1 3595 22229 +58+43+30-15+0-38-16-7-34+46+65+29-15+11-38 +hashblocks_sha512 1 5393 33280 +77-36+37-52-17-53+12-28+5-24+86-86+18+0+17 +hashblocks_sha512 1 8090 49867 +51+102-34+4+3-67-74+0+39+26-14-22-47-6+10 +hashblocks_sha512 1 12136 74354 +22+93-22-116+18-153-103-7+109+9+0-29-11+87+64 +hashblocks_sha512 1 18205 112233 +82+54+103+0+68+1+141-38-4+92+0-34-18-62-32 +hashblocks_sha512 1 27308 168313 +112-75+37-47+90+0-84-80-68+132+24-62+78+166-38 +hashblocks_sha512 1 40963 253185 +321+96+165+65-299-7-119+37+68-66+0-126-153+107-2 +hashblocks_sha512 1 61445 379604 -81+51-223-126+0+136-70-320-94+40+155+9+193-59+123 +hashblocks_sha512 2 implementation avx2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 2 0 54 +1308+68+24-3+0-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 2 1 51 +34+35+0+0+1-1+6+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 2 54 +24-4+1-4+1-5+3+0-2+0-2+0-2+0-2 +hashblocks_sha512 2 4 54 +21-3-3-4+3+0-2+0-2+0-2+0-4+34+0 +hashblocks_sha512 2 7 54 +24-4+1-4+1-5+3-1+3+0-2+0-2+0-2 +hashblocks_sha512 2 11 53 +0+0+1-2+4-2+0-1-4+2+1+0-2+1-1 +hashblocks_sha512 2 17 53 +0+0+1-2+4-2+0-1-2+1-1+1-1+1-1 +hashblocks_sha512 2 26 52 +2-1-1-1-2+5+0+1+5+2+0+2+0+2+0 +hashblocks_sha512 2 40 52 +2-1-1-1-2+5+0+1+5+2+0+2+0+2+0 +hashblocks_sha512 2 61 53 +2+0+2+1+0-3+4+0-3+1-1+1-1+1-1 +hashblocks_sha512 2 92 53 +0+0+1-2+4-2+0-1-2+1-1+1-1+1-1 +hashblocks_sha512 2 139 814 +1346+82+24+12+11+2-1-5-5-18-17-20-24+3+0 +hashblocks_sha512 2 209 812 +146+35+24+18+12+8+3-2-6-10-12-15-15-24+0 +hashblocks_sha512 2 314 1528 +209+159+62+14+0-6-27-17-16-15-14+8+37+9-16 +hashblocks_sha512 2 472 2212 +244+141+78+29-10-24+1-2-2-30+47-28-32+4+0 +hashblocks_sha512 2 709 3570 +413+286+119+44+50+19+3-4+0+0-27-25-25-26-18 +hashblocks_sha512 2 1064 5567 +621+392+160+104-3+35-16+50+6-3-4-2+0-2-4 +hashblocks_sha512 2 1597 8260 +863+274+136+79+56-3-3-10-9+0-10-3+1-5+43 +hashblocks_sha512 2 2396 12369 +894+117+147+25+118-82+4+0-57-11-46+0-57-11-46 +hashblocks_sha512 2 3595 19149 +880+390+258+132+160+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 2 5393 28587 +937+40+0+70-18-8-3+0+70-18-8-3+0+70-18 +hashblocks_sha512 2 8090 42739 +934-58-13+195-76-24+205-44-24+195+49+138-43+0+104 +hashblocks_sha512 2 12136 63735 +847+64-15+86-16+86-16+86+41-23-15+175+0-69-56 +hashblocks_sha512 2 18205 96059 +712+0-100+39-79+39-79+39-79+39-79+39-79+39-79 +hashblocks_sha512 2 27308 143901 +906+0+0-73-54-36-64-117-36-64+2220+154+89+9+204 +hashblocks_sha512 2 40963 217809 +696-33-189+57-31+39-62+0-37+61-109-141+33+99+19 +hashblocks_sha512 2 61445 326520 -377-222+0+126-186+140+40-6-84+92+98-138+126-186+140 +hashblocks_sha512 3 implementation avx2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 3 0 52 +151+43+27+9+10+9+7-2-2-2+0+0+0+0+0 +hashblocks_sha512 3 1 52 +94+3-3-1+2+3+2-3+4-2-4+1-3+0+0 +hashblocks_sha512 3 2 50 +48-1+2+1+3+0+3+0+4+0+0+0+0+0+0 +hashblocks_sha512 3 4 52 +46-3+0-1+0+1+0-3-1-2-2+0+0+0+0 +hashblocks_sha512 3 7 50 +48-1+2+1+3+0+3+0+4+0+0+0+0+0+0 +hashblocks_sha512 3 11 50 +48-1+2+1+3+0+3+0+4+0+0+0+0+0+0 +hashblocks_sha512 3 17 50 +48-1+2+1+3+0+3+0+4+0+0+0+0+0+0 +hashblocks_sha512 3 26 52 +46-3+0-1+0+1+0-3-1-2-2+0+0+0+0 +hashblocks_sha512 3 40 50 +48-1+2+1+3+0+3+0+4+0+0+0+0+0+0 +hashblocks_sha512 3 61 50 +48-1+2+1+3+0+3+0+4+0+0+0+0+0+0 +hashblocks_sha512 3 92 50 +48-1+2+1+3+0+3+0+4+0+0+0+0+0+0 +hashblocks_sha512 3 139 815 +203+76+41+32+12+2-2-2-7-12-11+0-14-7+5 +hashblocks_sha512 3 209 815 +117+29+20+23+13+5+0+1-3-12-11-5-14-2-4 +hashblocks_sha512 3 314 1546 +297+75+52+0-17-22-41+4-6+3-9+3-5+3-8 +hashblocks_sha512 3 472 2214 +333+136+91+47+35+100-7-19+0+0+1-27-28-34-6 +hashblocks_sha512 3 709 3556 +391+204+144+132+72+9+62-10-27+0-1+0-1-3-5 +hashblocks_sha512 3 1064 5568 +650+343+139+71+119-23+1-3+0-2+0-2+0-2+0 +hashblocks_sha512 3 1597 8305 +830+201+63+111+155+145-76-41-51-45+0-59-7+38-54 +hashblocks_sha512 3 2396 12362 +918+148+186+188+157-58-16-47+0-51-16-47+0-34+95 +hashblocks_sha512 3 3595 19136 +1170+262+159+138+101+13+60-20+0-20+0-20+0-20+0 +hashblocks_sha512 3 5393 28581 +860-12+20+84+0+0+0+0+0+0+0+0+0+0+101 +hashblocks_sha512 3 8090 42785 +775+110-42-30+39-9+6+0-5+3-71+6-5-64+6 +hashblocks_sha512 3 12136 63738 +747+65+1+21+1554-11-72-63-72+29-62+0-62+28-62 +hashblocks_sha512 3 18205 96017 +1257+79-90-27+0+54-35+13-27+13-27+13-27-86+54 +hashblocks_sha512 3 27308 143710 +1125+266+34+120+105+0+0+0+40+0+40+0+0+0+0 +hashblocks_sha512 3 40963 217758 -162-231+234+56+42-50-80+236-104+46-76+0+62-82+238 +hashblocks_sha512 3 61445 326538 -717+123+98-12+156-64+118+0-100+26+244-64-56+1364-1766 +hashblocks_sha512 4 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 4 0 128 +572+52+16-2-4+0-2-4+12+1-4+0-2-4+0 +hashblocks_sha512 4 1 127 +44+0+1-1+40+5-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 4 2 127 +32+10+1+3+0-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 4 4 127 +32+10+1+4-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 4 7 127 +32+10+1+3+0-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 4 11 127 +7+13+3-1-1+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 4 17 127 +42+5+9-1-1-1-1+0+13+3-1+0-2+0-2 +hashblocks_sha512 4 26 128 +8+14+0+4+3-3+0-3+0-3+0-3+0-3+0 +hashblocks_sha512 4 40 126 +9+10+4+8+1-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 61 127 +8+18+0+4-2+1-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 4 92 126 +9+8+0+5+1-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 139 1390 +3671+130+98+58+18-30+16+11+0-10-32-20-20-21-20 +hashblocks_sha512 4 209 1381 +108+136+60+28+0-16+25+18+11-4-15-14-11-14-11 +hashblocks_sha512 4 314 2663 +192+123-12+13-13+4-24-1-3-5+3-1+0+0+0 +hashblocks_sha512 4 472 3935 +224+43+5+24+10+24-63-13-6-3+0-5+2-5+0 +hashblocks_sha512 4 709 6457 +228-27+45-22-46+3-3+2-2-2+0+1+0-5+0 +hashblocks_sha512 4 1064 10244 +164-30-33+22+24+31-94-2+0-1+0-4+0-2+0 +hashblocks_sha512 4 1597 15312 +187+18+38+6-98-28+0-27-1-28+0+0-28+0-26 +hashblocks_sha512 4 2396 22871 +180+37-143+1-1-2+0-2+0+1-1-2+0+3-1 +hashblocks_sha512 4 3595 35471 +177+38+26+33-93-2+0+1-1+1-1-2+0-2+2 +hashblocks_sha512 4 5393 53112 +120+38-88+0-2+25-1+25+1+0+22+0-2+26-2 +hashblocks_sha512 4 8090 79598 +127+62+44+52-71+0-2+0-1+0-3+0-2+0-2 +hashblocks_sha512 4 12136 118657 +176+44-118+0+0+1-1+0-2+0-2+0-2+0-1 +hashblocks_sha512 4 18205 179138 +141+45+44+52-71+1-3+1-3+0-2+0-2+0-2 +hashblocks_sha512 4 27308 268598 +150+26+24+33-98+0-2+0-1+0-3+820+74+42-101 +hashblocks_sha512 4 40963 403448 +192+42+24+30-98+0+0+0-2+0+0+0-2+0+6 +hashblocks_sha512 4 61445 605080 +105+10-4+0-130-26-34-30+712+32+14+14+2-38-34 +hashblocks_sha512 5 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 5 0 89 +617+87+23+1+0+1+0-4+11+1-3-2-2-4-3 +hashblocks_sha512 5 1 89 +66+6+8+6+1-1+1+0+1-2-4-3-2-2-2 +hashblocks_sha512 5 2 87 +51+9+8+5-3+4-1+23-1+0-2-1+0+0+0 +hashblocks_sha512 5 4 87 +49+7+3+0+3+2+3-2+1-1+0+0+0+0+0 +hashblocks_sha512 5 7 86 +45+10+8+3+3+0-2+2-1-1+0+0+0+0+0 +hashblocks_sha512 5 11 87 +13+7+0+3+2+0+1-3+2-2-1-1-1-1-1 +hashblocks_sha512 5 17 86 +19+8+1+2-1+1-2+2-1-1+0+0+0+0+0 +hashblocks_sha512 5 26 87 +13+7+7-2-1-1+0+0-2-1+0+0+0+0+0 +hashblocks_sha512 5 40 86 +14+8+8+3+4+1+1-1-1-1+0+0+0+0+0 +hashblocks_sha512 5 61 86 +14+8+1+1+1-2+0-1+0+0+0+0+0+0+0 +hashblocks_sha512 5 92 88 +17+6-1+2+1+0+1-1+0-4+1-3-2-2-2 +hashblocks_sha512 5 139 1273 +2542+170+69+30+9-1+0+2-3-23-16-21-21-24+0 +hashblocks_sha512 5 209 1270 +175+99+94+53+28+18+0-9+8-18-14-11-26-14-17 +hashblocks_sha512 5 314 2376 +388+219+126+78+23+9+19-3-3-3-3-3-3-3+0 +hashblocks_sha512 5 472 3531 +425+193+96+8+0-28-21+0-17+2-21+1-18+2-21 +hashblocks_sha512 5 709 5821 +532+185+31-3+2-24-23-22+0-3+0-2+0-2+0 +hashblocks_sha512 5 1064 9239 +622+22+13-15-13-11-8-14-18-1+9+0+4+0+4 +hashblocks_sha512 5 1597 13807 +654+40+0+45-1-3+0+4-3+11-3+11-3+11-3 +hashblocks_sha512 5 2396 20658 +610+9+25-4+2+0+4-1+3-3-1-3-1-3+1 +hashblocks_sha512 5 3595 32028 +606-1+26-2+1-2+2-2+0-3+1-4+0-4+0 +hashblocks_sha512 5 5393 47977 +591+10-17+8+4-27-3+0-24-35+0+0-37+5+1 +hashblocks_sha512 5 8090 71889 +533-10+21+0-6+0-6+8-6+0-6+1-6+0-5 +hashblocks_sha512 5 12136 107132 +493-37-9+3-1+3-1+3-1+16+0+9-1+10-2 +hashblocks_sha512 5 18205 161712 +451-77+70+0-5+19-5+19-5+1-5+19+4+0-5 +hashblocks_sha512 5 27308 242445 +438+1176-112+11+0-4+0+2-6+0+0+8+0+2-6 +hashblocks_sha512 5 40963 364156 +628+89+12-16-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 5 61445 546146 +804+125-7-77-16-102+1152+82+37-42+26-62+0-46+26 +hashblocks_sha512 6 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 6 0 143 +785+29+23-19+9+1+0+0+0-16-16-17-17-17-17 +hashblocks_sha512 6 1 126 +87+11+7+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 2 126 +25+7-2-1+27-1+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 4 127 +37+12-2+3-2-2+0+0+16+0+1-1-1-1-1 +hashblocks_sha512 6 7 126 +38+18-1+1-1+1+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 11 126 +9+13-1+1+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 17 126 +9+15-1+1+1+2+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 26 126 +9+13+12+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 40 126 +9+13+12+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 61 126 +9+15+14+0-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 92 126 +9+13+11-1+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 139 1197 +2146+168+54+38+22+19+21+0-1-19-1-19-3-19-1 +hashblocks_sha512 6 209 1195 +160+77+54+20-23+14+36+19-6-15-16+0-18+0-18 +hashblocks_sha512 6 314 2209 +315+160-2+69-3+0+0+0+0+0+0+0+0+0+57 +hashblocks_sha512 6 472 3217 +437+83+124+17+23-1+0-3-1-4+108-3-1+68-4 +hashblocks_sha512 6 709 5312 +492+39-35+19+0-52-16-52+1-53+1-53+21-52+4 +hashblocks_sha512 6 1064 8330 +427-132-15-86-70-67-13-19+17+5+2+0+18+3+5 +hashblocks_sha512 6 1597 12337 +512+0+13-22-39+8-48+5-31+78-49+58-33+57-50 +hashblocks_sha512 6 2396 18386 +485+86-3-23+59-22+34+0+21+55-4-23+53-5-21 +hashblocks_sha512 6 3595 28472 +455+104+0+22+22+18+13-60-5-56+72-59-4-54-5 +hashblocks_sha512 6 5393 42570 +542-49+50+129+110+28-28+0-8-31+19-8-31-7+14 +hashblocks_sha512 6 8090 63759 +496+91-76+30-104+10+82+0-79-56+56+25-62-57-101 +hashblocks_sha512 6 12136 95006 +590-63-70+38+0-92+3-64-3-91+58+79+38-162+1 +hashblocks_sha512 6 18205 143407 +586-201+176-62+91-206+12-7+91-206+0+36-47-66+92 +hashblocks_sha512 6 27308 215012 +651+166+1126+136+23-56-3+0-84-85-37-26+17-150+181 +hashblocks_sha512 6 40963 322630 +0+25-571+549+218-298-212+166-591+411-606+838-589+434-198 +hashblocks_sha512 6 61445 483948 +882-31+0+1216-896-1074+966-1058+652-902+785-1062+367-1075+460 +hashblocks_sha512 7 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 7 0 192 +906+56+16+2+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 1 192 +71+0+4+0+1+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 2 193 +41+1+0+1+0+1-1-1-1+2-1-1-1+4+3 +hashblocks_sha512 7 4 192 +11+0+2+4+5+1+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 7 192 +11-1+2+1+4+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 11 192 +11+0+2+4+5+1+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 17 192 +13+2+3+1+5+1+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 26 192 +11+1+0+2+0+1-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 40 192 +13+2+3+1+5+1+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 61 192 +12+0+2+4+5+1+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 92 192 +11+1+0+2+0+1-1+3+2+3+0+0+0+0+0 +hashblocks_sha512 7 139 1380 +1677+109+20+4+4-21-1-17+24+12-2-18-4-12+0 +hashblocks_sha512 7 209 1371 +63+27+32+14+3+0+9+0+0-3+5+0-11-9-16 +hashblocks_sha512 7 314 2532 +154+74-16-31+44-20-15-22-16+0+0+4-3+44+5 +hashblocks_sha512 7 472 3691 +165+16-31+6+5-12+1-10-1-2+0+0+0+6+0 +hashblocks_sha512 7 709 5989 +207+34-3-32+3+3-6-7+11-14-7-6+6+3+0 +hashblocks_sha512 7 1064 9469 +252+67+1+9-40+0-15-5-25+12-1-2+0-4+2 +hashblocks_sha512 7 1597 14080 +209-26-10+2+10-7-2-17+45+0+3-8+5+0+3 +hashblocks_sha512 7 2396 20982 +169+6+14-4+2+0+13-6-15+0-6-1-15+0-6 +hashblocks_sha512 7 3595 32474 +186+11+16+22+16+0+15-2+0+20-7-8-14-11-7 +hashblocks_sha512 7 5393 48654 +142-53+3+22-61+13+0-74-6+15-29+10+45-46-3 +hashblocks_sha512 7 8090 72806 +195-37+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 12136 108436 +279+23+28-29+0+36-21-29+0+36-21-29+0+36-21 +hashblocks_sha512 7 18205 163764 +330+2+38+0-49-10+37+0-49-10+37+0-49-10+37 +hashblocks_sha512 7 27308 245924 +324-280-290-298-290-298+598+1111+32+4+0+4+0+4+0 +hashblocks_sha512 7 40963 371926 +353+46-60+74+62+3+177-30-78+0-86+32-78+0-86 +hashblocks_sha512 7 61445 558186 +124-52-162-100-142-18-106+6+862+98-8+50+24+24+0 +hashblocks_sha512 8 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 8 0 126 +1463+58+33+27-1+0-1+1+15+1-1+0+0-1+0 +hashblocks_sha512 8 1 127 +79+17+19+2+10-1+0-1+16+3-1+0-1+0-1 +hashblocks_sha512 8 2 127 +74+17+21+4+12-1+0-1+0-1+0-1+0-1+0 +hashblocks_sha512 8 4 126 +43+19+0+7+7+9+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 7 125 +43+20+1+9+8+6+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 11 125 +13+18+7+4+11+12+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 17 125 +13+18+7-1+6+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 26 125 +13+18+7+5+10+12+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 40 125 +14+19+7+0+5+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 61 125 +16+15+8+6+12+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 92 125 +13+18+7+5+10+12+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 139 1388 +3548+189+86+55+16+0-27-53-70-93+8-77-88+8-71 +hashblocks_sha512 8 209 1393 +208+134+87+36+8+4-27-46-67-94+0-83-93+7-83 +hashblocks_sha512 8 314 2488 +495+348+222+89+4-10-10-12-10-9-12-3+0+1+2 +hashblocks_sha512 8 472 3674 +622+308+68-25-19-18-21-5+0+0+0+0+0+0+0 +hashblocks_sha512 8 709 6047 +812+189-4-9+1+0+0+2+0+0+0+1+0+0+2 +hashblocks_sha512 8 1064 9585 +955+12+7+14+3+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 1597 14349 +917-48+6-36+5-38+4-41+0+0-44+0-45+2-44 +hashblocks_sha512 8 2396 21429 +1038+30+2+0-2-3-2+2-2+1-3+1-3+2-2 +hashblocks_sha512 8 3595 33227 +1047+34+3+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 5393 49754 +903+83+21-11+40+0-9-7+39+0-9+38+0-11+38 +hashblocks_sha512 8 8090 74576 +933+28+7+2-1+0+0+2+3-1-41-8+2-1+0 +hashblocks_sha512 8 12136 111157 +949+32+8+4-2-1+0-3+1-3+1-3+0-1-1 +hashblocks_sha512 8 18205 167803 +937+25+1+11-3-9-3-9+0+4+0+4+0+4-1 +hashblocks_sha512 8 27308 251577 +974+1652+22+11+0+0+0-2-1+3+0-2+2-2+0 +hashblocks_sha512 8 40963 377876 +954+37+18+0+4-6+4-6+0-6+0-6+4-6+4 +hashblocks_sha512 8 61445 566642 +1071+49+34+32+30+1640+28-1-9-4+0-4-5-14-2 +hashblocks_sha512 9 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 9 0 92 +1645+70+28+1+0+2-2-3+8-4-7-7-7-7+3 +hashblocks_sha512 9 1 85 +78+10+13+11+6+3-1+1+0+0+0+0+0+0+0 +hashblocks_sha512 9 2 86 +43+11+28+8+11+5+3+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 4 87 +42+8+12+7+4-1+0+23-2-1+0+0-2-1+0 +hashblocks_sha512 9 7 87 +43+8+12+8+3+3+4-1+0+0+0+0+0+0+0 +hashblocks_sha512 9 11 89 +15+28+5+7+4+1-1+0-3-5+0-4-4-4-4 +hashblocks_sha512 9 17 85 +20+11+8+3+6+4-1+1+0+0+0+0+0+0+0 +hashblocks_sha512 9 26 89 +15+7+4+1+1+1+0-5+0-4-3-3-3-3-3 +hashblocks_sha512 9 40 86 +18+10+7+2+5+3-2+2-1-1+0+0+0+0+0 +hashblocks_sha512 9 61 87 +18+7+5+9+6+4-1+0-2-1+0+0+0+0+0 +hashblocks_sha512 9 92 89 +15+6+4+2+0+1+0-5+0-4-3-3-3-3-3 +hashblocks_sha512 9 139 1279 +2118+224+103+63+46+16+6+0-29-46-28-28-30-28-30 +hashblocks_sha512 9 209 1279 +228+147+98+76+51+22+0+5-32-43-29-26-35-28-31 +hashblocks_sha512 9 314 2392 +459+269+166+71-7-6-17-15-1+2+0+1-1+2+0 +hashblocks_sha512 9 472 3531 +536+303+96-3-1-24+2+0-4+4-4+4-4+4-4 +hashblocks_sha512 9 709 5809 +837+198+48+20-9-14-13-16-1+4-2+1+0+3-2 +hashblocks_sha512 9 1064 9217 +902+32+3+32-13+8-19-17-5+1-5+1-5+0-5 +hashblocks_sha512 9 1597 13790 +901+21+0+27-16+25-44-13+19-15+1-16+1-42-15 +hashblocks_sha512 9 2396 20651 +859+23+0-1+11-32-5+6-7+8-5+7-6+6-7 +hashblocks_sha512 9 3595 32011 +853+23+0-1+11-32-5+7-7+6-7+6-5+6-6 +hashblocks_sha512 9 5393 47921 +868+26-1+7+28-4-12+3+28-7-11+0+28-7-12 +hashblocks_sha512 9 8090 71814 +850+14+4+1+0-30-3-17+0+0+0+0+0-32-9 +hashblocks_sha512 9 12136 107033 +838+20+3+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 18205 161564 +843+16+3-3+0-3-3-3-3-3+1510+21+0-2+0 +hashblocks_sha512 9 27308 242214 +880+18+8+3+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 40963 363838 +869+19-32+0-34+0-34+0-34+0-34+0-34+0-34 +hashblocks_sha512 9 61445 545602 +874+22-20+1427+62+4+0-10+0-10+0-10+0-10+0 +hashblocks_sha512 10 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 10 0 126 +528+65-1+1-1+0+0+0+17+1+0+0+0+0+0 +hashblocks_sha512 10 1 127 +48+18-2+2-1-2+0+1+16+0+1-1-1-1-1 +hashblocks_sha512 10 2 126 +27+4-2-1+26+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 4 126 +26+5-2-1+1+1+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 7 126 +9+14+11-1+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 11 126 +9+12+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 17 126 +9+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 26 126 +9+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 40 126 +9+12+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 61 126 +9+13+12+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 92 126 +9+15+1+1+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 139 2124 +3185+246+18+12+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 209 2125 +207+17+11+14+0-2-3+8-2-3+8-2-3+8-2 +hashblocks_sha512 10 314 4159 +219+42+30+24+0+0+6+0-3+0-5-1-4-8-6 +hashblocks_sha512 10 472 6136 +206+42+21+2+0+4+2+0+0+0+0+0+0+1-9 +hashblocks_sha512 10 709 10128 +202+70+0-3+19-12-22-20+71+30-7-9-18+16+8 +hashblocks_sha512 10 1064 16142 +189+23+0+0-7-12+77+5-15+5-15+5+77-16-8 +hashblocks_sha512 10 1597 24129 +196+6-5+11-8-14-25-6+0+2+86+2-13-13+88 +hashblocks_sha512 10 2396 36103 +208-14+5-14+1-16+83+18-10-8-24-9+80+2+0 +hashblocks_sha512 10 3595 56072 +214+88-5+0+22-14+79+18+6-22-25-12-43+18-14 +hashblocks_sha512 10 5393 84017 +160+74+0+7-32+28-38-29-6-29+11+7-13+8-6 +hashblocks_sha512 10 8090 125933 +126+32+16+9+0+83-46+27+26-19-17-17-19-19-43 +hashblocks_sha512 10 12136 187824 +73+1120+150-23+39+0+36-67-24-3+36-67-24-3+36 +hashblocks_sha512 10 18205 283641 +268+0-9-35-76+25+24-35+29-118-28+107+106+18-17 +hashblocks_sha512 10 27308 425468 +301-53-128+130-104-134+130+0+2+58-42-42-42+88+915 +hashblocks_sha512 10 40963 640139 +0+62-163+8-20-101-169+135-101+47-117+135+5+197-43 +hashblocks_sha512 10 61445 960066 +274+41+1034+177-27-62-48+156+0-4-2+205-23-48+0 +hashblocks_sha512 11 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 11 0 88 +842+64+31+3-1+0+0-2+14-1+2-1-1-1-1 +hashblocks_sha512 11 1 90 +87+6+5+6+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 2 90 +41+24+6+7+0+1-2-3+0+0-2-5-5-3-5 +hashblocks_sha512 11 4 90 +41+3+36+13+2+1-2-3+0+0-2-5-4-5-5 +hashblocks_sha512 11 7 91 +9+2+4+6-1-3+1+30+0-4-1+1-3-3-4 +hashblocks_sha512 11 11 90 +10+3+5+7+0-2+2+1-2-2+0-5-4-5-5 +hashblocks_sha512 11 17 90 +10+3+5+7+0+1-2-3+0+0-2-5-4-5-5 +hashblocks_sha512 11 26 90 +10+3+5+7+0+1-2-3+0+0-2-5-4-5-5 +hashblocks_sha512 11 40 89 +11+4+6+8+1-1+1+0-1-1+1-4-4-2-4 +hashblocks_sha512 11 61 89 +11+4+5+5+16+1+2+0-1-1-2-4-3-4-4 +hashblocks_sha512 11 92 90 +10+3+4+4+15+0+1-2-3+0-2-2-3-5-4 +hashblocks_sha512 11 139 1899 +996+349+42+32+75-1+0-4-2+4+0+1-4-5-1 +hashblocks_sha512 11 209 1901 +251+55+12+5+1+4-4-1+0-3-1+0+8+0-1 +hashblocks_sha512 11 314 3731 +266+21+12+7+7-1+66+0+0-1-2-3-5+5+0 +hashblocks_sha512 11 472 5503 +219+15+8+8+6+1-3+0-2+1-1-4-4-1-8 +hashblocks_sha512 11 709 9095 +290+38+11-1-6+0+19-4-1-6+58+1-8+19-8 +hashblocks_sha512 11 1064 14507 +212+6+5-5-1-33-6+74+0-2+0-27-2+63+10 +hashblocks_sha512 11 1597 21691 +240+0+1+0-7-2-2+3+1+65-8-6+10-14-5 +hashblocks_sha512 11 2396 32460 +247+8+12+14+3+0-5+64-1-2-8-6-8+63-1 +hashblocks_sha512 11 3595 50451 +199+22+102-7+89-1-20+0+32-8-24+66-10-25+63 +hashblocks_sha512 11 5393 75605 +176+133+35+67+0+56-11+49-2+54-13-17-27-13-21 +hashblocks_sha512 11 8090 113358 +213+85+43+32+8-51-39-49-70+14-69-65-60+1+0 +hashblocks_sha512 11 12136 169029 +176+161-39+20-49-80-20-7-12+85+21+0+1-68+2 +hashblocks_sha512 11 18205 255226 +296+2+26+14-5+96+2+0+0+0-31-10-71+65-71 +hashblocks_sha512 11 27308 383015 +4-117+730+435+74+95-86-94-8-59-8+22-106+54+0 +hashblocks_sha512 11 40963 575850 +67+151+107-29-46-78+88+149+58+0-8-56-48-58+811 +hashblocks_sha512 11 61445 863752 +295-149+0-32-144+84+34-180-192-118+18+18+89-114+1144 +hashblocks_sha512 12 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 12 0 126 +632+69-2+0+0+0+0+0+17+1+0+0+0+0+0 +hashblocks_sha512 12 1 126 +31+13-1-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 2 126 +30+13-1-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 4 126 +30+11+2+0-1+1+1+2+0+0+0+0+0+0+0 +hashblocks_sha512 12 7 126 +6+9-2+1-1+1+1+2+0+0+0+0+0+0+0 +hashblocks_sha512 12 11 126 +6+9-2+1-1+1+1+2+0+0+0+0+0+0+0 +hashblocks_sha512 12 17 126 +7+9-2+1-1+1+1+2+0+0+0+0+0+0+0 +hashblocks_sha512 12 26 126 +7+9-2+1+0-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 40 126 +6+9-2+1-2+2+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 61 126 +7+9-2+1-2+2+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 92 126 +8+9-1+1-1+1+1+2+0+0+0+0+0+0+0 +hashblocks_sha512 12 139 2008 +1155+330+142+25-6-11-18+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 209 2008 +200-8-1-8-5-14-18+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 314 3893 +185+3+77+12+4-3-3+0-10-17-3+10-15+6-20 +hashblocks_sha512 12 472 5746 +211+27-15-23+2-16+0-2+16+2+87-20-1-2+18 +hashblocks_sha512 12 709 9487 +131+21+19+1-19-31+58+0-25+1-14-13+70-8-13 +hashblocks_sha512 12 1064 15110 +125-33+63+57-4-41+1-41+92+0-5-33+84+0-5 +hashblocks_sha512 12 1597 22555 +200-24+83+14+50+84-5-10+0-7+50+84-5-10+0 +hashblocks_sha512 12 2396 33815 +81-64+26-113+11-50+4+10+80-62+63-79-42+0-42 +hashblocks_sha512 12 3595 52501 +199-74+125-104-50-92+5+13+64-8-11+70-90+0+41 +hashblocks_sha512 12 5393 78632 +173-10+17-23+57-103-5+0-103+49+113-9+40+0-103 +hashblocks_sha512 12 8090 117813 +305+156-31-36+0+26+126-35-36+0+24+128-35-36+107 +hashblocks_sha512 12 12136 175774 +120-195+44+1-6-9+117+127-26+265-164-27+0+41-55 +hashblocks_sha512 12 18205 265485 +270+160+0-104-44-1-101-40+40+43-104+866+174+180-161 +hashblocks_sha512 12 27308 398221 +328+89-156-188+125+0-188+5+0-188+1-180+13+52+0 +hashblocks_sha512 12 40963 599576 +217-219-84+42+0+174-204+44-46+917+96+179-134-144-94 +hashblocks_sha512 12 61445 899215 -79+50+55+448-84-45+0-84-45+199+738+97-345+280-110 +hashblocks_sha512 13 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 13 0 192 +861+59+19+18+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 1 192 +45+1+2+2+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 2 192 +41+2+3+0+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 4 192 +44+2+1+4+4+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 7 192 +41+2+1+4+1+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 11 192 +13+0+0+0+1+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 17 192 +12+0+1+4+0+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 26 192 +12+0+2+2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 40 192 +13+0+0+0+1+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 61 192 +14+0+0+0+1+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 92 192 +13+0+0+0+1+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 139 2074 +657+221+73+54+18-2-13+19+10-4+0-4+0-4+0 +hashblocks_sha512 13 209 2072 +272+36+13+4-21+0-20+23-17-4+9+9-9+0-2 +hashblocks_sha512 13 314 3960 +361+1-13-14-10+20-16-9-2+3+11+6-26+15+0 +hashblocks_sha512 13 472 5796 +215-3-8+1+44+16+45+24-1-15-9-11+0-8+4 +hashblocks_sha512 13 709 9524 +141+9-14+0+13-18+34+1-5-34+6-25-43-45+26 +hashblocks_sha512 13 1064 15106 +143-7-36+31+11+93+1-7-6+43-12+64+0-49-13 +hashblocks_sha512 13 1597 22541 +230-1+21+49-76+17-58+19+93-72-60+20+0-43-57 +hashblocks_sha512 13 2396 33719 +125+11+120+47+33-37+64-46-47-62-27+55+0-154-105 +hashblocks_sha512 13 3595 52354 +65+16-102-1+6+56-101-150+25-101+0+3-71-16+38 +hashblocks_sha512 13 5393 78381 +1-46+43-24-59+32+109-98+132+12-2-35+145+0-74 +hashblocks_sha512 13 8090 117406 +412-125+41-64+0-19-41-3-74+124+133+132+143+193-5 +hashblocks_sha512 13 12136 175115 +129+0+54+28-31-67+88+35-91-99-14-38-121+12+613 +hashblocks_sha512 13 18205 264380 +509+38+122-138-66-20-92+27-126+0-14+106+13+55-233 +hashblocks_sha512 13 27308 396557 +619+70+36-102-219-130+1-297+93-172-18+70-46+155+0 +hashblocks_sha512 13 40963 598996 +425-145-242+749+0-89+16-458-22+148+144-36+98-196+40 +hashblocks_sha512 13 61445 898123 +0-15-92-123+133-173+848+358+110+51-155+95+461-66-120 +hashblocks_sha512 14 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 14 0 130 +1414+81+16-5+0+0+0+0+11-4+0+0+0+0+8 +hashblocks_sha512 14 1 127 +87+18-2+3-2+1-2+1-2+1-2+6-2+0+0 +hashblocks_sha512 14 2 127 +64+19+1+6-1+0-1+0-1+0-1+5-2+0+0 +hashblocks_sha512 14 4 126 +40+40+4+2+10+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 14 7 129 +11+11-1+2+22-4+0-4+0-4+0-4+4-4-2 +hashblocks_sha512 14 11 128 +11+12+0+3+0-2-1-2-1-2-1-2+2+2+2 +hashblocks_sha512 14 17 128 +14+15+3+3+0-2-1-2-1-2-1-2+2+2+2 +hashblocks_sha512 14 26 128 +12+12+0+3+0-2-1-2-1-2-1-2+2+2+2 +hashblocks_sha512 14 40 128 +13+17+1-4+1-3+0-3+0-3+0-3+5-2-2 +hashblocks_sha512 14 61 128 +11+12+0+3+0-2-1-2-1-2-1-2+2+2+2 +hashblocks_sha512 14 92 127 +14+15+2+4+2-1+0-1+0-1+0+4-2+0+0 +hashblocks_sha512 14 139 2206 +2796+197+28+9+12+0-5-1-5+2-1-1-1+6-1 +hashblocks_sha512 14 209 2192 +301+38+12+7+12-5-1-5+1-3+0-1-5+3-6 +hashblocks_sha512 14 314 4295 +351+88+3-6+1+3+1-7+0-10-5-7+1-4-3 +hashblocks_sha512 14 472 6369 +305+25+10+17-13-6-7-7-7-3-6+0+0+0+8 +hashblocks_sha512 14 709 10522 +283+6-5-2+0+0+26+4-4-4+22-4-2-15+7 +hashblocks_sha512 14 1064 16760 +251+0-5+10+6-3+5+0-1+1+10-3+0-7+2 +hashblocks_sha512 14 1597 25058 +319+23+0-11+5-9+3-8+0+4+1-15-13-19-15 +hashblocks_sha512 14 2396 37484 +252-34+7-2+10+17+38-8+0-4-6-8+0-4+9 +hashblocks_sha512 14 3595 58017 +96+52-1+47+8+0-2-77+8-4-15+15+15-92-9 +hashblocks_sha512 14 5393 86910 +161+62+44-3+66-11-8+70-11-18-2+96+0-10+66 +hashblocks_sha512 14 8090 130457 +337+133+104+58+879+1-26-18-13+0-34-40+10-13-445 +hashblocks_sha512 14 12136 194601 +372+87+16-12+0-12-2-8+3-7+3-7+3-7+3 +hashblocks_sha512 14 18205 293880 +311+96+55+27-13+3-11+7+0+6-779-817-769-821-775 +hashblocks_sha512 14 27308 440669 +570+105+55+5+55+3+0-4+0-415-1566-1584-1633-1609-1595 +hashblocks_sha512 14 40963 662936 +242+39+76+42+0+42+0+46-121-802-483+60-121-798-483 +hashblocks_sha512 14 61445 994206 +159+83-208+124-244+86-244+0-254+124-244+0-250+366-2148 +hashblocks_sha512 15 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 15 0 90 +994+58+52+27-1+1+1-1+12+0+0-4-3-4-4 +hashblocks_sha512 15 1 93 +73+27+1+8-2+1-2+4+0-2+0-2+0-2+0 +hashblocks_sha512 15 2 92 +43+1+3+2-1-3+0-3+0-3+0-3+0-3+0 +hashblocks_sha512 15 4 94 +6-1+2-2+0-5+0+1+0-5+0-5+0-5+0 +hashblocks_sha512 15 7 92 +10+3+3+5-1-3+0-3+0-3+0-3+0-3+0 +hashblocks_sha512 15 11 94 +6-1+1+0-3+0-5+0-5+0-5+0-5+0-5 +hashblocks_sha512 15 17 92 +12+1+3+4-1+0-3+0-3+0-3+0-3+0-3 +hashblocks_sha512 15 26 91 +9+2+3+27+2+1+0+2-2-2-5-4-5-4-5 +hashblocks_sha512 15 40 94 +6-1+1+0-3+0-5+0-5+0-5+0-5+0-5 +hashblocks_sha512 15 61 94 +10-1+1+0-3+0-5+0-5+0-5+0-5+0-5 +hashblocks_sha512 15 92 92 +12+1+3+4-1+0-3+0-3+0-3+0-3+0-3 +hashblocks_sha512 15 139 1906 +737+311+177+11+1+3-2+0+0+0+0+0+0+0+0 +hashblocks_sha512 15 209 1907 +261+0+1-1-4+0+4-1-4+6+0-1+0+0-1 +hashblocks_sha512 15 314 3722 +330+19+6+3-7+1+0-7-3+0+2+1-13-18-22 +hashblocks_sha512 15 472 5527 +258+30-27+0+8+6+7+25+0-4-5-5-5-7-5 +hashblocks_sha512 15 709 9124 +200-39+38-39-30-22+2+0-9+6+33+16-5+3-9 +hashblocks_sha512 15 1064 14551 +167-38-77-4+16-19+2+2+0-3+8+4-23-3+8 +hashblocks_sha512 15 1597 21760 +196-123+18+10-5+10+8-1-1+0+75+11-6-11-9 +hashblocks_sha512 15 2396 32575 +88-29+14+1-8+8+64-7-1+0+65-7+1-8-7 +hashblocks_sha512 15 3595 50594 +11+43-13-7-2+1+0-1-5+65-15+7-2+1+73 +hashblocks_sha512 15 5393 75828 +57+31-6+51+0-3-16+18+93+50-15-6-3+61-3 +hashblocks_sha512 15 8090 113735 +32-48+25+13+16-45+28-37-86-9+76-41+15-63+0 +hashblocks_sha512 15 12136 169583 +119+44-59+12-75+0-75+10-77-1+88-67-68+67+24 +hashblocks_sha512 15 18205 256076 +176+92+85-51+0-3+3-23+902+127+69-70-27-5-70 +hashblocks_sha512 15 27308 384084 +69+119-20-4-81+33-185+31-28+0+150-20+48-20+48 +hashblocks_sha512 15 40963 577126 +25+63-4+10-42-143+74-34+0+721-124-125-53+16+18 +hashblocks_sha512 15 61445 865686 -247+31+0+8+32-48+14-78+44-296+826+50-83-168-108 +hashblocks_sha512 16 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 16 0 145 +961+69+21+20+21-2+0-2+7-1-4+0-2-3-2 +hashblocks_sha512 16 1 145 +63-4-2-3+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 2 145 +57-3+0+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 4 145 +39-4-2-3+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 7 143 +13+18-1+2+0+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 16 11 143 +13+18-1+2+0+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 16 17 157 +2+7+8+5+3+0+0+0-1-14-14-16-14-15-12 +hashblocks_sha512 16 26 156 +0+5+7+6+4+1+1+1+0-12-13-14-11-11-11 +hashblocks_sha512 16 40 143 +14+18-1+2+0+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 16 61 143 +16+7-3+0+0+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 16 92 143 +16+20-3+0+0+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 16 139 2306 +403+101+63+37+30+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 209 2306 +160+35+5+4+59+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 314 4506 +153+46+16+1+2+0+0+0+0+0-1+3+0+0+0 +hashblocks_sha512 16 472 6676 +190+65-13-5+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 16 709 11034 +124-17-4-8-4-2+112+4-22+0+4+0+0-22+0 +hashblocks_sha512 16 1064 17556 +130+13-5-6-6-6-6+53+0+0+0+1+1+1+40 +hashblocks_sha512 16 1597 26222 +126+18-5-6+48+0+0+0+58-2+0+0+52+0+0 +hashblocks_sha512 16 2396 39256 +102+12-23+19-20-3+30+30-18+0+32-28-15+49-20 +hashblocks_sha512 16 3595 60994 +32-19-4+5-64+11-61+0+1+5-54+0-55+7-54 +hashblocks_sha512 16 5393 91327 +20+5-55+6+0+7-48+0-3+6+0-43+10+0-9 +hashblocks_sha512 16 8090 136836 +75+18-21+4+54+0-7+0-7+56-4-2-7+0+45 +hashblocks_sha512 16 12136 204066 +31+13-30-46-2+4+0-69-17+864-18+2+6+0-46 +hashblocks_sha512 16 18205 308172 +142+33-55+4-49+12-53+14+0+14-4-48+3-40-3 +hashblocks_sha512 16 27308 462182 +316-52-10+11+2+4+56-43-6+5-4-2+59-46+0 +hashblocks_sha512 16 40963 697184 +379-26+562+572+569-4-12+0-12+0-10+16-8+16-8 +hashblocks_sha512 16 61445 1045782 +635+1208+623+790+844+797+0-60-52-60-54-58+20-60-52 +hashblocks_sha512 17 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 17 0 88 +840+86+30+1+1+0+0-4+13+0-4-4-3-1-4 +hashblocks_sha512 17 1 89 +34+0-1+1+0+1+1+24+0-1-5-5-5-4-3 +hashblocks_sha512 17 2 86 +39+0+4+5+2+5-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 17 4 86 +39+0+3+5+2+5-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 17 7 86 +39+0+5+8+4+2+0-1-2+0-2+0-2+0-2 +hashblocks_sha512 17 11 86 +14+2+4+3+2+5+2-2-1-1-2+0-2+0-2 +hashblocks_sha512 17 17 86 +12+0+2+4+4+2+4-1+0+0+2-2-1-1-2 +hashblocks_sha512 17 26 86 +12+0+1+1+3+3-1+0-2+0-2+0-2+0-2 +hashblocks_sha512 17 40 86 +12+0+4+4+4+2+2-2-1-1-2+0-2+0-2 +hashblocks_sha512 17 61 86 +12+0+4+4+4+2+2-2-1-1-2+0-2+0-2 +hashblocks_sha512 17 92 86 +14+2+3+2+2+5-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 17 139 1972 +1168+172+62+23+19-3-3-8+1+0-3+0-4-3-2 +hashblocks_sha512 17 209 1974 +102+7-2+0-2-1+1+2+0-2-2+0+0-2-2 +hashblocks_sha512 17 314 3868 +175+22+3+0+0+0+0+0+2-1-1-1-1-1-6 +hashblocks_sha512 17 472 5735 +148+14-9-4+17+0-3-3+5-6+5+0+0+5-1 +hashblocks_sha512 17 709 9491 +182+36+4-1-1+21+18+0+0-8+0+0+17+13-6 +hashblocks_sha512 17 1064 15158 +115+51+4+0+0-23-40+1+1-1+2-24-17+0+4 +hashblocks_sha512 17 1597 22665 +133+49+1+3-2-2+0-6+0-1-3+1-4-1+3 +hashblocks_sha512 17 2396 33919 +154+86+0+5+4-3-1-4+1+66-1+0-1-1-1 +hashblocks_sha512 17 3595 52710 +123+8+2+4+0+23-3-1-4-3-2+63+23-1-3 +hashblocks_sha512 17 5393 78998 +356+13+1+0+2+3-1+0+6+0+0+2+0+0+0 +hashblocks_sha512 17 8090 118395 +42+30+2+68+0-2+0-2+0-2+0-2+0-2+2 +hashblocks_sha512 17 12136 176553 +164+12-2+5+59+0-4+0-4+0-1-1-4+0+60 +hashblocks_sha512 17 18205 266668 +295-49+2+0-57-59+0+0-58-61-61+716-77+9+10 +hashblocks_sha512 17 27308 399877 -60+32-56+2-60+0-60+0-60+68-59+128-58+68+1 +hashblocks_sha512 17 40963 600676 -23+91+8-56+68+66-120+68-58+664+0-61-117+69-122 +hashblocks_sha512 17 61445 900848 -144+79-64+186-10-66+186-134+176-6+662+143+62+0-126 +hashblocks_sha512 18 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 18 0 143 +807+93+25+26+27-2-2+0+12+2-2+0-1-1-1 +hashblocks_sha512 18 1 142 +121+42+1+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 2 142 +81+28+1+2-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 4 142 +60+3+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 7 142 +31+11-1-1+1-1+3+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 11 142 +21+10+3-1+1-1-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 17 142 +22+10+4-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 26 142 +22+12+2-1+1-1+3+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 40 142 +29+14-1+0+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 61 142 +32+14-1+0+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 92 142 +28+14-1+0+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 139 2078 +411+195+57+11+0+0-2-2-2-5-1-6+8+8+8 +hashblocks_sha512 18 209 2081 +213+11-7-10-6+51+0-10+0-10+0-10+0-10+0 +hashblocks_sha512 18 314 4044 +207+57+43+9+8+8-5+15-5+0-5-6-6-6-6 +hashblocks_sha512 18 472 5982 +255+36-4-2+6+62+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 18 709 9849 +185-3+9+7+41-9+15-9+0+0-24+14-24-10+0 +hashblocks_sha512 18 1064 15658 +182+33+96+17+0+0+80+0+0-2+0+80+0+0+80 +hashblocks_sha512 18 1597 23386 +276+8+61-16-20+62-14+54+0-14-14+54+2-14-14 +hashblocks_sha512 18 2396 34995 +165+93+0+65-27+17-67+59-11+25-61-61-19+41-27 +hashblocks_sha512 18 3595 54344 +258+1+46+42-42-90-20+16-38+16-38+16-38-28+0 +hashblocks_sha512 18 5393 81314 +334+98+92+88+6-2+0-2+0-2+0-4+0-2+0 +hashblocks_sha512 18 8090 121878 +334+37-58+14-62+6+0+0+0+0-2+0+0+0+0 +hashblocks_sha512 18 12136 181600 +567+97+79+66+82+0-8-8-8-6-8-6+1037+323-7 +hashblocks_sha512 18 18205 274186 +908+33+90+72+88+6-2+0-2+0-2-2-2+0-2 +hashblocks_sha512 18 27308 412184 +944+44+17+2+0+10-24+4-8+5-2-20+0-18-3 +hashblocks_sha512 18 40963 623530 -187-251+629+178-9+0+12+0+10-2+10-2+10-2+10 +hashblocks_sha512 18 61445 934966 +204+187+172+170+174+999+22-1-8+0-8+0-6+0-6 +hashblocks_sha512 19 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 19 0 192 +1465+41+3+2+0+2+0+2+0+0+0+0+0+0+0 +hashblocks_sha512 19 1 192 +47-1+1+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 19 2 192 +52+0+2+0+1+4+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 19 4 192 +9+4+0+3+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 19 7 192 +11+5+1+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 19 11 192 +9+4+1+0+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 19 17 192 +9+4+0+3+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 19 26 192 +9+4+0+3+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 19 40 192 +9+4+1+0+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 19 61 192 +9+4+0+3+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 19 92 192 +9+2+1+3+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 19 139 2106 +238+69+20-23-20-15+9+0-20-15+9+0-20-15+9 +hashblocks_sha512 19 209 2101 +45-6+2-11+0-8+4+3-1+3-1+3-1+3-1 +hashblocks_sha512 19 314 3993 +94+50+0-2+19-7-3-9+5-2-20+1+5-15+13 +hashblocks_sha512 19 472 5920 +126+12+0+11-18+2-16-10+19+27-22-16-4+6-16 +hashblocks_sha512 19 709 9742 +85+17-8-9+6-3-21-2+23+0+4-19-23+21+13 +hashblocks_sha512 19 1064 15472 +95-1+12+0+24+7+17-2-4-7-11-5+5-22+11 +hashblocks_sha512 19 1597 23096 +78+45+24-23-11-1-5+25+22-34+0+14-12-20+18 +hashblocks_sha512 19 2396 34560 +31-42+0+69-6+24-32-31-16-4-13+34+47+58+9 +hashblocks_sha512 19 3595 53690 -10+0+2-74+36-21+41+6-28-10+9+13-58+0-11 +hashblocks_sha512 19 5393 80438 -7+48+0+44-73+34+590-21-25-2+52+14-33-17+77 +hashblocks_sha512 19 8090 120529 -96-34-164+4-22-22-4+31+3+0+6+25-1+14+15 +hashblocks_sha512 19 12136 179704 -71-271-59-5-2+9+64+9-8+16+0+27+0+16+13 +hashblocks_sha512 19 18205 271412 +0+1-242+73-242+85-254+81-273+120-241+68-258+78-248 +hashblocks_sha512 19 27308 406699 +419+243-23+440+0+390+1+407+1261-29-1104-837-786-799-1077 +hashblocks_sha512 19 40963 614348 -118+420-786-619+1295+0+1305-1+1462+0+1305-1+1462+0+1305 +hashblocks_sha512 19 61445 920984 +2331+1440+289+488+659-40-964-32-926+0-958+4-978+58-1024 +hashblocks_sha512 20 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 20 0 142 +895+56+39+40+1-1+0+0+13+3+0+0+0+0+0 +hashblocks_sha512 20 1 142 +102+7+2-1-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 20 2 142 +74+12+12-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 20 4 142 +16+13+34+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 20 7 142 +16+12+13-1-1+0+3+0+0+0+0+0+0+0+0 +hashblocks_sha512 20 11 142 +16+15+15+0+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 20 17 142 +17+15+5+0+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 20 26 142 +17+14+15+0+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 20 40 142 +16+13+13-1+1+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 20 61 142 +17+13+13-1+1+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 20 92 142 +16+12+13-1+1+3+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 20 139 2388 +2568+114+70+0-3-1+0-3-2+0-2+0-2+0-2 +hashblocks_sha512 20 209 2387 +117+16+15+0+0-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 20 314 4666 +176+11-6+1-9-1-3+2+0+0+1-1+0+0+0 +hashblocks_sha512 20 472 6909 +117+7+5+0-6-4+0-2+1-3+1-3+1+5-1 +hashblocks_sha512 20 709 11421 +76+40-1+5+0-21+4-4+6+5-22-2-2-4+0 +hashblocks_sha512 20 1064 18186 +66+8+6-2+7-7-8+58-4-6+0-6-6+53+1 +hashblocks_sha512 20 1597 27162 +116+24+6+0+0-2+65-5-4+3-5+67-5+3-5 +hashblocks_sha512 20 2396 40645 +124+1-14+0+1+63-25-7+70+3-24-7+64-22-21 +hashblocks_sha512 20 3595 63126 +112+9+19+2-34+0-14-22+14+0-14-22+14+0-14 +hashblocks_sha512 20 5393 94586 +91+37-52+0+0+64-10-63-10+4+55-4-8+44-7 +hashblocks_sha512 20 8090 141805 +195-99-62+3+2-1-2+2-73+13-3+11+0+2-7 +hashblocks_sha512 20 12136 211435 +127+19+3+8-1+11-69-5-11+10+1+0-10-2-11 +hashblocks_sha512 20 18205 319241 +283+25-59+12+0+863+510-65-6+0-5+12+0+9-7 +hashblocks_sha512 20 27308 478863 +633-32-2+18-2+11-11+11-4+16-5+11-13+12+0 +hashblocks_sha512 20 40963 723393 -319-627-740+308+0-39+2+9-47+12-46+13-47+9+0 +hashblocks_sha512 20 61445 1083934 +506+71+0+675+526+22+18+18-14-16-14-2-18-16-14 +hashblocks_sha512 21 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 21 0 88 +848+26+66+3+0+0-3-1+13+0-2-2-2-2-2 +hashblocks_sha512 21 1 90 +64+4+0+0-1+3+0+4+0+1-1-5-5-4-4 +hashblocks_sha512 21 2 89 +45+3+27+3+0+2+0+7+1+0-4-2-2-3-3 +hashblocks_sha512 21 4 89 +42+3+5+5+0-1+6+21+0+1-1-4-4-3-3 +hashblocks_sha512 21 7 90 +41+2+4+3+1-2+5+0+1-1-5-4-4-4-4 +hashblocks_sha512 21 11 89 +11+3+5+5+0+2+0+4+1+0-4-2-2-3-3 +hashblocks_sha512 21 17 90 +10+2+4+3+1+1-1+3+0-1-5-3-3-4-4 +hashblocks_sha512 21 26 90 +11+2+3+3+9-2+5+0+1-1-5-4-4-4-4 +hashblocks_sha512 21 40 90 +17+2+3+3+9+0-1+6+0-1-5-3-3-4-4 +hashblocks_sha512 21 61 89 +11+3+5+8+3+5+3-1+0-4-4-3-3-3-3 +hashblocks_sha512 21 92 89 +12+3+5+5+0+2+0+4+1+0-4-2-2-3-3 +hashblocks_sha512 21 139 1976 +495+176-3+1+0+2-4+0+0+2-4+0+0+2-4 +hashblocks_sha512 21 209 1979 +267+32+2-2-2+0+2-5+18-2+6-3-1+7-2 +hashblocks_sha512 21 314 3873 +141+13+13+674+77+23-5-1-8-1-5+1-7-7+0 +hashblocks_sha512 21 472 5751 +236+14+10+8+0+0-15-7-5+4-8-4+1-13-6 +hashblocks_sha512 21 709 9508 +121+32+3+2+31+0-5-10-9-7-9+3+13-4-14 +hashblocks_sha512 21 1064 15166 +89+72+25+25+7-7-20+0-4-3-17-16+4+0+4 +hashblocks_sha512 21 1597 22682 +112+29-11+6+2-2+6-5-13+49-12+0-11+1-13 +hashblocks_sha512 21 2396 33944 +164+34-2+3+1+63+0-2-17-14-7-10+64+8-16 +hashblocks_sha512 21 3595 52765 +136+9-9+58+0-13+46+35-3-36-37+84-35+25-27 +hashblocks_sha512 21 5393 79111 +60+0+41-26-48-3+49-21+53-36+28-21+53-36+28 +hashblocks_sha512 21 8090 118565 +52+0-10-40+23-14+47+9-33+5-33+5-33+5-33 +hashblocks_sha512 21 12136 176815 +58-23-9-26+0-55-30+23+6-46+15+23+6-46+15 +hashblocks_sha512 21 18205 266971 +152-27+7-2-30+4+13-8+0-35+41+18+0-35+41 +hashblocks_sha512 21 27308 400482 +380+964+227+53+0-65-34+52+56-54-24-86-33+78-14 +hashblocks_sha512 21 40963 602956 +221-57+0-69-48-42-118-82+8+7-9+18+712+67+43 +hashblocks_sha512 21 61445 904431 +109+0+27-249+77+113-82-201-87-199-151-239+1578+313+78 +hashblocks_sha512 22 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 22 0 138 +1841+92+18+4+0+1-1+0+12+1+0+0+0+0+0 +hashblocks_sha512 22 1 138 +138+12+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 22 2 140 +74+10+21+1-2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 22 4 140 +74+8-2+1-2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 22 7 138 +49+9+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 22 11 138 +26+8+0+0+1-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 22 17 138 +26+9+0+0+0-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 22 26 138 +26+8+0+0+1-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 22 40 138 +27+9+0+1+1+0-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 22 61 138 +26+11+0+1+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 22 92 138 +26+7+0+0-1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 22 139 1595 +404+119+40+29-1+0+0-1+0+0-1+0+0+0+0 +hashblocks_sha512 22 209 1602 +122+9+1+0+0+0+0+1+0+0+0+0+0+0+0 +hashblocks_sha512 22 314 3094 +108+4+0-1+0-1-1+0-2+2-1+6-3+0-1 +hashblocks_sha512 22 472 4514 +123+9+8+2+3-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 22 709 7414 +93+19+3+0+1+0+0+0+0+1+0+0+0+0+0 +hashblocks_sha512 22 1064 11785 +99+30-1-21+1+20-20+16-21+0-21+1-19+2-21 +hashblocks_sha512 22 1597 17587 +129+27+10+0+0+18-1-2+0-2+14-1+1+1-1 +hashblocks_sha512 22 2396 26303 +101+1-15-16-14-16-11+0-13-16+0+2+0+6+0 +hashblocks_sha512 22 3595 40837 +84+45-41-51-17+22-26+0+3-29+1+19-23-2+3 +hashblocks_sha512 22 5393 61176 +49+38+0+2+1-2-1+0-1-2-1+1-1+2-32 +hashblocks_sha512 22 8090 91626 +39+27-2-2-2-1+2+2+0+0+0+0+0+0+1 +hashblocks_sha512 22 12136 136576 +56+25+2-2-1+3-1+0-1-2-1+2+0+0-1 +hashblocks_sha512 22 18205 206176 +82+23+2-2+1+0-1-2+1+0-1-2+1+0+760 +hashblocks_sha512 22 27308 309126 +110+30-1+0-1+0+0+0+0+2+1-2-2-2+1 +hashblocks_sha512 22 40963 464304 +90+21+4+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 22 61445 696308 +747-28+18+0+4+0+0+4+0+4+0+4+0+2+0 +hashblocks_sha512 23 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 23 0 90 +664+54+22+0-3-1+0+0+11+2+1-1-2-3-1 +hashblocks_sha512 23 1 91 +63+7+4+2+2+0+1-2+1-4-2-3-1+0-1 +hashblocks_sha512 23 2 90 +29+1+0+4-1+4-1+20-3-1+0+1-1-2-3 +hashblocks_sha512 23 4 91 +7+6+6+3-1+3+0+0-4-2-1+0-2-3-4 +hashblocks_sha512 23 7 91 +7+6+6+3-1+3+0+0-4-2-1+0-2-3-4 +hashblocks_sha512 23 11 91 +7+6+6+3-1+3+0+0-4-2-1+0-2-3-4 +hashblocks_sha512 23 17 91 +7+6+5+0+5-2+3-4-2-3-1+0-1+0-2 +hashblocks_sha512 23 26 91 +9+8+9+7+8+2-4-2-1+0-1+0-2-3-4 +hashblocks_sha512 23 40 91 +29+6+1+1+0+0-2-3-1+0-1+0-2-3-4 +hashblocks_sha512 23 61 91 +44+3+5+9+1-1+3+0+10-1-2-3-4-2-1 +hashblocks_sha512 23 92 90 +12+7+3+0-1+0+0+1-1-2-3-1+0+1-1 +hashblocks_sha512 23 139 1489 +260+159+49-3-2-3+0+1-5+1-5+1-5+1-5 +hashblocks_sha512 23 209 1494 +127+17+2-5-4-5-1+0+0+1-2+0-2+0-2 +hashblocks_sha512 23 314 2931 +186+17+7+3+2+2-1+0+0-4-13-13-13-13-32 +hashblocks_sha512 23 472 4290 +166+55+21+18+16+21+2-1+0+0+0+0+0+0+0 +hashblocks_sha512 23 709 7076 +107+39+34+29+4+2+2-1+0+0+0+0+0+0+0 +hashblocks_sha512 23 1064 11294 +136+40+42-13+3-15+3-16-2-15+0-15+2-15+0 +hashblocks_sha512 23 1597 16892 +122+68+9+0-1+2-4+2-4+2-4+0-4-1-2 +hashblocks_sha512 23 2396 25249 +161+39+10+1+0+0-1-1+0-1-3+0-1-1+2 +hashblocks_sha512 23 3595 39217 +134+9+10+0-38-37+2+2-41-1+1-38-39-1+1 +hashblocks_sha512 23 5393 58788 +96+1-71+706-88-52-29+3+0+1+0+3+1+0+0 +hashblocks_sha512 23 8090 88004 +144+37+0+1-2+2-2+0-3+0-3+0-3+0-3 +hashblocks_sha512 23 12136 131187 +108+37+3+2-1-2+1-2-2+0-2+2-2+0-2 +hashblocks_sha512 23 18205 198048 +113+36+7+4+5+0+2+0+2+0+0+0+0+0+0 +hashblocks_sha512 23 27308 296952 +118+40+1+6+0-1+62+2+0+2+0+0+0+0+0 +hashblocks_sha512 23 40963 446330 -110+486-8+18+0+0-6+6-6+2-6+8-6+6-6 +hashblocks_sha512 23 61445 668926 +222+17+0-14-12-8-10-16-6-18+921+430+456+442+454 +hashblocks_sha512 24 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 24 0 139 +747+62-3-1-1+0-1+0+12+5-2+0-1+0+0 +hashblocks_sha512 24 1 137 +117+31+17+0+0+3+0+0+3+0+0+3+0+0+3 +hashblocks_sha512 24 2 139 +90+22+25+0-1+0-2+0-1+0-2+0-1+0-2 +hashblocks_sha512 24 4 139 +26+28+33+3-1+0-2+0-1+0-2+0-1+0-2 +hashblocks_sha512 24 7 139 +27+27+0-1+0-2+0-1+0-2+0-1+0-2+0 +hashblocks_sha512 24 11 139 +26+28+0-2+0-2+0-1+0-2+0-1+0-2+0 +hashblocks_sha512 24 17 139 +26+28+0-2+0-2+0-1+0-2+0-1+0-2+0 +hashblocks_sha512 24 26 139 +26+28+0-2+0-2+0-1+0-2+0-1+0-2+0 +hashblocks_sha512 24 40 139 +26+28+0-2+0-2+0-1+0-2+0-1+0-2+0 +hashblocks_sha512 24 61 139 +26+28+0-2-2-1+0-2+0-1+0-2+0-1+0 +hashblocks_sha512 24 92 139 +26+28+0-2-2-1+0-2+0-1+0-2+0-1+0 +hashblocks_sha512 24 139 1380 +622+152+107+40+21+8+0+0+0+0+0+0+8-3+0 +hashblocks_sha512 24 209 1376 +195+92+19+14+14+11+0-2+0-2+0-2+0+10+0 +hashblocks_sha512 24 314 2634 +243+123+1-8-8-2-8+1-5+4-4+4+0+1-11 +hashblocks_sha512 24 472 3856 +116+14-3-3+12-17+0+1-17+2+0+0+1+1-14 +hashblocks_sha512 24 709 6312 +126+13-2+10-20-25+7-25+10+8+7-25+0-20-18 +hashblocks_sha512 24 1064 10004 +101+16-6-35+10-7+10-21+0-9+7-8+116-31+7 +hashblocks_sha512 24 1597 14918 +103+22-7+69-21-3-19-25-23-8+0+54+33+41+19 +hashblocks_sha512 24 2396 22261 +171+8-4-10-5+11-6-11+1-8+1+70+0+83-7 +hashblocks_sha512 24 3595 34555 +167-7+68+0-12+12+47-20+18-16-10+13-15-40+29 +hashblocks_sha512 24 5393 51769 +108+3-36-54+48+0-22+0+64-20-22+0+34-20+38 +hashblocks_sha512 24 8090 77482 +310+84+6+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 24 12136 115530 +392-2-51+60+215+61-56+10-34+0+117-1+215-1-56 +hashblocks_sha512 24 18205 174470 +74+0-105+87-107+87-105+83-105+83-106+36-106+20-108 +hashblocks_sha512 24 27308 261792 +482+832+180-32-14+102-34-22+84-48+0+84-14-36+74 +hashblocks_sha512 24 40963 394467 -312+0+297-17+5+121+255-125+41-197+167-195-15-157+15 +hashblocks_sha512 24 61445 590730 +0+819+674+938+870+2523-394-220+142-338-112-262+64-188-244 +hashblocks_sha512 25 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 25 0 196 +899+24-1-1+0+0+1-1+0+0+1-1+0+0+1 +hashblocks_sha512 25 1 196 +45+0-1-1+0-1+1-1+0+1-1+0+0+1-1 +hashblocks_sha512 25 2 196 +11-2+1-2+1+0+0-1+0+1-1+0+0+7+0 +hashblocks_sha512 25 4 196 +11-3-1+0+0-1+1-1+0+1-1+0+0+1-1 +hashblocks_sha512 25 7 196 +18+0+1+0-1+0-1+2-1-1+0+1-1+0+0 +hashblocks_sha512 25 11 196 +9-1-2-1+0+0-1+2-1-1+0+1-1+0+0 +hashblocks_sha512 25 17 196 +9+0+0+0+0-1+1-1+0+1-1+0+0+1-1 +hashblocks_sha512 25 26 196 +11-1+2+1+0-1+1-1+0+1-1+0+0+1-1 +hashblocks_sha512 25 40 196 +10-1+2+1+0-1+1-1+0+1-1+0+0+1-1 +hashblocks_sha512 25 61 196 +11-1+0+1+0-1+1-1+0+1-1+0+0+1-1 +hashblocks_sha512 25 92 196 +9+0+0+0+0-1+1-1+0+1-1+0+0+1-1 +hashblocks_sha512 25 139 1513 +286+119+75+63+17-1+1+0-3-2-3+0-3-2-3 +hashblocks_sha512 25 209 1512 +68+0+1-1-2-3+1+0+0-1+1-3+2-1-3 +hashblocks_sha512 25 314 2831 +95+37+3-1-2-1+4+2+0-6+2+1-4-20-22 +hashblocks_sha512 25 472 4139 +58+1+0+1+4-1-8+0-6+1-1-5-1+5+2 +hashblocks_sha512 25 709 6767 +117+15+4-9-7-9+5+0+0-5+0+2-9-1-9 +hashblocks_sha512 25 1064 10715 +95+12+11-5-8+8+0-4-5+2+7-3+6-11-2 +hashblocks_sha512 25 1597 15971 +90+30+16+0-10-2-11+2-5-13-2+6+4+3-10 +hashblocks_sha512 25 2396 23848 +99+0+12+20+11+10-5-8-6+10+1-5-18-11-6 +hashblocks_sha512 25 3595 36994 +85+41+38+4-23+0-11-20+6-17+23-11-2-12+10 +hashblocks_sha512 25 5393 55424 +85-14-7-4-6+1+3+0+7+7+7-6-7-1+1 +hashblocks_sha512 25 8090 83024 +88+35+25-31-12-4-3+5+7+6+9+0-2+0-11 +hashblocks_sha512 25 12136 123767 +128+69+0+9-24-7-27+23+6+15-12-23+14-12-7 +hashblocks_sha512 25 18205 186825 +164+1517+62-76+8+115-56-38-51-31+70-73+0+59-17 +hashblocks_sha512 25 27308 280264 +439+72+16-1+13-7-14+39-37+12-56+0-9+2-41 +hashblocks_sha512 25 40963 423083 -142+0+109-43+95-7+97-37+129-79+117-103+115-45+790 +hashblocks_sha512 25 61445 634182 +707+69-42+20-46+2-46+0-50+0-50+0-50+0-50 +hashblocks_sha512 26 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 26 0 139 +801+101+23+15+0-2+0-2+11+5-2+0+0-2+0 +hashblocks_sha512 26 1 139 +87+20+2+0-2-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 26 2 139 +55+24+0-2-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 26 4 139 +55+24+0-2-2-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 26 7 139 +55+24+0-2-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 26 11 139 +55+24+0-2-2-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 26 17 139 +55+24+0-2-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 26 26 139 +55+24+0-2-2-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 26 40 137 +74-1+2+0+0+3+0+3+0+3+0+3+0+3+0 +hashblocks_sha512 26 61 139 +55+24+0-2-2-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 26 92 139 +26+27-2-1+0-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 26 139 1600 +1293+110+78+17+16+6-2-2-2+24+0-2-2-2-2 +hashblocks_sha512 26 209 1598 +133+13+1+0+0+0+0+0+0+0+1+1+30+0+0 +hashblocks_sha512 26 314 3080 +95+27+18-1+4-2+0+0+2+28+0+0+0+0+28 +hashblocks_sha512 26 472 4520 +184+40-3+28+0+0+0+26+0+0+27-6-6-6+22 +hashblocks_sha512 26 709 7416 +115+8-4-2+26-2+26-2+27+0+28+0+28+0+0 +hashblocks_sha512 26 1064 11794 +111+4+36+9+0-7-2-7-1-7+1+0-2-6+0 +hashblocks_sha512 26 1597 17625 +83+0+5-13-12+4+6-11-10-13+8+4-10+4-10 +hashblocks_sha512 26 2396 26329 +47+32-15+0-13-17-16+6-16+0-10+0-16+7+0 +hashblocks_sha512 26 3595 40850 +7+15-21-19+0-21-20-25-18+725+2+4-9+6+4 +hashblocks_sha512 26 5393 61143 -22+87+12+33+46+48+0-3+46-1+59-5-3-2-19 +hashblocks_sha512 26 8090 91605 -37+5+37-13-12+36-11-10+41+35+0-14+34+34-14 +hashblocks_sha512 26 12136 136556 -109+5+36-9+35-14-8-13+35-14+0-15+33+36+33 +hashblocks_sha512 26 18205 206189 -221+20-44+2-42+4-46+2-46+2+18-47+0+0-47 +hashblocks_sha512 26 27308 309158 -369+16+2+0+0+4+0+0+4+0+12+2-2-2+2 +hashblocks_sha512 26 40963 464317 -554-4+8-46+3+1-45-43+4-46+16+0-45+2+3 +hashblocks_sha512 26 61445 696295 -896+0-19+25+28+23-19-25+49+11-10+26+26-23-25 +hashblocks_sha512 27 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 27 0 91 +730+69+56+36+0+1+2-5+11-3-4-5-5-3-5 +hashblocks_sha512 27 1 91 +77+3+8+2+1-1+0+0+1+0-1-3-5-5-3 +hashblocks_sha512 27 2 88 +77+0+2+1-1-2+0+1+2+1-2+0-2+0-2 +hashblocks_sha512 27 4 92 +62+2+3+9-2+0+1+1+9-2-5-6-4-5-6 +hashblocks_sha512 27 7 89 +6+5-1+1+1+0+1+3+2+0-3-1-3-1-3 +hashblocks_sha512 27 11 90 +10+0-1+1+2+0+1+3+3+0+1-4-2-4-2 +hashblocks_sha512 27 17 91 +8+4-2+0+1-1+0+2+2-3+2-1-4-5-3 +hashblocks_sha512 27 26 90 +10+0-1+1+1+0+1+3+3-2+3+0-3-4-2 +hashblocks_sha512 27 40 91 +8+4-2+0+1-1+0+2+2-3+2-1-4-5-3 +hashblocks_sha512 27 61 90 +10+0-1+1+2+0+1+3+3-2+3+0-3-4-2 +hashblocks_sha512 27 92 90 +10+0-1+1+1+0+1+3+3-2+3+0-3-4-2 +hashblocks_sha512 27 139 1423 +283+117+77+40-1+0+0+2+0-1-2-2-1-2-3 +hashblocks_sha512 27 209 1422 +147+19+20+4-2-1-2-2+1+2+3-3-2-1+0 +hashblocks_sha512 27 314 2777 +145+17+4-1+0+0+2+2+4+5-11-13-11-12-12 +hashblocks_sha512 27 472 4092 +189+36+8+6+12-1-5+0-5+0-7+0-2+1-8 +hashblocks_sha512 27 709 6743 +108+20+25+30-3-2+0+1-3+0-2+2-2-2-2 +hashblocks_sha512 27 1064 10722 +178+26+59+0-4+20-3-4+17-4-8+18-8+18-8 +hashblocks_sha512 27 1597 16041 +264+50+5+2+2+0+0-2-2+0+0-2-3-2+1 +hashblocks_sha512 27 2396 23992 +213+15+10+1+0+1+0-3-1-1-2-3+62+3-3 +hashblocks_sha512 27 3595 37248 +227+4+0+16+4-8-8-9+11+4-10-10-10-6+74 +hashblocks_sha512 27 5393 55814 +235+14-8-2+3+1+1-12-6+0+62-14-6+4+0 +hashblocks_sha512 27 8090 83642 +189+19+13+13+8+1+0+1+0+0+0+0+0+0+0 +hashblocks_sha512 27 12136 124723 +236+20+13+2+1-4-5-6+0-6+0-6+0-6+0 +hashblocks_sha512 27 18205 188459 +124-34-137-138-81-142+726+28+1+4+0+4+0+4+0 +hashblocks_sha512 27 27308 282396 +182+44+62+0-2+57-4-4+56-4-4+56-4-4+56 +hashblocks_sha512 27 40963 424204 +115+11+62+0-5+59+52-8-2+54-6-6+54-8-2 +hashblocks_sha512 27 61445 636255 +119-36+11+9+1-59-57+5+1-59-58+0-59-59+5 +hashblocks_sha512 28 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 28 0 79 +1812+89+39+1+1+0-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 28 1 80 +51+0-1+3-3-3-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 28 2 80 +53+9+11-1-1-3-3-1+0+0+0+0+0+0+0 +hashblocks_sha512 28 4 80 +18+7+9+1+24-3+1-2+0-1+1+0+0+0+0 +hashblocks_sha512 28 7 80 +17+7+9+3-2+1-3-3-2-1+0+0+0+0+0 +hashblocks_sha512 28 11 80 +17+9+7+0-2+1-4+0-1+1+0+0+0+0+0 +hashblocks_sha512 28 17 80 +17+7+9+3-2+1-3-3-2-1+0+0+0+0+0 +hashblocks_sha512 28 26 80 +18+9+7-2-1+1-4+0-1+1+0+0+0+0+0 +hashblocks_sha512 28 40 80 +18+9+7+2-2+1-4+0-1+1+0+0+0+0+0 +hashblocks_sha512 28 61 80 +17+12+10+1-3+1-4+0-1+1+0+0+0+0+0 +hashblocks_sha512 28 92 80 +18+9+7+2-2+1-4+0-1+1+0+0+0+0+0 +hashblocks_sha512 28 139 1463 +7933+62+35+9+8+1+0-1-2-1-1+0-1-4-4 +hashblocks_sha512 28 209 1462 +32+41+11+8+1+2+0-1+0+0+2+0-3-2-2 +hashblocks_sha512 28 314 2824 +122+110+5+2+6+2+0-1+0-1-3-4-9-12-12 +hashblocks_sha512 28 472 4191 +160+68+9+6+7+1+1+0-5-13-16-20-25-29-26 +hashblocks_sha512 28 709 6903 +246+70+50+41+37+23+9-3-9-31-18-21-22-26+0 +hashblocks_sha512 28 1064 10966 +222+105+66+57+2-32-41-50-27-30+0-31+0-31+29 +hashblocks_sha512 28 1597 16397 +252+131+60-15-80-42+13+0-27+0+2-29+2-29+2 +hashblocks_sha512 28 2396 24523 +334+157-7-70-23+0+2+0+2+0+2+0+2+0+2 +hashblocks_sha512 28 3595 38088 +430-43-44+33+28+0-29+0-29+0-29+0-29+0-29 +hashblocks_sha512 28 5393 57069 +422-60+20-1-22+3+3+0-25+6+0+4-1+1020-40 +hashblocks_sha512 28 8090 85543 +360-22+3-3-1+11+0+11-3-2-3-1+11+0+11 +hashblocks_sha512 28 12136 127522 +281+11-5-8-8+36+24+0-1-10-8+36+24+0-1 +hashblocks_sha512 28 18205 192550 +429+0-13-5+13-19+10-19+10-19+10-19+10-16+26 +hashblocks_sha512 28 27308 288768 +949-14-27+0+2+0+0+0+0+0+0+0+4+15+16 +hashblocks_sha512 28 40963 438572 +291-70+11+942-171+1-28-6+58-12+10-2-14+64+0 +hashblocks_sha512 28 61445 657812 +323-30+4+2+2+2+2+0+0-10-10-12+723-36-9 +hashblocks_sha512 29 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 29 0 114 +888+67+0-3+1-2+0-2+16+1-1+1-1+1-1 +hashblocks_sha512 29 1 113 +70+32+1+4-2+0-1+1-1+0-1+1-1+0+1 +hashblocks_sha512 29 2 114 +35-2+0+0+24+2-3-1-2+0-2+0-2+0-2 +hashblocks_sha512 29 4 113 +36+0+3+0+3+0-1+0+1+0-1+1-1+0+1 +hashblocks_sha512 29 7 113 +36+0+3+0+3+0-1+0+1+0-1+1-1+0+1 +hashblocks_sha512 29 11 113 +9+4-2+5-2+2-1+1-1+0-1+1-1+0+1 +hashblocks_sha512 29 17 112 +11+5-1+2+0+0+0+2+0+2+0+2+0+2+0 +hashblocks_sha512 29 26 113 +9+4-2+5-2+2-1+1-1+0-1+1-1+0+1 +hashblocks_sha512 29 40 114 +9+3-3+4-3+1-2+0-2-1+0-1+0-1+0 +hashblocks_sha512 29 61 113 +9+4-2+5-2+2-1+1-1+0-1+1-1+0+1 +hashblocks_sha512 29 92 113 +10+4-2+5-2+2-1+1-1+0-1+1-1+0+1 +hashblocks_sha512 29 139 1520 +8937+68+21+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 29 209 1519 +17+24+0-1+36+2+1-1-1-1+0+0+1-1+1 +hashblocks_sha512 29 314 2929 +68+72+41+2-1+1+0-1-1+1-2+58-1-4-2 +hashblocks_sha512 29 472 4338 +79+68+41+8-2-2+1+0-1-3-4-3-2+0+3 +hashblocks_sha512 29 709 7149 +125+52+34+9+6+0+0+1+6-2-2+0-5-2-5 +hashblocks_sha512 29 1064 11397 +86+45+6-3-16+3+1-7-21-14-22+0+10+1-23 +hashblocks_sha512 29 1597 17067 +148+47+15+0-13+0-29-29+4-38-6-28+4-42+1 +hashblocks_sha512 29 2396 25511 +175+35+7-12-50+16-27+17-16-4+4-24+12-15+0 +hashblocks_sha512 29 3595 39576 +100+30-53+14-5+3+0-7+12+0+69-7+0+6-21 +hashblocks_sha512 29 5393 59314 +88-9+16-6-2+18+62-8-9+1+0+4+0+67-15 +hashblocks_sha512 29 8090 88902 +149-52+2-26+62-34-1-26+3+30+7-35+0-24+64 +hashblocks_sha512 29 12136 132558 +108-25-39+0+58-33-1+6+8-56+59-48+5-39+23 +hashblocks_sha512 29 18205 200262 +119-4+12+23+28-63+60-75+31-75+41-67+0-3-56 +hashblocks_sha512 29 27308 300454 +338+1624+496-14+2+28-120-32-20-8+24-12+52+0-28 +hashblocks_sha512 29 40963 456352 -622+8+16+8-20-80+0+94-46+18+36-56-14-36+10 +hashblocks_sha512 29 61445 684480 -541+764-107+0+90-34-66+50-34+62+10-36+46-70+22 +hashblocks_sha512 30 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 30 0 78 +861+40+10+3+0+1+0+0+0+0+0+0+0+1+1 +hashblocks_sha512 30 1 78 +76+9+11+5+6+3+0-3+5+0+0+0+0+0+0 +hashblocks_sha512 30 2 81 +72+8+10+9+1-3-2-3+1+0-1-3-2-1+0 +hashblocks_sha512 30 4 81 +43+38+16+9+5+1-1+0-1-2+0-1-3-2-1 +hashblocks_sha512 30 7 81 +46+9+5+6+31+2+0-1+0-1-1+0-1-3-2 +hashblocks_sha512 30 11 80 +14+10+10+8+5+0-1+1+0-2-1+0+1+0-2 +hashblocks_sha512 30 17 80 +14+10+8+6+4-2+0-2-1+0+1+0-2-1+0 +hashblocks_sha512 30 26 80 +14+10+10+8+5+0-1+0-2-1+0+1+0-2-1 +hashblocks_sha512 30 40 78 +18+14+13+5+1+2+2+0+0+0+0+0+0+0+0 +hashblocks_sha512 30 61 80 +20+10+4+2+2-3+0-1+1-1-1+0+1+0-2 +hashblocks_sha512 30 92 80 +14+9+4-2+0+0-1+0-1+1+0-2-1+0+1 +hashblocks_sha512 30 139 1108 +7019+58+27+62+7+5+0+0+0-1+0-2-1+0-2 +hashblocks_sha512 30 209 1109 +52+11+4+5+6+4-1-1-1-2-1+79+0-1-3 +hashblocks_sha512 30 314 2121 +99+52+42+1+1+1+51+0-1-5-9-9-3-6-4 +hashblocks_sha512 30 472 3128 +114+57+3+2+3-2+1-8+1-4-6+0-1-13-11 +hashblocks_sha512 30 709 5172 +172+45+12+11-1-4-2-4-4+0-10+6-4+4+5 +hashblocks_sha512 30 1064 8198 +168+28+4+6+0-1-12+0-3+0-2-10+5+7-12 +hashblocks_sha512 30 1597 12261 +141+1+6-28-5-17+0-24+13-21+7-23+6-18+2 +hashblocks_sha512 30 2396 18304 +219+14+54+4+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 30 3595 28393 +164+2+4+9+10-3-14+0-14+0-14+0-14+0-14 +hashblocks_sha512 30 5393 42528 +175+39-28-16+42-6+0+0+42-6+0+42-6+0+0 +hashblocks_sha512 30 8090 63747 +142+42-15+26-20+0-38-19+0-20+18-2+54-2+18 +hashblocks_sha512 30 12136 95038 +121+860+76+7-10-16-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 30 18205 143484 +314-16-35+0-38+0+20+0-38+0-38+0+20+0-38 +hashblocks_sha512 30 27308 215118 +687+4+1-3-1-3-1-3+56+0+0+0+0+0+0 +hashblocks_sha512 30 40963 327275 +34-7+0+5-13+7-11+63-11+5-13+7-11+5-11 +hashblocks_sha512 30 61445 490766 +1176+17+11-12-6+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 31 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 31 0 111 +1120+34+20+0-2+0-2+0-2-1+0-2-2+0-2 +hashblocks_sha512 31 1 111 +46+9+1-2+0-3+0+0-2-2+0-2+0-2+0 +hashblocks_sha512 31 2 111 +37+8+0+0+0-3+0+0-2-2+0-2+0-2+0 +hashblocks_sha512 31 4 110 +36-1+1+1-1+0-1+1-1+1-1+1-1+1-1 +hashblocks_sha512 31 7 111 +32-2+0-2+0-3+0+0-2-2+0-2+0-2+0 +hashblocks_sha512 31 11 111 +3-2+1-2+0+0-2+0-2+0-2-2+0-2+0 +hashblocks_sha512 31 17 110 +4-1+1+1-1+0-1+1-1+1-1+1-1+1-1 +hashblocks_sha512 31 26 111 +3-2+0-2+0-3+0+0-2-2+0-2+0-2+0 +hashblocks_sha512 31 40 109 +5+0+1+0+2+0+2+0+2+0+0+2+0+2+0 +hashblocks_sha512 31 61 111 +6-2+0-2+0-3+0+0-2-2+0-2+0-2+0 +hashblocks_sha512 31 92 111 +6-2+0-2+0-3+0+0-2-2+0-2+0-2+0 +hashblocks_sha512 31 139 1289 +8009+66+3+0+0+3-3+3-1+1-1-1-3-1-2 +hashblocks_sha512 31 209 1290 +32-4-1+0+1-2+0-3+4-3+2+0+2-1+8 +hashblocks_sha512 31 314 2477 +71+42+0-2-4+13+1+4+2-2-3+3-2+0-1 +hashblocks_sha512 31 472 3666 +69+44+24+17+0-6+1-4+0-2+1-9+0-5+2 +hashblocks_sha512 31 709 6036 +122+63+16+15+1+2-4-2-3-10+3-2-14-12+0 +hashblocks_sha512 31 1064 9607 +109+61+13+6-1+3-10-5+15-11+1+0-1-1-1 +hashblocks_sha512 31 1597 14383 +121+44-29+0-33+6-20+22+16-17+17-32+27-11-11 +hashblocks_sha512 31 2396 21535 +58+23+1-15+0+1-4-13-39+4-17+0-26-9+7 +hashblocks_sha512 31 3595 33379 +102+61-18-1-4+16+0+4-17+16-10+7+27-1+0 +hashblocks_sha512 31 5393 50006 +123-10+0+62-4-30+69+0+12+15-30+69+0-9+26 +hashblocks_sha512 31 8090 74932 +85+16+25+84-15-14-30+27-15-14+0+5-15+16+0 +hashblocks_sha512 31 12136 111765 +112-20-4-33+0+27-13-52+7-49+0+27+28-49+779 +hashblocks_sha512 31 18205 168878 +121-5-23+4-11+70+0+70+0+70+0+70-76-38-77 +hashblocks_sha512 31 27308 253324 +516-11+48-66+0+10-30-66+72+10-30-66+0+10-30 +hashblocks_sha512 31 40963 386014 -741-20+0-56+0-55+107+63+168+22+16+28-12-18+26 +hashblocks_sha512 31 61445 579046 -732-94+2-16+20+40+46+4-48+0-94+4+58-94-80 +hashblocks_sha512 32 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 32 0 79 +1712+41+10+6+3+2+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 1 80 +73+9+10+5-3+0+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 2 80 +48+2+0+2-1-3-3+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 4 80 +51+0-1+4+2-1+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 7 80 +18+1-2+3-2-3+3+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 11 80 +14-1+2+3-3-1-3-1+0+0+0+0+0+0+0 +hashblocks_sha512 32 17 80 +21+1-1+3+0+4+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 26 80 +16+0-2+1+1-3-3+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 40 80 +15+5+2+1-2+1-3-3+0+0+0+0+0+0+0 +hashblocks_sha512 32 61 80 +14-1-4+1+0+4+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 92 80 +22+1-1+3+0+4+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 139 1466 +7476+64+6+2+1+1+0+1+0-2-1-3-3-1-3 +hashblocks_sha512 32 209 1466 +31+8+6+2+0+1+0+1+0+1+0-2-3-3-1 +hashblocks_sha512 32 314 2834 +80+50+37+36+4+5+0+1-1-2-4-5-8-8-12 +hashblocks_sha512 32 472 4197 +130+51+45+13+7+7+3+0-7-13-14-16-24-23-26 +hashblocks_sha512 32 709 6940 +238+84+34+29+20+0-4-18-22-36-19+12-14+12-15 +hashblocks_sha512 32 1064 11031 +193+63+36+6+0-43-84-27+11-60+27-49-71+34-58 +hashblocks_sha512 32 1597 16452 +260+123+35+1-39+0+5-5-33-19-20+3+9-19-3 +hashblocks_sha512 32 2396 24639 +326+77-66-40-34-36+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 3595 38198 +399-26+25-6-9+0+0+0+0+0+0+0-7-30+36 +hashblocks_sha512 32 5393 57252 +434-69-19-53-13+0-29+14-13+21+14+11+14-13+21 +hashblocks_sha512 32 8090 85871 +262-71-64-73-68+952-80-20+6+0+6+0+6+0+6 +hashblocks_sha512 32 12136 127960 +344-48+14-33+0-33+0-33+0-33+0-33+0-33+0 +hashblocks_sha512 32 18205 193142 +490-13+0-3+30-3+30-3+30-3+30-3+30-3+30 +hashblocks_sha512 32 27308 289706 +822-34-21+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 32 40963 439626 -209-409-422-431-390+791+23+18+13+35+0+36-1+35-1 +hashblocks_sha512 32 61445 658756 +351-35-34+0+0+0+0+0+0+0+0+0+0+963-25 +hashblocks_sha512 33 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 33 0 113 +959+44+16+0-2+0-1+0+16+1-1+1-1+1-1 +hashblocks_sha512 33 1 113 +59+0-1+0-2+0-2+0-1+1-1+1-1+1-1 +hashblocks_sha512 33 2 113 +54+25+1+0-1+0-2+0-1+1-1+0-1+1-1 +hashblocks_sha512 33 4 113 +2+2+2-1-2+0-2+0-1+1-1+1-1+1-1 +hashblocks_sha512 33 7 113 +0+1+0+0-2+0-1+1-1+1+0-1-1+1-1 +hashblocks_sha512 33 11 112 +1+1+0+0-1+1-1+1+0+2+1+0+0+2+0 +hashblocks_sha512 33 17 113 +0+0-1-1-2+0-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 33 26 113 +2+2-1-1-2+0-2+0-1+0+0+0+0+0+0 +hashblocks_sha512 33 40 113 +2+2-1-1-2+0-2+0-2+0+0+0+0+0+0 +hashblocks_sha512 33 61 113 +0+1+0+0-2+0-1+1-1+1-1+1-1+1-1 +hashblocks_sha512 33 92 113 +2+2-1-1-2+0-2+0-1+0+0+0+0+0+0 +hashblocks_sha512 33 139 1590 +9066+64-1+1-1+0+0-2+0-1-1+0+0+0-1 +hashblocks_sha512 33 209 1590 +14+32+7-1-2-2+0+0+0+2+0-2+0-1-1 +hashblocks_sha512 33 314 3070 +59+45+26+20-1+57-1+0-2+1-1-1-1+0-4 +hashblocks_sha512 33 472 4550 +66+47+40+19+0-1-3+1-2-4-6-6-3+0+2 +hashblocks_sha512 33 709 7503 +121+72+4+6+3+1-2+1+0-8-11-26-7-18-19 +hashblocks_sha512 33 1064 11936 +141+85+40+29+40+39+5-18-29+0-4-4-4-4-4 +hashblocks_sha512 33 1597 17886 +81+89+24+16+11-95-133+20-79-17-50+0-102+19-84 +hashblocks_sha512 33 2396 26713 +213+89+19-71-126+40-107-88+80-133+73-63+0-67+40 +hashblocks_sha512 33 3595 41462 +146+53-134-66-2+7+0-23+28-68+117-59+6+20-31 +hashblocks_sha512 33 5393 62119 +271-121-50+0+92-58+7+61-91+19-33+47-53-5+61 +hashblocks_sha512 33 8090 93110 +150-97-23+47-15+7-22-77+7+56-88+0+4-88+64 +hashblocks_sha512 33 12136 138836 -7+27+11+46+20-38+0+0-69+63-69-27+60-76-22 +hashblocks_sha512 33 18205 209660 +154-81+57-68+8-79+63-79+21+14+0-80-36+92-79 +hashblocks_sha512 33 27308 314726 +396+924+1488+10-31+63-140-47+5-84+0-49-43-36+12 +hashblocks_sha512 33 40963 477574 -522+0+4-32+18-124+16-98+8-88-14+48+84-116+30 +hashblocks_sha512 33 61445 716344 -687+515+42-116-26+62+48+0+84-30+42-14-86+104-64 +hashblocks_sha512 34 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 34 0 82 +1014+65-1+1-3-5+0+0+0+0+0+0+0+0-2 +hashblocks_sha512 34 1 80 +76+11+8+7+1+0-2-1-1-1+0+0+0+0+0 +hashblocks_sha512 34 2 80 +73+9+9+6+0+2-1-1-1+0+0+0+0+0+0 +hashblocks_sha512 34 4 80 +44+30+3+6+7-2-1-1-1+0+0+0+0+0+0 +hashblocks_sha512 34 7 80 +44+5+3+1+31+1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 34 11 80 +18+10+8+5-2+0-3-1+0+0+0+0+0+0+0 +hashblocks_sha512 34 17 80 +16+14+11+4-2+0-1-1-1+0+0+0+0+0+0 +hashblocks_sha512 34 26 80 +14+5+0+1+0+2-1-1-1+0+0+0+0+0+0 +hashblocks_sha512 34 40 80 +18+8+6+3-2+0-1-1+0+0+0+0+0+0+0 +hashblocks_sha512 34 61 80 +17+6+6+7-2+3+2+1+0+0+0+0-1+0+0 +hashblocks_sha512 34 92 80 +15+5+2+5-1+0+2-1-1-1+0+0+0+0+0 +hashblocks_sha512 34 139 1503 +8021+36+28+7+6+1+1+0-1+0-1-2-1+0-1 +hashblocks_sha512 34 209 1505 +62+8+6+2+6+0+1+0-1+0-1-2-1+0-1 +hashblocks_sha512 34 314 2904 +117+82+7+1+0+4+1+4-4-6-6-9-9-6-6 +hashblocks_sha512 34 472 4297 +130+61+13+15+12+6+6-1-3+0-3-7-8-9-16 +hashblocks_sha512 34 709 7112 +227+62+32+15+10+6-4-6-11-12+0-13-4-25+17 +hashblocks_sha512 34 1064 11303 +177+52+14-3-15-34-6+17+0+0-21+3-29-2+4 +hashblocks_sha512 34 1597 16885 +202+83+28+8-12-15+9+32-13-18+0-26-21+24-26 +hashblocks_sha512 34 2396 25248 +247+85+0-16-2+11-10-23+28-23+36-23+28-19+36 +hashblocks_sha512 34 3595 39165 +328+32-60-6+0+9-20+10-20+10-20+10-20+10-20 +hashblocks_sha512 34 5393 58676 +381-69-6-6+0+0-25+6-6+6-20+920+55-4+26 +hashblocks_sha512 34 8090 87934 +302+9-4+7-37+0-27-14+4-33+8-29+4-33+8 +hashblocks_sha512 34 12136 131081 +311-6+11-8-8+4-23+8+0+8+0+8+0+8+0 +hashblocks_sha512 34 18205 197907 +444-1+1+10+3+3-1-15-20+0-20+0-20+0-20 +hashblocks_sha512 34 27308 296741 +892+35+1+7+2+0-8+0-8+0-8+0-8+0-8 +hashblocks_sha512 34 40963 449719 +493+150+1176+92+14+35+23+0-2-1-1-1-1-1-1 +hashblocks_sha512 34 61445 674736 +370+31+6+18+0+0+2-12-6+0+2+686-290-275-316 +hashblocks_sha512 35 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 35 0 111 +995+49+0+0+0+0+0+0+13+3+0+0+0+0+0 +hashblocks_sha512 35 1 111 +49-1+5+4+25+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 35 2 111 +54+0+4+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 35 4 111 +51+2+0+1+0+0+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 35 7 111 +51+2+0+1+0+0+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 35 11 111 +19+0+4+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 35 17 111 +22+2+0+1+0+0+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 35 26 111 +19+0+4+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 35 40 111 +19+0+4+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 35 61 111 +19+0+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 35 92 111 +19+0+4+0+2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 35 139 1490 +9269+50+2-1-1-2-1+0-3-1-1+1+3+2+4 +hashblocks_sha512 35 209 1489 +83+2+0+1+1-1+0-1-1-1-1+2+2-1+3 +hashblocks_sha512 35 314 2873 +130+51+2-2-1+3-2-2+2-3+0-1+0-1+0 +hashblocks_sha512 35 472 4255 +140+70+22+0-4-2-2+0+0+0+1-3-3-4-2 +hashblocks_sha512 35 709 7016 +189+48+2+5+2+2+2+0-4-4-4-9-4-10-13 +hashblocks_sha512 35 1064 11159 +158+73+37+5+30-2-1-15+8+0-4+15-4-2+0 +hashblocks_sha512 35 1597 16707 +164+89+45-4-35-42+0-24+1+0+0-26-3+2-26 +hashblocks_sha512 35 2396 25001 +222+27+0-26-37+7-16+8-16+20-37-22+7-23+7 +hashblocks_sha512 35 3595 38789 +174+26-85+28+0-30+28+0-28+28+0-30+28+0-28 +hashblocks_sha512 35 5393 58117 +195-77+8+0+17-11-16+0+17-11-16+0+17-11-37 +hashblocks_sha512 35 8090 87106 +248-40+4+17-10-21+0-20+0-20+0-20+0-20+0 +hashblocks_sha512 35 12136 129861 +91+0-12+35-13+35-13+35-13+35-13+35-13+35-13 +hashblocks_sha512 35 18205 196092 +92-1+11+7+0-13-12+7+0-13-12+7+0-13-12 +hashblocks_sha512 35 27308 294064 +151-21+15-10-9+12-7-17+19+0-13+21+1-17+16 +hashblocks_sha512 35 40963 442290 +170+16-66+0-66+0-66+0-66+0-66+0-66+0-66 +hashblocks_sha512 35 61445 663372 +186+728+100-44-110+0+0-44-110+0+0-44-110+0+0 +hashblocks_sha512 36 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 36 0 80 +872+66+5+1+1-2-1-1+1+0+0+0+0+0+0 +hashblocks_sha512 36 1 80 +71+5+1-1-2+3+3+4-3-1+0+0+0+0+0 +hashblocks_sha512 36 2 80 +47+36+2+5+6+1+1+0-3-3-1+0+0+0+0 +hashblocks_sha512 36 4 80 +46+5+1-2+33-3-1-1-1+0+0+0+0+0+0 +hashblocks_sha512 36 7 80 +16+5+2-3+1+5+1-2-1-1+1+0+0+0+0 +hashblocks_sha512 36 11 80 +16+5+2-3+2+6+0-3+1+0+0+0+0+0+0 +hashblocks_sha512 36 17 80 +16+5+2-3+2+6+0-1+1+0+0+0+0+0+0 +hashblocks_sha512 36 26 80 +16+3+1+0-2+0-2+4-3-1+0+0+0+0+0 +hashblocks_sha512 36 40 80 +16+5+2-3+1+5+1-2-1-1+1+0+0+0+0 +hashblocks_sha512 36 61 80 +16+5+2-3+2+6+0-3+1+0+0+0+0+0+0 +hashblocks_sha512 36 92 80 +17+5+2-3-1+5+4-1+1-1+0+0+0+0+0 +hashblocks_sha512 36 139 1124 +10542+91+4+1+1-1-2-2-2-2+0-1-1+0+0 +hashblocks_sha512 36 209 1124 +162+7+3+1+1+1+0-1-1-2-2-2-1+0-1 +hashblocks_sha512 36 314 2152 +190+73-1-6+0+52-2-3+1-1+0+2+2-3-5 +hashblocks_sha512 36 472 3176 +220+43+29+24+31+0+2+2-1-2-6-10-7-8+0 +hashblocks_sha512 36 709 5253 +209+42+70+47+13+11+3-4-3-2+0-5-5-5-5 +hashblocks_sha512 36 1064 8323 +200+22+23+8-6-9+0-11+12-1+5+8-8-3-3 +hashblocks_sha512 36 1597 12430 +180+52+0-41-21-4+17-3+5-1+7-7+17-10+16 +hashblocks_sha512 36 2396 18602 +195+28-42+5-11-6+0-2+2-2+0-2+2-2+0 +hashblocks_sha512 36 3595 28833 +249-45-11+0+9-1+11-1+9-1+11-1+9-1+11 +hashblocks_sha512 36 5393 43201 +221-39-35+0-46-33+35+7+3-10+39-5+23+47-5 +hashblocks_sha512 36 8090 64696 +200+1-4+0+3-10-3+0+3-10-3+0-42+2-6 +hashblocks_sha512 36 12136 96418 +1414+54+0-2-6+1+0+1-6+1+0+1-6+1+0 +hashblocks_sha512 36 18205 145567 +412-8+0-4-7+0+3-4-7+0+3-4-7+0+59 +hashblocks_sha512 36 27308 218681 +443-314-1-9-27+0+0+4+0+4+0+4+0+4+0 +hashblocks_sha512 36 40963 332010 +192+295-4+0-4+1-2+49-4+0-6+6-4+0-6 +hashblocks_sha512 36 61445 498400 +438+0+0-2+16-10+16-10+16-10+16-10+16-10+16 +hashblocks_sha512 37 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 37 0 105 +1853+60+37+0-1+5+1-1+1+15-1-1-1-1-1 +hashblocks_sha512 37 1 109 +53+20+1+0-5+0-1+0-5+1-3-5+1-3+1 +hashblocks_sha512 37 2 109 +34-3+1-3+1-3+0+0-5+1-5+1-5+1-3 +hashblocks_sha512 37 4 109 +34-3+1-3+1-3+0+0-5+1-5+1-5+1-3 +hashblocks_sha512 37 7 106 +7+3+0-2-2-2+3+3-2+4-2+4-2+4+0 +hashblocks_sha512 37 11 106 +8+3+0-2-2-2+3+3-2+4-2+4-2+4+0 +hashblocks_sha512 37 17 106 +7+4-3+4+0-2-2-2+4+0+4-2+4+0+4 +hashblocks_sha512 37 26 106 +8+3+0-2-2-2+3+3-2+4-2+4-2+4+0 +hashblocks_sha512 37 40 104 +9+5+6+0+6+2+0+0+0+6+0+6+0+0+0 +hashblocks_sha512 37 61 106 +9+3+0-2-2-2+3+3-2+4-2+4-2+4+0 +hashblocks_sha512 37 92 106 +7-2-2-2+4+0+3+3-2+4-2+4-2+4+0 +hashblocks_sha512 37 139 1287 +9730+71+38+3+0+0-1+0-5-1-5-5+0-3+0 +hashblocks_sha512 37 209 1287 +19-2+2-4+0-3-3-4+0-2+0+2+7+2+1 +hashblocks_sha512 37 314 2473 +63+60+23-8+0+0+3+0-7+0-4-2+6-3-4 +hashblocks_sha512 37 472 3659 +81+63+48-2-7+1-6-4+1-5+0-8-1+0+0 +hashblocks_sha512 37 709 6021 +123+72+50+6+6-1-11-16-17-5-5+0-9+5+8 +hashblocks_sha512 37 1064 9590 +105+59+40+48-8+0+13+33-1-14+0-4-4-4-4 +hashblocks_sha512 37 1597 14364 +166+78+41-30+7-22-5+0-49+2-48-7-46+24+25 +hashblocks_sha512 37 2396 21472 +73+82+4+2+33+0+4-11-10-11-18-7+44-26-10 +hashblocks_sha512 37 3595 33324 +88-22-50-30-22-4-11-26+14+19+16+0+7+16+1 +hashblocks_sha512 37 5393 49931 +92+0+58+122+6+27-1-14-3-16-10+19-15+10+0 +hashblocks_sha512 37 8090 74850 +1-18+1-39-9-19+8+14+19+15+29-56-39-58+0 +hashblocks_sha512 37 12136 111582 +28+2+47-7+1+0-42+0-31-14+549+305+1-36-19 +hashblocks_sha512 37 18205 168545 +187+6-69-19-17-18+67-15+49+7+4+10+0-3-3 +hashblocks_sha512 37 27308 252804 +632+21-79-3+11+24-34+58-31+54+3-71-99-58+0 +hashblocks_sha512 37 40963 384722 -480-110+54-30-12+28+79+27+28+86+0-12+72-2-48 +hashblocks_sha512 37 61445 577116 -642+12+12-74+144+38-60+0+190-2-56-84+16-30+50 +hashblocks_sha512 38 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 38 0 81 +1922+42+40+0+22+20-1-1-3+0-1-2-1-3+0 +hashblocks_sha512 38 1 81 +48+9+5+9+1-1+2-1+1+0-1-3-2-1+0 +hashblocks_sha512 38 2 80 +52+4+5+2+0-2-1-1+0+1+0-2-1+0+1 +hashblocks_sha512 38 4 80 +52+5+0+5-1+2+0-2-1+0+1+0-2-1+0 +hashblocks_sha512 38 7 80 +52+4+0-2+2+3-2-1-1+0+1+0-2-1+0 +hashblocks_sha512 38 11 80 +21+14+5+0+2+3-2+0-2-1+0+1+0-2-1 +hashblocks_sha512 38 17 80 +15+4+0-1+3-1+1+0-2-1+0+1+0-2-1 +hashblocks_sha512 38 26 80 +10-1+1-3-1+1+0-2-1+0+1+0-2-1+0 +hashblocks_sha512 38 40 80 +10+0-1-3-4+0+0-1+1+0-2-1+0+1+0 +hashblocks_sha512 38 61 79 +12+1-1-1-2+4-1+1-1+0+1+2+1-1+0 +hashblocks_sha512 38 92 80 +9-2-2+1-5+3+1+0-2-1+0+1+0-2-1 +hashblocks_sha512 38 139 1501 +9997+60+9+5+1+0+2-1+0-1-1-1-1-3-2 +hashblocks_sha512 38 209 1503 +57+9+10+8+5+2+0-1+0-2-1-2-2-2-2 +hashblocks_sha512 38 314 2905 +80+89+79+5+4+3+2+0-1-5-6-10-13-15-13 +hashblocks_sha512 38 472 4302 +133+67+15+15+11+9+1+0-13-6-17-19-17-6-21 +hashblocks_sha512 38 709 7112 +212+88+47+36+22+0-7-9+0-30-47-51-62+24-45 +hashblocks_sha512 38 1064 11293 +218+103+58+15+0+0-59-72-59+33-20-23-42-38+22 +hashblocks_sha512 38 1597 16868 +301+145+58+44-63-54+58-18-8-29-5+0-37+27+38 +hashblocks_sha512 38 2396 25248 +343+120-20-72-36+0+0+0+0+0+0+0+52+0+0 +hashblocks_sha512 38 3595 39146 +514+60-14-2+34+0+0+0+58+0+0+0+0+0+0 +hashblocks_sha512 38 5393 58739 +495-79-8-12+26-12+26-23+0+26+0+24-12+24-23 +hashblocks_sha512 38 8090 87972 +1652-45-32-1-4+58+0+6+0+58+0+6+0+58+0 +hashblocks_sha512 38 12136 131148 +432-34+40-7+2+52+0+0+52+0+0+52+0+0+52 +hashblocks_sha512 38 18205 198085 +426-33-13+0-49+7-49+3+3-49+7-49+3+3-49 +hashblocks_sha512 38 27308 296976 +797-21-19+17+51-12+0-12+4-64+2-12+0-12+2 +hashblocks_sha512 38 40963 449744 +646+203+274+1219+222+216-40+0+0+0+1-3+0+0+0 +hashblocks_sha512 38 61445 674558 +420-59+8-2-72+0-72-2-72+0-72+963+334+333+314 +hashblocks_sha512 39 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 39 0 111 +1009+68+0+0+0+0+0+0+15+0+1+0+0+0+0 +hashblocks_sha512 39 1 111 +76+32-1+2+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 2 111 +36+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 4 111 +39+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 7 111 +36+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 11 111 +10+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 17 111 +9+1+0+0+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 26 111 +11+0+0+0+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 40 111 +9+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 61 111 +10+0+0+0+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 92 111 +10+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 39 139 1556 +9560+71+20+19+28-1-1-1-2+0+0+0+0-1-4 +hashblocks_sha512 39 209 1555 +44+39+12+1+0+3-1+0+0+1+0-2+0+1-2 +hashblocks_sha512 39 314 3001 +73+74+43+23-1-1+2+4+0+0-2-1-1+0-1 +hashblocks_sha512 39 472 4448 +77+73+3+15+0-1+1+2+2-5-4-2-6-4-11 +hashblocks_sha512 39 709 7340 +156+45+26+4+4+3+0+3-5-17-34-27-25-1-38 +hashblocks_sha512 39 1064 11666 +117+61+51+51+17-3-35+0-57-36+3-33+16-13-10 +hashblocks_sha512 39 1597 17438 +168+155+70+28-9-66-38+43-67+0-9+17-41+25-42 +hashblocks_sha512 39 2396 26100 +242+98+16-93-37-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 39 3595 40486 +268+61-133+8-2-1+67+13+0+0+0+0+0+0+0 +hashblocks_sha512 39 5393 60703 +288-183+0-34+49-19-21+8-36+49-17+8-36+22+9 +hashblocks_sha512 39 8090 90969 +362-63+0+48+0+48+0+48+0+48+0+48+0+48+0 +hashblocks_sha512 39 12136 135702 +12+53-11+23-4+61-5+60-3+57+0-3-11+17-5 +hashblocks_sha512 39 18205 204958 +56-79-4-24+0-12+32+25-22-12+0+31+11-8+32 +hashblocks_sha512 39 27308 307401 +122-1-3+32+5+0-13-11-8+35+4-39+13-28+9 +hashblocks_sha512 39 40963 462697 +0+153-107+67-183+107-107+141-107+141-107+141-107+141-107 +hashblocks_sha512 39 61445 694154 +541+146-400+0-84+24-454+42-192+98-472+98-472+98-472 +hashblocks_sha512 40 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 40 0 54 +388+46+26-4+1-3+4-2+0-2+0-2+0-2+0 +hashblocks_sha512 40 1 52 +31-2+0-2+27-3+3-1+2+0+2+0+2+0+2 +hashblocks_sha512 40 2 53 +22-3-2-3+0+4-1+1-1+1-1+1-3+34+0 +hashblocks_sha512 40 4 52 +25-1-1-1-3+2+0-1+1+3+0+2+0+2+0 +hashblocks_sha512 40 7 52 +25-1-2-1+0-2+2+2+0+2+0+2+0+2+0 +hashblocks_sha512 40 11 53 +5+0+2+1+0-2-2+1-1+1-1+1-1+1-1 +hashblocks_sha512 40 17 52 +3-2-1+0-2+1+0+0-1+2+0+2+0+2+0 +hashblocks_sha512 40 26 52 +4+0-2-1-1-1-2+0+1+3+0+2+0+2+0 +hashblocks_sha512 40 40 52 +4+0-2-1-1-1+0+2+0+2+0+2+0+2+0 +hashblocks_sha512 40 61 52 +6+1+4+0+0+0-1+2+0+2+0+2+0+2+0 +hashblocks_sha512 40 92 52 +4-2+0-1+2-1+1+0-1+2+0+2+0+2+0 +hashblocks_sha512 40 139 1305 +4217+302+198+38-3-2+1+0-1-1+8-5+2-3-2 +hashblocks_sha512 40 209 1305 +233+170+114+53+1-3-2+0+0-1-4+4+1-2-2 +hashblocks_sha512 40 314 2515 +508+262+61+22+0+3+6+0-2+0-2+0-2+0-2 +hashblocks_sha512 40 472 3731 +597+190+68-1+1+0-2+3+0-13-11-2+0-13-11 +hashblocks_sha512 40 709 6154 +623+45+2-11+1-8-9-7+0+71-4+3+6-7-7 +hashblocks_sha512 40 1064 9813 +617+20-2+7+29+80-25-5-9-15-22+0+63-22+0 +hashblocks_sha512 40 1597 14710 +756+0+2+53-10-33-18-11+28+7-54+11+22-5-51 +hashblocks_sha512 40 2396 22003 +614+21+47-1-36+65-20-18+69-29+57+0-25+55-16 +hashblocks_sha512 40 3595 34172 +605+74-68+19-67+16+15-48-21-56+0-81+76-73+14 +hashblocks_sha512 40 5393 51196 +617-16+0+15+34-35+47-76+14-50-5-29+0+966+71 +hashblocks_sha512 40 8090 76722 +503+21+43+23-64+39-75+0-28+88-15-74-68-95+41 +hashblocks_sha512 40 12136 114340 +649+121-131-4-18-51+0+73-26-25+89-76+4+117+1 +hashblocks_sha512 40 18205 172675 +782+2+129-69+6-47+88-124+0+122-86+124-193-133-3 +hashblocks_sha512 40 27308 258984 +923+3+0+136+138-172-94-12-66+0-132+82-132+8+28 +hashblocks_sha512 40 40963 392346 +303-267-372-398-212-320-464+1063+89+106+21+40+140-4+0 +hashblocks_sha512 40 61445 587926 +711+173-77-21+0-70+52+96+16-40-34+23-27-90+62 +hashblocks_sha512 41 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 41 0 51 +324+72+23-2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 41 1 51 +34-2+4-3+0+1+2+2+4+0+0+0+0+0+0 +hashblocks_sha512 41 2 51 +37+0+3+0+0+1+1-1+0+0+0+0+0+0+0 +hashblocks_sha512 41 4 51 +4-2+4-3+0+1+2-1+0+0+0+0+0+0-2 +hashblocks_sha512 41 7 51 +4-2+4-3+0+1+2-1+0+0+0+0+0+0-2 +hashblocks_sha512 41 11 51 +3+0+3-1+2+3+0+0+0+0+0+0+0+0-2 +hashblocks_sha512 41 17 51 +4-2+4-3+0+1+2-1+0+0+0+0+0+0-2 +hashblocks_sha512 41 26 51 +4-2+4-3+0+1+2-1+0+0+0+0+0+0-2 +hashblocks_sha512 41 40 51 +4-2+4-3+0+1+2-1+0+0+0+0+0+0-2 +hashblocks_sha512 41 61 51 +3+0+3-1+2+3+0+0+0+0+0+0+0+0-2 +hashblocks_sha512 41 92 51 +4-2+4-3-1-1+3+2+1-2+0+0+0+0-2 +hashblocks_sha512 41 139 1258 +1776+164+84+35+12-1-1-1-1+0+0+2+0+2+0 +hashblocks_sha512 41 209 1260 +109+70+34+30+6+1+0-3+0-2-1-3-2-2+0 +hashblocks_sha512 41 314 2454 +227+98+61+4+3-5+3+0-1-2+0-2+0-2+0 +hashblocks_sha512 41 472 3649 +274+63+54+27+19-2+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 41 709 6042 +325+54+25+3+0-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 41 1064 9630 +329+39+22+18+45+17+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 41 1597 14456 +305+40-2+25-25+1+1-24+1-1-22-1-25+3+0 +hashblocks_sha512 41 2396 21633 +253+10+4-1+1+1-2+0-1-2-1+1+1-2+0 +hashblocks_sha512 41 3595 33592 +261+11+2+0-1+2-1+0-1+1+0-1+2-1+0 +hashblocks_sha512 41 5393 50364 +251+90-24-6+21-1+21-23-5+20+0+20+0+20-22 +hashblocks_sha512 41 8090 75524 +254+35+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 41 12136 112600 +245+35-1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 41 18205 170012 +306+31+0-4+0-4+0-4+0-4+0-4+0-4+0 +hashblocks_sha512 41 27308 254962 +341+33-1-2+0-2+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 41 40963 384202 +247+891-123-1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 41 61445 575976 +430+219+197+0+0+0+0-8-20-8-20-8-20+958+236 +hashblocks_sha512 42 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 42 0 53 +341+50-3+0+0+2-1+1-1+1-1+1-1+1-1 +hashblocks_sha512 42 1 54 +35-4+1-2+0+2+8-2+0-2+0-2+0-2+0 +hashblocks_sha512 42 2 54 +37-2-1+0-1+3+0-2+0-2+0-2+0-2+0 +hashblocks_sha512 42 4 52 +36-2+1+2-1+5+0+2+0+0+2+0+0+25+0 +hashblocks_sha512 42 7 53 +3-2-3-2+0+4-3+0+2-1+1-1+1-1+1 +hashblocks_sha512 42 11 53 +4-1-2+0+4+1-2+2-1+1-1+1-1+1-1 +hashblocks_sha512 42 17 52 +5-2+0-3+5-1-2+1+3+0+2+0+2+0+2 +hashblocks_sha512 42 26 52 +5-2+0-3+5-1-2+1+3+0+2+0+2+0+2 +hashblocks_sha512 42 40 52 +5-2+0-3+5-1-2+1+3+0+2+0+2+0+2 +hashblocks_sha512 42 61 53 +2-3-1-4+1+0+0+0-2+4-1+1-1+1-1 +hashblocks_sha512 42 92 53 +3-3-1-4+1+0+0+0-2+4-1+1-1+1-1 +hashblocks_sha512 42 139 1158 +1776+198+174-16-6+73-11+78-1+6-3-6+0+15-3 +hashblocks_sha512 42 209 1155 +62+35+8+2-2+4-3-22-12+0-12+0-8+0-8 +hashblocks_sha512 42 314 2223 +173+71+24+16+34+5+0-21+3-13-9-1-9-1-9 +hashblocks_sha512 42 472 3304 +158+31+10+55+0-12-9-7-16-13+11+7+4-23-16 +hashblocks_sha512 42 709 5427 +206+97+4+33+24-9+14-29+14+0-26-40-27-17-27 +hashblocks_sha512 42 1064 8660 +154+2-37+0-13+27+17-16+50+11-67-24+5-53-48 +hashblocks_sha512 42 1597 12934 +277+0+79+7-46-33+14-15-29+63-55+66-33-43+13 +hashblocks_sha512 42 2396 19387 +114-35+55+9+10-93-73-22-50+0-4+35+0+85-31 +hashblocks_sha512 42 3595 30065 +103+76-52-123+45+0+29+52-42-118+33-30-130-79+7 +hashblocks_sha512 42 5393 45139 -164-121+135+5-83+48+115+0-100-196+14+150+70-79-5 +hashblocks_sha512 42 8090 67598 +145-198-179-254-58+0-34+46+39-290+45+104+112-210+10 +hashblocks_sha512 42 12136 100695 -146+163+87-39+296-305+47-229+281+52-152+56-140+0-143 +hashblocks_sha512 42 18205 152032 +75+15+110+121+0-123+172-144-3+50-217-34-88+98-60 +hashblocks_sha512 42 27308 228078 +332-245-139+0+214-4+376+658+444-124-434-56+192-96+464 +hashblocks_sha512 42 40963 344284 +292-360-251-122+440-128+266-14-108-332+83+117+0+234+279 +hashblocks_sha512 42 61445 516965 -73+0+746-352-199-419+413+51+45-407-302+74-1+447+897 +hashblocks_sha512 43 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 43 0 51 +444+48+25+25-2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 43 1 51 +65+0+0-3+0+1+4-1+0+0+0+0+0+0+0 +hashblocks_sha512 43 2 51 +66+3+0-1+1+0+2+0+0+0+0+0+0+0-2 +hashblocks_sha512 43 4 51 +36+4+0-3+0+1+2+1+3+0+0+0+0+0-2 +hashblocks_sha512 43 7 51 +6-1+4-3+3+1+2+1+3+0+0+0+0+0-2 +hashblocks_sha512 43 11 51 +6+1+3-1+2+1-1-2-1+0+0+0+0+0-2 +hashblocks_sha512 43 17 51 +7-2+4-3+0+1+2+1+3+0+0+0+0+0-2 +hashblocks_sha512 43 26 51 +6+0+4-1+2+1-1-2-1+0+0+0+0+0-2 +hashblocks_sha512 43 40 51 +7-2+4-3-1-2+1+1-1+3-1+0+0+0-2 +hashblocks_sha512 43 61 51 +6-1+4-3+2+1-2+2+2+2-1+0+0+0-2 +hashblocks_sha512 43 92 51 +6-1+4-3+3+1+2+1+3+0+0+0+0+0-2 +hashblocks_sha512 43 139 1105 +1541+172+94+19+0+1-6+1-7+4-3-4-1-1-7 +hashblocks_sha512 43 209 1107 +85+81+51+33+0+3-3-3-3+2-5-1-7+1-6 +hashblocks_sha512 43 314 2147 +221+169+29+2-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 43 472 3187 +296+77+29+0-1-2+3-1-1+1-4+4-1+1-4 +hashblocks_sha512 43 709 5270 +339+57+0+0+3+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 43 1064 8397 +393+30-1+2+0+0-1+2-6+2-6+2-6+2-6 +hashblocks_sha512 43 1597 12607 +302+44+32+28-19+5-19+6-21+8-22+0-16-2-16 +hashblocks_sha512 43 2396 18861 +267+5+5-1-2-2-2-3+6+0+8+0+5-1-3 +hashblocks_sha512 43 3595 29281 +236+2+1-1-4-4-1+2-3-3+6+0+9+0-2 +hashblocks_sha512 43 5393 43891 +228-20+0+17-20+0+10-17+7+16-24+0+10-20-26 +hashblocks_sha512 43 8090 65812 +264+2+12+0+12+0+12+0+12-18-49-37-8-5-3 +hashblocks_sha512 43 12136 98116 +292+0-2+1+8-1-2+1+8-1-2+1+8-1-2 +hashblocks_sha512 43 18205 148162 +277-20+0-24+0-24+0-24+0-24+0-24+0-24+0 +hashblocks_sha512 43 27308 222210 +437-22+0-40+0-40+0-40+0-40+0-40+0-40+0 +hashblocks_sha512 43 40963 335208 +239+811+0+10-62+10+36-2-74-72+28+12-130-146-56 +hashblocks_sha512 43 61445 502660 +296+7-66-10+0+4-8+0+4-36+0+4-58+0+4 +hashblocks_sha512 44 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 44 0 54 +488+67+50+25-2+0-2+0-2+0-2+0-2+0-2 +hashblocks_sha512 44 1 54 +38+22-2-3+1-5+1+2-2+0-2+0-2+0-2 +hashblocks_sha512 44 2 51 +38-1+1+0-1+0-1+1+0+0+0+2+2+37+2 +hashblocks_sha512 44 4 52 +37-2-1-1-1-2+0-1+0+2+0+2+0+2+0 +hashblocks_sha512 44 7 52 +6-2-1-1-1-1-2+2+2+0+2+0+2+0+2 +hashblocks_sha512 44 11 52 +6-2-1-1-1-1-2+1-1+5+0+2+0+2+0 +hashblocks_sha512 44 17 52 +6-2-1-1-1-1-2+2+2+0+2+0+2+0+2 +hashblocks_sha512 44 26 52 +6-2-1-1-1-1-2+2+2+0+2+0+2+0+2 +hashblocks_sha512 44 40 52 +6-2-1-1-1-1-2+2+2+0+2+0+2+0+2 +hashblocks_sha512 44 61 52 +6-2-1-1-1-1-2+1-1+5+0+2+0+2+0 +hashblocks_sha512 44 92 52 +6-2-1-1-1-1-2+2+2+0+2+0+2+0+2 +hashblocks_sha512 44 139 1320 +2027+252+146+64+0+50-2+1-23+68-3-20-2-3-23 +hashblocks_sha512 44 209 1318 +267+149+122+80-4-15+65-19-2+0-18+2-1-14+0 +hashblocks_sha512 44 314 2524 +520+287+32-6-4-2+2-14+10+1-12+1+0-12-5 +hashblocks_sha512 44 472 3736 +570+139+25-15-1-24+3-18+0+10-8+3+7-5-4 +hashblocks_sha512 44 709 6156 +719+86-10+13-15-10+0-15-7+5-6+19+10-22+0 +hashblocks_sha512 44 1064 9796 +754-9-6+12-4+0+19-12+0+20+66+3-4-21-13 +hashblocks_sha512 44 1597 14713 +754+44-70+0-55+7+10+1-13-30-28-60-22+5+6 +hashblocks_sha512 44 2396 21991 +601+17-16+3+41-40-11-20+0+88-20-32-35+10+54 +hashblocks_sha512 44 3595 34121 +587+15-44+6+33-92+18-45+21-71+38+0-76-65-25 +hashblocks_sha512 44 5393 51089 +642+143-14+148+56-29-65+77-22+31-29+19+0-28-74 +hashblocks_sha512 44 8090 76535 +573+219+0+116-45+166-40-84-40+82-41+106-21-7+98 +hashblocks_sha512 44 12136 114112 +708+270-28+154-18+227-108-58-85+0+83+11-106+9-56 +hashblocks_sha512 44 18205 172231 +674+440-111-95+321-53+85-122+46-40+53-46-2+0+48 +hashblocks_sha512 44 27308 258326 +979+699-212-190+417+183-113-103+114+41-286-178+0-174+32 +hashblocks_sha512 44 40963 391570 +1632+295-43+86+8-42+0-63-23-50+32+79+109-22-98 +hashblocks_sha512 44 61445 586636 +931+222+145-60-64-198-449-110-216+0-267+34+1156+206+328 +hashblocks_sha512 45 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 45 0 52 +318+65-2+0-3+16+2+1-1+0-3+0-3+0-3 +hashblocks_sha512 45 1 51 +65+26+0+3+0-1+3-1-2+4-1+1-2+1-2 +hashblocks_sha512 45 2 52 +6-3+3-4+24+2+3-2+0-3+0-3+0-3+0 +hashblocks_sha512 45 4 52 +7-3+3-4-1+0+3+5-2+0-3+0-3+0-3 +hashblocks_sha512 45 7 50 +9-1+5-2+0-1+4+6+0+2-1+2-1+2-1 +hashblocks_sha512 45 11 52 +7-3+3-4-1+0+3+5-2+0-3+0-3+0-3 +hashblocks_sha512 45 17 52 +7-3+3-4-1+0+3+5-2+0-3+0-3+0-3 +hashblocks_sha512 45 26 52 +6-3+3-4-1+0+3+5-2+0-3+0-3+0-3 +hashblocks_sha512 45 40 50 +9-1+5-2+0-1+4+6+0+2-1+2-1+2-1 +hashblocks_sha512 45 61 50 +8-1+5-2+0-1+4+6+0+2-1+2-1+2-1 +hashblocks_sha512 45 92 50 +9-1+5-2+0-1+4+6+0+2-1+2-1+2-1 +hashblocks_sha512 45 139 1274 +2352+242+67+41+13-9-2+5-8-2+0-11-4+14-11 +hashblocks_sha512 45 209 1272 +242+124+52+20-1-12-5+5-8+0+7-7+0+2-11 +hashblocks_sha512 45 314 2461 +425+133+18+26-7+0+3-9+0+1-11-2+17-9+0 +hashblocks_sha512 45 472 3650 +448+45+10+20-8+0+3-9+0+1-11-2+20-9+0 +hashblocks_sha512 45 709 6020 +506+49-2+30+0+8-5-5+29-1+8-5-5+26-1 +hashblocks_sha512 45 1064 9586 +569+0+1+32-1+9-4-4+30+0+9-4-4+25+0 +hashblocks_sha512 45 1597 14390 +523+37+49+22+15-10+0-23+0-20+0-23+0-23+0 +hashblocks_sha512 45 2396 21536 +474-6+8+4+4+0+0+3+0+1+0+0+3+0+0 +hashblocks_sha512 45 3595 33427 +439+16+28+27+8-1-13+0-1-1+2-1-1+2-1 +hashblocks_sha512 45 5393 50079 +466+0+5+1+4+16-4+0-2-6-12-2+12-1-6 +hashblocks_sha512 45 8090 75057 +492+7+1+2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 45 12136 111916 +463+7+1+2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 45 18205 169010 +467+7+1+2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 45 27308 253496 +542-2-2-10+0-10+0-10+0+1391+220+42+34+29+29 +hashblocks_sha512 45 40963 382430 +726-1+8-4+6-4+0+18+0+2+0-4+22-4+32 +hashblocks_sha512 45 61445 573558 +364-11+10+0+8+12+2-44+10+1020-188-219-204-223-223 +hash_sha512 selected implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 selected 0 844 +5856+147+30+23+11+1-5-9+7-9-11-5-14+0-19 +hash_sha512 selected 1 853 +2901+96+34+28+14+8+0-12-9-17-9-6-13+1-16 +hash_sha512 selected 2 850 +157+106+38+34+19+13+4+0-10-17-5-7-1-1-5 +hash_sha512 selected 4 853 +111+39+30+32+20+11+6-6-16-7-8-7-12+0-16 +hash_sha512 selected 7 857 +80+99+33+17+13+7+0+50-19-9-11-7-12-9-9 +hash_sha512 selected 11 848 +122+45+41+25+19+67-4+0-10-5+0-6+3-11-4 +hash_sha512 selected 17 854 +116+61+28+78+9+6+3+0-14-15-3-13-5-18-10 +hash_sha512 selected 26 853 +84+91+32+35+23+9+4-4-16-9-11-10-9+0-14 +hash_sha512 selected 40 858 +108+33+24+19+9+2-2+52-14-16-10-13-12+0-27 +hash_sha512 selected 61 849 +99+43+37+26+24+9+6-2-13-7-3+0-9+0-14 +hash_sha512 selected 92 851 +191+39+42+32+22+12+6-4-6+0-6-1-5-5-3 +hash_sha512 selected 139 1599 +183+83+55+32-13-18-17-53+4+0+70+6-4+0-4 +hash_sha512 selected 209 1607 +185+80+28+0-12+41-4-6+0+0-21-13-24-4+5 +hash_sha512 selected 314 2300 +320+108+29+1+51-19-3+0-1+4-5+0-2+0-1 +hash_sha512 selected 472 3011 +318+153+33-33-17-2+0-1+38+61+24-23+36-36-53 +hash_sha512 selected 709 4393 +427+139+140+51-4-1+0-7-5-4+11-3+11-3+11 +hash_sha512 selected 1064 6491 +533+145+6+31-63-70-70-67-22+2+47+87-38+0-3 +hash_sha512 selected 1597 9130 +725+374+173-31-23+14+161+3-45-10-17-19-17+0+183 +hash_sha512 selected 2396 13306 +785+173-2-6+46-49+0+42-43-41+42-43-27+66+13 +hash_sha512 selected 3595 20203 +664-73+78-3+0-6+0-6+361-46+196+48+99-71+152 +hash_sha512 selected 5393 29602 +892+25+70+0-2+84-34+0-2+84-34+0-2+84-34 +hash_sha512 selected 8090 43791 +915-18+147+28-146+113+42+31-52-26+51-91-53+0-26 +hash_sha512 selected 12136 64718 +1022+159+110-62-48-34-59-31+0+20+0+25-128+2-81 +hash_sha512 selected 18205 97091 +963+99-104+103-100-108+0-106+4+14-84-112+0-106+4 +hash_sha512 selected 27308 144837 +1158+216+180+133+68+2-64-3-46-17-64-29-97+125+0 +hash_sha512 selected 40963 217806 +958+104-117+1742+235-116+63-65-11-46+0-46+0-46+0 +hash_sha512 selected 61445 326057 +1116+57+103-38+158-17+7-23-219+10+60-41-44+0-44 +hash_sha512 0 implementation blocksplusavx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 0 0 846 +1042+123+58+16+12+0-6-7+6-16-5-15-11-6+4 +hash_sha512 0 1 846 +260+95+35+26+20+13+2-2-5-6-13-1+0-4+0 +hash_sha512 0 2 846 +196+99+51+32+16+7+0-2-4-8-10-16-1+6-3 +hash_sha512 0 4 845 +176+74+39+22+16+6+0-3-3-15-2-13+10-1-3 +hash_sha512 0 7 847 +155+73+36+29+20+9+0-5-11-14-11-18-19+3-2 +hash_sha512 0 11 888 +113+50+22+16+11+4+0-7-12-13-16-20-6+12-15 +hash_sha512 0 17 882 +160+52+34+23+13+5+0-3-8-12-9-1-5-17+9 +hash_sha512 0 26 885 +118+53+41+76+10+3-1-8-5-1-9-3-3+0+7 +hash_sha512 0 40 883 +128+50+41+33+29+2+0-2-11-12-1-4+0-1+5 +hash_sha512 0 61 889 +122+26+18+12+32+61-5-5-14-21+45-26-13-14+0 +hash_sha512 0 92 888 +104+45+26+13+7+2-6-9-15-18-17-25+1-22+0 +hash_sha512 0 139 1606 +200+93+38+10-4-10-12-14+0-7-35+0+12-19+11 +hash_sha512 0 209 1601 +204+109+63+32+0-9-5-14-35-12+11-14+13+12-32 +hash_sha512 0 314 2302 +352+156+45+28+7-9-11-5+0-35+47+35-13-1-27 +hash_sha512 0 472 3037 +296+128+19+2-7-28-71-18-39-63+18-11+0+19+13 +hash_sha512 0 709 4424 +394+187+59-46-22-56+28-45+88-57-58+80-57+0+88 +hash_sha512 0 1064 6452 +518+272+138+31+26+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 1597 9156 +761+215+65+66+0+0+0+0+19+169+0+0+0+0+0 +hash_sha512 0 2396 13247 +942-9-4+70+35-24+86+144-63-1+39-16+0+36-24 +hash_sha512 0 3595 20118 +836-70+0+32+95+47-44+19-15-4-4+1+55-4-4 +hash_sha512 0 5393 29577 +794+5-23-26+24+24-8+1+30-5-8+0+39-5-8 +hash_sha512 0 8090 43771 +852-133+232+102+0-15+30+100+160-81+292-24-45-27-111 +hash_sha512 0 12136 64699 +661+118+56+59+18+0+83-35-35-37-45-35+41-11-45 +hash_sha512 0 18205 97212 +890+137-157+96-5-76+1649+207+0+14-53+1-82-18-82 +hash_sha512 0 27308 145127 +1021+47+0+121+38-54-56-102+9-56-105+112-56+111-60 +hash_sha512 0 40963 217709 +1070-21+50-19-19-22-37+98+14+70-18+0-50+50+115 +hash_sha512 0 61445 326026 +1073-17+97+155+0+10+59+34+108-54-10-38-80-1-240 +hash_sha512 1 implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 1 0 843 +173+102+61+40+36+2-4-6+3-13-4-13+0-18-7 +hash_sha512 1 1 850 +259+119+82+53+75+14+3-5-12-12-1+0-10+0-18 +hash_sha512 1 2 853 +153+73+48+29+18+12+0-10-13-4-8-21+1-23-5 +hash_sha512 1 4 848 +172+69+34+39+32+12+9-4-5-9-3+0-3-2-12 +hash_sha512 1 7 855 +136+34+23+20+12+10+1-8-18-7-10-10-10+0-21 +hash_sha512 1 11 852 +110+68+34+28+28+11+3-8-11-18-5+0-8-2-22 +hash_sha512 1 17 852 +205+61+55+24+14+6+5+0-16-12-7-4-13-3-17 +hash_sha512 1 26 851 +131+38+27+25+18+9+3-5-14-4-2-7-3-8+0 +hash_sha512 1 40 855 +140+82+54+51+31+8-5-10+0-14+0-7-18-10-11 +hash_sha512 1 61 853 +114+31+27+78+19+6+0-6-16-12-8-10+3-17-6 +hash_sha512 1 92 851 +145+86+34+27+16+12+4-3-5-12-7-3-7+0-14 +hash_sha512 1 139 1602 +249+119+76+22-17-32-18-50-5+0+2+3-24+1-10 +hash_sha512 1 209 1594 +240+151+115+84+28-8+0-8-2-14+1-16-13-6+72 +hash_sha512 1 314 2307 +259+154+65+122-24-11-7+0+20-5-6-5+34+1-5 +hash_sha512 1 472 3042 +273+126+57+8-49-51+41-8-44-36-76+40+0-1+0 +hash_sha512 1 709 4399 +351+214+0+16+27+44-88-40+33+49-4-15-7-7-13 +hash_sha512 1 1064 6487 +493+145+0-20-56-1-9+0-54+24-61-13+21+5+43 +hash_sha512 1 1597 9115 +778+244+211-32-5+5-8+41+64-8+8-1-8+0-8 +hash_sha512 1 2396 13285 +820+132+0+19+50-29-33+56-32+34+50-29-33-35-34 +hash_sha512 1 3595 20098 +837+281-94+105-35+70+28-24+0-24+0-24+0-24+0 +hash_sha512 1 5393 29529 +1028-20-96+0+64+0+20-51+31+0+64+0+20-51+31 +hash_sha512 1 8090 43730 +1019-12+129-73+51-100-73+61-41+52+0-102+105-104+91 +hash_sha512 1 12136 64630 +1024+247+42+57-2+0-21-16-16-16+83-6+40-6+40 +hash_sha512 1 18205 97094 +1123+159-14+38-94+0-1+2+44-14-27+38-65+10-27 +hash_sha512 1 27308 144986 +1000+157-6+0-92-11+28-65+25-65+25-65+25-65+25 +hash_sha512 1 40963 217775 +767+200-5-57+87-11+57+78-26-24-47+44+51+0-26 +hash_sha512 1 61445 325911 +1084-7+136+0+1983+209+17-81-39-180+74+31-81-39-180 +hash_sha512 2 implementation blocksplusavx compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 2 0 841 +724+91+55+23+16+0-2-6+7-14-2-11-7+1-6 +hash_sha512 2 1 848 +253+86+28+28+19+8+0+0-10-10-15-19-23-30-8 +hash_sha512 2 2 847 +167+71+30+24+74+8+0+1-7-11-15-14-2-7-7 +hash_sha512 2 4 846 +154+69+40+30+14+10-2-6-9-14-5-12-1+0+0 +hash_sha512 2 7 841 +169+80+47+34+22+11+8+0-7-7-9-10+0-10-2 +hash_sha512 2 11 878 +124+64+32+21+15+70+65+0-3-4-7-10-1-20-1 +hash_sha512 2 17 881 +108+54+27+28+15+8+60-3-2-13-8-13+0-18-3 +hash_sha512 2 26 881 +136+75+32+30+18+10+7-2-5-13-11-9+0-21-7 +hash_sha512 2 40 883 +117+55+31+26+15+8+2+0-9-11-13-5-18-6-4 +hash_sha512 2 61 881 +119+57+49+25+17+7+1-5-6-12-13+0-12-4-4 +hash_sha512 2 92 878 +95+61+30+31+78+16+11+0-4-8-7-11-15-1-24 +hash_sha512 2 139 1617 +269+77+50+0-10-21-16-25+72-17+1-2+6-2+6 +hash_sha512 2 209 1614 +150+217+59+12-10-15-40-20+5+1+0-1+0+0+0 +hash_sha512 2 314 2326 +368+110+48+15-39-5-6-1+1+0+0+0+0+0+0 +hash_sha512 2 472 3025 +342+198+53-28-28+0-2+0-2+0-2+0-2+0+2 +hash_sha512 2 709 4415 +386+205+81-19+18+0-3-17-13+13-31+11-35+11-35 +hash_sha512 2 1064 6424 +644+229+123+45+54+4+0+0+0+0+0+0+0+0+0 +hash_sha512 2 1597 9130 +868+281+25-28-11+0+0+0+0+13+171+0+0+0+0 +hash_sha512 2 2396 13257 +1013+16-68-16-80+13+10-94+23+0-80+80-59-94+98 +hash_sha512 2 3595 20114 +1010+108+56+96-20+0+0+0+0+0+0+0+0+0+0 +hash_sha512 2 5393 29513 +1006-4+0-8+0-8+0-8+0-8+0-8+0+136-5 +hash_sha512 2 8090 43765 +776+533+292+23+79+40-134-164-21-149+0+6-87-13-149 +hash_sha512 2 12136 64738 +751+87+16-51+35+41-30-29+15-20+0-30-1+39-1 +hash_sha512 2 18205 97095 +895+105+121-35+0-71-83+9+18-33+8-16-21+80-46 +hash_sha512 2 27308 144987 +938+116+60-24+102+19-64+0+81+70-32-12-3-87-16 +hash_sha512 2 40963 217877 +680+224-63-111+1455-148+0-165+181+115-241+175-55-217+23 +hash_sha512 2 61445 326048 +1064+26+0-102+18+56-102-92+34+16+172-212-30-8-72 +hash_sha512 3 implementation blocksplusavx compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 3 0 839 +663+95+31+24+10+4+0-4+10-14-3-13-4-4-4 +hash_sha512 3 1 860 +204+63+25+16+3-3+0-8+1-17-4-11-9-17+5 +hash_sha512 3 2 865 +220+26+94+13+2+0-8+3+4-15-6-21-4-28-6 +hash_sha512 3 4 858 +151+42+23+15+9+4-4+5-15+0-20-4-10-23-6 +hash_sha512 3 7 861 +188+34+21+15+9+6-5-15+7+0-16-5-26-5-13 +hash_sha512 3 11 847 +180+64+40+23+18+13+0-7-14-15-19-18-17+11-19 +hash_sha512 3 17 852 +179+82+26+19+7+0-5-9-16-16-21-25-8+5+45 +hash_sha512 3 26 855 +93+31+25+26+22+8+0-7-18-23-20-6-1+62-28 +hash_sha512 3 40 863 +122+51+18+11+2-9+0-16-5-17-6-26+3-24+1 +hash_sha512 3 61 857 +102+33+20+14+7+5-9+0+1-15+0-18-6-9+0 +hash_sha512 3 92 847 +166+85+68+26+19+8-1-1-8+0-9-5+0-6+1 +hash_sha512 3 139 1614 +166+58+5+44-34-38-62+1-63+0-23+49+27-27-40 +hash_sha512 3 209 1604 +206+66+19-6-19-26+5+0+0-14+60-35+15-43-8 +hash_sha512 3 314 2277 +345+143+58+27-9-29+44+22+77+0-4-1-3-1-3 +hash_sha512 3 472 3027 +267+128+47-40-64+37-45-21-29+5-30+0+73-55+22 +hash_sha512 3 709 4429 +374+134+0-20+3-39-5+8-38-5+71-31+40+4-38 +hash_sha512 3 1064 6475 +490+227+94+40-36-27-44-40+12-25+0+27-29+114-37 +hash_sha512 3 1597 9205 +726+243+102-103-57-11+24-24-64+0+212-35+68+12-7 +hash_sha512 3 2396 13384 +840+160-59+93-207-51+0-149+19+6-134-54+6+32-33 +hash_sha512 3 3595 20211 +682-57+76+407-129+172-21+26+0+40+0-7-80-119-66 +hash_sha512 3 5393 29482 +834+61+45+122-10-1+12-3-9+0-4-16+60-16+60 +hash_sha512 3 8090 43772 +885-128-60+238-186+7+394+109+0-124-41+20+10-50-165 +hash_sha512 3 12136 64893 +892+76+89-23-33+25-47+21-18+0-5+24-16+25-47 +hash_sha512 3 18205 97176 +831+219-49+0-54+55-49+0-54+51+1917+144-75-5-6 +hash_sha512 3 27308 145094 +737+60-15+114-144+56+0+2-89-142-21+0+2+2+0 +hash_sha512 3 40963 217854 +906+366-78-76-58+0-64-30+6+156-12+56-136+38+47 +hash_sha512 3 61445 326038 +843+127+204+106-30+374-110+28-152+54-72-44-24+0-96 +hash_sha512 4 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 4 0 974 +1164+84+28+13-1+4-3-9-8-24-3+0-7+2+9 +hash_sha512 4 1 978 +276+120+30+13+14-1-5-6-8-4+0-19+14-14+12 +hash_sha512 4 2 978 +595+79+29+25+0+1+1-8-16-16-10-3-13+5-14 +hash_sha512 4 4 979 +223+113+54+11+9+0-7-12-13-21+9-2-10+2-15 +hash_sha512 4 7 982 +212+63+34+21+8-6-10-15-16-26+9-8+3-4+0 +hash_sha512 4 11 1003 +136+60+33+14+28+4-8-8-10-18-4+0+7-2-12 +hash_sha512 4 17 1003 +173+36+23+20+7-3-1-10-11-13-4-3+0+58+4 +hash_sha512 4 26 1001 +159+51+29+14+28-4+2-10-9-21-5+0+0+53-18 +hash_sha512 4 40 1001 +135+39+35+15+7+0-7-10-13-15-3-2+53-4+6 +hash_sha512 4 61 1011 +136+28+19+15+1-6-11+3+0-3-4-5-4-11+10 +hash_sha512 4 92 999 +137+38+30+21+11+10-3-13-7-21-6-3+0-13+14 +hash_sha512 4 139 1739 +194+58+35+15+43-19-21-3-4-8+0-4+1-5+0 +hash_sha512 4 209 1737 +192+87+34+12-9+10+0-1-38-2+8+2-2-3-3 +hash_sha512 4 314 2445 +424+93+39+4+3-13-7-14-12+0-24-2+2-2+36 +hash_sha512 4 472 3150 +357+114+34-33+0-18-1+41-18-56-16-59+35+9+19 +hash_sha512 4 709 4573 +442+140+1-21-17+0-29+765+155+3-19-23-34-18+4 +hash_sha512 4 1064 6649 +550+228+24+20+138+50-5-8+0+14-14-8-14-8-14 +hash_sha512 4 1597 9412 +816+203+87-18+2+115-99-41-28+0-52+24-18+1-67 +hash_sha512 4 2396 13537 +902-141+6+101+0+11-137+22-103+15-106+44-155-7-76 +hash_sha512 4 3595 20243 +987+145+104+70+17+72+0+10-5-16-12-16-12-16-12 +hash_sha512 4 5393 29695 +765+191-3+25+1-20+0-20+0-20+0-20+0+26+0 +hash_sha512 4 8090 43930 +675-8-24-5-40+146-92+4-24+5-59+0+4+16+5 +hash_sha512 4 12136 64862 +717+173+0+31+71-22-41-4+0+79-22+81-18+0-1 +hash_sha512 4 18205 97272 +826+233-7-32+54+84-109-100+47-39-84+29+37+0-79 +hash_sha512 4 27308 145246 +808+183+1+2+140-51-48+0+40-1-19+41-51-1-20 +hash_sha512 4 40963 218004 +678+143-51+183-62+29-78-57-96+36+172+0-50+8-6 +hash_sha512 4 61445 326100 +838+302+0+70-65+1624+278-117-61+172-36-41-109-70+55 +hash_sha512 5 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 5 0 861 +698+98+31+17+6+0-5-10-7-30-5-8+5-19+12 +hash_sha512 5 1 862 +322+121+47+16+6+0-11-13-13-12-13+14-8-9+4 +hash_sha512 5 2 871 +141+53+13+14+0-10-12-18-18-26+0-10+4-7+1 +hash_sha512 5 4 869 +163+52+44+41+6+0-5-12-15-26+15-16-9+1-7 +hash_sha512 5 7 872 +210+59+56+20+15+0-7-6-15-5-5+19-5-2+5 +hash_sha512 5 11 879 +137+82+73+52+12+0-1-7-10-18+19+0-2+6-1 +hash_sha512 5 17 893 +123+97+73+19+18+0-6-12-16-24+9-17+21-3-5 +hash_sha512 5 26 912 +136+187+72+16+4+0-12-13-4-18+13-6-5+4-7 +hash_sha512 5 40 981 +97+90+53+18+2-10-13-22-22+7-9-8+0-5+3 +hash_sha512 5 61 1027 +124+44+19+21+5-13-19-28-23+3-17-7+0-10+4 +hash_sha512 5 92 1100 +126+27+19+33-3+4-6+4-28+0-8+8-13-4-1 +hash_sha512 5 139 1640 +241+125+86+12-8-16-12-10+0+9-18+14-15+90-13 +hash_sha512 5 209 1803 +173+96+32+14-2-3-12+28+0-10-7+24-7-4+24 +hash_sha512 5 314 2473 +286+90+60+0-10-36-21+80-28+15-31-21+4-28+11 +hash_sha512 5 472 3270 +287+138+16-54-43-80+19-20+12+5+0+67-25-15-12 +hash_sha512 5 709 4591 +437+187+13-47+33+35+7-20+0-20+0-20+0-20+0 +hash_sha512 5 1064 6613 +579+213+104-16-22-20-5+23-18-41+33+8+0+25-43 +hash_sha512 5 1597 9352 +742+249+298+101+80+2+11+0-18-14-33-39-33-39-33 +hash_sha512 5 2396 13657 +817+31+63-89-86-3+11-49-96+38-133+46+60+0-106 +hash_sha512 5 3595 20087 +896+282-30+3-19-24+0-8+0-8+335+28+233+13-8 +hash_sha512 5 5393 29554 +858+283+86-7+0-28-28-28-28-28-28+116+2+2+2 +hash_sha512 5 8090 43852 +705+282+170-38+33+134-100+0-122-33-10-136+39-86+4 +hash_sha512 5 12136 65024 +834+283+62-45-103+0+44-68+0-50+0+0+0+0+0 +hash_sha512 5 18205 97223 +912+245+113-51-83-24+0+63-43-49-81+12+5+6-43 +hash_sha512 5 27308 145125 +944+337+101+0+76+113-41+51-41-37-157-53-17+239-143 +hash_sha512 5 40963 217876 +820+297-80-8-62+1497+283-70+0-32-70+122+0+0+22 +hash_sha512 5 61445 326058 +1072+232+14-134+88-74+84+78-99-12-48+244-8-48+0 +hash_sha512 6 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 6 0 981 +998+83+22+9+6-14-5-9-20-25+8-10+0-10+2 +hash_sha512 6 1 979 +299+41+33+20+5+0-5-13-13-18-19+7-1-4+2 +hash_sha512 6 2 978 +202+55+30+17+3+5-5-10-18-5+9-5+0-5-2 +hash_sha512 6 4 979 +190+40+21+10+7+0-8-10-16-5-7+22-12-3+0 +hash_sha512 6 7 980 +160+42+29+13+9-2-2-7-5-7+12-2+0+2-4 +hash_sha512 6 11 1012 +109+30+22+5-3-8-9-15-20+10-25+13+0+12+0 +hash_sha512 6 17 1009 +155+29+17+3+0-11-9-11-3-10+10+0+10+0+10 +hash_sha512 6 26 1015 +149+22+12+57-8-15-16-22-5-24+3+0+3-7+3 +hash_sha512 6 40 1012 +175+104+26+9+0-8-10-18-1-18+6-6+6-6+6 +hash_sha512 6 61 1012 +139+27+21+6+0-11-12-11-17+10-22+10-2+10-2 +hash_sha512 6 92 1009 +120+26+19+6+0-8-10-16-6-24+8-10+8-8+8 +hash_sha512 6 139 1765 +179+57+8+0-30+30-28-5+56-10-13+49+36-49-9 +hash_sha512 6 209 1756 +153+46+20+52-25-18-21-1-4+0+20+50-5-2+46 +hash_sha512 6 314 2484 +334+41-3-36-14+5+0+7-12+0-11+4-6+4-6 +hash_sha512 6 472 3191 +312+109+44-3+32+2-15-36+25-14-8-10+2-18+0 +hash_sha512 6 709 4585 +416+96-39+22+25+19+6+0+0+3+0-40-32-38-38 +hash_sha512 6 1064 6718 +519+94+37-8+22-52-84-119+0+1-88-119+0+57-82 +hash_sha512 6 1597 9392 +758+218+9+169+74-38-24+0+176-34-38-18-18-2+138 +hash_sha512 6 2396 13468 +892+0+265+117-25+25-20-56-3+63-35+61+16-56-3 +hash_sha512 6 3595 20312 +880+90+33-86-71+43-19+0-64+43-19+0-64+43-19 +hash_sha512 6 5393 29682 +855-26+15-69+3+0-60-29+8-30+8-30+8-30+8 +hash_sha512 6 8090 43870 +910+93+35+157+117-78+32-48+0-58-2+47-39+0-2 +hash_sha512 6 12136 64797 +802+177-84+37-98+96+0-46-98+43-54+12-31-62+13 +hash_sha512 6 18205 97162 +802+208+35+0-33-25-67-7-68-61-21+1419+491+103+108 +hash_sha512 6 27308 145120 +1154+208+33+16-4-41-16-52+8+21-23-145+0+127-54 +hash_sha512 6 40963 217874 +733+298+104-254-62+152-58+36+0-112+0-168+30-168+30 +hash_sha512 6 61445 326180 +783+132+22+88-170-20-74-16+50-102-38+0+2+50-102 +hash_sha512 7 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 7 0 853 +505+64+36+27+19+8-5-11-6-20-2-16+8-2+0 +hash_sha512 7 1 861 +290+91+25+17+14+6+1-13-9-10-24+0-7-13-8 +hash_sha512 7 2 859 +171+66+29+25+21+6-3-7-14+0-20+6-3-5-5 +hash_sha512 7 4 858 +182+93+38+29+19+14-6-3-7-14+9+0+0+0-1 +hash_sha512 7 7 865 +225+36+31+27+18+5-3-5-12-1-17+11-2-5+0 +hash_sha512 7 11 875 +154+129+29+27+8+0-5-9-13-2-19+12-11+2-4 +hash_sha512 7 17 885 +137+92+85+25+14+8-4-5-9+9-1-1+0-2+0 +hash_sha512 7 26 904 +173+87+81+26+9+2-5-6-11-1-18+18-15+0-1 +hash_sha512 7 40 969 +137+103+61+21+11+6-3-5-13-17+19-16-7-2+0 +hash_sha512 7 61 1015 +129+52+44+31+12+5-2-10-14+18-14-4+0-5-8 +hash_sha512 7 92 1075 +179+95+68+43+38+12+5+0-5-10-40-31-33-34-32 +hash_sha512 7 139 1629 +247+112+63+5-16-32-19+0+8-28-8+8-28-4+10 +hash_sha512 7 209 1782 +174+98+63+31+1+11-37-15-2-38-8+0-38-8+0 +hash_sha512 7 314 2470 +297+105+46+0-30-16-3+2-1+7-1+7-1+7-1 +hash_sha512 7 472 3267 +345+104+31+8-16-21+1+44+58-9+0-20-26-18-45 +hash_sha512 7 709 4612 +370+76-67-44-22-13+4+0-23+11+16+0-39+11+16 +hash_sha512 7 1064 6528 +649+260+68+118+83+35-13-6-5-5+1-4-4+0+0 +hash_sha512 7 1597 9391 +745+184-6-15+27+28-8+0+14-40+42+58-1-9-8 +hash_sha512 7 2396 13557 +771+116-15+48+216+0-98+16-40-85+22-58-109+18-68 +hash_sha512 7 3595 20186 +873+0+46+17+39-64-16+22-68+450-98+246-100+0-100 +hash_sha512 7 5393 29634 +833+8+44-16+0+0+0+0+0+0+0+0+85+2+2 +hash_sha512 7 8090 43821 +781-67+82+92-13+46-56+28-22-13+39-52+219-82+0 +hash_sha512 7 12136 64910 +769+385-34+6-15+0+12+0-28+12+0-28+0+0+0 +hash_sha512 7 18205 97230 +1018+156-93-60+33-27+10-130+0+0+0+0+0+0+0 +hash_sha512 7 27308 145118 +909+287+268+17+144+0+0+0+68+0+0+0+0+0+0 +hash_sha512 7 40963 217724 +1063+192-68+58+80-36+0+0+0+0+0+0+0+0+0 +hash_sha512 7 61445 326018 +1090+312-26-40-84+46+1646+166-72-56+0-110+0-110+0 +hash_sha512 8 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 8 0 971 +1533+93+39+22+9+6+0-6-5-15-2-16+1-4-7 +hash_sha512 8 1 977 +271+35+29+24+9+12+62-4-13-12-4-15+0-4-9 +hash_sha512 8 2 973 +203+62+34+22+13+12+0-2-7-17-2-8+11-4-4 +hash_sha512 8 4 974 +219+36+29+23+16+4+0-8-7-16-11-5-19+2-5 +hash_sha512 8 7 977 +219+35+33+19+11+3+62-1-14-11-8-12+0-3+0 +hash_sha512 8 11 1007 +142+38+18+20+7+2-1-5-18-17-17+55-24-10+0 +hash_sha512 8 17 1004 +164+34+33+14+10+0-4-12+49-8+1-13-1-1-8 +hash_sha512 8 26 1007 +161+71+49+8+3+1+55-9-8-14+0-7-11-6-11 +hash_sha512 8 40 1002 +144+62+43+23+6+1-1-4-10-4-12+0+0+0-6 +hash_sha512 8 61 1002 +186+38+34+58+12+6+0-6-6-9-1-11-1-2+1 +hash_sha512 8 92 1005 +145+32+41+12+9+55-8-17+51-15+0-17-11-8-7 +hash_sha512 8 139 1752 +210+44+21+4-4-24-24+3-7+2-4+0-6+0-6 +hash_sha512 8 209 1748 +247+68+17+64-4-26+2-6+38-2+0-5-2+0+0 +hash_sha512 8 314 2462 +271+63+15-11-10+16+59+2-2+0-2+0+0+0-2 +hash_sha512 8 472 3168 +400+112+61-8+72+54-23-8-1+0-4+65+5+0-2 +hash_sha512 8 709 4588 +407+71+86+29-7-14-1-7+1-5+0-4+1-3+0 +hash_sha512 8 1064 6683 +652+170+93+17+41+18-32-58-8-61+3-24+0-5-54 +hash_sha512 8 1597 9422 +695+155+26+0+89+190-68+39-42-48-46+66-42-26-48 +hash_sha512 8 2396 13464 +972+23-66+219-20-5+74+6-13-9+64-16+0-47+44 +hash_sha512 8 3595 20295 +1213+126+117+117+0+2-10-32+0+2-10-32+0+2-10 +hash_sha512 8 5393 29815 +695+135+46-89-1-2+0-2+0-2+0-2+0-2+0 +hash_sha512 8 8090 44002 +716+39+20-23-77+209-116+120-182+0+97-176+109-158+0 +hash_sha512 8 12136 64806 +968+317-14+0+9+62-2+62-3-3-3-3+112+150-3 +hash_sha512 8 18205 97269 +671+117+27-59-5+28-20+1+0-20-21+0+0+1-22 +hash_sha512 8 27308 145186 +899+179-1+7+0-151-38+7+0-57+6-35-28+0-82 +hash_sha512 8 40963 217924 +695+129+56-48-86-32+1435+182+50+0+74-98-18-136-136 +hash_sha512 8 61445 326163 +1196+298+173-181+0-141+93-129+127-79-5+127-79-5+127 +hash_sha512 9 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 9 0 854 +614+70+32+24+11-1+3-12+0-17-22-24+5-11-7 +hash_sha512 9 1 865 +545+34+22+22+10+4-8-8+12-22-28-26-30+0-28 +hash_sha512 9 2 865 +147+30+27+19+11+1+0-12-12-25-26-27-18-18+9 +hash_sha512 9 4 863 +164+34+31+24+17+8+0-12-16-22-11+46-8-11-12 +hash_sha512 9 7 866 +187+36+22+25+18+4+0-12-21-16-17-13+2-9-1 +hash_sha512 9 11 868 +179+102+66+53+11+6+0-9-11-19-15-4+4-7-5 +hash_sha512 9 17 880 +136+90+67+24+16+0-7-11-14-18-21-8+1-6+1 +hash_sha512 9 26 892 +154+115+89+26+16+8+0-2-8-13-10-3-3+4-6 +hash_sha512 9 40 920 +151+113+91+75+9+5+4-3-9-11-4-1-6-5+0 +hash_sha512 9 61 1000 +135+37+36+22+14+4-3-4-13-16-6+0+1-3-3 +hash_sha512 9 92 1061 +159+40+50+35+17+9+2-4-9-14-14-14+0-12-20 +hash_sha512 9 139 1629 +276+140+62-2-18-29-25-7+0-2+0+6+65+3-11 +hash_sha512 9 209 1806 +156+61+20+1-29-41-14+2-11+0-11+3-9+1-10 +hash_sha512 9 314 2471 +280+91+11-18-26-4-29+15-12+1-31+29+14+0-31 +hash_sha512 9 472 3228 +297+154+12+45-42+22+0+21-43-18-9-21+19-11-8 +hash_sha512 9 709 4571 +380+223-19+25-12+8-29-28+56-20+0+25-5-5+3 +hash_sha512 9 1064 6564 +617+248-43+7-50+0+0+0+0+0+0+0+0+0+0 +hash_sha512 9 1597 9442 +650+142-38-110-12+0+194-76+8+5-27+16+68-80-38 +hash_sha512 9 2396 13609 +804+0+97-13-38+125-90-28+61-97+24+62-97+22-20 +hash_sha512 9 3595 20182 +745+92+73+17-64+254-120+110-50+0-120+0-120-120-120 +hash_sha512 9 5393 29654 +718+159+78+71-12+0-12+0-12+0-12+0-12+107+51 +hash_sha512 9 8090 43942 +664+118+31-64+84-65-90-97-115+8-68+179+0-228+5 +hash_sha512 9 12136 65007 +1007+257+34-35+113+0+24-82+30-124+40-148-35-9-71 +hash_sha512 9 18205 97153 +1158+313+49+61+0-22-206-72-69-127+127-127+1900+414-40 +hash_sha512 9 27308 145023 +1107+311+88+36-5+3-135+102-120+182-40+0-2+0-2 +hash_sha512 9 40963 218798 +740+556+111-100+0-42+180-44+3-146+8-34-34-72+130 +hash_sha512 9 61445 326062 +974+234-40+6-40+31-221+2+0-112+0+86-104-68+94 +pow_inv25519 selected implementation amd64-safegcd compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 selected 32 5959 +5404+208-206-98+80-40+0+105-67-29+79-40+0+105-67 +pow_inv25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 0 32 13980 +8669+224+152+40+35-26-26+22-43+9-23-28-24+0-19 +pow_inv25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 1 32 13987 +2936+67+0+73-14+4-38-11+8-38+23-62-38-13+3 +pow_inv25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 2 32 13975 +2220+132+58-11-34-31-4+6-20+0+8+15+30-14-49 +pow_inv25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 3 32 14048 +3097+72-55+54-15+8-84+3-58+2-48+0-77+24-80 +pow_inv25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 4 32 13982 +3050+138+31+47-17-78+12-26-46-45+2+637+0-31-51 +pow_inv25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 5 32 14033 +2471+50+29-28+0+11+11-8+22-13-22-17-33+8-25 +pow_inv25519 6 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 6 32 15742 +7664+124+107-67+24-38+10-18-18+0+24-6+10-18-19 +pow_inv25519 7 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 7 32 15745 +2168+0-86-27+33-47+16-18-68-18+14-18+8+5+0 +pow_inv25519 8 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 8 32 15758 +2633+64+73-66+18+0-30-28-60-77+4-19+16+29-15 +pow_inv25519 9 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 9 32 15752 +2177-26+58-36-35+22-38+27-19+0+104+63+48-16-11 +pow_inv25519 10 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 10 32 15722 +3520+78-14+36-4-75-27-34+0+12-17+77+12+29-45 +pow_inv25519 11 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 11 32 15738 +2522-65+60-52-75+39+0-43+19-49-8+18+17-42+60 +pow_inv25519 12 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 12 32 12878 +7930+187+62+3-48-15-22-28-22-28+0-28+0+0+0 +pow_inv25519 13 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 13 32 12842 +2004+289+84-16+19-20-20-20-46+23-35+50-20+0+54 +pow_inv25519 14 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 14 32 12830 +1832+292+19+2+0+28+0-5-63-9+50-6-23+29-63 +pow_inv25519 15 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 15 32 12856 +2023+204+14-25-29-22+0-10-56-51+11-51+11+10+8 +pow_inv25519 16 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 16 32 12872 +1274+144+17+0-65-42+19-79+19-79+33-1+30-37-59 +pow_inv25519 17 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 17 32 12824 +1021+55+62+3-9-36-31+41-6+0+0+0+25+43-36 +pow_inv25519 18 implementation amd64-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 18 32 12028 +3832+105+45+0-46-38-40+147-57-100-71+2-66+6+66 +pow_inv25519 19 implementation amd64-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 19 32 12045 +1277+166-18+49+0-39-38-40+11-70-41+49-10+56+42 +pow_inv25519 20 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 20 32 14105 +3115+0-97+85-61-70+223+11+30-149-136-106-138+33+64 +pow_inv25519 21 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 21 32 14075 +657-90-28+65-70-117+53+21+44+63-8+53-37+0-51 +pow_inv25519 22 implementation amd64-safegcd compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 22 32 5995 +971+199-222-113+0-77-44+39+6-12+10-12+10-12+10 +pow_inv25519 23 implementation amd64-safegcd compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 23 32 5959 +523+133-213-63-3+64-33+0+105-67-29+79-40+0+105 +pow_inv25519 24 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 24 32 14452 +10669+290+85+149+50-30+26-35-18-3+0-41-18+2-2 +pow_inv25519 25 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 25 32 13868 +9119+233+124-24-39+6+62-23+38-20+0-20+0-20+0 +pow_inv25519 26 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 26 32 16304 +4928+132+65+127-12-56-23+0-24+0+0+0+0+0+0 +pow_inv25519 27 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 27 32 12893 +7611+223-24+0+22-32+3+3-17-38-9-3+20-38+56 +pow_inv25519 28 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 28 32 14318 +5551+161+60-34+4+0-60+2-19-30+2-38-24-44+0 +pow_inv25519 29 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 29 32 13878 +7922+263+104+68+84-22-60+0-15-13-24+28-25+23-24 +pow_inv25519 30 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 30 32 26882 +3854+144+107+30-288-2+68+0-77-158-60-168-59+19+64 +pow_inv25519 31 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 31 32 29217 +2885-4+77+28+53-40+57-11-57-38-38-16+15+13+0 +pow_inv25519 32 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 32 32 25140 +2934+272-37-174+293-187+86-44+217+0-129-68-48+135+39 +pow_inv25519 33 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 33 32 29204 +2862+71+28-41-91-35-10+48+4+34-44-20+0+42-18 +pow_inv25519 34 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 34 32 25355 +3776-148+95-24+398+0-14+352+278-127-110+175+46-50-65 +pow_inv25519 35 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 35 32 29216 +2342+21+78-16+8+0-97+45-29+64-36-34-42+24-58 +pow_inv25519 36 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 36 32 12508 +5614+451+174+105+152-42+4-62+0-103-51-33+47-68-14 +pow_inv25519 37 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 37 32 12510 +1166+203+64+0-70-73+8-34-37-32-4+32+87+40-21 +pow_inv25519 38 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 38 32 12525 +1233+103+69+3+40-129-3-45-45+0-42+102-45+1-48 +pow_inv25519 39 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 39 32 12523 +1250+105+93-28+27-70+0-28-44+19+154-28-61+29-101 +nP_montgomery25519 selected implementation amd64-avx2-ns9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 selected 32 115414 +12037-34-165-147+178-73+0-52+2+0-52+2+2+2+2 +nP_montgomery25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 0 32 153871 +10152+171+125+119-8+54-154-162-1-68-38+29-221+678+0 +nP_montgomery25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 1 32 154563 +1574+237+148-52+217+0+129-53-68-34-20+65+62-47-43 +nP_montgomery25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 2 32 154858 +1608+122+58+6-149+20-82-105-36-76+0+9+1-76-95 +nP_montgomery25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 3 32 154170 +1319+285-11-97+114+4-49-23+6-54+26+48+0-56-58 +nP_montgomery25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 4 32 154673 +1791+228-4-35+27-79+81-29+41+0+72-49+5-34-76 +nP_montgomery25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 5 32 153687 +779+275+89+47-38-50+0-101+67-17+11-133+7-91-81 +nP_montgomery25519 6 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 6 32 170819 +8776+253+28+9-98+830-59-217+83-122+68-100-47+0-212 +nP_montgomery25519 7 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 7 32 169044 +932+231+95+156-114+0-42+188-154-104+72-24+74-310-56 +nP_montgomery25519 8 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 8 32 169359 +1056+264-11+263-122+78-74-138+22+272-252+176+0-52-28 +nP_montgomery25519 9 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 9 32 168955 +805+173+0+73-142+67+165+119-93-21+93-17-5-52-10 +nP_montgomery25519 10 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 10 32 170160 +1270+36-23+74+198-26-216-168-62-112+10-162+0+16+22 +nP_montgomery25519 11 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 11 32 169368 +811+165+167-3+64-187-30+1000+23-202-191-82+52+0-236 +nP_montgomery25519 12 implementation amd64-avx2-hey10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 12 32 127194 +7685+24+4-13+0-70+0-70+0-70+0-70+0-70+0 +nP_montgomery25519 13 implementation amd64-avx2-hey10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 13 32 120766 +742+4+2-26+1+0+0+0+0+0+0+0+0+0+0 +nP_montgomery25519 14 implementation amd64-avx2-hey10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 14 32 120964 +9061+304+93+17-1+100+48+28+0-18-22-18-22-22-22 +nP_montgomery25519 15 implementation amd64-avx2-hey10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 15 32 120832 +1539+84+16+84+88+0+0+0+0+0+0+24+0+0+0 +nP_montgomery25519 16 implementation amd64-avx2-hey10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 16 32 127062 +3648+201+215+83+38+21+0+0+0+0+0+0+0+0+0 +nP_montgomery25519 17 implementation amd64-avx2-hey10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 17 32 120860 +1108+31+66-42+50+25-76+16-55+3+0-15-32-114-52 +nP_montgomery25519 18 implementation amd64-avx2-hey9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 18 32 116154 +7150-66+111+490+5+21+79-114+0-98+0-98+0-98+0 +nP_montgomery25519 19 implementation amd64-avx2-hey9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 19 32 115998 +1022+60-31+0-34-69+37-39+83-39+83-39+83-39+83 +nP_montgomery25519 20 implementation amd64-avx2-hey9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 20 32 116224 +8157+241+28+86+82-75+0-20-58-10-107+145-6-19+35 +nP_montgomery25519 21 implementation amd64-avx2-hey9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 21 32 116099 +413+0-55+31-176+2-176+2-176+14-176+14-176+2-176 +nP_montgomery25519 22 implementation amd64-avx2-hey9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 22 32 116180 +4193+3+89-19+40+0-34+32-89-48-21-36+24-88+52 +nP_montgomery25519 23 implementation amd64-avx2-hey9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 23 32 116054 +1091+103+53-42+151-24+0+126-4-8+48-8+126-44-10 +nP_montgomery25519 24 implementation amd64-avx2-ns10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 24 32 118546 +7531+122-48+61-112+0-83-6+31+0-80+0-80+0-80 +nP_montgomery25519 25 implementation amd64-avx2-ns10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 25 32 118384 +436-34-6-77+0-18+0-18+0+414+19-145+31+1-71 +nP_montgomery25519 26 implementation amd64-avx2-ns10l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 26 32 118598 +7547+200-4-15+10+0+0+0+0+0+0+0+0+0+0 +nP_montgomery25519 27 implementation amd64-avx2-ns10l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 27 32 118439 +796-5-79+23-92-79+10+0+56+0+56+0+56+0+56 +nP_montgomery25519 28 implementation amd64-avx2-ns10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 28 32 118520 +2394+146-6-50+0+0+0+0+0+0+0+0+0+0+0 +nP_montgomery25519 29 implementation amd64-avx2-ns10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 29 32 118330 +781+6-46-1-8+23+0+0-26-20-5+54+54+54+54 +nP_montgomery25519 30 implementation amd64-avx2-ns9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 30 32 115344 +7618+145+94+69-60+112-88+0-88+0-88+0-88+0-88 +nP_montgomery25519 31 implementation amd64-avx2-ns9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 31 32 115350 +970+20-212+76+69+118-236+0-4+0-4+0-4+0-4 +nP_montgomery25519 32 implementation amd64-avx2-ns9l-maa5 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 32 32 115590 +1612+3-210-174+42-224-130+0+42-224-130+0+42-224+402 +nP_montgomery25519 33 implementation amd64-avx2-ns9l-maa5 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 33 32 115410 +734+218-146-144+0-2-52+0-2-52+0+0+0+0+0 +nP_montgomery25519 34 implementation amd64-avx2-ns9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 34 32 115402 +3032+33+282+262+0+0+0+0+0+0+0+0+0+0+0 +nP_montgomery25519 35 implementation amd64-avx2-ns9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 35 32 115325 +489-31-209-31+157+0+260+0+260+0+260+0+260+0+260 +nP_montgomery25519 36 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 36 32 161421 +7144+290-59+65+102+0-92+30-22+0-92+30-22+0-92 +nP_montgomery25519 37 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 37 32 161402 +639-66+10-242-57-220+60+0+60+0+60+0+60+0+60 +nP_montgomery25519 38 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 38 32 161368 +888+42+96+0+101-216+107-28-119+86-149+76-65-104-65 +nP_montgomery25519 39 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 39 32 161516 +440-220+882-311+33-142-126-100+2-2+0+6+6+0-2 +nP_montgomery25519 40 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 40 32 161384 +1202+164-95+226+2+26+220+0+0+0+0+0+0+0+0 +nP_montgomery25519 41 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 41 32 161584 +676-26-243-127-16+17+16+2-2+22-4+0+8+0-12 +nP_montgomery25519 42 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 42 32 136920 +5358+68+133-308-60+153-177+0-176-12+74+128+58-78-192 +nP_montgomery25519 43 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 43 32 136661 +271+588+0+137-516+120-280-56-403+356-348+155-453+303-439 +nP_montgomery25519 44 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 44 32 198049 +10381-15+76-10-411+21+16-322-383+259+547+0-343-51+71 +nP_montgomery25519 45 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 45 32 237394 +17096+314+69+44-12-13+26-48-15-15+16+0-15-15+16 +nP_montgomery25519 46 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 46 32 191947 +12220+610+57-507+17-323+561+0-104+748-104-100-27-296+139 +nP_montgomery25519 47 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 47 32 225763 +15566+265+76+12+36-14+1-14-8-14+0-10+0-17-1 +nP_montgomery25519 48 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 48 32 202300 +11169+465+1-26-23-9-199-54+4-44+666+286-152+0+12 +nP_montgomery25519 49 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 49 32 235963 +15596+306-37+59-297+17-264+46-272+34-254+0-288+36-265 +nP_montgomery25519 50 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 50 32 361063 +1153-551-258+284+512-1397+97-195+149-129+49-727+893+0-126 +nP_montgomery25519 51 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 51 32 332402 +1865+107-201-112+80+0+22-109-21+800+109-272-122-66+0 +nP_montgomery25519 52 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 52 32 351766 +2181+235-168+58+155-78+130-111-312-208+0+93+505-208+0 +nP_montgomery25519 53 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 53 32 331411 +1477+133+65+79-38+131-46+119-128+138-38-46-45-49+0 +nP_montgomery25519 54 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 54 32 354748 +670-3175+501-187-373-274-368-162+0+758-90+34+36+32+30 +nP_montgomery25519 55 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 55 32 331801 +1080+425-398+167-253-243-57+212+192-79-68-88+726+0+431 +nP_montgomery25519 56 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 56 32 16093180 -15932287+12635+6156+1528+115+1144-696+409-2059+1410+0-729-596-1230-683 +nP_montgomery25519 57 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 57 32 16093176 -15942369+50751+3630+1465+1161+1472-1378+402+0-2097-1192-674-74+985-2193 +nP_montgomery25519 58 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 58 32 16092521 -15941455+562-119-423+621+1168-1639+166-54+751-230+1106+379+0-897 +nP_montgomery25519 59 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 59 32 150202 +587+121+128+170+104-92-114-155-72+0+4+28-158-62-80 +nG_merged25519 selected implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 selected 32 41384 +23763+359-30-45-124+122+186-32-173+17-72+107-76+50+0 +nG_merged25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 0 32 49597 +26364-12+130-99-109-20-150+137+0+4-119+41-91+22+11 +nG_merged25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 1 32 49188 +4089+78+27+104+40-32-8+0-107+68-53+8-45-39-76 +nG_merged25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 2 32 49390 +4095+147+798+334-89-52-5-8-73-80+99-41+0+33+27 +nG_merged25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 3 32 49207 +3415+80+67+76-22-129-46-155-28+83+144-11+0+26-114 +nG_merged25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 4 32 49869 +4484+101-23-144+0-45-26-164-115+96+43+1+90-16+37 +nG_merged25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 5 32 49235 +3510+128+31-10-95+62-20-75+69+0-1-48+21+41-58 +nG_merged25519 6 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 6 32 48237 +16602+320+0-34+0-74+43+20-172-1+85-92-30-92+52 +nG_merged25519 7 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 7 32 47609 +1727-89+46+16-34+63+0-33-8-18+70+46+19-69-56 +nG_merged25519 8 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 8 32 48191 +1812+309-85+80+59+56-135-29+0-31+13-91-55+86-62 +nG_merged25519 9 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 9 32 47612 +995-10-33-34+51+63+27-1+6-145+13-32-94+20+0 +nG_merged25519 10 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 10 32 48371 +2472+144+15+64-39-70-28+71-89-29+26-102+0+50-90 +nG_merged25519 11 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 11 32 47766 +1636+237+96+0-8+49-43-17-10+157-9-6-11+58+8 +nG_merged25519 12 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 12 32 43936 +20586+361-6+97+84+16-139-172+83+94-56-113-64-30+0 +nG_merged25519 13 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 13 32 43375 +1197+232+0-201+12+136-171+3-125+99+12-15-59-11-59 +nG_merged25519 14 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 14 32 43204 +9339+238+26-136-4-151+0-39+38-195+35-105+11+63-69 +nG_merged25519 15 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 15 32 42498 +1038+22+155-193+0-79+27+29-89-14+13+39-31-28-130 +nG_merged25519 16 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 16 32 42822 +7410+312+214+133+0-109+44-68+151-56+111-45-20-32-33 +nG_merged25519 17 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 17 32 42332 +922+195-10-76-136-114+171+15+0-8-113+40+35-42+30 +nG_merged25519 18 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 18 32 42060 +1321+245+23+0+28+52+41-50+36-53-113-19-98-65-22 +nG_merged25519 19 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 19 32 41319 +834+218-155+19-62+238-164+112-77+0-15+7-11+59-132 +nG_merged25519 20 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 20 32 47162 +8405+754+619+443+454+390+1469-16+0-107-133-25-148-10-95 +nG_merged25519 21 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 21 32 47123 +909+108-2+0-96+91-113+103-62+36-132+16-132+16-46 +nG_merged25519 22 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 22 32 47698 +853+45-100+31+70-7-81+31+70-8-51-159+52+0-48 +nG_merged25519 23 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 23 32 46951 +738+323-314+189-332+164-326+2-196+2-403+235-324+0-196 +nG_merged25519 24 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 24 32 47420 +1404+132+11-55+8-12+22-27-11-6+14-6+0+12-9 +nG_merged25519 25 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 25 32 46854 +1259+249+127-107-2-12-10-10+0-3+6+122+20+114-8 +nG_merged25519 26 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 26 32 45150 +6651-501-535-297-9+129+38+6-39+0+16-2+72-1+30 +nG_merged25519 27 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 27 32 44413 +915-273+96-274+102+73-360+158-19-9-349+118-296+209+0 +nG_merged25519 28 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 28 32 136094 +9120+235-13-7-94+215-69+39-139-169+57+17-48+33+0 +nG_merged25519 29 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 29 32 105461 +6602+312+133-53+84+0-241+9-5-14-217-57+115-19+59 +nG_merged25519 30 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 30 32 136949 +6723+49+0-89-23-16+262+53-118-153-17+23-107+81+39 +nG_merged25519 31 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 31 32 101822 +6527+206+51-78-96-89+31+0-15-25+224+25-129+132-53 +nG_merged25519 32 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 32 32 137099 +5553+814+228-50-67+0-85-78+113+43-95-190+16+55-113 +nG_merged25519 33 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 33 32 104253 +5045+152-280+56-171+90-155+0+8-95+27-41-69+115-264 +nG_montgomery25519 selected implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 selected 32 41472 +5302+279-12-66-8+222-14+250-23+122+0+50-22+28-5 +nG_montgomery25519 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 0 32 115262 +4097+226-86+233+0+0-70+52-70+52-70+52-70+52-70 +nG_montgomery25519 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 1 32 115398 +674-142-94-100+2-40+0+20+0-112+20-228+20-228+20 +nG_montgomery25519 2 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 2 32 115296 +481+34+0+49-30-56-104+18-104+18-104+18-104+18-104 +nG_montgomery25519 3 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 3 32 115277 +623+345-59+0-11-81+19-107+141-107+141-107+141-107+141 +nG_montgomery25519 4 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 4 32 115262 +441+100-58+118+0+0+0-70+196-70+52-70+52-70+52 +nG_montgomery25519 5 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 5 32 115380 +507+631+17+219-178+0-184-84-194+38-210+38-210+38-210 +nG_montgomery25519 6 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 6 32 14508357 -14363945+58828+17728+7286+2705+1933+1792+1032-129-87-123-138-134-122+0 +nG_montgomery25519 7 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 7 32 14508500 -14369579+46595+4899+838+959+830+865+1349-191-220-66-151-193-201+0 +nG_montgomery25519 8 implementation sandy2x compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 8 32 14510100 -14371124+46864+13167+3841+2166+1596+1302+0+39-55-119-789-1116-1104-1084 +nG_montgomery25519 9 implementation sandy2x compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 9 32 138456 +405-21-19+18+37-85-58+722+0-4+14-54+4-14+34 +nG_montgomery25519 10 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 10 32 41411 +1530+127-24+105+13+47+83-88-135+0-169-65+3-43-21 +nG_montgomery25519 11 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 11 32 41462 +385+165-225+133-42+85-103+66-124+6+62-54+0-80-154 +nG_montgomery25519 12 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 12 32 41456 +440+204-16-105-68+22-155+82-55-9+144+175+55-43+0 +nG_montgomery25519 13 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 13 32 41516 +300+95+183-42-33+133-54+39+71-45-13+0+22-131-139 +nG_montgomery25519 14 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 14 32 41400 +748+144-123-49-50+37+0+16+99-119-106-117+203+59-3 +nG_montgomery25519 15 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 15 32 41380 +230+120+62-136-51-49-197+109+66-96+124-39+16-111+0 +mGnP_ed25519 selected implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 selected 33 158533 +39200+4260+1712+0-3-73+255-65-5-88+73-252+11+93-123 +mGnP_ed25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 0 33 175972 +28807+4332+1400+536+432+40+388-46+0-166-382-334-328-382-464 +mGnP_ed25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 1 33 176241 +10182+4068+2064+965+395+47+268-148+0-474-753-483-633-877-740 +mGnP_ed25519 2 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 2 33 174144 +10155+5619+1531+1468+769+119-90-127+212-606-356-404-497-259+0 +mGnP_ed25519 3 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 3 33 172715 +12284+3701+1449+781+659+477+141-218-229-442-157-219-319+0-197 +mGnP_ed25519 4 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 4 33 177532 +12123+5200+2732+1184+348+394-250+0-180+20-560-372-208-126-242 +mGnP_ed25519 5 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 5 33 175204 +9728+4123+1736+560+717+412+377+0-67-106-560-283-225-387-302 +mGnP_ed25519 6 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 6 33 198546 +27200+6240+2422+1323+802-266-142+458-42+0-62-120-262+1070-183 +mGnP_ed25519 7 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 7 33 195632 +9369+3714+1742+1300+0+181+418-620+160-155-514-799-218-910-1600 +mGnP_ed25519 8 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 8 33 198204 +9213+4485+1639+1034+194+118-50-504-360+160-822-508-438-354+0 +mGnP_ed25519 9 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 9 33 196276 +13996+4700+2680+1076+1390-84+28-190-648-450-556-324+0-410+48 +mGnP_ed25519 10 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 10 33 198554 +11218+5088+2674+1358+525+299+106-470-520-368-186+0-622-308-584 +mGnP_ed25519 11 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 11 33 197560 +8588+4237+2110+2844+603+244+270-946-842-722-516-834-800+0-1246 +mGnP_ed25519 12 implementation amd64-avx2-10l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 12 33 183914 +44907+5653+871-134+236-82-92-8-236+10-118+224-228+0+96 +mGnP_ed25519 13 implementation amd64-avx2-10l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 13 33 184152 +10883+4444+1523+431+52-443+159+25-681+0-654-482-252-155-113 +mGnP_ed25519 14 implementation amd64-avx2-10l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 14 33 162511 +30759+2719+1469+307+77-388+0-211-171-183-146+1+52-255-524 +mGnP_ed25519 15 implementation amd64-avx2-10l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 15 33 165157 +6517+3082+1082+727-89+163+221-149+0-228-30+32-170-222-44 +mGnP_ed25519 16 implementation amd64-avx2-9l-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 16 33 174860 +33554+4991+1437+1862-232+616-66-486+172-44-30+4+0-40-48 +mGnP_ed25519 17 implementation amd64-avx2-9l-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 17 33 177406 +9588+3128+1485+0+536+61-165-294+78-61-503-498-414-495+613 +mGnP_ed25519 18 implementation amd64-avx2-9l-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 18 33 158000 +6628+3164+1518+0+182+189-227+45-89-111-113+12-118-369-201 +mGnP_ed25519 19 implementation amd64-avx2-9l-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 19 33 158570 +5169+2074+1004+476+225+0+267+112-339-106-327-404-29-200-617 +mGnP_ed25519 20 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 20 33 187924 +38294+5247+2459+1004+258+16-272-391-247-265-419-136+0-486+14 +mGnP_ed25519 21 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 21 33 187900 +10065+3829+1824+762+152+176-58+102-166-192-202-262-316+0-274 +mGnP_ed25519 22 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 22 33 186094 +7382+2697+848+628+0+38-322-176-552-183-211+75-141+30-156 +mGnP_ed25519 23 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 23 33 187038 +8083+2957+1650+914+288+0-380+542-320-344+184-392-568-694-326 +mGnP_ed25519 24 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 24 33 191131 +9866+3399+1401+774+202+84-93+99-158-440+0-576-508-564-559 +mGnP_ed25519 25 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 25 33 186354 +8942+2902+1851+825+462-4-293-137+353+1974+0-208-836-502-1146 +mGnP_ed25519 26 implementation amd64-mxaa compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 26 33 164215 +27898+2996+884+813+173+199+92+0-209-77-62-94-359-63-335 +mGnP_ed25519 27 implementation amd64-mxaa compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 27 33 164291 +6129+3284+901+482+465+237+313-325+0-99-618-218-578-552-760 +mGnP_ed25519 28 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 28 33 392820 +16203+4175+2385+1205+269+121-41-933-206+0-674+40-778-115-929 +mGnP_ed25519 29 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 29 33 395679 +13081+4541+2370+847+561-354+83-19-441+112-236-164+0-343-37 +mGnP_ed25519 30 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 30 33 377870 +14469+4981+2299+767+426+437-22-578-268-292-346-60+128-664+0 +mGnP_ed25519 31 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 31 33 391855 +14319+4948+1406+354+412-4+427-368-253+0+240-232-228-113-468 +mGnP_ed25519 32 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 32 33 387188 +14730+4316+1626+242+54-634-256+0-472-432+10-466+68-136-224 +mGnP_ed25519 33 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 33 33 385989 +16074+4597+1200+161+88-133-16-215-355+355+43-330-583-353+0 +dh_x25519 selected implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair selected 32 41642 +7064+234+9-11-17+22-18-8-60-7+32+14+30-81+0 +dh_x25519 selected 32 115321 +1755+170-69+64+326+230-81-151+0-70-81-151+294-46+294 +dh_x25519 0 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 0 32 41641 +1063+125+166+0+31-32-26+33-33+137-93-26+60-24-15 +dh_x25519 0 32 115279 +995+15+189-38-16-10-92+156+308-72+0+20-10+20-10 +dh_x25519 1 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 1 32 41651 +337+84+25+25-83-36-83-34+22+32+0-106+35-32-54 +dh_x25519 1 32 115291 +620+23-115+0-94-31-109+188+298+324-16+324-16+324-16 +dh_x25519 2 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 2 32 41679 +325+91+21-56-26-102-59-114-88+3+0-75+5+86+31 +dh_x25519 2 32 115321 +732+111-45+167-69+224+0-5+1+147-69+224+0-5-69 +dh_x25519 3 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 3 32 41625 +308+117+47+0+21-75+100-9-71-20-3-1+98-5+28 +dh_x25519 3 32 115487 +514+354+66-69+0+20+128-212-166-236-247-317+128-212+128 +dh_x25519 4 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 4 32 41668 +1006+74+26+0-82-36+22-51-70+4-73+46-71-57+38 +dh_x25519 4 32 115347 +547+220-39-151-119+88-76+88+0+88-76+88-76+88-76 +dh_x25519 5 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 5 32 41654 +263+73-7-21+0-43-91-36-70+91+4+1-1+38+71 +dh_x25519 5 32 115329 +635+239-33+46-48+46+0-89-115+286-54+286-54+286-54 +sign_ed25519 selected implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair selected 32 42626 +6724+219+7-1+88+119+26-23-12+62-29-36-18+0-4 +sign_ed25519 selected 0 45685 +6742+318+158-54-7-16+75+0+40-2+58-27+0+5-94 +sign_ed25519 selected 1 45736 +436+0+35-18+89-3+30-51-30-34+75-27+6+13-32 +sign_ed25519 selected 2 45727 +391+31+90+28+49-41-31-30-45+0-5+49-89-38+5 +sign_ed25519 selected 3 45703 +429+54+15+0-73-5+0-84-20-58-99-5+3+37+46 +sign_ed25519 selected 4 45719 +430+23+43+78-35-45-21-14+22-80+0+65-56-45+58 +sign_ed25519 selected 6 45752 +400+72-52-48-96-42-125+894+193+11+0+25-10-85+10 +sign_ed25519 selected 8 45719 +446+40+36-28+11+0-17-75-109-31+28-22-73+5+33 +sign_ed25519 selected 11 45755 +405-13-43-42+74-44-25+13+52+36-19+0+12-72+9 +sign_ed25519 selected 14 45758 +316+17+23-54+54-8+83+78-12+28-1-64+0-22-38 +sign_ed25519 selected 18 45710 +382+82+63+35+0-8+46-14-3-12-19+18+35-29-12 +sign_ed25519 selected 23 45734 +371+32+75-31-36+62+0-14+20-42-69-9+20+66-27 +sign_ed25519 selected 29 45720 +392+40-13-21-26+51+56+50-25-30-18+12-44+54+0 +sign_ed25519 selected 37 45779 +1147-1-35+99+0-32-66+0+51+73-14-29-101+88+39 +sign_ed25519 selected 47 45781 +368-36-8-14+16+12+19+1-104+0-8-39-14+10+16 +sign_ed25519 selected 59 46485 +590+62+33+0-31+120+46+140-140+56-54-120-123-19-67 +sign_ed25519 selected 74 46480 +359+14-12+64+81-127+0-13+21+18-13-4+18-70-10 +sign_ed25519 selected 93 47207 +447-82+11+40-19-12-12+89+0+45+53-16-41-17+69 +sign_ed25519 selected 117 47256 +337+73-114+31-19-113+67+47-59+0-9-5-43+9+50 +sign_ed25519 selected 147 47254 +228+65-63-3+0-10-35+16+48-5-107-6+32+75+24 +sign_ed25519 selected 184 48005 +523+0-45-42+100-15-73+62-30+34-77+59+36-8+112 +sign_ed25519 selected 231 48727 +519+34+27+70+78+0-103-53+0-5+3+38-16-27-8 +sign_ed25519 selected 289 48761 +496+47-10+1+24+4-108+0+0-35+5-119-9+0+16 +sign_ed25519 selected 362 50213 +560+35-24+42-29-7+12+116-13-62-29+57+0-16+695 +sign_ed25519 selected 453 50993 +641+35-67+42-7-49+79+0-10-20+31+1-10+0-27 +sign_ed25519 selected 567 52434 +566+159-82-170-39-58-21-148+0+12+5+36-83+1+33 +sign_ed25519 selected 709 53895 +709+30+96-47-21+7+1-38+39-59+14-33-52+0-2 +sign_ed25519 selected 887 56008 +688+106-2-10-20-47+27-42-43+34+13-26+0+112+8 +sign_ed25519 selected 1109 58946 +716-18-72-24-50+0+7+26+83+26-27-61+15-63+52 +sign_ed25519 selected 1387 61788 +772+173+40+57+87+12-65-47-21-99-51+13+0-50-67 +sign_ed25519 selected 1734 65342 +872+120+115-15-45-41-5+37+151-80-7+12+115-122+0 +sign_ed25519 selected 2168 70208 +857+255+48+0-9-19+0-45-86-29-38-30+188+1+189 +sign_ed25519 selected 2711 75848 +947+2-5+37+44+29-78-68-100-89+13-130+63+0-28 +sign_ed25519 selected 3389 83472 +732+240+35-89-1+121+19-78+0+30+20-167-120-32-128 +sign_ed25519 selected 4237 92191 +842+88+0-23-63-108+72-134+96-125+8+7+8-200-45 +sign_ed25519 selected 5297 103846 +950+10+73-84-24-130-96-150+105-42+29-90+69+0+968 +sign_ed25519 selected 6622 118235 +929+0-16+64-24-27+158+177-148-132-69-83+32+140+41 +sign_ed25519 selected 8278 136016 +1032+585+41-320-199-9+30+200-111-192+0-158-214+100+193 +sign_ed25519 selected 10348 158015 +669+83+176-55+38+0-53-13-103-44+49+30-191+45-144 +sign_ed25519 selected 12936 185389 +777+310+0+94-146+56-123+127-35-70-169+63-160+199-116 +sign_ed25519 selected 16171 219487 +1102+63+22-25-38+84+18-62-103+0-69+2-46+16-150 +sign_ed25519 selected 20214 263096 +2133-60+0+64-182-165+138+30-45+50-111+58-2+18-69 +sign_ed25519 selected 25268 317293 +2594-103+74-156+2+146+46-192+175-140-38-108+0+15-320 +sign_ed25519 selected 31586 384849 +2256+55+56-49-250-227-17-77-238+1697+667+0-166+45+13 +sign_ed25519 selected 39483 468677 +4110+308+125+117-173-116+45+105-49-10-78+0-29-40+255 +sign_ed25519 selected 49354 574039 +4091-38+245-28-170+1665+614-12+0+15-111-136+40-391+5 +sign_ed25519 selected 61693 705857 +3510+219-357-174+78-50+0-252-342+56+3275+565-97+21-146 +sign_ed25519_open selected 0 158831 +12800+3539+1012+404-7+97+0+82-147-119+228-234-245-97-108 +sign_ed25519_open selected 1 156561 +5545+2511+1104+549-62+167+115-131-72-100+0-155-33+81-119 +sign_ed25519_open selected 2 157860 +5570+2151+1004+441+214+315-19-186+32-115+0-112-240-55-14 +sign_ed25519_open selected 3 158698 +5598+1519+478+352-144+50-154-164+0-264+32-52-144+1170-16 +sign_ed25519_open selected 4 160944 +5675+1780+340+379-258+135-227-101-26+218-387+0-141+10-333 +sign_ed25519_open selected 6 159452 +5298+1699+595+428+288+120-50+189-230-22-90-148-114-82+0 +sign_ed25519_open selected 8 159293 +5759+2438+983+935-110-206+46+10+24-602+0-270-266-502-140 +sign_ed25519_open selected 11 156780 +6128+1980+1112+676+436+446-48-54-110-204-2-30-152+0+6 +sign_ed25519_open selected 14 161498 +5032+1548+330+327-58+268-8+0-10-10+86-90+12-190-108 +sign_ed25519_open selected 18 161012 +5225+2655+2916+589+143+0+261-206-234+140-18-74-230-280-331 +sign_ed25519_open selected 23 158036 +5076+2286+682+497+412-103+251+54+0-119-289-496-476-85-404 +sign_ed25519_open selected 29 159479 +5068+2292+1161+501+17-2+141+0-205+38-359-6-213-271-139 +sign_ed25519_open selected 37 157934 +4865+1321+601+408+6-379-91-94+48-172+0+130-154-389-59 +sign_ed25519_open selected 47 157386 +5117+2800+1182+558+306+173+141-31-20+0-116-45-61-2-338 +sign_ed25519_open selected 59 161708 +6102+1679+373+121+118+0-301+1018-19+162-36-278-186-350-234 +sign_ed25519_open selected 74 159365 +5493+1875+912+720+316+96+68-14-172+0-30-222-276-16-42 +sign_ed25519_open selected 93 159174 +6015+1595+658+546-58+278-220+262-172+0-70-66-210+358-194 +sign_ed25519_open selected 117 158814 +4922+1050+754+424-141+271-159-106+0-87-225+64+138-57-321 +sign_ed25519_open selected 147 160599 +5314+2803+1451+1046+437+203+68-178-105-191-215-414-128+0-298 +sign_ed25519_open selected 184 157004 +5216+1480+735+834+100+0+5-33-206-106-1-277-363+1352-510 +sign_ed25519_open selected 231 158856 +5778+2187+715+611+56+272+273-139-138-34-257-125+0-186-43 +sign_ed25519_open selected 289 160644 +4759+1810+889+492+33-276-70-140-203-38+35-129-57+276+0 +sign_ed25519_open selected 362 161842 +5751+2528+1314+101+163-2-50+0+98-274+4-184-206-47-30 +sign_ed25519_open selected 453 162164 +5532+2400+711+624+31+130-24+94-34+0-217-294-448-304-202 +sign_ed25519_open selected 567 164084 +5195+1497+778+459+92-74-424-100-484+40-362-188-414+0+196 +sign_ed25519_open selected 709 162294 +6824+2593+945+648+179+380-184+152-200-238+0-150-194-118-27 +sign_ed25519_open selected 887 162630 +5515+2003+1072+559+294+94-329-105+0-36-63-42+45-319-280 +sign_ed25519_open selected 1109 164949 +6025+2632+958+671+388+88-27+154-60-72-94+0-210-180-74 +sign_ed25519_open selected 1387 167059 +5396+1959+654+534+426+196-398-416-586-162-174-482-142+12+0 +sign_ed25519_open selected 1734 170495 +4720+1760+967+502+414+350+34-205-463-426-427-313+0-123-318 +sign_ed25519_open selected 2168 172644 +4451+2911+695+462+112+289+0-134-24-52-104+40-180-140-350 +sign_ed25519_open selected 2711 172528 +5448+3044+1240+586+148+43-113-139-111-178+232-93-151-196+0 +sign_ed25519_open selected 3389 178350 +5845+2011+828+286+90+0-82-154-276-118-246+6+68-212-268 +sign_ed25519_open selected 4237 183003 +5213+1795+847-207+277+15+0-45+15-78-118-27+32-85-60 +sign_ed25519_open selected 5297 187562 +5354+1344+663+125+0+75-433-442-54-305-261-332+1445+38-288 +sign_ed25519_open selected 6622 194701 +4756+1725+381+319-46-21+139+116-294-561-98-251+0+359-406 +sign_ed25519_open selected 8278 204827 +5263+1337+1241+243+641-117+337-107-53+0+83-197-397-95-381 +sign_ed25519_open selected 10348 214595 +5381+2149+879+280-182+0-43-112+196-685-15+117-64-402+114 +sign_ed25519_open selected 12936 228116 +6482+1990+1249+769+125-372-366+0-52-252+1087-81+6-156-156 +sign_ed25519_open selected 16171 243674 +6117+1661+0+196-123+32-54+46+42-204-46-91-253-30+229 +sign_ed25519_open selected 20214 270088 +5987+1121+833+427+0-53-539+28+36+132-288-289-307-218-79 +sign_ed25519_open selected 25268 299118 +5892+2078+1508+850+328-229-147-164+73+0+1401-93-219-145-323 +sign_ed25519_open selected 31586 335358 +4882+1623+602+259+8+39-202+204-245-111-140-393+0-374-71 +sign_ed25519_open selected 39483 378413 +4706+1541+680+396+119+23+0-187-55-567-86-194-61-161+2605 +sign_ed25519_open selected 49354 431895 +4799+1618+355+177+384-456+0+29-375-352+107-191-264-648-61 +sign_ed25519_open selected 61693 500446 +4734+1364+562+0+103-71-136-201+2612+2-11-548-215-164+24 +sign_ed25519 0 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 0 32 42547 +1996+248+0+10+30-19-1-81+12+32-7+26-41-8-12 +sign_ed25519 0 0 45718 +3365+159-13-56-35-12+0+42+64+28-71+20+44-25-76 +sign_ed25519 0 1 45760 +653+73+79-58-50+21+0-28-2-1-20-9+9+9+44 +sign_ed25519 0 2 45831 +391+9-5+6-62-17+29-44-1+11+33+30-84-28+0 +sign_ed25519 0 3 45815 +339+48-19+41+24-1+81-6+2+10-57-1+0-16-36 +sign_ed25519 0 4 45804 +383+3+88+1-23-8-5+0-33+10-15-86+14-33+10 +sign_ed25519 0 6 45808 +349+27-25-66+45-42-73-55+0-6+23+21+43-38+4 +sign_ed25519 0 8 45825 +385-50-6+32-9-55+41+1+0+70-62+2-11+10-52 +sign_ed25519 0 11 45790 +376+57-49-70-11+68+24-15+0-26+16-4-4+48+84 +sign_ed25519 0 14 45846 +1171+122+37+1+65-21-38-64-58-37-104+1-38+0+22 +sign_ed25519 0 18 45807 +455+34-8+0+53+114-3+72-20+1303+51-53-44-81-65 +sign_ed25519 0 23 45736 +587+28+37+13-2+12-16+2-38+0-50+0-15-69+9 +sign_ed25519 0 29 45758 +313+82+96-2-38+45-38+58+30+19-2-21-8-18+0 +sign_ed25519 0 37 45744 +544+25-67+66-9-105+68-36-5-19-99+27+0+48+10 +sign_ed25519 0 47 45743 +389+64+30-36-28+0-15+107+49-68+1-29-14-33+6 +sign_ed25519 0 59 46491 +528+77-20-18-10+11-12-29+0+22+67+4+5-70-15 +sign_ed25519 0 74 46546 +637-10+16+103+0-42-68-3+1-37+25+18+43-39-2 +sign_ed25519 0 93 47263 +452+69-59-33-90+36-72-37+69-38+23-61+19+14+0 +sign_ed25519 0 117 47330 +489-13+60-24+0+24-73+56-45-18-72+70+0+6+29 +sign_ed25519 0 147 47307 +489+103+0+24+72+24+79+36-31-9-21-2-55-22-51 +sign_ed25519 0 184 48061 +572+71+15-7-38+0-52-34+124-9+41+13-42-43+35 +sign_ed25519 0 231 48811 +557+36-93-40-59-97+3+18-51+24+0-60+14+31-9 +sign_ed25519 0 289 48834 +597+59-31+45+101+31-21+0-69+7-14-31-71+28-8 +sign_ed25519 0 362 50328 +686+79+10-50+15-99-116+37+110+42-66+0-76-25-89 +sign_ed25519 0 453 51040 +731+99-31-44-26+31+71-86-54+117+47+0+154-48-4 +sign_ed25519 0 567 52560 +601-118-19-41-24-18+4+111+0+54+28+2-26+70-44 +sign_ed25519 0 709 53913 +857+9+8-6-33+15-16-96-4-13+72+0+14-7+34 +sign_ed25519 0 887 56173 +681-34+36-58+27-109-46+1003+110+0+101-88+35-80-93 +sign_ed25519 0 1109 58979 +1241+74-72+18+8+0-19-28+14+31-80-131+26-5-26 +sign_ed25519 0 1387 61824 +948+156-47+7+0+65-26-55-74-61-31+128-41+17+101 +sign_ed25519 0 1734 65418 +940+115+71-117+1-118+47+11-149+0-111-25-23+3-54 +sign_ed25519 0 2168 70394 +1000+141+59+75+0-162-135-24-8-62+85+66+22-20-99 +sign_ed25519 0 2711 75901 +933+226+226+71+45-118-14-71-138-158+11+102-75-12+0 +sign_ed25519 0 3389 83586 +832+488+215+121-5+199-19-64-75-23-55-70+33+0+34 +sign_ed25519 0 4237 92302 +856-11+39+117+41-86-8+0-1-124+54-142+110-4+86 +sign_ed25519 0 5297 104013 +778+116+105-51-99-44-208-4+43+0-47+13-140+37+39 +sign_ed25519 0 6622 118505 +727-100-2+62+0-182+292+44-26-72+258-96-8+224+168 +sign_ed25519 0 8278 136315 +674+219+186-1+92-67+1599+476+22-165-38+0-4-233-115 +sign_ed25519 0 10348 158148 +773+260-4+203-63-31+49-367-349-228+192+0+279-65+112 +sign_ed25519 0 12936 185367 +852+127+0+46-76+9-36-32-148-25+26-159-100+109+30 +sign_ed25519 0 16171 219584 +1005+96-32+83-16-81-94-101+34+125+112-76-113+0+4 +sign_ed25519 0 20214 263221 +1870+289+25-27-174-154-8+129-28-8+87+2685+199-77+0 +sign_ed25519 0 25268 317247 +3557+128+52+170-155+73+47-89+0-297-172+160-175-3-74 +sign_ed25519 0 31586 384924 +2650+79-52+23-31-116+103-297+24+0-138+57+172-318-155 +sign_ed25519 0 39483 469031 +4822+833-167-82+140-171+0+8-197+16-165+48+95-119-142 +sign_ed25519 0 49354 574084 +3774+18+0+135-112-50-275-68-224-321-284+2560+424+28+90 +sign_ed25519 0 61693 706057 +4080+309+597-224-197-105+91-170-114+0+101-139+15-84+1589 +sign_ed25519_open 0 0 158978 +7993+1866+477+263-98+0+93-109-93-115+11-79+19-129-319 +sign_ed25519_open 0 1 158498 +5684+1487+977+353-13+30+50-266-118-228-82+150-232-220+0 +sign_ed25519_open 0 2 158808 +5732+2073+1176+594+708+0-154-8+38+28-16-22-364-50-106 +sign_ed25519_open 0 3 156308 +5146+1472+595+589+177+212+154-51-191-128-216-97-245-354+0 +sign_ed25519_open 0 4 157424 +5334+2083+868+802+204+0-96+68-410+10-242+0-234-14-142 +sign_ed25519_open 0 6 158279 +6383+2193+371+372+200+186-30-18-76+92+0-56-146-436-418 +sign_ed25519_open 0 8 158683 +5873+1720+824+341+0-97-52+97+134+73-44-283-36-267-32 +sign_ed25519_open 0 11 158893 +5075+1562+578+543+30-77-108-170-159-35-174+0-9+19+20 +sign_ed25519_open 0 14 158870 +4923+1744+290+256-42+0+94-42+32+152-391-173-152-366-277 +sign_ed25519_open 0 18 158768 +5069+2034+501+569+50-349-221-223+0+110-343+11-474-370-290 +sign_ed25519_open 0 23 159864 +6376+1875+1011+394+165-51+1819+1-151-180-100+0-226-182-202 +sign_ed25519_open 0 29 158628 +5435+1080+791+755+139-69+82-106-16+0+78-86-16-90-30 +sign_ed25519_open 0 37 158159 +5529+2201+1143+603-11-418-110+159-345-220+0-355+13-200+86 +sign_ed25519_open 0 47 158453 +4966+1045+513+526+204-34-218+32+0-190-261-125-72+132-49 +sign_ed25519_open 0 59 160542 +5467+2070+468+226-307+5+0-80+38-216+24-98-372-162-164 +sign_ed25519_open 0 74 159354 +6046+2188+1035+488+446+0-136-178-262-242-302+509+13-64-199 +sign_ed25519_open 0 93 159374 +5181+1592+909+592-208+266+0-354-200-258+58-268-384+17-321 +sign_ed25519_open 0 117 159701 +5850+1952+826+951-47+60-230+7+153-58-231-91-471-452+0 +sign_ed25519_open 0 147 161362 +4699+1620+1052+453+212+10+0-49+36-253-248-350-450-226-528 +sign_ed25519_open 0 184 160288 +6178+1621+590-14+14-246+174-252+0-298+36-186+100-146-144 +sign_ed25519_open 0 231 160050 +5631+1952+1184+808+215-92+0-104-54-50-130-36+214+22-246 +sign_ed25519_open 0 289 160694 +6860+1414+569+430+223+0-99-80-121+2-29+118-121-118-305 +sign_ed25519_open 0 362 161400 +5572+2180+661+560+71-252+0-183-54+107-81+107-33-289-491 +sign_ed25519_open 0 453 162615 +5402+1680+989+89+238+0-105+105-310-252+143-189-148-218-83 +sign_ed25519_open 0 567 162140 +5393+2453+1001+418-16-44+80-368+152+124-66+0-64-472-114 +sign_ed25519_open 0 709 162710 +5160+1639+982+167+1+188-152+0-163+3-262-27-109-20-128 +sign_ed25519_open 0 887 163308 +5788+1862+668+1079-34+158-55+87-311+58-170-133-45-404+0 +sign_ed25519_open 0 1109 165028 +5888+2338+1257+774-82+388-138-74-104-333+3+0-401+114-171 +sign_ed25519_open 0 1387 167469 +5224+2557+1216+518+276-144+18-244+0-64-192-156-296+74-222 +sign_ed25519_open 0 1734 168931 +5816+1763+704+384+229+338-73+0-195+137-295-141-33-83-295 +sign_ed25519_open 0 2168 168928 +5758+2032+776+93+69+108+0+4-314-106-190-178-346-436-314 +sign_ed25519_open 0 2711 171355 +5799+2184+918+873+1128+170-155-174-51+0-95-47-109-28+49 +sign_ed25519_open 0 3389 176438 +5899+1428+890+644+0+76+70+148-102-106-253-414-115-263-27 +sign_ed25519_open 0 4237 181288 +5207+2461+1031+297+0+62-61+131-86+36-121-69-76-122-43 +sign_ed25519_open 0 5297 187766 +5797+2239+1363+285+268-236+142-100-188-94+148-68-234-78+0 +sign_ed25519_open 0 6622 193406 +4908+1117+409+248-224-160-361-342+78-219-213+0-508+1010+65 +sign_ed25519_open 0 8278 204389 +5501+1852+714+232-442+130-290-295+116-328+0-420+110-436-8 +sign_ed25519_open 0 10348 217167 +5793+1330+910+629-98-65+169-2-80-70+0+37-234-180+136 +sign_ed25519_open 0 12936 231650 +5916+1804+1067+172+206-277-215+0-18+120+391-23-48-238-486 +sign_ed25519_open 0 16171 247218 +5824+1837+428+427-7+0-245+1374+12-224-143-308-230-302+16 +sign_ed25519_open 0 20214 269228 +5797+2237+1305+1150+569-201+464-14+0-101-153-100-217+516-161 +sign_ed25519_open 0 25268 298188 +5422+1558+566+156+433-548-54-286+96+138-78-281-63+0-296 +sign_ed25519_open 0 31586 333702 +3357+1275+1329-34+325+109+0-1001-165+70-118-255-226-436+68 +sign_ed25519_open 0 39483 378223 +6011+1888+788+846+3+28-247-6-41-174-285-192+0+181-142 +sign_ed25519_open 0 49354 432235 +6331+1272+449+1913+716-20+283-280+0-193-21+239-256-316-220 +sign_ed25519_open 0 61693 499178 +6451+1737+643+63+201-62+163+0-128-295-53-11-106-31+2077 +sign_ed25519 1 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 1 32 42607 +2380-11+35+154+27+46+12-23-16-42+0-28-58+82-16 +sign_ed25519 1 0 45666 +2395+164+114+35+0+30-96-81-77-6+24+7-53-40-5 +sign_ed25519 1 1 45686 +585+23+29-28+44-29-53-50-37-37+0+31-48+25+56 +sign_ed25519 1 2 45676 +360-41-25+32-50-1-46+33+30+0-2+10-75+0+18 +sign_ed25519 1 3 45665 +309+38+99+94+61-6+8-31-32+64-43+0-1-10-7 +sign_ed25519 1 4 45681 +374+20-15-87+31-39+0+39+1-16+42-30-37-1+9 +sign_ed25519 1 6 45680 +287-12-26+54+55+9+151-34+0-28-34+49-17+58-27 +sign_ed25519 1 8 45690 +267-38+73-14+32+0+28-7+17-61+27-27+115-42-11 +sign_ed25519 1 11 45643 +344+52-7+0-17-5+6-67+46+67+32-13-38+76-13 +sign_ed25519 1 14 45666 +301-3+21+16+21+31+54-11+111-19-29-69-23-2+0 +sign_ed25519 1 18 45665 +373+76-28-4+41-89+58+32+65+0+45-13-10-39-67 +sign_ed25519 1 23 45679 +333+0+65-12-6-32+34+4-9+72-68+15-41+5-68 +sign_ed25519 1 29 45692 +246-15+16+19-55-101-44+159-76+6-1+34-57+0+4 +sign_ed25519 1 37 45643 +396+43-41+8-21-1-35+37+0-40-98+85-41+44+4 +sign_ed25519 1 47 45700 +260-59+35-112-85+0+28-31-32+23-57-35+13+1082+133 +sign_ed25519 1 59 46414 +1780-45-35-11+24-63-17+5-41+28+38+74+2-7+0 +sign_ed25519 1 74 46405 +561+102+104+90-3-24-5-37+87-54-11+43+10-39+0 +sign_ed25519 1 93 47161 +488+58+24-27-91-144+68+0-68-23+55+47-47-15+0 +sign_ed25519 1 117 47226 +394-149-27+15+5+28-35-55+0-12-51+13+32+39-1 +sign_ed25519 1 147 47188 +466+72-27+101-1-47+27-60-93+0-52+39-91+10+16 +sign_ed25519 1 184 47946 +331+56-55+20+46-4-106+43+74-54+0-53+104-8-64 +sign_ed25519 1 231 48688 +371+47+19+68+0-51-18+14-37+64+18-48-87-122-32 +sign_ed25519 1 289 48748 +654+49+68+102-53-21+88-25-27+42-94+0+17-40-115 +sign_ed25519 1 362 50186 +635-66+76-2+0+19-74-29+38+9-17+49-58-41+60 +sign_ed25519 1 453 50876 +685+128+40+99+110+89-12-34-67+5+0-17-47-20-4 +sign_ed25519 1 567 52395 +614+91+23-64-24+0-54+53+173+1-31-3-13-42+0 +sign_ed25519 1 709 53814 +682+127+0+120-46-38-32-16-94+14-32+5+33+31-2 +sign_ed25519 1 887 56001 +686+71-37+9+66-9-52-73+0-71+1+90+49-57-75 +sign_ed25519 1 1109 58889 +764+149+46-67-87-63+84-73-45-19+44+0+10-15+23 +sign_ed25519 1 1387 61779 +896+43-23-43-79-106+102-43-3+10+139+0+1+37-99 +sign_ed25519 1 1734 65329 +773+33-50-113+80-95-104+9-80+0-111+2368+263+130-58 +sign_ed25519 1 2168 70288 +1216+64-83-32-14+10-142-71-149-81+51+29+0+134+26 +sign_ed25519 1 2711 75871 +791-1-84+0+45+85-58+33+4+29+51-80-59-26-109 +sign_ed25519 1 3389 83424 +794+80+98+46-90-40-219-21-78-42+0-101+146+52+109 +sign_ed25519 1 4237 92265 +838+69+26+0-95+79-235+77-19+32-183-26-68-62+4 +sign_ed25519 1 5297 103877 +997-57+34-70+83+39+0-52-56+103-53+37-35-143+51 +sign_ed25519 1 6622 118398 +810-96+294+36+7-58-161+10+23+0-11-130-132+19-34 +sign_ed25519 1 8278 136148 +667-58+33+42-13-70+81-74+186+0+66-58-17-14+238 +sign_ed25519 1 10348 158111 +678+279+28+129-31+0-176-212+8-209-76-176+1610+63-151 +sign_ed25519 1 12936 185521 +778+215-31-147+223+163-141-55-9-26+0+47+75-6+222 +sign_ed25519 1 16171 219498 +801+34+128-113-106-55-166-234-251+142+89+52+0-147+9 +sign_ed25519 1 20214 263174 +1728+95+47-63-40-56+0+30-39-84-24+44+77-1+199 +sign_ed25519 1 25268 317347 +1978+0-137-54+86+1126+616-91-107+42-239+16+155-79-197 +sign_ed25519 1 31586 384813 +2794+174+75-168-20-81-110-117+109-223+107+0+14-12+143 +sign_ed25519 1 39483 468805 +3438+260+57-42-20-155+138+1413+958+0-26-19-45+2-111 +sign_ed25519 1 49354 573943 +3866+314+193-258+0-168-109-125+127-18+42-69-146+17+183 +sign_ed25519 1 61693 705806 +4155+197-342+97-312+52-190-131+267-129+110-156+0+248-70 +sign_ed25519_open 1 0 157629 +8750+3003+752+308+244+182-64-104-203+222-254-86-116+0-72 +sign_ed25519_open 1 1 159898 +5438+1834+931+479-173-88-18-234+140+104+0-76-232+96-172 +sign_ed25519_open 1 2 158950 +5419+1942+639+450+29-69+295-153+302+0-89-307-208-257-214 +sign_ed25519_open 1 3 157633 +5656+1564+783+421+206+147-79+334-3-208-211-15-158+0-95 +sign_ed25519_open 1 4 158750 +6116+1956+930+706-151-254+12+226+302-73-51-180+0-316-248 +sign_ed25519_open 1 6 158949 +4974+2127+692+249+167+0-48-109+11+126-254-211-449-100-216 +sign_ed25519_open 1 8 160762 +4636+2310+1183+721+1797+102-198-104-70-44-108+0-290-88+12 +sign_ed25519_open 1 11 158971 +6079+1551+1125+890+357-184+29-305-84-296+66-390-172-190+0 +sign_ed25519_open 1 14 158036 +5303+2067+934+566+32+0-158-12+44+148-162-230-60-196-114 +sign_ed25519_open 1 18 158650 +5475+1784+721+246+315+0-43-156-267-72-53+142+21-106-171 +sign_ed25519_open 1 23 160572 +4675+1407+1155+259+0+21+126+33-60-105-94-243-218-275-297 +sign_ed25519_open 1 29 158025 +5138+2213+1009+539+306+60-104-256-63-413+1430-225-366-403+0 +sign_ed25519_open 1 37 159218 +4336+1490+769+308-88-78+42-146-216-642+240+236-46-266+0 +sign_ed25519_open 1 47 157956 +5541+1945+1124+370+234+0-132-174+390+76-192-132-120-106-236 +sign_ed25519_open 1 59 157517 +6050+1972+1652+956+115+0+193+138-323-184-161-230-263-174-103 +sign_ed25519_open 1 74 161168 +5114+1415+523+288+150-12+0-68-274-114+148-272-20-358+92 +sign_ed25519_open 1 93 160333 +5363+2351+852+309+41+0+24-73-158+68-284-121-302-359-160 +sign_ed25519_open 1 117 160106 +5975+2046+550+722+12-2+0-76-238-38+46-36-70-114+284 +sign_ed25519_open 1 147 157987 +4976+2037+832+280-346+21-154-81-134+121-123-25-334+0+54 +sign_ed25519_open 1 184 160778 +4858+2463+623+388-60-12-262-56-18+10+0+30-260+106-318 +sign_ed25519_open 1 231 162390 +5841+2010+865+307+0-14+350-40+66-50-36-138-232-102+62 +sign_ed25519_open 1 289 160191 +5894+1028+166+656+252-102+132+118-26+0-78-388-298-248-288 +sign_ed25519_open 1 362 160209 +5303+1694+1048+611+1469-32-344+225-208-236-342+568+0-168-247 +sign_ed25519_open 1 453 161461 +5078+1585+753+77+186-2-26-116+40-84-6+0+60-128-190 +sign_ed25519_open 1 567 161802 +4564+1016+20+648-10+142-60+0+14-78-30+10-312-382-330 +sign_ed25519_open 1 709 163542 +4849+2388+1084+858+218+42+0-290-16-418-302-162+14-374-296 +sign_ed25519_open 1 887 164024 +4719+1953+1126+343+66-256-415-131+0-318+132-290+22-413-357 +sign_ed25519_open 1 1109 166166 +5421+2513+1328+296+0+179+99+1394-52-246-226-490-312-506-614 +sign_ed25519_open 1 1387 168846 +5222+938+0-224-134-340-174+157-139+62+172-39+161-46+40 +sign_ed25519_open 1 1734 168596 +5926+2482+1067+635+94+0+188+59-403-242-367-452-186-61-232 +sign_ed25519_open 1 2168 171221 +5095+2004+1129+371+510+0+199-22+97-41-333-125-375-65-120 +sign_ed25519_open 1 2711 171652 +4952+2035+1071+498-268+194-112+232+0+138-132-110-28-288-284 +sign_ed25519_open 1 3389 175385 +5151+1688+769+419+413+367+0+57-210-23-246-94-205-285-239 +sign_ed25519_open 1 4237 181598 +5205+1175+237+168+117-66-66-132-270-7+8-133+292+0-72 +sign_ed25519_open 1 5297 190196 +5262+2040+526+353+469+34+32-224+0-380-8-16-132-200-90 +sign_ed25519_open 1 6622 194792 +5516+748+321+109-206-394-184-201+297-98-192-300+0+31+224 +sign_ed25519_open 1 8278 203363 +5305+1734+492+351+152+118-163-56+0-293-355+1566-18-510-376 +sign_ed25519_open 1 10348 215508 +5365+1863+499+697+0-12-149+17-176-90+197+95-257-519-176 +sign_ed25519_open 1 12936 231085 +5801+1972+1035+250+174+301+0-56-74-198-194-126-362-253+9 +sign_ed25519_open 1 16171 245403 +6356+1344+128+549-151+0+252-30+113-319-160+26-490-37-119 +sign_ed25519_open 1 20214 271586 +6107+2292+280+167-253+27-120-397+0-207-404-49+0-384+64 +sign_ed25519_open 1 25268 297426 +6034+2020+1058+543-4+131-66-147+8+34-191-151-11+0-372 +sign_ed25519_open 1 31586 332307 +3618+1799+871+732+349-22-735+21-463-644-670-550+1167+0-406 +sign_ed25519_open 1 39483 376511 +4872+2449+988+808+262-303-281-47+330+0-174-137+100-367-175 +sign_ed25519_open 1 49354 431171 +4897+1856+397-231-104-576+139-95-356-334-206+2572+225+67+0 +sign_ed25519_open 1 61693 499839 +5583+1077-240+121+297+91+79-205+0-387-369-218+224-258-230 +sign_ed25519 2 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 2 32 42581 +2251+54+49+115-13-4-49-7+9-41+0+30-57+48-18 +sign_ed25519 2 0 45821 +1576+127+1142+56+3-88-24-41-61-5-11-28+0+34+14 +sign_ed25519 2 1 45750 +765+50-76+39-39+47+4-26+0-47+26-2-7+21-92 +sign_ed25519 2 2 45735 +281+47+62-17+0+7-34-36+14+38-27-40+9-57-8 +sign_ed25519 2 3 45775 +435+42-36-11-24-14-22-31+52+12+0+29+29+16-58 +sign_ed25519 2 4 45756 +232-30+66-51-117+50+101+11+29-109-38-72+28-48+0 +sign_ed25519 2 6 45769 +307+3+9+31+61+26-34-3-5+0-18-1-3-110+53 +sign_ed25519 2 8 45757 +222-11-37-4-13+20-26-14+90+41+0-67+28+56+62 +sign_ed25519 2 11 45804 +294+15-104-10+8+14+0-35-46-55-75-16+25+10+31 +sign_ed25519 2 14 45763 +314-13-13-10+30-38+36+53-70-45+52+11+0-27+93 +sign_ed25519 2 18 45740 +216-59+33+51-40-4+38-26+50+0-20-7+145+25-22 +sign_ed25519 2 23 45738 +171+94+106+0-13-31+10-24-78+9+33-8-15-23+29 +sign_ed25519 2 29 45773 +118+40+4+8-34-14+20-50+40-98+55-35-42-118+0 +sign_ed25519 2 37 45740 +354-5-20+82+22+40+13-10+0+84-72-20-10+11-17 +sign_ed25519 2 47 45766 +335-23+37+22-3+0+22-74-9-119+6-88-46+4+71 +sign_ed25519 2 59 46508 +541+22-26+0+154+80+31-38-37+8+79-11-44-36-73 +sign_ed25519 2 74 46555 +308+74-17+12+6-69-12-4-7+4-100+8+0-78+77 +sign_ed25519 2 93 47306 +289+2-52-44+0+17+51+3-36-16-61-18+38-73+148 +sign_ed25519 2 117 47340 +369+100-122-18-4+152-16-78+31-9-80+19+0+2+800 +sign_ed25519 2 147 47310 +1572-6-13+16+0+18+88-25+0+12+110+140-79-8-9 +sign_ed25519 2 184 48107 +483+27-12+12+21-40+0-42+100+9-17+43-20-23-55 +sign_ed25519 2 231 48819 +578+72-37+84-17-49-10+9-4+0+27+39-57+56-4 +sign_ed25519 2 289 48819 +842+90-41-86-68-53+47-108+60+35-3+0-35+50+18 +sign_ed25519 2 362 50328 +536+33+61+35-48+9-23-14-54+40-112+0-5+33-47 +sign_ed25519 2 453 51071 +666-118+20+0+18-98+10-51+60-12-84+4-61+18-16 +sign_ed25519 2 567 52560 +592+50-29+3+14+60-48-37+46+0-40-9-49-64+35 +sign_ed25519 2 709 53936 +862+57+14+17+0+51-34-3-11+59+43-40+0-38-53 +sign_ed25519 2 887 56146 +775+50+7-5-20-19-65+0+40+24-34+25-66-18+42 +sign_ed25519 2 1109 59015 +855+0-154+64-39-8-79-54+31+44+2-65+0+23-71 +sign_ed25519 2 1387 61856 +1026+36-25+52-49-6-14-14-86+13-40+46+0+81+29 +sign_ed25519 2 1734 65409 +976+148-106-43+0-104-69+39-31+100+49+22-44-41+79 +sign_ed25519 2 2168 70415 +1173+160+55-20-61-59-56-42+0+18-42-33+63+143+14 +sign_ed25519 2 2711 75904 +1072+171-18+4-55-11+2+0+88+76+21-130-103-55-124 +sign_ed25519 2 3389 83679 +613+83-4+195+1106+133+74-168-93+49-117-125-35-119+0 +sign_ed25519 2 4237 92353 +898+77+45-76+11-68-15+0-57-31-34-18+40+9+1 +sign_ed25519 2 5297 103971 +748+206+56+26+0-63-70-55-30-2-121-9+20+34+142 +sign_ed25519 2 6622 118410 +738+260+0+281-56+35-53-82-46-46+86+9-30+133-19 +sign_ed25519 2 8278 136433 +241+121-44-161-277-219+171+117+212-118+24-202-272+0+7 +sign_ed25519 2 10348 157961 +808+121+131-36-163+0-190+99+257-93-91+145-148+99-119 +sign_ed25519 2 12936 185494 +839+16+94-83-61-70+113-67+35-183-30-75+0+1037+144 +sign_ed25519 2 16171 219455 +1425+82+41+83-105+0+127-98+99-56-9+132-6+0-9 +sign_ed25519 2 20214 263117 +1546+170-100+130-155-114-125+116+100-41-126+291-131+34+0 +sign_ed25519 2 25268 317350 +2120-17+0+100-75+19-25+95-127+37+97-36-9+142-22 +sign_ed25519 2 31586 384992 +3289+154+150-26-76+56-192+132-300+0-28+114-222-190+26 +sign_ed25519 2 39483 468991 +3382+201+139+32+121-96-68-136-250+0-96-182+130-77+1403 +sign_ed25519 2 49354 574120 +3660+131+0+91+189-172+28-121+26-135+77-270-110-272-121 +sign_ed25519 2 61693 706086 +4693+393-202+31+2329+1181+208-312-214-18-78+144-95+0-94 +sign_ed25519_open 2 0 158053 +6850+1308+466+0+25-137-125+87-167-67+107+59-145-91-83 +sign_ed25519_open 2 1 158069 +5309+1430+663+569-134-65-197+99-51-172+47-241-39+0+274 +sign_ed25519_open 2 2 160448 +4595+1514+1257+2141-261+78-350+184+0+183-154-14-226-71-82 +sign_ed25519_open 2 3 158840 +5559+2062+1392+517+0+163+71-76-46-344-66-178-198+184-376 +sign_ed25519_open 2 4 158398 +5236+1233+569+478+11+216+0-307-101-488+94-19-339-268-214 +sign_ed25519_open 2 6 159499 +4843+2112+874+558+329-138-83-1-131-37-187+127+214+0-31 +sign_ed25519_open 2 8 157373 +5215+1448+899+155+305+0-128-154+26+210-320-144-268-304-438 +sign_ed25519_open 2 11 158156 +5365+1282+832+446-164-174+86+120+0+1444-306-458-432-442-462 +sign_ed25519_open 2 14 157573 +4777+1122+576+296+280+0-68+168-188-240-134+106-470-330-246 +sign_ed25519_open 2 18 159154 +5638+2174+1066+474+382+360+0-100-208-28-160+0+256-132-190 +sign_ed25519_open 2 23 157988 +5714+1595+959+501+18-29-1+0-164-59+71+72-131-197-134 +sign_ed25519_open 2 29 160517 +4290+1607+559+325+115-167-150+0-154-116+80-36-140+36-96 +sign_ed25519_open 2 37 159219 +5367+1786+565+386+321+10+111-20-25-45-69-174-87+0-135 +sign_ed25519_open 2 47 157420 +5622+2368+1031+752+568-89-264+117-52-151-130+0-43+27-231 +sign_ed25519_open 2 59 158976 +4930+1125+427-94+0+236+156-240-58+122-84-341-490+27-474 +sign_ed25519_open 2 74 160796 +4869+1689+1149+711+40+0-3-55+115+107-144-210-277-247-337 +sign_ed25519_open 2 93 157931 +5463+1378+776+700-44-1+100+17-104-238+0+42-182-90-259 +sign_ed25519_open 2 117 160117 +5023+2555+1349+290+2-191-119-228+0+7-155-66+98-113-145 +sign_ed25519_open 2 147 159802 +5166+1385+1048+468+1225+358+0-70+84-172-76-60-224-96-38 +sign_ed25519_open 2 184 158605 +6500+2760+1567+1181+450+348+147+0-315-327-275-478-228-4-344 +sign_ed25519_open 2 231 161426 +4713+1950+604+612+83+52-4+322-102-26+0-54-196-82-152 +sign_ed25519_open 2 289 160514 +4961+1572+760+246+566+462+0-82-26-364+0-57-507-401-277 +sign_ed25519_open 2 362 161311 +5672+1786+1034+497+222+0-229-131-203-173-11-24+143+105-90 +sign_ed25519_open 2 453 159804 +6290+2270+1131+594+299-61+181+0+913-124-259-372-382-402-330 +sign_ed25519_open 2 567 162483 +5265+2094+988+619+217+117-140+67-217+0-138-359-115-68-264 +sign_ed25519_open 2 709 162203 +4542+1816+1703+625+0-75+159+12-89-166-55-132-55+75-195 +sign_ed25519_open 2 887 163072 +5801+2211+1039+685-96+21-65-2-82-42-122+192+30+0-54 +sign_ed25519_open 2 1109 166834 +5160+1527+989+223+323+21-158-220-155-147-102+0+18-262-288 +sign_ed25519_open 2 1387 167707 +5303+2112+1315+866+99-117-85-313-212-102-487+365-479+10+0 +sign_ed25519_open 2 1734 168600 +5792+2152+1070-79+73-71+0-242-212-2+141-247+28-37+17 +sign_ed25519_open 2 2168 169945 +4688+2479+1461+683+548-72-84-98-102-177+0+109+7-201-7 +sign_ed25519_open 2 2711 173619 +5470+2168+843+283-48+43+0-87-34-151+34+7-44-23-158 +sign_ed25519_open 2 3389 179077 +6278+2033+242+45-117-126+32-73-73+0-22-263+59-26+14 +sign_ed25519_open 2 4237 180786 +5524+1883+695+357-299+5-25+656-96+17-92-136+0-92-118 +sign_ed25519_open 2 5297 188735 +5518+952+786+245+80+115-436+38-37-211-264+0-58-21-92 +sign_ed25519_open 2 6622 195485 +5742+1977+601+513+216-29+114-4+11+0-201-555-81-453-235 +sign_ed25519_open 2 8278 200125 +5767+1706+426+425-24+111+9-135+0-234-382+228-447-151-502 +sign_ed25519_open 2 10348 215464 +4999+1492+880+532-140-11+162-310-195-295+1689+0-172+14-492 +sign_ed25519_open 2 12936 227768 +5942+1744+560+372+150-16+0+4-16-42+230-42-94-256-293 +sign_ed25519_open 2 16171 245899 +5750+1392+185+299+0-336-252+17-95-381-40+4+15-172-46 +sign_ed25519_open 2 20214 269360 +5084+1538+766+485+200-258-419-241-83-252+0-296+18-408+1387 +sign_ed25519_open 2 25268 298686 +5220+1200+706+178+23-407-164-31-145+248-197-151-40+0+28 +sign_ed25519_open 2 31586 334586 +4087+1785+938+768+458-23-333-26-317+33+0-74-303-355+40 +sign_ed25519_open 2 39483 377898 +4620+982+0+1050-642-913-285-284+55+413-117+169-948+209-94 +sign_ed25519_open 2 49354 430723 +5334+1739+687+283+244-157+32-72-23-307-151-216+0+182-230 +sign_ed25519_open 2 61693 500600 +8200+2379+732+77+169+365+0-208-132-116-185-151-136+260-181 +sign_ed25519 3 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 3 32 42620 +1920+5+49+101-71+14+96-25-6-55+0-45+2-71-88 +sign_ed25519 3 0 45664 +818+69-22-43+59+26+17+0-4+19-32+50-38-7-42 +sign_ed25519 3 1 45727 +329+86+38+37+10-105+63+0-20-83+15-30-34-27-8 +sign_ed25519 3 2 45712 +392+42-49-27+0-10+100-37+103+4-76+23-1+49-41 +sign_ed25519 3 3 45732 +277-15-13+7-77-27-40-8+51+0+16-9+18+22+102 +sign_ed25519 3 4 45685 +321-13+17+83-28+35-92+0+936+298-48-7-59+36-29 +sign_ed25519 3 6 45697 +197+30+12+0+17+99-4-11-23-26-74+89-8+1-17 +sign_ed25519 3 8 45670 +421+151+77-13+103-51+18-67-35-127-115-10+41+89+0 +sign_ed25519 3 11 45711 +212+13+0-61+22-62-65+39+55-49+40-161+41-79-92 +sign_ed25519 3 14 45681 +390+93+22-52-3+0+58-21+6+19-90-18+5-42-4 +sign_ed25519 3 18 45707 +363-43-67+2-28+27-6-27+3-91+0+25+8+22-2 +sign_ed25519 3 23 45696 +266+5-4+62-20+0-14-63-42+75-36+18+39-50+5 +sign_ed25519 3 29 45727 +408+16+18+9-57-82+9-61-47+0-62+99-23+17-55 +sign_ed25519 3 37 45766 +316+2+99+46+0+16-37-106-14+24-51-88-58+37-43 +sign_ed25519 3 47 45730 +112+0+3+49-37-43+35-18+53-39-35+95-6-82+6 +sign_ed25519 3 59 46428 +528+38-27-51-6+53-43+79-32+7-82+60-16+48+0 +sign_ed25519 3 74 46453 +519+149+0-13+26+23+10+62-77-81-74-26-31+64-124 +sign_ed25519 3 93 47182 +446+216-89+88-27-19+8-14+50+63+0-39-12-34+51 +sign_ed25519 3 117 47240 +444+78-18+5-50+59+75-17+0-52+23-54-48+42-91 +sign_ed25519 3 147 47245 +289-1+36-28-24-26+11+0+14+9-116+1-11-68+42 +sign_ed25519 3 184 47955 +587+36+19-10+16-94-17-11+64-31-14+1-1+0+61 +sign_ed25519 3 231 48711 +421+140+52-14+67+56-7-43-37+42-48-49-28+0+26 +sign_ed25519 3 289 48711 +588+88-34+149+24+5+1-39-70-47-86-116+20-25+0 +sign_ed25519 3 362 50211 +396+1206+217+70-81+21-25-10+23-42-51-18+34-46+0 +sign_ed25519 3 453 50989 +616+17+41+0-63+50-74-69+16-120-151+32-84+62-117 +sign_ed25519 3 567 52464 +1230+185-6+14-22-41+3+20-119+0-67+14+37-148-22 +sign_ed25519 3 709 53928 +742+100+135+65-120+0-51-48+6-53+26+36-98-41-35 +sign_ed25519 3 887 56014 +737+119+41-17-37+44+0+75+15+20-15-58-37-13-60 +sign_ed25519 3 1109 58937 +853+21-8+42-77-50+22+6+194-9-145+1-76+0-1 +sign_ed25519 3 1387 61782 +942+167-5+174+173-19-37-29-27+72-17+0+14+67-15 +sign_ed25519 3 1734 65368 +1078+115+34-147+0-30+24-105+23-94+1-62-1-31+15 +sign_ed25519 3 2168 70257 +888+122+165+204+0-1-42-5+89-18-27-158-20+94+116 +sign_ed25519 3 2711 75840 +903+156-11+124-44-41-108+24-53+104+64+0+32-20-71 +sign_ed25519 3 3389 83559 +748+212+45-17-68+254-42-56-58+45+0+41-157-112+123 +sign_ed25519 3 4237 92159 +852+88-51+0-17-6+117-8+119-52+22-94+4-53+140 +sign_ed25519 3 5297 103877 +949+44+23+0+31-149-178+1470+984-69-44+94-133-94-88 +sign_ed25519 3 6622 118318 +954+168-144+43-105-75+68+232-108+0-6+203-89+60-48 +sign_ed25519 3 8278 136210 +736+202+60-359-189-245+3-33+0+31-271-219-79+32+41 +sign_ed25519 3 10348 158027 +599+63+57-166+101-2+0+111+76-120+76-181-28-207-34 +sign_ed25519 3 12936 185457 +666+105+139+36-172-134-102+113-213-22-175+0+75-109+104 +sign_ed25519 3 16171 219617 +1173+208-48-228+67+30+22-200-2-23+0-77+1215+466-25 +sign_ed25519 3 20214 263151 +1750-164+0-359-201+100-149+140-291+22-141+108+17+17-23 +sign_ed25519 3 25268 317246 +2366+149+0+19-4-61-124+81-8-173+22-72+67-92+250 +sign_ed25519 3 31586 384750 +3135-9-368-74+22-226+123+0+2057+48+19-151-35+20-2 +sign_ed25519 3 39483 468731 +3698+176+210-203-95-19-175+0-264+57-79+189+46-142+23 +sign_ed25519 3 49354 574034 +3959+169+101+0+2835+152-1-104+39-326-285+132-223-230-137 +sign_ed25519 3 61693 705711 +3705+333-60-144-144-132+0+133-32+3025+712-70+487-68+115 +sign_ed25519_open 3 0 157153 +7310+1772+675+432+280+240-50-22+76+0-34-60-8-196-16 +sign_ed25519_open 3 1 157747 +5156+1371+647+133+109+94+0-76+136-542-748-618-576-120-712 +sign_ed25519_open 3 2 160630 +5252+1897+1191+738+641+248+163-130-44-252-196+0-233-113-431 +sign_ed25519_open 3 3 158747 +4605+1567+336+375-312+35+0+8+431-383-256-178-269-197-226 +sign_ed25519_open 3 4 160505 +4506+2075+1249+832+257+134-38+31-47-24+0-50-255-169-230 +sign_ed25519_open 3 6 157818 +5981+1599+1274+382-29-124+120+0-3-16+110-220-166-60+106 +sign_ed25519_open 3 8 157004 +5236+2014+936+950+283-61+0+26-105-49-50+178-295-103-172 +sign_ed25519_open 3 11 160742 +5325+2088+1129+696+306+4+0-262-38-254+118-26-162-422-18 +sign_ed25519_open 3 14 157912 +5484+1922+547+320-40-144-18-206-178-112-146+92+62+0+1322 +sign_ed25519_open 3 18 157824 +4736+2210+1054-39-203-395+48+0+67+185+80-258-449-49-210 +sign_ed25519_open 3 23 158950 +4796+1946+1159+463+471-174-21-156+0-2+53-137-72-200+72 +sign_ed25519_open 3 29 158578 +4482+1841+721+438+78-44-92-52+170-50-104+28+0-34-96 +sign_ed25519_open 3 37 159665 +4806+1703+812+187+126+54-169+205+0-78-334-113-101-105-361 +sign_ed25519_open 3 47 158111 +5904+2042+1301+687+36+0-167-67-14+152-199+43-108-38-45 +sign_ed25519_open 3 59 159578 +5193+1416+724+1007+86+106+0+45-54-465-480-377-526-581-546 +sign_ed25519_open 3 74 159975 +5713+1853+1319+679+130-323-242+171-280+0-9-284-273+372-34 +sign_ed25519_open 3 93 159070 +5760+2587+1666+1184+628-44+70-32+182-74-92-60-296-40+0 +sign_ed25519_open 3 117 158556 +5658+1773+979+724+408+4-78-10+74-132-154-144-92+0-258 +sign_ed25519_open 3 147 161205 +4697+1078+671+228+18-291-380-85+0-583+98-99-198+198-375 +sign_ed25519_open 3 184 159922 +4973+1717+854+872+228+80-308-172+0+641-236-397-375-329-205 +sign_ed25519_open 3 231 160113 +5305+2079+575-149+51+83-327-303+79+32-209-28+0-284-210 +sign_ed25519_open 3 289 161922 +4831+1309+231+372+136-154-31-82-105-242-275-135+89+42+0 +sign_ed25519_open 3 362 161426 +5406+1984+744+574+0+200-32+184-76-300-192-200-264-328+202 +sign_ed25519_open 3 453 162516 +5005+1433+659+607+526+68-118+164-4+0-10-49-211-375-185 +sign_ed25519_open 3 567 162715 +5312+1990+736+595-24+62-176-468-156-466+182-114+0+287-79 +sign_ed25519_open 3 709 159734 +4997+1599+693+402+62+142+0+0-298+186-298-166-114-64-314 +sign_ed25519_open 3 887 164386 +5487+2153+1016+542+413+142-136-173-84-6+0-306-223+23-241 +sign_ed25519_open 3 1109 166091 +5547+1935+1148+0-55+308+142+1-79-52+136-181-325-314-28 +sign_ed25519_open 3 1387 165599 +6002+1930+755+523+0-162-90+24+74-150+86-86-174-68-66 +sign_ed25519_open 3 1734 169200 +4974+2407+1208+460+56+0-174-140-118+40-48-160-202-102+1291 +sign_ed25519_open 3 2168 174082 +5094+2064+636+63+368-64-37+0+18-121-224-47+79-26-201 +sign_ed25519_open 3 2711 173555 +5007+2241+1544+674+0+94-143+100-265-172-402-245+22-205-399 +sign_ed25519_open 3 3389 177798 +5290+1372+614+255+181+79-496-146-355-157+0+84-367-281-158 +sign_ed25519_open 3 4237 183681 +4340+1009+644+306+193-219-12+152-253-317+0+144-91-301-202 +sign_ed25519_open 3 5297 188112 +5204+1720+541+640+0-48-84-178-58+1318+134-12+13-176-136 +sign_ed25519_open 3 6622 195311 +6060+2086+995+679+471-209+0+350-97+457-467-107-549-555-55 +sign_ed25519_open 3 8278 203514 +5844+2092+572+382-153+23+57+332-253-87-92-257-178-407+0 +sign_ed25519_open 3 10348 215898 +5492+2530+1775+1155+784+91-550-120-386-26-178+0-441+33+0 +sign_ed25519_open 3 12936 231829 +4908+1046-17+0+3+167-98+1390+52+204-450-98-248-441-163 +sign_ed25519_open 3 16171 246348 +5843+1840+593+40+38-132-130+3+167+0-154-230-206-119-7 +sign_ed25519_open 3 20214 269696 +6096+2415+907+608+235-226+0-225-316+100+110-181-349-17-201 +sign_ed25519_open 3 25268 299660 +4745+928-229-297+0-141-335+1494-146+226+79-132+211+230-62 +sign_ed25519_open 3 31586 334810 +4012+1632+739+68+0-261-250-124-249-360+81-56+25-297+79 +sign_ed25519_open 3 39483 378778 +4323+1086+499+113+115-451-177+0-178-360-189-379+2571+111-435 +sign_ed25519_open 3 49354 431963 +5917+2304+875+452-167+178-55-249-76-73+0+161-94+167-37 +sign_ed25519_open 3 61693 500239 +5688+1891+772+304-2-269+2654+43+280-303+0-299-281-38-242 +sign_ed25519 4 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 4 32 42558 +2543+74+86+22-54-32-49-11+0-94+62-46+45+33-3 +sign_ed25519 4 0 45763 +1777+126+20+34-22+25-19-13-4-75-18-3+39+0+7 +sign_ed25519 4 1 45806 +547+56-11+11-40-9+0-3-79+60+10-35+2-54+39 +sign_ed25519 4 2 45825 +300+54-22+0-12+32-62-24-22-49+28+10+15+22-25 +sign_ed25519 4 3 45810 +217-59+17+84-31+0+16-53-94+24-21-42-39+38+16 +sign_ed25519 4 4 45810 +300-50-36+35-54+0+37+56+0+15+14-8-14+7-19 +sign_ed25519 4 6 45805 +174+27+17+0-11-42-27+13+30+22-22-76-28-5+12 +sign_ed25519 4 8 45791 +391+24-17-40-3-3+32-55-13+26+0+2-14+27+40 +sign_ed25519 4 11 45789 +367+89-49-4-5+0+2+51+7-5-10-11+9-27+10 +sign_ed25519 4 14 45824 +142-27-57+6+6-65-98-41+799+127+25-111+7-30+0 +sign_ed25519 4 18 45796 +272+57-5-3+9-15-49-20+29-12+9-49+0+1+8 +sign_ed25519 4 23 45806 +110+2-85-24-25+36+73-30+20-20-5-49+0+46+4 +sign_ed25519 4 29 45771 +264+6-24+0-14+43-44+19-38-4+41-69+7-28+55 +sign_ed25519 4 37 45798 +347+32+31+0-12-36-5+6+24-12+11+43-18+0-16 +sign_ed25519 4 47 45780 +153+14-34+44-6+30-47-15+23+0-11+10-69+53-40 +sign_ed25519 4 59 46502 +434+142-8-36+24+20-6+0+41+10+21-46-25-32-49 +sign_ed25519 4 74 46546 +356+153+0-67+2+41-28-5+6+27+23-61-91+0-7 +sign_ed25519 4 93 47248 +405+77+60+107-8+0+45+41-25-35+27-14-63-8-56 +sign_ed25519 4 117 47369 +202+125-59-84-65+25+0+9-38-109-58+48+15-114+32 +sign_ed25519 4 147 47326 +477+191+35+14-27-80+73+25-57-60-90+44+0-5-48 +sign_ed25519 4 184 48043 +371+129-52-12+77+83+5-41-48+24-85+24-6+0-95 +sign_ed25519 4 231 48773 +412+40-19+49-36-30-45+69+4+0-29+150-23-86+2 +sign_ed25519 4 289 48846 +407+76-31+106+0-32+58+12-138-37-129-2+1-72+14 +sign_ed25519 4 362 50329 +540+1+66-100+0-35+27+27-20-54+13-6+47-37-32 +sign_ed25519 4 453 51025 +521+40+103+59-57+38+36-17-40-3-23-110-30+0+5 +sign_ed25519 4 567 52522 +509+4+42-20+23-29-7-56-87+20+1+0-57+12-9 +sign_ed25519 4 709 53973 +470+89-21-44+73+0+86-38-43-98+957+80-10-52+38 +sign_ed25519 4 887 56122 +844+51-3+39-134-11+163-48-72+76+3-21+0+9-50 +sign_ed25519 4 1109 59025 +691+0+104+12+41+9+41-130+21-29-89-64-100-119-85 +sign_ed25519 4 1387 61870 +1041+134-43+39-70+37-55-27-92+88-61+79+51+0-64 +sign_ed25519 4 1734 65415 +1726+91+92+0+92-2-4-40+20+62-66+54-115-61-24 +sign_ed25519 4 2168 70473 +641-87+3-62+183+77+11-4-45+2-66-107-99+0+128 +sign_ed25519 4 2711 76022 +953-12-114+29-133+12-52-64+102+0+34+71+16-54-135 +sign_ed25519 4 3389 83616 +895-92-154+26-61+0-104-144+146+4-75+93+120+151-7 +sign_ed25519 4 4237 92311 +931+181+174-131-13-94+77+0-45-22-18+43+28+132-14 +sign_ed25519 4 5297 103971 +838+1+141+34+21-46+92+51-44-20-217+0-12-29-87 +sign_ed25519 4 6622 118359 +808+154-44-97-152-92-97+237+0-18+120+21+11+13-23 +sign_ed25519 4 8278 136303 +632+1638+202-126-57-178+41+2+117-188-70-345-291+69+0 +sign_ed25519 4 10348 158178 +1228+0-215+90-278-200+31-16+225+335-199+141-115-122+114 +sign_ed25519 4 12936 185384 +607+231-20-16-69-44-5+130-105+42+34+29+335-32+0 +sign_ed25519 4 16171 219577 +627+220-66-169+147-38-176+50-188+6-234+234+21+0-19 +sign_ed25519 4 20214 263194 +1482+56-52+77-32-12-100+2+1787+3+0+123-150-129-159 +sign_ed25519 4 25268 317344 +2369-11-3+9+24+186-154-118+53-197-10+21+221+0-108 +sign_ed25519 4 31586 384865 +2525-82+154-26-139-18-215+179+24+321+96+19+0-114-176 +sign_ed25519 4 39483 468929 +4270+600-60+147+41+6-23+70-151-98-38+0-152+56-48 +sign_ed25519 4 49354 574050 +3845-74-37+19-207+23-116+0-95+1682+673+50+5-249-249 +sign_ed25519 4 61693 706226 +3298+337+96-358-19-77-486+47+0-496+265-497-203+1691+1027 +sign_ed25519_open 4 0 159603 +7840+832+637+65+46+32-51-85+0-40-135-211-8-128+41 +sign_ed25519_open 4 1 158210 +5051+1891+122+506+69-91+0-128-109-185+71+149-19-125-25 +sign_ed25519_open 4 2 159453 +5024+2214+921+527+394+0-44+234-98-128-108-26+114-106-12 +sign_ed25519_open 4 3 159304 +5290+1446+1043+326-35+0-212+12+155-19-430-108-263+63-602 +sign_ed25519_open 4 4 158864 +5245+1648+952+653+0-96+103+137-441-189-83+1088-302-249-451 +sign_ed25519_open 4 6 158470 +4999+1855+1334+448+81+0-270-198-358-239+33+123-81-222-270 +sign_ed25519_open 4 8 156182 +5191+1893+1284+700+225+66-148-162+0+92-136-78-30-24-76 +sign_ed25519_open 4 11 157556 +5137+1720+914+0-118+68+144+220+2-10-282-252-380-448-550 +sign_ed25519_open 4 14 157834 +4908+1263+236+175-83+146+65-131-141-265+0+249-178-68-168 +sign_ed25519_open 4 18 160640 +4824+1635+704+295+53+108-211-149+0-46-439+143-322-176-107 +sign_ed25519_open 4 23 156458 +4936+2463+499+749+676-20+0-486+198-46-110-14+94-281-447 +sign_ed25519_open 4 29 157357 +5021+1581+901+867+0+211+48-11-212+121-120-205-297-247-357 +sign_ed25519_open 4 37 159079 +5569+1057+745+162+0+12-36-290-240+0-36-76-14+66+148 +sign_ed25519_open 4 47 159828 +5923+2022+1072+866+79+147+0-50-263-201-50-226+5-133-178 +sign_ed25519_open 4 59 157924 +4882+1745+944+346-32-79+123+0-20+29-95-220+6-17-105 +sign_ed25519_open 4 74 160896 +5287+1492+919+543+11-32+0+1289-227-167-7+40-292-354-452 +sign_ed25519_open 4 93 159323 +5205+1677+1082+414+136+0+212+153-245-34-43-206-276-167-318 +sign_ed25519_open 4 117 158068 +5193+1653+528+435+33-146+99+176-194-236-264+0-160-284-132 +sign_ed25519_open 4 147 159806 +5133+2482+629+493+239+86-62-148+160-132-50-194-48+0-50 +sign_ed25519_open 4 184 158634 +4834+1432+742+500+380+159+0-72+280-51-87-613-88-261-85 +sign_ed25519_open 4 231 159247 +5438+1730+496-145-31-361+34+0-117-146+7-8+1652-172+44 +sign_ed25519_open 4 289 160334 +5545+2012+1128+588+424-172+0-110-2-40+136-360-314-232+172 +sign_ed25519_open 4 362 160757 +5280+2251+642+540+480+292+34+0-2-130-16-60-342-178-236 +sign_ed25519_open 4 453 162958 +4197+1447+371+102-242+268+288-440-52+124-192-444-24-340+0 +sign_ed25519_open 4 567 161145 +6029+1338+584+704+0-47+41-13-59+37-256-230+37-79-300 +sign_ed25519_open 4 709 162952 +4679+2280+980+298+92+132+12-84+0-66-106-258-490-60-54 +sign_ed25519_open 4 887 165131 +6373+1476+667+655+71-74+111-178-42-56-46+0-124-142+68 +sign_ed25519_open 4 1109 165048 +5074+2387+1356+527-68+38+92+8-22-182-310-218+0-228-74 +sign_ed25519_open 4 1387 167920 +5597+2187+723-19-77+86+0-102+53+17-50-346-311+13-40 +sign_ed25519_open 4 1734 168005 +4713+1057+1053+220+150-4+6-168-138+0-306-84+8-22-112 +sign_ed25519_open 4 2168 169850 +4734+2042+850+803+0+86-252+14-34+64-162-286-184-286-280 +sign_ed25519_open 4 2711 174981 +5002+2044+84+467+102-153+79+31-281-35-222-9-228-119+0 +sign_ed25519_open 4 3389 177277 +6025+1536+638+30+28+14-88-152-56-18+0+30-48-166-36 +sign_ed25519_open 4 4237 181262 +5563+1253+586+287+110-51-102-149-130+17-270-33+0+77-168 +sign_ed25519_open 4 5297 188957 +5388+753+393-43-34+104+187+299-286-62-287-43+0+110-393 +sign_ed25519_open 4 6622 195193 +5203+1331+331-185-176-316-270+179-314+880+89+0+65-147-102 +sign_ed25519_open 4 8278 204645 +5980+1629-98-126-247+704-116+198-15+205-508-369+0+129+206 +sign_ed25519_open 4 10348 216430 +5062+1823+1406+670+283-12+0-278-352-72+80-32-15+100-390 +sign_ed25519_open 4 12936 228465 +6495+2006+1092+774-26+0-143+25+206-143-77-164-335-218+97 +sign_ed25519_open 4 16171 248498 +5806+1847+874+765+2890+451-121-27-16+0-121-139-161-65+109 +sign_ed25519_open 4 20214 270127 +6131+2087+815+504+0-176-176-83+71+68-6-130+43-203-292 +sign_ed25519_open 4 25268 297737 +5293+1109+954+170+37-389-35-3-150-119-77+150+256+0-66 +sign_ed25519_open 4 31586 334194 +5629+867-148+196-43-96-63-139+118+186-20-155+0+73+147 +sign_ed25519_open 4 39483 378293 +4010+1391+712+271+407+145-202-119-542-279+26-6-261-452+0 +sign_ed25519_open 4 49354 430374 +4522+3321+1544-64+73-158+245-177-151+151-304+143-25+0-388 +sign_ed25519_open 4 61693 500726 +5266+1130+556+147+115-19-293-186+0-240-543-385-387+2687+42 +sign_ed25519 5 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 5 32 42596 +1920+8+59-115-1+9-3+0+71-37-69+29-79+35-44 +sign_ed25519 5 0 45638 +2564+107+41-38-19-15-5+31-76+7-45+39-58+32+0 +sign_ed25519 5 1 45602 +1103+60+60-12+33+48+63+0+61-16-27-20-8-19-1 +sign_ed25519 5 2 45637 +681+122-62+138-14-17-40+57-49-19+0+51+17-18+30 +sign_ed25519 5 3 45648 +612+38+25-30-24-8+16-70+7-103-61-57+43+80+0 +sign_ed25519 5 4 45676 +636+121-64+39-103+0-54+7+0-22-49+7-69-12+39 +sign_ed25519 5 6 45629 +675+118+101+0+51-30-21-25-21+96-21-2-15+22+29 +sign_ed25519 5 8 45651 +648+50+45-5-81+116+6+33-48+0-25+63-43-14-70 +sign_ed25519 5 11 45661 +686+58-84-9-20+13+7-75+35-18-83-111+0+26+5 +sign_ed25519 5 14 45644 +639+122+82-8-38-8-35-33+0-2+88+94+33+0+6 +sign_ed25519 5 18 45649 +844+124+0-71+67+77-75-20+91+2+14-29-17-107-39 +sign_ed25519 5 23 45656 +643+103+47-82+57+15+0+40-19-11-33-9-32-29+95 +sign_ed25519 5 29 45647 +635-24+97-28-23+36+125-56+0+6+10+21-8-24-20 +sign_ed25519 5 37 45679 +682+31-58+15-23+94-25+54+0-5+6-57-6-67+1101 +sign_ed25519 5 47 45642 +698+92-6-79-9+19+68-47+47-26-4+36+0+46-6 +sign_ed25519 5 59 46387 +803+28-9-3-22+28-36+28+85+4-22+0+60-45-22 +sign_ed25519 5 74 46443 +628+39+9-29-57-63+37-18+80+0+43-103-6-56+45 +sign_ed25519 5 93 47134 +830-29-14+70+73+0-31+12-61+21-19+43-52-38+4 +sign_ed25519 5 117 47166 +860+108+107-7-40+59+12-25-27+0+4+78-37-24+0 +sign_ed25519 5 147 47212 +785+80-81+33-106-6-53+150+37+34+74-66-18+0-42 +sign_ed25519 5 184 47954 +989+104-86-28+57-92+0-72-45+73-92-36+11+28+26 +sign_ed25519 5 231 48675 +787+39+13-75+3-16-17-2+2-12+61-56+0-134+37 +sign_ed25519 5 289 48725 +833+108-42-38-67+72-121-67+97+61-1-14+0+60+46 +sign_ed25519 5 362 50127 +884+107+4+104+41+0-9-24-44-31+22-41-35-96+25 +sign_ed25519 5 453 50931 +954+59-6+42-10-59-138+55-84+20+0-38+64-93+152 +sign_ed25519 5 567 52428 +908+53-11+47-12-7+0-55-43+46-38+31-40+79+16 +sign_ed25519 5 709 53825 +1005+146+26-34+0-70-85+27+65-17-69+33-120-59+82 +sign_ed25519 5 887 56048 +991+40+94-18-26+39+67-80+4-3-121+20-34+0-37 +sign_ed25519 5 1109 58891 +1049+83+85+0-56-7-22+28-26+70+17-40-73+56-18 +sign_ed25519 5 1387 61790 +1093+256+19+0-46+5-107+16-90-30-13-9-61+69+11 +sign_ed25519 5 1734 65323 +2167+442+6+0+22-76-56-143-121+39-96+152-32-91+38 +sign_ed25519 5 2168 70423 +1163+13+126+25-35+0+106-131+94-49+124-246-241-72-116 +sign_ed25519 5 2711 75920 +1182+0-47+4+22+50+60-150-107+72-5-37+18-56-86 +sign_ed25519 5 3389 83565 +1333+443-132+77+2+22-60-81-128+40+61-16-21-189+0 +sign_ed25519 5 4237 92255 +1107+312-60+37-27+58-80+52+33-99+0-49+18-85-60 +sign_ed25519 5 5297 103887 +1330+592+179-5-26-19+130-75-123+112+37-164+94-88+0 +sign_ed25519 5 6622 118383 +1100+0-97+253+12+101+62-39-82-21+190-75-13-47+67 +sign_ed25519 5 8278 136245 +2962+279-65-117+69-80+50+0-110-131-51+72+192-100+10 +sign_ed25519 5 10348 158216 +925-53+0-153+204-233+176+1146+208+123-194-9-149+215-121 +sign_ed25519 5 12936 185345 +1386+86+15-84-63-93-95+243-81+26-58-45+0+35+26 +sign_ed25519 5 16171 219598 +1288-32+67+29+21-125+88-88+37-40+7+0-59-50-97 +sign_ed25519 5 20214 263217 +1548+243-79+38+58-93+56+201-10-94-255+0-128-65+76 +sign_ed25519 5 25268 317553 +2620+29+101+2233+226-14-77+0-40+76-71-271+118-284-36 +sign_ed25519 5 31586 384914 +3479-118+189+0+200+114+130-192-4-114+119-65-28+20-51 +sign_ed25519 5 39483 469031 +3469+227-16-13+0-71+2647+697-25+144-112+118-21+32-147 +sign_ed25519 5 49354 574020 +4201+164-173+206-104-67+134+50+0-99-425-38+110-49+108 +sign_ed25519 5 61693 706003 +3988+540+162-429-302+9+50-13-71-84+162+99-189-193+0 +sign_ed25519_open 5 0 159878 +7461+1677+519+0-151-212+14+14+0-238+1233+33-101-237-333 +sign_ed25519_open 5 1 156700 +5606+2064+1154+706+342+56-22-1-63-126-176-185-133+0+6 +sign_ed25519_open 5 2 159561 +5589+1638+407+92+174-440+542-96+98-36-124-354-424-66+0 +sign_ed25519_open 5 3 161072 +4999+1802+1256+295+394+76-164-12-118+0-224+352-120-276-164 +sign_ed25519_open 5 4 158837 +5105+2090+742+281+107-200-407+138+0+51-17-182-167-132-315 +sign_ed25519_open 5 6 156981 +4864+1399+666+22+345-58+0-32-52-160+246-218-36+18-22 +sign_ed25519_open 5 8 159851 +6474+2123+399+864+457-71+200-194-333+0-272-303-9+1-408 +sign_ed25519_open 5 11 158145 +5526+1488+673+524+0+272-168-266-184+148-148-218-376-218+138 +sign_ed25519_open 5 14 159101 +4543+2276+1007+438+317-121-58-14-146+46+98-154-86+0-16 +sign_ed25519_open 5 18 159282 +4997+2287+1188+863-5+336+82-99+7-187-24-54-181-43+0 +sign_ed25519_open 5 23 159582 +5047+1969+1130+654+51+260+89-365-44-142-190+0-138-164-296 +sign_ed25519_open 5 29 160099 +4676+1283+1118+475+85+1267-81+0+5-266-306-245-73-124-290 +sign_ed25519_open 5 37 159333 +5296+1609+563+0+47-585+47+165-41-381-65-211-175+53-35 +sign_ed25519_open 5 47 157393 +6470+2472+1142+1230+483+0+21-345+16-132-103-183-38-262-167 +sign_ed25519_open 5 59 161473 +4832+1493+818+530+99-286-173+29+45+0-92-342-260-318-182 +sign_ed25519_open 5 74 157451 +5271+2078+615+486+219+66-191+0-83+83-70-99-280-78-247 +sign_ed25519_open 5 93 159596 +5562+1762+588+156-102-36-104-204+0-124-84+241+15-108+66 +sign_ed25519_open 5 117 160831 +5278+2019+1215+454+513+186-187-169-205-17-303-144+0-109+125 +sign_ed25519_open 5 147 158137 +6046+2630+1427+891+303-84-36-30-138+158-152-110-170+8+0 +sign_ed25519_open 5 184 161342 +5539+1989+1189+733+468+168-222-216+112-340-178-126+0-312-78 +sign_ed25519_open 5 231 159368 +6180+2091+829+746+206+266+0+12-116-290-192-2-206-192-164 +sign_ed25519_open 5 289 162006 +5062+1460+740+287+53+0-30-108-46-188-40+18-76-68+80 +sign_ed25519_open 5 362 162230 +5462+2231+714+467-58+50+0-234-14+230-48-88-68+48-4 +sign_ed25519_open 5 453 162646 +5342+1388+794+665+103+36-56-199-85+0-38-85-97+0-280 +sign_ed25519_open 5 567 160566 +5767+3022+1342+922+414+216+158-340-312+0-266-320-52-73-81 +sign_ed25519_open 5 709 161484 +5398+1697+1151+514+538+24+8-46-270-80-8+0-142-384-172 +sign_ed25519_open 5 887 165109 +4681+1909+895+110-126-98-46+0+16-234-180-4-170+4+150 +sign_ed25519_open 5 1109 165851 +5038+2616+3369+643+159+66-229+46-191-18-86-121-66-55+0 +sign_ed25519_open 5 1387 168824 +4645+1672+554+290-48+0+176-24-102+228+6-140-18-46-258 +sign_ed25519_open 5 1734 171152 +5394+1205+691+25+36-126+117+23+0-140-269-193-348-108-259 +sign_ed25519_open 5 2168 171462 +5768+2266+744+733+121-51-28+0-49-152-94-217-100+80+157 +sign_ed25519_open 5 2711 175008 +4773+1999+1139+736-5+290-33-123-124+0-288+43-25+19-7 +sign_ed25519_open 5 3389 178587 +6543+2301+1269+516+147-281-154-198+5-33-2-353+60-5+0 +sign_ed25519_open 5 4237 182431 +5133+1397+1019+626+186+86-114+0-30-123-133-22-93+66-163 +sign_ed25519_open 5 5297 186122 +5077+1509+684+126+500+58-214-24-46-36+0+68-64-116-228 +sign_ed25519_open 5 6622 194908 +5908+2075+1357+474+0+95+43+128-1-386-238-172-218-43-127 +sign_ed25519_open 5 8278 203707 +5205+1829+981+328+181-352-186+660-29-124+0-448-330+412-281 +sign_ed25519_open 5 10348 215450 +5357+1448+104+366-235-184-44-201+0+74-60+228-144+161-331 +sign_ed25519_open 5 12936 229067 +6765+1249-46+207+14-116-125-17-238+21-239+70+0+133-93 +sign_ed25519_open 5 16171 245525 +5722+1920+789+665+339+139-20-112-15-226-33-127-32+22+0 +sign_ed25519_open 5 20214 269559 +6359+1409+490+739+0-26-101+60+44-504-387+38-519-284-163 +sign_ed25519_open 5 25268 297803 +5477+1373+518+440-105-68+75-5-108-314+0-103-387+11+18 +sign_ed25519_open 5 31586 332389 +4570+1428+594+374+0-290+33-209-398+2041+466-25-183-310-38 +sign_ed25519_open 5 39483 378234 +4823+2610+1462+1174+106+441-175-186+0-214+159-39-67-56-326 +sign_ed25519_open 5 49354 434935 +5646+1892+541+348+0-249-491-218-200+2078+179-582-297-274+29 +sign_ed25519_open 5 61693 499064 +4952+1365+504+382+350+188-85+0-78-384-166+213-278-302-237 +sign_ed25519 6 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 6 32 42580 +3239+238+59-10-30-10+22+0+13+3-71+25-71-19+0 +sign_ed25519 6 0 46004 +4111+57+0-55+33+23+5-25-36+12+31-27-53-4-53 +sign_ed25519 6 1 45970 +504+45+78+81-22-41+89-26-9-19+23+8-36-71+0 +sign_ed25519 6 2 45994 +343+54-2+5+52+126-28+105-62-25-6+75-42-16+0 +sign_ed25519 6 3 46009 +164-29-18+85+45+115-66+73-80-24+27+29+0-77-125 +sign_ed25519 6 4 45987 +310-4+45+4+87-18-4+20-38+0+39-22-65-20+35 +sign_ed25519 6 6 46015 +267+65-5+65+65-124+48+0-48-44-67-52-85+78+11 +sign_ed25519 6 8 45978 +355+8-62+97+0+142+2-2+9-25-9+9-36-64-80 +sign_ed25519 6 11 45991 +264-31+65+142+24-14-47-9+0+10+25-48+126-54-7 +sign_ed25519 6 14 45974 +280+58+11+0-42-32-78-18+19-129-22+14-50+9+21 +sign_ed25519 6 18 45965 +375-4+136+35-3+6+13+42-26-6+68+0-27-20-12 +sign_ed25519 6 23 45984 +179+3+67+27-13+12-29+42-17-4-68-31+77-27+0 +sign_ed25519 6 29 45967 +218-96+67-1+41-94+2-11+51-75+43+0+52-36-82 +sign_ed25519 6 37 46022 +396+92-64-66+1-47-25+13+8+7+12-16-40+0-15 +sign_ed25519 6 47 46019 +277+0+69-60-75+6-16+75-91-111-76+20-50+34+86 +sign_ed25519 6 59 46749 +485+96+37-85-69-42+16+13+0+11-34+0-59-75+31 +sign_ed25519 6 74 46794 +316+138-38+31+52-52+0-31-65+32+11-84-47+85-47 +sign_ed25519 6 93 47527 +391+17-25-68-30-67-93-28-53+0+781+121+39+3+112 +sign_ed25519 6 117 47563 +333-62+11+0+5-15-62-9+14-9+47+42+13-106-10 +sign_ed25519 6 147 47562 +314+14+31-44-33+11-38+92+23-20-81+0-20-26+12 +sign_ed25519 6 184 48269 +350+83+15+20-2-16+60-55-2+9-26-55-31+23+0 +sign_ed25519 6 231 49033 +306+25+42-30-9+0-48+11-59+22+1+54-11-113-14 +sign_ed25519 6 289 49063 +458-43-22-51+32-18-70+23+20+3+0-37+94-27+11 +sign_ed25519 6 362 50556 +366+44+4-80+0+114-52-105-29-79+33+16-37+11-52 +sign_ed25519 6 453 51284 +593+141-49+0+20-35-68-52+41-64+67-35+65+11-67 +sign_ed25519 6 567 52773 +623+100+46-43-45+34+9-14+0-42+47-35-67-21+8 +sign_ed25519 6 709 54228 +656+2-45-52+76-115+13+32-13+0-67+36-39-62+102 +sign_ed25519 6 887 56451 +585-26+10+57-13+0+8+42+53-135-5+52-9-68-94 +sign_ed25519 6 1109 59280 +568-26+72-41-50-52+31+44-27+41-8+0+54+12-3 +sign_ed25519 6 1387 62201 +913+14+138+0+119+12-90-91+35-61-31-64-45-66+104 +sign_ed25519 6 1734 65703 +961+19-22-14+11+0-8-96+0-21+60-75-82+165+183 +sign_ed25519 6 2168 70721 +819+102+146-143-46-40-18-58+0+39+44+51+30-9-141 +sign_ed25519 6 2711 76332 +726-131+89-28+28-77+28+1043+346-27+10+0-160-11-78 +sign_ed25519 6 3389 84069 +659+312+99+34+0-80+7+13+23-17-55-48-17-184-221 +sign_ed25519 6 4237 92721 +791+107+162-79-22+0+61-138+39+120-80-4+75-53-10 +sign_ed25519 6 5297 104414 +696+37+76+78-37-178+7-62+3-134-124+111+0-30-6 +sign_ed25519 6 6622 118770 +654-95+4+0+17-123-86+205-111-37+188+53-74-22+140 +sign_ed25519 6 8278 136627 +783+295+42+1-133+168+0+180+41-55-9-80-70-13-16 +sign_ed25519 6 10348 158454 +687+131+200+29+264-10-160+0-285-4-180+105-188-223+5 +sign_ed25519 6 12936 185736 +320+129+103+56-181-128-104+1012+193-33-176-98-35+0+66 +sign_ed25519 6 16171 220009 +1163+254-53+123-125-101-145+180-152+51+22-206+0+142-151 +sign_ed25519 6 20214 263541 +3042+88-39-121-97-7-174+68+73+107+0-27-14+58+44 +sign_ed25519 6 25268 318225 +2093-7-62+44-109+0-3+120-132+212-99+74+1736+519-85 +sign_ed25519 6 31586 385311 +3661+217+20+84-129-166-113+287+95+0-224-51-153-16+60 +sign_ed25519 6 39483 469360 +3682-28+190+10-95-1-229-104+0-58-16+113+2452+528+276 +sign_ed25519 6 49354 574441 +3926+162+124+367-95+277-182+234-76-86-87-129-8+211+0 +sign_ed25519 6 61693 706435 +3762+41+2427+1490+124-39+277-273+411+0-204-134-208-89-68 +sign_ed25519_open 6 0 158720 +7578+1575+825+505-145-357+245-328-278+31-23-15+378+0-219 +sign_ed25519_open 6 1 157906 +5444+1593+267-30+90+155-510-278-487-243-56+0+1375+22-177 +sign_ed25519_open 6 2 157564 +5076+1502+723+246+184+56-83-350+91-92-154-134-104-146+0 +sign_ed25519_open 6 3 161134 +4943+1597+1249+468+138+0-256+164-64-202-54-164+13-190-136 +sign_ed25519_open 6 4 158522 +5562+2178+1117+362-30+143+118-47+117-138-166-125-106-189+0 +sign_ed25519_open 6 6 159484 +5005+1722+792+513-149-28-4+208-78+0-86-44+10+44-126 +sign_ed25519_open 6 8 157528 +5540+2653+1128+469+244+141+0+149-20-39-4-351-254-117-250 +sign_ed25519_open 6 11 160833 +4732+2854+1072+229+187-137-37-97+3+19-163-132+0-217-14 +sign_ed25519_open 6 14 159135 +6165+1694+360+621+334-131-103+161-42-7+0-225+107-17-106 +sign_ed25519_open 6 18 158782 +5654+1364+616+0+372+29+398-171-393-240-224+53-65-126-34 +sign_ed25519_open 6 23 160666 +5506+1563+635+298+90+0+13-97-586+201-523-252-179-181-484 +sign_ed25519_open 6 29 160173 +5413+1221+993+327+212-202-33+37+33-190-70-150-18-114+0 +sign_ed25519_open 6 37 159519 +5383+1738+1188+373+0-109+1037+107+77-148-144-144-156-194-370 +sign_ed25519_open 6 47 160252 +4982+2165+774+948+128+0+30-204-265-163-262-456+107-233-322 +sign_ed25519_open 6 59 156388 +4721+2100+765+177+204+40+31-280-60-168-122+0-96-324-42 +sign_ed25519_open 6 74 158981 +5298+2665+1480+812+169-177-179+0-2-225+99-155+71-95-23 +sign_ed25519_open 6 93 160213 +5468+1539+976+442+120+259-195+0-179-8-149-126-185+76-203 +sign_ed25519_open 6 117 159317 +5393+1743+1019+83-49-263+4-314-390+44-20-478+2106+0-121 +sign_ed25519_open 6 147 156651 +5312+2191+957+407+138+98-173+259+0-290-391-35-44-1-57 +sign_ed25519_open 6 184 157198 +5163+1524+770+355-42+381-181-97-149-100-392+0+166-41+41 +sign_ed25519_open 6 231 159570 +5943+2657+1431+519+457+156-18-72-112+0-22-96-21-149+254 +sign_ed25519_open 6 289 159995 +5634+2072+1202+479+220-66+0-292+160+18-414-480-80-160-90 +sign_ed25519_open 6 362 159890 +5104+2371+829+115+43-17+17-27-11-202-120-281+0-155+0 +sign_ed25519_open 6 453 163709 +4625+3364+994+435+117-275+0+47-371-235-275-221-373+112-298 +sign_ed25519_open 6 567 163581 +4854+1713+444+5-38+57-215+90-159-2+127-197+0-98-101 +sign_ed25519_open 6 709 163330 +5065+2047+1055+468-232-134-202+0+24+31-93+60-110-70-198 +sign_ed25519_open 6 887 162950 +5378+1932+1249+328+274-78-68-20+0-69-145-20+66+30-162 +sign_ed25519_open 6 1109 165129 +5711+2094+982+342+68-36-68-244-94-62+172+0-350+296-222 +sign_ed25519_open 6 1387 165170 +5158+2048+978+1992+499+96+154-148-70-168-46-98+0-182-28 +sign_ed25519_open 6 1734 167655 +5185+1272+530+253+64-112-2-208-284+296-188-214+218-216+0 +sign_ed25519_open 6 2168 168484 +5262+2560+810+196+26+148+240-116-80-76-218-16-262+0-40 +sign_ed25519_open 6 2711 172837 +4852+980+761+392+0-49-269-60-94+53-207-270+126+3-43 +sign_ed25519_open 6 3389 177097 +5069+1586+883+206+387-8-242+0-87+97-216-122+5-261-256 +sign_ed25519_open 6 4237 183002 +5493+3145+945+64+0-159-124-241+232-192-138-157-459+252+0 +sign_ed25519_open 6 5297 189088 +5653+2927+1239+555-1+0+2+97-72-121-28+9-122-105-122 +sign_ed25519_open 6 6622 194358 +5429+1330+1196+2+88+20+0+33-353-401-424-354-271-164-355 +sign_ed25519_open 6 8278 203420 +5816+1588+565+155-54-92+0+267+191-97-381+20-262-27-552 +sign_ed25519_open 6 10348 213912 +5457+1994+712+145+0+1660-152-520-196+29+28-423-173-238-225 +sign_ed25519_open 6 12936 228790 +5533+1687+562+242-343+164+0-204+71+215-304-468-350-378-602 +sign_ed25519_open 6 16171 246304 +6006+2477+960+534+14+69+0-120-275-257-358-440+92-640-62 +sign_ed25519_open 6 20214 268341 +6383+1511+373-178+93-175-222+0+50-229+1573+106-77-6-370 +sign_ed25519_open 6 25268 298853 +6498+2017+259+610+148-112-98+0-179-122-213-95-182+36+7 +sign_ed25519_open 6 31586 335277 +3890+1748+767+585-14-36-127-107-217-287-148+106+125+0+138 +sign_ed25519_open 6 39483 377539 +7284+2602+1095+150+85-167-17+46+0+52-261-95-196-362-330 +sign_ed25519_open 6 49354 432330 +6062+2719+658+101-446+315-192+182-33-204+0+109-45-98-365 +sign_ed25519_open 6 61693 500699 +6794+1312+496+433+0-71-365+190+376-18-268-135-304-210+54 +sign_ed25519 7 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 7 32 42586 +2214+51-15+43+52+0+49-11-12-19-2+13-78-30+49 +sign_ed25519 7 0 46186 +6765+200-5+25+3+0-14-4+50-26-10+25-29-8+54 +sign_ed25519 7 1 46280 +974+123+23+93-70-128+0-125-114+28-16-102+81+48-144 +sign_ed25519 7 2 46242 +896+176+39+63-49-45-50+60-63+0-61-59+22-6+840 +sign_ed25519 7 3 46150 +792+255-7-56-64-61+1+40+66-4+0-7+93+23-22 +sign_ed25519 7 4 46208 +687+64+145+25-28-17+83-15+30+7-27-78-6+0-69 +sign_ed25519 7 6 46196 +766+128-41+82-52-31+0+80+1+31-26-68-9-16+36 +sign_ed25519 7 8 46180 +748+254-64-33+46-15+29-43-16+0-25+6+48-14+63 +sign_ed25519 7 11 46202 +732+104+0-26-1-40+11-10-67+48-72+15+139+54-56 +sign_ed25519 7 14 46185 +794+110+21+28-15+0-71+94-96-21-24-15+46-18+115 +sign_ed25519 7 18 46168 +783+191+3+6-19-30+133+0-27-32+4+2-82-60-22 +sign_ed25519 7 23 46168 +793+150+83+45-41-11+50+18-9-2+0-3-40-20+44 +sign_ed25519 7 29 46192 +726+128-19-19+0-19+99-24-35+75+58-15-2+34+65 +sign_ed25519 7 37 46212 +831+149-59-47+34-103-17-49-56+93+0-85+47+74+3 +sign_ed25519 7 47 46218 +715+188+3-79-71-42+0-40-72-96+0-57+2+50+25 +sign_ed25519 7 59 46993 +962+118-23+163+51-57+114+46-87-56+5+0-30-103-48 +sign_ed25519 7 74 46981 +936+194-35+14+10-83-37-16+28+65+134-28-4-99+0 +sign_ed25519 7 93 47769 +663+153+38+63+0+72+0+31-19-38-26-107+12-13-29 +sign_ed25519 7 117 47747 +1000+117-47-34+0-103-71+50+117+11-31-60+14+44-52 +sign_ed25519 7 147 47736 +948+186+11+14-9-51-4+112+108+116-30-54-50-34+0 +sign_ed25519 7 184 48525 +852+174+0+7+73-86+9-48-38+89+60-27-37-76-61 +sign_ed25519 7 231 49294 +888+104-10+0-70+1107+152-1+49-30-140+53+12-31-135 +sign_ed25519 7 289 49235 +1264+165+38-13-20-74-103-66-2+30+38+86+0+37-17 +sign_ed25519 7 362 50755 +954+161+0-26-46-20+17-33+10+24+0-8+128-47-28 +sign_ed25519 7 453 51556 +923+227+33+19-18+106+86-11-72-3-38-76-128+0+50 +sign_ed25519 7 567 53026 +895+138-46+0-110-3+96+75+1+11-38+0+82-53-18 +sign_ed25519 7 709 54463 +958+253-11+56+96+3+34-54-9-77+0+34-33-79-22 +sign_ed25519 7 887 56669 +946+84-92-73-12+56+64+0-81-66-111-65+1+116+29 +sign_ed25519 7 1109 59569 +1078+215-26-119+0-53-48+102+45-58-63+19-45+50+55 +sign_ed25519 7 1387 62433 +1033+177+102+82-40+0-129+6-52+27-102-55+9-8-57 +sign_ed25519 7 1734 65981 +1245+267-11-41-116-16-74+212-106+34+9+0-54+40+99 +sign_ed25519 7 2168 70935 +1166+118-21+0-61+0+157-114-132-104+1-79+52-69+2 +sign_ed25519 7 2711 76489 +1301+188+79+186+8-44-80+7+33+0-126-3-124-83-126 +sign_ed25519 7 3389 84215 +995+112+21+18+102+18-75+17+0-103-181-282-129-109-190 +sign_ed25519 7 4237 92888 +1092+114+0-62-68+19-136+103+1047+294-154+156-224-66-149 +sign_ed25519 7 5297 104509 +1197+182-24+14+35+24-14-104-182+0+24+13-91-31-37 +sign_ed25519 7 6622 118811 +1073+283-141-22+160-142-232-20-59+54+344+0+35-142+12 +sign_ed25519 7 8278 136692 +705+513-45+26+0-70+57+67+22+50-35-153-37-1-1 +sign_ed25519 7 10348 158353 +943+311-58-101-225-128+66-25-133+268+116+76-77+95+0 +sign_ed25519 7 12936 185623 +711+339+24+26+31+96-64-147-149-130-96+83+0-74-68 +sign_ed25519 7 16171 219918 +1579+110-111-26-110+2661+245-96+0+99+76+15-113-115-169 +sign_ed25519 7 20214 263481 +2778+0-251-189-193-222-47-94-63+276+241+103+251+163+50 +sign_ed25519 7 25268 318134 +2749+266+0-22-143+210-99+132+49-254+93-17+45-3-83 +sign_ed25519 7 31586 385233 +2998+285-202+1796+515+127+253-87-195+0-142-23-110-17+61 +sign_ed25519 7 39483 469513 +3438+41+217+33-112+92-33+1+0-311-264-157+1-18-206 +sign_ed25519 7 49354 574526 +3735+3102+463+55-81-102+0-124-34+57-233+138-126+139-235 +sign_ed25519 7 61693 706482 +4349+704-174+0+85-69+1904+1422+177-265-136-398-117-292+70 +sign_ed25519_open 7 0 158778 +8157+1339+734+764-162+147-63+151-57-46-189+0-158+89-27 +sign_ed25519_open 7 1 158924 +5750+1506+960+865+208+79+0+105-123-196-66-28-127-99-304 +sign_ed25519_open 7 2 158732 +5212+1873+1014+361+378-70+44+0-166-230-230-112-322-178+1122 +sign_ed25519_open 7 3 159071 +5181+2130+1230+326-26+176+96-22+0-106-7+16-138-92-48 +sign_ed25519_open 7 4 160026 +4824+1465+860+576+248+0-74-6+214-34-256+42-38-98-148 +sign_ed25519_open 7 6 158266 +5308+1604+819+760+178+147+155+0-224-65-205-300-110-199-213 +sign_ed25519_open 7 8 157812 +5427+1789+552+210-39-10+0-198-160+42-22-88-156+96+73 +sign_ed25519_open 7 11 160131 +5511+2094+942+298+136-256+0-41-99-63+105-61-75-102+7 +sign_ed25519_open 7 14 158178 +5761+1981+1086+2451+323-46+48+138-16-30-244-426+0-60-308 +sign_ed25519_open 7 18 159806 +5354+2274+836+623+270-2-84+0+110-88-118-16-42+30-92 +sign_ed25519_open 7 23 160164 +5350+2388+757+379+251+202-236-327-275-206+18-98-260-48+0 +sign_ed25519_open 7 29 159728 +5321+1681+384+113+0-495+162-217+62-101+50-163-48-505-70 +sign_ed25519_open 7 37 160489 +4538+1515+529+317+191-55+0-137-229-8-115-397+103-143+16 +sign_ed25519_open 7 47 157739 +4732+1573+956+464-290+71-272-35+796-273-87-133+0-135+53 +sign_ed25519_open 7 59 160071 +5212+1831+1129+602+181+159-92-116+0-177-5-36+89-105-22 +sign_ed25519_open 7 74 161274 +5633+1788+637+250-28+15-60+0-352-314-68+28+8-244-258 +sign_ed25519_open 7 93 159628 +5667+1755+623+496+138-42-91-146-241-19+204+0-64-57+25 +sign_ed25519_open 7 117 160463 +4913+2427+1058+558+497+171-34-174-225-117+0-16+93-137-84 +sign_ed25519_open 7 147 160484 +5883+1583+504+378-159+347+0-166+121-41-232-308-279+1377-363 +sign_ed25519_open 7 184 158417 +5747+2371+368+594-25-85+96-32-97-1+0-72-61+25+120 +sign_ed25519_open 7 231 162312 +5713+1475+1238+341-110-203-113-125-107-257+0-398+55+121+138 +sign_ed25519_open 7 289 159340 +5471+2209+566+261+238-190-172-592+20-36-62-502-179+112+0 +sign_ed25519_open 7 362 162748 +4784+2093+537+475-46-350-110+0+0-104-45+61+12-144+165 +sign_ed25519_open 7 453 162694 +5204+1971+1013+515+296-104+0-370-174-152-240-76+124-74+76 +sign_ed25519_open 7 567 162492 +5774+3162+730+132+50+194+146-243-93-198-184-343-335+0-212 +sign_ed25519_open 7 709 162652 +5098+1465+507+282+80+36-178-122+0-120-142-24-104-190+196 +sign_ed25519_open 7 887 166240 +5371+1673+867+552-14+142-42+258-144+44-338-18+0-88-82 +sign_ed25519_open 7 1109 163452 +5010+2177+482+403+136+98+0-118-162-266-13-82+17-199-113 +sign_ed25519_open 7 1387 166918 +4960+789+477+292+15+43-216-48+187-61-38+0-379-5-144 +sign_ed25519_open 7 1734 169100 +5113+1186+504+1606+334+208-180-224-354+0+236-242-326-272-436 +sign_ed25519_open 7 2168 170044 +4589+1034+658+113-278+21+8-208-38+0-282+86-112-132-432 +sign_ed25519_open 7 2711 174723 +5423+2320+762+482+123+157-317-57-99+120-87+0-205-7-209 +sign_ed25519_open 7 3389 176504 +5498+2245+1268+880+187+136-310-256+44-302-174-290-402+0-240 +sign_ed25519_open 7 4237 182232 +5203+1679+783+488+700-50+164-174-122-150-4-34+0-338+52 +sign_ed25519_open 7 5297 189250 +5153+2523+1096+781+239+152+0-188-178-36-36-34+94-10-236 +sign_ed25519_open 7 6622 194642 +5241+2094+1033+434+529-172-46+0-354+147-170+29-442-226-310 +sign_ed25519_open 7 8278 205622 +5884+2305+590+404-212+264-154+198-596+26-464-248-228+0-438 +sign_ed25519_open 7 10348 216204 +5518+1087+288+0-342+174+7-360-88-264+20+120-305-460-36 +sign_ed25519_open 7 12936 228008 +6385+1201+518+0-103-134-121+24+406+100-81-424-355-85+26 +sign_ed25519_open 7 16171 243066 +6931+2676+1111+496+209+171-107-175-88-92+0-119+107-46-97 +sign_ed25519_open 7 20214 269769 +5841+1573+779-44+33+87+152-158+245-211+0-105-139-221-240 +sign_ed25519_open 7 25268 300156 +4920+3193+1093+232+68+80+69-247-37-38-274-109-324-252+0 +sign_ed25519_open 7 31586 334170 +5161+1442+166+159+0-199+168+7-167+161-168-187-127-33-72 +sign_ed25519_open 7 39483 380304 +4106+1165+853+543+33+84+0+2037-79-369-410-99-602-649-384 +sign_ed25519_open 7 49354 434291 +5026+1360+287+248+54+0+73-224-92-470-157+97-270-488-207 +sign_ed25519_open 7 61693 499706 +4688+2189+2893+582+0+107+8+103-303-249-544-77-285-49-41 +sign_ed25519 8 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 8 32 42590 +2428+100-42-29-50+33+28-2+21+0-12-28+57-76+29 +sign_ed25519 8 0 45953 +4555+214-19+32+4-12-5+15-19+9-19+0+39-24-84 +sign_ed25519 8 1 46002 +281+39+8+97-117+1-37+0-46-81+8+12-17-57-91 +sign_ed25519 8 2 46014 +411-116+11+54-47+19-1-75-46-65+50+0-56+23+11 +sign_ed25519 8 3 45948 +334+36-5-43+106-14-24-31-17+18+0+66+0+7-16 +sign_ed25519 8 4 45975 +442+62+72+0-14-44-71+30+24-11-4+3+15-33-49 +sign_ed25519 8 6 45961 +277+86+104-17-32-30-56+18+53-35+36-75+0-19+39 +sign_ed25519 8 8 45983 +284+113+788+66-13-22+12-5-69+62-38+0-66+42-65 +sign_ed25519 8 11 45946 +278+140-15+26+124+68-105+53-66+0-47-98+4-12-52 +sign_ed25519 8 14 45927 +307+44-35+86+18+12-23-33-56+71-40-102+0+0+97 +sign_ed25519 8 18 45929 +319+71+48+37-31-5-5+39-2+79-32+0-67-32+41 +sign_ed25519 8 23 45919 +107+63+6-20+11-31-1+7+54-43+0-17-11+14-13 +sign_ed25519 8 29 45935 +278-1+2-9-42-24+80-46+4+32-97+17+40-38+0 +sign_ed25519 8 37 45924 +403+80+55-48+70-42-30-43+15+11+39-65+0-33-18 +sign_ed25519 8 47 45944 +256+3+23+48+53-32-93-52-25-5-96+4-90+74+0 +sign_ed25519 8 59 46736 +498+117+4+11-27-24+8+8-13-23-13+71-67+0-99 +sign_ed25519 8 74 46712 +381+73-3-9-56+67+27-63+16-54-27+0-35+19+38 +sign_ed25519 8 93 47485 +299+7-46+0-29-1+39-33-24+20-34+27+57+30-18 +sign_ed25519 8 117 47511 +390+111+6-37-3+0-34-66-23+10+17+21+44-33-14 +sign_ed25519 8 147 47487 +215+109-8+23-68+9-48-26+0+73-58+14-54+38-36 +sign_ed25519 8 184 48263 +256+95-71-26-16+0+36+19-64-47+44-23+8+26-32 +sign_ed25519 8 231 48939 +617+83-12-28+0+78+16-5-20-6+87-10+26-26+87 +sign_ed25519 8 289 49015 +423+177+2+77-74-3-60-76+0-68+91+65-5-14+44 +sign_ed25519 8 362 50485 +738+0-43-12+1-127-6-35-7+75-10+10+60+141+30 +sign_ed25519 8 453 51290 +458-27-38+0+0-86+97+1230+155+24-20-89+17-112-28 +sign_ed25519 8 567 52723 +442+55-123+115-15-43-49+71+85-24+37-59+0+39-54 +sign_ed25519 8 709 54188 +560+129+36-22-78-31+56+5-122-41+0+8-17+62-88 +sign_ed25519 8 887 56309 +533+121-26-33+0-101+70-10-31+127-43+51+42+80-15 +sign_ed25519 8 1109 59151 +704+263+86+26+62-30-73+13-26+5-26-9-12-25+0 +sign_ed25519 8 1387 62050 +797+116+34+0+30-28-119-30+51-18-48-16+40+15-32 +sign_ed25519 8 1734 65563 +1036+143-106-7+72-19+33-55+31+58-24-10+0-38+45 +sign_ed25519 8 2168 70577 +862+181+61-11-153-25+0+43-62+47-87+22-60-139+23 +sign_ed25519 8 2711 76189 +795+157-187+53-180+6-27-8+36-17+97+148-29-7+0 +sign_ed25519 8 3389 83891 +665+65+70+422-179+62+10+31-37-108-35-44+0-158-158 +sign_ed25519 8 4237 92525 +543+284+235-54-1+131+23-34-52-79+0-46+12-39+149 +sign_ed25519 8 5297 104161 +696+168-52+68-104+85-11+17-64+0+95+174-41-1-3 +sign_ed25519 8 6622 118707 +574+971+568+231-126-130+22-115-152+0-281+20-98+15-169 +sign_ed25519 8 8278 136480 +827+214-54+143+20+41-127-141-10+180-58+16+0-79-83 +sign_ed25519 8 10348 158385 +462+101-164+211+80-35-119+121+0-101+153-154-88-195+82 +sign_ed25519 8 12936 185605 +664+97+0-57+5-92+73-168+26-123-124+12-226+144-97 +sign_ed25519 8 16171 219800 +1050+78-81+60+19+0+11+0-154-128-73-70-62+176-83 +sign_ed25519 8 20214 263759 +2592+590+143+40+170+129-24-10-38-69-140-19+111-201+0 +sign_ed25519 8 25268 318044 +2749+174+188-90+47+129-57-80-137+30-127+0+37-153-10 +sign_ed25519 8 31586 385155 +2357+203+124-2+46-85+101-100+0-231+1711+656-176-6-83 +sign_ed25519 8 39483 469064 +3699+116-42+242+233+14-208-161+90-63-183+52+0-13-165 +sign_ed25519 8 49354 574284 +3539+141-281-233-261-227+5537+1009+82-134-109+87-85+0+94 +sign_ed25519 8 61693 706289 +4139+614+367-351-118-133+18+0-87-535+2216+1286-61+356-199 +sign_ed25519_open 8 0 159928 +7248+1327+834+301+127-227+174-161-32-270-382+0-168+40-170 +sign_ed25519_open 8 1 159311 +5672+1531+797+245-281+158-78-176-216+86-350-10+0+114-228 +sign_ed25519_open 8 2 158516 +5952+1549+896+472+114-48-168+166+0-108+108-378-274-68-40 +sign_ed25519_open 8 3 158906 +4952+1705+272+351+281+148-132-40+90-44-14-12+0-22-10 +sign_ed25519_open 8 4 159047 +5721+1425+666+272+158+0-95-254-41-176+26-326-95-427+15 +sign_ed25519_open 8 6 159282 +5182+962+231+327-371+40-64-227-117+2+0-283-189-56+142 +sign_ed25519_open 8 8 157837 +5733+1800+429+108+90-141-77+3-138-80-35+80-38+0-86 +sign_ed25519_open 8 11 155992 +5080+1727+651+188-136+246-76+51+121+0-250-194-6-198-178 +sign_ed25519_open 8 14 157157 +4844+2133+606+661+276+0-59-141-121+19-127-1+127-67-23 +sign_ed25519_open 8 18 159448 +5700+2570+1131+375+1826+208+109-157-272+0-31-167-72-210-167 +sign_ed25519_open 8 23 157743 +4553+1330+289+82+0-303+13+62-700-351-285-38-680-223+125 +sign_ed25519_open 8 29 155611 +5647+1657+1152+169+376+20-30-146-129-142-198-189+0-374+85 +sign_ed25519_open 8 37 158506 +4567+1020+169+0-24-135-111+58-351+11-12-20+10+48-252 +sign_ed25519_open 8 47 158845 +4903+949+331+354+436-131+23-127-184-118+0-144-48-64+2 +sign_ed25519_open 8 59 159187 +5097+1723+223+72-176+0+104-128-152-130+794+9-68-319-233 +sign_ed25519_open 8 74 159325 +5342+1466+1099+355+208-10+197-164-256+0-254-340-310-58+30 +sign_ed25519_open 8 93 158784 +4883+1224+559+208-152+0+10-34-114-320-228-38+52+2-196 +sign_ed25519_open 8 117 159574 +4531+1323+975+53-1+98+14+41-55-234-136-69-179+0-182 +sign_ed25519_open 8 147 158423 +5200+1454+366+71+60-154+251-33+38-4-115-27+0-198-183 +sign_ed25519_open 8 184 159204 +4924+1148+181+121+93-74+174-175-129+20-72-117-21-54+0 +sign_ed25519_open 8 231 160737 +5684+1390+574+100-90-118-145+0-1-25-34+3+34-132+11 +sign_ed25519_open 8 289 159431 +6011+1227+497+311-33-60-133+137-104+18-194+108-135-139+0 +sign_ed25519_open 8 362 161010 +5049+1625+713+290+150+356-100-96-146+0-70-196-128-24+134 +sign_ed25519_open 8 453 163155 +5367+1174+1007-48-5+394+31+0+161-139-348-281+1-221-191 +sign_ed25519_open 8 567 161521 +5740+1032+281+363+168-398-82-172-112-346-124-44+98+210+0 +sign_ed25519_open 8 709 163957 +5540+1207+745+210+649+310+0-259-233-222-116-41-251-342+142 +sign_ed25519_open 8 887 163615 +4989+1694+367+403+174+228-364+0+52-166-214-291-45-60-124 +sign_ed25519_open 8 1109 165736 +5409+1651+889+178+212-63+12+0-226-340+85-296-139-120-250 +sign_ed25519_open 8 1387 168140 +5650+2001+984+804-45+7-124-19+176-79-143-38+36+0-166 +sign_ed25519_open 8 1734 167575 +5735+2572+1147+615+157+50+0-48-32+286-130-55-209-55-183 +sign_ed25519_open 8 2168 169748 +4261+2084+983+456+161+1241-9-17-178+161-127-3+0-290-82 +sign_ed25519_open 8 2711 174644 +5025+1461+131+118+13-9+173-81+0-146+11-417-677-382-447 +sign_ed25519_open 8 3389 178821 +5085+1790+430+107+0+137-103-194-251+30-329-252-278-250+99 +sign_ed25519_open 8 4237 185277 +4968+1724+817+747-11+345+0+50-230-79-382-158-407+6-358 +sign_ed25519_open 8 5297 190052 +5331+1822+1424+528+136+102-67-106+64+0-90-25-170-271-101 +sign_ed25519_open 8 6622 195202 +5342+1582+740-52-160+0-55+127+204-278-121+63-137+76-358 +sign_ed25519_open 8 8278 203883 +5135+1284+558+117+263-198-64-97-485+198-223+117+0-20-325 +sign_ed25519_open 8 10348 214057 +5170+1925+1086+1134+283-56+0-218-296+168-42+22-486-170-2 +sign_ed25519_open 8 12936 228364 +5751+2009+904+753+219-180+103-474-588-281-199-381+656-86+0 +sign_ed25519_open 8 16171 245858 +6214+2414+681+527+0+0-434-134-389+93-68-147-155+45-140 +sign_ed25519_open 8 20214 269268 +5597+763+440+116+224+49-219-288-331-162-385-321+427-313+0 +sign_ed25519_open 8 25268 296816 +4915+1697+1424-50+86+182-192-263-203-49-416-134+1695+27+0 +sign_ed25519_open 8 31586 334779 +5018+1842+447-70+159-79+34+0-47-189-143+32+26-92-214 +sign_ed25519_open 8 39483 378109 +4947+1885+1256+284+214-301+126-113-130+0-93+39-93-49-285 +sign_ed25519_open 8 49354 433952 +5704+2207+967+546+528+87+655-288-245-134-330-216+0-64-303 +sign_ed25519_open 8 61693 499774 +5861+1124+490-7+0-206-354-324-221+2918+304+174+14-66-259 +sign_ed25519 9 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 9 32 42609 +2562-15+60+29-28+4+30+0-22+28-43-78-42+21-13 +sign_ed25519 9 0 46185 +5396+102+3+39-79+51+8-3-48+0-56+30-5-1-11 +sign_ed25519 9 1 46102 +795+132+128-28-39+53-4+0+72-59+1-37+116-38-7 +sign_ed25519 9 2 46131 +459+118-31+29-100+82+0-5-37+68+8+203-11-59-72 +sign_ed25519 9 3 46131 +416+32+33-10+0+5-26-7+7-3+37-33-32+25-35 +sign_ed25519 9 4 46145 +400+47-79+8+96-26-24-68+64+70+0-4+14-34-24 +sign_ed25519 9 6 46166 +435+122+23-10+29-58-70+81-75+21+0-11-14+30-65 +sign_ed25519 9 8 46133 +452+138-73+0+0-75-13-11+62+31-18+42-35+56+93 +sign_ed25519 9 11 46141 +431+107+8-44+4+0-39+41+26-20-27-5-19+23-69 +sign_ed25519 9 14 46157 +294-41-94-91+77+20+34-13-10-2-35+27+21+0+20 +sign_ed25519 9 18 46141 +376+59-118-27+16-17-89-22-63-90+29+25+0+99+103 +sign_ed25519 9 23 46149 +365+1206+117+121+10-16-1-115+0-75-20-23+32-49+53 +sign_ed25519 9 29 46145 +346+62+59+189-30-17-48+12+0+3+17-66-25-14-45 +sign_ed25519 9 37 46156 +404+87+0-123+20-61-26-1-50+65-51-22+22+4+65 +sign_ed25519 9 47 46126 +388+91-27-6-66+19-23+11+54-11+0+56+56-19-6 +sign_ed25519 9 59 46899 +629+188+82+0-72+10-22-105-15-8+0-58+28-47+2 +sign_ed25519 9 74 46915 +448+191-38+106-41-56-28+72-29-2+1-18+0+54+16 +sign_ed25519 9 93 47659 +609+60+41-18-29-9+92-2+1-5+27+0+22-22-3 +sign_ed25519 9 117 47724 +421+38-60+137-11+21-90+48-35+44+49-94+0-53-110 +sign_ed25519 9 147 47724 +314+33-19+33+0-42+2-130-45-86-30+0+38+16-47 +sign_ed25519 9 184 48468 +597+162+41-5+24-35+74-9-28-57+181+41+0-35-19 +sign_ed25519 9 231 49188 +304+80+57-15+15+53-26+0+9-8-9+4-33-57-4 +sign_ed25519 9 289 49194 +608+70+18-22+0+111+55-12+33-22-5-14+144-9-28 +sign_ed25519 9 362 50715 +677+0+9-100-28-32+8-79+58-65+72+41-19-64+28 +sign_ed25519 9 453 51505 +464+124-74-67+0-103+9+0-113+27-77+53-83+63-6 +sign_ed25519 9 567 52921 +471+71-10+97-30-21+0+76+3+32-144-75-16-56+96 +sign_ed25519 9 709 54421 +453+78-45+46+70-51-57+19-40+28-20+24-122+0-17 +sign_ed25519 9 887 56602 +642+0-181-35+15+14-87-112-127-18+114+20+1097+79-22 +sign_ed25519 9 1109 59540 +732+5+9-102+16-100-29-8-69+67+31+69+0-36-29 +sign_ed25519 9 1387 62293 +896+246+82-119-133-13-46+52+20+0-26+53-71+140-41 +sign_ed25519 9 1734 65824 +849+152-27-4-38+86+82-37+0-42-2+103+26+0+27 +sign_ed25519 9 2168 70838 +815+122+96+91-147-9-52-79-36+60+0+47+26-108-191 +sign_ed25519 9 2711 76438 +765+24-60-215-277-50-3+56+130-12+99+44+0-72+1 +sign_ed25519 9 3389 84066 +565+204+14-13-56+224-37+127-114-113+7+0-139-89+47 +sign_ed25519 9 4237 92761 +616+139+109-57+19-103+0-43+11+143-77-98+46-83-1 +sign_ed25519 9 5297 104362 +803+169+176-54-100-26-38-17+19+36+60-8-87+0+22 +sign_ed25519 9 6622 118739 +822+297-63-8-86+64+122+14+264+3-116+0-85-91-94 +sign_ed25519 9 8278 136764 +545+147-285-85+34-16+0+22+1518-158-7+9+266-128-35 +sign_ed25519 9 10348 158438 +1081-200+20-189-33+103+230+58+75+0-303-87-233+81-66 +sign_ed25519 9 12936 185730 +710+105-38+18-234-130+0+20-335+2-100+33-27+42-131 +sign_ed25519 9 16171 219826 +1265+122-32-75-101-38-61+0+102+175-36+306+101-37+30 +sign_ed25519 9 20214 263636 +1851-6-25+57-47-214+42+13-42-100+263+1809+1355+0-113 +sign_ed25519 9 25268 318139 +2809+45+27+13-168+124+0-34-98-153+56-8-172+31-61 +sign_ed25519 9 31586 385247 +2656+383-93-12+151+76-131-65+0-69+52+0-56+310+58 +sign_ed25519 9 39483 469731 +3036+3064+33-50-253-148+91+13+61+14-178-201-123-338+0 +sign_ed25519 9 49354 574643 +3777+392+0+52+212-286-21-21-219-616-32+3035+605-181+145 +sign_ed25519 9 61693 706944 +3263+249-192-353-276+21+48+82-84+0+133-371-21+484-289 +sign_ed25519_open 9 0 157457 +7958+1597+704+581+271+160-392-206-169+0-157-96-474+94-134 +sign_ed25519_open 9 1 160193 +5898+1728+900+323+140-27-66-70+20+0-2-149-183+88-102 +sign_ed25519_open 9 2 159306 +5441+1926+387+510-236+0-204-252-14+40+28-606-256+108-244 +sign_ed25519_open 9 3 159653 +4994+1553+158+97+126+33+0-303-255-51-247-468+109-42-357 +sign_ed25519_open 9 4 156301 +6169+1884+611+172+180-266+96-158-14-51-241+0-16-144+58 +sign_ed25519_open 9 6 158259 +4078+2795+552+238+61-197+0-224+193+35-36-344-273-81-332 +sign_ed25519_open 9 8 157160 +6105+1731+207-6+0+10-31+96+89-95-151-24+57-41-13 +sign_ed25519_open 9 11 157378 +4858+844+157+198+240-38+0+62-230-242-106-102-114+56-134 +sign_ed25519_open 9 14 158380 +6199+1914+821+257-230-54-50+88-116-78+2+152+0-76-84 +sign_ed25519_open 9 18 160609 +4180+1595+756+209-54-88-131-69-50-32+54+215+104-3+0 +sign_ed25519_open 9 23 158354 +5028+1862+851+106-69+0+57+759-241+25-236-250-308-90-468 +sign_ed25519_open 9 29 159262 +4990+1300+712+65+268+101+0-135-48-31+48-85-80-35-162 +sign_ed25519_open 9 37 156337 +6001+1573+530+182+238+141+3-381-84+0-137-45-122-28-471 +sign_ed25519_open 9 47 158856 +5280+1498+671+458+59+269-46-116-163-197+0-134-327-105+60 +sign_ed25519_open 9 59 161612 +5905+1720+714+306-194+111-70-70+0+145-29-82-6+53-59 +sign_ed25519_open 9 74 161852 +5942+2085+1097+602+239-90-98-296-144+0-200-20+1209+176-159 +sign_ed25519_open 9 93 159566 +5630+1047+1014+417+352+236-116+0-120-34-142+38-178-54-184 +sign_ed25519_open 9 117 160342 +5614+1522+260+189-22-68-17+16+21-65+0-216+7-97-324 +sign_ed25519_open 9 147 157897 +5331+1463+276+225-250+0-79-28+75+126+85-42-13-218-9 +sign_ed25519_open 9 184 160707 +4976+2047+185+162+158-101-178-61+145-78+0-183+125-28-42 +sign_ed25519_open 9 231 161233 +5027+1488+379+924+134-193-209+0-82-113-205+44-60+131-387 +sign_ed25519_open 9 289 160692 +5416+1803+659+152+248-88+0-116-52-72-208+22-54+52-126 +sign_ed25519_open 9 362 162108 +4875+953+819+216+49+142+126+0-94-188-114-104-140-2-244 +sign_ed25519_open 9 453 162806 +5580+1665+1350+0+0-100-146-306-118-64+54-246+38-202+60 +sign_ed25519_open 9 567 161245 +5649+2038+1073+654+50-13-227-171+40+154-257+0-57-10-33 +sign_ed25519_open 9 709 161955 +5730+2024+1222+615-34+492-103-287-196+118-79-235+0+234-217 +sign_ed25519_open 9 887 164434 +4770+1890+532+162+1968+0+177-124-329-320-120+108-170-90-176 +sign_ed25519_open 9 1109 166630 +5008+1638+545-34+120+200-147+0-40-36-59+90-147+29-164 +sign_ed25519_open 9 1387 167136 +5415+2211+1084+514+0-294+16+180-160-256-222-222+42-62-132 +sign_ed25519_open 9 1734 170874 +5077+1734+877+409-12-170-164+240+0+262-268-160+82-146-226 +sign_ed25519_open 9 2168 173083 +5061+2242+1105+522+182-68-4+290-24+334-84+0-256-256-238 +sign_ed25519_open 9 2711 174014 +4802+2450+848+367+1483+33+0+16-145-427-244-310-267-161-226 +sign_ed25519_open 9 3389 178564 +4443+1167+788+258+201+31-290-134-300+49-361-480-364+0-578 +sign_ed25519_open 9 4237 182900 +5465+2517+1111+871+149+180-137+147-21-141-45-277+0-12-307 +sign_ed25519_open 9 5297 189580 +4882+2171+779+675+144+159+48-136+0-182-116-278-338-104-102 +sign_ed25519_open 9 6622 196828 +5621+1863+140+2+247+0-1-54-204+301-36-61+977-129-9 +sign_ed25519_open 9 8278 204638 +5958+1471+1128-172+624-182+330+0+150-414-124-324-100+76-224 +sign_ed25519_open 9 10348 216972 +5551+952+591+121+117+0-162+2-12-80-486-298+38-24-212 +sign_ed25519_open 9 12936 230926 +5385+1445+789+354+334+100+136-236+0-154-460-290-282-406-380 +sign_ed25519_open 9 16171 245411 +5519+1455+374+270-71-120+1675+58-540-216-156+0-165+22-224 +sign_ed25519_open 9 20214 271288 +6153+1206+359+34-142-100+0-88+154-501+45-66-55-275+162 +sign_ed25519_open 9 25268 299803 +5261+1506+342+242+462-43-307-293-116+0+25+39-347-115-67 +sign_ed25519_open 9 31586 336003 +3429+1121+2369+496-353+0+225-368-446+13+87-88-522-268-375 +sign_ed25519_open 9 39483 378296 +4882+1735+785+464+139+0+102-236-136-240-331-495-233+213-245 +sign_ed25519_open 9 49354 432283 +5982+2284+1036+3126+611-67-318+321-10-407-160-257+0-153+43 +sign_ed25519_open 9 61693 498880 +6818+1691+820+340-17-83+0-92-121+147-242-57-13+111+2443 +sign_ed25519 10 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 10 32 42547 +2476+70+46+43+58+0-20-19+88-50-23+21-49-69-13 +sign_ed25519 10 0 45937 +4865+166+29-85-8-50+24-28-7+50-22+54-72+0+40 +sign_ed25519 10 1 45926 +595+84-3-53+66+15+34-4+39+17+0-32-41-26-37 +sign_ed25519 10 2 45935 +445+112-69+12+91+42-32-55+0-3-17-45+28+38-93 +sign_ed25519 10 3 46060 +1095+17-31-61+0+9-50-83+1+79+3-101-26+128-87 +sign_ed25519 10 4 45940 +413+70+0-16-100-57+37-37+33+81-22+40-66+6-21 +sign_ed25519 10 6 45955 +351+87-114+27+15-48-41-8+8+16-54-25+0+1-39 +sign_ed25519 10 8 45915 +335+91-25-8-20-9+14+0-77-2+41-5+51+45+175 +sign_ed25519 10 11 45903 +401+22+80-31+47+0+32-54-107-35+59-57-35+33-99 +sign_ed25519 10 14 45894 +275+107+47+38+0+36+5-72-76-39+0+34-8-7-33 +sign_ed25519 10 18 45930 +310+34+65+0-56-143+19-72-10+34-32+17-77-2+30 +sign_ed25519 10 23 45916 +310-37-61-27+46+54-21-29+7-21+13+62+23+0-59 +sign_ed25519 10 29 45937 +337-31+46+31-74-50+4-56+0+23-77-52+41-6+32 +sign_ed25519 10 37 45956 +209+23+22+22-22-10+44+26-48-42+128-33-120+0-112 +sign_ed25519 10 47 46003 +252+48-81+79-84+21+991+0-25+85-23+57-19-19-27 +sign_ed25519 10 59 46674 +400+227+43+0+13+19-18-110-6-11-8+24-40+31-76 +sign_ed25519 10 74 46757 +441+174+60+27+27+4-61+38-24+0-49-7-15-58-75 +sign_ed25519 10 93 47473 +467+116+23-29+0-17+8+76-18+27-68-53-44+46-37 +sign_ed25519 10 117 47471 +463+193-15+59-71+33+25+40+18-3-25-78+0-3-35 +sign_ed25519 10 147 47509 +309+55+115+21+52-55+95-63+33-81-84+0-78-35-28 +sign_ed25519 10 184 48248 +632+117+16+47-112-79-35-25-32+0+19+63+71-53-25 +sign_ed25519 10 231 49024 +428+94+11+31-14-50-112+0+63-34+71-23+47-57-54 +sign_ed25519 10 289 49055 +645+26-56+115+13-61-117-59+0-107-16+12+52-102+28 +sign_ed25519 10 362 50479 +464+53+35+141+0-74+6-30+23+11-11-41-14-62-30 +sign_ed25519 10 453 51273 +640+125+27-79-52+0+11-69+6-100-137+40+29-72-126 +sign_ed25519 10 567 52747 +536+113-65-2+129+59+11-17+0-166+17-128-39-59+0 +sign_ed25519 10 709 54147 +726+161+86-8+0-10-7+12+47-40-104-11-14+0+20 +sign_ed25519 10 887 56316 +586+60-37+132-27-10+33+63-79+35+23-30-33+0-31 +sign_ed25519 10 1109 59254 +613+215+119+19-63-120-47-107+11+55+24-24+0-43-42 +sign_ed25519 10 1387 62078 +715+118+94+42+16+0-102-13-22+20-76+64-14-74-67 +sign_ed25519 10 1734 65663 +844+76+0-71+116+1100+287+63-56-98-26-60+19-134-79 +sign_ed25519 10 2168 70736 +860+0+0+39+128+219+79+18-44-97-193-113-53-18-237 +sign_ed25519 10 2711 76300 +652+29-68+113-76-50+112-21+38+0+26-158-34-64+39 +sign_ed25519 10 3389 84016 +295-25-45+110+80+50+121+107+0+44-77-84-48-88-126 +sign_ed25519 10 4237 92598 +742-55+9+210+65-74+0-56-36+26+146+57-63-7-47 +sign_ed25519 10 5297 104366 +603+27-127+102-175+35+61-82+0+38-26-4+120-12-44 +sign_ed25519 10 6622 118702 +962-39+46+188+43-39-214+0-124-59+34-19+9+72-57 +sign_ed25519 10 8278 136628 +710+249+63-221-304+12-179-142-37+0+35-246-148+120+33 +sign_ed25519 10 10348 158500 +664-226+66+127-84-59-282-331-210+1028+202+0+71+23-3 +sign_ed25519 10 12936 185676 +867+0-132-287-27-45-155+135+82-187-27+105+144+117+114 +sign_ed25519 10 16171 219914 +899-58+113+134-10+110+64-200+0-92-65-2+1+53-146 +sign_ed25519 10 20214 263446 +1817+123+64-40+10+230+0-20+38-133-95-86+47-16-128 +sign_ed25519 10 25268 318158 +2214+102-96-124+1723+52-27+33-327+178+132-5+0-133-82 +sign_ed25519 10 31586 385294 +3043-100-35+24-13+56+93+130+54+0-46+87-181-76-221 +sign_ed25519 10 39483 469359 +3443-94-63-41+101-27-73+1983+173+8+0+201-223+134-53 +sign_ed25519 10 49354 574304 +3529+345+88+200+97+0+145+18-48-11-184-131-84-106-109 +sign_ed25519 10 61693 706409 +4260+344+188-67+610+50-274-221-249+0+292-333-198+14-62 +sign_ed25519_open 10 0 159157 +7445+1886+292+300+23-59-298-330-99+47-78+0+1409-81-288 +sign_ed25519_open 10 1 158963 +4870+1363+483+465-49-39-69-79-69+3+143+140-195-27+0 +sign_ed25519_open 10 2 158064 +5822+2586+666+335+24-73+30-53-104-67+40-197-154-199+0 +sign_ed25519_open 10 3 160418 +4962+1143+337+555+0-42-210-430+230-288-198+0-86-232+228 +sign_ed25519_open 10 4 157908 +5946+1896+1002+451+0+224-104-100-288-440-114+70+216-72-98 +sign_ed25519_open 10 6 159715 +4894+1632+661+257+289+0-74+189+259-60-90-259-77-162-8 +sign_ed25519_open 10 8 156508 +5015+2971+756+576+109+0-112-45+37-242-200+37-259-262-222 +sign_ed25519_open 10 11 155698 +4826+1053+380+82-7+110+86-79+23-246-110-53-109+0-79 +sign_ed25519_open 10 14 159294 +5021+2028+1575+1009+398-10+79-135+0-114-73-15+2-200-1 +sign_ed25519_open 10 18 156572 +5279+1706+936+588+560+187+65-39+0-9-178-74-122-163-117 +sign_ed25519_open 10 23 159960 +5038+1704+737+242+113-136+150+0+309-133-292-61-335-218-176 +sign_ed25519_open 10 29 157554 +5399+1575+838+466-2-369-57-215+700-171-42+122+240-72+0 +sign_ed25519_open 10 37 155742 +6073+2108+1076+320-107-74-62+194-183+4+0+77-53-100-148 +sign_ed25519_open 10 47 159418 +4633+1212+672+9+0+19-165-285-269-127-267+65-221+5-177 +sign_ed25519_open 10 59 159192 +5726+1170+695+484+57-353+12+49-132-113+0-68-71-32-19 +sign_ed25519_open 10 74 159850 +5522+1550+672+448+43-48+0-215+45-6-220-247+41-360-270 +sign_ed25519_open 10 93 160441 +5298+1632+661+494+0-138+58+26-324-310-194-234-308+1237-94 +sign_ed25519_open 10 117 161514 +4796+1713+430+246+86-307-195-333-271+26+40-298+0-258-468 +sign_ed25519_open 10 147 160764 +5071+1665+751+348-70-36-39+0+147+102+100-134-84-184-252 +sign_ed25519_open 10 184 161245 +4699+1898+732+339+418-107+28+136-65-109-46+0-63-106-21 +sign_ed25519_open 10 231 161024 +3662+1619+401+290+59+4-70+44-362-74-14+0-180-32-14 +sign_ed25519_open 10 289 159205 +5396+1555+776+309+49+78+18+0-31-46-198-71-86-34-177 +sign_ed25519_open 10 362 162207 +5400+3292+628+585-106+55-133-159+0+10-29-29+66-70-169 +sign_ed25519_open 10 453 161783 +5694+2283+1163+636+239+214-164+0-280-88-299+116-29-250-383 +sign_ed25519_open 10 567 163394 +5201+1467+1320+604+265+88-94-45-169-292-70-47-9+48+0 +sign_ed25519_open 10 709 164153 +4931+2227+928+456-24+0+108-149+97-260-14-192-44+90-278 +sign_ed25519_open 10 887 163447 +5487+1603+1010+802+83-353-190+192-4-70-88+68+0-2-62 +sign_ed25519_open 10 1109 166980 +5452+1743+997+606+1459+380+0-96-120+62-7-217-178-20-322 +sign_ed25519_open 10 1387 166914 +5745+1604+1080+753+32+115+97-144-92-208-78-178-262+0-172 +sign_ed25519_open 10 1734 170320 +5214+1679+802+715+365+156-54+110+0-22-100-10-138-16-28 +sign_ed25519_open 10 2168 170306 +5456+2478+546+160+185+131-269-90+0-111+58-275-4-169-84 +sign_ed25519_open 10 2711 173614 +4789+2143+1502+656+277+20-94-36-156+72-150-168-254-206+0 +sign_ed25519_open 10 3389 177536 +4665+1552+368+1516+157+65-29+0+176-236-98-34-263-287-22 +sign_ed25519_open 10 4237 182322 +5150+1745+485+335+311-160+0-162-222-10+70-94-252+34-222 +sign_ed25519_open 10 5297 188675 +4973+2204+1068+257+399-203-282+61+88-165-19-152+0-343-91 +sign_ed25519_open 10 6622 195642 +5748+1363+469+249+436-211-166-102+0-184+154-126-204+58-8 +sign_ed25519_open 10 8278 205588 +5344+1619+395+362-347+112-142+131-232+928-188+0-532-95-274 +sign_ed25519_open 10 10348 215117 +5576+2020+1054+592-217+247+183-183+74-552-281-375-82+0-332 +sign_ed25519_open 10 12936 226940 +6295+2478+791+605+191-141+304-32+113-147-106-156-33-57+0 +sign_ed25519_open 10 16171 246634 +5785+1036+475+564+0-461+140+139-554-496-377-140+127-240-404 +sign_ed25519_open 10 20214 271496 +7523+1884+1015-147+409+76+0+129+288-209-193-322-101-340-22 +sign_ed25519_open 10 25268 297251 +6209+1710+845+483-272+205-113-112-157-305+153-35-181+8+0 +sign_ed25519_open 10 31586 332522 +4247+1439+882+180-154-108-156-171+0-231+623+17-70+383-327 +sign_ed25519_open 10 39483 378055 +4908+1208+440+97+241-507+95+0-546-356+151-179-236-313-269 +sign_ed25519_open 10 49354 430906 +6412+1817+388+136+89+56-448-44-505+0+2247-228-356-649-466 +sign_ed25519_open 10 61693 497929 +6650+1392+654+130-252-21-357+72+0-1+725-33-1-21+445 +sign_ed25519 11 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 11 32 42567 +2509+25-14-97+29-61+26-98+1248+355-60+0+15-13-2 +sign_ed25519 11 0 46216 +8197+11-15+39-66+22-8-50-126-50-77+27+66+0+2 +sign_ed25519 11 1 46091 +753+152-23-27+53-31+0-35-29+54+54+9-47+59+0 +sign_ed25519 11 2 46175 +458+30+0-84-65+93-60+65-27+28-96+12+0-12+49 +sign_ed25519 11 3 46161 +447+35+0+32-47+106+67-46-26-3-44-32+75-12+52 +sign_ed25519 11 4 46135 +460+45+72-61-43-76-58-20+186+40+63-89+62-138+0 +sign_ed25519 11 6 46153 +437+162-19-47-91-36+30+15+13+0+1-6-50+70-63 +sign_ed25519 11 8 46155 +417+137-35-59+44-75+16-9-75+79-37+0+56-89+38 +sign_ed25519 11 11 46165 +457+71-88-85+127+5-18+72-59+67-5-49+0+22-56 +sign_ed25519 11 14 46125 +454+111-102-15-4-39+8+45-14+78+0-14-47+80+55 +sign_ed25519 11 18 46270 +1704+136-102-62+15-64-119-10+94+0-65-97+55+26+112 +sign_ed25519 11 23 46111 +607+59-8+5-74-21-38+27-32+13-111+28-58+0+52 +sign_ed25519 11 29 46145 +429+64-67+24-4+74+49+0+18-65-22-59-7-58+24 +sign_ed25519 11 37 46161 +483+58+53-8+0-49+3-9-3-91-41+35+13+12-94 +sign_ed25519 11 47 46102 +522+147+152-38-35+0+39+25+41-9+9-53-38-14-25 +sign_ed25519 11 59 46931 +593+96-14+134-70-66+20+41-93+0-21-46-96+14+3 +sign_ed25519 11 74 46955 +485-17+53+32+15+3+47-93+77-48-31-68+0-58-100 +sign_ed25519 11 93 47667 +569-33+30-8+27+9-28+82-59+0+84-40+10-124-29 +sign_ed25519 11 117 47703 +657+107+1216+235-31+73+46-79-140-25-36+53-22+0-67 +sign_ed25519 11 147 47719 +544+155+56+69+0+32+9-40-126-73+16-62-37-24-61 +sign_ed25519 11 184 48498 +543+61+43-20+70+3-86-113+42-68+0-84-58-70+22 +sign_ed25519 11 231 49161 +740+209-27+17+19-1+105-118-75-63+0+67+32-43-32 +sign_ed25519 11 289 49201 +699+181+29+34-77-47+48-27-19+113+80-1-34+0-17 +sign_ed25519 11 362 50695 +641+29+0+24+28-19-40-56-94+152-65-101+5-79+53 +sign_ed25519 11 453 51488 +634+55+78-16-116-152+7-62-30+0+90-77+118+84-49 +sign_ed25519 11 567 52922 +715+159-126-13-88+16-82-128+55-14+69-51+9+0+56 +sign_ed25519 11 709 54381 +733+53+21-31+111-61-53-11+28+87+20-74-5+0+0 +sign_ed25519 11 887 56549 +716+162+32-70+192-11+78-61-37-50+6-1-50+50+0 +sign_ed25519 11 1109 59413 +993+96+67-43+96+70-55-78-98+36-95+0-64+55-78 +sign_ed25519 11 1387 62266 +1058+220+58+107+41-97+0-42-1-75-45+11-6+4-43 +sign_ed25519 11 1734 65776 +1042+173-74-65+111+13+52-39+0-87+26-126-69-31+84 +sign_ed25519 11 2168 70860 +881-67-21+150+82+172+31-105-65-46+0-83+68-38+75 +sign_ed25519 11 2711 76391 +820+158+0+84-71-56-90+74-50-50-51-131+993+138+10 +sign_ed25519 11 3389 84021 +1087+121+504+234+0+4+26-82-120-100-87-9+86-172-121 +sign_ed25519 11 4237 92815 +698+7+98+58-9-118+38-210-18-103+51-152+0-223+88 +sign_ed25519 11 5297 104334 +618-5-89+87+0-63-227+38+10-111-45-138+57+40+27 +sign_ed25519 11 6622 118752 +556-34+97+44-79-4+24-66-72+0-88+9+68+54-1 +sign_ed25519 11 8278 136601 +845+219+22-56+61+18+0-3-98-9-108+61+112-105-113 +sign_ed25519 11 10348 158411 +587+45+184-164-72-246-146-306+31+65+39-135+82-3+0 +sign_ed25519 11 12936 185650 +816+34-1-189-170-48-50-160+47+1691+388+93-93+61+0 +sign_ed25519 11 16171 219767 +2321+219+107-114+0+73-28-10-141-39-49-25+139+19+51 +sign_ed25519 11 20214 263381 +2348+110+0-183-72+43+198+129-104-24-11-72-178+46+16 +sign_ed25519 11 25268 318201 +2053+170-66+36-146+124-34+0-145+138-138-235-30+1525+128 +sign_ed25519 11 31586 385151 +3826+202-149+0+64-62+2-51-176-44+13+27+169-138-6 +sign_ed25519 11 39483 469549 +3454+209+201-321-180-36+33+0-221-459-144+9-248+3389+100 +sign_ed25519 11 49354 574390 +4325+451+292+151+29+38-47+6-238-20-95-187-1+0-130 +sign_ed25519 11 61693 706814 +4029+0-62+3804+783+43+129-316-236+87+2-89-83-94-17 +sign_ed25519_open 11 0 160614 +6988+2182+396+258-62-178-148-63+18-290-76-4+164+24+0 +sign_ed25519_open 11 1 158277 +5638+2632+948+395+0-77+130-357-192-261+41-290-302-321+1380 +sign_ed25519_open 11 2 159934 +4490+1573+1000+0-84+6-322+8-208-44-28-68+126-188+208 +sign_ed25519_open 11 3 160767 +4295+1416+538+168+0-140-110+120-120-96+14-220+196-72-108 +sign_ed25519_open 11 4 159915 +5973+1878+997+536+475-154-159-2-344-158+91-86+71-58+0 +sign_ed25519_open 11 6 159003 +5140+1880+557-135-74+158+62+168+128-208-4-560+0-484-94 +sign_ed25519_open 11 8 159289 +4926+1751+942+484+196+169-14-72-128+0-68-2-92-190+4 +sign_ed25519_open 11 11 157121 +5551+1780+1066+2332+235-109-46+0-20+93-55-72+212-49-271 +sign_ed25519_open 11 14 157600 +5207+1541+244+382+155+32+39+0-217-138-532-370-250-439-479 +sign_ed25519_open 11 18 158082 +5418+1662+1196+456-42+0+50-78-233-132-60+277+158-171-10 +sign_ed25519_open 11 23 159332 +4279+1361+1043+376+19+213-119-99+0-44-221+5-121-99-34 +sign_ed25519_open 11 29 159457 +4122+1354+953+719+63+276+0-309+13-188-140-431-21-110-154 +sign_ed25519_open 11 37 159132 +5221+2479+1034+275+341+67-273-109-209+1793-280-181-172-210+0 +sign_ed25519_open 11 47 159136 +5192+2364+781+556-258+196+0+0+186-108-182-40-132-106-72 +sign_ed25519_open 11 59 159050 +5202+2612+829+528-96+254-171-283-272+0+13-247-334-92+69 +sign_ed25519_open 11 74 158086 +6466+2066+402+104+0-100+140-52+96-140-174-30+60-196-164 +sign_ed25519_open 11 93 159861 +5092+2196+772+490-286+76-104-192-78+6+128-40-112-20+0 +sign_ed25519_open 11 117 160248 +4814+950+521-93+0+258+16+24-181-107-212-89-345-124+1637 +sign_ed25519_open 11 147 160603 +5133+2351+860+462+306-174-28-59+64+0-229-361-7+55-180 +sign_ed25519_open 11 184 159151 +5629+2168+1216+504+117+223+145+0-4-189-156-163-168-227-373 +sign_ed25519_open 11 231 160586 +4792+1581+888+540-331-20+0-9+162+152+167-235-259-284-132 +sign_ed25519_open 11 289 160058 +6361+2031+711+877+402+180-165+0-142+90-4-110-24-152-218 +sign_ed25519_open 11 362 162819 +4926+1933+916+508+154+0-72+60-15-221-84-216+15-231-134 +sign_ed25519_open 11 453 161563 +5203+2043+2701+468+79+0+320-51+112-35-110-45-27-171-214 +sign_ed25519_open 11 567 164222 +5307+1232+1301+209+61-151+110-238-464-332+122-394-41-217+0 +sign_ed25519_open 11 709 164277 +5831+2148+1237+634-13+152+191-100+0+117-31-186-51-167-269 +sign_ed25519_open 11 887 164804 +4802+1979+1038+384+141-22-38+0+52-140-208-24+239-210-143 +sign_ed25519_open 11 1109 168107 +5033+1867+1053+357+0-23-202+72-141-185+103-246-18+27-330 +sign_ed25519_open 11 1387 165975 +5686+1979+1515+545+1667-301-330-68+0-358-192-204+151-248+216 +sign_ed25519_open 11 1734 169150 +5337+1448+894+316+219-5+22+0-143+234-32-222-273-1-309 +sign_ed25519_open 11 2168 172944 +5297+2103+779+325+553+344+0-396+147-459-92-340-284-108-172 +sign_ed25519_open 11 2711 174746 +4071+2336+498+553+249+317+212-17-245-232-358+0-142-36-282 +sign_ed25519_open 11 3389 177802 +4691+2173+281+250-18+204+156+9-49-306-120-180-118-68+0 +sign_ed25519_open 11 4237 179348 +5183+3969+1055+389-365-37+66+0-258-176+89-158-341-128+82 +sign_ed25519_open 11 5297 190240 +4658+1693+879+135+294-106+49+49-169-280-121-59-49+0-82 +sign_ed25519_open 11 6622 196002 +5232+1723+580+472-185-44-140-46+327-215+0-80-32+342+108 +sign_ed25519_open 11 8278 206183 +4423+531+1163+61+321+343-77-97-65+246-16-121-145-442+0 +sign_ed25519_open 11 10348 215885 +6508+2225+891+0+1734+352-33+304-102-272-396+42-86-53-143 +sign_ed25519_open 11 12936 228957 +6499+1937+680+529-173+48-25+0-15-9-396+104-129-97+16 +sign_ed25519_open 11 16171 245243 +6085+1656+540+458-210-111-178+90+49+0-61-194+3-13-4 +sign_ed25519_open 11 20214 270169 +4953+1150+641-175+49-105-439+89-288+94+1362-289+0-433-240 +sign_ed25519_open 11 25268 298095 +4838+2172+585+320-41+142-195+290-90+0-10-193+73-183-117 +sign_ed25519_open 11 31586 334251 +4096+1353+583+528-153+190+0-336-101-328+132-14+7-497-26 +sign_ed25519_open 11 39483 378688 +6682+2226+1147+272-34+104-317-674+74+0+14-531-597-511-486 +sign_ed25519_open 11 49354 432506 +4495+1411+596+453-211-107-145+0+72+83-264+37-391-61-339 +sign_ed25519_open 11 61693 500128 +6944+1331+369+615+722-66+0-265+111-161-407-28-114-38+11 diff --git a/lib-25519/lib25519/benchmarks/wooden b/lib-25519/lib25519/benchmarks/wooden new file mode 100644 index 0000000000..2c3f17f2c0 --- /dev/null +++ b/lib-25519/lib25519/benchmarks/wooden @@ -0,0 +1,1112 @@ +lib25519 version 20221221 +lib25519 arch amd64 +cpuid 756e6547 6c65746e 49656e69 65746e49 2952286c 6c654320 6e6f7265 20295228 20555043 3534334a 20402035 30352e31 007a4847 00000000 00000000 000506c9 02200800 4ff8ebbf bfebfbff 00000000 2294e283 00000000 2c000400 00000000 00000000 00000101 2c100800 00000000 00000000 00000000 00000000 00000000 +cpucycles selected persecond 1500000000 +cpucycles selected implementation amd64-pmc +cpucycles selected 0 27 +19+17-2+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 0 45 +5936+89+0+0+0+0+0+0+1+0+0+0+0+0+0 +randombytes selected 1 122 +3899+75+10-1+7-3+0+0+0+0+0+0+0+0+0 +randombytes selected 2 129 +57+0+1-7+0-7+0-7+0-7+0-7+0-7+0 +randombytes selected 4 121 -1+6-2+2+2+0+0+0+0+0+0+0+0+0+0 +randombytes selected 7 122 -2+7+4+4+4-3+0+0+0+0+0+0+0+0+0 +randombytes selected 11 121 +6+5-2+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 17 123 -3-3+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 26 123 -3-3+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 40 123 +4-4+0-3+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 61 123 -3-1+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 92 128 -8+6-7-4+3+0+0+0+0+0+0+0+0+0+0 +randombytes selected 139 119 +8-6+0+7-2+0+0+0+0+0+0+0+0+0+0 +randombytes selected 209 124 +3-4-1-1-1+0+0+0+0+0+0+0+0+0+0 +randombytes selected 314 123 -3-3+0+1+1+0+0+0+0+0+0+0+0+0+0 +randombytes selected 472 119 +1-6+0+0+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 709 124 -4-3+0+0-7-5-5-5-5+2+6+2+2+2+2 +randombytes selected 1064 128 -7-6+1-1-1+0+0+0+0+0+0+0+0+0+0 +randombytes selected 1597 119 +8+2+2-5+0+0+0+0+0+0+0+0+0+0+0 +randombytes selected 2396 121 +0-1+1+1+1+0+0+0+0+0+0+0+0+0+0 +randombytes selected 3595 123 -3-2+1+1+1+0+0+0+0+0+0+0+0+0+0 +randombytes selected 5393 135 +6+7+7+7-1+0+0+0+0+0+0+0+0+0+0 +randombytes selected 8090 127 +13-8-5-5-5-6+131+49+2-8+3+0+0+0+0 +randombytes selected 12136 128 +72-1-1-1-1+0+0+0+0+0+0+0+0+0+0 +randombytes selected 18205 122 +54+2+0+0+0-1-1-1-1+150+116-3+0+0+0 +randombytes selected 27308 121 +6+6+0+0-7-3-3-3-3-3-3+105+21+0+3 +randombytes selected 40963 121 +58+1-4-2-2-2-2-2+128+20+5-2+2+0+0 +randombytes selected 61445 123 +61-1+100+12-2+0+0+0+0+140+116-4+0-2-2 +verify_32 selected implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 selected 32 36 +1271+46-5+2+0+0+0+0+0+0+0+0+0+0+0 +verify_32 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +verify_32 0 32 80 +1391-5+29+28+18+3+0+0+0+0+0+0+0+0+0 +verify_32 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +verify_32 1 32 36 +99+2+21+0+21+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected implementation compact compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 selected 0 151 +1302+28+3+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 1 151 +158+28+3+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 2 151 +151+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 4 151 +151+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 7 151 +151+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 11 151 +151+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 17 151 +146+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 26 151 +151+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 40 151 +152+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 61 151 +146+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 92 151 +146+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 139 2085 +5658+45+0+5-4+0+5-4+0+5-4+0+5-4+0 +hashblocks_sha512 selected 209 2085 +613+18+5-4+0+5-4+0+5-4+0+5-4+0+5 +hashblocks_sha512 selected 314 4004 +493+43+0-2+11+0-2+11+0-2+11+0-2+11+0 +hashblocks_sha512 selected 472 5959 +416+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 709 9794 +476+55+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 1064 15564 +430+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 1597 23260 +443+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 2396 34800 +445+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 3595 54038 +474+11-12+2-5+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 5393 80960 +433+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 selected 8090 121350 +401+0+0+0+0+0+0+696+6+0+0+0+0+0+0 +hashblocks_sha512 selected 12136 180978 +436+0+0+0+0+0+0+0+0+0+0-14+24+0+0 +hashblocks_sha512 selected 18205 273277 +451+2-12-12-12+616+1+0-11+21+0+0+0+0+0 +hashblocks_sha512 selected 27308 409643 +688+110+110+0-41-41+660+356-48-48+50+127-48-48-48 +hashblocks_sha512 selected 40963 615195 +943-25+689+75-24-24+336-29-12-12-12+14+796+0+0 +hashblocks_sha512 selected 61445 922625 +855-88-88+872-17-17+16+520+0+766+325-73-73-73+255 +hashblocks_sha512 0 implementation compact compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 0 0 151 +186+6+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 1 151 +188+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 2 151 +147+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 4 151 +167+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 7 151 +167+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 11 151 +168+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 17 151 +168+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 26 151 +168+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 40 151 +163+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 61 151 +163+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 92 151 +168+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 139 2090 +778+30+18+18+2-9-5+0-9-5+0-9-5+0-9 +hashblocks_sha512 0 209 2085 +438+7-4+0+5-4+0+5-4+0+5-4+0+5-4 +hashblocks_sha512 0 314 4011 +505+64+52+36-3+0+7-3+0+7-3+0+7-3+0 +hashblocks_sha512 0 472 5959 +444+8+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 709 9794 +496+55+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 1064 15564 +447-8+1+2+10-5+0+0+5+2-4+3-10+0+0 +hashblocks_sha512 0 1597 23260 +470-15+0-15+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 2396 34800 +471+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 3595 54038 +427+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 5393 80960 +462+0+0+0+0+0+0+0+0+0+0+0+0+0-21 +hashblocks_sha512 0 8090 121350 +437+0+0+0+0+859-39+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 12136 180978 +550+3+0+0+0+5-7+3+0+0+0+0+0+0+0 +hashblocks_sha512 0 18205 273334 +538-43-79+1406+603-19+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 0 27308 409624 +799+193+10-9-9-9+901+34+231+33+0+0+0+0+0 +hashblocks_sha512 0 40963 615188 +890-50+891-19-17+227-17-17+0+0+131+894+178-20-20 +hashblocks_sha512 0 61445 922737 +791-201+475+310-106-106+0+125-89+589+241-89-89-89+397 +hashblocks_sha512 1 implementation compact compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 1 0 91 +3303+26+5+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 1 91 +119+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 2 91 +113+5+16+3+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 4 91 +124+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 7 91 +124+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 11 91 +124+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 17 91 +124+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 26 91 +124+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 40 91 +124+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 61 91 +125+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 92 91 +125+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 139 2024 +2837+63+24-4+0+24-4+0+24-4+0+24-4+0+24 +hashblocks_sha512 1 209 2024 +542+31+6+24-4+0+24-4+0+24-4+0+24-4+0 +hashblocks_sha512 1 314 3953 +405+20+6+1-27+0+1-27+0+1-27+0+1-27+0 +hashblocks_sha512 1 472 5891 +376-19+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 709 9708 +438+71+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 1064 15449 +423+8+1-2+0+0+1+0+0+0+0+3+2+1+0 +hashblocks_sha512 1 1597 23094 +490+7+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 2396 34576 +490+7+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 3595 53706 +491+7+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 5393 80504 +554+7+0+0+0+0+0+0+0+0+0+0+0+0-2 +hashblocks_sha512 1 8090 120691 +783+5+0+1094+126+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 12136 180008 +1406+22+0+0+0+0-2+1+1+0+0+0+0+0+0 +hashblocks_sha512 1 18205 272145 +1120+4-14-14+1520+128+7+0+0+0+0+0+0+0+0 +hashblocks_sha512 1 27308 409190 +1400+211+5+0+0+829+585-9+31+26-7-7-7-7-7 +hashblocks_sha512 1 40963 615498 +1011+666+137-3-2+72+6-2+0+0+0+851+80-10-10 +hashblocks_sha512 1 61445 923202 +1176-18+771+40-61-61-49+35+13+702+16-56-82-82+0 +hashblocks_sha512 2 implementation compact2 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 2 0 151 +6592+13+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 1 151 +92+0-1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 2 151 +71+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 4 151 +68-1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 7 151 +91-1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 11 151 +91-1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 17 151 +91-1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 26 151 +91-1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 40 151 +91-1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 61 151 +92-2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 92 151 +92-2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 139 3276 +3770+62+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 209 3294 +234+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 314 6427 +211-2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 472 9532 +191-2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 709 15764 +290-2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 1064 25135 +207-20-18-18-3+0-24+7+3+33-4+15+9+25-22 +hashblocks_sha512 2 1597 37591 +410+8-5+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 2396 56297 +546-2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 3595 87467 +724-2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 5393 131121 +428+1152+942+62+115+123+15+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 8090 196592 +616-2+0+0+33+70+133+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 12136 293233 +700+742+218+169+209+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 2 18205 442920 +1019-1+0+1145+588+0+122+221-8-8-8-8-8-8+239 +hashblocks_sha512 2 27308 665159 +1352+15-52+18+43-14-14-14+2+1324-19+0+0+0+159 +hashblocks_sha512 2 40963 999377 +3870+227-36-36-36+93+737-99+204+0+0+22+912-95+0 +hashblocks_sha512 2 61445 1499131 +2990+710-307+19-310+6355+144-310-132+6583+0-259-27+6748-229 +hashblocks_sha512 3 implementation compact2 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 3 0 91 +3483+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 1 91 +60+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 2 91 +73+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 4 91 +73+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 7 91 +73+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 11 91 +73+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 17 91 +73+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 26 91 +73+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 40 91 +73+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 61 91 +73+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 92 91 +74+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 139 2848 +3532+245+1+17-13+0+17-13+0+17-13+0+17-13+0 +hashblocks_sha512 3 209 2849 +563+44+23+0+16-14-1+16-14-1+16-14-1+16-14 +hashblocks_sha512 3 314 5643 +472-26+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 472 8404 +402-26+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 709 13891 +396-26+0+0+0+0+0+0+0+0+0+0+0+0+798 +hashblocks_sha512 3 1064 22171 +474-20-27-27-11+38+0+48-36+12-4+15-14+25+30 +hashblocks_sha512 3 1597 33163 +523+140+10+17+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 2396 49692 +434-26+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 3595 77188 +472-26+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 5393 115716 +589-26+0+165+394+254+81+0+0+0+0+0+0+0+0 +hashblocks_sha512 3 8090 173516 +639-26+0+0+941+139+0+0+0+0+54+240+158+0+0 +hashblocks_sha512 3 12136 258800 +863+46+0+0+0+0+0+0+0+321+113+0+0+0+845 +hashblocks_sha512 3 18205 391064 +1110+9+0+266+238+0+0+0+0+0+0+0+508+1131+437 +hashblocks_sha512 3 27308 588154 +317-538+180+136+52+52+52+827-146-175-155-155-155-155+0 +hashblocks_sha512 3 40963 884480 +562-7-102+46+46+46+0+781-170-43-162-142-43+206+334 +hashblocks_sha512 3 61445 1326815 +133+0+925-411-13-206+6+571-62-1-41+749+15-222+5395 +hashblocks_sha512 4 implementation compact3 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 4 0 179 +3601+9+2+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 1 179 +101+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 2 179 +192+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 4 179 +192+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 7 179 +193+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 11 179 +192+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 17 179 +192+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 26 179 +192+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 40 179 +192+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 61 179 +193+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 92 179 +193+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 139 3603 +4311+40+13+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 209 3603 +340+2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 314 7052 +274+9+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 472 10415 +284+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 709 17205 +321+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 1064 27390 +340+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 1597 40970 +321+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 2396 61347 +324-4-7-7-7-6+1+23+0+23+29+32+78-7-7 +hashblocks_sha512 4 3595 95290 +327+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 4 5393 142820 +351+3+673+14+0+0+0+0+60+43+23+0+0+0+0 +hashblocks_sha512 4 8090 214115 +400+3+0+0+0+0+0+0+0+0+97+12+7+0+0 +hashblocks_sha512 4 12136 319360 +400+660+1+0+0+110+101+28+0+0+0+0+0+0+0 +hashblocks_sha512 4 18205 482332 +443+624+85+0+0+0+0+86+11+0+0+0+0+0+680 +hashblocks_sha512 4 27308 723603 +344-49-50+0+54-50+625+163+13-45-45-45+50-28+606 +hashblocks_sha512 4 40963 1086972 +504+0+0+132+607+0+88-1-6+619+199-5-5+87-5 +hashblocks_sha512 4 61445 1630470 +253+20+444+0-106-136+1633-121-27+616-30-138-62+470+50 +hashblocks_sha512 5 implementation compact3 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 5 0 91 +806+4+0+0+0+0+0+0+3-2+0+0+0+0+0 +hashblocks_sha512 5 1 91 +166+2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 2 91 +125+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 4 91 +125+1+0+0+0+0+1+0+0+0+1+0+0+0+0 +hashblocks_sha512 5 7 91 +125+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 11 91 +125+1+0+0+0+0+0+1+1+0+0+0+1+0+0 +hashblocks_sha512 5 17 91 +125+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 26 91 +126+1+0+0+1+0+0+1+0+0+0+0+0+0+0 +hashblocks_sha512 5 40 91 +128+1+0+1+0+0+0+0+0+2+1+1+0+0+0 +hashblocks_sha512 5 61 91 +126+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 92 91 +126+1+0+0+0+0+1+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 139 2991 +517+86+25+0+0+0+0-2+0+0+0+1+0+0-2 +hashblocks_sha512 5 209 2991 +218+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 314 5908 +86+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 472 8780 +88+8+0+0+0+0+1+0+4+1+0+0+8+0+0 +hashblocks_sha512 5 709 14557 +62+17+29-3-1-1+21-3-1+5+7+5-1+0-1 +hashblocks_sha512 5 1064 23220 +57+8+0+0+0+0+685+35+12-3+0+0+0+0+0 +hashblocks_sha512 5 1597 34772 +110+20+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 2396 52096 +171+7+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 3595 80976 +177+8+0+0+22+49+21+3+8+0+0+0+0+0+0 +hashblocks_sha512 5 5393 121408 +156+8+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 8090 182052 +337+14+60+20+731-5+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 5 12136 271578 +572+20+66+61-2-2-2-2-2-2+58+0-2+886+108 +hashblocks_sha512 5 18205 410296 +742+90-17+0+0+0+0+67-3+0+0+0+1989+48+0 +hashblocks_sha512 5 27308 615855 +478+224+7+0+10+36+611-363-102-102+59-102-102-102-102 +hashblocks_sha512 5 40963 924016 +1246-155-203-5-203+484+0+9-55-55+147-55+3331+429+512 +hashblocks_sha512 5 61445 1386135 +172+539-159-88-166+563+0-166+10+377+13-169-169-11+378 +hashblocks_sha512 6 implementation compact4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 6 0 179 +3094+3-3+0+1-3+0+1+1-4+1-3+0+1-3 +hashblocks_sha512 6 1 179 +147+3-4+1-3+0+1-3+0+1-3+0+1-3+0 +hashblocks_sha512 6 2 179 +138+3-4+1-3+0+1-3+0+1-3+0+1-3+0 +hashblocks_sha512 6 4 179 +138+3-4+1-3+0+1-3+0+1-3+0+1-3+0 +hashblocks_sha512 6 7 179 +138+3-4+1-3+0+1-3+0+1-3+0+1-3+0 +hashblocks_sha512 6 11 179 +138+3-4+1-3+0+1-3+0+1-3+0+1-3+0 +hashblocks_sha512 6 17 179 +138+3-4+1-3+0+1-3+0+1-3+0+1-3+0 +hashblocks_sha512 6 26 179 +138+3-4+1-3+0+1-3+0+1-3+0+1-3+0 +hashblocks_sha512 6 40 179 +138+3-3+0+1-3+0+1-3+0+1-3+0+1-3 +hashblocks_sha512 6 61 179 +138+3-3+0+1-3+0+1-3+0+1-3+0+1-3 +hashblocks_sha512 6 92 179 +138+2+1-3+0+1-3+0+1-3+0+1-3+0+1 +hashblocks_sha512 6 139 2509 +3140+56+13+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 209 2509 +366+6+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 314 4871 +351+2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 472 7176 +360+2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 709 11822 +350+2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 1064 18791 +369+2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 1597 28083 +365+2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 2396 42033 +356-10-12-12+8+23+0+4+9+8-9-2+5-4-12 +hashblocks_sha512 6 3595 65251 +341+3+0+648-10+0+0+0+1+0+0+0+0+0+0 +hashblocks_sha512 6 5393 97773 +451+2+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 8090 146556 +467+55+62+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 6 12136 218581 +402+3+0+669+81+73+24+0+1+0+0+0+0+0+0 +hashblocks_sha512 6 18205 330128 +458-1+128+28-4-4-4-4-3+740-14+0+91+77+0 +hashblocks_sha512 6 27308 495225 +410-44-49+0+53-49+781+89-47-47+5+37-47+36-46 +hashblocks_sha512 6 40963 743909 +488+653+5-11+21+105-11-11-11+674+0-11-11-11+105 +hashblocks_sha512 6 61445 1115736 +511+235-14-14+128+615-4+110-4-4+763+0+0+170+0 +hashblocks_sha512 7 implementation compact4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 7 0 91 +1924+39+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 1 91 +97+21+7+1+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 2 91 +42+5+16+5+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 4 91 +30+5+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 7 91 +111+5+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 11 91 +111+5+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 17 91 +15+5+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 26 91 +111+5+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 40 91 +112+5+2+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 61 91 +112+5+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 92 91 +112+5+2+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 139 2264 +3198+101+16+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 209 2264 +184+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 314 4476 +389+13+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 472 6624 +133+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 709 10964 +122+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 1064 17474 +151+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 1597 26154 +138+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 2396 39174 +146+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 3595 60874 +138+5+0+0+0+0+0+0+0+0+0+25+6+5+14 +hashblocks_sha512 7 5393 91254 +153+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 7 8090 136824 +837+78+0+0+0+0+0+0+0+0+4+40+17+4+0 +hashblocks_sha512 7 12136 204094 +346+9+0+0+0+0+0+0+0+0+0+0+35+53+15 +hashblocks_sha512 7 18205 308354 +1105+157-2+0+0+0+0+6+86-3-20-20-20-20-20 +hashblocks_sha512 7 27308 462686 +403+731+40-1-1-1-1-1+34+46+0+0+0+0+615 +hashblocks_sha512 7 40963 695200 +360+74-13-13+89-13+586+78+0+108+0+0+0+0+101 +hashblocks_sha512 7 61445 1042741 +455+189+0-31+764-16-19+88-2-14+677+172-9-9+108 +hashblocks_sha512 8 implementation inplace compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 8 0 83 +1666+19-1+0-2+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 1 83 +162+23+24+16-4+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 2 83 +50-4+0+17+0+0+0+0+0+0+18-4+0+0+0 +hashblocks_sha512 8 4 83 +56-4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 7 83 +50-4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 11 83 +50-4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 17 83 +9-1-2+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 26 83 +50-4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 40 82 +10+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 61 82 +51-3+1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 92 82 +11+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 139 2033 +13834+31+40+40+11+8-1+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 209 2033 +2103+21+24+20+1+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 314 3976 +2052+101+109+21+0-3+0+0-3+0+0-3+0+0-3 +hashblocks_sha512 8 472 5919 +1983+134+69+14-3+0-1-3+0-1-3+0-1-3+0 +hashblocks_sha512 8 709 9804 +2150+49+10-2+0+1-2+0+1-2+0+1-2+0+1 +hashblocks_sha512 8 1064 15640 +2232+50+34+42-3+3+2-7-4-6-7-5+2-6+0 +hashblocks_sha512 8 1597 23407 +2088+163+74+8+5-1-1-2+0-1-2+0-1-2+0 +hashblocks_sha512 8 2396 35063 +2198+64+9-3+0+0-3+0+0-3+0+0-3+0+0 +hashblocks_sha512 8 3595 54492 +2171+65+48+39+39+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 8 5393 81720 +2132+99+42+39+39+0+0+0+0+0+0+0+0+0+14 +hashblocks_sha512 8 8090 122520 +2224+9+0+0+1052+63+4+0+1+0+0+0+0+0+0 +hashblocks_sha512 8 12136 182751 +2547+4+0+0+0+16+40+23+1+0+0+0+0+0+0 +hashblocks_sha512 8 18205 276015 +2143+4-2-2+908+55+11+3+1+0+0+0+0+0+0 +hashblocks_sha512 8 27308 414230 +2458-75-5-2-2+884-93+3+48+10+0+0+0+0+0 +hashblocks_sha512 8 40963 622416 +2253+811-26-1+9+12-1-1+0+0+24+731+37+0+0 +hashblocks_sha512 8 61445 933572 +2373-15+956+53-21-20+35+16+769-13+0-11-11+62-10 +hashblocks_sha512 9 implementation inplace compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 9 0 118 +3510+34+13+0+1+0+0+2+0+0+2+0+0+2+0 +hashblocks_sha512 9 1 118 +143+0+1+18+2+0+2+0+0+2+0+0+2+0+0 +hashblocks_sha512 9 2 118 +141+0+1+17+2+0+2+0+0+2+0+0+2+0+0 +hashblocks_sha512 9 4 118 +148+0+1+17+2+0+2+0+0+2+0+0+2+0+0 +hashblocks_sha512 9 7 118 +141+0+1+17+2+0+2+0+0+2+0+0+2+0+0 +hashblocks_sha512 9 11 118 +141+0+1+0+0+2+0+0+2+0+0+2+0+0+2 +hashblocks_sha512 9 17 118 +141+0+1+0+0+2+0+0+2+0+0+2+0+0+2 +hashblocks_sha512 9 26 118 +141+0+1+0+0+2+0+0+2+0+0+2+0+0+2 +hashblocks_sha512 9 40 118 +142+0+1+2+0+0+2+0+0+2+0+0+2+0+0 +hashblocks_sha512 9 61 118 +142+0+1+2+0+0+2+0+0+2+0+0+2+0+0 +hashblocks_sha512 9 92 118 +144+0+1+0+2+0+0+2+0+0+2+0+0+2+0 +hashblocks_sha512 9 139 2435 +15291+14+13+26+0+0+0+0+18+1+0+0+0+0+0 +hashblocks_sha512 9 209 2433 +1694+4+0-1+0+0+0+0+0+0+0+0+0-2-3 +hashblocks_sha512 9 314 4755 +1664+37+23+2-1+0+0-3+0+0-3+0+0-3+0 +hashblocks_sha512 9 472 7072 +1910+71+45+4+0+0+2+0+0+2+0+0+2-1-3 +hashblocks_sha512 9 709 11711 +1712+76+22+0+0-3+0+0-3+0+0-3+0+0-3 +hashblocks_sha512 9 1064 18669 +1559+9+7+7-1+0-6-1+0-6-1+0-6-1+0 +hashblocks_sha512 9 1597 27942 +1603+58+32+0+3-3-2+3-3-2+3-3-2+3-3 +hashblocks_sha512 9 2396 41863 +1706+48+0+0-1+1+0-1+1+0-1+1+0-1+1 +hashblocks_sha512 9 3595 65057 +1768+43+8+12+12+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 9 5393 97528 +1881+15+16-21+5+3+0+1731+210+0+0+0+0+0+0 +hashblocks_sha512 9 8090 146227 +2312+0+0+0+0+0+0+0+0+0+0+0+0-37-11 +hashblocks_sha512 9 12136 218115 +2435+0+0+0+0+0+0+0+0+0+0+1595+263-8+8 +hashblocks_sha512 9 18205 329528 +3554+0+0+0+0+0+0-3-19+0+0+0+0+0+2186 +hashblocks_sha512 9 27308 497030 +2395-69-2-5-5-5-5+11+8+0+2054+12+0+0+18 +hashblocks_sha512 9 40963 748323 +1311-58+64+1468+9+0+0+19-7-7-7+1051+36-7-7 +hashblocks_sha512 9 61445 1122492 +1773+1057+41+11-3+0+1019-55-44-72-88-44+1663-8+20 +hashblocks_sha512 10 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 10 0 82 +4882+36+0+2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 1 83 +168+0-1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 2 83 +167+0-1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 4 83 +115+0-1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 7 83 +115+0-1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 11 83 +115+0-1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 17 83 +115+0-1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 26 83 +115+0-1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 40 82 +117+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 61 82 +117+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 92 83 +116+0-1+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 139 2022 +14275+28+4+32+7+6-4-3+0-4-3+0-4-3+0 +hashblocks_sha512 10 209 2019 +2161+12+10+3-1+0+3-1+0+3-1+0+3-1+0 +hashblocks_sha512 10 314 3952 +2178+91+69+22+3+0+18+13+0+0+0+0+0+0+0 +hashblocks_sha512 10 472 5884 +2180+106+82+21-2+18+12-2+0-1-2+0-1-2+0 +hashblocks_sha512 10 709 9755 +2194+43+17-9+990+33-7-7+11+6-7+0+0-7-7 +hashblocks_sha512 10 1064 15547 +2266+70+70+70+12+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 1597 23276 +2256+166+98+10-4+0-2-4+0-2-4+9-4+23+10 +hashblocks_sha512 10 2396 34867 +2182+91+9-1+8-6+4+0-5-3+0-5-3+0-5 +hashblocks_sha512 10 3595 54186 +2214+87+70+70+70+7+0+0-5+0+0-5+0+0-5 +hashblocks_sha512 10 5393 81262 +2094+80+60+56+56-4+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 8090 121834 +2257+3+27+17+0-1+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 10 12136 181721 +2639+4+0+0+0+0+0+0+30+18+23+0+0+0+0 +hashblocks_sha512 10 18205 274464 +2345-3-5-5-5-5+2+43-10+903+225-4+0+0+0 +hashblocks_sha512 10 27308 411899 +2459+35+11+0+0+0+0+0+0+1515+133-3-3-3-3 +hashblocks_sha512 10 40963 618911 +2269-13-8-8+800+39+48-6+0+0+0+24+0+0+665 +hashblocks_sha512 10 61445 928352 +2153-57-59+25+881+3107-68+0-70-70+1624+22-73-73+40 +hashblocks_sha512 11 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 11 0 117 +3600-1+0+0+2-1+0+2-1+0+2-1+0+2-1 +hashblocks_sha512 11 1 117 +264-1-2+0+16+2+2-1+0+2-1+0+2-1+0 +hashblocks_sha512 11 2 117 +129-1-2+0+16+2+2-1+0+2-1+0+2-1+0 +hashblocks_sha512 11 4 117 +71+4-1+0+16+2+2-1+0+2-1+0+2-1+0 +hashblocks_sha512 11 7 117 +71+2-2-2+15+2+2-1+0+2-1+0+2-1+0 +hashblocks_sha512 11 11 117 +71+4-1+0+2-1+0+2-1+0+2-1+0+2-1 +hashblocks_sha512 11 17 117 +71+4-1+0+2-1+0+2-1+0+2-1+0+2-1 +hashblocks_sha512 11 26 117 +71+4-1+0+2-1+0+2-1+0+2-1+0+2-1 +hashblocks_sha512 11 40 117 +72+2+0+2-1+0+2-1+0+2-1+0+2-1+0 +hashblocks_sha512 11 61 117 +72+2+0+2-1+0+2-1+0+2-1+0+2-1+0 +hashblocks_sha512 11 92 117 +74-2+2-1+0+2-1+0+2-1+0+2-1+0+2 +hashblocks_sha512 11 139 2427 +12934+10+19+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 209 2420 +1770-1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 314 4735 +1761+10+10+0+7+0-3+6+0-3+6+0-3+6+0 +hashblocks_sha512 11 472 7047 +3045+37+32+0-1+0-1-1+0-1-1+0-1-1+0 +hashblocks_sha512 11 709 11666 +2090+16+1-3+6+0-3+6+0-3+6+0-3+6+0 +hashblocks_sha512 11 1064 18602 +1927+15+31+23-4+2+6-2-5+6+0-5-2-2-5 +hashblocks_sha512 11 1597 27843 +1920+53+39+0+0+1-1+0+1-1+0+1-1+0+1 +hashblocks_sha512 11 2396 41736 +1926+21+8-2+0+7-2+0+7-2+0+7-2+0+7 +hashblocks_sha512 11 3595 64852 +1943+19+6-1-1-19-19-19+52+0+0+0+0+0+0 +hashblocks_sha512 11 5393 97206 +2063+35+18+18+18+0+0+0-6+4-9+1+0+0+0 +hashblocks_sha512 11 8090 145752 +2404-1+0+0+1191+317+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 12136 217409 +3065-10+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 11 18205 328441 +3615+1927+455+0+0+0+0+0-18-23-27-18-18-18-18 +hashblocks_sha512 11 27308 494899 +2767+1711+543+0+0+0+0+0-2+27-2-2-2+1539+594 +hashblocks_sha512 11 40963 744823 +2471+2-35-23+0+809+82-35+24-35-35-35-35+776+46 +hashblocks_sha512 11 61445 1117179 +2445-63-75+1077+27+0+57-1+800-13-11-76-19+643+91 +hashblocks_sha512 12 implementation wflip compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hashblocks_sha512 12 0 37 +5371+41+8+6+6+0+0+0+2-2+0+0+0+0+0 +hashblocks_sha512 12 1 37 +63+0+36+18+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 2 37 +62+0+0+0+0+0+0+0+19-5+0+0+0+0+0 +hashblocks_sha512 12 4 37 -21+5-6+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 7 37 -8+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 11 37 -25+6-6+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 17 37 -25+6-6+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 26 37 -25+6-6+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 40 37 -25+6-6+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 61 37 -25+6-6+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 92 37 -25+6-5+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 139 2061 +5487+72+0+0-6+0+0-6+0+0-6+0+0-6+0 +hashblocks_sha512 12 209 2061 +397+0+0-6+0+0-6+0+0-6+0+0-6+0+0 +hashblocks_sha512 12 314 4039 +384+22+1+0-4+1+0-4+1+0-4+1+0-4+1 +hashblocks_sha512 12 472 6028 +357+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 709 9975 +337+34+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 1064 15888 +361+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 1597 23772 +319+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 2396 35602 +375+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 3595 55313 +337+5+2+0+1-1+4+777+17-1-1-1-1-1-1 +hashblocks_sha512 12 5393 82906 +658+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 12 8090 124301 +607+3+0+0+0+0+0+0+3+4+7+3+0+0+0 +hashblocks_sha512 12 12136 185409 +805+1-3-3-3-3-3-3+0+836+162-3+2+4+0 +hashblocks_sha512 12 18205 280215 +998+23+0+0+0+0+0+0+3+25+13+0+0+0+0 +hashblocks_sha512 12 27308 420855 +1278+47+28+0-14-14-14-14-8-8+23+47-8+858+58 +hashblocks_sha512 12 40963 632429 +865+178-1-1-1-1+735+136+74+0+0+0+56+0+0 +hashblocks_sha512 12 61445 948644 +866-62-63+0-44+632+779+174-36-36-36+818+70-17+64 +hashblocks_sha512 13 implementation wflip compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hashblocks_sha512 13 0 35 +2697+24+21+0+0+0+0+0+1-1+0+0+0+0+0 +hashblocks_sha512 13 1 35 +100+28+20+2+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 2 35 +55+10+8+8+0+0+0+0+17+0+0+0+0+0+0 +hashblocks_sha512 13 4 35 +55+10+8+8+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 7 35 +55+10+8+8+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 11 35 +55+10+8+8+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 17 35 +55+10+8+8+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 26 35 +55+10+8+8+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 40 35 +56+10+8+8+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 61 35 +56+10+8+8+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 92 35 +70+8+8+8+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 139 2032 +5001+75+18+1-2+0+0-2+0+0-2+0+0-2+0 +hashblocks_sha512 13 209 2032 +229+3-1-2+0+0-2+0+0-2+0+0-2+0+0 +hashblocks_sha512 13 314 4001 +265+59+2-4+0+0-4+0+0-4+0+0-4+0+0 +hashblocks_sha512 13 472 6020 +432+4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 709 9930 +237-4+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 1064 15835 +284-4+0+0+0+0+0+0+0+0+0-3-5+9+7 +hashblocks_sha512 13 1597 23707 +221+985-7+10+4+3-4-2-2-6+0+0+0+0+0 +hashblocks_sha512 13 2396 35515 +392+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 3595 55198 +226+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 5393 82755 +289+1+0+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 8090 124092 +531+7-3+0+0+0+0+0+0+0+0+0+0+0+0 +hashblocks_sha512 13 12136 185112 +786+833+674+0+0+0+29+57-2+0+0+0+0+0+0 +hashblocks_sha512 13 18205 279864 +1402+22-1-1-2+72+4-1+0-1+842+1381+16-1-1 +hashblocks_sha512 13 27308 421575 +597-242-60-60-60-60-60-60+77+661+215+0+0+0+0 +hashblocks_sha512 13 40963 634678 +14-49-76-66+776+72+0+0+0+0+95+0+0+647+73 +hashblocks_sha512 13 61445 952082 +223-143+0+556+15-62+101-62-62+52+714+593-224-7-145 +hash_sha512 selected implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 selected 0 2287 +18464+82+4+5+0+0+0+2+0+0+0+1+0+1+0 +hash_sha512 selected 1 2290 +991+44+3-5-1+2-4+0+3-5-1+3-5-1+4 +hash_sha512 selected 2 2292 +836+33+4-4+0+4-4+0+4-4+0+4-4+0+4 +hash_sha512 selected 4 2298 +669+16+4-4+0+4-4+0+4-4+0+4-4+0+4 +hash_sha512 selected 7 2314 +637+18+2-6+0+4-4+0+4-4+0+4-4+0+4 +hash_sha512 selected 11 2326 +645+36+4-4+0+4-4+0+4-4+0+4-4+0+4 +hash_sha512 selected 17 2348 +657+10+9+9+9+0-8-4+0-8-4+0-8-4+0 +hash_sha512 selected 26 2375 +562+9+10+10+0-8-4+0-8-4+0-8-4+0-8 +hash_sha512 selected 40 2324 +680+14-3+4+0-3+6+0-3+6+0-3+6+0-3 +hash_sha512 selected 61 2384 +595+22+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 92 2375 +687+6+4-4+0+4-4+0+4-4+0+4-4+0+4 +hash_sha512 selected 139 4254 +707+30+10+0-6+10+0-6+10+0-6+10+0-6+10 +hash_sha512 selected 209 4275 +621+38+24+24+0-6+10+0-6+10+0-6+10+0-6 +hash_sha512 selected 314 6267 +618+14+15+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 472 8218 +606+40+32+32+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 709 11990 +670+62+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 1064 17784 +627+33+16+16+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 1597 25516 +618+42+36+36+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 2396 37055 +651+39+38+38+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 3595 56241 +596+39+22+22+0+0+0-19+4+12-4-4-8-11+5 +hash_sha512 selected 5393 83187 +686-2+22+32+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 selected 8090 123602 +634+1018+27+12+0+0+0+0+0-20-32-18-2+0+0 +hash_sha512 selected 12136 183177 +901+45+32+22+0+0+0+0+0+0+0+0+0+11+7 +hash_sha512 selected 18205 275645 +836+19+9574+11393+4+0+0+0+0+6+22+0+0+0+0 +hash_sha512 selected 27308 412544 +566-170-77-38+835-115+0+0+1+1+1+9-46-49-49 +hash_sha512 selected 40963 618772 +405+596-14+20-1-1-1-15+0+0+722-27+65+59+34 +hash_sha512 selected 61445 927104 +389-3+676-7-92-23-23-23+351+17+13+0-21+14+501 +hash_sha512 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +hash_sha512 0 0 2474 +4665+99+96+0+0+0+0+0+1+0+0+0+0+0+0 +hash_sha512 0 1 2478 +862+23+0+0+0+0+0+0+1+0+0+0+0+0+0 +hash_sha512 0 2 2478 +820+24-3+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 4 2478 +706+37+19+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 7 2468 +588+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 11 2506 +634+8+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 17 2508 +630+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 26 2511 +590+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 40 2499 +619+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 61 2510 +614+0+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 92 2514 +614+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 139 4434 +614+18+15+15+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 209 4439 +614+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 314 6400 +589+12+12+3+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 472 8339 +572+6+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 709 12184 +1023+75+0+0+0+0+0+0+1+0+0+0+0+0+0 +hash_sha512 0 1064 17939 +767+9+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 1597 25623 +612+3+0+0+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 0 2396 37166 +608+3+6+4-5+7-7+0+24+1+0+0+0+0+0 +hash_sha512 0 3595 56392 +577+3+0+0+0+0+0+0+1+0+0+0+0+0+0 +hash_sha512 0 5393 83317 +650+3+828-10+0+0+0+0+1+0+0+0+0+0+0 +hash_sha512 0 8090 123710 +807+20-33-2+1-2+0+0+0+0+0+0+0+0+0 +hash_sha512 0 12136 183310 +802+12+0+0+0+0+0+0+5+19-8+31+20+619-23 +hash_sha512 0 18205 275603 +931+34+0+0+0+39+21+41+1+0+0+0+0+0+0 +hash_sha512 0 27308 412556 +603+507-92-1-1-1-1-1+0+60+0+0+0+0+0 +hash_sha512 0 40963 618805 +558-12-1-1-25-50-10-22+662+103+46+88+0+0+0 +hash_sha512 0 61445 927101 +1217+0+836+2-75-74+982-62-38+67-59+29-38+429-50 +hash_sha512 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +hash_sha512 1 0 2287 +1058+41+19+19+19+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 1 2293 +825+34+34+34+34+0-8-4+0-8-4+0-8-4+0 +hash_sha512 1 2 2296 +679+31+14+14+14+0-8-4+0-8-4+0-8-4+0 +hash_sha512 1 4 2302 +615+31+15+15+15+0-8-4+0-8-4+0-8-4+0 +hash_sha512 1 7 2318 +623+36+22+22+22-2-10-4+0-8-4+0-8-4+0 +hash_sha512 1 11 2330 +640+16+9+9+9+0-8-4+0-8-4+0-8-4+0 +hash_sha512 1 17 2348 +605+16+17+17+9+0-8-4+0-8-4+0-8-4+0 +hash_sha512 1 26 2375 +629+17+18+18+0-8-4+0-8-4+0-8-4+0-8 +hash_sha512 1 40 2328 +645+30+5+5+5-7+0-4-7+2-4-7+2-4-7 +hash_sha512 1 61 2384 +686+43+43+43+14+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 92 2379 +648+27+13+13+13-4+0-8-4+0-8-4+0-8-4 +hash_sha512 1 139 4259 +669+34+0+0-11+5-5-11+5-5-11+5-5-11+5 +hash_sha512 1 209 4275 +602+63+50+50+0-6+10+0-6+10+0-6+10+0-6 +hash_sha512 1 314 6250 +672+68+69+52+4+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 472 8206 +608+53+42+42+0+0+0+0+0+0+0+0+0+0+3 +hash_sha512 1 709 11974 +698+83+31+30-5+3+0-1-3+0-1-4-7+4-10 +hash_sha512 1 1064 17772 +616+27+5+12-13+0-8+0+0+0+0+0+0+0+0 +hash_sha512 1 1597 25509 +669+48+42+42+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 2396 37037 +658+65+66+66+9+0+0+0+0+0+0+0+0+0+919 +hash_sha512 1 3595 56224 +718+37+27+27+4+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 5393 83179 +684+14+13+13-9-9-9-9+0+33+21-9+13-15-9 +hash_sha512 1 8090 123585 +539+19+13+13+0+0+0+0+0+0+0+0+0+0+0 +hash_sha512 1 12136 183170 +669+45+12-10-34+4+827+72+0+0+0+0+0+0+0 +hash_sha512 1 18205 275498 +895+114+85+134-15+0+0+0-1+0+0+0+0+0+758 +hash_sha512 1 27308 412491 +1773-67+28+28-5-1-47+57+0+0+0+0+1025-167-72 +hash_sha512 1 40963 618788 +425-31+23+16-3-3+696+98+0+31+21+0+0+0-3 +hash_sha512 1 61445 927075 +696-19+29-49-65+830+53-2-1+24-1+717-175+21+0 +pow_inv25519 selected implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 selected 32 25855 +11884+97+65+0+0+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 0 32 34191 +11499+190+72+0+0+0+0+0+0+0-1+0+0+0-1 +pow_inv25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 1 32 34283 +3021+77+66+0+0+0+0+0-1+0+0+0+0+0+0 +pow_inv25519 2 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 2 32 25708 +3432+220+122+50+24+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 3 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 3 32 25855 +822+7+0+0+0+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 4 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 4 32 26158 +8990+111+37+0+0+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 5 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 5 32 26154 +1285+5+0+0+0+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 6 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 6 32 27738 +10187+161+89+0+0+0+0+0+0+0+0+0+0+0+0 +pow_inv25519 7 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 7 32 29550 +11124+187+117+1+0+0+0+3+1+0+0+0+0+3+0 +pow_inv25519 8 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +pow_inv25519 8 32 49972 +7354+129+52+0+0+0+0+0-1+0+0+0+0+0+0 +pow_inv25519 9 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +pow_inv25519 9 32 53607 +6296-29+19+0+0+0+0+0+0+0+0+0+0+0+0 +nP_montgomery25519 selected implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 selected 32 282105 +23063-455-505+0+0+714-4+0+0+0+0+0+0+0+0 +nP_montgomery25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 0 32 358790 +13066+110+38+23+23+23-3-3+3736-1+0-3-3-3-3 +nP_montgomery25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 1 32 358358 +5570+44+22+9-3-3-3-3+1035+29-3-3+5+0-3 +nP_montgomery25519 2 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 2 32 281672 +2588+56+14+0+0+0+1+0+0+0+0+4738-7+84+1 +nP_montgomery25519 3 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 3 32 282105 +3042-6-6+0+0+0+0+0+0+0+0+0+0+0+0 +nP_montgomery25519 4 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 4 32 301455 +13037+94+50+0+0+0+0+0+0+0+0+0+0+0+0 +nP_montgomery25519 5 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 5 32 301462 +1949+6+0+770+0-34+4+0+0+0+0+0+0+0+0 +nP_montgomery25519 6 implementation donna_c64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 6 32 369134 +14886+180+60+16+0+1819+5+0+8-21-46+0+0+0+0 +nP_montgomery25519 7 implementation donna_c64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 7 32 463428 +22771+472+150+0+1946+9+0+0+4-15+24+0+0+0+0 +nP_montgomery25519 8 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nP_montgomery25519 8 32 679348 +7223+132+21+0+0+0+0+0+5+723+41-1+0+0+0 +nP_montgomery25519 9 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nP_montgomery25519 9 32 614598 +4941+41+1038+5+0-1+0+0+8+0+0+0+771+5+0 +nG_merged25519 selected implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 selected 32 88777 +20041-48-108+84+2+0-113-167-156+40+67+73+100-166-166 +nG_merged25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 0 32 115171 +27659+494+8-4-4-4-4-4+0+0+0+0+0+2511+276 +nG_merged25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 1 32 114942 +6523+775+176+37+0+0+0+0+0+0+0+0+0+0+0 +nG_merged25519 2 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 2 32 89189 +10979+367+49+0+0+0+0+0+0+0+0+0+0+0+0 +nG_merged25519 3 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 3 32 88581 +3210+273+206+62+237-1-1-1+0+0+0+0+0+0+0 +nG_merged25519 4 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 4 32 92614 +17411+88+9-3-3-3-3-3+0+0+0+0+1198+88+0 +nG_merged25519 5 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 5 32 92160 +6654+80-3-3+90+193+271+149+153+0+0+0+0+0+0 +nG_merged25519 6 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_merged25519 6 32 248755 +15993+172+0+0+0+0+0+0-2+160+143-2-2-2-2 +nG_merged25519 7 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_merged25519 7 32 186981 +16726+111-1-1-1-1-1-1+0+172+143+0+0+0+0 +nG_montgomery25519 selected implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 selected 32 88574 +17765+49-1-1-1-1-1-1+0+0+0+0+0+0+0 +nG_montgomery25519 0 implementation ref compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 0 32 281118 +16407+1020-4+0+1108+66+0+0+0+0+0+0+0+0+0 +nG_montgomery25519 1 implementation ref compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 1 32 281118 +3938+0+0+0+0+0+0+0+0+1102-3+0+0+0+0 +nG_montgomery25519 2 implementation usemerged compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +nG_montgomery25519 2 32 88588 +6980+11-5-1-1-1-1-1+0+0+0+0+0+0+0 +nG_montgomery25519 3 implementation usemerged compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +nG_montgomery25519 3 32 88605 +2709+0+134+159+192+192+140-18-17-17-17-17-17+58-21 +mGnP_ed25519 selected implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 selected 33 336733 +42686+1162+126+2095+387-79+6-40+0-79+0-79+0-79+0 +mGnP_ed25519 0 implementation amd64-51 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 0 33 414828 +28855+949+127+1626+1242+4-15-15+0+8-15-15-15-15-15 +mGnP_ed25519 1 implementation amd64-51 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 1 33 410832 +15318+3477+922+56-32-4-28-25+1422+2369+0+34-23-20-9 +mGnP_ed25519 2 implementation amd64-64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 2 33 338262 +12243+867+360+190-18+0-17-18+0-17-18+0+9+4+0 +mGnP_ed25519 3 implementation amd64-64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 3 33 339857 +10300+2330+820+35+2-4+0-28-7+0-28-7+0-28-5 +mGnP_ed25519 4 implementation amd64-maa4 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 4 33 356164 +48122+1468+1739+1228+105-10+0+0+3+8+0+0+0+0+0 +mGnP_ed25519 5 implementation amd64-maa4 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 5 33 355914 +15557+843+1409+2447+123-2+0-2-6-2+0-15+13-2+0 +mGnP_ed25519 6 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +mGnP_ed25519 6 33 761275 +21031+2114+538+18+61-61-7+0-64+712+230-82-76-26-93 +mGnP_ed25519 7 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +mGnP_ed25519 7 33 705326 +16886+4432+1789+159+3-39+0-23-60+1846+1250-75-55-64-110 +dh_x25519 selected implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair selected 32 88792 +20899+293+84+4-4+3+0-1-1+0-1-1+0-1-1 +dh_x25519 selected 32 281114 +4406+985+3+0+0+0+0+0+1+1+0+0+0+0+0 +dh_x25519 0 implementation wrapper compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +dh_x25519_keypair 0 32 88883 +3350+0-63-38-2+4-2+4-2+4-2+4-2+1430+226 +dh_x25519 0 32 281119 +1565-5+0+0+0+0+0+0+1+1+0+0+0+0+0 +dh_x25519 1 implementation wrapper compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +dh_x25519_keypair 1 32 89007 +3031-142+60-31-40+0-126-114+10+112+17+1531+83-140-124 +dh_x25519 1 32 281114 +1577+3+0+0+0+0+0+955+1+1+0+0+0+0+0 +sign_ed25519 selected implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair selected 32 91243 +23131+429+87-4-4+0-4-4+0-4-4+0-4+155+192 +sign_ed25519 selected 0 98947 +13667+826+14-8-12-16-2+0+0+0+0+0+0+0+0 +sign_ed25519 selected 1 99131 +4357+116+16-4+17+0-4+2765+399+20-49-47-47-47-46 +sign_ed25519 selected 2 99083 +4843+337+62-4+7+0-4+7+0-4+7+0-4+7+0 +sign_ed25519 selected 3 99036 +4395+72-4-19+5+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 selected 4 99196 +4322+303+197+178+1-4+0-4+0-4+0-4+0-4+0 +sign_ed25519 selected 6 99245 +5746+4435-37-36+0+4+0+4+0+4+0+4+0+4+0 +sign_ed25519 selected 8 99348 +4290+83+100+139+191+22-21+0-17-21+0-17-21+0-17 +sign_ed25519 selected 11 99106 +4420+61+0+0+0+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 selected 14 99342 +4165-94-135+174+65+83+0-150-149-168+1158+1702+69-45-43 +sign_ed25519 selected 18 99253 +4657+48+11+7+0-15-19+2-15-19+2-15-19+2-15 +sign_ed25519 selected 23 99270 +4255+120+10+0+171+158+113+187-23-23-23-23-23-23-23 +sign_ed25519 selected 29 99349 +4063+126+42+26+0-2+0-2+0-2+0-2+0-2+0 +sign_ed25519 selected 37 99267 +4222-187-240-255+2869+824+308+194+120+18-18-22+0-18-22 +sign_ed25519 selected 47 99152 +4519+327+18+4+0-7-11+0-7-11+0-7-11+0-7 +sign_ed25519 selected 59 101262 +4429+105+20+0-33-40-40+226+201+86+15-39-39-39-39 +sign_ed25519 selected 74 101249 +4368+163+7+0+0+0+0+0+0+0+0+0+0+1562+1591 +sign_ed25519 selected 93 103475 +4548+81-7+35-10+0-4+258+319+99+239+0-4+0-4 +sign_ed25519 selected 117 103126 +4419+147+24+5-2+0-4+0-3+1-3+1-3+1-3 +sign_ed25519 selected 147 103255 +4403+39-43-50-43-33-50+72+151+171+173+0-17-21+0 +sign_ed25519 selected 184 105239 +4179+12-110-108-79+2893+339+29-48-14+0-4+7+0-4 +sign_ed25519 selected 231 107129 +4544+140+10+0-24-31-1+251+158+202+64-5-1-5-1 +sign_ed25519 selected 289 106924 +5351+357-24+17+0+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 selected 362 111096 +4340+0-20-2-59+79+179+54+200-40+2053+452-123-163-153 +sign_ed25519 selected 453 112692 +4902+255+110+104+2+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 selected 567 116896 +4283+80+85+297+370+205+0+0+0+0+0+0+0+0+0 +sign_ed25519 selected 709 120466 +4318+78+15+15+0+0+0+0+0+0+0+0+3394+254+61 +sign_ed25519 selected 887 126319 +4962+264+172+340+258+220-2-2+0-2-2+0-2-2+0 +sign_ed25519 selected 1109 134144 +4432+248+101+82+0-12-17+301+217+158-17-15-17-17-15 +sign_ed25519 selected 1387 141934 +4188+196+26+20+0+3+0+2362+703-145-156-174-176-176-174 +sign_ed25519 selected 1734 151409 +4912+143+41+57-2+0-2-2+0-2-2+0-2-2+0 +sign_ed25519 selected 2168 165196 +4383+333+33+0+47+85-37-144-144-144-144-144-144+2377+109 +sign_ed25519 selected 2711 180535 +4515+87+8+54-34-31-31-21+153+168+24+0+0-22+0 +sign_ed25519 selected 3389 202002 +4306+0-64-60-135-135-134-135-134+120+123+962+4460+223+155 +sign_ed25519 selected 4237 227060 +4179+39-73-73-73-71-82-73-21+238+13+9+9+0+0 +sign_ed25519 selected 5297 260071 +4451+277+0+62+1124+2078+141+271-20-38-41-18-38-50-18 +sign_ed25519 selected 6622 300783 +4470+0+26+182-101-70-83-54-38+1182+1238+72-199-248+3 +sign_ed25519 selected 8278 351001 +4476-76+0-67-28-55-75+8+244-65-53+2812+169+102+100 +sign_ed25519 selected 10348 412952 +4413+287-168-245-272-280-280-280-280+916+1384+76+24+0+22 +sign_ed25519 selected 12936 490165 +4687+228-87-179-172-67+3072+589+262-49+0-44+1-45+16 +sign_ed25519 selected 16171 587214 +4647+1292+1815-89+150-17+0-229-54-179+242+1186+1045-120-182 +sign_ed25519 selected 20214 711777 +4416-209-436+0+2244+520+87-280-310-178-398-153+889+2452+92 +sign_ed25519 selected 25268 865544 +4038+376-2+1374+1306-273-755-436-120-417+292+1314+0-628+126 +sign_ed25519 selected 31586 1057347 +6715+3040-362-632-205-315+1553+780+0-468-331+224+1898-396+1073 +sign_ed25519 selected 39483 1296076 +4418+2325-240+310-172+737+1081-79+252-322+2385-228-236-89+0 +sign_ed25519 selected 49354 1594706 +5435-19+1834-828-1433-463+1462-932+70+639-207+0-657+626+1191 +sign_ed25519 selected 61693 1968987 +5115+975-989-350+719-782+672+1637-825+1093+0-968-50+884-784 +sign_ed25519_open selected 0 337593 +26539+1787+240+22-54+10-107+0-96+32-82-17-100+4-80 +sign_ed25519_open selected 1 340054 +9218+1037+522+376+0+3071+2345+98-41-92-92-92-92-98-61 +sign_ed25519_open selected 2 334168 +7199+3117+596+287+0+0+0+0+13+0+0+0+0+0+0 +sign_ed25519_open selected 3 342300 +7446+3349+2630+735+6-62+0-62+1-62+0-61+18-62+0 +sign_ed25519_open selected 4 339837 +4876+1301+2624+2676+232+17+0+0-1+0+0+0+0+0+4 +sign_ed25519_open selected 6 337317 +5476+1575+623+2010+3172+486+9-56+0-15-29-39-1-67-6 +sign_ed25519_open selected 8 341795 +5289+1186+399+439+0+2041+1468+34-104-90-72-80-95-64-105 +sign_ed25519_open selected 11 340659 +5536+1569+718+604+0-31+1657+1756+137-153-128-153-128-153-128 +sign_ed25519_open selected 14 341767 +5343+1218+764+665+0-47+0+2997+2020+24-130-91-105-91-105 +sign_ed25519_open selected 18 334527 +5423+1480+647+399+0-16-16-16+2176+1923+111-54-54-33-44 +sign_ed25519_open selected 23 338786 +5353+1485+481+348-45-33-45+0-35+1592+1865+200-123-111-123 +sign_ed25519_open selected 29 341791 +5008+1202+650+482+0-9-34-34-34-34+1477+2037+255-31-31 +sign_ed25519_open selected 37 338708 +5476+1503+815+611-12+0-10-19-25-4-25+852+2578+324-27 +sign_ed25519_open selected 47 340143 +7210+3161+981+628+0+0-49-74-47-48-69-59-69+3347+2026 +sign_ed25519_open selected 59 338314 +5501+1503+853+466-23-1+4-11-53+3-73-12-52+0+1960 +sign_ed25519_open selected 74 339562 +5527+1436+853+684+25-3+22-1-33+0-17-33+0-17-33 +sign_ed25519_open selected 93 342741 +6180+1536+590+444+0+0+0+0+0+47+28+0+0+0+0 +sign_ed25519_open selected 117 341638 +5544+1098+690+617+0+0+0+0+1+0+0+0+0+22+0 +sign_ed25519_open selected 147 341561 +7594+3768+1075+762+23+65-2-16-15+0-15+0-15+0-15 +sign_ed25519_open selected 184 341256 +5269+2730+2608+698+21-43+23-43-14-28+26-28+0-43-15 +sign_ed25519_open selected 231 343422 +5346+1471+2183+2474+237-95-10-95+0-92+1-95+0-86+32 +sign_ed25519_open selected 289 341939 +8507+1160+425+1991+1598+0-280+2513+1775-244-341-341-326-341-341 +sign_ed25519_open selected 362 346623 +5427+1589+704+500+2547+2366+186+0-43-43-43-26-43-43-43 +sign_ed25519_open selected 453 347800 +5325+1285+722+540-32+1901+1724+153-24-37-18-6-55+0-20 +sign_ed25519_open selected 567 350649 +5319+1319+661+406-180+2762+1742+178+0-110-40-110-40-110-40 +sign_ed25519_open selected 709 351499 +5187+1167+489+397+4-63+2149+1950+0-102-103-76-102-88-102 +sign_ed25519_open selected 887 349857 +5036+1169+588+394-151-159+2325+1890+129-107-34-101-56-106+0 +sign_ed25519_open selected 1109 357226 +5285+1636+721+615+68+0-31+2659+1447-73-25-54-86-25-54 +sign_ed25519_open selected 1387 361709 +5881+1831+884+650+0-14-40+2584+1502+50-27-26-26-26-26 +sign_ed25519_open selected 1734 370918 +5283+1468+774+508+0-110+1669+2024+137-131-131-125-111-131-131 +sign_ed25519_open selected 2168 373359 +5373+1452+776+472-15-27+2363+1971+144-28-20-28-20+0-17 +sign_ed25519_open selected 2711 378045 +5014+1529+746+456-114+1498+1936+180-5-40-52-26-19-73+0 +sign_ed25519_open selected 3389 393604 +5616+1522+816+557+2705+2033+334-10+0-5+0-5+0-5+0 +sign_ed25519_open selected 4237 398904 +5152+1360+2815+2876+226+26-6-11+8-8-22-8+0-30+0 +sign_ed25519_open selected 5297 422037 +7240+3477+781+475-19+6-8+51-36+0-40-15-40-15+1709 +sign_ed25519_open selected 6622 441699 +5315+1315+5692+1751-85-94-117-101-155-114-164+4213+1292+166+0 +sign_ed25519_open selected 8278 465059 +5076+1466+570+376+28-38-26+3696+973-56+0-38-56-96-62 +sign_ed25519_open selected 10348 495258 +5450+2068+4088+5726+287+0-39+7-7+0-15-45+0-7+3071 +sign_ed25519_open selected 12936 536820 +7363+1545+672+603-9-11+10+0+2749+1704-129-56-138-128-188 +sign_ed25519_open selected 16171 588460 +4213+3547+1691+0-803-589+2935+1269-672-927-780+2597+1466-455-653 +sign_ed25519_open selected 20214 655525 +7728+837+716+2580+1801+0-78-145-166-124-40-148+1860+1672-264 +sign_ed25519_open selected 25268 730805 +7309+1390+744+2179+1349+0-397-362-449-303-358+1951+1850-371-296 +sign_ed25519_open selected 31586 828853 +6013+3503+2117+459-255-168-308-57+1693+1456+0+89-250-179-277 +sign_ed25519_open selected 39483 953576 +7153+1243+0-126+4251+165+4395-246-453-708+3453+2733-413-636-533 +sign_ed25519_open selected 49354 1104764 +7296+681+38+212+2924-116-153-674-665+4144+0-687-674-711+852 +sign_ed25519_open selected 61693 1294176 +5646+3737+0-160-1360-906+1674-908-1024-1086+1927+11-1050+6531+2023 +sign_ed25519 0 implementation amd64 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 0 32 91330 +12237-31-61-61-97+4-4+0-4-4+94+199+313+131+134 +sign_ed25519 0 0 99398 +5287+163+9+11+0+0+0+2066+418-25-55-92-92-92-92 +sign_ed25519 0 1 99210 +4827+186+326+24+0-2-2-2-12+0-12-12+235+149+141 +sign_ed25519 0 2 99232 +4536+113+32+20+0+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 0 3 99248 +4318+144+16+29+2+0+0+0+0+0+0+0+0+78+372 +sign_ed25519 0 4 99461 +4396+2746+129-9+0+6+0-6+0+6+0-6+0+6+0 +sign_ed25519 0 6 99260 +4570+103+28+28+0+0+0+0-8-8-8-2+0-2+10 +sign_ed25519 0 8 99283 +4814+176+339+3+6+0-6+6+0+0-6+0+4-2-2 +sign_ed25519 0 11 99300 +4399+174+0+6-25-31-37-25-31-31-37+3623+297+303+289 +sign_ed25519 0 14 99528 +4669+54+220+101+0+184+173+105-34-34-34-34-34-34-34 +sign_ed25519 0 18 99515 +4183-39+12+11+0+0+0+0+0+0+0+0+0+0+26 +sign_ed25519 0 23 99401 +4478+364+64+51+0-5-2-5+7-8-5+7-8-5+7 +sign_ed25519 0 29 99577 +4086+111+0+18+2899+577-56+24+0+1-8-8-8-8-8 +sign_ed25519 0 37 99417 +4927+397+230+65+8-1-1-1-1+1+0+0+0+0+0 +sign_ed25519 0 47 99418 +4507+121+91+21-4-11+1-4-17+0+3-11-4+3-4 +sign_ed25519 0 59 101484 +4564+303+176+191+146+0+0+0+0+0+0+0+0+1530+1683 +sign_ed25519 0 74 101307 +4576+198+52+27-5+0-3-6+3-8+5-6-3+0-5 +sign_ed25519 0 93 103459 +4533+254+244+277+179+17+1+0+0+0+0+0+0+0+0 +sign_ed25519 0 117 103395 +4379+286+83+49+8+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 0 147 103447 +4480+304+275+293+181+2260+461+0-56-91-91-91-91-91-91 +sign_ed25519 0 184 105286 +5779+341+219+44+6+0+0+0+0-8-8-8-8-8-8 +sign_ed25519 0 231 107214 +4673+378+252+192+99+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 0 289 107115 +4597+29-17-8-15+0-15+0-2-2-2+3079+877+136+59 +sign_ed25519 0 362 111099 +4957+559+318+115-22+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 0 453 113154 +4472+173+84+83+0+0+0+0+0+0+0+0+0+17+255 +sign_ed25519 0 567 117113 +4394+51+53+69-1-5-6-5-1+0-1+0-1+0+2324 +sign_ed25519 0 709 120925 +4506+124+11+7-19-23-19-23-19+0+117+239+138-16-19 +sign_ed25519 0 887 126863 +4154+227+108+128+8-2+0+0-2+0+0-2+0+0-2 +sign_ed25519 0 1109 134688 +4218+2+0-18+112+51+54-103-111-111-111+1229+1454-2-71 +sign_ed25519 0 1387 142155 +4509+196+93+106-12+0-6-6-6-6-6-6+248+237+206 +sign_ed25519 0 1734 151746 +4439+161+75+26+0+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 0 2168 165580 +4226+132+1759+1842-57-43+0-2+0-2+0-2+0-2+0 +sign_ed25519 0 2711 180718 +4623+97+69+61+0+66+148+197+0-6-2-2-4-4+0 +sign_ed25519 0 3389 202364 +4337+252+209+2995+612+0-28+187+106-58-76-71-69-65-71 +sign_ed25519 0 4237 227233 +4642+1+42+55+40+141-158+0-33-180-188-175-190-178+2363 +sign_ed25519 0 5297 260264 +4481+41-15+39+44+209-60+255-56-2-26+4-34+0-31 +sign_ed25519 0 6622 301166 +6763+48-107+904+1210-183-327-354-363+3572+336+0+318-57-74 +sign_ed25519 0 8278 351269 +4665-269-199-188-226+1738+3106+35+239+0+7-29+4-10-6 +sign_ed25519 0 10348 412977 +4668+0-2-64-131+3328+139+150-146+1571+2246+41-97-92-68 +sign_ed25519 0 12936 490437 +5059-179+1062+1549+0-47+313+82-1-40-51-1-37+316+1478 +sign_ed25519 0 16171 587726 +4932-146-412+149-128-357-505-291+829+1622-554+3459+320+196+0 +sign_ed25519 0 20214 712029 +4495+1876+5075+107+58-394-68+296-175-388+1933-38-122+0-492 +sign_ed25519 0 25268 865565 +4455+418+1208-129+8+0-492+45+1005+706-163-578-507-296-510 +sign_ed25519 0 31586 1057306 +6463-9+419+43+451+1231-204-350+0-426+3175-291+235-140-512 +sign_ed25519 0 39483 1295913 +7062-537+0-880+8514+1761-426-694+624+1160+564-145-543+1251-741 +sign_ed25519 0 49354 1594499 +4881+3232+0-528+708+909-570-997-412+582+268-83+974-1058-278 +sign_ed25519 0 61693 1969323 +7781-1340+911+1436-2428+0+52+66-958-372-1817-560+386-738+217 +sign_ed25519_open 0 0 341768 +22439+1241+132+113-78-116-58-89-91+2738+2213+73+0-26-58 +sign_ed25519_open 0 1 342197 +5529+994+389+261-82-90-90-90-90-90+1378+2012+240+0+0 +sign_ed25519_open 0 2 336778 +5421+1485+516+449-47+0-39-39-38-39-39-39+2134+1825+143 +sign_ed25519_open 0 3 342049 +7619+1369+663+468+10-6-21-28-38-37-58+0-21+2432+1925 +sign_ed25519_open 0 4 339204 +5330+1640+1111+839+0+0+0+0-7-7-7-7-7+4+1950 +sign_ed25519_open 0 6 340640 +4741+1094+764+604-46-55-71+5-96+0-96+0-96+0-96 +sign_ed25519_open 0 8 334648 +5713+1281+447+347+0+0+0+0-10-4+30+10-10-4-10 +sign_ed25519_open 0 11 337364 +6740+3246+1202+800+26+0+0+0+0+0+0+0+0+0+65 +sign_ed25519_open 0 14 338757 +5038+3417+2656+724+4-77+7-22-22-77+7-21-70+0-14 +sign_ed25519_open 0 18 340952 +4993+1297+2340+2391+327+0+0+0-1+0+0+27+27+0+0 +sign_ed25519_open 0 23 341153 +5300+1416+624+2195+2017+142+30-33+0-67+0-67+0-67+0 +sign_ed25519_open 0 29 333597 +5700+1557+787+612-34+2476+1789+56-25+0-24-25-25-25-25 +sign_ed25519_open 0 37 341178 +5154+1480+777+616-27-27+2271+2108+201-41-41-41-18+0-41 +sign_ed25519_open 0 47 341652 +5030+1485+575+561-17-105+0+1790+1779+34-126-116-158-210-126 +sign_ed25519_open 0 59 343900 +5555+1620+709+511-23+0-57-57+1482+1828+205-10-31-31-16 +sign_ed25519_open 0 74 342989 +4797+1155+514+465+0-60-31-60-69+1870+1829+110-137-158-113 +sign_ed25519_open 0 93 339107 +5397+1244+528+570-48-56-48-54-28-56+3271+1931+109-8+0 +sign_ed25519_open 0 117 339191 +5221+1548+548+374-241-241-241-241-241-241-241+1556+1674+0+5411 +sign_ed25519_open 0 147 338246 +4881+677+0-56+2328+2602-406-486-411-463-490+24487+11269+3321-125 +sign_ed25519_open 0 184 343280 +6242+3048+578-876+0+3801+3399-1054-1475-1505-1520-1520+368+276-1636 +sign_ed25519_open 0 231 344366 +7611+1149+378+376-38-38-38-38-27+0-27+0-27+2521+1984 +sign_ed25519_open 0 289 342619 +5949+1633+505+517-48-48-33-48+0+15+0+0+15+0+2314 +sign_ed25519_open 0 362 347398 +5536+1581+902+877-29+20-18-31+0-31+0-31+0-31+0 +sign_ed25519_open 0 453 344482 +5438+1371+799+705+0+0+0-7+0-10+0-7+0-10+0 +sign_ed25519_open 0 567 349972 +8556+6166+1441+508-58-51-46-61+0-46+0-61+15-61+0 +sign_ed25519_open 0 709 350963 +13003+1298+760+454-8-8-19+0-8+0-8+0-8+0-8 +sign_ed25519_open 0 887 356408 +6884+3197+727+432+21-2-2-2-24+0-24+0-24+0-24 +sign_ed25519_open 0 1109 354497 +7188+3402+865+647+34+0+0+0+0+0+0+0+0+0+0 +sign_ed25519_open 0 1387 356225 +7427+3427+907+585+38+123+37+0+0+0+0+0+0+0+0 +sign_ed25519_open 0 1734 358879 +10038+3492+841+603+60-10+0-7+0-10+0-7+0-10+0 +sign_ed25519_open 0 2168 371271 +7024+3696+1090+871+62+0-20+7+4-30-30-30-30-30-30 +sign_ed25519_open 0 2711 384833 +7110+1437+427+398-106-2-83+0-62+26-70+0-102+22-59 +sign_ed25519_open 0 3389 390493 +14720+1777+657+531+13-3+0-15-15+0-15-15+0+10165+8805 +sign_ed25519_open 0 4237 404165 +16455+1441+558+419-66-79+0-76-81-22-78+2275+4860+48-10 +sign_ed25519_open 0 5297 422513 +5441+1357+643+484-110-59-95-34+1132+3216+393-62-86+0-62 +sign_ed25519_open 0 6622 441665 +8160+1785+703+577+0+2398+2372+88-24-55-44-51-44-55-44 +sign_ed25519_open 0 8278 465930 +5079+1298+4304+1440+50-6+11-6+0-17+0-17+0-17+2205 +sign_ed25519_open 0 10348 495860 +7816+1543+598+556+0-4-19-14-25+2361+2355+166-33-98-89 +sign_ed25519_open 0 12936 535784 +7724+1583+837+2179+2679+335-3-4-12+0-12+0-12+0-12 +sign_ed25519_open 0 16171 585860 +5307+1206+644+531-240+0-157+3076+1663+50-151-154-178-140-173 +sign_ed25519_open 0 20214 651106 +10091+1423+224+25-506-239-561-518-140+2062+1062+11810+0-627-451 +sign_ed25519_open 0 25268 728682 +11939+5381+3338+459-157-125-304-172+2216+1216+100+0-27-168-197 +sign_ed25519_open 0 31586 827086 +7833+864+337+0-618-382+3203+117-423-384-597-468-564+3281+55 +sign_ed25519_open 0 39483 946884 +6630+1272+4522+862-39-225-142-66+2620+396-105-282-56+0+1858 +sign_ed25519_open 0 49354 1100634 +6438+856+7098+3941+1155-691-850+3210-460-645-595-755+0+1928-426 +sign_ed25519_open 0 61693 1293137 +10373+675+230+173+2852-193-837-946-855+2715+0-864-920+3137-333 +sign_ed25519 1 implementation amd64 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 1 32 91233 +8899+72+35+1866+1042+159+36-8-4-4-4+0-4-4+0 +sign_ed25519 1 0 99005 +5342+188+54+37+13+5-10+1+0-30-33-32-39-43-44 +sign_ed25519 1 1 99159 +4464+135+64+54+0+0-4+0-4+0-4+0-4+3-4 +sign_ed25519 1 2 99144 +4340+55+18+30-9-22+0-12-22+0-12-22+0-12+2378 +sign_ed25519 1 3 99132 +4735+112-18-12+0+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 1 4 99090 +4329+24-9+30+0-4+0-4+0-4+0-4+0-4+0 +sign_ed25519 1 6 99003 +4495+61+34+17+4+2+0+0+0+0+0+0+0+0+0 +sign_ed25519 1 8 99295 +4247+48-195-239-238-240-240-240+3279+349-5+10+11+4+0 +sign_ed25519 1 11 99109 +4534+116+45+33+10-10-26+0-17-14+3-10-14+7-10 +sign_ed25519 1 14 99292 +4418+41+39+37+1+11-2+0-4-4+0-4-2-2+0 +sign_ed25519 1 18 99270 +4192+145-81+0+7-2+0+0-9+10-9+10-9+10-9 +sign_ed25519 1 23 99350 +4178+1450+1797+46+2-17-21+0-17-21+0-17-21+0-17 +sign_ed25519 1 29 99293 +4438+91+49+26-21+0-17-21+0-17-21+0-17-21+0 +sign_ed25519 1 37 99050 +4422+252+60+7-26+16-17-21+0-17-21+0-17-21+0 +sign_ed25519 1 47 99355 +4394+207+5+0-37-44-45-43-42-39-43+1197+1621+161+150 +sign_ed25519 1 59 101135 +4759+284+48+32+0+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 1 74 101231 +4427+187+41+28-3+0+0-6-9-9-3-6-3+0+0 +sign_ed25519 1 93 103341 +4331+193+84+45+3+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 1 117 103073 +4350+56-23-32+2179+625+23+0-1+0+0+0+0+0+0 +sign_ed25519 1 147 103310 +4539+195+94+69-15+0-4+7+0-4+7+0-4+7+0 +sign_ed25519 1 184 105034 +4506+135+0+8+3-4-8+3-4-8+3-4-8+3-4 +sign_ed25519 1 231 106961 +4400+246+50+6-30-22-26-5-22-26-5+2343+617+21+0 +sign_ed25519 1 289 106874 +4767+183+0-5+26+4-4+21-1-5+21-1-5+21-1 +sign_ed25519 1 362 110954 +4636+116+34+41-12+23+0-4-15+0-4-15+0-4-15 +sign_ed25519 1 453 112712 +4516+357+143+138-6+0+19-1-1+14-1-1+14-1-1 +sign_ed25519 1 567 116809 +4926+250+0-18-18-26+7+4-2+4-2+4-2+4-2 +sign_ed25519 1 709 120459 +4361+271+9-8+4+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 1 887 126272 +4573+202+134+142+35-2+0-2-2+0-2-2+0-2-2 +sign_ed25519 1 1109 134281 +4834+179+74+101+1+0-2-2+0-2-2+0-2-2+0 +sign_ed25519 1 1387 141931 +4249+48+98+87+3+2-3+0-5-7+0-5-7+0-5 +sign_ed25519 1 1734 151532 +8773+362+45+60-23-7-9+1290+1537+205-11-4+0-4-4 +sign_ed25519 1 2168 164930 +7301+185+109+98-3+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 1 2711 180417 +4570+52-4+0-65-61-61-61-73-54+2546+560+248+249+243 +sign_ed25519 1 3389 201871 +4964+300+57+129-4+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 1 4237 227127 +4038+47-34-32-47-47+1038+1441-3+10+0+0+0+0+0 +sign_ed25519 1 5297 259962 +4416+165+48+27-13+0+0-5+7-1-13+0+0-5+2602 +sign_ed25519 1 6622 300632 +4625+155+65+60-26+0-17-18+0-17-26+0-17-18+0 +sign_ed25519 1 8278 351062 +4210+2600+320+3-66-5+2-26-5+2+0-5+2-26-5 +sign_ed25519 1 10348 412658 +5042+2948+324+242-29+10+9-16+0-16+0-16+0-16+0 +sign_ed25519 1 12936 490098 +5280+73-17+36+0-23-22-21-21-22-21+2099+658+246+426 +sign_ed25519 1 16171 587414 +4639-155-140-216-108+1082+1888+1866+2337+0-154+208+29-13-97 +sign_ed25519 1 20214 711740 +6421-12+0+428-538-322-60+847+1620+186-299+163-143-106+49 +sign_ed25519 1 25268 865380 +6126+0-94-44-40+188+2984+2416-148+57-375-490-7+689+1235 +sign_ed25519 1 31586 1056917 +4208-165+26+1938+612-289-109+0+1177+1414-360-971-783-697+585 +sign_ed25519 1 39483 1296142 +4608-715-34+2339-471-284+9903+1397+9450-449+292-522+1028+0-472 +sign_ed25519 1 49354 1594849 +9155+44-1595+1049+1194-39-1713-546+457+15-153+1489-1222-565+0 +sign_ed25519 1 61693 1968916 +5568+931+847-40+277+0-1054-391+1544-74-1008+1465-386-862+1682 +sign_ed25519_open 1 0 339150 +22614+1659+508+475-85+910+2741+275+0-4-38-4-38-4-38 +sign_ed25519_open 1 1 335561 +5044+1607+630+420-68-2-45+1910+1739+204-8-53+0-30-8 +sign_ed25519_open 1 2 339138 +5520+1240+580+442-58+0-79-39+2741+1865+179-60-139-99-79 +sign_ed25519_open 1 3 336547 +5069+1092+378+353-149-172-214-155-171+2057+2003+304+0-53-4 +sign_ed25519_open 1 4 339261 +5076+1444+763+576-1-2-5-2-3-2+965+2580+355+0+0 +sign_ed25519_open 1 6 341325 +5006+1264+548+476-91+23-90-37-82+0-74-44+2485+1417-15 +sign_ed25519_open 1 8 342085 +5313+1635+718+577-34-16+0-16-24+8-24-16+0+1971+1809 +sign_ed25519_open 1 11 341568 +4870+1269+558+538-22+0-3-1-7+0-3-1-7+0+1861 +sign_ed25519_open 1 14 341224 +5214+1241+566+424+17+0+21-26+21-18-26-18-26-18-26 +sign_ed25519_open 1 18 338397 +5699+1384+547+513+7+0+0+0-1+0+0+0+0+0+0 +sign_ed25519_open 1 23 339284 +6540+2478+713+408+29-1-76+21-34-43+9-22-55+0-13 +sign_ed25519_open 1 29 338555 +5582+3444+2600+1016+21-29+0-28-51+0-28-51+0-28-51 +sign_ed25519_open 1 37 338667 +5492+1368+2559+2701+247+130-3+31-15-6-15-21+0-21-15 +sign_ed25519_open 1 47 340231 +5485+1442+776+2385+2138+304+0-9+6-44-26-29-26-44-11 +sign_ed25519_open 1 59 341000 +5149+1162+719+503+1480+2017+136-28-24-163+0-52-135-28-24 +sign_ed25519_open 1 74 342274 +5494+1512+677+623+0+1879+1902+168-50-50-50-50-50-50-50 +sign_ed25519_open 1 93 337996 +5438+1672+826+649-126-48+1525+2117+122+0-78+0-78+0-78 +sign_ed25519_open 1 117 339616 +5085+1117+726+467+17-30-8-30+2428+1414+0-60-38-60-38 +sign_ed25519_open 1 147 341013 +5327+1247+523+491-7-31+0-7-31+1964+1975+166-64-71-95 +sign_ed25519_open 1 184 339306 +5684+1629+1084+834-61-61-46-61-61-46+1629+1807+233+0+0 +sign_ed25519_open 1 231 344632 +5167+1147+582+443-25-16+0-28-48-48-48+1942+1706+96-108 +sign_ed25519_open 1 289 341684 +5678+1359+619+571-15-39+0-39-15-24-15-39+1761+1916+442 +sign_ed25519_open 1 362 342498 +5885+1596+751+645-21-23-23-23+51+0+0+0+0+19195+1956 +sign_ed25519_open 1 453 347544 +5498+1441+779+723+57+0-27-47-47-47-47-47-47+3393+1966 +sign_ed25519_open 1 567 350207 +5614+1238+478+509-52+0-35+0-50+15-50+0-35+0+2868 +sign_ed25519_open 1 709 352783 +5293+1319+811+619+11+0+0+0+0+0+0+0+0+0+1606 +sign_ed25519_open 1 887 347656 +5667+1542+680+490-26-110+0-61+0-61+0-61+91-26-3 +sign_ed25519_open 1 1109 356620 +5742+1642+782+738+60+0+0+0+0+0+0+0+0+0+0 +sign_ed25519_open 1 1387 361858 +5921+1619+648+538-6+0+66-84-117-65+9-159-116-61+4 +sign_ed25519_open 1 1734 366650 +5421+1139+765+564+9+45+0+0-33-33-33-33-33-33-33 +sign_ed25519_open 1 2168 370579 +6087+1731+851+727-24+12-32-23-15+0-15+0-15+0+1493 +sign_ed25519_open 1 2711 378655 +5409+1361+766+546-18-2+0-33+7-27-7-19+0+1791+2194 +sign_ed25519_open 1 3389 392275 +5332+1347+719+656-40-15-25-15-40+0-40-15+1927+2178+116 +sign_ed25519_open 1 4237 401867 +6528+1619+634+515-28-14-55-14-14+0+2051+2007+137-138-99 +sign_ed25519_open 1 5297 423128 +5475+1522+813+554-82-77-67+983+3273+407-8+0+0+0+0 +sign_ed25519_open 1 6622 438253 +5156+1471+444+322+10802+13698+189-29-37+0-24-15-37+0-24 +sign_ed25519_open 1 8278 465935 +5083+4745+1515+580+0+62-1-1-6-6-6-6-6+1833+2460 +sign_ed25519_open 1 10348 500635 +7726+1145+246+3121+2228-48-368-312+2453+2051+0-386-365-376-365 +sign_ed25519_open 1 12936 535936 +7805+1438+2806+4544+270+51-118-29+0-64-97-8-120-30+3231 +sign_ed25519_open 1 16171 582251 +7853+1211+806+696-25-69+0+3818+279+90-84-127-24-71-64 +sign_ed25519_open 1 20214 651476 +9188+1434+835+363-88-203+0-137+1977+1752+7-190-104-226-197 +sign_ed25519_open 1 25268 728359 +8380+1371+677+441-129-161-11-15+2788+613+53-24-109-91+0 +sign_ed25519_open 1 31586 826500 +7166+778+221-9-500+1182+1359-243-499-354-533-414+732+1910+0 +sign_ed25519_open 1 39483 951920 +6128+2534+1717+0-897-1031+7796+12103+22057-774-772-772-916-915+2171 +sign_ed25519_open 1 49354 1101212 +8757+24489+461+177-600-616-552+2601+6-590-656-558+3619+0-576 +sign_ed25519_open 1 61693 1295360 +9924+694-91-289+4601+1188-655-884+2610-316+3111-561-770+3163+0 +sign_ed25519 2 implementation ref10 compiler gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +sign_ed25519_keypair 2 32 91328 +8914+312+51+48+0-1-1-1+3-1-1+3-1-1+3 +sign_ed25519 2 0 99700 +14303+243+18+50+19-5+0-5+0-5+0-5+0-5+0 +sign_ed25519 2 1 99842 +4234+84-13-10-8+14+0+4+0+4+0+4+0+4+0 +sign_ed25519 2 2 99722 +4300+168-58-35-65-44-60+2376+456-17+4+0+2+0+2 +sign_ed25519 2 3 99677 +4568+146+46+7065+956+63+13+0-18-20-18-20-18-20-18 +sign_ed25519 2 4 99595 +4411+401+31-6+0-6+0-6+0-6+0-6+0-6+0 +sign_ed25519 2 6 99747 +4186+223+39+50-7+0-2+0-2+0-2+0-2+0-2 +sign_ed25519 2 8 99717 +6856+750+38+39-19+5-3-14-7+0+1+0-15+0+1 +sign_ed25519 2 11 99785 +4471+95+30+18-14+0-2+0-2+0-2+0-2+0-2 +sign_ed25519 2 14 99711 +4352+119+36+38-6+0-2+0-2+0-2+0-2+0-2 +sign_ed25519 2 18 99875 +4202+53-36+0-86-78-82-78-82-78+2171+311+121+90+86 +sign_ed25519 2 23 99782 +4255+73+31+36+0+0-2+0-2+0-2+0-2+0-2 +sign_ed25519 2 29 99990 +4282+110+25+23-2+0-2+0-2+0-2+0-2+0-2 +sign_ed25519 2 37 99639 +4572+337+4+19-5+0-2+0-2+0-2+0-2+0-2 +sign_ed25519 2 47 99767 +4140+194+32+2476+682-22-1-2+0-2+0-2+0-2+0 +sign_ed25519 2 59 101797 +4444+160+61+48+0-2+0-2+0-2+0-2+0-2+0 +sign_ed25519 2 74 101934 +4319+220+44+41+9+0-4+0-4+0-4+0-4+0-4 +sign_ed25519 2 93 103730 +4383+184+42+0-74-72-74-72-74-72-74+1141+1941+23+5 +sign_ed25519 2 117 103914 +4279+157+31-5-9+4+0-9+0+4-13+4+0-9+0 +sign_ed25519 2 147 103628 +4486+177+114+113-3+0+1+0+1+0+1-3-6+0-2 +sign_ed25519 2 184 105667 +4375+89+26+25+0-3+0-3+0-3+0-3+0-3+0 +sign_ed25519 2 231 107581 +4401+167+1390+1443+168-8+0-8+0-8+0-8+0-8+0 +sign_ed25519 2 289 107429 +4434+106+39+46-4-8+0-8+0-8+0-8+0-8+0 +sign_ed25519 2 362 111412 +4351+190+89+96+1+0-7+0-7-13-7+0-7-13-7 +sign_ed25519 2 453 113356 +4257+170+95+59-80-68-77+1947+503-20+0-9+0-9+0 +sign_ed25519 2 567 117432 +4439+123+191+22+0+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 2 709 121054 +4264+59+17+15+0+0+0+0+0-13+0+0+0-13+118 +sign_ed25519 2 887 127003 +4371+207+128+123-21-17-30+2416+712+24+0+0-13+0+0 +sign_ed25519 2 1109 134776 +4442+190+90+75+3-6-13+0+0-13+0+0-13+0+0 +sign_ed25519 2 1387 142608 +4232+103+96+77+3+0-13+0+0-13+0+0-13+0+0 +sign_ed25519 2 1734 152258 +4183+2021+523+58+5-7+0+0-13+0+0-13+0+0-13 +sign_ed25519 2 2168 165594 +4733+185+115+118-5+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 2 2711 181200 +6871+181+108+110+1404+1985+119+0-6-12-6-6-6-6-6 +sign_ed25519 2 3389 202572 +4413+237+76+93-16+0-16+0-16+0-16+0-16+0-16 +sign_ed25519 2 4237 227686 +4232+305+2391+315-26+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 2 5297 260557 +4377+75+0-21-19-50-44-42-26-39+2511+420+25+39+48 +sign_ed25519 2 6622 301316 +4403+101+40+46-29+0-25-21-48+7-29+0-25-21+2504 +sign_ed25519 2 8278 351494 +4365+96+15+0-26+29-12+43-3-14-26+29-12+43-3 +sign_ed25519 2 10348 413277 +6360+125+94+61+0+0+0+0+0+0+0+0+0+2489+492 +sign_ed25519 2 12936 490600 +4821+24-23-20-75-70-70-70-70+2393+386+0+17+81+47 +sign_ed25519 2 16171 587740 +4652-49+146-213+2501+434-66-82+0-124-14+216-9+193+1876 +sign_ed25519 2 20214 712425 +4190-247-507-96-487+0+1616+189+486+120+237-225-250-177+881 +sign_ed25519 2 25268 865759 +4256-230-39-316+4+2192+512-381+20-38+363+0+1445-93-58 +sign_ed25519 2 31586 1057923 +3943-118+1781-768+56-520-65+1173+802-140-323+0-172+2414+50 +sign_ed25519 2 39483 1296142 +5011+130+2994+296-287+0+1464+1001-251-489-714+2144-78-449-93 +sign_ed25519 2 49354 1595022 +4501+674-70+1230-606-493+0+1475-151-664+1479+756-925-567+2318 +sign_ed25519 2 61693 1969645 +3295+2063-168-1112+1001-1492-388+1357+3185+0+3008-1540-712+1409-977 +sign_ed25519_open 2 0 338560 +15365+1664+2347+2403+198+0-33+0-33+0-33+0-33+0-33 +sign_ed25519_open 2 1 343530 +4980+1236+705+3396+2566+207+0+0+0+0+0+0+0+0+0 +sign_ed25519_open 2 2 339449 +5573+1454+487+512+1419+1944+249-1+0-1-1-1-1-1-1 +sign_ed25519_open 2 3 334325 +5394+1316+642+566+0+0+2197+1462-28-99-99-99-99-99-99 +sign_ed25519_open 2 4 334436 +4961+1409+534+381+0+0+0+1928+1879+262-41-41-41-41-41 +sign_ed25519_open 2 6 340664 +5284+1436+636+463-46-46-46-46+1593+1858+221+0+0+0+0 +sign_ed25519_open 2 8 338849 +5006+1218+586+399+0+0+0+0+0+1810+1915+168-59-51-59 +sign_ed25519_open 2 11 345721 +5080+1127+488+458+0-18-18-18-18-18+1714+1863+157-83-83 +sign_ed25519_open 2 14 342117 +5020+1333+490+494-1-1-13+0-1-1-13+1858+1734+245-1 +sign_ed25519_open 2 18 340940 +5129+1539+811+666-54+0-25-62+0-25-62+0+920+2775+367 +sign_ed25519_open 2 23 338917 +5163+1403+751+569+0-59+0-59+0+53+40-59+0-59+1713 +sign_ed25519_open 2 29 335313 +5281+1193+748+568+0-82-8+0-82-8+0-82-8+0-82 +sign_ed25519_open 2 37 334766 +5504+1534+751+656+0+0+15-3-3+12-3-3+12-3-3 +sign_ed25519_open 2 47 340126 +6221+3057+927+579+9-99+5-82+32-94-88-6-88-94+0 +sign_ed25519_open 2 59 339577 +5521+3422+2900+991-7-62-20+29-37+0-8+6-43+35-37 +sign_ed25519_open 2 74 341528 +5724+1667+2372+2570+274-60-46+0-58-46+0-58-46+0-58 +sign_ed25519_open 2 93 343075 +5702+1887+970+2541+1995+264+0+0+0+0+0+0+0+0+0 +sign_ed25519_open 2 117 346612 +4866+1237+717+551+2717+1741+37+0+0+0+0+0+0+0+0 +sign_ed25519_open 2 147 343388 +5916+1697+712+548-122+1730+1969+82+0-80-59-1-80-59-1 +sign_ed25519_open 2 184 340794 +5871+1495+763+588-30-30+2332+2012+148-18-41-9-9-50+0 +sign_ed25519_open 2 231 344546 +5241+1558+536+439-6-47-6+1961+1938+163+0-41+0-41+0 +sign_ed25519_open 2 289 339601 +5788+1989+831+808-17+0-2+0+1576+1781+188-90-92-90-107 +sign_ed25519_open 2 362 346429 +5443+1396+786+754-29+0-25+0-25+1824+2084+129-55-30-55 +sign_ed25519_open 2 453 345083 +5739+1684+864+576-1-76+0-45-32-44+1913+1747+227-31-34 +sign_ed25519_open 2 567 345815 +5580+1518+757+617-15-27-10-48-25-33-25+3060+593+0+7 +sign_ed25519_open 2 709 350083 +5492+1873+835+533-17-7-7-7-7-7-7+1523+1820+235+0 +sign_ed25519_open 2 887 348118 +4985+4304+2646+601+0-67-65-62-11-67-65-62+2194+1938+195 +sign_ed25519_open 2 1109 358500 +5396+1556+790+596+0-55-55-55-79-44-79-44+2136+2073+38 +sign_ed25519_open 2 1387 358226 +5772+1473+865+722+0-1-1-1-1-1-1-1+2230+1977+203 +sign_ed25519_open 2 1734 362564 +5705+1407+570+541+0-40-40-40-40-40-40-40+2338+2105+189 +sign_ed25519_open 2 2168 373288 +5287+1292+578+443-23-144-53-103-41-156+0+1587+1944+115-39 +sign_ed25519_open 2 2711 382789 +5439+1444+566+464-30-30-30-30-30-30+1770+2107+158-7+0 +sign_ed25519_open 2 3389 395229 +5959+1871+1096+832-26-26-11-26-27+2979+2085+153-5+0-5 +sign_ed25519_open 2 4237 400508 +5548+1241+510+620-7-7+0+1937+2195+118-109-74-113-74-109 +sign_ed25519_open 2 5297 422756 +5497+1569+792+595-42+3066+1089+84-1-4+0-4-3-1-3 +sign_ed25519_open 2 6622 443598 +5535+1979+4070+1555+95-3+0+4+2-10-14-10-14-10-14 +sign_ed25519_open 2 8278 469063 +4951+1335+428+306-96-84-96-84-145-133-145+3248+1022+36+0 +sign_ed25519_open 2 10348 496896 +7553+1526+737+543-30+10+3216+1210+0-70-127-60-97-100-87 +sign_ed25519_open 2 12936 539704 +9711+3279+766+339+0-47-61-62-61-62-61+2013+2060+158-35 +sign_ed25519_open 2 16171 584008 +5368+1341+461+569+1819+2395+125-121-84-98+0-181-161-109-77 +sign_ed25519_open 2 20214 648172 +11257+1115+541+539+54+0+2187+1511-102-149-212-143-295-204-81 +sign_ed25519_open 2 25268 732340 +7105+891+557+401-197-237+21207+556+0-292-126-242-347-321+2353 +sign_ed25519_open 2 31586 822638 +6115+813+0+1037+2678+3966-325-756-807-934-838+3237-397-740+1860 +sign_ed25519_open 2 39483 947230 +9495+750+39+0-622-496+8057+2788-664-719-748-702+2714+1534-400 +sign_ed25519_open 2 49354 1102443 +11234+951+332+93-558+1678+1437-393-313-386-416+2996+0-452-488 +sign_ed25519_open 2 61693 1292403 +6927+1107+37+2887+0-760-385+2169+218-472-671-422+1777-42-444 +sign_ed25519 3 implementation ref10 compiler clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +sign_ed25519_keypair 3 32 91306 +8280+153-32-4+0+0+0-4+4-4+0+0+0-4+4 +sign_ed25519 3 0 100025 +15556+98+89+20+0-2+0-2+0-2+0-2+0-2+0 +sign_ed25519 3 1 99857 +5576+198+272+6-6+0-2+0-2+0-2+0+2102+2000+206 +sign_ed25519 3 2 99876 +5580+212+34+10-3+4-1+4-1+0-1+0-1+0-1 +sign_ed25519 3 3 99911 +5417+298-2+5-6+0-2+0-2+0-2+0-2+0-2 +sign_ed25519 3 4 99933 +5344+183+28+18-2+0-2+0-2+0-2+0-2+0-2 +sign_ed25519 3 6 100054 +5276+156-62-86-116-116+2892+890-19-4+0+2+0+2+0 +sign_ed25519 3 8 99957 +5613+188+9-6+3+5+0+3+3-5-7-5-7-5-7 +sign_ed25519 3 11 100072 +5328+296+38+24-13+0-2+0-18-22-2+0-2+0-2 +sign_ed25519 3 14 100032 +5368+198+33+27-4+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 3 18 99947 +5906+222+84+32-6+0-2+0-2+0-2+0-2+0-2 +sign_ed25519 3 23 100051 +5343+159+29+7-12+0-2+0-2+0-2+0-2+0-2 +sign_ed25519 3 29 100100 +5276+102+66+41-2+0-2+0-2+0-2+0-2+0-2 +sign_ed25519 3 37 100015 +5273+383+14+0-12-19-19-19+2405+19736+191+64-17-41-44 +sign_ed25519 3 47 99987 +5555+421+79+57+4-2+0-2+0-2+0-2+0-2+0 +sign_ed25519 3 59 101999 +5453+285+70+47-2+0-2+0-2+0-2+0-2+0-2 +sign_ed25519 3 74 101858 +5542+293+37+6-4+0-2+0-2+0-2+0-2+0-2 +sign_ed25519 3 93 104177 +7354+2193+92+78+0+1+0+0+2+1-6-8-6-8-6 +sign_ed25519 3 117 103842 +5489+283+62+5+4+10-13+10+0-2+0-2+0-2+0 +sign_ed25519 3 147 103875 +5795+141+113+72-4-1+0-1+0-1+0-1+0-1+0 +sign_ed25519 3 184 105976 +5433+279+143-70-95-96-95-96+3500+496+0+0+1+0+1 +sign_ed25519 3 231 107894 +5657+112+60+35-8-5+0-5+0-5+0-5+50-181-210 +sign_ed25519 3 289 107665 +5549+298+40-7+0-7+0-7+0-7+0-7+0-7+0 +sign_ed25519 3 362 111638 +5651+246+81+70-16+0-7+0-7+0-7+0-7+4023+604 +sign_ed25519 3 453 113582 +5583+280+33-30+0-25+0-25+0-25+0-25+0-25+0 +sign_ed25519 3 567 117770 +5335+392+27+28+0+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 3 709 121296 +5277+181+21+15+0+0+0+0+0+0+0+0+0+0+2899 +sign_ed25519 3 887 127139 +5803+200+81+59-4+0-13+0+0-13+0+0-13+0+0 +sign_ed25519 3 1109 134918 +5685+302+47+3-4+0-13+0+0-13+0+0-13+0+0 +sign_ed25519 3 1387 142612 +5109+264+38-5-4+0-13+0+5+2839+700-136-106-99-124 +sign_ed25519 3 1734 152224 +5611+353+104+54+0-13+0+0-13+0+0-13+0+0-13 +sign_ed25519 3 2168 165798 +5616+305+122+103-3+0+0+0+0+0+0+0+0+0+2984 +sign_ed25519 3 2711 181464 +5636+275+30+72-4-49-49-49+0+0+0+0+0+0+0 +sign_ed25519 3 3389 202664 +5478+253+117+110+0+0+0+0+0+0+0+0+2202+1985+224 +sign_ed25519 3 4237 227792 +5378+147+50+1+5+0+0+0+0+0+0+0+0+0+0 +sign_ed25519 3 5297 260772 +5499+343+297+279+241+2964+1181-4+0-100-107-75-89-80-94 +sign_ed25519 3 6622 301549 +5705+51-32-37-132+2+0-125-154-87+3740+320+135+15-83 +sign_ed25519 3 8278 351741 +5504+56-53+38+0-3-61+74-7-61-7+3989+353+26-39 +sign_ed25519 3 10348 413443 +5535+223+19+0-35-31-31-31-31+700+3551+366+39-61-60 +sign_ed25519 3 12936 490995 +5568+336+129+0-16-12+1853+2157+154-76+44-60-66-60-66 +sign_ed25519 3 16171 588071 +5596+2170+2037-56-81+60+120-48-80-116-62+2214+2108-106+0 +sign_ed25519 3 20214 712385 +5412+31-170-601+1780+1737-206+107-130-70-207-190+1677+1533+0 +sign_ed25519 3 25268 866278 +5431-276-672+1127+1542-882-447+2852+2683+0+22963+5576-308-573-883 +sign_ed25519 3 31586 1058158 +6458+1372+40-1364+0-424+1372+1601+12-401-335-473+3227-81-215 +sign_ed25519 3 39483 1296821 +5628+2696+36-263-498+1087+1495-247-14-877+2968+0-316-719+1165 +sign_ed25519 3 49354 1596463 +6708-1608+1714+2164+326-2061+23603-864-1094+82+250-1425-1853+0-183 +sign_ed25519 3 61693 1970025 +12259+26-980-244+177-1607+0+460-564+270+695-1407+827-27-636 +sign_ed25519_open 3 0 339026 +17453+1902+964+574-20+14+0-16-25+14+0-16-25+14+0 +sign_ed25519_open 3 1 342585 +4967+1523+757+401+5+0+0+0+0+0+0+0+0+0+0 +sign_ed25519_open 3 2 335678 +6937+2915+1035+726+27-34+11-48+0-54+0-54+0-54+0 +sign_ed25519_open 3 3 337100 +4719+3523+2606+818+24-16+0-16+0-16+0-16+0-16+0 +sign_ed25519_open 3 4 337966 +5051+1727+2351+2561+248-17+2680+2114+0-77-58-59-58-59-58 +sign_ed25519_open 3 6 336337 +4941+1473+750+11864+11254+127-15+0-15+0-15+0-15+0-15 +sign_ed25519_open 3 8 339490 +5003+1644+1013+768+1776+2207+101+0+0-29+0+0+0+0+0 +sign_ed25519_open 3 11 340319 +4969+1639+650+274-243-212+15179+2495+288-52+0-33-55-48-64 +sign_ed25519_open 3 14 337930 +7867+1813+855+625+0+10+1712+1924-41-133-115-165-62-102-140 +sign_ed25519_open 3 18 339626 +5042+1659+839+420+0-45+8-59+3351+1857-43-101-118-140-118 +sign_ed25519_open 3 23 340881 +4896+1623+864+555-38-27-38-68+0+2406+1906+97-4-72-4 +sign_ed25519_open 3 29 341753 +5272+1611+939+334-125-196-125-196-125-196+1478+1870+282-46+0 +sign_ed25519_open 3 37 338665 +5104+1556+771+634-145-141-178-168-154-147-193+1660+1971+301+0 +sign_ed25519_open 3 47 338642 +5061+1616+775+423-28+0-28-15-13-15-28+0+1811+2057+371 +sign_ed25519_open 3 59 338823 +5233+2124+1006+646+4+0-33-18-33-33-18-33-33+2412+2036 +sign_ed25519_open 3 74 338571 +5478+2060+957+588-74-111-74-111+0-107+0-107+0-107+926 +sign_ed25519_open 3 93 343316 +5113+1853+908+563+0+0+0+0+0+0+0+0+0+0+0 +sign_ed25519_open 3 117 339059 +5569+1845+835+538+0-3+0-3+0-3+0-3+0-3+0 +sign_ed25519_open 3 147 339711 +23185+3304+1021+610+0+0+0+0+0-24-24-24-24-24-24 +sign_ed25519_open 3 184 342348 +4980+3060+2499+650+34-12+43-37-15+0-15-15+0-15-15 +sign_ed25519_open 3 231 343343 +5282+1790+2686+2844+296+23+0+0+0+0+0+0+0+0+0 +sign_ed25519_open 3 289 345037 +5675+1876+1026+2560+2092+208+14-14-23+0-23-14-9-14-23 +sign_ed25519_open 3 362 348274 +4780+1609+865+431+1676+1963+246+0-30-42-30-42-30-42-30 +sign_ed25519_open 3 453 349078 +5081+1673+800+397+850+2383+263+0-80-96-117-80-96-117-80 +sign_ed25519_open 3 567 348284 +5447+1702+628+376-195+1621+1868+160-28-7-15-15+0-22-15 +sign_ed25519_open 3 709 353342 +5440+1502+853+425-220-228+2916+1737+113+0-21-29-21-29-21 +sign_ed25519_open 3 887 349216 +5250+1532+706+211-185-185+1445+2019+196-18+0+0+0+0+0 +sign_ed25519_open 3 1109 351704 +4921+1534+779+486+0-17-17+2366+1609+24-5-5-5-5-5 +sign_ed25519_open 3 1387 364037 +5221+1905+928+576-130-151-162+1805+1926+183+0-76-23-76-23 +sign_ed25519_open 3 1734 367241 +4711+1550+833+426-180-218+809+2709+237+0-146-153-153-174-146 +sign_ed25519_open 3 2168 368656 +5227+1893+784+526-142-131+1664+2061+187-135-53+0-19-49-51 +sign_ed25519_open 3 2711 380384 +5478+1901+816+543-32+1871+2237+360+0-1-48-24-32-24-32 +sign_ed25519_open 3 3389 385942 +5100+1372+441+0+1461+1588-404+2721+1578-461-661-703-703-703-703 +sign_ed25519_open 3 4237 408151 +4889+1215+692+22120+962+2-47-70-55-100+0-61+0-61+0 +sign_ed25519_open 3 5297 422398 +7146+3561+793+601-64-49+9-69-12+1-32-11+0-31+1865 +sign_ed25519_open 3 6622 442375 +5360+1852+760+428-257-254-294-184-281-267-282+3586+2244+147+0 +sign_ed25519_open 3 8278 466630 +5094+1449+645+445-138-51-138+2365+1807+6-96+0-134-25-112 +sign_ed25519_open 3 10348 499001 +5061+1758+2886+2769+283-58+0+20-2-22-49-36-22-49+1841 +sign_ed25519_open 3 12936 538108 +7283+1774+788+458-216-177-220-177+3305+1887-48+0-31+8-21 +sign_ed25519_open 3 16171 590740 +7046+4111+2460+696-143-52+0-47-108-58-196+2099+1609+111-214 +sign_ed25519_open 3 20214 653736 +3505+0-737+9539+9085+1760+443-1503-1732-1653-1615-1549+863+662-1378 +sign_ed25519_open 3 25268 731184 +6606+1719+951+2529+1785+0-234-241-139-301-381+2044+4217-128-210 +sign_ed25519_open 3 31586 824788 +6142+3003+1589+0-553+3629+44-490+1684+1479-238-656-816-675-646 +sign_ed25519_open 3 39483 953586 +8975+998+66-160+4180+7325+0-752-765-738+1746+1126-550-894-875 +sign_ed25519_open 3 49354 1104404 +7103+622+63-123+2516+44-727-911-711+4454+0-629-690-684+1907 +sign_ed25519_open 3 61693 1292277 +5972+3711+858+142-525-467+2310+0-127-607+1538+864-356-606-368 diff --git a/lib-25519/lib25519/command/lib25519-speed.c b/lib-25519/lib25519/command/lib25519-speed.c new file mode 100644 index 0000000000..5f46ac534c --- /dev/null +++ b/lib-25519/lib25519/command/lib25519-speed.c @@ -0,0 +1,466 @@ +/* WARNING: auto-generated (by autogen-speed); do not edit */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "cpucycles.h" /* -lcpucycles */ +#include "lib25519.h" /* -l25519 */ +#include "randombytes.h" /* -lrandombytes_kernel */ + +static const char *targeto = 0; +static const char *targetp = 0; +static const char *targeti = 0; + +#include "limits.inc" + +static unsigned char *alignedcalloc(unsigned long long len) +{ + unsigned char *x = (unsigned char *) calloc(1,len + 128); + if (!x) abort(); + /* will never deallocate so shifting is ok */ + x += 63 & (-(unsigned long) x); + return x; +} + +#define TIMINGS 15 +static long long t[TIMINGS+1]; + +static void t_print(const char *op,long long impl,long long len) +{ + long long median = 0; + + printf("%s",op); + if (impl >= 0) + printf(" %lld",impl); + else + printf(" selected"); + printf(" %lld",len); + for (long long i = 0;i < TIMINGS;++i) + t[i] = t[i+1]-t[i]; + for (long long j = 0;j < TIMINGS;++j) { + long long belowj = 0; + long long abovej = 0; + for (long long i = 0;i < TIMINGS;++i) if (t[i] < t[j]) ++belowj; + for (long long i = 0;i < TIMINGS;++i) if (t[i] > t[j]) ++abovej; + if (belowj*2 < TIMINGS && abovej*2 < TIMINGS) { + median = t[j]; + break; + } + } + printf(" %lld ",median); + for (long long i = 0;i < TIMINGS;++i) + printf("%+lld",t[i]-median); + printf("\n"); + fflush(stdout); +} + +#define MAXTEST_BYTES 65536 + +static void measure_cpucycles(void) +{ + printf("cpucycles selected persecond %lld\n",cpucycles_persecond()); + printf("cpucycles selected implementation %s\n",cpucycles_implementation()); + + for (long long i = 0;i <= TIMINGS;++i) + t[i] = cpucycles(); + t_print("cpucycles",-1,0); +} + +static void measure_randombytes(void) +{ + unsigned char *m = alignedcalloc(MAXTEST_BYTES); + long long mlen = 0; + + while (mlen < MAXTEST_BYTES) { + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + randombytes(m,mlen); + } + t_print("randombytes",-1,mlen); + mlen += 1+mlen/2; + } +} + +static void measure_verify_32(void) +{ + if (targeto && strcmp(targeto,"verify")) return; + if (targetp && strcmp(targetp,"32")) return; + unsigned char *x = alignedcalloc(lib25519_verify_32_BYTES); + unsigned char *y = alignedcalloc(lib25519_verify_32_BYTES); + + for (long long impl = -1;impl < lib25519_numimpl_verify_32();++impl) { + int (*crypto_verify)(const unsigned char *,const unsigned char *); + if (targeti && strcmp(targeti,lib25519_dispatch_verify_32_implementation(impl))) continue; + if (impl >= 0) { + crypto_verify = lib25519_dispatch_verify_32(impl); + printf("verify_32 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_verify_32_implementation(impl),lib25519_dispatch_verify_32_compiler(impl)); + } else { + crypto_verify = lib25519_verify_32; + printf("verify_32 selected implementation %s compiler %s\n",lib25519_verify_32_implementation(),lib25519_verify_32_compiler()); + } + randombytes(x,lib25519_verify_32_BYTES); + randombytes(y,lib25519_verify_32_BYTES); + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + crypto_verify(x,y); + } + t_print("verify_32",impl,lib25519_verify_32_BYTES); + } +} + +static void measure_hashblocks_sha512(void) +{ + if (targeto && strcmp(targeto,"hashblocks")) return; + if (targetp && strcmp(targetp,"sha512")) return; + unsigned char *h = alignedcalloc(lib25519_hashblocks_sha512_STATEBYTES); + unsigned char *m = alignedcalloc(MAXTEST_BYTES); + long long mlen; + + for (long long impl = -1;impl < lib25519_numimpl_hashblocks_sha512();++impl) { + int (*crypto_hashblocks)(unsigned char *,const unsigned char *,long long); + if (targeti && strcmp(targeti,lib25519_dispatch_hashblocks_sha512_implementation(impl))) continue; + if (impl >= 0) { + crypto_hashblocks = lib25519_dispatch_hashblocks_sha512(impl); + printf("hashblocks_sha512 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_hashblocks_sha512_implementation(impl),lib25519_dispatch_hashblocks_sha512_compiler(impl)); + } else { + crypto_hashblocks = lib25519_hashblocks_sha512; + printf("hashblocks_sha512 selected implementation %s compiler %s\n",lib25519_hashblocks_sha512_implementation(),lib25519_hashblocks_sha512_compiler()); + } + randombytes(h,lib25519_hashblocks_sha512_STATEBYTES); + randombytes(m,MAXTEST_BYTES); + mlen = 0; + while (mlen <= MAXTEST_BYTES) { + randombytes(m,mlen); + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + crypto_hashblocks(h,m,mlen); + } + t_print("hashblocks_sha512",impl,mlen); + mlen += 1+mlen/2; + } + } +} + +static void measure_hash_sha512(void) +{ + if (targeto && strcmp(targeto,"hash")) return; + if (targetp && strcmp(targetp,"sha512")) return; + unsigned char *h = alignedcalloc(lib25519_hash_sha512_BYTES); + unsigned char *m = alignedcalloc(MAXTEST_BYTES); + long long mlen; + + for (long long impl = -1;impl < lib25519_numimpl_hash_sha512();++impl) { + void (*crypto_hash)(unsigned char *,const unsigned char *,long long); + if (targeti && strcmp(targeti,lib25519_dispatch_hash_sha512_implementation(impl))) continue; + if (impl >= 0) { + crypto_hash = lib25519_dispatch_hash_sha512(impl); + printf("hash_sha512 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_hash_sha512_implementation(impl),lib25519_dispatch_hash_sha512_compiler(impl)); + } else { + crypto_hash = lib25519_hash_sha512; + printf("hash_sha512 selected implementation %s compiler %s\n",lib25519_hash_sha512_implementation(),lib25519_hash_sha512_compiler()); + } + randombytes(h,lib25519_hash_sha512_BYTES); + randombytes(m,MAXTEST_BYTES); + mlen = 0; + while (mlen <= MAXTEST_BYTES) { + randombytes(m,mlen); + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + crypto_hash(h,m,mlen); + } + t_print("hash_sha512",impl,mlen); + mlen += 1+mlen/2; + } + } +} + +static void measure_pow_inv25519(void) +{ + if (targeto && strcmp(targeto,"pow")) return; + if (targetp && strcmp(targetp,"inv25519")) return; + unsigned char *n = alignedcalloc(lib25519_pow_inv25519_BYTES); + unsigned char *ne = alignedcalloc(lib25519_pow_inv25519_BYTES); + + for (long long impl = -1;impl < lib25519_numimpl_pow_inv25519();++impl) { + void (*crypto_pow)(unsigned char *,const unsigned char *); + if (targeti && strcmp(targeti,lib25519_dispatch_pow_inv25519_implementation(impl))) continue; + if (impl >= 0) { + crypto_pow = lib25519_dispatch_pow_inv25519(impl); + printf("pow_inv25519 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_pow_inv25519_implementation(impl),lib25519_dispatch_pow_inv25519_compiler(impl)); + } else { + crypto_pow = lib25519_pow_inv25519; + printf("pow_inv25519 selected implementation %s compiler %s\n",lib25519_pow_inv25519_implementation(),lib25519_pow_inv25519_compiler()); + } + randombytes(n,lib25519_pow_inv25519_BYTES); + randombytes(ne,lib25519_pow_inv25519_BYTES); + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + crypto_pow(ne,n); + } + t_print("pow_inv25519",impl,lib25519_pow_inv25519_BYTES); + } +} + +static void measure_nP_montgomery25519(void) +{ + if (targeto && strcmp(targeto,"nP")) return; + if (targetp && strcmp(targetp,"montgomery25519")) return; + unsigned char *n = alignedcalloc(lib25519_nP_montgomery25519_SCALARBYTES); + unsigned char *P = alignedcalloc(lib25519_nP_montgomery25519_POINTBYTES); + unsigned char *nP = alignedcalloc(lib25519_nP_montgomery25519_POINTBYTES); + + for (long long impl = -1;impl < lib25519_numimpl_nP_montgomery25519();++impl) { + void (*crypto_nP)(unsigned char *,const unsigned char *,const unsigned char *); + if (targeti && strcmp(targeti,lib25519_dispatch_nP_montgomery25519_implementation(impl))) continue; + if (impl >= 0) { + crypto_nP = lib25519_dispatch_nP_montgomery25519(impl); + printf("nP_montgomery25519 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_nP_montgomery25519_implementation(impl),lib25519_dispatch_nP_montgomery25519_compiler(impl)); + } else { + crypto_nP = lib25519_nP_montgomery25519; + printf("nP_montgomery25519 selected implementation %s compiler %s\n",lib25519_nP_montgomery25519_implementation(),lib25519_nP_montgomery25519_compiler()); + } + randombytes(n,lib25519_nP_montgomery25519_SCALARBYTES); + randombytes(P,lib25519_nP_montgomery25519_POINTBYTES); + randombytes(nP,lib25519_nP_montgomery25519_POINTBYTES); + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + crypto_nP(nP,n,P); + } + t_print("nP_montgomery25519",impl,lib25519_nP_montgomery25519_POINTBYTES); + } +} + +static void measure_nG_merged25519(void) +{ + if (targeto && strcmp(targeto,"nG")) return; + if (targetp && strcmp(targetp,"merged25519")) return; + unsigned char *n = alignedcalloc(lib25519_nP_SCALARBYTES); + unsigned char *nG = alignedcalloc(lib25519_nP_POINTBYTES); + + for (long long impl = -1;impl < lib25519_numimpl_nG_merged25519();++impl) { + void (*crypto_nG)(unsigned char *,const unsigned char *); + if (targeti && strcmp(targeti,lib25519_dispatch_nG_merged25519_implementation(impl))) continue; + if (impl >= 0) { + crypto_nG = lib25519_dispatch_nG_merged25519(impl); + printf("nG_merged25519 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_nG_merged25519_implementation(impl),lib25519_dispatch_nG_merged25519_compiler(impl)); + } else { + crypto_nG = lib25519_nG_merged25519; + printf("nG_merged25519 selected implementation %s compiler %s\n",lib25519_nG_merged25519_implementation(),lib25519_nG_merged25519_compiler()); + } + randombytes(n,lib25519_nP_SCALARBYTES); + randombytes(nG,lib25519_nP_POINTBYTES); + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + crypto_nG(nG,n); + } + t_print("nG_merged25519",impl,lib25519_nP_POINTBYTES); + } +} + +static void measure_nG_montgomery25519(void) +{ + if (targeto && strcmp(targeto,"nG")) return; + if (targetp && strcmp(targetp,"montgomery25519")) return; + unsigned char *n = alignedcalloc(lib25519_nP_SCALARBYTES); + unsigned char *nG = alignedcalloc(lib25519_nP_POINTBYTES); + + for (long long impl = -1;impl < lib25519_numimpl_nG_montgomery25519();++impl) { + void (*crypto_nG)(unsigned char *,const unsigned char *); + if (targeti && strcmp(targeti,lib25519_dispatch_nG_montgomery25519_implementation(impl))) continue; + if (impl >= 0) { + crypto_nG = lib25519_dispatch_nG_montgomery25519(impl); + printf("nG_montgomery25519 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_nG_montgomery25519_implementation(impl),lib25519_dispatch_nG_montgomery25519_compiler(impl)); + } else { + crypto_nG = lib25519_nG_montgomery25519; + printf("nG_montgomery25519 selected implementation %s compiler %s\n",lib25519_nG_montgomery25519_implementation(),lib25519_nG_montgomery25519_compiler()); + } + randombytes(n,lib25519_nP_SCALARBYTES); + randombytes(nG,lib25519_nP_POINTBYTES); + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + crypto_nG(nG,n); + } + t_print("nG_montgomery25519",impl,lib25519_nP_POINTBYTES); + } +} + +static void measure_mGnP_ed25519(void) +{ + if (targeto && strcmp(targeto,"mGnP")) return; + if (targetp && strcmp(targetp,"ed25519")) return; + unsigned char *mGnP = alignedcalloc(lib25519_mGnP_ed25519_OUTPUTBYTES); + unsigned char *m = alignedcalloc(lib25519_mGnP_ed25519_MBYTES); + unsigned char *n = alignedcalloc(lib25519_mGnP_ed25519_NBYTES); + unsigned char *P = alignedcalloc(lib25519_mGnP_ed25519_PBYTES); + + for (long long impl = -1;impl < lib25519_numimpl_mGnP_ed25519();++impl) { + void (*crypto_mGnP)(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *); + if (targeti && strcmp(targeti,lib25519_dispatch_mGnP_ed25519_implementation(impl))) continue; + if (impl >= 0) { + crypto_mGnP = lib25519_dispatch_mGnP_ed25519(impl); + printf("mGnP_ed25519 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_mGnP_ed25519_implementation(impl),lib25519_dispatch_mGnP_ed25519_compiler(impl)); + } else { + crypto_mGnP = lib25519_mGnP_ed25519; + printf("mGnP_ed25519 selected implementation %s compiler %s\n",lib25519_mGnP_ed25519_implementation(),lib25519_mGnP_ed25519_compiler()); + } + randombytes(mGnP,lib25519_mGnP_ed25519_OUTPUTBYTES); + randombytes(m,lib25519_mGnP_ed25519_MBYTES); + randombytes(n,lib25519_mGnP_ed25519_NBYTES); + randombytes(P,lib25519_mGnP_ed25519_PBYTES); + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + crypto_mGnP(mGnP,m,n,P); + } + t_print("mGnP_ed25519",impl,lib25519_mGnP_ed25519_OUTPUTBYTES); + } +} + +static void measure_dh_x25519(void) +{ + if (targeto && strcmp(targeto,"dh")) return; + if (targetp && strcmp(targetp,"x25519")) return; + unsigned char *pka = alignedcalloc(lib25519_dh_x25519_PUBLICKEYBYTES); + unsigned char *ska = alignedcalloc(lib25519_dh_x25519_SECRETKEYBYTES); + unsigned char *pkb = alignedcalloc(lib25519_dh_x25519_PUBLICKEYBYTES); + unsigned char *skb = alignedcalloc(lib25519_dh_x25519_SECRETKEYBYTES); + unsigned char *ka = alignedcalloc(lib25519_dh_x25519_BYTES); + + for (long long impl = -1;impl < lib25519_numimpl_dh_x25519();++impl) { + void (*crypto_dh_keypair)(unsigned char *,unsigned char *); + void (*crypto_dh)(unsigned char *,const unsigned char *,const unsigned char *); + if (targeti && strcmp(targeti,lib25519_dispatch_dh_x25519_implementation(impl))) continue; + if (impl >= 0) { + crypto_dh_keypair = lib25519_dispatch_dh_x25519_keypair(impl); + crypto_dh = lib25519_dispatch_dh_x25519(impl); + printf("dh_x25519 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_dh_x25519_implementation(impl),lib25519_dispatch_dh_x25519_compiler(impl)); + } else { + crypto_dh_keypair = lib25519_dh_x25519_keypair; + crypto_dh = lib25519_dh_x25519; + printf("dh_x25519 selected implementation %s compiler %s\n",lib25519_dh_x25519_implementation(),lib25519_dh_x25519_compiler()); + } + randombytes(pka,lib25519_dh_x25519_PUBLICKEYBYTES); + randombytes(ska,lib25519_dh_x25519_SECRETKEYBYTES); + randombytes(pkb,lib25519_dh_x25519_PUBLICKEYBYTES); + randombytes(skb,lib25519_dh_x25519_SECRETKEYBYTES); + randombytes(ka,lib25519_dh_x25519_BYTES); + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + crypto_dh_keypair(pka,ska); + } + t_print("dh_x25519_keypair",impl,lib25519_dh_x25519_PUBLICKEYBYTES); + crypto_dh_keypair(pkb,skb); + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + crypto_dh(ka,pkb,ska); + } + t_print("dh_x25519",impl,lib25519_dh_x25519_BYTES); + } +} + +static void measure_sign_ed25519(void) +{ + if (targeto && strcmp(targeto,"sign")) return; + if (targetp && strcmp(targetp,"ed25519")) return; + unsigned char *pk = alignedcalloc(lib25519_sign_ed25519_PUBLICKEYBYTES); + unsigned char *sk = alignedcalloc(lib25519_sign_ed25519_SECRETKEYBYTES); + unsigned char *m = alignedcalloc(MAXTEST_BYTES+lib25519_sign_ed25519_BYTES); + unsigned char *sm = alignedcalloc(MAXTEST_BYTES+lib25519_sign_ed25519_BYTES); + unsigned char *m2 = alignedcalloc(MAXTEST_BYTES+lib25519_sign_ed25519_BYTES); + long long mlen; + long long smlen; + long long m2len; + + for (long long impl = -1;impl < lib25519_numimpl_sign_ed25519();++impl) { + void (*crypto_sign_keypair)(unsigned char *,unsigned char *); + void (*crypto_sign)(unsigned char *,long long *,const unsigned char *,long long,const unsigned char *); + int (*crypto_sign_open)(unsigned char *,long long *,const unsigned char *,long long,const unsigned char *); + if (targeti && strcmp(targeti,lib25519_dispatch_sign_ed25519_implementation(impl))) continue; + if (impl >= 0) { + crypto_sign_keypair = lib25519_dispatch_sign_ed25519_keypair(impl); + crypto_sign = lib25519_dispatch_sign_ed25519(impl); + crypto_sign_open = lib25519_dispatch_sign_ed25519_open(impl); + printf("sign_ed25519 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_sign_ed25519_implementation(impl),lib25519_dispatch_sign_ed25519_compiler(impl)); + } else { + crypto_sign_keypair = lib25519_sign_ed25519_keypair; + crypto_sign = lib25519_sign_ed25519; + crypto_sign_open = lib25519_sign_ed25519_open; + printf("sign_ed25519 selected implementation %s compiler %s\n",lib25519_sign_ed25519_implementation(),lib25519_sign_ed25519_compiler()); + } + randombytes(pk,lib25519_sign_ed25519_PUBLICKEYBYTES); + randombytes(sk,lib25519_sign_ed25519_SECRETKEYBYTES); + randombytes(m,MAXTEST_BYTES+lib25519_sign_ed25519_BYTES); + randombytes(sm,MAXTEST_BYTES+lib25519_sign_ed25519_BYTES); + randombytes(m2,MAXTEST_BYTES+lib25519_sign_ed25519_BYTES); + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + crypto_sign_keypair(pk,sk); + } + t_print("sign_ed25519_keypair",impl,lib25519_sign_ed25519_PUBLICKEYBYTES); + mlen = 0; + while (mlen <= MAXTEST_BYTES) { + randombytes(m,mlen); + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + crypto_sign(sm,&smlen,m,mlen,sk); + } + t_print("sign_ed25519",impl,mlen); + mlen += 1+mlen/4; + } + mlen = 0; + while (mlen <= MAXTEST_BYTES) { + randombytes(m,mlen); + lib25519_sign(sm,&smlen,m,mlen,sk); + for (long long i = 0;i <= TIMINGS;++i) { + t[i] = cpucycles(); + crypto_sign_open(m2,&m2len,sm,smlen,pk); + } + t_print("sign_ed25519_open",impl,mlen); + /* this is, in principle, not a test program */ + /* but some checks here help validate the data flow above */ + assert(m2len == mlen); + assert(!memcmp(m,m2,mlen)); + mlen += 1+mlen/4; + } + } +} + +#include "print_cpuid.inc" + +int main(int argc,char **argv) +{ + printf("lib25519 version %s\n",lib25519_version); + printf("lib25519 arch %s\n",lib25519_arch); + print_cpuid(); + + if (*argv) ++argv; + if (*argv) { + targeto = *argv++; + if (*argv) { + targetp = *argv++; + if (*argv) { + targeti = *argv++; + } + } + } + + measure_cpucycles(); + measure_randombytes(); + limits(); + measure_verify_32(); + measure_hashblocks_sha512(); + measure_hash_sha512(); + measure_pow_inv25519(); + measure_nP_montgomery25519(); + measure_nG_merged25519(); + measure_nG_montgomery25519(); + measure_mGnP_ed25519(); + measure_dh_x25519(); + measure_sign_ed25519(); + + return 0; +} diff --git a/lib-25519/lib25519/command/lib25519-test.c b/lib-25519/lib25519/command/lib25519-test.c new file mode 100644 index 0000000000..6be7bedeed --- /dev/null +++ b/lib-25519/lib25519/command/lib25519-test.c @@ -0,0 +1,5986 @@ +/* WARNING: auto-generated (by autogen-test); do not edit */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "crypto_uint8.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" +#include "lib25519.h" /* -l25519 */ +#include "randombytes.h" + +static const char *targeto = 0; +static const char *targetp = 0; +static const char *targeti = 0; + +static int ok = 1; + +#define fail ((ok = 0),printf) + +/* ----- kernelrandombytes */ + +static int kernelrandombytes_fd = -1; + +static void kernelrandombytes_setup(void) +{ + kernelrandombytes_fd = open("/dev/urandom",O_RDONLY); + if (kernelrandombytes_fd == -1) { + fprintf(stderr,"lib25519-test: fatal: unable to open /dev/urandom: %s",strerror(errno)); + exit(111); + } +} + +static void kernelrandombytes(unsigned char *x,long long xlen) +{ + int i; + + while (xlen > 0) { + if (xlen < 1048576) i = xlen; else i = 1048576; + + i = read(kernelrandombytes_fd,x,i); + if (i < 1) { + sleep(1); + continue; + } + + x += i; + xlen -= i; + } +} + +/* ----- rng and hash, from supercop/try-anything.c */ + +typedef crypto_uint8 u8; +typedef crypto_uint32 u32; +typedef crypto_uint64 u64; + +#define FOR(i,n) for (i = 0;i < n;++i) + +static u32 L32(u32 x,int c) { return (x << c) | ((x&0xffffffff) >> (32 - c)); } + +static u32 ld32(const u8 *x) +{ + u32 u = x[3]; + u = (u<<8)|x[2]; + u = (u<<8)|x[1]; + return (u<<8)|x[0]; +} + +static void st32(u8 *x,u32 u) +{ + int i; + FOR(i,4) { x[i] = u; u >>= 8; } +} + +static const u8 sigma[17] = "expand 32-byte k"; + +static void core_salsa(u8 *out,const u8 *in,const u8 *k) +{ + u32 w[16],x[16],y[16],t[4]; + int i,j,m; + + FOR(i,4) { + x[5*i] = ld32(sigma+4*i); + x[1+i] = ld32(k+4*i); + x[6+i] = ld32(in+4*i); + x[11+i] = ld32(k+16+4*i); + } + + FOR(i,16) y[i] = x[i]; + + FOR(i,20) { + FOR(j,4) { + FOR(m,4) t[m] = x[(5*j+4*m)%16]; + t[1] ^= L32(t[0]+t[3], 7); + t[2] ^= L32(t[1]+t[0], 9); + t[3] ^= L32(t[2]+t[1],13); + t[0] ^= L32(t[3]+t[2],18); + FOR(m,4) w[4*j+(j+m)%4] = t[m]; + } + FOR(m,16) x[m] = w[m]; + } + + FOR(i,16) st32(out + 4 * i,x[i] + y[i]); +} + +static void salsa20(u8 *c,u64 b,const u8 *n,const u8 *k) +{ + u8 z[16],x[64]; + u32 u,i; + if (!b) return; + FOR(i,16) z[i] = 0; + FOR(i,8) z[i] = n[i]; + while (b >= 64) { + core_salsa(x,z,k); + FOR(i,64) c[i] = x[i]; + u = 1; + for (i = 8;i < 16;++i) { + u += (u32) z[i]; + z[i] = u; + u >>= 8; + } + b -= 64; + c += 64; + } + if (b) { + core_salsa(x,z,k); + FOR(i,b) c[i] = x[i]; + } +} + +static void increment(u8 *n) +{ + if (!++n[0]) + if (!++n[1]) + if (!++n[2]) + if (!++n[3]) + if (!++n[4]) + if (!++n[5]) + if (!++n[6]) + if (!++n[7]) + ; +} + +static unsigned char testvector_n[8]; + +static void testvector_clear(void) +{ + memset(testvector_n,0,sizeof testvector_n); +} + +static void testvector(unsigned char *x,unsigned long long xlen) +{ + const static unsigned char testvector_k[33] = "generate inputs for test vectors"; + salsa20(x,xlen,testvector_n,testvector_k); + increment(testvector_n); +} + +static unsigned long long myrandom(void) +{ + unsigned char x[8]; + unsigned long long result; + testvector(x,8); + result = x[7]; + result = (result<<8)|x[6]; + result = (result<<8)|x[5]; + result = (result<<8)|x[4]; + result = (result<<8)|x[3]; + result = (result<<8)|x[2]; + result = (result<<8)|x[1]; + result = (result<<8)|x[0]; + return result; +} + +static unsigned char canary_n[8]; + +static void canary(unsigned char *x,unsigned long long xlen) +{ + const static unsigned char canary_k[33] = "generate pad to catch overwrites"; + salsa20(x,xlen,canary_n,canary_k); + increment(canary_n); +} + +static void double_canary(unsigned char *x2,unsigned char *x,unsigned long long xlen) +{ + canary(x - 16,16); + canary(x + xlen,16); + memcpy(x2 - 16,x - 16,16); + memcpy(x2 + xlen,x + xlen,16); +} + +static void input_prepare(unsigned char *x2,unsigned char *x,unsigned long long xlen) +{ + testvector(x,xlen); + canary(x - 16,16); + canary(x + xlen,16); + memcpy(x2 - 16,x - 16,xlen + 32); +} + +static void input_compare(const unsigned char *x2,const unsigned char *x,unsigned long long xlen,const char *fun) +{ + if (memcmp(x2 - 16,x - 16,xlen + 32)) { + fail("failure: %s overwrites input\n",fun); + } +} + +static void output_prepare(unsigned char *x2,unsigned char *x,unsigned long long xlen) +{ + canary(x - 16,xlen + 32); + memcpy(x2 - 16,x - 16,xlen + 32); +} + +static void output_compare(const unsigned char *x2,const unsigned char *x,unsigned long long xlen,const char *fun) +{ + if (memcmp(x2 - 16,x - 16,16)) { + fail("failure: %s writes before output\n",fun); + } + if (memcmp(x2 + xlen,x + xlen,16)) { + fail("failure: %s writes after output\n",fun); + } +} + +/* ----- knownrandombytes */ + +static const int knownrandombytes_is_only_for_testing_not_for_cryptographic_use = 1; +#define knownrandombytes randombytes + +#define QUARTERROUND(a,b,c,d) \ + a += b; d = L32(d^a,16); \ + c += d; b = L32(b^c,12); \ + a += b; d = L32(d^a, 8); \ + c += d; b = L32(b^c, 7); + +static void core_chacha(u8 *out,const u8 *in,const u8 *k) +{ + u32 x[16],y[16]; + int i,j; + FOR(i,4) { + x[i] = ld32(sigma+4*i); + x[12+i] = ld32(in+4*i); + } + FOR(i,8) x[4+i] = ld32(k+4*i); + FOR(i,16) y[i] = x[i]; + FOR(i,10) { + FOR(j,4) { QUARTERROUND(x[j],x[j+4],x[j+8],x[j+12]) } + FOR(j,4) { QUARTERROUND(x[j],x[((j+1)&3)+4],x[((j+2)&3)+8],x[((j+3)&3)+12]) } + } + FOR(i,16) st32(out+4*i,x[i]+y[i]); +} + +static void chacha20(u8 *c,u64 b,const u8 *n,const u8 *k) +{ + u8 z[16],x[64]; + u32 u,i; + if (!b) return; + FOR(i,16) z[i] = 0; + FOR(i,8) z[i+8] = n[i]; + while (b >= 64) { + core_chacha(x,z,k); + FOR(i,64) c[i] = x[i]; + u = 1; + FOR(i,8) { + u += (u32) z[i]; + z[i] = u; + u >>= 8; + } + b -= 64; + c += 64; + } + if (b) { + core_chacha(x,z,k); + FOR(i,b) c[i] = x[i]; + } +} + +#define crypto_rng_OUTPUTBYTES 736 + +static int crypto_rng( + unsigned char *r, /* random output */ + unsigned char *n, /* new key */ + const unsigned char *g /* old key */ +) +{ + static const unsigned char nonce[8] = {0}; + unsigned char x[32+crypto_rng_OUTPUTBYTES]; + chacha20(x,sizeof x,nonce,g); + memcpy(n,x,32); + memcpy(r,x+32,crypto_rng_OUTPUTBYTES); + return 0; +} + +static unsigned char knownrandombytes_g[32]; +static unsigned char knownrandombytes_r[crypto_rng_OUTPUTBYTES]; +static unsigned long long knownrandombytes_pos = crypto_rng_OUTPUTBYTES; + +static void knownrandombytes_clear(void) +{ + memset(knownrandombytes_g,0,sizeof knownrandombytes_g); + memset(knownrandombytes_r,0,sizeof knownrandombytes_r); + knownrandombytes_pos = crypto_rng_OUTPUTBYTES; +} + +void knownrandombytes(unsigned char *x,long long xlen) +{ + assert(knownrandombytes_is_only_for_testing_not_for_cryptographic_use); + + while (xlen > 0) { + if (knownrandombytes_pos == crypto_rng_OUTPUTBYTES) { + crypto_rng(knownrandombytes_r,knownrandombytes_g,knownrandombytes_g); + knownrandombytes_pos = 0; + } + *x++ = knownrandombytes_r[knownrandombytes_pos]; xlen -= 1; + knownrandombytes_r[knownrandombytes_pos++] = 0; + } +} + +/* ----- checksums */ + +static unsigned char checksum_state[64]; +static char checksum_hex[65]; + +static void checksum_expected(const char *expected) +{ + long long i; + for (i = 0;i < 32;++i) { + checksum_hex[2 * i] = "0123456789abcdef"[15 & (checksum_state[i] >> 4)]; + checksum_hex[2 * i + 1] = "0123456789abcdef"[15 & checksum_state[i]]; + } + checksum_hex[2 * i] = 0; + + if (strcmp(checksum_hex,expected)) + fail("failure: checksum mismatch: %s expected %s\n",checksum_hex,expected); +} + +static void checksum_clear(void) +{ + memset(checksum_state,0,sizeof checksum_state); + knownrandombytes_clear(); + testvector_clear(); + /* not necessary to clear canary */ +} + +static void checksum(const unsigned char *x,unsigned long long xlen) +{ + u8 block[16]; + int i; + while (xlen >= 16) { + core_salsa(checksum_state,x,checksum_state); + x += 16; + xlen -= 16; + } + FOR(i,16) block[i] = 0; + FOR(i,xlen) block[i] = x[i]; + block[xlen] = 1; + checksum_state[0] ^= 1; + core_salsa(checksum_state,block,checksum_state); +} + +#include "limits.inc" + +static unsigned char *alignedcalloc(unsigned long long len) +{ + unsigned char *x = (unsigned char *) calloc(1,len + 256); + long long i; + if (!x) abort(); + /* will never deallocate so shifting is ok */ + for (i = 0;i < len + 256;++i) x[i] = random(); + x += 64; + x += 63 & (-(unsigned long) x); + for (i = 0;i < len;++i) x[i] = 0; + return x; +} + +/* ----- catching SIGILL, SIGBUS, SIGSEGV, etc. */ + +static void forked(void (*test)(long long),long long impl) +{ + fflush(stdout); + pid_t child = fork(); + int childstatus = -1; + if (child == -1) { + fprintf(stderr,"fatal: fork failed: %s",strerror(errno)); + exit(111); + } + if (child == 0) { + ok = 1; + limits(); + test(impl); + if (!ok) exit(100); + exit(0); + } + if (waitpid(child,&childstatus,0) != child) { + fprintf(stderr,"fatal: wait failed: %s",strerror(errno)); + exit(111); + } + if (childstatus) + fail("failure: process failed, status %d\n",childstatus); + fflush(stdout); +} + +/* ----- verify, derived from supercop/crypto_verify/try.c */ + +static int (*crypto_verify)(const unsigned char *,const unsigned char *); +#define crypto_verify_BYTES lib25519_verify_BYTES + +static unsigned char *test_verify_x; +static unsigned char *test_verify_y; + +static void test_verify_check(void) +{ + unsigned char *x = test_verify_x; + unsigned char *y = test_verify_y; + int r = crypto_verify(x,y); + + if (r == 0) { + if (memcmp(x,y,crypto_verify_BYTES)) + fail("failure: different strings pass verify\n"); + } else if (r == -1) { + if (!memcmp(x,y,crypto_verify_BYTES)) + fail("failure: equal strings fail verify\n"); + } else { + fail("failure: weird return value\n"); + } +} + +void test_verify_impl(long long impl) +{ + unsigned char *x = test_verify_x; + unsigned char *y = test_verify_y; + + if (targeti && strcmp(targeti,lib25519_dispatch_verify_implementation(impl))) return; + if (impl >= 0) { + crypto_verify = lib25519_dispatch_verify(impl); + printf("verify %lld implementation %s compiler %s\n",impl,lib25519_dispatch_verify_implementation(impl),lib25519_dispatch_verify_compiler(impl)); + } else { + crypto_verify = lib25519_verify; + printf("verify selected implementation %s compiler %s\n",lib25519_verify_implementation(),lib25519_verify_compiler()); + } + + kernelrandombytes(x,crypto_verify_BYTES); + kernelrandombytes(y,crypto_verify_BYTES); + test_verify_check(); + memcpy(y,x,crypto_verify_BYTES); + test_verify_check(); + y[myrandom() % crypto_verify_BYTES] = myrandom(); + test_verify_check(); + y[myrandom() % crypto_verify_BYTES] = myrandom(); + test_verify_check(); + y[myrandom() % crypto_verify_BYTES] = myrandom(); + test_verify_check(); +} + +static void test_verify(void) +{ + if (targeto && strcmp(targeto,"verify")) return; + if (targetp && strcmp(targetp,"32")) return; + + test_verify_x = alignedcalloc(crypto_verify_BYTES); + test_verify_y = alignedcalloc(crypto_verify_BYTES); + + for (long long offset = 0;offset < 2;++offset) { + printf("verify offset %lld\n",offset); + for (long long impl = -1;impl < lib25519_numimpl_verify();++impl) + forked(test_verify_impl,impl); + ++test_verify_x; + ++test_verify_y; + } +} + +/* ----- hashblocks, derived from supercop/crypto_hashblocks/try.c */ +static const char *hashblocks_sha512_checksums[] = { + "f0bc623a9033f9f648336540e11e85be21aeb60905c7d8808d10ea20b39d58d1", + "f1a2c46c9ce7fa4cd22f180907d77b6f7189badef4b9a1b5284d6fb9db859b76", +} ; + +static int (*crypto_hashblocks)(unsigned char *,const unsigned char *,long long); +#define crypto_hashblocks_STATEBYTES lib25519_hashblocks_sha512_STATEBYTES +#define crypto_hashblocks_BLOCKBYTES lib25519_hashblocks_sha512_BLOCKBYTES + +static unsigned char *test_hashblocks_sha512_h; +static unsigned char *test_hashblocks_sha512_m; +static unsigned char *test_hashblocks_sha512_h2; +static unsigned char *test_hashblocks_sha512_m2; + +static void test_hashblocks_sha512_impl(long long impl) +{ + unsigned char *h = test_hashblocks_sha512_h; + unsigned char *m = test_hashblocks_sha512_m; + unsigned char *h2 = test_hashblocks_sha512_h2; + unsigned char *m2 = test_hashblocks_sha512_m2; + long long hlen = crypto_hashblocks_STATEBYTES; + long long mlen; + + if (targeti && strcmp(targeti,lib25519_dispatch_hashblocks_sha512_implementation(impl))) return; + if (impl >= 0) { + crypto_hashblocks = lib25519_dispatch_hashblocks_sha512(impl); + printf("hashblocks_sha512 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_hashblocks_sha512_implementation(impl),lib25519_dispatch_hashblocks_sha512_compiler(impl)); + } else { + crypto_hashblocks = lib25519_hashblocks_sha512; + printf("hashblocks_sha512 selected implementation %s compiler %s\n",lib25519_hashblocks_sha512_implementation(),lib25519_hashblocks_sha512_compiler()); + } + for (long long checksumbig = 0;checksumbig < 2;++checksumbig) { + long long loops = checksumbig ? 32768 : 4096; + long long maxtest = checksumbig ? 4096 : 128; + + checksum_clear(); + + for (long long loop = 0;loop < loops;++loop) { + int result; + mlen = myrandom() % (maxtest + 1); + + input_prepare(m2,m,mlen); + input_prepare(h2,h,hlen); + result = crypto_hashblocks(h,m,mlen); + if (result != mlen % crypto_hashblocks_BLOCKBYTES) fail("failure: crypto_hashblocks returns unexpected value\n"); + checksum(h,hlen); + output_compare(h2,h,hlen,"crypto_hashblocks"); + input_compare(m2,m,mlen,"crypto_hashblocks"); + + double_canary(h2,h,hlen); + double_canary(m2,m,mlen); + result = crypto_hashblocks(h2,m2,mlen); + if (result != mlen % crypto_hashblocks_BLOCKBYTES) fail("failure: crypto_hashblocks returns unexpected value\n"); + if (memcmp(h2,h,hlen) != 0) fail("failure: crypto_hashblocks is nondeterministic\n"); + } + checksum_expected(hashblocks_sha512_checksums[checksumbig]); + } +} + +static void test_hashblocks_sha512(void) +{ + if (targeto && strcmp(targeto,"hashblocks")) return; + if (targetp && strcmp(targetp,"sha512")) return; + test_hashblocks_sha512_h = alignedcalloc(crypto_hashblocks_STATEBYTES); + test_hashblocks_sha512_m = alignedcalloc(4096); + test_hashblocks_sha512_h2 = alignedcalloc(crypto_hashblocks_STATEBYTES); + test_hashblocks_sha512_m2 = alignedcalloc(4096); + + for (long long offset = 0;offset < 2;++offset) { + printf("hashblocks_sha512 offset %lld\n",offset); + for (long long impl = -1;impl < lib25519_numimpl_hashblocks_sha512();++impl) + forked(test_hashblocks_sha512_impl,impl); + ++test_hashblocks_sha512_h; + ++test_hashblocks_sha512_m; + ++test_hashblocks_sha512_h2; + ++test_hashblocks_sha512_m2; + } +} +#undef crypto_hashblocks_STATEBYTES +#undef crypto_hashblocks_BLOCKBYTES + + +/* ----- hash, derived from supercop/crypto_hash/try.c */ +static const char *hash_sha512_checksums[] = { + "8220572f58bd4730be165c9739d8d4b0fd2e0229dbe01e25b4aed23f00f23b70", + "c1e322b7cbfc941260c5508967ba05bce22eeee94d425e708b7c3301ea1d5e2e", +} ; + +static void (*crypto_hash)(unsigned char *,const unsigned char *,long long); +#define crypto_hash_BYTES lib25519_hash_sha512_BYTES + +static unsigned char *test_hash_sha512_h; +static unsigned char *test_hash_sha512_m; +static unsigned char *test_hash_sha512_h2; +static unsigned char *test_hash_sha512_m2; + +static void test_hash_sha512_impl(long long impl) +{ + unsigned char *h = test_hash_sha512_h; + unsigned char *m = test_hash_sha512_m; + unsigned char *h2 = test_hash_sha512_h2; + unsigned char *m2 = test_hash_sha512_m2; + long long hlen = crypto_hash_BYTES; + long long mlen; + + if (targeti && strcmp(targeti,lib25519_dispatch_hash_sha512_implementation(impl))) return; + if (impl >= 0) { + crypto_hash = lib25519_dispatch_hash_sha512(impl); + printf("hash_sha512 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_hash_sha512_implementation(impl),lib25519_dispatch_hash_sha512_compiler(impl)); + } else { + crypto_hash = lib25519_hash_sha512; + printf("hash_sha512 selected implementation %s compiler %s\n",lib25519_hash_sha512_implementation(),lib25519_hash_sha512_compiler()); + } + for (long long checksumbig = 0;checksumbig < 2;++checksumbig) { + long long loops = checksumbig ? 512 : 64; + long long maxtest = checksumbig ? 4096 : 128; + + checksum_clear(); + + for (long long loop = 0;loop < loops;++loop) { + mlen = myrandom() % (maxtest + 1); + + output_prepare(h2,h,hlen); + input_prepare(m2,m,mlen); + crypto_hash(h,m,mlen); + checksum(h,hlen); + output_compare(h2,h,hlen,"crypto_hash"); + input_compare(m2,m,mlen,"crypto_hash"); + + double_canary(h2,h,hlen); + double_canary(m2,m,mlen); + crypto_hash(h2,m2,mlen); + if (memcmp(h2,h,hlen) != 0) fail("failure: crypto_hash is nondeterministic\n"); + + double_canary(h2,h,hlen); + double_canary(m2,m,mlen); + crypto_hash(m2,m2,mlen); + if (memcmp(m2,h,hlen) != 0) fail("failure: crypto_hash does not handle m=h overlap\n"); + memcpy(m2,m,mlen); + } + checksum_expected(hash_sha512_checksums[checksumbig]); + } +} + +static void test_hash_sha512(void) +{ + if (targeto && strcmp(targeto,"hash")) return; + if (targetp && strcmp(targetp,"sha512")) return; + test_hash_sha512_h = alignedcalloc(crypto_hash_BYTES); + test_hash_sha512_m = alignedcalloc(4096); + test_hash_sha512_h2 = alignedcalloc(crypto_hash_BYTES); + test_hash_sha512_m2 = alignedcalloc(4096); + + for (long long offset = 0;offset < 2;++offset) { + printf("hash_sha512 offset %lld\n",offset); + for (long long impl = -1;impl < lib25519_numimpl_hash_sha512();++impl) + forked(test_hash_sha512_impl,impl); + ++test_hash_sha512_h; + ++test_hash_sha512_m; + ++test_hash_sha512_h2; + ++test_hash_sha512_m2; + } +} +#undef crypto_hash_BYTES + + +/* ----- pow, derived from supercop/crypto_pow/try.c */ +static const char *pow_inv25519_checksums[] = { + "ad2062946e82718da820226504991a85c5fe56bdbff959c1313f837ee13b37be", + "59b3045a01e1fca2a86a0280aee8b985c5e040afdc0d3e85ed87eb97a46a4dd6", +} ; + +static void (*crypto_pow)(unsigned char *,const unsigned char *); +#define crypto_pow_BYTES lib25519_pow_inv25519_BYTES + +static unsigned char *test_pow_inv25519_q; +static unsigned char *test_pow_inv25519_p; +static unsigned char *test_pow_inv25519_q2; +static unsigned char *test_pow_inv25519_p2; + +#define precomputed_pow_inv25519_NUM 296 + +static const unsigned char precomputed_pow_inv25519_q[precomputed_pow_inv25519_NUM][crypto_pow_BYTES] = { + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63}, + {73,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}, + {242,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,95}, + {150,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,25}, + {155,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,106}, + {141,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36}, + {249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,47}, + {18,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,71}, + {203,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,12}, + {38,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,58}, + {68,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,117}, + {11,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59}, + {61,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,82}, + {208,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,93}, + {243,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,87}, + {77,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90}, + {137,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,35}, + {20,202,107,40,175,161,188,134,242,26,202,107,40,175,161,188,134,242,26,202,107,40,175,161,188,134,242,26,202,107,40,47}, + {92,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,70}, + {47,12,195,48,12,195,48,12,195,48,12,195,48,12,195,48,12,195,48,12,195,48,12,195,48,12,195,48,12,195,48,12}, + {19,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,29}, + {195,155,222,244,166,55,189,233,77,111,122,211,155,222,244,166,55,189,233,77,111,122,211,155,222,244,166,55,189,233,77,111}, + {162,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,58}, + {30,133,235,81,184,30,133,235,81,184,30,133,235,81,184,30,133,235,81,184,30,133,235,81,184,30,133,235,81,184,30,5}, + {124,157,216,137,157,216,137,157,216,137,157,216,137,157,216,137,157,216,137,157,216,137,157,216,137,157,216,137,157,216,137,93}, + {6,237,37,180,151,208,94,66,123,9,237,37,180,151,208,94,66,123,9,237,37,180,151,208,94,66,123,9,237,37,180,23}, + {21,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,105}, + {189,114,79,35,44,247,52,194,114,79,35,44,247,52,194,114,79,35,44,247,52,194,114,79,35,44,247,52,194,114,79,35}, + {232,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,46}, + {104,206,57,231,156,115,206,57,231,156,115,206,57,231,156,115,206,57,231,156,115,206,57,231,156,115,206,57,231,156,115,78}, + {95,156,149,188,163,80,140,36,177,208,177,85,156,131,239,91,4,68,92,196,88,28,142,134,216,34,78,221,208,159,17,87}, + {38,221,244,121,160,140,135,138,91,246,171,251,42,229,30,53,137,92,183,112,97,134,244,149,52,224,229,52,101,97,145,127}, + {31,73,133,189,148,129,160,37,174,162,214,165,201,252,137,0,218,176,230,165,23,126,230,255,196,214,236,207,2,77,81,37}, + {19,82,242,135,133,161,110,239,185,137,126,205,221,147,170,22,90,141,0,210,119,232,26,163,149,111,118,253,222,3,226,73}, + {166,52,194,117,195,131,147,130,49,176,243,246,89,219,228,148,224,102,213,222,219,41,109,11,190,118,174,188,216,106,209,7}, + {64,83,70,138,197,143,41,181,1,61,160,174,192,213,164,235,142,132,203,134,232,145,182,128,27,160,170,67,19,240,15,76}, + {61,237,173,151,232,124,229,83,142,240,16,116,25,67,58,230,223,197,172,201,53,68,215,224,68,88,216,73,128,27,86,102}, + {79,136,214,213,186,148,59,147,202,128,21,64,171,141,222,175,233,198,247,208,187,227,246,47,84,98,142,3,140,220,155,104}, + {185,216,110,172,45,205,198,159,142,243,151,169,151,195,36,173,182,208,242,83,225,213,58,26,140,107,163,60,166,34,213,122}, + {52,192,155,149,157,69,10,35,45,123,136,36,198,171,92,77,61,235,133,155,107,234,184,43,148,43,78,72,236,127,77,1}, + {8,234,10,87,166,164,61,70,11,230,67,7,129,10,190,96,223,225,34,242,217,231,116,111,105,145,107,181,110,7,188,75}, + {252,236,57,250,166,229,172,78,226,121,142,145,209,165,31,76,181,206,99,67,25,29,185,105,201,93,213,246,132,121,178,46}, + {153,117,135,100,29,207,138,247,147,39,254,150,219,28,79,248,19,76,43,171,33,194,44,19,22,157,198,93,162,18,218,106}, + {57,223,157,125,238,224,147,49,254,234,178,208,159,240,225,64,132,52,197,214,65,81,250,170,171,134,212,82,97,17,143,57}, + {123,212,179,176,52,203,182,207,40,108,123,109,127,207,180,121,253,77,50,4,27,72,51,207,112,244,196,13,208,89,48,125}, + {86,220,213,222,72,124,82,5,213,248,34,204,214,253,164,251,177,11,65,6,226,153,121,182,210,190,64,10,88,14,13,43}, + {222,250,103,37,175,182,130,65,162,45,72,167,27,141,5,219,173,216,146,111,157,137,38,20,53,154,250,237,253,72,140,28}, + {183,98,239,209,78,92,190,97,188,253,134,65,208,227,201,65,240,85,75,192,135,66,252,186,18,230,191,68,201,128,7,82}, + {137,66,22,136,66,175,64,253,202,146,254,187,66,23,123,156,58,120,188,62,152,88,156,206,64,111,227,2,43,57,111,69}, + {163,122,63,119,3,151,5,212,188,30,80,65,104,9,118,149,121,77,179,29,167,6,121,68,20,203,120,37,24,177,88,49}, + {56,226,92,118,151,194,129,204,37,225,15,244,57,216,81,219,121,73,114,239,129,93,102,147,174,164,240,101,116,121,20,8}, + {223,183,166,239,48,31,130,116,116,213,206,52,173,119,219,186,152,3,115,75,165,101,149,137,53,78,253,172,172,134,204,22}, + {101,171,79,128,35,224,66,21,99,25,159,196,245,236,13,244,223,24,155,47,0,8,164,106,111,169,154,42,127,39,154,32}, + {60,71,103,7,132,234,55,209,32,107,75,14,162,135,37,217,36,215,112,162,8,0,165,37,116,10,2,107,239,105,15,44}, + {120,48,72,22,125,57,58,161,110,110,133,193,209,44,210,149,126,151,247,43,137,146,69,87,217,126,123,71,34,181,180,41}, + {26,234,188,172,72,26,124,128,66,220,35,67,32,250,233,98,180,240,142,120,38,245,98,68,87,247,130,59,42,107,59,102}, + {87,227,76,166,177,115,247,116,70,93,201,181,94,78,216,36,244,172,46,34,177,17,8,6,214,230,219,224,179,76,121,123}, + {247,116,252,18,43,132,167,183,1,40,32,155,43,255,203,237,11,9,60,95,92,99,181,125,155,84,13,23,190,90,109,120}, + {25,81,186,29,90,22,34,66,129,41,152,231,153,155,246,70,108,195,67,53,45,126,6,236,70,61,233,207,56,126,191,67}, + {128,12,149,140,116,186,133,136,238,4,7,76,128,24,44,7,32,8,97,255,209,208,246,68,147,223,143,19,17,152,219,26}, + {44,252,229,127,155,27,91,26,34,187,23,211,87,55,95,37,86,36,46,145,164,68,237,53,14,109,181,57,104,233,232,46}, + {246,169,6,227,244,135,36,153,153,180,43,150,213,82,228,200,25,224,132,223,114,42,238,88,133,171,232,76,139,176,32,37}, + {233,161,230,75,99,10,248,239,134,179,75,112,5,184,9,150,164,194,77,105,9,62,177,27,220,255,121,153,166,197,196,14}, + {10,175,30,186,99,204,243,120,203,70,66,90,131,167,0,32,126,65,92,129,132,11,117,118,170,34,208,91,216,226,223,66}, + {113,101,139,242,230,170,63,23,240,172,125,206,13,249,18,91,234,177,30,206,94,173,181,169,117,42,108,207,40,26,209,61}, + {171,26,203,222,6,85,103,210,224,27,211,48,141,214,146,10,136,83,2,40,31,239,213,59,57,124,216,115,62,224,175,89}, + {204,107,141,96,205,160,154,128,57,30,225,94,158,123,47,156,116,66,2,71,134,159,89,50,95,21,82,240,2,251,112,40}, + {226,145,63,94,151,88,160,212,211,138,37,204,192,45,231,173,191,161,182,15,154,32,44,216,245,254,159,75,249,101,252,60}, + {24,0,179,212,28,171,145,205,100,98,74,136,173,166,5,71,245,245,134,228,226,81,250,177,85,93,34,216,87,56,39,8}, + {124,187,175,19,110,205,24,229,223,52,182,185,61,183,101,187,33,36,136,71,247,139,158,124,21,82,165,203,138,93,137,87}, + {198,198,211,121,255,219,233,129,21,15,70,214,117,210,246,255,141,73,177,65,9,198,234,94,196,241,32,208,245,146,188,115}, + {58,85,123,151,193,188,6,23,14,144,215,82,124,64,185,14,61,224,129,70,177,145,124,171,48,115,158,228,40,88,226,119}, + {224,235,122,124,59,65,184,174,22,86,227,250,241,159,196,106,218,9,141,235,156,50,177,253,134,98,5,22,95,73,184,0}, + {240,44,29,72,44,33,188,97,152,219,129,79,124,138,167,64,144,200,229,60,6,3,242,73,196,157,70,161,25,6,89,17}, + {36,66,230,237,167,158,139,23,31,250,125,86,224,127,46,232,226,180,215,204,34,96,249,42,199,166,207,107,147,129,146,123}, + {98,218,163,46,248,246,95,42,196,92,16,252,105,79,233,115,249,87,128,31,207,51,90,86,246,189,111,79,124,228,140,10}, + {122,211,53,191,141,31,35,162,90,37,77,135,241,82,64,222,160,108,43,134,121,118,172,103,15,160,201,241,51,217,64,28}, + {145,8,253,77,245,5,120,31,74,60,119,213,196,168,200,250,125,18,48,99,3,110,27,113,160,14,220,76,165,239,65,32}, + {37,94,195,214,119,156,42,247,187,218,195,228,212,126,144,11,226,177,229,62,100,157,41,250,74,199,49,99,76,76,56,21}, + {203,165,234,77,253,45,200,2,126,15,141,112,82,28,182,95,73,13,130,89,202,6,194,120,69,171,129,243,86,140,179,104}, + {250,175,158,192,173,162,118,136,152,75,129,43,252,232,27,56,147,20,108,184,122,112,9,22,249,193,34,179,116,82,243,13}, + {139,217,27,238,113,28,242,233,76,16,196,238,215,96,153,61,0,64,134,198,20,205,154,208,84,164,135,54,153,95,4,126}, + {50,64,140,178,127,243,229,133,181,245,231,178,255,28,163,116,143,244,167,202,224,102,167,125,23,128,31,132,114,244,143,96}, + {68,2,137,26,149,197,182,41,179,89,168,46,148,42,174,46,105,67,5,236,229,53,91,235,166,66,164,68,226,71,196,20}, + {218,173,13,120,122,94,145,16,70,118,129,50,34,108,85,233,165,114,255,45,136,23,229,92,106,144,137,2,33,252,29,54}, + {230,33,152,96,68,5,80,48,41,141,126,170,102,237,107,144,102,211,248,193,103,55,52,34,219,94,12,203,154,12,80,103}, + {19,44,152,227,217,20,167,250,84,55,67,224,45,145,57,180,192,170,237,160,232,123,136,47,197,82,40,170,162,17,184,49}, + {148,135,170,165,51,197,56,93,128,90,55,248,90,88,150,59,254,77,206,190,194,65,214,56,198,175,24,104,8,181,243,44}, + {226,196,78,236,196,78,236,196,78,236,196,78,236,196,78,236,196,78,236,196,78,236,196,78,236,196,78,236,196,78,236,68}, + {169,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,10}, + {199,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69}, + {34,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,115}, + {219,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56}, + {244,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,79}, + {96,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,91}, + {82,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,21}, + {87,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102}, + {251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31}, + {164,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,42}, + {246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63}, + {236,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63}, + {73,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}, + {242,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,95}, + {150,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,25}, + {155,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,106}, + {141,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36}, + {249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,47}, + {18,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,71}, + {203,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,12}, + {38,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,58}, + {68,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,117}, + {11,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59}, + {61,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,82}, + {208,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,93}, + {243,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,87}, + {77,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90}, + {137,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,35}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63}, + {73,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}, + {242,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,95}, + {150,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,25}, + {155,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,106}, + {141,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36}, + {249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,47}, + {18,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,71}, + {203,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,12}, + {38,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,58}, + {68,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,117}, + {11,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59}, + {61,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,82}, + {208,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,93}, + {243,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,87}, + {77,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90}, + {137,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,35}, + {20,202,107,40,175,161,188,134,242,26,202,107,40,175,161,188,134,242,26,202,107,40,175,161,188,134,242,26,202,107,40,47}, + {92,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,70}, + {47,12,195,48,12,195,48,12,195,48,12,195,48,12,195,48,12,195,48,12,195,48,12,195,48,12,195,48,12,195,48,12}, + {19,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,29}, + {195,155,222,244,166,55,189,233,77,111,122,211,155,222,244,166,55,189,233,77,111,122,211,155,222,244,166,55,189,233,77,111}, + {162,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,58}, + {30,133,235,81,184,30,133,235,81,184,30,133,235,81,184,30,133,235,81,184,30,133,235,81,184,30,133,235,81,184,30,5}, + {124,157,216,137,157,216,137,157,216,137,157,216,137,157,216,137,157,216,137,157,216,137,157,216,137,157,216,137,157,216,137,93}, + {6,237,37,180,151,208,94,66,123,9,237,37,180,151,208,94,66,123,9,237,37,180,151,208,94,66,123,9,237,37,180,23}, + {21,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,105}, + {189,114,79,35,44,247,52,194,114,79,35,44,247,52,194,114,79,35,44,247,52,194,114,79,35,44,247,52,194,114,79,35}, + {232,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,46}, + {104,206,57,231,156,115,206,57,231,156,115,206,57,231,156,115,206,57,231,156,115,206,57,231,156,115,206,57,231,156,115,78}, + {255,18,128,72,228,210,22,236,211,24,133,166,9,89,225,162,36,191,150,60,252,28,47,47,158,5,5,216,186,24,207,103}, + {119,103,199,145,13,212,68,180,32,154,11,70,33,64,99,183,127,26,61,109,5,129,168,139,16,89,194,52,24,154,5,41}, + {1,148,159,247,183,146,107,28,108,130,211,75,103,155,178,82,249,162,224,151,203,209,46,231,108,64,61,45,150,202,45,0}, + {99,139,94,252,32,74,144,89,201,238,12,147,88,178,109,115,251,249,27,173,176,90,202,53,157,93,69,69,158,207,96,85}, + {249,65,66,22,31,224,118,102,169,219,18,109,120,237,101,211,149,123,65,235,107,9,99,16,84,18,117,37,154,188,46,103}, + {184,10,155,17,51,214,119,30,59,251,85,113,123,29,15,114,107,99,233,184,99,141,154,85,48,88,114,7,174,248,1,43}, + {183,19,131,62,107,60,139,25,159,81,252,127,241,150,167,10,86,224,76,177,199,197,197,80,104,31,181,26,122,42,200,107}, + {239,161,210,117,214,15,240,116,5,0,54,223,151,211,12,138,144,42,18,214,168,102,214,85,16,247,188,192,117,63,57,1}, + {61,54,212,216,74,218,83,219,62,35,165,95,17,3,73,161,75,101,254,69,125,245,244,141,119,123,245,253,111,14,25,93}, + {220,221,46,159,19,71,130,150,192,107,243,94,161,132,21,7,54,106,156,135,175,130,59,60,200,36,73,123,86,75,50,15}, + {99,164,73,245,216,117,26,54,100,89,185,145,92,75,162,224,247,89,82,97,42,146,188,162,234,188,53,50,205,27,164,125}, + {200,172,196,243,100,101,206,90,55,146,193,161,10,181,97,24,25,169,142,207,183,245,50,177,35,33,223,137,121,214,8,11}, + {27,50,144,247,44,248,235,222,217,45,60,206,47,125,224,19,173,200,182,17,66,77,178,222,9,208,215,92,217,235,16,51}, + {186,241,50,238,253,46,48,201,94,82,83,204,249,196,0,182,83,208,171,167,81,86,62,151,251,33,215,165,135,188,241,83}, + {177,22,78,2,251,64,132,103,11,6,223,232,100,240,122,253,31,213,144,42,88,64,152,99,119,1,85,61,153,42,246,28}, + {87,151,81,173,173,39,155,66,15,101,16,184,251,55,76,209,228,154,157,212,35,136,110,6,9,206,124,153,240,250,51,21}, + {26,237,10,109,22,27,15,145,91,164,252,40,180,129,77,1,209,54,255,9,230,144,68,179,94,150,255,52,26,192,119,12}, + {10,112,77,248,215,20,81,248,239,85,249,63,227,118,43,8,62,101,27,56,86,116,15,149,157,61,205,251,137,165,102,37}, + {124,192,215,171,163,91,214,7,214,103,28,62,221,11,42,56,169,24,161,174,234,129,174,74,144,189,57,77,183,143,230,54}, + {1,253,23,133,180,163,138,250,3,6,56,24,193,174,56,245,134,226,111,175,140,177,93,247,195,15,184,46,27,183,168,84}, + {25,127,208,50,168,132,165,21,56,59,46,58,37,56,196,112,79,108,118,165,211,183,6,64,229,168,173,55,122,100,74,77}, + {225,186,121,98,173,21,21,215,110,75,191,20,71,113,25,23,202,27,131,16,127,51,113,82,20,236,251,108,6,13,170,112}, + {48,45,229,134,192,180,23,34,163,128,199,99,190,108,58,236,202,55,204,18,197,103,175,253,182,237,16,122,224,228,25,51}, + {218,53,247,81,139,46,27,171,129,162,207,255,164,59,252,164,108,253,4,12,247,226,70,241,122,188,72,211,252,122,178,13}, + {170,226,249,137,116,167,226,120,193,243,124,147,88,138,15,162,48,71,145,111,254,119,63,233,128,23,10,92,67,118,30,30}, + {16,203,185,193,38,83,190,92,116,115,246,106,35,158,198,3,90,188,79,129,38,19,63,45,251,135,198,66,86,155,225,121}, + {209,40,101,130,26,183,234,127,32,20,146,116,8,112,194,56,141,99,210,83,17,213,186,22,156,223,63,106,4,205,119,120}, + {44,211,20,43,212,157,190,57,72,130,253,234,26,138,128,90,95,4,179,17,35,81,110,212,39,183,62,124,81,174,211,111}, + {44,36,50,74,131,169,121,80,198,48,15,109,17,179,219,187,206,100,32,234,143,15,167,198,211,146,163,181,67,145,34,30}, + {65,202,102,109,103,80,115,84,86,255,69,144,130,156,246,146,171,184,205,92,6,56,1,209,45,189,61,184,217,216,238,107}, + {92,107,139,15,200,95,209,61,18,98,255,105,11,30,179,203,165,173,126,12,101,216,5,82,113,163,14,42,63,71,54,95}, + {92,183,137,31,254,74,14,236,77,43,136,33,36,188,185,136,35,197,175,200,235,28,59,241,185,27,235,124,94,75,147,7}, + {172,154,20,26,177,187,189,219,238,205,20,135,222,148,10,180,45,77,167,230,85,220,108,93,190,152,222,115,194,46,238,38}, + {194,21,95,5,118,195,213,133,77,184,255,154,248,106,211,69,190,97,64,75,113,2,168,123,145,239,139,148,112,167,185,35}, + {32,117,101,93,21,29,45,200,131,115,0,171,69,249,81,151,27,172,135,163,158,170,85,244,177,208,78,112,29,130,208,1}, + {107,175,215,13,154,66,2,195,79,10,245,244,111,49,54,97,158,174,22,157,61,39,123,146,193,47,231,23,119,172,49,68}, + {218,44,117,234,3,221,97,148,64,22,1,104,162,171,212,147,56,101,247,120,8,181,246,246,147,242,168,40,240,191,81,91}, + {215,89,254,152,127,20,89,20,92,33,137,154,119,181,225,180,43,64,75,37,242,39,86,167,15,137,5,170,48,126,146,76}, + {146,95,192,36,105,238,38,17,66,210,53,159,29,45,172,13,19,239,216,103,210,227,95,146,76,141,226,75,237,224,140,45}, + {229,167,235,58,38,253,227,229,144,252,65,147,155,192,1,200,234,201,60,53,72,205,125,195,152,107,147,58,133,244,226,57}, + {88,244,110,33,254,212,210,200,74,219,192,138,123,42,22,161,158,67,146,169,244,26,194,146,134,59,88,139,28,13,232,113}, + {64,221,81,158,3,36,181,87,193,60,136,163,35,100,143,129,179,228,250,156,164,142,21,4,77,93,75,0,244,129,177,40}, + {99,201,196,169,55,97,250,40,141,136,16,157,64,175,118,170,88,177,140,160,7,30,114,150,4,66,180,241,24,77,251,24}, + {174,170,250,224,154,6,139,55,176,83,195,77,81,163,12,64,169,193,158,42,136,115,151,254,220,204,20,51,143,148,100,67}, + {30,77,35,14,207,56,225,204,214,84,214,43,10,5,131,1,232,164,48,194,28,249,10,221,177,149,235,251,97,74,211,10}, + {107,245,0,118,252,117,202,19,202,116,222,202,138,82,165,96,61,18,186,171,168,23,115,16,230,51,114,68,15,167,254,10}, + {214,120,72,144,158,69,169,197,194,31,128,253,42,9,89,244,196,88,93,126,65,2,167,187,5,242,252,242,184,214,242,5}, + {47,76,234,34,222,81,77,135,195,76,208,112,156,219,20,178,30,155,71,83,60,90,163,191,143,71,145,161,191,195,87,15}, + {58,222,210,172,117,119,57,61,224,20,29,150,221,44,144,70,140,51,231,175,210,153,37,88,146,194,225,169,73,158,19,113}, + {250,236,86,132,69,38,205,167,12,237,206,138,141,97,254,200,84,201,57,37,204,224,28,138,118,116,237,160,16,107,229,5}, + {70,94,251,66,100,123,54,49,59,133,51,209,145,175,125,17,204,29,7,212,133,213,29,183,143,195,185,173,47,3,222,85}, + {131,210,117,143,82,41,161,167,161,158,111,95,35,69,168,11,197,154,116,202,90,82,255,64,166,92,246,17,178,212,91,67}, + {157,55,39,243,142,130,111,45,166,84,112,203,27,239,172,76,214,75,31,106,240,173,202,191,74,78,251,83,156,95,158,43}, + {87,207,2,124,244,96,162,120,146,89,164,148,95,183,218,84,166,224,100,150,225,179,52,188,200,94,137,234,35,31,9,3}, + {162,220,223,48,214,174,3,100,223,97,188,82,171,187,14,131,68,24,30,37,238,210,191,242,76,102,108,1,27,62,67,0}, + {30,123,115,55,197,27,49,167,26,61,86,4,186,21,50,55,147,200,8,105,28,242,64,218,157,1,113,131,215,111,207,111}, + {119,12,187,139,37,59,1,93,187,48,178,41,39,84,133,181,224,15,62,13,53,161,23,77,89,10,6,206,230,145,233,84}, + {244,146,147,38,236,43,58,202,100,24,224,35,134,96,36,251,137,254,123,44,1,78,253,67,213,155,22,127,86,117,55,113}, + {136,220,123,37,85,109,34,40,194,73,21,222,241,128,141,227,72,46,31,43,36,254,235,144,206,97,253,136,172,31,194,111}, + {131,33,61,243,99,20,154,34,215,107,210,27,150,102,170,27,7,217,146,76,109,111,189,253,67,210,93,36,75,209,72,86}, + {247,154,210,2,116,207,58,196,149,233,253,154,162,199,226,96,240,183,87,121,236,7,252,165,160,114,145,199,44,124,246,118}, + {153,123,171,215,228,176,169,26,86,118,67,64,128,172,246,201,4,70,71,252,163,227,127,42,24,49,155,199,77,129,4,45}, + {102,56,102,102,190,156,31,135,141,175,224,246,95,126,250,255,95,195,96,39,9,143,141,99,172,48,106,85,180,81,171,105}, + {13,25,54,57,100,228,51,49,195,8,83,158,55,126,92,14,44,9,29,168,137,83,213,19,194,203,51,242,110,168,217,123}, + {126,111,105,209,219,21,23,61,189,188,198,71,33,4,103,204,17,238,164,23,50,76,21,77,119,218,251,72,121,47,196,16}, + {154,191,14,215,80,28,117,152,174,124,147,150,211,165,123,33,244,66,101,67,128,44,23,64,71,244,213,17,103,240,254,44}, + {89,145,129,24,248,62,149,212,214,140,43,190,89,228,1,213,214,167,111,57,89,200,78,150,104,191,130,246,83,119,194,71}, + {242,118,80,48,12,130,98,141,232,17,141,251,79,212,185,116,63,245,235,89,160,19,152,149,206,94,219,197,89,73,22,2}, + {239,138,220,36,139,47,198,44,90,0,48,81,44,12,104,228,54,9,240,224,5,20,247,183,178,146,78,154,237,252,122,7}, + {60,113,93,225,240,169,197,176,14,86,252,209,74,154,11,127,32,135,115,151,143,37,124,35,150,114,120,154,23,216,167,39}, + {23,180,18,131,215,44,27,48,91,253,165,223,233,204,200,233,114,107,194,7,218,183,23,167,130,77,48,18,162,130,204,16}, + {231,235,59,35,147,122,136,163,184,162,214,191,159,112,70,221,175,159,182,89,172,92,124,5,118,13,239,84,174,235,227,40}, + {89,198,80,48,244,56,47,214,227,188,88,156,193,94,9,89,75,209,109,178,3,109,160,247,107,98,103,234,213,41,188,13}, + {120,109,244,14,120,248,5,253,209,142,9,226,88,17,109,141,148,174,208,247,226,254,102,22,49,239,234,213,17,172,70,17}, + {20,179,156,100,59,90,228,162,230,74,170,58,239,231,51,159,90,52,134,152,179,190,187,121,146,54,2,136,4,16,81,100}, + {19,160,110,39,86,191,120,66,143,156,210,157,236,183,79,168,239,218,176,4,252,132,170,55,119,151,50,59,110,207,54,8}, + {149,77,244,53,53,179,126,41,219,42,231,103,64,15,240,173,90,157,174,130,89,199,42,206,228,212,76,252,106,140,56,21}, + {1,181,30,167,122,145,55,57,251,166,148,170,197,8,104,79,141,210,253,40,34,8,85,24,41,74,122,67,62,236,0,24}, + {95,11,182,96,11,182,96,11,182,96,11,182,96,11,182,96,11,182,96,11,182,96,11,182,96,11,182,96,11,182,96,11}, + {109,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,49}, + {78,208,23,244,5,125,65,95,208,23,244,5,125,65,95,208,23,244,5,125,65,95,208,23,244,5,125,65,95,208,23,116}, + {223,121,158,231,121,158,231,121,158,231,121,158,231,121,158,231,121,158,231,121,158,231,121,158,231,121,158,231,121,158,231,57}, + {123,12,206,199,224,124,12,206,199,224,124,12,206,199,224,124,12,206,199,224,124,12,206,199,224,124,12,206,199,224,124,12}, + {191,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,92}, + {246,150,111,249,150,111,249,150,111,249,150,111,249,150,111,249,150,111,249,150,111,249,150,111,249,150,111,249,150,111,249,22}, + {227,26,202,107,40,175,161,188,134,242,26,202,107,40,175,161,188,134,242,26,202,107,40,175,161,188,134,242,26,202,107,104}, + {237,89,55,152,34,159,117,131,41,242,89,55,152,34,159,117,131,41,242,89,55,152,34,159,117,131,41,242,89,55,152,34}, + {50,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,46}, + {114,197,87,124,197,87,124,197,87,124,197,87,124,197,87,124,197,87,124,197,87,124,197,87,124,197,87,124,197,87,124,69}, + {208,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,18}, + {139,108,178,201,38,155,108,178,201,38,155,108,178,201,38,155,108,178,201,38,155,108,178,201,38,155,108,178,201,38,155,108}, + {253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,19}, + {133,49,198,24,99,140,49,198,24,99,140,49,198,24,99,140,49,198,24,99,140,49,198,24,99,140,49,198,24,99,140,49}, + {5,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,81}, + {48,141,176,220,211,8,203,61,141,176,220,211,8,203,61,141,176,220,211,8,203,61,141,176,220,211,8,203,61,141,176,92}, + {216,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,22}, + {231,18,218,75,104,47,161,189,132,246,18,218,75,104,47,161,189,132,246,18,218,75,104,47,161,189,132,246,18,218,75,104}, + {113,98,39,118,98,39,118,98,39,118,98,39,118,98,39,118,98,39,118,98,39,118,98,39,118,98,39,118,98,39,118,34}, + {207,122,20,174,71,225,122,20,174,71,225,122,20,174,71,225,122,20,174,71,225,122,20,174,71,225,122,20,174,71,225,122}, + {75,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,69}, + {42,100,33,11,89,200,66,22,178,144,133,44,100,33,11,89,200,66,22,178,144,133,44,100,33,11,89,200,66,22,178,16}, + {218,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,98}, + {190,243,60,207,243,60,207,243,60,207,243,60,207,243,60,207,243,60,207,243,60,207,243,60,207,243,60,207,243,60,207,115}, + {145,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,57}, + {217,53,148,215,80,94,67,121,13,229,53,148,215,80,94,67,121,13,229,53,148,215,80,94,67,121,13,229,53,148,215,80}, + {100,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,92}, + {160,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,37}, + {250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,39}, + {29,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34}, + {176,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,45}, + {226,196,78,236,196,78,236,196,78,236,196,78,236,196,78,236,196,78,236,196,78,236,196,78,236,196,78,236,196,78,236,68}, + {169,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,10}, + {199,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69,23,93,116,209,69}, + {34,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,115}, + {219,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56}, + {244,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,79}, + {96,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,219,182,109,91}, + {82,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,21}, + {87,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102}, + {251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31}, + {164,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,42}, + {246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63}, + {236,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63}, + {73,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}, + {242,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,95}, + {150,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,25}, + {155,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,106}, + {141,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36}, + {249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,47}, + {18,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,199,113,28,71}, + {203,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,12}, + {38,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,186,232,162,139,46,58}, + {68,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,117}, + {11,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59,177,19,59}, + {61,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,146,36,73,82}, + {208,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,93}, + {243,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,87}, + {77,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90}, + {137,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,227,56,142,35}, +} ; + +static const unsigned char precomputed_pow_inv25519_p[precomputed_pow_inv25519_NUM][crypto_pow_BYTES] = { + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {224,235,122,124,59,65,184,174,22,86,227,250,241,159,196,106,218,9,141,235,156,50,177,253,134,98,5,22,95,73,184,0}, + {93,11,17,172,237,85,188,115,119,16,223,201,212,27,197,64,137,178,244,179,157,47,164,117,22,93,38,107,152,98,219,3}, + {129,156,209,97,216,127,230,10,196,93,131,132,8,72,64,192,105,34,102,132,50,137,243,123,140,203,186,159,122,99,243,5}, + {38,232,149,143,194,178,39,176,69,195,244,137,242,239,152,240,213,223,172,5,211,198,51,57,177,56,2,136,109,83,252,5}, + {241,83,53,187,193,212,174,9,91,104,0,113,237,209,237,22,148,228,44,251,112,52,5,238,132,246,185,178,166,111,115,6}, + {18,224,16,248,231,39,70,45,164,115,44,162,53,252,179,95,2,27,27,175,27,137,178,112,130,229,197,157,121,62,86,7}, + {194,182,111,24,203,182,215,90,236,39,243,118,38,38,194,23,129,253,47,15,169,145,119,89,206,112,13,89,22,153,145,8}, + {147,51,243,23,109,22,116,225,167,164,124,223,197,41,98,238,117,177,164,47,181,37,180,135,79,242,51,29,115,141,98,14}, + {89,46,240,193,138,63,158,190,180,203,64,132,82,50,71,171,123,216,172,8,77,178,79,47,185,39,160,188,151,34,173,14}, + {40,12,236,4,15,64,117,117,178,230,19,71,19,19,53,18,49,14,105,80,148,246,106,11,48,194,189,8,254,67,5,16}, + {226,201,13,23,87,255,179,198,122,236,86,21,27,53,231,55,3,212,2,105,232,68,167,199,168,213,242,58,121,163,88,16}, + {195,82,178,226,156,181,31,63,226,89,157,119,162,33,68,89,2,238,250,158,169,215,75,100,121,252,214,208,192,209,207,16}, + {62,201,173,102,22,52,130,75,143,176,41,3,70,250,182,70,220,18,105,64,77,107,233,159,157,35,169,41,102,215,53,17}, + {147,246,106,224,201,236,94,37,219,83,4,251,201,149,209,68,14,88,2,140,90,210,82,209,250,61,250,245,196,119,203,26}, + {74,200,238,22,199,37,200,128,148,15,80,145,16,3,161,120,84,71,251,230,95,47,35,235,115,144,13,114,36,110,152,28}, + {160,225,228,246,105,56,121,30,159,138,77,105,238,152,39,107,135,216,88,143,45,42,48,113,178,206,104,225,13,18,88,30}, + {102,55,216,186,113,33,217,104,153,8,118,119,100,78,9,161,155,124,8,45,174,155,49,119,195,219,238,82,200,146,135,30}, + {151,17,196,2,87,132,196,237,216,35,128,12,206,236,145,70,248,205,163,114,199,5,70,56,57,215,52,143,116,213,125,32}, + {222,136,183,18,240,91,145,161,198,8,75,171,135,11,12,122,93,247,51,12,29,154,254,236,131,63,162,197,202,127,229,36}, + {71,203,163,127,61,162,83,158,17,109,46,29,186,163,167,133,48,164,87,132,47,234,224,217,22,54,128,190,165,114,54,40}, + {99,192,3,80,181,231,34,241,240,111,140,60,187,151,28,5,108,137,69,184,99,88,162,117,43,41,29,38,60,137,45,41}, + {147,132,37,198,44,214,20,254,65,84,134,32,250,107,231,206,116,145,140,241,95,160,187,244,243,122,162,135,196,58,176,44}, + {182,159,33,218,36,54,82,116,237,96,1,129,26,204,104,165,41,254,232,139,115,90,99,197,130,11,71,157,9,165,9,50}, + {114,233,7,56,117,61,113,42,219,47,222,196,187,179,103,150,132,19,88,35,101,124,46,111,170,44,145,221,251,228,49,51}, + {129,202,111,146,254,13,201,8,16,17,251,195,170,42,79,164,254,44,214,204,94,5,255,146,68,197,70,111,210,104,118,52}, + {14,25,214,142,146,214,128,244,9,127,35,0,152,86,204,178,194,68,100,30,69,101,220,141,133,105,202,131,69,103,144,52}, + {97,91,49,148,88,12,82,159,80,25,159,170,103,125,25,97,50,97,37,247,53,231,178,41,192,229,37,88,105,87,131,53}, + {80,220,254,202,182,2,43,205,234,179,239,143,144,151,179,219,73,11,24,224,170,180,219,236,77,25,42,150,70,252,236,53}, + {15,107,97,219,29,24,83,131,60,191,127,75,0,87,25,142,104,111,192,12,72,223,132,235,116,235,119,37,25,174,94,54}, + {95,235,188,21,7,218,30,39,173,117,137,120,82,227,47,225,213,187,57,139,194,14,221,177,217,128,254,43,252,35,130,55}, + {33,158,20,26,13,160,220,36,224,154,184,232,223,120,118,59,52,76,244,10,223,92,109,197,53,78,56,236,34,166,235,56}, + {82,132,241,36,117,25,9,104,119,241,135,180,34,67,21,3,178,207,125,108,103,19,65,132,188,57,50,69,54,29,245,58}, + {78,140,20,224,52,27,201,36,89,209,174,149,72,194,147,130,41,13,38,56,78,70,49,142,114,20,58,180,74,226,70,61}, + {138,245,193,250,5,5,97,181,241,120,249,83,158,60,19,176,141,136,110,14,187,255,222,14,136,207,86,173,56,42,64,67}, + {6,217,177,199,21,112,114,132,244,3,229,76,43,143,128,239,244,213,43,17,92,87,242,48,39,140,145,94,200,1,133,67}, + {247,225,74,212,231,250,151,164,161,154,159,172,20,204,251,209,176,144,38,181,66,69,13,80,80,173,202,184,221,127,239,70}, + {238,49,5,74,218,128,248,183,44,230,125,170,22,211,254,66,212,58,210,44,24,188,82,184,114,120,217,46,98,1,111,74}, + {146,204,227,148,117,91,30,160,102,89,96,24,211,48,38,147,31,14,146,155,210,151,224,150,193,8,137,112,0,191,54,76}, + {210,202,220,164,246,20,113,100,180,12,151,155,88,88,88,145,232,83,65,207,203,112,134,14,206,120,161,44,178,247,76,79}, + {255,73,130,191,221,80,59,217,184,28,130,67,82,52,14,70,154,222,20,67,247,149,40,129,54,201,105,110,239,159,95,80}, + {139,249,139,242,180,114,253,231,63,42,190,37,169,162,179,81,193,126,98,185,1,76,62,17,143,53,76,176,138,212,238,81}, + {47,163,188,90,33,133,4,135,193,239,35,48,111,132,3,67,53,104,115,61,241,83,172,241,49,30,77,80,53,164,132,86}, + {95,156,149,188,163,80,140,36,177,208,177,85,156,131,239,91,4,68,92,196,88,28,142,134,216,34,78,221,208,159,17,87}, + {111,10,86,115,2,46,170,54,148,52,250,47,50,56,43,7,216,138,19,111,126,8,39,124,220,10,24,40,198,115,160,92}, + {170,223,157,23,236,62,32,108,24,248,79,7,102,172,52,177,222,29,19,7,3,17,152,104,5,178,63,61,253,161,227,95}, + {187,201,42,73,246,165,102,43,122,7,159,244,24,84,225,192,11,129,148,42,208,164,22,129,133,144,163,118,103,85,204,96}, + {142,149,157,28,5,201,173,174,133,174,98,68,117,157,25,87,59,175,211,196,165,241,116,163,212,99,99,133,123,48,111,102}, + {125,212,64,236,173,27,166,51,72,55,177,70,196,58,53,4,38,199,138,229,115,240,42,58,41,57,15,0,28,63,21,108}, + {237,197,109,47,77,179,144,100,157,130,214,51,210,10,226,76,215,202,65,22,131,42,185,219,128,57,32,227,252,255,132,108}, + {125,45,159,13,208,200,222,43,12,33,0,254,227,97,97,32,232,25,53,199,145,219,119,66,145,110,82,242,17,249,163,118}, + {218,124,213,86,252,123,194,102,72,95,152,194,239,155,120,87,147,101,181,39,136,178,213,63,208,88,239,217,88,229,237,119}, + {189,68,80,58,53,159,69,72,96,63,22,164,219,217,177,104,30,162,150,170,40,227,107,49,103,70,18,244,141,182,4,120}, + {141,86,94,148,247,167,7,64,21,249,20,82,26,95,159,145,129,43,67,188,112,24,28,197,142,0,147,152,108,232,246,120}, + {109,105,188,79,1,147,89,93,3,188,177,189,165,192,94,147,244,7,23,147,84,125,168,186,44,88,176,120,191,227,206,121}, + {199,23,106,112,61,77,216,79,186,60,11,118,13,16,103,15,42,32,83,250,44,57,204,198,78,199,253,119,146,172,3,122}, + {16,144,21,200,119,145,159,194,55,138,26,190,154,139,72,46,187,132,134,43,89,106,125,20,10,208,228,120,140,13,108,123}, + {5,97,68,33,155,166,192,59,217,105,121,61,195,81,22,19,33,196,102,252,161,11,78,213,178,193,220,63,254,134,221,124}, + {174,123,183,169,128,93,4,127,95,144,172,90,27,196,103,169,70,105,66,180,68,78,96,240,173,118,98,214,113,217,176,127}, + {224,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {225,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {226,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {227,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {228,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {229,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {230,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {231,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {232,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {233,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {234,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {236,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {237,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {238,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {241,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {242,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {243,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {244,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {245,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {205,235,122,124,59,65,184,174,22,86,227,250,241,159,196,106,218,9,141,235,156,50,177,253,134,98,5,22,95,73,184,128}, + {160,37,10,26,225,245,150,67,90,82,89,131,201,239,182,175,225,228,27,31,200,10,216,0,158,161,240,56,190,37,98,129}, + {126,193,215,50,203,125,133,127,196,72,203,3,172,168,69,4,124,66,128,137,155,138,79,62,12,209,148,182,155,150,234,132}, + {214,187,57,121,219,7,180,245,79,199,28,235,3,229,24,162,210,72,140,56,149,230,163,235,193,41,191,151,78,2,170,133}, + {19,232,149,143,194,178,39,176,69,195,244,137,242,239,152,240,213,223,172,5,211,198,51,57,177,56,2,136,109,83,252,133}, + {62,21,89,26,242,137,228,142,221,218,26,139,122,9,150,190,211,255,231,171,115,79,10,216,158,142,92,214,120,151,143,136}, + {81,108,252,226,91,123,2,58,201,115,182,53,216,106,226,19,255,189,15,42,27,210,228,103,255,63,80,6,101,105,24,137}, + {110,167,30,114,238,200,91,206,189,246,80,143,240,154,158,29,237,114,89,30,86,41,243,89,252,236,82,177,174,134,206,142}, + {223,178,224,94,39,7,12,55,105,205,4,119,36,114,140,55,63,97,181,199,242,8,236,220,146,170,18,174,209,107,101,143}, + {27,248,18,51,151,208,228,149,143,27,140,249,190,131,118,98,48,85,214,237,106,115,9,75,148,22,7,29,151,218,7,144}, + {28,72,94,40,137,202,51,69,198,88,34,49,16,78,17,30,21,240,75,177,180,86,175,148,58,181,236,40,244,45,62,146}, + {158,186,152,57,234,203,74,33,92,196,150,65,216,222,226,127,191,18,161,191,239,44,29,43,240,246,221,186,114,111,63,151}, + {250,195,130,230,38,225,2,225,206,208,205,149,59,249,120,21,49,202,81,229,137,184,10,137,242,202,97,38,245,188,212,151}, + {54,117,120,76,28,202,80,109,96,30,159,160,217,89,62,54,1,69,113,116,99,75,17,217,85,101,142,201,51,2,101,152}, + {149,177,114,234,252,75,142,235,123,59,172,102,243,44,203,193,27,157,41,154,123,24,157,151,153,191,27,29,59,251,18,154}, + {102,100,56,74,188,101,169,164,35,169,187,217,141,243,3,55,161,77,32,41,110,158,111,3,56,227,131,126,230,180,45,155}, + {67,192,36,40,3,194,139,15,233,18,214,181,68,174,148,224,232,149,109,38,74,153,50,14,188,66,236,205,202,241,226,157}, + {66,173,58,243,101,117,198,170,56,209,211,188,81,55,42,168,124,219,190,185,49,16,182,103,120,142,68,168,211,236,170,161}, + {214,158,46,187,158,227,121,43,148,253,243,11,84,196,151,224,248,8,133,187,199,38,200,165,82,79,87,227,252,32,75,163}, + {183,25,105,23,254,22,118,190,172,248,135,177,162,56,80,228,241,77,155,50,49,40,189,53,222,77,10,195,159,180,36,169}, + {192,74,224,195,102,131,154,194,42,115,141,84,75,168,130,177,203,227,246,119,46,128,66,54,254,220,160,138,57,28,88,169}, + {57,236,93,48,192,237,101,125,11,22,182,131,135,237,215,120,196,89,208,70,90,68,155,140,49,154,250,205,35,42,34,171}, + {34,164,149,255,137,15,71,180,197,252,42,2,169,202,248,32,183,77,134,43,105,218,92,204,154,157,143,56,212,103,51,172}, + {86,30,104,181,170,61,38,192,4,54,101,16,25,25,44,81,66,135,114,62,180,143,156,81,136,143,16,207,57,45,167,173}, + {91,245,72,216,90,199,134,172,165,93,168,104,67,11,211,223,41,7,195,248,1,92,138,40,187,117,230,81,86,91,26,174}, + {151,141,223,224,103,64,134,109,9,122,230,95,229,166,153,94,19,16,90,73,179,141,203,36,65,81,227,10,205,31,125,174}, + {113,11,129,179,36,154,147,133,7,238,233,76,251,81,65,246,52,129,24,169,217,110,172,227,54,251,102,134,122,59,118,176}, + {56,220,154,85,84,3,159,223,248,143,175,199,155,173,14,212,145,152,55,74,49,90,203,199,112,120,39,138,239,31,10,177}, + {135,104,144,71,33,194,33,133,3,24,60,117,215,178,87,97,114,162,126,199,73,119,145,178,104,158,203,9,101,140,123,179}, + {253,164,38,103,254,232,227,99,197,120,216,11,141,6,80,149,82,139,5,14,109,151,171,95,140,120,105,222,29,75,225,179}, + {16,6,32,40,247,87,109,57,38,33,228,150,230,17,242,15,173,193,172,63,190,117,181,169,233,173,88,122,190,157,147,180}, + {220,96,255,75,79,6,125,48,182,249,141,55,159,169,209,228,80,104,66,94,114,158,242,122,235,91,168,124,40,195,178,181}, + {49,227,89,1,60,152,183,120,89,158,57,84,116,231,55,213,6,81,44,123,127,232,229,121,133,50,184,254,130,13,213,183}, + {196,226,59,10,69,172,238,59,12,106,114,210,55,110,197,177,226,149,26,253,22,198,190,45,156,32,60,94,30,193,155,190}, + {46,212,240,212,71,186,251,161,145,114,228,149,106,116,148,58,17,73,40,233,26,110,117,88,47,188,22,112,183,65,205,191}, + {108,115,168,221,29,29,10,110,178,191,144,33,98,69,158,179,107,50,30,217,56,235,99,100,137,115,187,170,108,225,145,192}, + {88,23,254,127,125,50,108,114,175,73,57,176,55,155,159,156,225,178,180,167,133,57,53,105,82,105,36,21,156,137,88,193}, + {13,161,208,73,87,241,51,97,97,233,39,57,195,242,131,151,162,177,26,48,254,248,44,92,233,228,68,233,92,67,161,193}, + {55,80,74,36,97,26,143,182,137,191,36,191,100,77,67,3,107,215,201,77,181,94,138,165,44,14,150,247,29,118,206,193}, + {46,145,77,66,148,249,125,134,154,224,31,41,99,28,127,185,90,83,173,89,42,15,229,221,132,185,57,226,109,127,221,195}, + {174,142,95,26,102,77,10,180,133,149,255,236,89,72,70,235,43,152,127,141,53,255,3,202,240,70,104,183,125,242,114,196}, + {144,124,64,244,223,107,164,210,14,118,122,26,192,45,89,87,111,104,108,123,107,244,184,92,115,236,27,64,129,228,241,199}, + {172,37,106,178,186,134,115,186,94,177,212,105,200,72,126,162,183,252,84,234,71,113,123,115,27,145,22,179,65,52,126,200}, + {242,131,4,146,239,149,68,63,138,77,104,43,251,247,136,71,173,80,18,182,27,74,218,145,119,152,217,220,241,59,214,200}, + {108,209,156,236,156,166,225,245,1,255,55,161,87,186,87,163,186,173,58,130,239,62,58,38,221,97,184,184,72,35,198,201}, + {178,234,83,79,237,151,116,195,96,77,61,52,122,69,7,81,11,193,156,118,222,117,126,243,15,14,208,220,120,72,211,204}, + {204,131,141,157,131,216,59,249,236,247,255,242,5,235,227,226,14,130,40,32,228,224,200,76,162,5,173,143,35,248,18,207}, + {35,5,252,51,253,104,202,78,1,55,89,199,130,119,215,153,228,235,211,185,24,49,168,133,15,191,16,243,69,249,102,209}, + {236,192,151,177,212,242,244,63,100,18,73,46,25,215,142,32,185,134,95,138,231,167,29,123,189,146,175,242,71,212,160,210}, + {244,123,195,157,46,59,3,176,45,171,88,28,63,64,60,158,176,233,111,81,205,205,200,253,20,53,42,25,236,248,6,211}, + {250,190,87,147,129,35,208,208,243,3,97,112,183,206,100,81,148,116,102,25,203,54,44,111,84,135,214,181,143,175,51,212}, + {214,76,88,159,6,174,51,81,248,78,106,177,236,186,192,219,15,190,150,146,53,178,114,58,92,104,251,202,20,7,53,214}, + {244,140,114,244,62,170,41,248,47,225,143,61,151,206,239,48,118,198,17,125,73,82,89,168,186,241,36,23,150,83,109,214}, + {76,156,149,188,163,80,140,36,177,208,177,85,156,131,239,91,4,68,92,196,88,28,142,134,216,34,78,221,208,159,17,215}, + {139,115,46,248,73,231,193,130,253,199,47,18,242,136,178,77,224,246,139,248,167,75,84,143,72,149,87,254,161,252,22,217}, + {93,88,227,37,114,65,2,2,202,140,162,68,186,54,73,105,10,189,55,176,194,12,242,71,98,179,159,127,78,41,232,221}, + {143,142,107,198,237,68,83,189,7,239,167,232,157,187,159,139,177,161,94,141,23,17,47,115,237,6,59,132,12,168,110,223}, + {22,46,135,210,121,177,182,90,213,250,68,254,13,187,98,28,198,232,133,160,89,202,235,65,61,199,204,207,44,54,181,223}, + {35,238,173,80,157,134,161,13,214,74,174,154,61,187,55,219,216,57,244,57,107,141,22,183,40,187,178,130,223,175,253,223}, + {135,41,111,62,134,23,247,181,64,139,85,137,237,245,175,152,106,177,57,133,253,184,141,40,45,4,212,79,52,174,254,223}, + {210,123,212,47,191,41,21,215,166,78,180,73,218,218,5,4,10,253,18,3,94,228,96,173,112,39,183,132,46,217,2,224}, + {232,64,0,7,2,215,145,253,104,71,120,112,176,10,157,243,134,72,12,11,14,242,103,82,237,168,70,157,242,247,10,224}, + {27,151,33,144,144,198,124,112,170,187,16,189,113,255,84,221,81,127,37,17,143,58,64,32,63,1,169,157,31,50,214,234}, + {133,78,53,177,58,165,28,169,160,156,74,247,22,18,110,17,171,95,48,187,254,210,138,117,179,157,48,108,6,186,193,235}, + {25,216,239,98,90,43,174,36,141,165,171,161,236,144,0,188,173,204,147,113,37,224,186,252,199,176,246,185,163,33,96,236}, + {213,243,48,11,157,197,31,38,25,41,241,11,72,102,114,49,205,71,48,159,37,11,204,163,154,127,238,77,137,218,185,236}, + {168,188,69,201,152,212,193,230,142,199,30,182,79,33,156,162,216,59,153,29,99,172,127,139,16,93,159,100,40,94,29,239}, + {149,33,93,182,34,43,131,42,7,185,191,233,56,97,255,161,24,75,9,111,70,63,117,14,41,111,225,237,10,11,132,240}, + {190,57,20,188,220,113,68,236,247,124,46,122,44,228,172,184,241,46,202,132,38,79,248,49,26,159,251,67,32,15,212,245}, + {180,50,28,164,12,27,60,90,16,84,200,202,112,144,207,37,183,210,179,165,89,2,57,211,178,44,72,179,209,50,225,245}, + {170,254,96,130,76,58,108,247,243,157,78,32,139,192,145,181,120,149,66,18,48,255,179,45,248,153,25,250,125,241,185,247}, + {180,23,106,112,61,77,216,79,186,60,11,118,13,16,103,15,42,32,83,250,44,57,204,198,78,199,253,119,146,172,3,250}, + {91,94,189,239,65,25,164,16,97,157,57,15,98,46,197,53,97,137,208,106,56,113,72,246,21,174,146,118,48,34,127,250}, + {168,56,27,159,191,8,6,120,33,137,112,137,74,90,42,223,96,94,197,77,20,87,240,251,40,205,31,126,97,161,79,252}, + {168,232,248,183,162,21,22,250,43,70,55,127,62,205,17,69,125,80,249,69,191,37,72,39,7,122,11,134,30,177,89,253}, + {239,116,12,234,4,82,0,178,159,114,155,225,154,162,111,134,127,181,234,121,180,60,229,249,105,134,250,147,212,174,170,253}, + {19,137,17,15,242,181,77,55,255,2,106,123,184,194,112,245,204,230,90,240,209,188,209,175,61,67,172,143,75,148,1,255}, + {89,63,37,111,54,84,103,221,103,152,61,93,47,225,181,222,152,84,107,66,201,189,152,146,246,137,153,114,219,135,105,255}, + {192,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {193,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {194,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {195,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {196,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {197,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {198,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {199,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {201,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {202,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {203,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {204,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {205,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {206,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {208,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {209,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {210,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {211,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {212,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {213,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {215,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {216,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {217,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {218,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {219,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {220,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {221,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {222,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {223,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {224,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {225,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {226,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {227,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {228,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {229,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {230,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {231,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {232,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {233,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {234,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {236,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {237,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {238,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {241,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {242,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {243,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {244,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {245,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, +} ; + +static void test_pow_inv25519_impl(long long impl) +{ + unsigned char *q = test_pow_inv25519_q; + unsigned char *p = test_pow_inv25519_p; + unsigned char *q2 = test_pow_inv25519_q2; + unsigned char *p2 = test_pow_inv25519_p2; + long long qlen = crypto_pow_BYTES; + long long plen = crypto_pow_BYTES; + + if (targeti && strcmp(targeti,lib25519_dispatch_pow_inv25519_implementation(impl))) return; + if (impl >= 0) { + crypto_pow = lib25519_dispatch_pow_inv25519(impl); + printf("pow_inv25519 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_pow_inv25519_implementation(impl),lib25519_dispatch_pow_inv25519_compiler(impl)); + } else { + crypto_pow = lib25519_pow_inv25519; + printf("pow_inv25519 selected implementation %s compiler %s\n",lib25519_pow_inv25519_implementation(),lib25519_pow_inv25519_compiler()); + } + for (long long checksumbig = 0;checksumbig < 2;++checksumbig) { + long long loops = checksumbig ? 512 : 64; + + checksum_clear(); + + for (long long loop = 0;loop < loops;++loop) { + + output_prepare(q2,q,qlen); + input_prepare(p2,p,plen); + crypto_pow(q,p); + checksum(q,qlen); + output_compare(q2,q,qlen,"crypto_pow"); + input_compare(p2,p,plen,"crypto_pow"); + + double_canary(q2,q,qlen); + double_canary(p2,p,plen); + crypto_pow(q2,p2); + if (memcmp(q2,q,qlen) != 0) fail("failure: crypto_pow is nondeterministic\n"); + + double_canary(q2,q,qlen); + double_canary(p2,p,plen); + crypto_pow(p2,p2); + if (memcmp(p2,q,qlen) != 0) fail("failure: crypto_pow does not handle p=q overlap\n"); + memcpy(p2,p,plen); + } + checksum_expected(pow_inv25519_checksums[checksumbig]); + } + for (long long precomp = 0;precomp < precomputed_pow_inv25519_NUM;++precomp) { + output_prepare(q2,q,crypto_pow_BYTES); + input_prepare(p2,p,crypto_pow_BYTES); + memcpy(p,precomputed_pow_inv25519_p[precomp],crypto_pow_BYTES); + memcpy(p2,precomputed_pow_inv25519_p[precomp],crypto_pow_BYTES); + crypto_pow(q,p); + if (memcmp(q,precomputed_pow_inv25519_q[precomp],crypto_pow_BYTES)) { + fail("failure: crypto_pow fails precomputed test vectors\n"); + printf("expected q: "); + for (long long pos = 0;pos < crypto_pow_BYTES;++pos) printf("%02x",precomputed_pow_inv25519_q[precomp][pos]); + printf("\n"); + printf("received q: "); + for (long long pos = 0;pos < crypto_pow_BYTES;++pos) printf("%02x",q[pos]); + printf("\n"); + } + output_compare(q2,q,crypto_pow_BYTES,"crypto_pow"); + input_compare(p2,p,crypto_pow_BYTES,"crypto_pow"); + } +} + +static void test_pow_inv25519(void) +{ + if (targeto && strcmp(targeto,"pow")) return; + if (targetp && strcmp(targetp,"inv25519")) return; + test_pow_inv25519_q = alignedcalloc(crypto_pow_BYTES); + test_pow_inv25519_p = alignedcalloc(crypto_pow_BYTES); + test_pow_inv25519_q2 = alignedcalloc(crypto_pow_BYTES); + test_pow_inv25519_p2 = alignedcalloc(crypto_pow_BYTES); + + for (long long offset = 0;offset < 2;++offset) { + printf("pow_inv25519 offset %lld\n",offset); + for (long long impl = -1;impl < lib25519_numimpl_pow_inv25519();++impl) + forked(test_pow_inv25519_impl,impl); + ++test_pow_inv25519_q; + ++test_pow_inv25519_p; + ++test_pow_inv25519_q2; + ++test_pow_inv25519_p2; + } +} +#undef crypto_pow_BYTES + + +/* ----- nP, derived from supercop/crypto_nP/try.c */ +static const char *nP_montgomery25519_checksums[] = { + "b861d66109b42359e5994ed57ae566827c345b65a9d0671700320b82888397ec", + "740924011f3448f65299f61b087f74a6eb9651a4203dfbf621d2bec54e149405", +} ; + +static void (*crypto_nP)(unsigned char *,const unsigned char *,const unsigned char *); +#define crypto_nP_SCALARBYTES lib25519_nP_montgomery25519_SCALARBYTES +#define crypto_nP_POINTBYTES lib25519_nP_montgomery25519_POINTBYTES + +static unsigned char *test_nP_montgomery25519_q; +static unsigned char *test_nP_montgomery25519_n; +static unsigned char *test_nP_montgomery25519_p; +static unsigned char *test_nP_montgomery25519_q2; +static unsigned char *test_nP_montgomery25519_n2; +static unsigned char *test_nP_montgomery25519_p2; + +#define precomputed_nP_montgomery25519_NUM 372 + +static const unsigned char precomputed_nP_montgomery25519_q[precomputed_nP_montgomery25519_NUM][crypto_nP_POINTBYTES] = { + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {129,42,27,226,56,122,209,122,33,165,197,59,204,245,117,180,65,210,211,35,205,129,134,7,75,25,155,208,55,142,9,28}, + {162,93,163,159,20,188,94,13,51,72,116,75,189,214,110,123,124,9,238,31,79,7,237,111,225,81,4,77,40,149,130,82}, + {121,223,164,139,202,179,32,228,109,181,229,181,139,0,181,124,140,230,145,47,130,223,137,147,17,118,27,113,92,100,228,98}, + {239,133,37,52,169,133,200,97,68,65,139,30,226,202,18,162,33,55,136,193,253,245,29,8,169,139,55,159,251,46,166,107}, + {66,245,111,3,98,139,24,189,155,145,236,234,46,217,98,153,28,247,110,223,14,222,218,185,48,86,154,56,134,240,21,93}, + {85,216,96,126,239,24,171,238,158,88,201,26,202,187,130,154,241,114,114,95,95,29,6,98,33,120,172,125,108,180,197,114}, + {247,143,27,107,199,100,117,167,157,168,246,0,110,30,208,91,218,135,95,226,47,159,110,22,230,94,31,219,179,141,240,71}, + {8,230,182,92,48,214,174,119,128,155,246,232,247,243,230,27,18,49,135,212,35,67,70,253,49,55,189,111,188,19,5,108}, + {135,110,236,86,44,66,16,135,102,160,234,251,75,169,40,162,23,252,170,56,119,186,208,82,4,133,157,1,170,36,83,77}, + {177,112,232,197,251,252,99,183,10,138,35,150,194,24,91,208,73,35,104,140,114,246,168,207,34,63,19,124,216,198,168,44}, + {147,18,46,232,128,232,34,246,212,145,27,134,255,227,150,31,236,60,94,72,20,254,53,138,162,159,253,128,210,223,193,23}, + {91,38,221,90,220,250,249,107,234,224,251,4,109,192,201,181,132,216,71,254,152,204,74,202,124,239,186,53,86,16,183,55}, + {141,157,167,22,166,233,3,111,51,116,212,34,62,101,204,129,57,112,28,177,46,211,164,76,149,205,39,197,223,238,176,48}, + {217,115,32,35,66,144,65,8,25,143,191,82,225,61,129,97,90,4,150,71,57,17,1,231,14,199,229,207,221,174,89,13}, + {168,30,239,136,43,9,85,111,60,43,82,60,196,16,54,69,36,18,140,202,217,195,39,26,118,7,90,218,115,19,147,79}, + {186,206,120,110,192,152,199,91,199,20,152,117,205,170,37,52,176,120,41,54,230,114,120,138,135,222,72,41,155,2,120,95}, + {8,100,222,18,220,20,218,99,254,188,214,171,119,88,234,228,50,86,45,103,188,156,0,91,129,17,52,149,192,244,246,108}, + {38,75,14,165,222,53,13,233,72,76,179,164,11,252,190,89,47,54,76,98,36,68,200,205,16,81,242,128,73,117,120,89}, + {45,251,59,61,97,219,78,236,93,144,47,91,181,225,215,145,201,10,128,250,30,245,216,88,147,237,63,156,243,103,228,122}, + {130,247,47,178,248,52,54,192,213,119,42,9,99,242,192,111,160,106,220,145,217,226,58,89,18,9,81,100,252,221,221,46}, + {110,7,125,207,66,148,213,123,27,131,1,51,171,70,41,235,248,209,1,139,29,117,199,115,19,229,10,124,38,119,167,95}, + {121,232,151,106,249,132,75,30,73,205,71,105,61,158,181,131,150,161,64,69,138,140,30,8,40,61,72,109,102,207,107,46}, + {189,197,102,194,52,207,156,183,67,27,246,1,63,74,157,164,178,75,166,128,84,36,11,214,239,86,170,86,145,66,109,117}, + {198,237,17,59,13,46,43,8,99,121,23,190,202,234,240,252,155,193,97,152,217,159,15,251,82,54,246,226,180,134,32,123}, + {171,226,12,187,31,76,168,13,76,46,35,191,62,137,48,2,209,188,191,149,42,154,3,16,133,1,173,136,97,149,120,43}, + {161,223,243,227,234,158,42,211,46,211,205,39,166,23,202,203,26,65,220,32,37,204,145,199,242,178,16,111,221,227,215,116}, + {227,16,183,177,15,162,157,55,149,46,188,120,29,196,13,218,249,145,106,62,56,120,249,64,11,212,158,254,153,222,134,102}, + {123,3,226,18,231,250,54,63,5,20,66,86,154,30,243,71,196,222,234,139,221,232,16,130,78,97,139,198,176,238,220,27}, + {15,216,90,115,25,121,207,41,112,66,176,118,79,176,85,9,162,102,135,200,230,98,135,24,229,37,74,23,87,146,107,75}, + {167,69,92,82,21,33,118,83,239,21,209,140,157,76,171,158,207,12,119,240,246,209,154,135,0,78,7,81,200,101,186,99}, + {8,139,160,142,177,217,68,114,183,108,120,157,4,55,210,197,122,181,154,109,149,1,44,118,166,30,19,188,14,141,44,35}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {81,212,247,2,165,203,138,13,12,188,47,181,141,146,236,57,186,2,196,20,129,165,17,228,157,55,212,222,126,114,58,74}, + {228,228,179,142,119,218,163,179,18,100,15,16,219,88,146,63,140,252,124,190,66,108,232,165,55,163,242,240,143,207,151,79}, + {205,232,203,120,115,196,192,76,184,227,29,204,114,160,206,2,164,87,199,142,87,173,42,249,6,168,123,162,43,50,233,87}, + {116,162,107,174,184,107,105,141,168,164,21,209,119,243,166,176,21,209,28,31,65,131,190,203,128,255,94,131,55,69,185,35}, + {20,96,92,201,136,69,10,113,254,74,165,39,25,79,82,23,55,110,87,2,223,203,70,39,10,151,217,38,130,228,110,35}, + {18,244,59,81,248,218,145,225,18,224,235,185,206,228,171,123,58,219,224,244,155,107,209,155,205,67,188,62,88,237,239,40}, + {143,89,69,222,179,212,88,144,197,252,13,219,244,149,71,33,78,245,157,244,93,18,109,20,156,74,71,239,48,201,0,36}, + {242,17,147,144,73,76,20,33,70,38,176,162,163,20,110,251,153,126,98,180,47,185,101,227,13,31,169,7,65,168,217,33}, + {15,110,14,218,109,97,208,5,119,1,172,107,129,13,15,212,190,36,103,67,142,60,73,93,73,192,62,251,214,1,248,33}, + {56,21,5,209,153,28,67,172,37,109,174,13,123,39,248,41,6,32,97,215,136,83,40,105,144,155,46,38,66,191,92,111}, + {124,34,221,39,200,223,110,235,114,121,23,183,13,139,29,105,164,48,137,253,75,215,206,50,99,236,183,40,157,114,126,8}, + {209,78,224,191,218,3,170,4,33,85,112,53,175,85,212,14,190,108,45,17,159,66,4,171,44,222,255,213,156,13,224,24}, + {65,230,67,147,81,29,193,205,106,166,158,26,136,203,16,178,103,85,161,96,102,107,105,133,105,84,64,40,68,43,195,91}, + {32,163,168,139,99,25,127,116,102,44,81,149,235,117,39,200,88,48,216,100,104,104,82,71,66,252,153,234,179,66,237,60}, + {140,24,30,176,134,8,31,231,89,88,140,197,126,181,244,132,204,147,137,5,26,207,233,155,233,228,209,90,38,40,202,118}, + {33,8,41,21,196,57,27,11,142,108,106,99,167,6,192,237,255,230,224,36,117,7,242,70,226,111,243,213,61,23,15,53}, + {40,105,249,168,34,223,38,206,115,50,194,65,164,57,143,11,92,115,159,142,217,0,132,251,237,153,184,34,195,196,37,112}, + {148,246,73,15,184,154,236,223,224,226,251,31,64,159,206,121,178,247,22,39,70,164,110,173,199,108,204,202,3,77,219,5}, + {227,182,214,47,131,182,21,112,64,150,229,231,76,159,115,101,254,178,24,4,238,128,253,76,19,54,242,153,40,8,96,107}, + {234,96,13,185,171,29,139,232,201,74,241,138,212,122,221,43,20,207,254,56,35,85,151,69,164,53,40,138,8,222,33,20}, + {228,112,130,63,107,81,23,249,186,10,22,86,99,174,198,10,157,41,6,67,30,228,13,31,83,154,42,32,230,159,64,116}, + {255,129,18,169,7,117,207,247,14,22,204,204,150,149,241,109,184,234,176,191,204,226,59,95,60,137,13,206,30,84,86,58}, + {216,58,60,48,207,147,39,42,240,212,174,51,254,97,191,197,184,179,199,46,208,162,235,199,58,84,206,231,135,146,53,3}, + {166,240,57,159,250,12,176,99,21,179,66,164,251,8,22,151,94,185,246,184,60,34,80,126,163,254,145,138,250,217,239,55}, + {58,144,221,68,149,243,211,220,123,4,9,128,144,125,157,1,216,48,133,89,2,18,245,83,40,245,77,176,207,170,188,126}, + {49,255,250,144,86,100,223,59,248,213,193,15,175,5,233,5,93,3,178,104,161,187,55,226,138,69,127,23,37,210,251,30}, + {152,251,21,58,4,206,92,66,175,109,126,19,17,4,136,153,160,151,177,196,251,14,160,205,121,23,97,7,196,38,40,91}, + {97,215,117,83,136,126,243,115,111,73,20,197,165,85,65,129,118,57,81,198,161,170,79,46,219,7,174,251,203,113,79,67}, + {167,219,221,104,83,243,49,44,209,154,240,113,203,222,164,106,101,186,231,195,242,96,115,182,109,1,17,204,66,19,22,106}, + {36,55,236,229,245,79,207,49,203,20,232,169,77,191,14,108,115,63,173,247,108,115,162,142,117,229,217,72,26,175,68,106}, + {146,149,77,134,215,1,44,221,5,86,144,64,62,218,24,92,66,95,109,169,110,156,123,103,200,136,175,181,79,206,77,30}, + {140,226,113,176,170,125,185,72,144,99,240,177,95,243,32,51,68,104,183,169,16,133,225,52,210,200,4,218,182,105,37,104}, + {63,4,23,253,35,192,48,242,97,105,156,93,94,131,136,135,234,220,44,198,162,110,76,234,4,24,99,125,56,100,216,63}, + {237,127,188,222,241,16,254,146,84,195,223,127,96,31,31,85,67,186,200,162,130,186,146,173,211,182,140,232,125,203,222,2}, + {181,222,209,109,182,226,150,229,99,94,129,129,202,251,88,218,173,54,120,32,159,13,194,200,151,39,193,64,72,6,44,24}, + {2,53,245,62,112,133,194,113,152,186,76,56,71,101,59,255,229,204,223,23,8,98,41,236,15,141,174,84,176,31,225,105}, + {176,85,166,39,118,113,247,129,215,210,93,45,236,83,4,34,146,19,90,66,49,85,204,206,232,3,26,141,96,101,112,4}, + {133,56,209,64,169,248,218,8,156,22,108,249,93,19,19,20,10,202,251,221,92,152,21,138,66,150,67,179,210,116,53,91}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {168,88,184,124,168,95,193,139,180,122,21,83,7,167,242,61,142,140,57,104,68,191,153,220,184,6,164,114,78,208,43,3}, + {27,140,184,246,181,174,139,12,170,14,22,32,229,243,80,102,110,113,2,211,170,28,63,207,246,75,190,124,83,154,186,59}, + {100,160,131,243,53,186,251,114,8,52,151,27,30,160,13,72,173,210,109,126,132,158,106,196,4,88,22,212,130,242,254,124}, + {201,155,12,75,225,4,142,124,244,58,18,139,255,150,172,144,168,104,16,32,44,188,45,70,238,199,97,32,247,139,217,62}, + {45,234,189,106,93,41,197,201,25,229,188,27,200,109,20,28,157,91,139,137,162,0,243,82,191,136,58,230,14,123,21,126}, + {96,255,146,161,76,7,96,239,148,166,23,180,53,104,37,186,46,128,89,3,171,67,92,201,226,96,241,85,156,155,106,26}, + {255,4,221,217,210,234,93,23,172,194,86,106,81,143,125,64,202,114,105,83,19,133,166,47,172,39,142,122,237,86,128,70}, + {110,113,117,196,107,121,84,48,49,149,121,164,3,133,75,138,55,101,216,33,156,143,15,96,198,175,237,75,185,14,12,69}, + {88,3,144,195,28,174,124,41,102,180,112,240,10,31,224,247,202,153,22,182,105,85,35,154,190,93,45,156,96,6,86,9}, + {184,104,230,182,129,76,150,111,49,140,51,165,182,24,57,150,50,121,20,24,229,80,67,104,254,120,83,13,14,124,45,86}, + {69,121,86,227,222,239,11,208,33,176,252,85,217,169,174,186,246,248,170,213,13,176,85,81,25,23,34,81,251,61,27,15}, + {119,95,0,82,108,75,113,6,44,136,6,36,243,251,32,7,104,182,129,199,63,114,69,233,251,107,213,42,64,188,144,76}, + {107,174,134,87,216,186,174,9,66,224,28,33,211,23,25,13,139,44,73,125,110,242,96,106,72,144,93,169,50,27,180,6}, + {7,18,149,199,142,15,15,235,24,15,67,212,106,110,177,124,26,214,252,13,89,48,12,66,35,106,43,25,66,132,159,100}, + {103,231,168,16,38,143,127,110,16,71,251,28,231,215,228,222,85,87,158,104,130,141,45,189,3,180,179,10,162,46,78,92}, + {73,23,176,31,225,42,167,200,73,7,156,3,193,59,105,14,42,173,194,190,183,110,83,43,127,58,195,19,51,229,36,37}, + {215,8,201,193,79,168,61,72,101,20,152,251,171,111,150,218,75,51,85,85,148,255,131,141,255,156,17,126,159,6,177,109}, + {84,52,11,125,245,132,150,18,72,100,216,10,97,116,194,219,120,17,230,231,77,86,11,115,18,17,117,83,207,244,176,124}, + {238,109,71,253,157,191,230,60,96,185,101,2,100,103,60,84,144,93,177,132,112,219,142,64,254,164,8,139,87,191,250,31}, + {134,205,13,226,154,77,112,59,108,242,192,203,108,5,89,119,105,54,99,227,158,177,209,151,225,8,176,145,62,72,244,107}, + {132,211,21,191,66,248,248,89,73,111,43,217,220,90,21,178,4,219,49,48,22,113,99,190,107,95,35,114,217,59,197,42}, + {96,202,115,189,116,193,131,183,206,245,166,211,213,163,181,114,114,156,236,147,196,192,27,239,83,67,106,173,100,236,252,47}, + {43,253,2,146,18,249,141,246,239,169,54,244,169,61,16,180,149,39,14,119,135,74,235,68,146,113,195,81,229,38,122,75}, + {167,175,126,31,208,11,138,29,108,204,241,125,175,14,115,81,219,83,39,19,165,200,222,35,120,16,71,153,151,169,50,104}, + {36,8,58,231,6,163,21,209,25,168,61,203,194,202,156,87,143,205,251,110,150,100,47,16,144,135,57,184,168,5,44,51}, + {179,73,180,255,248,60,100,186,199,247,245,45,119,213,164,143,28,85,7,91,72,48,154,97,161,216,224,199,234,9,254,79}, + {155,56,106,143,220,91,199,35,51,40,34,60,68,132,234,215,235,216,224,102,48,147,31,123,65,192,218,123,192,69,204,88}, + {135,115,33,191,144,231,20,161,98,28,77,82,146,186,0,121,148,163,84,123,175,168,159,183,95,66,121,8,30,105,215,104}, + {184,152,148,235,8,16,51,133,188,254,11,79,161,191,124,78,106,124,211,231,108,219,92,138,18,188,205,203,223,38,138,118}, + {98,215,92,179,246,154,125,32,18,145,5,39,203,210,146,30,53,83,227,20,109,186,64,31,179,85,248,148,129,219,43,39}, + {163,33,2,237,179,15,10,83,254,69,45,136,40,192,117,38,0,213,31,240,83,116,174,100,58,144,175,56,180,187,59,2}, + {118,105,251,142,173,206,119,201,47,240,166,60,39,156,155,111,147,129,253,132,244,244,191,40,212,235,110,70,241,225,145,42}, + {218,19,60,95,164,29,193,143,31,60,118,76,181,15,34,25,36,25,107,130,112,1,254,30,88,119,91,143,204,104,68,115}, + {32,9,88,219,42,178,51,219,92,36,92,6,17,122,205,3,143,164,248,172,108,77,113,31,45,213,215,21,152,78,171,51}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {119,220,130,248,172,121,136,58,112,22,32,242,0,215,240,240,73,194,107,33,173,48,122,143,203,15,1,98,169,138,17,96}, + {191,96,234,8,162,191,161,169,220,137,105,236,215,170,48,86,253,59,49,95,28,131,143,42,119,57,37,26,0,6,3,74}, + {79,44,236,112,159,54,150,95,117,110,182,61,177,18,158,99,107,124,142,159,114,211,46,83,130,42,252,119,143,232,229,84}, + {120,118,158,141,125,24,142,120,47,134,69,41,152,97,48,54,233,93,206,63,177,243,10,239,15,75,5,166,48,220,51,42}, + {154,52,76,173,8,179,82,209,123,62,55,159,184,42,203,79,85,136,37,33,206,15,34,229,172,130,233,168,80,218,61,45}, + {73,60,108,146,86,171,58,233,185,238,63,146,73,30,24,34,168,99,126,227,84,5,105,118,225,99,196,231,236,222,30,78}, + {98,24,253,129,142,215,166,88,61,78,76,204,63,148,128,154,172,46,214,22,232,19,159,246,156,88,25,209,232,64,143,103}, + {57,242,82,233,126,54,168,233,155,25,198,102,114,4,58,53,68,128,90,192,59,130,141,40,215,52,107,196,131,41,65,39}, + {123,70,222,176,120,109,101,245,75,98,220,83,5,255,243,76,191,226,15,90,209,192,192,236,110,38,48,104,108,237,145,40}, + {55,148,59,52,217,39,224,148,171,189,93,22,23,51,10,19,211,155,65,128,118,2,100,22,172,253,152,235,235,75,32,67}, + {249,135,87,93,181,36,185,185,29,41,248,205,125,88,68,213,249,15,243,25,75,40,228,78,236,220,85,85,118,111,169,86}, + {106,103,2,243,137,56,146,229,122,239,78,38,157,70,155,109,250,148,25,146,155,131,53,130,252,229,155,60,116,196,27,24}, + {56,169,74,148,128,81,129,189,149,193,170,248,98,241,253,84,138,97,74,51,6,228,232,110,164,73,149,25,108,184,144,118}, + {40,200,204,209,91,183,68,11,249,72,60,139,63,177,138,71,245,134,205,27,114,128,202,70,153,135,44,233,35,233,100,28}, + {41,180,99,22,85,111,172,206,203,210,25,146,24,17,12,58,24,38,145,39,250,10,156,182,230,244,68,97,12,26,173,78}, + {239,222,144,88,98,46,18,204,120,214,116,139,233,19,96,178,82,59,103,84,52,232,24,152,111,232,130,39,175,220,254,34}, + {126,137,129,238,107,156,145,31,56,159,155,66,4,83,86,183,9,220,155,48,244,177,187,3,182,38,36,137,95,249,128,25}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {33,212,245,239,163,87,64,222,199,45,84,224,94,162,129,34,49,21,39,11,84,129,120,16,201,2,126,109,67,19,48,21}, + {136,19,17,112,99,189,63,169,15,116,146,2,181,161,168,201,3,82,207,138,247,146,111,53,253,213,249,195,109,61,62,62}, + {214,96,131,178,122,236,247,212,60,83,213,17,200,164,52,19,131,159,193,252,76,52,94,134,135,233,55,169,243,136,23,107}, + {31,100,25,145,30,62,144,212,64,219,186,236,38,135,240,173,18,18,210,133,193,58,175,187,132,2,62,79,230,138,149,63}, + {146,49,171,76,227,245,47,149,115,6,126,210,49,141,165,156,142,7,128,23,25,254,255,223,153,207,248,237,162,250,198,67}, + {115,167,160,190,36,209,72,210,130,232,16,195,227,119,219,213,42,163,16,207,133,16,126,252,97,244,154,83,165,64,192,26}, + {152,12,190,190,80,17,187,19,71,36,226,40,125,198,215,94,232,63,42,31,14,100,72,70,107,235,184,199,209,44,150,91}, + {145,169,66,194,172,81,198,39,46,210,40,41,254,167,131,100,86,46,217,95,40,211,39,130,222,43,75,12,181,179,175,68}, + {133,21,44,67,64,117,20,116,128,232,253,115,65,157,23,187,236,174,41,220,111,27,126,207,11,138,96,96,151,211,168,49}, + {6,194,203,81,78,250,69,205,80,64,132,142,179,170,110,65,191,233,102,109,191,240,215,13,109,52,60,12,114,5,33,56}, + {245,179,140,16,163,32,44,87,11,245,40,56,66,162,19,245,118,155,111,15,189,36,221,51,162,104,129,154,194,248,202,68}, + {244,234,224,253,20,60,198,188,247,143,28,41,20,220,97,2,77,10,78,118,138,153,225,43,248,21,123,242,192,35,238,1}, + {31,224,135,97,215,173,1,8,159,103,168,115,190,1,26,137,189,20,155,104,150,122,79,28,21,220,74,33,159,177,72,76}, + {215,194,226,30,5,48,102,158,105,8,172,181,127,251,175,126,0,25,101,220,84,10,197,19,105,58,237,49,123,52,190,117}, + {131,178,101,184,126,23,38,56,138,103,253,111,188,251,228,91,254,228,187,90,26,225,156,197,66,28,186,57,44,185,250,23}, + {154,231,161,126,117,93,158,70,201,65,48,137,36,99,132,30,137,109,243,186,100,20,184,154,138,250,91,2,143,46,33,101}, + {231,158,68,235,147,216,171,15,157,107,171,70,180,155,200,39,184,120,149,1,0,152,227,33,46,131,214,172,224,37,32,111}, + {253,205,161,63,111,59,7,121,218,246,210,176,175,45,127,224,204,83,38,105,27,136,210,12,116,200,63,111,243,97,6,112}, + {5,46,30,42,98,63,154,70,66,63,49,231,188,171,247,29,219,150,92,232,106,211,78,164,181,2,112,69,113,43,80,32}, + {118,89,75,102,164,69,59,231,245,160,186,207,73,82,175,87,192,188,225,244,45,156,230,193,151,62,253,224,122,86,181,24}, + {115,208,88,150,38,171,228,174,111,26,37,143,232,112,75,79,110,236,116,118,226,134,16,45,74,163,167,66,94,182,154,7}, + {18,210,84,201,51,34,241,76,154,163,14,204,246,5,232,8,21,91,27,156,153,60,43,242,136,87,232,108,180,171,166,74}, + {197,233,94,100,214,120,245,139,186,201,108,21,34,160,141,46,28,199,221,166,87,96,122,5,69,213,139,52,244,140,249,113}, + {99,251,119,112,231,187,226,19,201,44,152,12,75,37,149,216,238,92,77,90,182,244,215,236,152,248,64,29,159,78,248,62}, + {158,138,9,51,170,145,115,189,112,13,48,3,98,41,174,199,232,105,74,126,173,133,160,77,89,232,220,120,220,157,180,65}, + {65,16,12,71,178,214,47,201,150,50,12,108,176,230,144,60,126,229,4,105,37,131,67,15,164,227,197,10,127,202,91,86}, + {156,161,169,73,10,135,164,15,62,197,29,189,29,233,29,213,248,37,51,240,20,220,225,237,118,6,251,192,160,51,249,13}, + {110,150,14,99,68,203,159,4,163,34,159,247,191,49,163,248,31,16,1,99,125,248,15,121,30,38,206,24,168,24,186,68}, + {8,189,66,216,234,113,36,241,5,26,29,3,178,167,139,138,18,138,176,138,255,185,236,227,217,63,49,202,131,61,120,24}, + {212,158,177,203,244,122,84,74,148,209,29,122,61,231,225,9,252,236,13,189,71,250,166,72,32,254,191,58,116,1,235,118}, + {24,51,215,230,138,23,30,88,143,60,86,238,203,211,116,63,245,76,50,7,178,47,174,153,162,153,90,26,244,64,247,126}, + {71,231,201,137,60,129,65,100,178,201,65,65,97,209,157,227,242,131,60,84,180,233,58,74,146,24,187,55,230,120,180,110}, + {172,70,14,185,30,186,50,208,224,176,120,187,8,3,251,227,44,1,74,205,248,162,76,83,200,48,254,14,251,56,149,66}, + {247,146,255,227,153,101,136,0,146,133,35,205,167,85,69,130,198,226,111,184,244,181,248,124,96,112,53,61,56,88,129,74}, + {206,78,210,8,102,50,143,143,31,56,203,224,32,190,137,2,149,174,115,118,219,32,131,246,43,49,186,161,111,98,144,46}, + {198,154,199,78,110,86,239,200,105,159,84,137,33,219,78,60,63,55,16,37,131,150,75,186,153,157,252,223,107,173,129,105}, + {249,150,54,25,81,32,193,186,113,23,74,213,26,222,126,40,36,69,191,63,53,207,74,7,146,7,223,114,136,152,60,1}, + {250,24,107,107,6,101,57,112,116,170,102,232,87,148,128,233,176,179,128,225,215,239,98,241,165,238,3,177,50,199,204,1}, + {170,208,209,190,88,225,4,146,80,242,232,41,199,19,207,109,186,249,155,73,43,228,161,96,105,32,252,159,150,203,35,3}, + {137,26,192,72,140,228,109,25,100,16,99,83,223,159,111,128,121,49,67,57,47,19,70,152,130,193,111,128,175,222,74,109}, + {230,192,51,223,88,76,165,65,245,172,169,217,135,30,175,238,107,118,156,229,115,148,251,35,247,181,153,141,64,209,111,48}, + {132,85,71,140,81,157,140,27,244,168,251,76,90,21,84,87,47,220,93,183,132,39,90,110,126,195,60,209,172,229,201,62}, + {30,225,230,237,233,238,81,121,182,15,229,62,119,131,26,184,91,255,252,212,184,172,61,70,71,129,95,179,166,196,248,54}, + {226,192,7,12,247,39,31,31,146,232,156,62,81,27,45,7,26,101,90,209,20,194,119,196,21,128,80,155,216,45,136,36}, + {237,55,206,156,153,98,47,4,113,19,141,79,130,147,182,227,67,233,30,11,14,216,24,50,201,173,251,94,125,59,10,23}, + {181,49,110,183,58,255,210,62,187,69,3,62,83,113,156,197,242,100,21,35,207,254,182,177,170,140,233,230,156,93,33,25}, + {155,73,0,92,215,234,237,137,180,16,181,128,83,187,187,194,169,65,21,107,112,232,230,143,118,49,50,87,125,129,170,102}, + {83,174,249,202,179,58,189,144,173,3,137,209,230,75,20,7,24,221,28,81,93,137,8,72,28,93,255,35,19,90,20,123}, + {65,62,154,115,224,88,6,117,184,185,242,211,66,135,27,228,207,140,55,113,135,116,214,21,101,100,88,232,37,123,40,23}, + {21,183,78,80,200,224,244,217,51,149,162,50,234,63,225,34,110,163,6,104,143,7,14,153,90,173,192,153,92,6,198,30}, + {37,4,115,109,112,38,49,17,65,41,208,227,162,7,235,158,167,241,174,152,183,52,193,184,73,164,47,221,169,24,150,56}, + {3,76,186,156,73,32,8,184,243,153,152,187,133,201,4,193,22,190,69,70,182,40,172,229,239,188,2,74,226,188,145,126}, + {107,34,228,2,211,131,135,174,55,26,22,11,123,154,234,171,193,20,22,138,117,172,170,186,145,69,38,36,18,145,190,49}, + {112,155,213,119,42,188,194,117,1,220,30,121,159,134,158,94,15,242,75,232,214,4,87,58,90,222,103,169,64,203,215,34}, + {101,8,45,230,27,51,148,195,75,127,203,167,78,137,135,248,54,28,30,246,64,138,219,86,134,110,189,60,9,77,225,121}, + {135,156,156,36,100,222,65,89,63,7,219,158,162,168,196,27,226,198,185,121,31,130,247,227,124,145,198,121,149,127,164,17}, + {135,15,120,138,71,87,173,231,237,56,243,27,120,254,187,195,198,200,174,75,255,10,148,111,61,165,125,117,227,5,164,102}, + {50,4,225,52,71,88,187,126,109,97,237,180,110,70,84,4,166,163,176,38,217,6,62,76,183,202,153,49,93,93,43,101}, + {90,21,239,238,78,202,71,98,221,74,25,14,52,104,86,203,129,112,143,228,68,7,250,19,186,252,225,53,99,87,39,95}, + {189,43,15,184,94,255,242,174,153,145,193,220,227,67,4,174,147,174,152,18,101,159,166,139,63,163,243,59,213,161,253,1}, + {43,41,186,92,20,48,245,52,112,164,231,7,30,244,98,207,255,80,92,47,122,161,158,99,4,86,10,246,88,141,211,64}, + {164,18,181,163,154,223,13,222,144,40,229,62,74,82,118,81,14,32,25,1,113,163,252,237,51,70,56,223,247,160,78,82}, + {102,229,61,162,248,69,239,179,58,60,8,152,113,12,218,168,141,35,147,32,194,194,98,22,156,1,83,20,8,13,65,122}, + {129,123,252,32,79,232,223,63,208,174,46,91,43,179,128,194,105,151,157,192,205,242,81,44,200,18,14,15,210,144,109,87}, + {159,55,188,83,179,251,171,231,152,89,242,9,193,181,236,12,223,112,236,40,247,85,159,25,85,107,225,18,155,177,61,7}, + {190,145,102,90,116,173,9,96,1,136,94,70,240,65,189,201,171,145,254,247,129,62,21,105,243,190,11,68,201,228,8,12}, + {231,135,174,215,156,67,163,120,76,181,241,178,10,247,172,245,31,239,228,196,174,195,118,22,142,51,13,168,31,199,62,43}, + {73,146,214,103,234,183,216,144,200,165,221,87,194,213,49,122,62,65,255,204,72,182,131,146,75,41,207,45,248,160,66,90}, + {218,151,19,123,28,234,235,200,163,179,10,170,252,43,86,73,85,71,114,100,167,146,135,33,146,246,108,40,7,137,39,115}, + {239,148,237,0,202,18,221,76,204,192,173,223,64,192,155,240,126,69,40,188,148,63,98,179,153,171,127,132,205,146,38,118}, + {114,178,3,172,20,190,19,181,77,121,28,50,216,32,39,195,172,140,113,226,234,6,168,216,230,208,249,107,66,64,233,60}, + {14,53,226,212,72,54,37,122,49,73,1,118,243,185,162,74,34,107,209,235,157,118,141,39,113,86,137,20,138,74,1,98}, + {11,170,79,238,36,206,68,38,246,56,104,176,194,101,73,154,107,241,159,210,25,51,189,254,44,37,137,100,143,9,146,80}, + {178,130,114,238,38,16,52,113,3,101,188,106,231,131,176,203,199,120,61,248,168,88,88,57,200,132,94,21,26,110,252,103}, + {215,155,105,172,214,147,237,205,119,60,252,47,67,96,235,114,110,201,226,162,219,48,127,194,252,165,209,248,235,150,64,23}, + {166,231,42,36,82,248,104,43,82,112,6,217,2,173,23,178,47,58,82,139,81,21,252,83,220,4,25,236,19,233,29,40}, + {0,180,224,147,32,164,89,230,151,104,186,154,99,51,136,73,196,133,201,147,116,52,167,136,145,196,105,175,165,34,28,108}, + {242,84,128,149,205,214,49,57,162,189,47,96,211,217,144,69,45,198,30,208,20,93,90,160,20,186,93,252,217,14,232,42}, + {110,203,38,47,155,200,34,223,176,221,103,84,230,144,95,250,34,28,202,120,170,176,202,218,74,129,95,249,77,229,72,123}, + {236,248,147,230,0,12,122,127,81,208,149,0,97,187,213,177,109,216,52,215,168,107,82,70,144,31,173,149,212,176,141,121}, + {129,54,127,113,23,213,170,23,125,175,158,90,213,181,240,71,94,221,10,124,254,181,32,136,220,100,246,33,142,108,253,122}, + {207,99,98,54,244,37,197,214,156,117,144,114,91,66,109,51,150,66,7,58,125,133,76,166,247,62,34,75,174,82,117,119}, + {121,50,129,4,175,130,113,47,11,231,181,146,108,87,42,154,202,225,14,245,94,177,3,144,235,171,44,206,253,188,50,63}, + {176,182,52,252,134,77,176,235,75,203,19,14,204,192,20,85,158,135,211,17,217,16,231,54,41,73,208,31,27,201,231,67}, + {43,186,50,61,113,54,20,246,129,62,252,230,142,137,188,131,52,135,179,98,232,100,109,104,47,120,116,195,104,53,219,76}, + {42,70,245,57,92,204,31,170,214,134,23,18,203,54,54,166,42,86,52,54,83,242,185,188,38,39,121,150,204,77,186,9}, + {252,153,120,176,103,212,75,243,94,253,126,19,145,198,184,151,142,97,5,167,143,143,166,67,50,196,36,175,109,172,119,2}, + {161,11,162,100,6,245,172,159,215,191,146,107,32,227,42,247,252,245,246,10,78,80,109,130,135,23,147,91,19,93,171,113}, + {85,22,94,43,250,25,107,211,127,176,94,120,179,15,69,112,208,255,149,239,112,175,29,76,194,87,205,12,119,143,224,112}, + {176,88,213,41,206,76,234,184,116,73,157,208,92,216,24,119,57,36,66,147,8,160,21,98,210,253,8,43,48,167,53,48}, + {62,0,123,251,99,62,66,71,243,231,164,120,115,181,126,254,237,36,36,32,140,194,68,35,73,35,222,199,199,107,28,117}, + {70,120,164,208,137,21,121,162,170,232,226,147,29,219,46,113,250,108,94,182,81,170,242,154,139,170,231,136,62,149,152,109}, + {14,237,34,146,132,166,157,178,67,25,254,152,153,185,63,240,88,85,182,87,39,199,1,173,180,1,24,254,13,167,52,122}, + {242,199,150,29,101,160,96,249,71,189,152,244,2,107,249,84,53,111,96,147,59,52,94,253,64,24,115,111,7,201,175,122}, + {1,178,251,232,38,255,44,82,173,188,52,91,62,83,168,38,95,75,72,128,133,212,62,143,110,112,121,149,220,105,4,85}, + {175,8,94,200,26,183,77,83,31,204,57,39,124,104,223,137,28,239,203,131,34,179,127,231,231,26,223,14,36,198,12,102}, + {79,239,164,209,27,133,140,233,228,18,135,107,160,242,47,192,248,192,216,54,217,167,41,134,14,151,241,20,44,45,65,112}, + {46,130,121,139,15,200,12,86,200,15,247,172,80,99,45,114,180,28,227,23,203,233,211,8,246,205,217,147,171,99,219,57}, + {92,164,40,99,40,192,66,62,77,160,155,220,53,40,184,13,30,33,3,251,48,94,67,38,33,104,167,232,228,171,151,84}, + {154,94,142,191,27,252,192,84,123,41,33,19,218,35,128,221,242,122,223,205,179,50,60,118,31,32,16,164,45,185,232,80}, + {162,200,159,138,45,13,115,138,144,161,63,6,91,72,118,169,6,181,210,18,111,174,62,33,31,232,84,171,40,69,200,85}, + {134,117,13,133,76,76,11,104,240,246,53,69,95,54,199,222,80,75,6,41,61,6,42,151,152,238,83,104,84,68,82,56}, + {241,134,87,215,83,178,102,73,233,53,211,88,184,115,74,195,209,8,146,155,112,251,184,47,221,243,207,27,132,10,132,103}, + {226,229,86,250,226,103,61,86,101,102,170,10,63,9,246,69,117,118,210,10,220,237,241,170,242,18,116,58,91,167,107,110}, + {84,254,45,150,154,98,111,211,23,245,171,54,22,154,176,232,226,22,118,224,202,10,81,191,197,247,21,58,221,110,151,50}, + {143,113,135,245,250,124,30,154,148,22,222,2,117,102,37,93,250,232,201,25,74,171,107,245,58,131,36,66,114,107,208,2}, + {1,109,129,242,119,182,55,3,153,159,123,44,185,57,21,206,56,39,169,140,95,249,234,0,69,12,113,108,191,23,1,96}, + {192,244,164,145,98,244,9,246,197,103,1,157,51,121,12,217,237,163,46,47,31,207,34,115,161,241,242,8,216,217,12,64}, + {234,38,16,122,131,105,113,8,184,145,137,86,13,79,72,188,44,16,207,203,179,59,194,14,41,217,244,168,4,6,88,72}, + {47,115,8,251,186,185,171,39,249,40,33,1,18,101,92,219,88,129,3,177,237,246,163,93,167,149,3,184,116,88,241,25}, + {21,84,118,159,59,245,230,151,180,211,234,186,152,140,135,211,131,219,69,203,17,169,193,235,216,127,223,102,98,1,191,26}, + {19,91,35,55,26,16,58,150,14,11,211,85,201,223,90,113,107,149,54,13,225,66,8,38,250,101,202,37,218,226,152,75}, + {173,238,48,49,7,88,140,189,222,52,38,76,94,246,163,179,79,68,199,174,175,35,28,171,166,228,36,118,201,58,109,61}, + {235,14,110,53,191,65,207,130,47,77,134,173,120,240,222,139,29,180,151,72,162,218,70,217,73,77,253,120,147,236,10,61}, + {57,74,239,155,208,129,43,123,158,71,189,175,103,55,72,239,237,109,15,72,56,141,97,161,180,151,109,117,42,250,184,118}, + {52,64,63,32,59,126,186,249,244,99,54,83,22,9,37,16,48,126,99,33,177,126,99,80,233,21,61,226,163,249,55,32}, + {203,110,3,139,59,73,180,116,211,247,111,59,160,56,91,186,33,143,92,198,148,162,24,120,130,109,3,10,231,16,77,30}, + {255,82,248,88,61,49,168,220,29,130,1,110,152,243,156,136,217,219,236,92,185,217,90,81,253,170,11,27,2,238,82,54}, + {60,22,33,140,23,162,113,107,155,140,224,219,58,96,175,108,53,128,62,69,108,113,149,118,205,53,88,43,42,31,142,55}, + {204,187,162,207,214,53,94,210,29,108,25,4,213,123,82,215,173,223,116,44,147,220,85,208,25,20,241,20,100,97,223,41}, + {251,98,204,212,151,230,92,115,12,253,83,80,49,51,202,230,25,35,78,198,170,9,74,228,125,247,101,252,40,101,248,120}, + {5,168,106,188,73,12,34,187,203,246,72,18,25,207,249,218,205,93,206,60,174,15,128,30,117,208,119,125,204,0,69,104}, + {16,176,71,29,5,94,145,54,10,27,149,62,98,110,49,207,187,136,60,70,108,197,164,236,231,202,78,68,116,44,114,12}, + {118,218,149,241,214,33,125,242,130,22,147,72,83,220,163,24,130,172,18,66,72,206,244,12,146,34,20,156,123,174,125,122}, + {146,43,123,255,31,155,213,85,188,25,221,200,248,13,245,68,170,167,163,189,220,88,41,78,249,84,138,234,158,186,176,75}, + {154,252,107,191,196,167,167,136,136,98,93,165,209,41,6,157,130,51,6,68,53,89,39,163,170,39,99,132,237,74,159,57}, + {232,223,29,50,126,217,13,125,105,77,176,189,58,93,172,9,98,165,81,119,248,183,137,75,104,255,23,182,247,162,99,8}, + {116,70,20,190,1,228,58,162,97,230,38,210,46,203,75,121,38,47,150,168,111,194,217,74,139,93,163,63,251,59,118,43}, + {126,55,220,151,180,27,202,117,159,44,8,122,63,39,156,203,142,192,247,237,107,246,70,7,213,252,99,166,210,52,191,97}, + {184,122,157,192,154,231,105,41,94,69,37,230,209,206,80,42,230,92,79,235,72,0,173,193,149,93,81,159,3,222,209,67}, + {180,167,250,223,182,154,131,236,92,247,193,57,146,215,254,245,39,26,86,84,160,44,80,79,10,137,193,48,226,150,244,84}, + {60,192,58,28,87,176,201,167,97,147,222,140,8,28,23,184,137,118,108,190,240,203,59,10,188,50,7,248,244,70,246,85}, + {237,233,209,128,35,74,98,191,219,14,142,247,21,184,48,218,12,66,235,142,38,201,74,115,203,99,197,195,181,145,64,18}, + {130,188,214,217,3,161,54,133,153,23,231,239,204,250,189,175,80,94,207,73,155,208,50,219,223,133,155,189,102,74,86,113}, + {227,14,91,89,149,235,87,47,99,114,144,161,63,49,199,206,166,102,67,148,111,155,190,231,26,97,66,200,152,157,97,106}, + {242,89,152,96,42,56,87,23,28,237,153,236,48,53,216,130,41,246,187,228,42,0,105,229,19,247,196,116,110,188,161,106}, + {14,219,163,120,245,151,25,166,50,224,152,7,225,58,30,88,16,130,127,229,43,47,74,108,254,13,74,201,106,96,143,120}, + {87,236,127,198,169,148,118,83,58,50,75,21,133,21,65,45,14,189,87,81,215,96,59,78,219,142,162,18,59,85,83,99}, + {224,179,222,89,255,48,52,179,140,224,236,20,136,156,186,137,2,157,150,223,155,241,245,156,99,211,82,13,29,52,168,81}, + {64,91,102,139,101,206,222,171,228,8,235,102,170,68,4,28,147,133,171,48,83,187,216,119,107,20,43,2,254,116,218,94}, + {96,152,132,105,44,180,126,28,69,184,225,234,81,248,99,233,148,25,242,161,80,3,51,87,86,219,28,141,82,225,91,18}, + {245,147,197,14,116,81,238,160,86,55,195,142,129,205,120,245,176,155,135,184,139,85,206,241,38,229,120,82,130,101,111,12}, + {9,178,206,181,142,48,124,46,179,156,48,251,55,239,115,5,121,70,93,197,129,97,161,207,155,176,26,201,43,111,39,99}, + {147,241,120,113,224,227,19,27,252,128,102,181,229,207,33,112,228,183,166,22,96,243,43,175,115,109,22,76,240,144,232,7}, + {115,133,173,27,62,250,88,134,96,111,195,204,235,48,166,87,167,250,168,137,187,92,210,236,239,190,20,127,191,201,204,91}, + {26,72,40,11,41,19,139,5,91,221,38,250,195,246,25,132,206,72,32,94,158,183,73,185,132,155,47,231,237,107,22,113}, + {119,243,169,67,101,142,55,101,19,229,2,251,162,150,18,160,112,134,178,193,7,225,98,208,156,230,253,183,65,134,234,30}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {139,147,141,94,93,143,239,121,211,81,7,154,161,209,7,107,178,61,20,223,137,117,220,32,14,123,164,122,20,46,70,31}, + {0,8,245,27,88,69,231,240,113,253,194,181,87,25,252,185,40,105,46,159,147,94,139,142,131,39,53,75,16,206,222,113}, + {4,243,251,109,137,210,96,75,126,55,164,203,108,60,142,184,22,115,198,64,107,67,90,220,241,226,200,57,51,125,193,103}, + {8,178,89,230,199,191,250,150,143,137,166,130,170,245,171,169,133,222,28,78,230,198,190,1,49,175,201,250,128,82,252,47}, + {246,114,119,143,155,39,157,246,34,55,191,127,26,58,19,46,165,222,14,207,65,129,225,39,13,216,33,128,100,154,200,93}, + {204,122,49,114,58,61,115,158,17,228,115,102,218,190,240,197,111,177,250,75,24,247,17,176,143,83,147,166,57,45,102,23}, + {244,146,37,213,178,53,228,12,102,15,156,100,18,101,235,155,107,127,117,214,75,172,94,175,202,9,102,73,140,176,124,5}, + {148,188,32,138,35,155,131,145,247,84,194,147,26,230,196,137,182,79,238,150,206,142,38,214,146,1,127,88,47,63,152,67}, + {209,8,167,238,183,163,11,201,243,185,121,161,29,123,20,175,222,28,200,142,145,47,77,106,203,64,70,86,163,201,45,53}, + {98,163,196,68,252,99,1,247,236,37,88,104,24,167,95,254,22,154,226,52,102,227,151,125,253,130,214,218,119,248,75,58}, + {131,184,40,236,201,25,226,15,254,203,109,30,23,96,252,240,196,182,159,89,115,37,70,250,109,160,42,78,55,155,232,74}, + {128,200,33,171,61,181,149,40,157,81,87,232,179,117,143,223,16,178,66,151,121,165,153,244,21,43,97,130,164,152,211,35}, + {223,75,13,226,76,177,189,93,51,68,131,194,183,178,154,171,211,179,5,128,98,214,70,79,95,15,37,250,248,116,70,127}, + {126,246,89,95,225,129,218,133,97,109,54,10,221,243,180,97,9,73,61,62,229,102,18,182,42,111,35,14,215,178,188,30}, + {218,32,254,212,8,74,75,59,35,10,147,245,81,16,116,191,60,217,50,26,181,201,162,223,252,193,5,7,161,94,137,78}, + {18,53,101,1,161,55,109,55,55,245,40,232,72,51,227,62,45,172,78,1,35,35,96,219,227,194,151,255,96,226,166,98}, + {242,86,244,104,119,137,72,40,118,67,216,30,195,131,6,158,122,176,90,117,93,74,71,235,10,59,122,174,197,2,226,59}, + {104,184,73,21,234,140,146,89,66,128,93,207,104,48,232,88,217,71,111,230,170,67,145,116,165,245,23,47,124,139,236,77}, + {104,184,73,21,234,140,146,89,66,128,93,207,104,48,232,88,217,71,111,230,170,67,145,116,165,245,23,47,124,139,236,77}, + {104,184,73,21,234,140,146,89,66,128,93,207,104,48,232,88,217,71,111,230,170,67,145,116,165,245,23,47,124,139,236,77}, + {104,184,73,21,234,140,146,89,66,128,93,207,104,48,232,88,217,71,111,230,170,67,145,116,165,245,23,47,124,139,236,77}, + {104,184,73,21,234,140,146,89,66,128,93,207,104,48,232,88,217,71,111,230,170,67,145,116,165,245,23,47,124,139,236,77}, + {104,184,73,21,234,140,146,89,66,128,93,207,104,48,232,88,217,71,111,230,170,67,145,116,165,245,23,47,124,139,236,77}, + {174,55,84,177,14,127,76,178,164,64,128,169,117,204,11,247,182,187,200,91,189,166,41,125,251,5,34,240,60,43,170,99}, + {174,55,84,177,14,127,76,178,164,64,128,169,117,204,11,247,182,187,200,91,189,166,41,125,251,5,34,240,60,43,170,99}, + {174,55,84,177,14,127,76,178,164,64,128,169,117,204,11,247,182,187,200,91,189,166,41,125,251,5,34,240,60,43,170,99}, + {174,55,84,177,14,127,76,178,164,64,128,169,117,204,11,247,182,187,200,91,189,166,41,125,251,5,34,240,60,43,170,99}, + {174,55,84,177,14,127,76,178,164,64,128,169,117,204,11,247,182,187,200,91,189,166,41,125,251,5,34,240,60,43,170,99}, + {174,55,84,177,14,127,76,178,164,64,128,169,117,204,11,247,182,187,200,91,189,166,41,125,251,5,34,240,60,43,170,99}, + {174,55,84,177,14,127,76,178,164,64,128,169,117,204,11,247,182,187,200,91,189,166,41,125,251,5,34,240,60,43,170,99}, + {174,55,84,177,14,127,76,178,164,64,128,169,117,204,11,247,182,187,200,91,189,166,41,125,251,5,34,240,60,43,170,99}, + {174,55,84,177,14,127,76,178,164,64,128,169,117,204,11,247,182,187,200,91,189,166,41,125,251,5,34,240,60,43,170,99}, + {174,55,84,177,14,127,76,178,164,64,128,169,117,204,11,247,182,187,200,91,189,166,41,125,251,5,34,240,60,43,170,99}, + {231,139,75,87,251,198,105,248,16,76,143,20,195,153,152,96,240,141,255,220,107,212,231,155,20,32,248,139,96,147,226,70}, + {231,139,75,87,251,198,105,248,16,76,143,20,195,153,152,96,240,141,255,220,107,212,231,155,20,32,248,139,96,147,226,70}, + {231,139,75,87,251,198,105,248,16,76,143,20,195,153,152,96,240,141,255,220,107,212,231,155,20,32,248,139,96,147,226,70}, + {231,139,75,87,251,198,105,248,16,76,143,20,195,153,152,96,240,141,255,220,107,212,231,155,20,32,248,139,96,147,226,70}, + {231,139,75,87,251,198,105,248,16,76,143,20,195,153,152,96,240,141,255,220,107,212,231,155,20,32,248,139,96,147,226,70}, + {231,139,75,87,251,198,105,248,16,76,143,20,195,153,152,96,240,141,255,220,107,212,231,155,20,32,248,139,96,147,226,70}, + {231,139,75,87,251,198,105,248,16,76,143,20,195,153,152,96,240,141,255,220,107,212,231,155,20,32,248,139,96,147,226,70}, + {231,139,75,87,251,198,105,248,16,76,143,20,195,153,152,96,240,141,255,220,107,212,231,155,20,32,248,139,96,147,226,70}, + {231,139,75,87,251,198,105,248,16,76,143,20,195,153,152,96,240,141,255,220,107,212,231,155,20,32,248,139,96,147,226,70}, + {231,139,75,87,251,198,105,248,16,76,143,20,195,153,152,96,240,141,255,220,107,212,231,155,20,32,248,139,96,147,226,70}, + {209,108,157,87,217,185,241,67,140,38,65,108,77,247,109,169,226,0,168,35,246,109,220,135,77,138,106,158,243,48,87,40}, + {209,108,157,87,217,185,241,67,140,38,65,108,77,247,109,169,226,0,168,35,246,109,220,135,77,138,106,158,243,48,87,40}, + {209,108,157,87,217,185,241,67,140,38,65,108,77,247,109,169,226,0,168,35,246,109,220,135,77,138,106,158,243,48,87,40}, + {209,108,157,87,217,185,241,67,140,38,65,108,77,247,109,169,226,0,168,35,246,109,220,135,77,138,106,158,243,48,87,40}, + {209,108,157,87,217,185,241,67,140,38,65,108,77,247,109,169,226,0,168,35,246,109,220,135,77,138,106,158,243,48,87,40}, + {209,108,157,87,217,185,241,67,140,38,65,108,77,247,109,169,226,0,168,35,246,109,220,135,77,138,106,158,243,48,87,40}, + {65,15,235,90,165,23,55,202,122,21,115,134,135,213,129,92,121,19,17,181,54,134,148,118,57,194,144,32,68,24,130,40}, + {65,15,235,90,165,23,55,202,122,21,115,134,135,213,129,92,121,19,17,181,54,134,148,118,57,194,144,32,68,24,130,40}, + {65,15,235,90,165,23,55,202,122,21,115,134,135,213,129,92,121,19,17,181,54,134,148,118,57,194,144,32,68,24,130,40}, + {65,15,235,90,165,23,55,202,122,21,115,134,135,213,129,92,121,19,17,181,54,134,148,118,57,194,144,32,68,24,130,40}, + {109,138,207,247,64,117,107,238,187,28,24,80,125,89,55,137,19,82,117,58,74,123,10,248,234,235,140,156,99,60,63,64}, + {109,138,207,247,64,117,107,238,187,28,24,80,125,89,55,137,19,82,117,58,74,123,10,248,234,235,140,156,99,60,63,64}, + {109,138,207,247,64,117,107,238,187,28,24,80,125,89,55,137,19,82,117,58,74,123,10,248,234,235,140,156,99,60,63,64}, + {109,138,207,247,64,117,107,238,187,28,24,80,125,89,55,137,19,82,117,58,74,123,10,248,234,235,140,156,99,60,63,64}, + {109,138,207,247,64,117,107,238,187,28,24,80,125,89,55,137,19,82,117,58,74,123,10,248,234,235,140,156,99,60,63,64}, + {109,138,207,247,64,117,107,238,187,28,24,80,125,89,55,137,19,82,117,58,74,123,10,248,234,235,140,156,99,60,63,64}, + {109,138,207,247,64,117,107,238,187,28,24,80,125,89,55,137,19,82,117,58,74,123,10,248,234,235,140,156,99,60,63,64}, + {109,138,207,247,64,117,107,238,187,28,24,80,125,89,55,137,19,82,117,58,74,123,10,248,234,235,140,156,99,60,63,64}, + {109,138,207,247,64,117,107,238,187,28,24,80,125,89,55,137,19,82,117,58,74,123,10,248,234,235,140,156,99,60,63,64}, + {109,138,207,247,64,117,107,238,187,28,24,80,125,89,55,137,19,82,117,58,74,123,10,248,234,235,140,156,99,60,63,64}, + {2,4,227,41,22,217,16,242,153,36,17,149,21,122,112,241,172,35,16,124,233,123,240,67,172,231,103,196,30,180,63,123}, + {2,4,227,41,22,217,16,242,153,36,17,149,21,122,112,241,172,35,16,124,233,123,240,67,172,231,103,196,30,180,63,123}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {136,163,126,187,77,21,125,112,229,232,232,195,194,74,226,127,55,149,208,19,158,134,22,89,225,31,185,184,35,162,25,91}, + {136,163,126,187,77,21,125,112,229,232,232,195,194,74,226,127,55,149,208,19,158,134,22,89,225,31,185,184,35,162,25,91}, + {136,163,126,187,77,21,125,112,229,232,232,195,194,74,226,127,55,149,208,19,158,134,22,89,225,31,185,184,35,162,25,91}, + {136,163,126,187,77,21,125,112,229,232,232,195,194,74,226,127,55,149,208,19,158,134,22,89,225,31,185,184,35,162,25,91}, + {136,163,126,187,77,21,125,112,229,232,232,195,194,74,226,127,55,149,208,19,158,134,22,89,225,31,185,184,35,162,25,91}, + {136,163,126,187,77,21,125,112,229,232,232,195,194,74,226,127,55,149,208,19,158,134,22,89,225,31,185,184,35,162,25,91}, + {136,163,126,187,77,21,125,112,229,232,232,195,194,74,226,127,55,149,208,19,158,134,22,89,225,31,185,184,35,162,25,91}, + {136,163,126,187,77,21,125,112,229,232,232,195,194,74,226,127,55,149,208,19,158,134,22,89,225,31,185,184,35,162,25,91}, + {4,60,159,148,140,4,91,54,247,97,13,166,37,139,55,207,203,171,12,83,188,81,88,119,110,36,233,70,202,224,137,84}, + {4,60,159,148,140,4,91,54,247,97,13,166,37,139,55,207,203,171,12,83,188,81,88,119,110,36,233,70,202,224,137,84}, + {208,178,249,55,16,189,207,176,231,55,81,212,146,150,15,170,230,58,26,147,125,3,171,100,93,198,10,185,34,241,199,78}, + {208,178,249,55,16,189,207,176,231,55,81,212,146,150,15,170,230,58,26,147,125,3,171,100,93,198,10,185,34,241,199,78}, + {208,178,249,55,16,189,207,176,231,55,81,212,146,150,15,170,230,58,26,147,125,3,171,100,93,198,10,185,34,241,199,78}, + {208,178,249,55,16,189,207,176,231,55,81,212,146,150,15,170,230,58,26,147,125,3,171,100,93,198,10,185,34,241,199,78}, + {208,178,249,55,16,189,207,176,231,55,81,212,146,150,15,170,230,58,26,147,125,3,171,100,93,198,10,185,34,241,199,78}, + {208,178,249,55,16,189,207,176,231,55,81,212,146,150,15,170,230,58,26,147,125,3,171,100,93,198,10,185,34,241,199,78}, + {208,178,249,55,16,189,207,176,231,55,81,212,146,150,15,170,230,58,26,147,125,3,171,100,93,198,10,185,34,241,199,78}, + {208,178,249,55,16,189,207,176,231,55,81,212,146,150,15,170,230,58,26,147,125,3,171,100,93,198,10,185,34,241,199,78}, + {208,178,249,55,16,189,207,176,231,55,81,212,146,150,15,170,230,58,26,147,125,3,171,100,93,198,10,185,34,241,199,78}, + {208,178,249,55,16,189,207,176,231,55,81,212,146,150,15,170,230,58,26,147,125,3,171,100,93,198,10,185,34,241,199,78}, +} ; + +static const unsigned char precomputed_nP_montgomery25519_n[precomputed_nP_montgomery25519_NUM][crypto_nP_SCALARBYTES] = { + {22,165,108,86,5,154,20,29,152,42,38,184,15,197,6,22,9,228,189,48,3,19,228,73,57,251,178,27,117,180,121,83}, + {139,146,167,138,83,58,254,190,251,60,110,156,52,211,217,116,28,175,54,171,72,205,88,250,162,123,91,36,201,104,201,225}, + {40,99,197,149,12,76,46,216,65,163,184,95,88,169,52,102,10,143,162,20,164,177,134,75,36,187,91,135,65,113,164,111}, + {249,136,238,59,164,86,241,133,205,15,12,226,199,113,49,1,247,239,150,87,31,12,54,21,210,187,99,46,64,166,182,166}, + {45,15,68,93,105,161,236,142,132,222,64,65,61,38,44,243,32,161,134,170,84,232,175,213,242,206,236,93,30,166,38,12}, + {66,162,214,17,77,227,115,67,248,216,210,73,216,96,172,93,126,63,38,233,228,89,232,80,113,127,88,112,85,247,241,224}, + {176,167,216,65,10,75,148,78,76,151,92,161,168,237,252,14,170,191,18,24,113,151,192,59,92,204,29,110,25,193,162,76}, + {190,147,100,101,77,151,179,249,20,102,182,218,161,187,38,207,142,126,195,32,205,249,96,90,162,80,63,226,98,120,239,127}, + {147,215,107,156,104,176,12,226,26,128,179,131,210,202,169,59,227,81,62,36,35,82,151,139,126,209,74,57,26,207,219,102}, + {132,175,87,38,2,127,24,123,10,20,230,220,70,101,14,168,26,154,32,108,78,93,106,112,2,147,7,146,149,82,157,35}, + {193,95,146,115,121,195,161,67,226,160,12,126,178,128,86,146,245,113,187,78,36,100,116,199,49,41,122,79,39,152,203,40}, + {236,45,18,11,37,163,223,201,31,238,132,192,1,225,170,91,70,220,130,111,139,208,93,86,211,22,147,29,9,165,75,251}, + {214,148,177,62,22,252,2,219,156,203,249,78,135,68,219,13,25,181,42,250,161,197,21,221,181,140,175,242,30,162,164,254}, + {19,146,48,164,180,234,202,31,98,230,250,183,198,75,6,104,144,119,247,32,46,71,235,138,229,32,112,138,58,243,13,152}, + {40,60,147,152,199,95,6,38,58,248,50,106,237,28,163,224,234,179,168,129,118,218,213,122,233,59,115,10,208,154,53,139}, + {2,222,22,131,160,78,116,188,224,216,251,122,243,253,84,123,180,252,82,233,141,218,42,150,213,250,32,17,174,233,198,144}, + {128,119,130,105,236,245,3,235,114,211,107,56,5,89,175,50,3,46,15,154,32,145,30,229,124,32,44,50,136,214,58,70}, + {76,10,122,92,95,60,108,66,87,202,172,123,231,241,121,153,60,13,209,184,200,16,84,74,62,81,89,106,177,149,201,7}, + {145,52,243,43,154,181,28,84,69,217,127,105,124,26,144,86,194,239,44,38,126,15,220,245,35,24,159,43,124,97,207,182}, + {146,211,172,10,196,116,198,246,17,89,234,39,110,19,252,7,180,188,59,196,241,55,208,72,179,169,75,88,153,141,37,3}, + {212,156,146,156,127,229,232,48,160,29,227,173,107,76,56,36,21,111,10,90,192,138,249,203,182,138,92,200,128,190,180,32}, + {238,205,118,104,224,32,1,124,103,246,230,131,211,47,8,131,118,55,85,122,152,0,26,90,147,81,190,53,208,236,202,243}, + {184,255,235,31,96,215,85,15,110,246,97,134,39,210,12,132,239,67,247,243,236,62,204,71,15,198,95,132,56,102,223,48}, + {176,21,36,69,234,239,12,133,189,95,127,247,243,129,176,233,252,210,8,4,62,179,45,71,132,151,131,142,107,226,149,82}, + {197,131,147,67,59,184,171,62,161,63,145,185,219,190,36,179,208,35,161,239,97,250,147,78,155,122,131,84,222,20,255,57}, + {220,255,225,12,119,108,43,211,239,127,106,206,117,125,148,215,84,165,157,177,185,39,226,94,196,90,235,111,149,251,106,228}, + {1,28,90,119,160,181,243,45,18,11,199,48,127,45,242,31,193,80,42,66,154,199,187,183,101,84,43,245,158,152,45,188}, + {128,211,202,5,133,44,165,24,11,106,41,213,148,126,225,3,196,79,227,38,11,161,243,167,11,73,135,245,143,32,105,241}, + {105,78,213,136,250,153,54,196,78,209,104,98,206,228,99,111,100,117,226,107,188,69,131,53,250,81,161,57,154,75,186,86}, + {103,233,237,136,26,9,199,182,184,122,105,253,11,251,200,159,239,173,81,83,253,65,193,123,246,147,153,39,103,241,131,206}, + {88,208,32,95,60,24,182,214,242,35,2,43,181,126,241,232,103,169,202,71,248,100,223,15,81,170,105,233,181,20,139,143}, + {251,163,38,67,159,49,110,10,31,29,115,131,183,15,141,31,33,127,239,142,94,23,75,0,189,146,169,229,4,13,46,20}, + {99,8,10,186,138,69,61,254,102,60,148,169,218,139,116,20,156,161,166,38,77,146,150,224,159,120,161,205,114,242,117,201}, + {173,229,74,44,190,251,221,217,123,144,158,53,116,65,212,153,140,78,191,166,177,29,200,208,116,177,250,141,151,172,255,18}, + {86,113,216,237,144,237,27,77,43,86,221,218,78,165,92,68,2,121,158,174,144,41,197,225,133,57,198,150,193,205,31,80}, + {253,78,2,197,246,2,80,67,175,244,59,34,195,228,158,234,134,91,114,225,55,146,120,105,181,188,229,205,129,46,176,76}, + {100,157,37,78,181,39,219,183,230,127,78,28,20,217,129,180,250,127,193,234,24,210,28,32,124,140,0,239,47,98,237,54}, + {118,77,87,240,2,224,102,178,26,241,208,238,205,43,49,10,248,202,177,174,221,204,149,132,117,236,242,182,0,197,71,99}, + {65,15,32,20,53,133,12,74,45,16,232,61,190,241,108,142,219,107,165,43,166,77,224,0,143,238,111,108,78,188,83,189}, + {148,190,255,45,219,178,118,248,201,115,191,247,159,237,100,82,206,92,216,227,195,56,214,22,93,175,182,124,241,116,21,197}, + {195,90,245,191,118,127,212,249,167,243,171,178,54,241,180,206,227,159,217,21,10,140,196,140,68,80,151,15,68,176,89,190}, + {187,110,3,156,243,58,23,69,63,43,126,198,25,232,244,117,90,198,194,216,156,226,210,73,183,27,14,37,47,227,115,7}, + {83,201,187,156,49,162,122,98,244,64,232,65,97,99,249,20,112,35,197,48,214,75,215,12,58,113,197,148,113,214,183,52}, + {216,225,212,157,91,85,59,235,154,67,45,114,168,180,42,127,197,112,107,19,206,209,121,58,84,128,9,85,201,218,145,12}, + {213,147,100,238,218,244,221,153,119,214,125,130,158,51,183,19,100,226,158,224,124,214,84,217,214,5,100,138,151,82,47,113}, + {162,66,132,16,45,177,133,232,174,4,192,131,107,32,178,62,173,98,230,51,26,75,146,57,50,234,195,185,78,252,166,122}, + {108,47,222,232,210,191,39,56,170,87,9,43,52,219,179,129,140,92,177,75,218,9,219,168,101,130,70,60,50,158,31,182}, + {46,81,149,149,39,21,251,100,137,131,130,206,145,167,225,73,16,83,211,60,37,120,156,59,54,63,12,239,157,17,84,250}, + {73,75,142,5,29,149,53,179,200,42,206,120,189,172,169,234,155,245,32,16,189,242,246,199,228,216,79,193,21,149,73,11}, + {77,142,218,116,40,190,158,142,14,25,103,22,220,112,238,115,106,208,60,113,132,11,139,211,134,73,184,101,247,197,94,92}, + {30,227,78,104,84,81,163,164,213,29,187,243,170,68,117,193,9,81,235,137,157,206,4,218,77,29,188,210,29,124,49,251}, + {142,225,151,172,17,225,127,68,154,120,49,210,16,84,196,235,13,86,29,77,208,152,52,147,1,64,149,163,99,12,19,231}, + {212,34,94,235,200,193,0,184,101,187,23,99,253,170,8,165,176,93,221,119,178,52,105,186,227,109,125,247,157,129,161,28}, + {66,185,1,82,139,99,252,182,220,250,204,91,12,232,235,41,29,21,190,254,183,189,74,31,4,12,67,189,37,68,172,221}, + {29,139,208,144,158,44,163,1,154,204,136,129,249,124,170,119,165,192,236,183,170,69,227,92,93,168,183,102,236,70,132,35}, + {201,38,160,195,92,79,81,7,153,46,160,11,225,87,6,177,229,123,232,181,40,91,68,106,252,81,130,223,73,157,105,86}, + {197,251,119,136,36,212,2,98,147,53,96,203,69,110,178,248,42,129,249,180,77,223,221,240,247,101,119,199,240,147,174,59}, + {117,58,35,111,63,75,58,219,24,188,41,38,213,60,56,25,107,40,249,28,25,194,92,106,2,201,194,172,55,240,143,88}, + {76,75,16,137,188,138,139,186,248,43,22,143,182,126,58,197,103,73,165,66,85,12,234,199,46,110,80,174,76,163,47,59}, + {53,245,55,25,59,19,52,104,12,190,154,155,254,60,211,10,173,59,255,119,78,185,214,240,80,140,246,173,40,214,178,31}, + {95,123,103,87,5,178,10,135,206,161,95,233,75,102,103,198,205,232,37,55,209,52,254,26,201,114,42,28,28,52,229,250}, + {212,103,173,234,110,130,170,202,238,170,113,83,237,70,174,165,128,137,208,112,166,62,58,119,136,16,92,2,42,246,113,235}, + {37,37,206,228,45,61,199,89,10,17,7,249,133,9,82,105,39,44,59,174,252,120,185,49,25,36,174,51,102,101,30,42}, + {23,50,2,94,118,21,204,94,239,46,9,3,10,238,121,200,247,28,126,236,204,216,61,30,175,166,142,170,88,128,44,182}, + {213,168,128,89,134,56,190,212,254,149,134,166,70,229,99,211,215,36,27,134,65,78,24,151,38,28,67,38,44,67,165,213}, + {179,97,78,242,114,30,10,144,56,149,221,128,190,241,18,143,147,199,4,189,121,234,72,175,18,209,41,0,95,222,34,58}, + {13,74,52,214,90,233,227,224,221,209,189,31,98,134,79,12,20,205,239,229,202,59,161,241,208,66,161,8,230,48,104,231}, + {199,15,246,104,121,68,176,114,148,63,133,234,196,214,43,48,37,221,32,76,238,144,186,125,120,124,75,164,245,223,232,123}, + {242,0,246,18,121,63,165,228,66,126,192,196,235,199,37,199,3,168,187,101,2,146,35,226,198,233,122,105,81,139,29,82}, + {172,34,177,175,150,29,34,180,200,84,157,182,242,243,43,39,147,247,92,183,210,61,20,129,117,211,27,208,5,235,153,176}, + {159,227,167,216,244,16,147,38,173,141,121,182,83,21,236,80,132,102,92,154,166,71,149,127,117,125,4,24,33,63,142,189}, + {175,143,152,210,222,255,216,27,191,206,9,31,49,72,30,207,225,250,90,47,96,110,131,145,55,57,113,118,107,27,83,107}, + {107,186,160,142,195,202,118,52,209,113,10,53,105,99,156,228,1,98,117,197,252,194,43,191,179,77,159,99,106,32,14,129}, + {237,61,58,130,13,85,224,251,35,94,212,78,203,235,201,20,34,129,69,102,214,79,138,98,123,157,67,82,14,64,80,174}, + {182,75,243,148,4,128,244,221,155,58,207,252,40,150,126,7,167,21,179,216,143,122,136,187,36,11,217,148,104,183,162,160}, + {243,198,119,37,239,8,52,57,150,12,13,205,198,171,130,161,99,22,239,72,48,151,65,200,41,169,247,63,119,148,130,170}, + {59,221,34,203,249,204,78,247,89,11,106,78,176,234,184,64,48,248,19,152,166,49,37,109,200,188,112,187,224,180,92,175}, + {196,142,88,86,120,128,248,216,203,143,30,145,212,88,8,226,44,209,237,51,95,0,37,209,222,37,184,14,51,238,143,113}, + {246,50,136,243,85,168,3,233,189,68,221,90,81,189,140,213,160,226,230,85,65,61,248,106,74,191,103,228,116,69,59,59}, + {72,231,186,167,16,158,213,224,231,195,162,8,119,71,123,14,249,87,11,30,84,163,123,174,230,11,109,83,61,178,182,15}, + {196,114,61,3,194,185,195,49,128,208,169,247,44,24,202,182,89,234,161,242,149,34,52,51,148,178,138,2,195,29,56,251}, + {232,254,230,246,132,207,176,119,157,251,89,221,134,63,243,78,83,175,53,239,86,105,93,51,88,4,173,177,32,124,144,193}, + {31,60,154,239,1,99,22,215,237,93,143,96,188,253,160,127,211,130,94,5,225,196,37,124,3,57,3,71,4,241,231,15}, + {232,59,52,197,225,94,168,91,231,73,162,9,196,84,83,9,115,91,228,28,110,247,129,120,199,247,248,114,2,161,167,146}, + {66,171,64,207,81,72,227,218,155,228,231,169,174,118,47,75,92,9,36,200,119,200,153,240,214,245,84,125,0,11,90,137}, + {251,203,92,151,139,124,57,59,173,109,164,85,93,77,202,88,44,76,10,57,85,66,182,43,163,115,122,239,140,82,226,13}, + {37,177,125,17,181,23,36,116,112,172,138,193,110,33,2,198,112,237,96,15,244,166,4,191,129,237,85,244,100,105,65,83}, + {160,194,66,170,188,109,55,145,134,247,234,198,159,74,206,216,28,240,81,111,79,54,182,197,178,15,33,34,44,190,194,210}, + {88,64,1,35,44,133,219,142,181,211,0,49,193,178,129,99,210,8,68,62,157,47,152,209,255,43,234,157,47,157,220,69}, + {198,130,248,4,101,0,28,58,140,67,122,32,79,157,187,169,88,64,24,185,85,96,94,28,162,26,203,99,157,170,13,224}, + {138,118,50,4,97,30,223,67,133,227,178,230,148,132,25,72,174,35,177,140,212,86,244,251,114,81,166,39,66,105,57,204}, + {69,229,130,138,60,156,82,143,20,25,212,170,17,117,206,159,105,196,250,105,245,227,20,236,205,129,92,190,32,22,203,57}, + {143,55,48,87,112,53,12,169,191,131,44,139,63,7,152,58,172,14,127,193,96,112,246,78,28,218,220,172,164,124,33,109}, + {233,7,88,169,245,138,136,155,68,93,31,123,215,120,20,114,152,0,25,64,65,69,245,208,239,35,197,64,79,172,241,2}, + {61,101,52,96,193,219,34,197,56,228,8,41,247,55,20,132,35,123,168,137,255,18,94,150,60,94,124,47,23,172,16,155}, + {202,160,109,22,187,18,114,244,108,11,254,168,103,181,204,123,239,226,125,136,152,139,92,10,115,223,130,70,56,224,173,192}, + {19,22,170,41,57,196,167,197,237,159,108,72,100,236,202,254,165,39,22,31,150,255,39,145,145,109,234,73,190,112,233,226}, + {250,207,235,85,195,176,210,21,49,226,14,28,243,119,217,108,68,70,135,148,114,230,134,229,39,172,0,0,48,80,97,214}, + {171,155,199,168,248,84,62,38,61,251,253,20,229,129,247,173,217,81,240,145,14,20,90,23,134,78,232,212,51,34,250,172}, + {216,66,150,88,66,14,93,184,117,133,100,210,116,16,39,29,158,140,14,79,195,252,81,101,222,179,28,201,66,97,137,95}, + {126,10,81,72,98,92,102,101,31,240,58,127,17,123,117,166,91,170,166,84,188,34,154,208,46,251,14,87,0,105,114,47}, + {10,131,96,200,92,222,33,20,40,227,105,197,27,52,94,103,254,50,55,208,121,2,232,214,99,15,32,20,15,43,222,109}, + {245,128,192,158,84,249,137,57,221,154,202,22,214,133,39,248,114,73,117,202,58,176,43,180,136,84,106,233,196,76,47,60}, + {86,132,7,229,208,131,24,182,237,39,205,5,254,76,56,75,71,195,212,224,168,179,128,128,199,239,9,175,235,190,218,12}, + {218,116,75,114,172,230,16,193,163,154,126,185,187,254,154,213,18,237,33,147,209,222,139,84,80,198,201,142,171,183,9,178}, + {102,244,58,119,155,31,176,155,201,67,186,91,94,48,167,170,255,129,116,151,167,203,173,120,226,156,230,70,180,187,160,129}, + {48,124,248,1,229,78,90,159,144,127,179,25,138,145,171,159,139,209,42,221,103,134,165,156,190,149,2,186,49,191,106,198}, + {127,168,222,138,187,89,94,132,67,191,183,6,49,48,33,163,188,38,86,77,26,121,155,25,71,23,137,248,57,15,9,37}, + {29,96,25,19,112,147,141,120,188,41,78,222,44,150,121,75,69,175,171,106,40,52,87,126,121,16,126,87,23,36,150,140}, + {107,93,211,155,221,173,12,104,216,40,219,59,4,41,87,244,86,208,62,135,204,236,147,28,221,9,196,79,1,84,193,178}, + {134,208,252,118,56,61,27,237,20,246,149,81,237,237,113,234,136,14,30,201,171,146,132,221,168,115,237,104,160,183,135,222}, + {75,114,85,162,109,230,214,121,39,165,181,96,16,182,162,72,61,8,9,52,189,26,92,30,158,109,130,167,215,80,130,122}, + {167,187,243,125,206,236,2,177,69,39,27,152,40,227,228,231,28,216,46,12,238,71,36,195,154,40,15,179,66,180,77,245}, + {244,175,1,128,188,72,149,246,181,16,184,225,132,244,229,128,85,193,26,150,57,165,199,139,193,154,79,158,200,163,180,67}, + {130,235,58,201,21,190,167,80,54,37,71,222,197,100,193,93,169,199,76,141,191,166,181,1,89,8,197,71,71,185,112,226}, + {122,58,111,170,110,97,174,165,185,228,229,99,23,86,80,121,81,137,76,171,44,133,24,21,47,189,44,142,110,203,172,228}, + {138,90,118,69,204,231,142,73,87,186,169,126,23,144,77,150,22,85,129,155,224,213,218,29,206,88,136,173,148,187,212,48}, + {143,5,129,132,16,165,68,26,217,213,183,2,61,160,235,94,97,160,134,98,96,79,204,206,51,31,96,40,42,248,139,74}, + {92,243,79,38,222,93,146,249,0,77,52,32,178,24,251,60,104,5,10,117,211,94,109,59,250,54,153,231,102,60,234,71}, + {0,69,224,111,143,3,121,60,218,111,61,191,244,207,154,238,43,179,95,164,194,49,71,196,224,76,62,140,76,137,174,79}, + {165,25,173,168,70,166,223,122,78,153,39,69,250,162,177,233,203,26,79,231,92,0,158,9,116,19,14,193,175,27,150,117}, + {251,191,130,168,64,230,88,54,22,53,35,177,3,197,33,239,188,60,216,140,88,186,126,206,1,97,131,2,250,177,194,86}, + {50,82,191,214,169,252,155,195,155,212,255,127,87,214,19,237,14,27,139,171,142,23,34,74,60,136,88,220,116,122,30,67}, + {211,246,247,134,90,237,209,205,238,198,243,113,12,34,103,183,150,113,189,173,254,100,88,246,192,98,123,82,70,180,97,180}, + {11,45,66,197,85,116,154,149,65,54,212,30,20,171,189,126,107,236,184,213,194,189,199,3,122,186,156,36,49,221,75,243}, + {252,28,130,205,43,35,198,203,94,180,183,172,82,160,235,193,237,31,103,189,152,231,44,91,251,64,191,27,75,254,228,13}, + {150,106,51,130,110,109,118,34,37,58,101,225,223,130,237,20,148,88,34,55,189,39,159,170,9,166,166,101,82,155,237,246}, + {43,209,137,54,200,206,214,128,133,138,253,245,34,243,159,124,17,121,12,21,147,118,119,165,74,156,74,124,213,9,98,85}, + {121,226,255,72,156,59,180,108,213,127,172,208,139,35,21,97,37,3,146,121,43,122,6,83,172,242,162,166,229,184,224,33}, + {37,245,188,137,193,18,34,79,126,77,72,53,114,255,161,70,96,9,222,4,230,187,65,70,14,30,3,171,235,169,146,107}, + {220,118,210,98,144,140,101,108,216,156,242,52,155,146,195,50,23,251,15,92,0,242,114,115,202,176,242,122,2,187,113,48}, + {253,149,141,117,207,5,64,150,242,46,102,247,223,91,126,103,57,116,158,116,114,97,178,55,90,175,151,93,117,62,82,113}, + {106,22,136,121,130,169,103,161,11,79,65,78,207,152,232,123,241,32,124,101,14,77,170,5,120,175,47,189,82,25,245,59}, + {46,91,106,192,105,223,139,150,210,41,132,178,108,215,36,18,140,88,150,236,62,245,186,175,145,96,199,179,208,55,177,25}, + {197,250,34,65,211,83,13,97,5,122,131,88,133,115,37,233,133,115,96,127,218,231,122,121,42,85,169,187,2,171,159,59}, + {208,150,131,16,28,148,160,13,192,151,253,190,173,231,141,194,53,102,254,194,194,112,120,134,243,84,110,118,115,207,195,120}, + {42,70,117,8,76,143,126,151,191,183,111,41,170,242,171,213,73,232,57,158,199,163,13,0,109,71,169,249,154,34,155,123}, + {106,196,36,245,76,90,224,99,36,155,245,98,7,214,46,253,219,218,171,59,103,128,70,171,122,91,191,15,48,166,153,158}, + {170,215,102,187,235,20,108,177,84,222,40,135,127,131,20,164,228,65,29,220,23,40,59,98,61,249,215,13,202,142,94,189}, + {93,207,41,255,72,7,206,47,11,49,51,239,106,43,171,199,138,46,30,223,144,39,144,75,5,67,212,101,140,159,104,219}, + {44,175,48,213,87,226,33,200,167,239,38,114,103,117,42,90,228,64,131,219,79,3,234,177,48,0,9,125,56,205,68,79}, + {250,114,79,178,120,16,130,147,4,253,171,208,74,42,200,186,236,25,149,137,139,159,200,123,139,203,55,136,171,168,21,138}, + {31,239,111,66,250,165,152,62,61,1,47,9,134,219,166,127,174,8,170,206,103,158,99,99,235,95,103,58,250,213,120,252}, + {207,180,26,162,204,78,145,211,202,192,124,41,122,233,177,209,8,206,161,10,221,180,103,101,250,82,217,23,179,253,193,149}, + {222,88,162,11,91,133,48,186,207,86,217,44,216,141,164,95,29,80,166,16,139,0,83,201,246,29,109,78,238,68,125,157}, + {221,101,130,221,166,124,17,245,238,25,219,91,108,177,232,130,230,79,35,99,5,36,16,61,78,125,124,70,149,231,244,69}, + {114,119,121,98,175,166,37,124,162,211,162,97,85,10,67,79,143,254,46,16,63,219,181,76,202,121,194,114,32,13,109,169}, + {24,51,236,148,11,64,78,154,213,179,159,4,115,141,182,28,102,173,100,144,166,129,16,215,174,117,165,170,180,196,209,236}, + {84,208,129,137,9,251,193,7,81,120,32,66,84,245,156,199,34,180,154,249,92,2,166,86,165,248,77,132,252,142,53,69}, + {85,231,154,122,37,75,13,68,171,35,254,137,72,128,41,109,154,241,119,182,82,180,64,165,188,230,147,88,161,154,82,35}, + {235,152,251,182,2,242,135,168,32,166,19,246,233,172,27,50,121,44,12,173,182,131,17,187,88,155,43,151,159,53,48,239}, + {61,89,240,133,62,242,120,222,117,147,198,216,16,175,16,247,248,60,11,128,6,172,143,37,36,0,216,122,160,69,173,237}, + {231,146,78,235,9,155,237,211,193,96,61,198,102,79,190,77,54,114,95,224,213,45,193,36,145,253,126,52,11,186,208,182}, + {238,56,67,46,144,112,69,253,133,9,217,170,118,242,86,6,52,125,195,122,41,60,158,201,133,200,209,134,204,181,238,205}, + {225,31,186,168,194,238,124,228,39,238,102,175,30,210,63,137,5,69,69,238,72,90,235,71,120,124,68,174,100,168,208,14}, + {129,142,251,243,96,133,162,230,82,12,236,18,159,228,13,83,177,127,202,40,226,42,20,212,223,131,93,100,186,166,252,46}, + {179,223,101,162,71,212,155,246,157,206,93,80,72,143,130,63,213,149,244,37,215,193,98,58,109,142,63,23,177,0,200,36}, + {42,103,110,219,153,124,6,226,248,13,38,209,54,17,138,229,63,108,43,253,67,156,23,218,80,216,42,141,83,202,51,52}, + {79,20,219,25,137,225,165,76,146,77,39,38,68,101,196,110,27,120,16,166,225,132,241,144,51,252,47,72,213,55,167,64}, + {139,212,131,124,25,171,27,175,3,6,47,161,15,105,79,142,37,119,173,48,58,0,91,57,41,8,131,142,248,37,47,75}, + {125,125,27,37,31,143,135,2,194,130,146,95,233,172,2,232,137,39,16,69,209,12,149,214,71,224,189,87,96,39,17,71}, + {142,204,93,4,172,58,216,97,62,202,142,173,63,55,164,188,30,124,53,110,251,57,132,219,196,226,243,51,248,253,196,211}, + {7,221,73,126,146,254,126,111,117,142,17,31,237,8,0,68,160,154,88,55,112,212,116,44,71,109,134,79,44,120,112,37}, + {89,182,12,218,220,230,207,116,32,5,79,25,13,197,126,173,15,180,195,30,11,214,14,6,17,153,44,74,14,173,128,126}, + {217,221,54,187,59,23,198,164,60,160,219,64,248,168,85,207,97,19,155,220,128,246,48,137,142,49,224,90,61,44,219,101}, + {60,198,119,4,157,93,21,50,218,97,77,98,108,198,219,180,152,246,168,214,106,159,198,239,33,173,152,200,50,159,237,195}, + {92,165,88,239,5,221,61,225,13,149,25,23,82,2,96,1,119,0,65,173,221,78,4,206,227,5,131,64,13,203,112,190}, + {178,94,69,233,220,50,222,130,166,39,181,69,40,191,116,203,151,218,24,220,132,222,107,236,239,184,160,139,114,252,191,162}, + {67,255,22,107,137,168,56,244,159,61,114,162,124,161,245,73,222,225,62,157,114,138,222,7,97,23,219,193,201,28,176,56}, + {21,84,254,236,239,46,126,131,224,60,237,210,58,234,219,65,146,237,251,203,220,41,72,103,157,160,236,158,3,232,217,187}, + {17,171,138,180,180,226,243,241,22,94,105,224,150,240,171,28,114,160,47,85,212,91,5,38,164,168,199,192,131,226,94,133}, + {6,39,247,97,135,82,216,158,152,20,244,9,181,230,238,170,16,172,62,95,173,73,50,245,208,31,251,156,87,215,92,47}, + {25,242,127,15,170,249,103,59,20,244,130,221,215,176,77,12,200,251,121,85,238,49,5,133,211,209,74,129,236,119,40,245}, + {72,33,171,71,44,102,239,175,64,120,46,56,198,235,52,96,62,96,164,43,133,198,102,111,54,57,59,182,139,177,48,199}, + {181,28,192,208,105,213,47,2,4,133,81,88,166,125,243,216,66,163,87,202,118,19,60,94,65,189,56,132,89,231,127,14}, + {199,222,5,120,20,88,209,212,97,81,22,238,251,127,179,251,163,181,229,18,135,154,246,23,200,177,133,115,91,247,242,198}, + {91,180,105,35,174,87,20,235,92,71,89,77,152,131,114,106,81,139,4,171,161,35,61,125,41,1,135,240,155,128,35,68}, + {163,155,152,213,111,119,210,187,202,72,84,68,58,114,229,197,92,7,41,68,56,71,147,109,91,123,234,102,149,237,244,28}, + {31,39,168,112,198,233,1,159,99,200,173,70,129,62,5,64,131,128,111,196,62,251,31,79,244,99,219,93,147,157,111,252}, + {198,138,197,237,159,88,193,153,162,71,205,235,65,200,206,228,241,64,162,9,214,117,17,219,108,249,215,220,64,177,203,133}, + {17,170,83,102,67,207,39,21,223,218,81,224,198,140,140,93,161,165,42,92,44,89,180,253,126,55,124,229,101,60,181,201}, + {224,117,38,103,132,218,166,77,3,18,108,50,74,125,235,120,160,25,251,25,99,195,7,219,75,45,19,2,234,159,96,204}, + {160,161,157,146,31,135,215,211,9,246,14,28,195,160,51,136,175,159,70,107,190,56,185,117,213,1,209,161,89,105,112,14}, + {208,146,223,0,10,130,154,248,2,157,61,204,147,5,204,21,114,250,40,205,43,8,80,214,5,101,127,169,30,178,53,137}, + {152,145,24,105,128,88,244,36,82,90,72,193,127,80,177,84,145,182,153,215,126,186,231,74,140,122,23,47,254,224,71,241}, + {236,46,171,186,89,186,197,73,226,9,254,112,75,50,158,49,127,66,222,169,84,255,105,114,38,49,220,154,73,219,213,229}, + {247,239,31,190,101,187,254,229,126,75,92,192,3,105,157,224,172,44,207,92,15,79,2,45,244,181,206,165,77,46,57,251}, + {90,45,40,212,48,116,157,8,31,149,17,162,168,8,80,160,222,248,234,103,130,82,113,71,231,32,77,51,157,127,251,13}, + {130,87,3,11,229,236,213,51,129,246,89,146,134,202,228,170,229,222,134,180,251,27,102,183,8,20,163,90,167,120,229,170}, + {166,19,206,199,245,88,224,186,251,104,76,239,137,187,207,75,4,51,252,191,42,203,27,202,90,39,104,174,176,53,155,147}, + {70,98,133,45,92,153,42,114,193,1,169,74,85,162,189,47,40,192,195,195,190,167,17,8,124,248,198,91,77,77,76,187}, + {53,132,199,81,11,201,113,109,199,84,160,219,185,187,62,46,149,38,234,25,16,44,80,51,20,218,85,206,242,143,193,229}, + {105,95,221,186,249,163,76,30,159,173,15,12,47,116,53,165,247,77,250,228,41,122,20,199,135,56,204,8,32,185,110,204}, + {185,65,102,155,86,42,66,137,198,133,133,100,74,67,77,176,139,40,147,143,72,105,62,87,7,119,145,45,181,120,204,120}, + {225,250,207,49,79,0,242,177,148,78,153,60,96,143,63,27,126,123,35,67,94,64,246,82,4,143,123,46,214,217,4,203}, + {205,134,235,203,124,126,159,19,10,114,85,61,128,28,54,139,148,212,84,221,41,170,135,244,16,248,51,220,233,21,148,142}, + {226,246,94,150,74,153,137,249,205,77,50,216,122,57,174,15,56,200,114,149,108,39,37,64,119,244,18,45,180,144,81,110}, + {7,253,193,58,175,41,205,115,33,166,243,153,184,10,43,46,177,68,128,214,230,75,53,63,110,205,14,138,28,4,170,122}, + {252,94,239,81,117,164,15,227,11,136,47,221,160,0,112,48,75,245,169,49,28,66,103,200,31,165,123,91,102,225,49,181}, + {253,137,9,247,203,124,24,46,218,175,229,53,181,209,246,137,119,4,163,65,141,102,147,90,89,107,249,125,59,39,181,176}, + {26,73,199,77,137,156,65,62,242,248,157,124,0,233,203,85,118,6,69,150,81,226,45,216,106,201,6,12,234,114,1,55}, + {245,75,186,86,169,16,76,178,243,176,11,204,175,254,84,179,94,169,63,28,176,221,142,93,220,117,199,161,227,2,11,151}, + {15,182,29,11,249,249,210,54,202,63,102,206,22,139,241,14,240,225,101,98,97,88,120,55,200,151,109,26,119,136,34,156}, + {24,113,214,137,60,212,159,0,197,103,163,201,179,148,131,59,203,28,179,9,203,249,187,135,0,163,200,149,208,20,23,253}, + {231,182,113,252,88,106,180,122,247,46,118,29,64,46,11,183,82,110,78,0,249,244,125,26,167,156,41,250,113,111,87,27}, + {21,73,182,113,25,32,183,230,191,199,180,51,101,33,170,156,139,80,203,154,58,155,82,74,52,96,158,247,238,207,150,235}, + {143,37,213,51,161,231,224,75,16,56,35,130,76,12,253,214,79,34,55,212,159,106,240,121,43,193,22,182,251,220,206,220}, + {1,212,157,103,232,159,234,223,107,249,58,63,187,122,154,71,215,115,105,125,123,13,216,158,238,87,62,1,147,150,74,91}, + {4,125,207,3,202,0,18,17,153,119,245,2,150,30,216,90,168,14,225,105,57,217,74,74,170,97,59,191,217,207,41,50}, + {217,196,76,61,125,89,107,15,75,92,77,43,108,217,85,154,247,0,143,2,74,98,132,4,233,82,51,186,107,119,248,217}, + {202,5,147,74,179,48,169,40,156,198,55,4,197,182,10,91,43,62,80,143,47,103,78,121,37,164,50,113,36,101,11,118}, + {48,54,85,129,231,252,147,229,224,143,247,165,134,246,63,179,227,248,71,165,201,19,59,229,18,76,197,48,38,161,152,200}, + {15,178,181,41,106,62,93,252,17,170,218,222,225,22,147,136,1,241,195,59,36,141,156,234,43,72,126,126,41,17,193,34}, + {140,20,116,65,40,144,224,107,218,207,103,120,233,230,200,36,235,153,213,2,165,191,132,50,23,197,154,210,54,80,227,225}, + {16,186,3,79,167,172,35,23,153,145,76,173,252,89,100,128,157,108,140,3,111,159,86,179,182,166,18,0,144,105,90,60}, + {138,115,96,4,71,205,43,171,21,152,153,99,190,18,34,162,183,121,231,19,180,164,138,104,80,104,207,183,2,217,179,210}, + {128,83,222,94,225,133,130,100,117,220,66,98,26,70,116,10,171,17,177,191,249,73,198,53,147,139,0,141,89,108,21,132}, + {86,250,18,0,104,153,243,165,197,139,139,226,90,121,113,11,56,40,253,53,174,168,237,82,165,31,245,32,206,93,96,189}, + {1,129,111,159,224,98,133,48,105,2,130,113,58,161,223,238,13,149,116,37,158,4,80,158,137,172,82,159,76,30,90,198}, + {22,25,157,191,182,145,141,114,11,227,34,104,72,192,36,19,221,45,137,85,89,83,163,40,16,141,176,151,27,155,53,98}, + {235,205,101,195,113,156,65,13,74,68,207,37,52,0,64,243,229,176,52,109,93,181,253,95,202,37,46,81,102,160,111,253}, + {30,172,238,224,197,130,196,220,34,173,118,170,81,36,14,91,149,82,226,167,147,33,88,60,66,39,33,177,134,78,205,127}, + {29,4,43,97,249,178,206,176,24,181,101,239,229,11,192,189,75,210,11,146,108,200,142,33,195,168,88,98,47,178,42,86}, + {187,188,55,105,117,127,48,88,219,168,140,162,236,164,142,130,39,125,143,134,233,2,241,216,207,11,210,25,49,121,237,100}, + {91,236,197,142,183,255,180,242,223,169,55,214,19,251,194,108,83,232,55,186,94,32,121,252,117,219,77,53,28,82,178,197}, + {249,121,227,0,220,61,220,130,163,234,166,135,156,84,185,240,222,192,240,251,42,89,37,174,250,67,204,200,124,5,208,74}, + {199,49,248,141,255,31,48,127,152,79,223,151,117,207,201,52,60,57,104,59,61,108,162,64,156,190,128,175,242,55,94,48}, + {93,221,22,55,195,227,161,174,147,211,145,19,79,172,208,253,119,134,208,36,107,5,8,20,150,167,236,214,248,239,5,159}, + {5,156,184,178,39,194,31,255,117,92,162,195,37,165,244,163,1,95,247,189,238,81,110,7,131,121,120,104,241,60,93,66}, + {242,199,99,179,152,3,130,123,89,46,201,162,154,42,255,238,249,39,148,248,119,195,64,7,88,245,92,103,176,127,246,246}, + {241,148,11,238,65,111,83,221,62,163,122,3,214,81,163,124,215,161,175,59,109,179,234,146,143,101,238,191,51,189,207,19}, + {252,183,195,196,181,28,177,17,120,12,14,179,208,173,153,181,207,112,70,87,86,106,193,54,242,158,69,84,146,24,2,249}, + {223,165,235,66,86,199,79,249,146,49,58,149,36,142,248,189,193,104,102,128,215,30,81,109,178,82,166,213,180,252,107,6}, + {160,206,225,52,77,80,51,243,156,109,3,151,189,102,95,154,232,34,76,174,61,53,134,144,181,241,50,76,253,127,95,104}, + {182,169,173,124,154,41,121,130,249,60,17,47,224,46,34,4,109,78,19,61,55,95,38,31,3,241,167,172,114,247,68,94}, + {141,243,62,246,228,126,164,138,215,42,211,203,59,98,231,37,182,36,20,225,114,183,104,237,62,66,102,136,42,216,171,71}, + {76,5,85,225,28,105,236,171,21,214,182,252,200,65,53,141,180,203,157,174,166,136,231,81,155,199,255,157,38,182,191,34}, + {171,140,216,125,246,116,155,154,112,37,101,190,158,206,239,245,50,123,181,160,210,63,64,181,69,108,17,204,227,57,22,67}, + {16,155,44,56,94,103,146,14,89,136,151,106,208,28,115,62,147,211,236,88,68,162,46,191,252,165,129,173,162,71,195,131}, + {76,1,174,177,42,93,230,196,214,123,172,212,69,19,229,229,112,172,129,42,103,14,236,234,193,218,233,22,211,213,16,1}, + {144,32,180,164,202,131,21,99,23,54,90,43,226,186,88,251,65,173,68,225,7,246,245,25,193,0,199,155,74,232,45,118}, + {236,169,210,206,173,249,102,74,90,138,129,27,92,33,164,217,136,98,132,201,254,183,12,196,82,156,127,152,143,155,135,192}, + {242,118,199,205,119,164,108,93,255,103,82,80,71,24,76,10,37,191,147,128,26,14,16,1,201,170,187,82,112,15,231,179}, + {123,159,170,137,125,249,79,117,52,118,158,61,65,244,43,10,156,31,198,161,153,173,129,5,130,173,150,248,49,217,8,227}, + {66,244,159,19,88,253,213,23,32,209,189,251,8,249,71,51,66,19,33,88,169,184,184,83,24,137,123,237,88,112,136,100}, + {105,32,136,160,60,155,175,45,48,161,226,173,0,138,143,225,238,198,72,214,85,185,77,134,223,35,233,234,148,169,7,121}, + {114,237,141,232,195,47,33,59,235,143,14,231,243,190,94,78,53,71,137,45,84,252,75,0,62,232,175,124,142,112,220,222}, + {209,15,156,222,4,222,189,121,131,58,205,56,210,159,113,238,70,35,148,1,65,130,208,50,53,177,126,156,112,17,10,106}, + {105,85,101,187,197,3,87,214,112,224,218,200,110,84,23,24,84,51,176,82,246,133,72,56,74,110,162,183,16,65,156,9}, + {255,30,104,119,178,60,91,121,220,185,35,46,37,16,253,178,135,28,160,129,123,119,167,118,87,3,6,74,16,25,171,167}, + {116,185,13,114,141,41,129,67,255,178,218,214,149,9,141,97,144,215,186,32,22,135,194,93,20,52,11,141,223,165,75,67}, + {250,93,251,149,137,50,222,108,176,129,27,24,187,95,27,248,51,94,232,229,55,90,171,191,160,85,183,86,23,6,224,128}, + {65,99,53,92,228,166,24,237,239,207,164,149,189,109,242,0,113,5,174,121,235,137,62,7,24,44,128,29,111,223,2,8}, + {147,175,202,105,252,90,225,232,240,127,173,129,198,217,39,91,13,202,235,161,2,63,4,105,31,248,88,122,189,14,202,217}, + {130,38,64,153,50,178,132,13,249,105,90,134,211,153,139,250,179,52,6,126,172,131,79,192,196,11,75,32,14,192,52,157}, + {160,100,121,66,86,16,225,47,180,132,98,217,222,58,98,233,242,189,70,72,24,109,180,168,134,12,202,37,38,186,241,243}, + {24,143,235,33,67,131,180,27,71,202,101,41,90,157,230,92,56,143,162,41,110,98,199,236,58,206,79,101,250,17,98,84}, + {227,49,81,31,220,251,248,247,148,58,181,157,82,126,45,220,192,245,253,208,243,173,42,250,105,251,200,201,25,149,246,50}, + {193,235,196,99,199,87,172,17,95,224,191,36,128,62,51,208,76,95,133,10,13,137,195,28,125,191,249,15,61,55,2,94}, + {89,236,77,222,176,64,70,44,184,182,164,93,227,248,251,30,209,123,23,82,78,124,19,21,52,41,227,132,216,223,196,216}, + {142,181,57,7,232,193,70,222,196,113,47,171,219,255,149,10,92,22,47,155,193,100,162,214,251,60,200,133,126,165,61,164}, + {128,176,62,75,113,107,246,234,120,66,247,56,41,217,30,167,80,190,150,146,17,193,11,247,74,235,142,53,223,132,110,26}, + {36,77,85,226,56,38,117,133,11,109,233,69,172,47,97,87,165,160,3,75,141,239,61,167,109,222,27,229,7,145,39,212}, + {124,10,75,235,100,213,226,134,158,190,52,54,191,184,24,122,19,241,103,46,31,244,18,11,112,159,61,204,212,171,148,77}, + {114,77,137,119,43,99,102,76,57,148,166,12,209,145,244,18,51,32,100,72,123,209,37,111,231,73,58,102,253,18,34,162}, + {98,41,196,71,7,230,103,174,63,255,108,213,119,236,171,19,162,180,162,134,224,35,65,176,113,107,250,148,124,143,127,33}, + {42,75,239,217,24,95,98,148,232,45,231,23,58,147,211,241,137,82,226,205,0,137,96,60,250,6,17,71,225,110,153,121}, + {5,32,48,98,160,151,211,105,47,139,190,68,135,114,76,139,230,135,88,1,28,202,107,153,140,154,79,162,154,105,231,217}, + {117,246,27,36,54,185,197,126,128,70,19,206,190,244,213,241,2,214,6,42,73,184,224,42,134,19,67,210,95,131,206,65}, + {127,56,48,91,234,196,208,190,82,145,55,146,222,16,9,128,161,66,197,177,237,132,255,64,248,2,201,114,190,1,253,140}, + {132,172,226,25,189,173,154,215,196,207,251,66,181,178,144,119,92,47,169,146,3,24,13,155,176,60,167,107,65,196,145,120}, + {103,96,224,34,32,32,4,192,29,59,69,42,12,161,242,208,65,31,166,128,221,191,253,253,209,190,200,141,126,51,100,190}, + {58,127,250,228,154,38,80,111,154,118,109,43,124,162,201,216,109,113,253,122,247,187,181,147,40,167,0,129,243,224,127,55}, + {222,142,62,16,49,39,57,171,168,42,148,96,163,45,1,9,98,82,32,250,131,253,106,61,28,238,182,254,185,100,104,183}, + {221,15,180,234,241,143,88,255,62,22,37,253,96,95,93,214,130,78,236,187,114,98,25,123,184,13,24,116,241,244,9,3}, + {139,232,90,130,109,54,160,143,19,93,33,62,239,86,106,141,212,170,67,203,91,227,33,162,207,68,209,31,55,222,213,61}, + {128,219,230,29,173,177,141,63,189,111,11,56,254,236,235,103,133,18,242,200,176,98,251,230,170,142,80,174,220,115,74,136}, + {205,52,231,62,162,59,157,180,143,65,237,10,155,182,225,131,84,77,97,169,54,21,134,141,114,74,99,57,55,14,160,150}, + {120,117,181,0,114,107,75,63,81,45,26,100,177,189,190,75,76,155,79,108,26,93,46,211,26,166,229,184,32,217,220,117}, + {217,184,164,88,62,54,210,17,153,249,234,177,206,234,187,1,173,27,4,169,47,206,63,97,199,12,146,88,111,217,78,65}, + {129,242,248,169,53,254,41,115,23,99,37,158,165,8,170,24,63,109,136,182,235,12,252,1,226,141,235,45,76,29,144,179}, + {204,176,178,17,32,215,206,10,207,12,78,92,119,191,189,237,111,57,21,219,243,225,101,99,132,103,153,131,44,57,99,194}, + {103,125,120,219,142,193,63,99,95,94,120,255,195,163,244,192,141,144,144,242,54,7,248,237,124,71,23,57,198,209,115,177}, + {6,229,131,13,74,195,162,9,2,228,150,154,123,93,113,203,82,225,206,134,33,190,195,16,138,7,140,6,165,142,200,248}, + {69,29,123,95,20,77,200,220,161,127,205,110,115,242,135,240,13,237,24,47,141,27,141,147,168,195,78,250,57,75,33,193}, + {56,76,151,133,96,85,108,66,115,196,191,219,109,219,122,25,202,81,94,248,63,77,42,51,36,139,236,237,20,60,17,48}, + {119,37,3,232,154,73,101,203,242,144,126,179,22,10,45,94,17,184,23,255,211,161,52,136,26,150,171,21,252,192,146,105}, + {185,89,159,240,55,61,227,236,79,54,134,247,113,119,201,223,61,57,176,52,178,107,76,248,195,183,218,70,2,173,201,75}, + {238,4,202,6,200,58,96,24,207,82,16,141,202,169,160,7,165,61,40,5,116,241,187,116,159,80,6,242,182,173,94,59}, + {101,222,223,26,206,156,204,185,76,95,32,117,10,126,86,35,35,87,27,95,11,25,168,243,204,196,231,23,141,222,245,4}, + {228,205,241,152,208,216,43,53,3,195,46,142,103,217,206,84,73,194,178,157,241,64,165,11,152,2,113,151,69,234,12,192}, + {153,8,207,112,220,24,154,208,124,64,209,151,219,203,20,87,3,185,38,62,238,27,69,114,86,102,36,245,54,109,70,217}, + {49,205,141,255,216,41,246,132,104,170,191,91,166,2,115,173,134,218,66,23,152,187,30,137,25,191,57,232,211,39,135,94}, + {173,94,114,153,255,15,146,241,23,12,151,123,87,7,174,47,165,162,164,136,62,36,54,15,9,138,189,230,124,181,208,104}, + {182,183,161,12,243,138,218,91,67,43,210,252,17,182,137,251,37,22,202,234,43,254,44,97,244,244,97,40,199,151,186,161}, + {183,164,111,106,254,186,133,112,217,52,220,7,24,172,132,172,170,68,251,154,140,38,240,10,204,87,79,34,55,162,159,103}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {235,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {235,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {236,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {236,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {238,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {238,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {239,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {239,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {216,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {216,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {217,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {217,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {218,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {218,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {219,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {219,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {220,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {220,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {197,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {197,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {198,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {198,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {199,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {199,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {200,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {200,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {201,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {201,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {178,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {178,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {179,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {179,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {180,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {180,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {181,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {181,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {182,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {182,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {159,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {159,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {160,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {160,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {161,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {161,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {162,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {162,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {163,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {163,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {140,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {140,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {141,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {141,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {142,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {142,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {143,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {143,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {144,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {144,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {121,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {121,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {122,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {122,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {123,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {123,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {124,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {124,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {125,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {125,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, +} ; + +static const unsigned char precomputed_nP_montgomery25519_p[precomputed_nP_montgomery25519_NUM][crypto_nP_POINTBYTES] = { + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {111,18,243,62,180,93,101,187,23,73,13,39,192,139,194,106,10,72,242,42,183,238,122,107,144,57,141,20,210,163,142,0}, + {224,235,122,124,59,65,184,174,22,86,227,250,241,159,196,106,218,9,141,235,156,50,177,253,134,98,5,22,95,73,184,0}, + {245,196,70,99,114,97,152,96,91,20,31,160,88,52,151,161,94,92,11,177,23,242,92,137,253,43,147,168,159,120,99,3}, + {38,232,149,143,194,178,39,176,69,195,244,137,242,239,152,240,213,223,172,5,211,198,51,57,177,56,2,136,109,83,252,5}, + {180,140,35,108,225,133,69,227,5,99,158,116,180,144,160,84,162,70,208,203,161,213,101,113,83,32,64,115,124,202,72,8}, + {95,70,199,15,156,222,195,114,220,234,120,29,41,57,178,200,195,111,57,87,200,244,18,3,131,83,38,147,255,157,82,11}, + {100,78,166,101,186,16,33,249,148,243,238,215,228,226,85,199,101,181,163,20,243,90,100,96,195,116,97,35,31,153,67,17}, + {216,45,32,54,238,248,211,160,133,246,29,225,4,154,119,36,23,185,121,58,169,66,254,145,201,141,179,170,190,62,54,18}, + {36,64,6,108,6,62,53,35,126,236,93,246,67,94,0,106,66,15,83,213,254,31,127,68,93,156,238,47,127,221,92,20}, + {148,214,197,89,82,44,90,188,128,24,185,102,86,13,225,157,32,231,77,115,186,232,140,218,184,193,239,49,124,231,169,21}, + {68,129,160,218,218,241,248,204,45,63,176,224,36,15,218,40,118,107,85,223,166,31,199,0,47,181,170,156,116,254,39,22}, + {207,108,156,64,182,29,155,51,168,111,164,225,193,194,145,89,21,77,220,193,35,3,222,175,89,78,123,87,130,50,248,22}, + {137,80,205,184,163,118,77,202,204,124,57,5,93,109,93,13,226,255,107,99,47,121,243,196,104,138,162,229,83,2,98,26}, + {34,240,10,243,6,229,25,22,251,207,81,236,92,210,208,177,233,177,0,228,234,100,198,50,208,115,10,189,11,213,7,32}, + {55,42,50,167,103,43,115,186,153,214,232,93,85,246,127,28,39,87,49,26,34,202,133,77,222,157,109,253,151,211,235,32}, + {35,194,4,145,228,170,52,36,136,247,152,246,231,250,199,161,157,68,105,95,235,110,137,99,98,244,73,208,83,37,109,35}, + {106,173,113,9,210,120,250,178,209,255,187,62,17,65,238,231,37,96,212,220,76,123,244,227,72,68,22,201,239,234,252,35}, + {69,46,183,255,198,153,158,240,122,231,14,3,68,224,88,41,255,150,5,100,114,25,47,223,131,156,7,132,91,115,13,36}, + {148,73,188,146,204,183,204,19,83,160,11,237,141,97,161,237,152,98,49,50,41,86,14,129,143,0,92,46,72,233,49,38}, + {165,184,205,223,247,7,80,140,96,73,134,57,123,193,114,229,182,148,182,23,189,138,186,90,244,253,92,62,29,75,227,38}, + {108,20,31,116,94,141,126,45,163,85,126,44,19,190,238,243,224,86,12,212,102,52,127,109,241,32,139,167,37,52,87,39}, + {26,98,96,48,105,236,129,197,157,34,71,126,66,69,87,108,146,182,197,41,180,14,89,76,92,46,119,230,190,58,177,46}, + {56,103,119,158,120,22,48,230,208,156,54,119,226,189,178,33,160,83,156,57,66,229,19,16,110,194,27,195,36,104,230,50}, + {148,163,155,168,115,30,231,224,48,18,225,45,29,95,43,203,221,69,199,158,140,41,162,221,127,99,184,43,182,49,191,52}, + {33,110,138,129,221,49,212,141,87,34,182,133,210,124,174,124,181,138,116,52,154,117,0,194,143,57,157,171,95,142,131,54}, + {16,14,168,202,146,235,104,175,47,76,126,143,2,68,12,74,128,54,65,154,82,43,146,59,129,187,98,222,21,120,161,57}, + {77,80,233,58,202,29,49,53,159,3,213,231,47,143,129,165,208,30,47,197,42,119,210,132,72,188,68,202,24,143,20,61}, + {247,9,183,167,211,71,178,197,159,211,252,106,164,133,217,230,19,245,215,29,92,240,192,129,163,60,151,149,102,219,251,61}, + {21,85,14,139,190,149,43,205,86,195,25,195,234,193,198,172,181,215,183,28,239,61,27,154,113,244,161,237,94,192,145,62}, + {2,179,55,63,101,158,203,81,211,253,4,244,143,91,239,184,216,246,222,242,51,162,197,100,105,151,85,160,120,245,221,63}, + {144,35,226,102,111,234,137,9,121,153,51,58,8,51,155,153,57,79,246,105,200,26,149,246,46,35,137,143,149,5,19,66}, + {39,183,227,89,201,132,189,69,4,190,233,93,209,47,210,121,112,180,254,123,62,210,123,36,178,222,2,150,99,8,35,66}, + {56,176,43,249,168,49,164,59,122,166,156,67,205,1,29,102,123,29,160,44,247,99,10,241,124,103,109,238,186,72,8,75}, + {178,235,248,67,138,16,63,246,250,175,128,244,254,92,235,203,151,120,251,136,184,163,190,14,217,41,101,253,24,24,44,78}, + {144,156,227,220,61,222,81,95,42,91,74,29,61,104,162,134,169,177,250,227,191,48,4,92,102,178,221,36,47,191,11,80}, + {91,92,141,74,120,143,102,65,177,14,15,243,89,123,207,69,62,223,25,195,152,71,40,96,65,238,58,41,216,213,97,82}, + {43,198,245,39,220,128,136,246,170,207,98,217,133,116,138,163,11,32,198,18,109,169,214,121,50,33,201,242,219,142,111,82}, + {10,177,130,220,69,165,144,38,157,90,143,67,154,190,167,190,50,19,237,121,170,125,249,96,216,189,175,54,84,188,180,82}, + {94,229,114,115,221,228,181,199,119,253,17,139,10,59,149,2,202,196,187,230,76,134,89,44,251,24,230,195,37,229,246,85}, + {12,123,117,152,26,247,24,62,172,166,28,83,83,247,213,200,159,238,221,115,67,36,1,103,17,111,231,9,73,16,197,86}, + {95,156,149,188,163,80,140,36,177,208,177,85,156,131,239,91,4,68,92,196,88,28,142,134,216,34,78,221,208,159,17,87}, + {22,233,173,34,218,187,183,195,246,174,184,130,178,202,229,97,80,232,75,20,49,182,202,180,87,80,28,232,150,21,32,87}, + {26,84,171,174,223,46,251,179,68,112,12,140,25,120,168,230,49,157,85,92,120,86,93,64,218,91,204,5,82,50,64,87}, + {89,147,70,16,191,57,46,101,100,225,112,11,39,133,85,116,187,123,222,118,25,139,220,212,91,148,174,60,170,219,28,88}, + {237,126,162,241,233,132,69,64,152,207,154,191,214,121,178,91,45,8,97,215,143,67,183,19,166,189,181,22,103,153,198,88}, + {166,71,52,250,165,142,124,133,244,167,47,167,159,231,196,183,228,176,163,220,102,133,113,231,10,178,182,106,107,111,142,89}, + {187,24,54,60,85,139,162,25,69,55,173,79,185,91,202,234,176,176,71,225,85,8,207,26,71,123,185,60,233,190,79,90}, + {133,133,21,198,3,134,9,12,210,254,123,114,174,238,77,96,254,88,37,64,5,178,199,141,45,0,39,9,184,239,76,94}, + {67,255,144,201,115,140,26,118,4,229,216,118,29,235,86,170,110,116,92,125,4,165,62,125,93,218,171,166,14,251,223,95}, + {227,121,24,129,106,238,151,39,102,19,51,220,96,154,229,232,131,181,191,15,149,0,235,69,220,12,5,240,198,151,132,96}, + {240,22,72,68,27,247,111,127,36,102,253,162,235,57,103,223,77,206,56,9,214,96,69,138,244,14,98,103,63,107,126,98}, + {216,133,220,191,70,32,82,157,83,231,220,192,43,155,5,1,175,92,52,144,185,209,117,107,251,155,54,254,111,193,98,99}, + {85,180,86,15,22,113,163,114,168,159,20,183,93,182,205,13,113,42,45,139,252,244,3,166,9,43,252,141,81,24,129,103}, + {41,161,241,169,209,53,71,139,150,143,73,155,162,199,45,186,77,244,153,141,226,6,54,243,185,180,107,39,148,117,92,106}, + {128,23,97,182,37,168,50,230,91,51,94,191,211,109,124,125,74,88,82,154,251,171,187,124,56,245,169,188,106,34,145,107}, + {127,15,15,250,255,35,159,42,17,119,215,29,236,176,123,244,254,92,142,79,152,129,191,128,162,120,217,207,55,134,218,108}, + {15,154,28,146,107,252,218,170,25,168,127,42,52,44,9,232,19,129,115,18,153,155,113,175,13,84,224,189,164,184,185,109}, + {102,152,70,122,156,35,87,188,3,59,236,143,255,220,32,60,180,184,194,174,67,78,155,210,158,158,124,57,123,29,226,111}, + {224,127,120,206,90,168,171,155,214,37,59,146,114,174,149,43,10,200,87,58,190,106,83,37,22,129,102,187,150,99,56,112}, + {145,46,193,20,199,31,45,117,163,16,240,251,124,50,2,144,229,182,166,220,69,62,50,87,111,130,156,251,207,229,213,117}, + {132,5,166,191,250,161,222,193,180,248,102,211,248,213,60,251,68,10,193,132,181,254,109,76,71,80,157,162,230,28,133,121}, + {199,23,106,112,61,77,216,79,186,60,11,118,13,16,103,15,42,32,83,250,44,57,204,198,78,199,253,119,146,172,3,122}, + {40,159,165,57,215,189,171,104,153,204,112,113,174,10,40,167,37,157,88,148,126,99,85,136,235,128,68,248,197,12,47,122}, + {224,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {225,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {226,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {227,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {228,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {229,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {230,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {231,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {232,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {233,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {234,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {236,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {237,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {238,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {241,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {242,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {243,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {244,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {245,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {205,235,122,124,59,65,184,174,22,86,227,250,241,159,196,106,218,9,141,235,156,50,177,253,134,98,5,22,95,73,184,128}, + {40,98,193,190,245,237,7,74,121,123,4,94,59,199,62,176,195,18,156,252,169,18,89,40,237,6,154,127,2,176,94,129}, + {181,0,249,162,129,240,19,130,20,185,201,69,162,235,51,51,160,82,204,246,150,73,125,6,149,42,172,102,0,215,65,132}, + {62,73,24,66,66,142,216,188,26,26,140,60,231,157,121,133,255,143,145,204,30,172,47,178,111,241,184,140,95,102,197,132}, + {19,232,149,143,194,178,39,176,69,195,244,137,242,239,152,240,213,223,172,5,211,198,51,57,177,56,2,136,109,83,252,133}, + {125,55,105,100,127,60,72,138,81,84,228,190,83,158,168,146,141,87,127,175,218,74,35,174,189,170,2,180,179,16,1,137}, + {129,43,98,81,200,60,211,58,130,133,78,109,209,68,63,72,135,148,109,167,130,138,113,36,70,35,125,182,53,181,83,140}, + {112,219,85,141,78,156,71,229,153,137,212,86,246,41,139,137,210,13,246,3,78,206,173,113,225,30,236,100,242,203,91,142}, + {231,77,226,40,229,224,72,3,74,203,150,143,218,164,211,149,236,191,232,231,122,157,146,89,72,59,89,49,46,161,128,143}, + {133,115,68,47,111,244,70,154,6,222,111,195,182,203,89,217,56,164,165,2,53,122,87,204,87,223,122,234,67,192,154,144}, + {223,12,82,97,145,239,48,99,177,83,194,80,181,66,99,23,65,96,19,230,123,192,120,197,142,28,29,234,21,134,160,148}, + {248,209,60,152,240,138,191,75,173,194,6,183,199,84,27,79,175,215,246,27,222,29,199,47,232,61,233,117,32,51,140,150}, + {219,58,144,115,100,151,51,85,47,103,37,189,190,237,157,116,69,199,145,142,58,96,214,20,32,232,39,197,126,193,49,151}, + {95,200,38,56,245,199,134,15,168,128,65,85,197,140,23,11,141,135,124,193,253,118,2,188,6,130,168,239,200,176,14,152}, + {170,138,69,101,51,179,185,50,235,207,22,189,77,155,217,80,172,85,92,4,153,152,118,128,93,130,49,239,154,53,165,152}, + {174,139,27,98,245,150,194,250,72,239,94,30,130,68,86,121,100,115,184,14,46,231,88,52,64,201,183,229,190,44,174,154}, + {43,252,244,51,167,151,107,235,93,92,248,1,29,208,144,19,254,172,17,60,103,54,237,33,7,26,50,245,24,147,154,155}, + {36,129,171,217,20,211,14,8,126,132,169,222,235,63,12,118,50,155,57,73,49,89,249,62,24,217,147,143,203,111,156,155}, + {205,2,202,59,157,250,84,118,151,165,55,104,243,106,40,149,64,241,251,65,42,56,34,16,234,54,211,253,5,37,252,155}, + {59,200,140,46,90,47,67,112,167,35,75,6,224,7,207,227,99,207,251,113,168,1,23,218,226,51,117,255,161,142,153,156}, + {92,215,72,182,154,128,219,211,47,140,246,17,244,233,3,54,167,134,151,153,169,146,83,148,29,65,179,15,94,41,232,161}, + {123,220,115,8,78,56,160,102,17,73,213,119,146,233,53,244,107,123,154,141,135,28,131,87,69,49,87,209,20,249,56,162}, + {86,147,246,133,145,58,250,80,175,26,64,139,193,73,15,156,233,170,63,226,153,120,103,252,148,59,25,147,112,38,215,163}, + {77,15,3,198,139,24,114,103,137,170,49,188,87,52,125,80,8,103,119,222,166,174,134,83,41,191,108,14,195,128,111,169}, + {96,42,30,228,229,15,43,141,229,125,150,149,63,62,255,69,132,153,11,122,8,147,80,31,71,0,114,172,6,236,188,169}, + {94,247,178,221,6,102,158,19,44,117,210,243,87,196,221,157,214,60,167,130,240,210,131,167,12,112,193,95,51,171,253,169}, + {47,105,39,192,222,200,75,96,119,240,6,138,50,238,145,191,125,221,161,35,221,145,84,101,52,190,86,71,200,76,239,170}, + {88,199,215,35,217,92,77,65,25,45,63,102,205,94,235,17,76,74,238,228,59,31,46,64,132,86,206,193,8,10,254,170}, + {236,221,110,85,119,102,142,32,139,41,201,114,77,187,166,133,54,229,25,180,236,76,218,201,124,44,182,42,4,183,49,172}, + {255,194,56,232,174,245,62,71,26,68,191,128,100,50,10,237,213,105,100,167,68,21,27,124,129,62,45,161,97,228,235,172}, + {24,248,205,13,251,68,160,65,173,109,89,254,224,107,51,244,92,207,167,180,90,30,242,9,86,56,9,82,78,63,98,173}, + {5,148,50,200,225,154,104,2,186,157,64,251,100,43,110,250,60,12,112,60,188,21,135,97,51,100,226,99,38,208,159,176}, + {58,124,149,244,219,245,28,139,123,7,200,215,136,196,159,79,45,230,10,167,187,124,197,72,22,196,111,77,4,44,35,178}, + {206,106,196,63,222,184,149,49,241,126,132,63,200,64,98,76,47,56,113,193,227,167,145,250,109,15,29,169,198,4,252,178}, + {202,89,131,157,3,118,249,46,74,101,132,152,106,47,243,202,220,92,140,62,172,55,113,156,173,4,96,104,141,80,79,180}, + {23,11,234,10,227,139,156,80,199,166,30,156,2,164,43,61,58,71,110,74,197,50,42,192,114,28,144,175,233,77,233,181}, + {4,185,44,222,234,105,45,228,84,211,77,226,210,230,92,138,18,64,100,12,109,20,161,29,169,107,73,50,2,113,32,184}, + {167,149,123,83,102,56,8,128,52,35,252,196,135,30,152,179,223,240,232,71,44,238,176,128,107,94,97,60,121,129,219,184}, + {92,16,248,176,17,243,88,13,137,6,58,182,139,221,105,188,108,139,108,94,186,224,118,160,35,97,77,197,56,233,17,190}, + {90,240,227,251,144,184,238,241,55,58,14,223,188,73,5,141,231,144,206,200,253,27,157,213,251,175,49,90,4,21,43,193}, + {70,56,241,199,2,77,116,39,168,14,15,19,243,81,48,228,66,197,86,102,62,178,178,118,177,163,197,69,113,99,107,196}, + {179,13,226,14,207,73,38,8,115,109,3,46,235,11,118,202,164,47,136,100,117,120,90,6,44,242,147,142,67,58,34,197}, + {110,16,92,235,125,30,216,86,90,26,103,163,229,193,149,39,17,86,214,36,50,108,148,100,208,16,40,12,194,4,159,198}, + {95,204,232,169,227,16,187,78,103,76,46,253,39,219,178,130,101,27,212,225,115,213,227,31,126,186,195,148,169,85,245,199}, + {174,0,5,175,234,211,162,13,126,160,91,211,165,51,116,163,210,242,48,25,249,254,242,78,240,81,44,86,166,90,115,206}, + {223,152,153,220,140,131,68,151,208,123,2,153,171,70,47,103,111,91,11,234,230,63,51,223,200,244,236,171,145,50,249,207}, + {155,109,9,21,56,25,184,169,128,198,2,189,9,126,77,58,227,73,99,0,182,182,150,89,26,73,98,86,218,251,57,209}, + {250,180,62,72,167,188,211,161,75,8,67,186,254,249,239,196,135,111,170,129,173,38,239,174,51,106,216,119,163,96,80,209}, + {125,242,29,114,232,48,27,244,31,171,46,41,1,218,112,38,126,119,17,27,127,158,41,97,36,105,51,103,198,133,79,214}, + {76,156,149,188,163,80,140,36,177,208,177,85,156,131,239,91,4,68,92,196,88,28,142,134,216,34,78,221,208,159,17,215}, + {3,30,161,46,86,232,112,81,22,22,166,87,64,190,106,88,166,32,34,174,203,96,240,21,231,168,202,224,136,252,95,216}, + {58,50,13,118,120,27,56,5,140,124,44,234,250,149,21,57,233,36,207,197,165,234,195,118,154,167,56,193,69,102,30,217}, + {33,166,110,206,84,190,224,115,16,16,158,248,30,0,233,114,28,202,152,41,116,80,233,121,144,82,116,76,168,173,30,218}, + {56,0,37,25,36,249,203,33,105,221,23,56,110,251,249,180,154,183,67,64,123,150,36,125,50,218,191,132,212,126,128,222}, + {142,22,38,205,200,222,195,37,214,165,19,37,81,22,87,95,227,152,243,211,179,168,34,169,78,193,55,91,16,56,230,222}, + {250,186,28,252,147,237,14,97,25,165,61,72,56,205,33,143,0,159,175,39,99,66,31,226,24,190,5,150,240,223,238,222}, + {141,193,75,162,4,203,133,174,153,196,55,67,223,46,171,9,180,112,112,89,191,187,159,93,201,66,140,226,7,118,67,226}, + {236,16,165,65,1,173,130,47,201,213,171,154,185,172,79,19,203,117,86,19,191,75,213,174,85,205,184,195,105,19,136,228}, + {87,6,127,250,161,21,246,107,3,203,72,146,112,227,19,204,92,125,202,100,252,110,139,19,133,193,218,63,15,199,167,228}, + {112,52,5,29,28,239,246,218,83,106,50,236,83,212,229,146,245,69,47,61,220,72,230,59,243,251,128,98,206,213,120,229}, + {84,33,33,195,205,95,87,46,215,226,73,47,6,206,1,220,87,223,209,122,91,233,94,210,113,168,229,78,121,87,53,230}, + {38,57,245,107,31,171,57,222,37,89,242,246,200,69,132,204,142,29,85,51,40,241,114,164,100,92,53,88,211,92,202,230}, + {41,26,248,132,62,248,195,130,95,125,203,188,212,31,51,250,131,201,151,226,53,4,200,159,144,59,61,181,50,96,124,232}, + {237,131,60,71,84,163,46,254,98,12,230,87,251,116,196,185,116,253,229,243,247,223,86,243,70,181,200,64,6,180,114,234}, + {159,109,38,90,9,148,16,166,4,12,203,81,214,74,15,69,187,18,59,178,98,237,243,35,8,205,27,12,125,168,206,236}, + {77,177,87,210,156,163,175,191,211,150,62,37,21,150,200,44,125,200,224,117,67,164,169,113,221,215,61,61,88,133,65,237}, + {51,146,91,49,186,142,83,19,20,166,202,118,177,2,123,32,74,77,241,206,200,63,243,219,5,255,246,165,176,60,121,242}, + {37,23,19,91,121,184,178,247,132,107,151,13,254,239,14,213,228,79,139,141,234,186,35,114,206,67,48,145,227,157,176,245}, + {180,23,106,112,61,77,216,79,186,60,11,118,13,16,103,15,42,32,83,250,44,57,204,198,78,199,253,119,146,172,3,250}, + {128,48,20,114,22,220,220,209,152,138,21,42,4,56,162,215,127,41,23,102,98,16,235,175,36,137,194,230,234,79,79,251}, + {235,162,54,148,157,227,126,179,250,16,171,200,149,22,152,172,34,91,213,50,6,121,240,134,54,215,4,38,91,154,39,252}, + {14,156,212,9,229,242,211,90,86,23,60,168,108,114,41,2,84,100,202,204,244,219,54,187,48,194,31,211,37,152,156,253}, + {26,210,64,74,96,212,130,61,169,249,41,43,135,136,190,112,128,56,18,47,169,218,118,240,98,194,168,50,223,178,247,254}, + {192,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {193,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {194,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {195,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {196,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {197,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {198,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {199,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {201,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {202,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {203,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {204,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {205,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {206,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {208,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {209,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {210,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {211,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {212,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {213,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {215,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {216,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {217,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {218,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {219,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {220,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {221,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {222,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {223,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {224,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {225,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {226,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {227,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {228,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {229,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {230,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {231,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {232,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {233,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {234,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {236,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {237,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {238,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {241,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {242,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {243,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {244,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {245,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, +} ; + +static void test_nP_montgomery25519_impl(long long impl) +{ + unsigned char *q = test_nP_montgomery25519_q; + unsigned char *n = test_nP_montgomery25519_n; + unsigned char *p = test_nP_montgomery25519_p; + unsigned char *q2 = test_nP_montgomery25519_q2; + unsigned char *n2 = test_nP_montgomery25519_n2; + unsigned char *p2 = test_nP_montgomery25519_p2; + long long qlen = crypto_nP_POINTBYTES; + long long nlen = crypto_nP_SCALARBYTES; + long long plen = crypto_nP_POINTBYTES; + + if (targeti && strcmp(targeti,lib25519_dispatch_nP_montgomery25519_implementation(impl))) return; + if (impl >= 0) { + crypto_nP = lib25519_dispatch_nP_montgomery25519(impl); + printf("nP_montgomery25519 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_nP_montgomery25519_implementation(impl),lib25519_dispatch_nP_montgomery25519_compiler(impl)); + } else { + crypto_nP = lib25519_nP_montgomery25519; + printf("nP_montgomery25519 selected implementation %s compiler %s\n",lib25519_nP_montgomery25519_implementation(),lib25519_nP_montgomery25519_compiler()); + } + for (long long checksumbig = 0;checksumbig < 2;++checksumbig) { + long long loops = checksumbig ? 512 : 64; + + checksum_clear(); + + for (long long loop = 0;loop < loops;++loop) { + + output_prepare(q2,q,qlen); + input_prepare(n2,n,nlen); + input_prepare(p2,p,plen); + crypto_nP(q,n,p); + checksum(q,qlen); + output_compare(q2,q,qlen,"crypto_nP"); + input_compare(n2,n,nlen,"crypto_nP"); + input_compare(p2,p,plen,"crypto_nP"); + + double_canary(q2,q,qlen); + double_canary(n2,n,nlen); + double_canary(p2,p,plen); + crypto_nP(q2,n2,p2); + if (memcmp(q2,q,qlen) != 0) fail("failure: crypto_nP is nondeterministic\n"); + + double_canary(q2,q,qlen); + double_canary(n2,n,nlen); + double_canary(p2,p,plen); + crypto_nP(n2,n2,p); + if (memcmp(n2,q,qlen) != 0) fail("failure: crypto_nP does not handle n=q overlap\n"); + memcpy(n2,n,nlen); + crypto_nP(p2,n,p2); + if (memcmp(p2,q,qlen) != 0) fail("failure: crypto_nP does not handle p=q overlap\n"); + memcpy(p2,p,plen); + } + checksum_expected(nP_montgomery25519_checksums[checksumbig]); + } + for (long long precomp = 0;precomp < precomputed_nP_montgomery25519_NUM;++precomp) { + output_prepare(q2,q,crypto_nP_POINTBYTES); + input_prepare(n2,n,crypto_nP_SCALARBYTES); + memcpy(n,precomputed_nP_montgomery25519_n[precomp],crypto_nP_SCALARBYTES); + memcpy(n2,precomputed_nP_montgomery25519_n[precomp],crypto_nP_SCALARBYTES); + input_prepare(p2,p,crypto_nP_POINTBYTES); + memcpy(p,precomputed_nP_montgomery25519_p[precomp],crypto_nP_POINTBYTES); + memcpy(p2,precomputed_nP_montgomery25519_p[precomp],crypto_nP_POINTBYTES); + crypto_nP(q,n,p); + if (memcmp(q,precomputed_nP_montgomery25519_q[precomp],crypto_nP_POINTBYTES)) { + fail("failure: crypto_nP fails precomputed test vectors\n"); + printf("expected q: "); + for (long long pos = 0;pos < crypto_nP_POINTBYTES;++pos) printf("%02x",precomputed_nP_montgomery25519_q[precomp][pos]); + printf("\n"); + printf("received q: "); + for (long long pos = 0;pos < crypto_nP_POINTBYTES;++pos) printf("%02x",q[pos]); + printf("\n"); + } + output_compare(q2,q,crypto_nP_POINTBYTES,"crypto_nP"); + input_compare(n2,n,crypto_nP_SCALARBYTES,"crypto_nP"); + input_compare(p2,p,crypto_nP_POINTBYTES,"crypto_nP"); + } +} + +static void test_nP_montgomery25519(void) +{ + if (targeto && strcmp(targeto,"nP")) return; + if (targetp && strcmp(targetp,"montgomery25519")) return; + test_nP_montgomery25519_q = alignedcalloc(crypto_nP_POINTBYTES); + test_nP_montgomery25519_n = alignedcalloc(crypto_nP_SCALARBYTES); + test_nP_montgomery25519_p = alignedcalloc(crypto_nP_POINTBYTES); + test_nP_montgomery25519_q2 = alignedcalloc(crypto_nP_POINTBYTES); + test_nP_montgomery25519_n2 = alignedcalloc(crypto_nP_SCALARBYTES); + test_nP_montgomery25519_p2 = alignedcalloc(crypto_nP_POINTBYTES); + + for (long long offset = 0;offset < 2;++offset) { + printf("nP_montgomery25519 offset %lld\n",offset); + for (long long impl = -1;impl < lib25519_numimpl_nP_montgomery25519();++impl) + forked(test_nP_montgomery25519_impl,impl); + ++test_nP_montgomery25519_q; + ++test_nP_montgomery25519_n; + ++test_nP_montgomery25519_p; + ++test_nP_montgomery25519_q2; + ++test_nP_montgomery25519_n2; + ++test_nP_montgomery25519_p2; + } +} +#undef crypto_nP_SCALARBYTES +#undef crypto_nP_POINTBYTES + + +/* ----- nG, derived from supercop/crypto_nG/try.c */ +static const char *nG_merged25519_checksums[] = { + "a4e761839798a07817484e97605bd63215b4938934ed9ce01935bbced48155bc", + "0a01c09fc8a8c7e8c18f841b2e1b2da9c156868737d194d223b03531cf2db731", +} ; + +static void (*crypto_nG)(unsigned char *,const unsigned char *); +#define crypto_nG_SCALARBYTES lib25519_nG_merged25519_SCALARBYTES +#define crypto_nG_POINTBYTES lib25519_nG_merged25519_POINTBYTES + +static unsigned char *test_nG_merged25519_q; +static unsigned char *test_nG_merged25519_n; +static unsigned char *test_nG_merged25519_q2; +static unsigned char *test_nG_merged25519_n2; + +#define precomputed_nG_merged25519_NUM 204 + +static const unsigned char precomputed_nG_merged25519_q[precomputed_nG_merged25519_NUM][crypto_nG_POINTBYTES] = { + {133,218,221,213,182,167,220,17,81,165,169,16,157,1,98,146,173,245,154,229,120,122,142,232,80,50,175,61,48,98,60,116}, + {21,137,40,17,147,173,40,217,252,204,13,39,126,161,52,33,103,220,167,227,173,212,171,240,74,133,108,100,110,38,37,203}, + {162,29,197,12,149,155,174,166,249,128,97,252,70,240,197,153,55,135,92,1,67,192,227,81,165,24,200,228,196,179,252,14}, + {99,233,95,90,78,115,131,115,66,215,223,175,169,79,14,163,151,0,237,8,26,122,160,89,64,3,106,116,214,252,226,227}, + {54,150,206,203,58,110,225,157,183,86,161,217,21,173,52,118,210,103,209,184,244,215,140,213,108,38,253,214,220,68,59,21}, + {229,150,16,70,160,155,23,143,193,204,18,207,12,35,16,109,19,161,33,163,231,148,93,33,192,8,208,33,52,245,73,118}, + {73,105,152,67,21,142,191,92,30,165,214,112,236,97,191,160,115,199,32,54,253,64,12,183,200,153,220,13,247,122,168,120}, + {154,10,210,253,121,116,76,235,128,102,47,92,73,216,196,148,103,90,201,122,11,94,192,85,13,193,122,32,104,107,44,86}, + {242,127,197,101,157,182,135,14,30,144,113,135,145,40,211,42,139,166,32,175,62,68,63,56,125,65,228,23,153,31,9,121}, + {56,11,123,153,186,17,205,235,203,26,210,162,38,100,99,95,184,127,125,207,51,224,32,196,119,210,101,197,184,231,245,122}, + {36,227,145,67,153,167,149,57,231,243,241,68,24,56,226,208,21,225,45,44,253,75,155,98,34,41,113,202,172,245,217,59}, + {200,209,38,54,107,155,162,213,139,66,104,33,240,22,163,55,57,117,215,169,210,36,216,146,41,231,244,195,139,121,254,0}, + {0,247,38,106,217,100,0,75,146,156,162,91,151,191,98,7,50,138,182,191,206,5,104,123,113,39,192,119,91,70,133,44}, + {24,71,171,234,213,78,8,17,237,82,105,158,41,52,68,101,207,165,51,142,135,25,110,107,184,104,200,119,68,173,59,119}, + {217,153,48,91,233,138,209,224,28,163,218,7,29,45,183,133,213,145,116,178,133,212,17,102,130,112,139,93,187,16,48,11}, + {233,141,127,176,161,169,81,186,69,119,8,7,219,207,140,141,179,217,154,20,74,236,120,151,133,9,40,11,248,100,171,61}, + {143,235,242,112,234,244,127,42,130,112,146,216,216,118,207,241,18,54,165,57,153,36,51,254,49,158,71,172,234,86,30,115}, + {119,237,4,68,155,203,157,8,39,68,130,178,241,153,84,205,9,184,30,234,214,64,139,141,221,0,208,205,160,208,206,122}, + {230,126,124,186,28,168,134,3,88,238,75,227,231,171,125,245,132,57,18,181,223,229,2,189,221,242,88,163,213,64,50,104}, + {146,242,159,166,200,201,150,160,60,217,52,208,122,192,206,216,213,254,39,88,137,139,18,78,111,220,114,219,129,119,123,67}, + {90,86,188,252,38,122,3,18,104,33,60,199,75,240,95,203,122,59,34,63,90,181,216,112,120,252,142,38,100,73,219,51}, + {208,111,18,67,63,233,46,43,98,19,222,177,223,200,241,217,152,121,123,245,214,32,222,249,73,169,177,60,12,248,55,158}, + {195,200,243,197,196,207,227,141,88,22,134,33,16,234,171,107,21,159,157,201,96,21,72,205,31,234,131,81,182,213,113,64}, + {71,47,120,45,240,125,236,219,24,118,182,126,40,128,132,87,0,8,136,25,211,29,205,193,196,82,219,215,30,225,165,85}, + {6,120,14,54,131,140,165,197,128,126,193,206,138,103,77,167,127,12,178,66,21,27,149,46,219,110,179,232,1,3,10,96}, + {170,173,18,125,183,4,162,58,4,108,184,211,64,98,80,11,14,189,137,1,113,91,228,142,135,109,168,37,4,185,110,41}, + {239,168,117,46,90,253,251,53,129,85,95,19,196,0,198,236,179,159,6,5,138,155,31,208,30,203,63,42,92,176,246,159}, + {70,90,116,158,218,216,103,205,236,149,206,168,77,49,223,238,123,157,44,221,113,190,218,163,15,167,193,24,64,230,200,32}, + {47,28,67,32,72,218,215,211,41,169,231,221,225,158,209,123,45,150,20,202,129,47,66,198,156,164,232,193,166,228,55,98}, + {133,255,102,184,241,33,53,161,64,165,61,128,174,250,60,25,164,76,242,30,148,21,89,53,205,101,155,189,203,217,87,85}, + {58,208,59,76,188,233,160,118,158,60,166,149,188,13,26,154,116,64,194,48,140,179,59,4,238,206,210,89,93,109,139,32}, + {73,62,203,112,176,134,155,69,135,47,30,173,28,43,178,113,188,188,231,27,172,122,96,99,236,242,253,109,210,254,20,16}, + {12,97,67,237,42,207,179,144,2,227,167,226,3,28,166,216,220,242,8,29,166,64,216,106,83,71,185,169,242,153,49,17}, + {93,96,122,15,112,17,211,233,152,205,188,181,90,160,82,225,19,105,186,83,107,89,227,115,56,108,105,11,79,53,207,63}, + {239,87,246,243,207,185,86,248,217,30,54,240,27,254,167,204,120,202,154,90,202,122,61,59,230,89,22,167,42,11,98,45}, + {80,122,179,178,62,164,3,194,112,28,39,23,252,192,155,80,162,6,223,44,24,14,33,18,104,83,41,135,41,109,17,224}, + {56,182,76,24,217,7,54,70,242,91,148,57,174,212,99,231,177,247,71,183,247,38,3,12,249,130,68,7,39,67,189,143}, + {160,69,77,238,221,238,44,234,198,74,237,123,188,231,251,245,2,84,48,87,44,90,108,105,8,157,246,65,156,58,195,57}, + {115,114,240,204,123,58,219,165,106,184,23,78,196,223,139,214,11,17,77,10,195,244,194,41,207,226,246,221,66,68,222,62}, + {17,27,90,95,72,5,219,79,198,96,140,229,7,19,105,220,31,44,10,189,228,142,143,175,103,37,93,43,100,177,222,150}, + {10,2,138,157,12,244,25,125,236,19,139,240,232,244,16,156,12,161,228,81,57,78,67,210,129,29,113,210,20,106,198,226}, + {240,222,146,238,207,103,248,61,137,145,17,6,76,137,189,125,12,79,213,118,195,80,109,29,74,38,106,28,157,152,206,110}, + {35,213,178,187,124,140,73,101,93,210,200,86,179,158,164,210,215,156,54,180,216,243,29,26,235,227,26,142,109,206,108,112}, + {193,217,128,217,238,154,50,186,70,148,167,93,206,43,227,92,253,237,69,30,135,11,132,104,186,147,79,11,193,235,158,85}, + {139,112,244,194,138,153,217,230,143,225,97,150,194,143,167,165,75,20,121,127,220,4,195,150,232,91,181,219,31,78,26,37}, + {142,40,63,66,176,219,127,245,3,253,178,123,88,91,146,185,21,183,120,70,76,69,217,33,34,177,86,96,126,114,27,3}, + {103,129,227,106,53,41,239,32,158,10,78,37,130,41,79,69,183,208,103,118,89,251,74,175,236,209,163,52,221,35,157,31}, + {249,27,137,39,161,15,133,187,99,132,151,171,146,22,39,79,38,151,254,224,252,144,151,55,224,57,37,209,206,32,240,194}, + {133,185,231,141,84,179,78,90,88,65,9,167,25,154,109,95,66,91,94,230,249,234,239,128,77,134,211,97,31,163,247,38}, + {195,234,12,244,247,159,43,89,154,207,87,129,9,174,86,91,49,14,72,158,133,4,10,63,132,217,83,9,59,118,139,19}, + {133,31,247,111,200,212,191,254,182,231,194,23,126,28,147,124,91,165,243,237,143,121,211,16,47,7,174,139,23,104,56,47}, + {100,164,52,85,247,129,172,141,125,67,177,226,248,185,123,176,80,99,233,160,164,225,197,207,250,18,72,121,10,201,34,14}, + {252,139,231,164,188,7,92,122,16,244,213,166,136,81,235,88,209,136,101,105,120,96,170,54,22,136,203,159,77,117,81,154}, + {143,242,153,38,70,0,130,0,67,98,254,148,131,85,127,154,165,67,196,69,56,101,209,108,105,196,117,70,142,241,152,78}, + {52,224,221,192,111,110,162,155,102,66,47,166,37,90,240,129,107,78,51,255,22,163,195,220,215,169,174,127,144,94,226,201}, + {19,129,58,16,91,112,212,175,101,238,120,14,118,215,72,122,168,243,103,14,5,155,120,167,91,165,171,143,43,209,191,81}, + {23,155,224,66,163,85,106,226,131,22,240,140,147,193,178,204,47,129,185,94,6,212,43,215,172,31,181,7,21,234,243,236}, + {219,197,41,136,68,150,118,164,141,38,74,12,215,111,202,130,136,47,4,28,146,148,224,65,117,210,26,200,213,112,74,14}, + {168,9,245,4,218,176,115,72,11,204,7,190,161,49,137,247,5,27,179,115,230,95,14,158,68,30,227,132,125,153,20,105}, + {19,6,106,157,254,10,36,27,66,74,133,218,136,144,135,125,66,231,33,43,150,176,158,159,4,122,81,126,56,97,66,73}, + {162,141,255,162,40,108,188,125,233,10,145,159,166,172,147,218,231,202,74,84,140,122,134,231,252,137,85,102,193,57,244,28}, + {94,102,107,210,115,6,137,18,14,220,220,154,102,44,152,50,112,163,169,91,102,236,176,18,209,18,66,128,188,112,213,122}, + {40,34,94,183,173,244,46,30,228,227,7,34,147,79,57,140,16,211,131,33,164,143,86,13,59,79,3,126,221,12,28,7}, + {88,211,7,25,201,88,168,130,72,20,154,92,7,71,239,4,46,12,86,203,211,97,229,221,126,224,228,156,234,121,95,234}, + {164,93,249,139,221,192,154,53,53,4,75,103,251,134,100,22,176,210,193,110,41,152,7,181,183,242,116,87,93,105,63,103}, + {78,17,74,143,171,215,95,164,212,137,254,178,80,127,13,45,218,255,252,69,223,52,164,135,35,235,86,167,242,168,236,103}, + {238,71,34,225,188,4,13,26,144,70,157,250,182,111,168,59,200,155,227,247,34,54,218,28,163,8,138,72,214,170,189,205}, + {205,244,204,202,186,74,88,247,237,46,10,63,190,73,201,18,80,21,131,2,27,114,134,253,136,114,45,238,195,219,180,95}, + {207,105,197,117,253,71,103,227,138,245,193,163,168,77,226,89,15,205,65,110,249,119,140,15,0,216,133,172,219,11,12,78}, + {18,244,198,188,213,166,93,14,150,4,96,98,118,116,209,211,231,126,9,244,38,88,106,37,193,144,221,115,240,252,81,111}, + {165,90,179,130,204,218,247,189,238,129,95,131,245,206,6,87,236,171,29,181,84,203,58,135,151,5,105,151,216,202,1,74}, + {133,92,158,60,21,108,200,188,216,157,11,100,96,200,221,117,219,48,228,176,97,62,104,115,183,167,21,42,129,98,38,186}, + {20,237,110,80,59,209,61,56,111,148,161,62,94,73,71,11,136,115,27,106,35,245,9,34,242,155,207,61,54,203,109,48}, + {253,54,15,90,187,233,161,252,143,101,101,38,34,132,111,199,94,15,122,119,75,57,99,36,225,104,27,222,80,204,86,56}, + {28,105,254,10,231,115,112,55,241,180,78,217,105,125,154,196,34,237,67,69,158,58,184,109,75,145,66,138,183,152,79,114}, + {106,64,102,69,75,76,222,173,193,40,48,164,165,224,27,134,45,156,207,131,71,218,255,75,233,205,19,222,200,63,137,110}, + {51,0,154,92,203,162,128,110,60,210,148,225,64,147,104,76,53,214,226,119,105,175,147,176,189,36,196,48,204,125,140,74}, + {173,63,99,222,178,169,165,115,226,108,38,97,159,224,238,158,102,213,137,254,244,132,140,168,205,19,207,181,159,165,194,87}, + {142,19,103,213,195,194,97,250,148,224,75,200,156,48,183,123,204,31,244,92,207,162,85,25,191,192,177,25,22,58,95,124}, + {233,95,239,159,15,181,173,37,243,124,28,216,129,180,0,151,91,112,141,36,220,146,17,124,19,178,132,24,234,162,36,244}, + {235,171,214,149,185,117,9,254,75,198,158,20,118,39,247,14,72,254,101,241,228,92,233,245,163,79,202,89,154,38,132,29}, + {214,216,103,27,218,87,176,96,72,144,132,217,160,62,190,195,11,199,232,164,81,188,169,152,35,134,228,11,185,203,32,73}, + {147,107,197,226,199,221,124,115,1,151,31,97,7,191,23,89,121,172,248,61,81,73,56,254,34,100,135,233,166,53,221,186}, + {243,66,247,66,62,57,139,168,183,216,236,87,204,55,230,94,176,175,28,253,21,22,179,98,36,80,46,193,32,75,176,221}, + {66,98,79,170,54,172,253,63,39,103,7,48,86,182,100,69,160,157,35,220,78,33,201,243,81,165,193,173,74,107,65,111}, + {63,109,129,80,49,251,201,41,111,80,204,4,32,17,72,57,245,212,128,171,163,29,223,218,225,178,156,90,41,231,63,50}, + {165,218,225,122,152,34,207,72,61,226,193,169,80,241,112,239,38,233,231,207,178,54,206,212,133,125,35,105,102,123,35,78}, + {129,14,10,182,22,250,85,228,111,244,59,106,178,39,85,228,194,153,252,106,152,225,13,35,178,228,16,124,177,11,144,124}, + {15,156,131,174,171,245,73,196,50,113,21,84,229,117,131,19,240,26,40,194,169,109,75,243,132,163,33,178,59,115,34,35}, + {167,150,91,222,34,202,202,158,222,85,128,125,225,140,250,177,131,111,252,19,78,156,30,206,120,120,33,191,222,164,107,115}, + {157,28,212,39,141,145,95,162,161,34,193,186,160,255,21,46,4,123,71,62,139,70,253,180,92,58,33,23,147,100,24,51}, + {32,4,56,86,178,184,215,9,111,109,135,216,176,215,186,144,237,223,114,178,34,90,4,207,191,96,29,51,205,35,111,76}, + {225,190,105,124,86,25,110,82,29,88,218,55,207,70,14,99,173,57,30,203,18,85,102,59,145,14,76,243,120,196,138,86}, + {182,234,44,163,47,9,78,52,43,3,241,173,22,50,195,210,227,148,226,23,149,227,156,108,210,163,27,67,1,136,37,39}, + {48,224,174,249,239,168,73,98,61,187,13,145,102,138,147,147,14,188,98,66,30,117,0,77,145,146,36,181,80,202,231,6}, + {103,4,29,212,189,81,41,119,43,101,173,124,11,88,197,0,119,233,81,166,249,141,15,95,117,141,185,72,175,241,87,103}, + {27,156,149,160,184,52,147,29,234,37,202,73,115,189,28,177,197,146,89,15,96,199,5,64,169,222,219,220,171,226,66,248}, + {1,24,59,4,101,181,100,139,204,31,91,210,250,247,205,54,207,76,172,109,87,165,124,71,54,10,195,97,56,12,172,119}, + {148,212,155,105,22,42,217,97,82,59,154,179,74,106,70,86,158,48,249,1,47,163,225,178,78,55,115,221,50,22,43,58}, + {225,34,160,192,183,237,222,62,18,34,101,94,193,177,206,74,24,97,106,197,225,78,237,65,51,252,187,109,92,29,202,129}, + {139,196,209,44,209,44,206,240,225,210,83,122,92,29,82,49,201,107,25,98,252,160,170,19,93,176,110,173,57,73,137,180}, + {200,68,80,223,3,67,208,248,155,67,114,26,214,120,251,203,153,130,112,48,196,193,96,204,125,162,51,125,191,190,48,61}, + {162,0,28,103,136,199,40,69,106,172,107,46,177,130,171,227,6,191,227,196,211,59,112,31,127,243,230,75,168,13,19,92}, + {181,83,207,199,72,216,70,141,103,75,12,215,43,233,19,173,128,44,64,109,76,20,22,167,24,248,77,171,213,137,180,56}, + {71,119,22,251,156,223,174,133,159,200,189,175,198,175,37,249,90,163,106,137,219,152,188,26,107,104,148,212,4,101,234,212}, + {97,191,64,101,220,164,47,33,92,169,162,204,26,9,86,248,55,187,250,75,234,108,64,1,193,167,59,166,224,103,184,207}, + {76,27,91,200,170,63,179,215,123,123,223,230,21,31,9,240,212,176,243,58,224,151,208,131,227,132,237,68,13,224,219,148}, + {80,193,160,250,22,205,105,190,55,82,214,175,175,117,25,132,128,10,117,160,3,237,122,84,219,126,65,17,178,107,51,33}, + {88,132,109,9,176,42,17,99,143,109,179,197,8,51,55,60,45,32,11,228,153,51,203,230,238,12,9,134,16,146,75,126}, + {9,59,236,159,88,156,60,215,65,29,144,206,180,240,221,133,71,146,251,75,252,22,188,79,124,76,59,55,152,30,120,93}, + {191,249,157,232,214,180,112,120,128,229,97,155,200,139,7,30,132,28,110,105,27,93,58,81,241,138,52,156,75,38,170,223}, + {193,163,64,210,46,2,8,101,66,90,202,139,180,114,144,167,116,154,10,162,29,28,70,190,121,65,247,181,59,221,95,10}, + {161,100,179,27,120,46,131,106,156,182,96,12,244,230,127,114,131,43,131,19,163,133,110,90,144,253,114,178,96,133,93,5}, + {128,238,13,127,53,21,194,18,125,63,187,117,97,223,163,170,16,44,103,209,192,127,158,79,25,214,13,249,222,171,186,65}, + {71,86,74,9,116,177,179,72,49,12,187,225,75,169,228,26,94,248,217,152,21,193,203,221,238,197,40,170,162,145,195,184}, + {96,77,52,193,212,255,140,137,183,101,150,16,239,128,116,134,165,76,199,185,49,200,211,176,137,163,66,104,2,14,220,110}, + {251,122,111,246,120,208,239,166,211,47,180,228,135,106,178,161,15,90,163,79,210,199,245,48,125,114,70,136,15,51,123,43}, + {254,56,122,215,227,189,131,240,213,75,243,96,40,48,216,14,61,70,218,222,28,25,28,112,138,222,58,39,139,105,208,188}, + {221,144,122,161,220,168,63,59,177,157,151,203,105,57,134,223,243,13,30,44,194,10,1,192,48,233,52,177,105,254,108,37}, + {78,244,242,41,180,182,171,231,130,180,254,93,212,239,161,66,35,163,55,159,190,81,232,197,205,60,66,192,146,71,126,210}, + {178,209,37,76,92,190,183,6,38,251,155,51,255,151,33,71,104,89,232,137,138,125,206,77,17,154,32,61,166,217,74,76}, + {191,10,24,120,44,179,136,225,116,92,171,204,31,30,102,250,50,117,22,18,136,83,30,123,36,38,207,185,206,28,234,141}, + {58,181,135,41,98,14,200,55,50,69,113,145,130,232,245,132,1,147,73,34,113,192,103,105,0,250,245,167,128,228,122,23}, + {10,72,125,214,110,45,3,118,32,248,245,177,46,193,190,2,48,119,133,76,133,151,170,178,95,229,20,25,94,227,144,32}, + {183,207,141,110,147,213,44,151,129,41,25,148,84,127,165,255,122,216,43,166,238,19,240,81,44,68,20,188,167,16,179,83}, + {63,43,52,114,8,20,123,139,103,128,106,211,137,227,227,93,175,5,45,53,98,253,244,166,11,210,188,150,201,99,173,5}, + {6,174,70,114,4,103,88,251,52,214,179,58,36,214,175,226,215,13,97,187,25,122,13,188,214,181,191,132,225,111,28,210}, + {17,207,26,138,16,164,197,241,107,166,102,45,23,192,169,209,69,89,215,28,123,239,163,166,213,162,143,19,18,4,128,96}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,34}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,162}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,230}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,34}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,162}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,230}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,34}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,162}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,230}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,34}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,162}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,230}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,34}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,162}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,230}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,34}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,162}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,230}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,34}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,162}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,230}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {88,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {201,163,248,106,174,70,95,14,86,81,56,100,81,15,57,151,86,31,162,201,232,94,162,29,194,41,35,9,243,205,96,34}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, +} ; + +static const unsigned char precomputed_nG_merged25519_n[precomputed_nG_merged25519_NUM][crypto_nG_SCALARBYTES] = { + {14,252,177,48,51,24,150,255,44,250,132,235,147,239,78,66,173,190,143,74,31,10,84,177,152,242,102,165,15,106,180,143}, + {4,98,90,244,250,174,214,153,18,248,206,99,12,173,215,101,111,19,140,120,200,225,137,93,10,154,215,119,183,184,110,67}, + {26,90,61,26,108,30,1,123,69,213,78,134,230,158,104,207,14,110,188,73,111,89,39,23,114,21,175,51,18,34,172,225}, + {40,23,118,110,26,89,64,207,170,236,133,185,238,148,225,2,118,128,234,122,43,160,205,8,71,218,49,136,251,19,2,82}, + {193,46,183,245,21,125,231,201,156,66,212,74,156,49,235,176,118,234,219,138,128,194,100,66,242,63,179,4,64,172,10,185}, + {10,7,143,232,161,214,197,102,31,170,6,0,81,126,210,18,101,96,18,149,227,110,205,192,95,127,78,212,117,99,195,227}, + {97,3,128,29,30,130,136,227,27,41,200,232,149,155,85,88,165,150,242,99,80,35,129,101,113,59,149,211,77,30,75,178}, + {106,169,193,176,237,39,174,67,198,73,118,162,37,236,106,78,45,67,20,98,141,248,56,249,185,128,248,126,74,155,171,214}, + {137,33,93,180,100,175,164,180,175,113,146,77,71,201,157,232,74,69,159,109,245,3,51,44,39,14,155,211,55,34,16,27}, + {129,241,79,112,4,141,121,80,104,172,222,222,108,215,166,191,18,54,187,139,89,29,71,91,98,103,167,160,72,42,77,162}, + {248,184,56,147,163,223,180,173,66,182,20,230,145,143,177,100,65,10,32,55,127,20,137,122,228,85,77,171,245,28,137,214}, + {192,35,128,83,162,109,231,202,199,158,130,36,132,214,107,77,69,130,37,98,42,1,138,9,249,184,64,213,118,109,188,141}, + {97,207,224,138,5,184,83,176,42,139,86,52,44,49,3,197,167,220,73,214,54,86,97,21,176,173,2,51,189,184,163,22}, + {56,98,7,141,181,187,179,200,10,182,204,190,168,129,189,32,44,119,77,78,218,191,112,5,67,87,84,50,133,102,245,18}, + {164,117,126,223,222,210,183,203,165,89,96,90,92,52,180,71,137,243,235,34,42,247,179,157,221,184,215,122,42,77,19,148}, + {37,20,118,112,165,202,61,122,229,92,171,192,202,22,253,197,79,109,40,131,114,128,218,129,178,49,179,254,218,218,37,147}, + {228,139,29,124,221,239,86,110,242,200,229,137,171,165,136,144,62,238,2,156,164,202,112,170,25,170,222,164,60,38,172,251}, + {15,188,181,84,79,123,28,96,218,82,147,215,19,139,191,255,171,27,45,165,24,25,233,142,225,76,57,60,188,116,151,63}, + {68,205,99,39,157,39,232,121,65,138,14,209,106,34,53,93,228,125,167,202,33,116,203,133,224,96,179,158,7,219,76,208}, + {146,70,128,239,133,16,48,130,169,201,83,140,118,113,39,26,174,164,250,46,127,84,154,254,213,186,121,88,183,134,34,53}, + {188,20,82,254,10,0,82,194,233,195,12,205,100,107,3,45,38,220,109,116,141,32,25,94,57,182,26,22,49,115,11,224}, + {247,146,8,90,8,199,41,31,163,112,106,211,122,242,184,170,18,98,204,153,159,229,79,111,7,232,42,88,7,163,87,55}, + {114,73,62,161,254,9,21,14,233,92,252,67,128,17,118,236,147,107,117,46,236,71,147,133,124,155,254,161,88,97,5,200}, + {117,189,86,19,188,223,94,108,110,96,152,163,238,14,215,95,249,3,35,246,180,115,139,215,204,210,174,17,27,225,146,148}, + {105,44,234,39,55,66,111,237,198,40,48,255,113,86,248,146,42,107,85,53,126,173,135,195,83,124,223,150,49,42,214,231}, + {164,33,179,146,61,72,144,115,145,255,13,173,230,213,204,172,46,179,219,180,17,115,213,208,164,190,252,45,2,121,87,67}, + {54,168,211,156,169,144,89,156,75,38,141,222,162,116,177,116,22,176,16,39,129,67,110,18,174,149,183,208,22,80,243,60}, + {62,224,81,23,101,197,155,131,180,224,124,147,140,157,182,200,221,142,62,41,87,49,32,137,192,120,40,138,150,172,172,17}, + {242,196,171,22,237,29,23,48,203,78,97,43,51,177,33,41,173,144,211,164,204,185,200,115,27,200,20,223,153,136,23,152}, + {46,118,218,21,6,58,150,225,219,27,183,159,86,243,238,102,167,82,148,176,235,100,137,93,140,190,69,205,42,59,132,137}, + {107,168,181,208,37,162,103,49,30,13,181,90,116,182,204,161,210,253,141,95,240,205,240,165,69,113,238,29,210,3,249,255}, + {64,78,238,224,233,71,9,219,30,166,238,145,142,135,243,131,103,7,83,232,183,239,99,65,25,171,26,38,93,253,194,162}, + {127,26,200,57,169,2,77,216,149,78,53,110,25,175,50,233,26,43,78,67,243,152,142,159,88,195,163,197,134,251,85,202}, + {234,161,205,240,101,129,58,120,2,203,55,111,131,137,23,245,216,239,61,14,186,84,2,81,92,183,101,93,33,34,103,225}, + {171,190,230,107,212,78,249,130,216,145,106,42,198,203,178,238,76,62,101,159,59,39,51,201,169,89,122,92,124,212,24,250}, + {142,200,252,229,150,10,123,159,206,168,81,231,16,240,92,236,28,144,210,217,0,173,112,127,136,187,15,111,150,138,109,119}, + {210,185,232,239,74,58,15,215,244,15,186,140,243,94,6,166,138,80,213,191,7,4,200,44,138,232,124,15,70,166,80,60}, + {208,70,173,227,58,128,247,7,158,114,44,134,37,236,155,193,175,48,1,24,28,247,142,145,47,197,25,148,3,252,167,179}, + {241,50,50,190,236,125,117,62,114,248,185,248,121,110,167,101,7,19,95,47,189,128,92,51,191,197,203,21,245,254,56,242}, + {8,35,126,152,221,126,219,224,48,87,27,139,201,175,66,173,138,113,5,73,26,181,127,228,40,221,169,219,238,57,93,43}, + {166,222,31,175,196,76,20,78,132,242,56,61,146,97,155,109,209,170,216,48,130,119,160,84,86,85,188,207,77,30,140,126}, + {251,246,135,3,126,6,236,29,185,3,148,209,173,16,2,242,27,110,212,137,5,171,125,180,154,52,232,126,34,220,226,177}, + {122,189,106,75,10,100,25,87,235,251,121,142,37,54,45,38,27,156,146,187,235,146,11,63,196,248,43,228,239,152,176,150}, + {249,68,234,200,175,106,31,122,79,107,167,10,37,124,170,233,66,5,127,233,5,108,234,71,191,189,120,252,248,164,23,146}, + {240,8,108,24,44,3,72,203,70,205,254,161,212,43,190,211,30,58,80,191,231,230,149,33,102,225,39,78,169,87,28,231}, + {95,160,182,6,202,134,90,35,53,96,136,211,134,171,148,211,118,251,48,95,248,21,243,174,83,117,207,18,150,221,29,28}, + {46,95,36,196,148,52,40,77,79,83,152,45,161,99,13,111,188,217,182,203,240,81,177,154,63,31,98,65,11,142,197,24}, + {152,102,154,216,31,251,97,187,236,3,80,121,124,92,13,244,145,112,85,148,115,233,176,177,63,64,130,68,166,15,242,108}, + {47,157,164,241,25,123,61,95,97,4,76,139,183,126,27,22,244,89,189,11,230,254,90,189,241,163,249,126,236,10,78,210}, + {226,212,119,253,81,239,100,23,38,101,72,87,105,45,253,60,103,45,35,156,37,137,251,60,163,35,9,106,16,154,45,119}, + {57,101,29,22,86,253,64,71,187,107,116,30,238,144,148,48,0,227,142,231,144,235,31,81,176,45,10,93,225,205,164,242}, + {193,60,149,62,156,153,43,108,5,77,156,134,113,145,113,111,47,126,75,27,129,110,204,69,79,155,127,123,13,191,43,221}, + {40,252,175,146,145,151,124,167,228,175,139,42,158,118,218,147,194,36,175,191,70,184,100,168,251,241,12,121,124,116,150,53}, + {137,53,41,50,33,208,134,171,193,107,122,236,87,44,133,159,235,80,141,15,54,51,242,62,212,89,171,147,200,10,135,140}, + {52,173,167,245,97,13,31,36,106,202,38,234,75,71,153,19,71,218,63,248,155,14,202,32,206,84,144,180,241,224,180,33}, + {130,236,212,243,13,80,154,170,130,215,24,193,141,101,101,168,215,153,194,150,96,153,173,27,108,9,111,197,60,7,172,217}, + {39,24,96,237,13,251,124,122,234,58,1,166,176,139,228,74,91,191,18,74,25,117,123,119,139,1,176,179,130,133,200,49}, + {135,108,110,216,118,255,247,110,14,250,1,70,15,227,48,188,238,144,45,58,31,18,45,23,220,103,197,59,35,188,183,243}, + {59,60,133,102,147,72,54,52,175,218,110,6,20,238,236,143,221,118,254,225,212,21,86,202,90,58,152,199,48,197,95,182}, + {51,38,100,77,150,15,128,241,49,163,156,43,131,210,175,131,148,239,188,253,239,68,38,174,91,253,231,127,56,77,194,119}, + {43,75,147,223,200,128,246,99,53,144,97,248,156,143,22,49,63,52,25,172,135,115,71,208,209,169,242,131,232,185,9,159}, + {72,100,21,171,53,71,79,134,164,152,237,173,26,184,165,153,158,133,172,216,74,232,190,206,30,247,0,133,14,153,102,60}, + {157,38,1,210,164,205,77,143,52,65,73,133,72,122,248,162,212,199,0,145,19,35,54,117,137,14,135,105,63,81,144,235}, + {253,3,6,26,136,2,66,96,106,120,74,93,73,149,57,185,179,34,114,254,238,89,214,249,89,134,63,107,246,153,54,65}, + {196,127,157,234,203,32,233,90,251,147,116,243,54,34,152,23,113,128,143,41,35,171,220,236,200,29,59,57,81,216,242,46}, + {189,88,70,51,3,225,206,243,44,236,56,56,63,27,10,70,38,118,146,59,244,21,230,106,99,190,212,77,221,42,67,119}, + {96,67,95,208,121,23,46,57,171,108,102,161,216,172,175,73,159,168,123,35,51,75,193,132,253,144,246,222,228,201,23,120}, + {80,100,100,236,81,142,247,64,196,4,194,165,131,253,155,207,59,201,241,174,81,150,188,140,106,66,123,104,218,67,145,225}, + {233,72,18,18,154,96,44,46,69,98,137,231,214,88,100,165,3,75,237,52,80,33,116,228,43,128,227,6,227,217,76,187}, + {43,62,58,85,209,87,135,23,116,39,173,126,145,132,233,35,14,143,64,228,200,245,115,249,221,87,246,141,46,248,100,149}, + {64,158,173,19,54,201,125,205,64,105,92,171,243,239,180,235,148,208,199,169,144,13,196,138,184,75,87,249,102,183,126,43}, + {19,113,230,38,129,48,147,11,124,8,111,128,153,85,193,126,61,154,198,200,239,194,164,107,68,141,42,46,56,69,33,98}, + {24,83,121,203,216,158,47,158,106,131,35,241,108,240,206,28,173,12,170,244,188,196,51,234,225,185,32,12,113,236,151,236}, + {248,159,134,88,110,15,245,200,135,10,19,194,156,195,9,247,186,157,233,66,255,55,66,40,70,31,13,43,11,111,10,230}, + {115,32,32,108,246,168,201,224,61,168,100,219,252,25,55,139,127,219,33,52,24,76,69,66,108,103,119,186,96,134,30,172}, + {231,137,251,196,111,109,126,243,38,184,15,33,198,220,208,33,59,108,93,74,212,123,38,136,118,183,19,173,181,143,188,221}, + {110,142,138,114,250,226,80,42,161,22,196,158,214,195,61,114,158,160,103,242,24,249,73,36,79,200,62,23,67,249,127,233}, + {239,172,33,52,11,26,217,131,181,27,143,107,112,67,36,57,94,240,68,167,75,36,103,79,98,132,210,155,149,60,209,161}, + {6,217,152,202,221,143,3,38,149,101,61,144,40,23,137,233,163,16,12,229,171,154,216,148,14,205,132,185,238,71,249,112}, + {6,135,247,173,18,176,22,216,166,110,161,143,141,200,221,129,42,79,83,173,174,132,231,147,232,175,117,130,2,31,93,14}, + {206,30,35,121,193,167,76,209,105,93,144,225,202,208,155,182,114,69,152,249,191,40,241,150,74,237,103,141,45,134,49,150}, + {145,47,221,170,77,40,173,100,195,78,80,9,96,127,171,225,209,30,146,84,132,80,124,73,136,250,118,185,99,198,43,199}, + {205,249,166,148,75,51,38,174,72,78,240,79,133,244,142,19,70,159,50,81,53,205,71,30,104,21,48,115,35,67,138,109}, + {117,117,96,45,99,75,192,252,46,168,191,224,36,237,231,142,215,231,57,205,200,223,55,199,229,183,115,121,31,33,190,65}, + {193,32,91,37,76,201,20,214,211,232,4,199,153,114,132,79,182,60,248,77,231,125,36,85,96,131,88,21,129,8,12,254}, + {173,240,96,2,195,99,177,226,68,136,188,49,84,64,250,149,78,173,55,99,107,69,7,98,140,191,148,157,137,64,57,253}, + {119,134,61,169,0,75,34,229,11,132,226,236,8,126,158,37,140,35,100,188,235,250,43,92,241,191,144,35,62,158,192,194}, + {92,225,6,97,141,108,210,197,69,239,217,18,245,137,32,30,244,109,38,198,48,32,13,219,142,47,192,78,4,86,66,146}, + {75,67,250,11,172,214,74,39,6,155,217,211,40,248,114,121,85,162,145,159,43,211,53,203,221,189,68,127,205,54,116,114}, + {20,207,210,24,33,88,119,199,31,61,106,27,94,223,248,77,172,83,39,188,217,206,87,250,252,38,206,58,2,113,194,248}, + {77,228,48,160,181,122,36,55,119,132,115,250,186,94,158,181,32,107,7,234,127,48,192,30,17,88,200,152,147,12,19,139}, + {0,85,143,145,217,163,110,101,94,145,23,188,73,70,35,131,56,156,39,40,139,38,11,113,24,155,9,1,103,240,219,86}, + {202,103,195,152,83,118,152,164,128,218,18,106,71,167,100,220,1,129,233,117,55,58,2,173,24,163,2,68,28,27,161,123}, + {162,179,114,79,63,57,44,81,193,33,56,180,102,58,185,3,70,217,121,210,171,203,151,18,81,228,82,143,252,240,97,232}, + {106,112,23,50,29,210,39,79,57,12,122,158,177,133,83,96,21,12,240,106,115,15,239,159,86,17,166,198,166,144,68,131}, + {242,83,31,132,61,78,147,229,73,88,255,37,96,242,142,208,96,30,12,65,15,166,34,212,185,19,37,196,234,33,166,151}, + {6,103,172,137,117,164,200,126,96,32,78,249,8,9,121,182,225,39,158,28,170,212,240,198,33,82,172,221,48,191,250,100}, + {241,165,131,211,163,174,119,205,198,110,254,246,41,123,207,207,233,245,144,31,180,78,131,233,236,243,226,255,93,157,226,206}, + {18,32,225,235,121,109,146,205,229,146,24,56,24,233,22,126,111,33,133,159,249,31,175,203,2,41,57,167,207,53,236,206}, + {228,182,61,134,80,248,152,169,144,228,86,31,210,36,187,230,104,176,123,182,92,161,98,225,228,95,8,126,179,188,115,118}, + {49,236,81,17,2,139,29,237,148,53,47,163,234,48,26,98,132,219,243,15,45,42,104,62,63,171,30,136,14,40,174,109}, + {33,217,207,179,131,181,1,204,249,19,229,30,156,109,111,164,27,182,181,77,81,125,9,245,26,188,57,29,171,9,47,192}, + {236,78,246,110,90,65,156,79,220,93,140,241,38,133,101,190,143,22,91,102,47,73,132,2,22,121,87,44,105,189,228,180}, + {245,221,226,170,131,224,135,73,20,30,235,241,107,173,155,180,184,216,168,105,219,47,44,188,238,195,28,137,94,120,174,91}, + {8,110,37,59,118,72,82,221,109,207,92,19,105,210,153,89,229,172,147,205,252,51,0,133,51,39,92,169,81,25,113,18}, + {51,31,171,63,97,168,57,202,66,43,203,171,187,15,254,191,246,7,131,10,3,57,222,127,141,185,51,175,75,110,249,4}, + {241,246,125,43,103,239,237,44,122,195,143,51,187,182,68,211,122,192,110,133,60,55,181,156,118,151,66,42,142,233,132,34}, + {2,41,17,26,198,119,88,167,221,59,136,122,82,120,126,136,179,22,219,44,233,104,217,7,148,253,9,120,150,203,254,237}, + {125,90,104,48,37,34,117,80,250,44,224,225,239,233,34,113,20,30,116,156,8,71,218,236,40,109,90,225,65,250,159,108}, + {227,109,59,1,58,16,245,87,220,24,30,226,66,198,241,233,56,135,231,193,211,152,219,126,146,145,2,63,45,26,101,128}, + {113,187,8,166,79,70,149,53,130,231,56,237,79,78,172,236,61,72,102,223,207,79,138,186,125,207,95,0,177,15,132,122}, + {93,227,44,20,223,204,200,210,52,230,156,36,182,136,110,83,212,117,127,20,116,192,95,155,246,9,93,2,88,150,91,175}, + {156,159,107,251,13,107,248,203,242,51,231,164,48,88,246,149,122,70,55,125,192,227,47,76,143,7,212,219,249,226,91,20}, + {155,169,171,165,88,143,193,192,229,174,23,49,24,155,232,133,248,158,173,112,162,42,89,62,236,107,89,123,133,124,54,150}, + {26,62,104,111,173,4,224,251,190,230,249,253,27,212,248,115,63,69,100,77,7,29,186,147,98,124,34,222,64,48,49,2}, + {187,42,244,170,51,253,205,98,135,221,225,10,161,197,254,133,41,49,62,82,9,165,246,119,57,111,103,87,234,183,118,119}, + {13,90,122,148,215,139,219,237,185,114,250,70,116,26,1,229,181,21,41,198,156,62,65,116,102,65,232,237,83,231,46,123}, + {173,73,74,2,64,170,144,40,211,161,103,64,184,199,221,15,119,56,55,58,32,155,79,206,222,17,202,243,85,7,249,32}, + {91,105,22,97,41,149,73,204,172,72,190,52,82,126,42,195,82,141,250,205,139,134,76,38,99,191,208,128,76,201,55,231}, + {127,124,129,161,81,20,51,3,237,224,90,78,3,255,236,201,174,25,159,192,35,38,221,205,117,196,123,153,131,97,173,41}, + {235,79,40,53,50,46,91,206,26,218,236,208,101,116,229,44,123,135,18,53,252,116,102,73,71,88,173,160,24,196,88,153}, + {164,254,126,2,194,185,7,81,241,195,17,238,106,157,143,211,114,205,13,51,6,145,23,226,4,20,99,74,71,42,49,39}, + {203,123,250,217,215,118,221,47,96,108,78,133,238,243,192,231,94,7,153,53,191,65,197,139,131,119,1,241,107,153,115,69}, + {127,92,207,211,116,218,76,193,246,23,111,48,131,110,18,170,173,143,73,65,103,209,153,66,51,108,250,130,234,97,143,31}, + {226,156,59,127,152,20,194,27,95,223,50,111,146,27,26,216,73,45,195,208,255,45,214,208,129,172,213,207,4,213,28,172}, + {207,188,210,60,233,151,159,85,160,172,249,57,189,94,226,240,173,18,186,146,117,178,6,183,175,114,227,103,89,124,73,60}, + {164,141,12,199,217,10,241,247,45,93,212,32,193,214,246,251,81,32,178,225,232,253,224,210,26,214,89,22,84,132,155,7}, + {204,196,172,188,163,217,81,173,134,119,178,82,23,75,105,24,147,9,9,245,75,228,228,161,166,124,93,87,233,144,56,163}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {235,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {235,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {236,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {236,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {238,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {238,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {239,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {239,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {216,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {216,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {217,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {217,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {218,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {218,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {219,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {219,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {220,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {220,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {197,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {197,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {198,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {198,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {199,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {199,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {200,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {200,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {201,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {201,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {178,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {178,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {179,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {179,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {180,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {180,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {181,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {181,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {182,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {182,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {159,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {159,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {160,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {160,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {161,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {161,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {162,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {162,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {163,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {163,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {140,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {140,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {141,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {141,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {142,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {142,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {143,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {143,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {144,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {144,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {121,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {121,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {122,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {122,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {123,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {123,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {124,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {124,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {125,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {125,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, +} ; + +static void test_nG_merged25519_impl(long long impl) +{ + unsigned char *q = test_nG_merged25519_q; + unsigned char *n = test_nG_merged25519_n; + unsigned char *q2 = test_nG_merged25519_q2; + unsigned char *n2 = test_nG_merged25519_n2; + long long qlen = crypto_nG_POINTBYTES; + long long nlen = crypto_nG_SCALARBYTES; + + if (targeti && strcmp(targeti,lib25519_dispatch_nG_merged25519_implementation(impl))) return; + if (impl >= 0) { + crypto_nG = lib25519_dispatch_nG_merged25519(impl); + printf("nG_merged25519 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_nG_merged25519_implementation(impl),lib25519_dispatch_nG_merged25519_compiler(impl)); + } else { + crypto_nG = lib25519_nG_merged25519; + printf("nG_merged25519 selected implementation %s compiler %s\n",lib25519_nG_merged25519_implementation(),lib25519_nG_merged25519_compiler()); + } + for (long long checksumbig = 0;checksumbig < 2;++checksumbig) { + long long loops = checksumbig ? 512 : 64; + + checksum_clear(); + + for (long long loop = 0;loop < loops;++loop) { + + output_prepare(q2,q,qlen); + input_prepare(n2,n,nlen); + crypto_nG(q,n); + checksum(q,qlen); + output_compare(q2,q,qlen,"crypto_nG"); + input_compare(n2,n,nlen,"crypto_nG"); + + double_canary(q2,q,qlen); + double_canary(n2,n,nlen); + crypto_nG(q2,n2); + if (memcmp(q2,q,qlen) != 0) fail("failure: crypto_nG is nondeterministic\n"); + + double_canary(q2,q,qlen); + double_canary(n2,n,nlen); + crypto_nG(n2,n2); + if (memcmp(n2,q,qlen) != 0) fail("failure: crypto_nG does not handle n=q overlap\n"); + memcpy(n2,n,nlen); + } + checksum_expected(nG_merged25519_checksums[checksumbig]); + } + for (long long precomp = 0;precomp < precomputed_nG_merged25519_NUM;++precomp) { + output_prepare(q2,q,crypto_nG_POINTBYTES); + input_prepare(n2,n,crypto_nG_SCALARBYTES); + memcpy(n,precomputed_nG_merged25519_n[precomp],crypto_nG_SCALARBYTES); + memcpy(n2,precomputed_nG_merged25519_n[precomp],crypto_nG_SCALARBYTES); + crypto_nG(q,n); + if (memcmp(q,precomputed_nG_merged25519_q[precomp],crypto_nG_POINTBYTES)) { + fail("failure: crypto_nG fails precomputed test vectors\n"); + printf("expected q: "); + for (long long pos = 0;pos < crypto_nG_POINTBYTES;++pos) printf("%02x",precomputed_nG_merged25519_q[precomp][pos]); + printf("\n"); + printf("received q: "); + for (long long pos = 0;pos < crypto_nG_POINTBYTES;++pos) printf("%02x",q[pos]); + printf("\n"); + } + output_compare(q2,q,crypto_nG_POINTBYTES,"crypto_nG"); + input_compare(n2,n,crypto_nG_SCALARBYTES,"crypto_nG"); + } +} + +static void test_nG_merged25519(void) +{ + if (targeto && strcmp(targeto,"nG")) return; + if (targetp && strcmp(targetp,"merged25519")) return; + test_nG_merged25519_q = alignedcalloc(crypto_nG_POINTBYTES); + test_nG_merged25519_n = alignedcalloc(crypto_nG_SCALARBYTES); + test_nG_merged25519_q2 = alignedcalloc(crypto_nG_POINTBYTES); + test_nG_merged25519_n2 = alignedcalloc(crypto_nG_SCALARBYTES); + + for (long long offset = 0;offset < 2;++offset) { + printf("nG_merged25519 offset %lld\n",offset); + for (long long impl = -1;impl < lib25519_numimpl_nG_merged25519();++impl) + forked(test_nG_merged25519_impl,impl); + ++test_nG_merged25519_q; + ++test_nG_merged25519_n; + ++test_nG_merged25519_q2; + ++test_nG_merged25519_n2; + } +} +#undef crypto_nG_SCALARBYTES +#undef crypto_nG_POINTBYTES + +static const char *nG_montgomery25519_checksums[] = { + "5c8a5d8b32e3d26b33071779ce9191095d7bd4ab3bb6a40b68976e41a98cfc3b", + "2becc8cd065820fcf82e53a03c5b5235582480fc11d072f2bd15153aebd4e057", +} ; + +static void (*crypto_nG)(unsigned char *,const unsigned char *); +#define crypto_nG_SCALARBYTES lib25519_nG_montgomery25519_SCALARBYTES +#define crypto_nG_POINTBYTES lib25519_nG_montgomery25519_POINTBYTES + +static unsigned char *test_nG_montgomery25519_q; +static unsigned char *test_nG_montgomery25519_n; +static unsigned char *test_nG_montgomery25519_q2; +static unsigned char *test_nG_montgomery25519_n2; + +#define precomputed_nG_montgomery25519_NUM 204 + +static const unsigned char precomputed_nG_montgomery25519_q[precomputed_nG_montgomery25519_NUM][crypto_nG_POINTBYTES] = { + {44,101,73,224,192,197,182,193,198,236,100,246,66,1,61,81,166,127,157,110,54,66,251,198,92,55,173,36,249,59,233,126}, + {22,233,216,103,29,176,73,7,154,58,234,156,164,185,58,67,63,98,25,70,163,27,197,131,27,124,136,194,50,127,27,91}, + {11,119,200,123,188,243,40,196,247,76,172,56,18,200,54,108,199,218,66,158,249,60,59,253,46,128,27,35,33,98,140,121}, + {232,150,156,228,44,205,185,197,125,253,134,159,89,140,116,166,52,204,93,160,165,235,252,106,74,24,135,3,220,188,153,18}, + {251,17,37,208,222,241,58,226,178,13,172,0,33,142,148,168,121,36,132,171,245,230,144,7,155,170,104,45,90,96,96,72}, + {42,58,16,107,223,183,177,33,181,110,224,163,48,54,79,177,87,245,128,181,167,50,136,8,250,202,95,210,148,233,40,116}, + {97,239,71,43,224,161,158,90,19,122,241,102,97,255,166,42,96,161,158,9,11,221,175,222,163,228,209,79,49,242,182,119}, + {154,114,106,210,32,53,205,118,189,69,147,82,82,194,188,134,3,234,129,186,111,226,201,222,157,165,205,54,110,139,120,83}, + {255,124,30,66,230,132,210,253,61,154,13,174,253,37,123,239,111,36,77,63,2,122,199,142,34,154,140,2,60,18,193,38}, + {233,203,176,130,48,239,30,31,73,239,234,82,72,96,143,113,37,101,28,17,113,90,196,238,212,68,64,137,165,236,73,32}, + {235,43,183,250,73,96,207,60,226,212,213,174,72,40,62,49,32,238,19,237,100,203,157,20,16,80,17,188,169,199,87,69}, + {201,14,27,106,204,26,136,248,200,36,109,120,34,56,120,195,103,145,198,66,151,130,68,56,51,120,64,116,101,166,148,34}, + {18,17,188,202,61,40,175,192,37,198,66,1,209,60,129,254,194,76,254,181,30,207,172,187,242,254,97,118,71,131,64,121}, + {37,224,252,164,235,13,240,252,189,252,60,188,200,216,143,15,252,125,135,25,180,38,248,255,215,211,197,207,205,250,234,6}, + {109,65,57,126,39,59,194,55,244,212,93,233,113,222,214,19,240,116,36,152,0,118,101,227,49,251,93,111,143,23,201,29}, + {140,101,22,137,6,44,213,100,234,203,208,180,139,115,83,102,43,195,100,183,105,9,246,30,25,84,161,100,50,117,182,83}, + {203,46,169,217,216,136,69,179,134,217,182,110,81,152,110,71,18,222,44,153,11,72,221,54,218,73,175,50,62,227,189,105}, + {128,93,5,190,107,222,19,204,217,12,113,236,162,176,166,25,251,40,252,164,171,43,90,44,6,77,20,164,154,63,158,7}, + {9,218,176,210,206,47,135,144,154,202,245,156,198,134,209,172,52,35,134,21,218,42,99,135,81,134,110,255,138,126,248,34}, + {8,3,202,49,25,245,106,49,116,110,42,158,86,222,129,254,168,26,255,3,247,11,249,170,190,211,250,155,24,150,192,41}, + {228,227,141,214,206,35,141,24,202,113,127,15,243,143,213,65,42,116,208,171,234,179,152,66,10,169,171,57,71,192,159,85}, + {207,123,193,30,219,178,11,72,105,117,4,65,4,162,57,212,54,199,105,198,19,197,31,67,143,39,113,74,202,173,159,91}, + {126,135,38,197,155,193,166,187,158,210,160,0,248,215,35,59,136,120,38,73,173,186,23,18,95,9,248,187,43,13,199,101}, + {90,163,30,112,14,2,97,154,84,67,176,71,190,143,20,7,240,216,14,241,210,1,250,181,129,147,94,225,35,32,40,76}, + {43,176,209,174,33,167,159,219,239,213,211,254,235,136,64,88,102,86,126,197,24,230,200,108,26,105,230,132,70,203,15,60}, + {18,108,13,98,125,12,35,117,78,14,173,144,130,233,220,103,61,48,61,138,173,73,78,230,43,146,200,198,202,68,166,114}, + {36,32,32,180,194,114,27,225,13,172,80,245,211,245,17,217,34,50,62,79,248,217,44,43,7,129,4,138,24,80,143,79}, + {14,21,190,58,193,178,32,136,216,132,1,159,253,136,204,25,198,161,209,166,24,212,123,57,204,106,194,185,61,102,133,114}, + {213,51,228,40,129,146,130,248,131,62,14,178,172,217,20,149,191,212,249,72,1,34,156,61,74,34,226,105,17,84,209,80}, + {129,167,201,196,132,169,163,1,17,105,68,159,113,135,169,108,40,212,23,159,143,238,70,113,27,52,199,197,95,146,85,126}, + {120,103,152,49,82,245,180,210,18,103,251,55,45,145,67,83,21,117,18,175,181,22,48,61,206,21,154,250,12,134,157,23}, + {127,149,123,121,135,208,71,131,79,205,255,68,95,48,168,111,64,113,226,65,209,97,166,86,123,14,198,194,84,249,147,57}, + {137,150,86,87,214,209,137,142,54,23,127,97,186,99,246,136,84,195,89,22,226,112,3,222,181,48,26,113,72,46,18,68}, + {120,108,163,209,215,42,47,22,132,165,178,217,23,235,221,94,11,144,55,102,118,56,235,203,26,31,235,91,2,233,9,57}, + {51,39,77,39,12,64,251,237,75,31,86,190,173,24,121,116,204,235,21,66,28,17,160,215,115,32,87,235,99,0,70,73}, + {156,178,123,100,84,35,125,66,241,126,52,112,26,121,95,96,46,13,32,86,1,209,114,182,78,32,135,74,149,53,56,89}, + {64,79,89,242,159,172,86,45,6,141,239,99,98,223,140,102,111,250,187,174,139,78,208,60,128,208,255,239,40,124,197,100}, + {83,156,177,241,3,80,35,145,181,118,166,248,17,239,23,170,31,152,148,199,160,196,98,107,210,33,239,125,129,173,11,112}, + {243,184,108,115,167,61,66,115,189,103,208,101,151,125,150,73,235,160,215,7,167,34,113,116,91,10,18,21,241,157,169,25}, + {219,184,178,42,76,242,99,76,211,155,123,47,162,5,41,170,253,180,125,151,68,141,133,133,149,250,27,187,31,238,212,31}, + {24,77,226,254,82,120,244,151,250,191,142,87,196,80,117,173,128,35,37,190,63,246,152,209,55,109,125,174,176,123,195,42}, + {111,125,87,59,189,141,150,157,177,154,49,224,192,185,125,47,118,225,94,50,164,225,47,31,26,59,3,110,175,121,255,63}, + {74,161,209,191,143,72,135,114,36,221,77,51,77,61,210,243,82,42,233,127,149,62,173,6,142,107,76,119,122,52,0,24}, + {240,17,65,128,222,188,51,179,44,254,96,233,152,221,248,113,109,126,143,3,165,24,49,239,182,203,195,77,153,21,26,16}, + {70,60,90,37,152,210,72,119,75,248,250,200,153,217,188,179,196,241,189,227,97,221,11,237,158,126,217,113,77,144,83,35}, + {129,118,6,79,108,115,231,206,173,24,242,100,63,20,27,107,141,232,187,210,82,114,175,42,14,76,72,103,186,85,27,46}, + {219,61,28,233,38,51,65,2,96,178,192,54,95,214,207,115,46,121,124,181,251,20,214,205,199,27,84,8,85,19,48,103}, + {165,191,33,172,185,254,208,67,197,9,199,247,156,53,228,176,95,45,236,46,250,120,42,230,68,117,25,236,2,161,233,38}, + {2,194,163,242,105,204,65,204,69,54,166,138,0,160,39,161,68,206,132,81,40,122,143,120,238,196,216,243,243,86,9,3}, + {59,49,73,91,67,32,68,135,249,39,2,143,248,204,34,10,163,154,194,12,173,67,107,115,194,162,64,117,168,63,45,68}, + {118,185,133,0,163,216,37,228,197,73,162,158,208,118,252,196,144,118,90,172,3,170,49,62,40,161,26,79,99,207,48,73}, + {151,140,64,139,222,109,163,24,8,7,171,199,62,167,194,130,220,166,14,55,133,56,215,239,100,79,12,215,59,35,47,5}, + {146,200,111,108,165,8,233,118,47,44,9,200,173,98,87,150,201,29,12,120,52,115,41,9,102,238,154,13,118,165,80,8}, + {219,85,213,7,35,123,174,0,146,57,249,221,49,106,153,177,125,210,202,249,215,106,135,220,50,108,101,221,120,222,209,121}, + {238,52,219,74,35,150,194,118,91,22,192,59,176,21,39,105,71,79,179,208,28,50,48,174,222,202,50,32,17,86,136,74}, + {238,83,44,137,90,53,130,229,180,124,10,146,170,228,211,83,122,247,24,29,38,201,8,67,244,71,153,35,158,158,248,94}, + {92,28,64,43,179,201,212,121,19,176,150,159,19,34,105,211,186,150,29,79,217,30,43,18,91,244,147,30,37,50,145,73}, + {42,123,79,236,5,178,213,172,228,33,53,20,223,155,22,83,178,60,197,76,216,66,253,72,234,255,100,190,187,215,47,111}, + {250,177,147,217,233,160,186,29,119,105,104,242,246,148,130,225,133,120,254,157,80,7,137,38,116,114,236,211,201,59,47,56}, + {129,77,30,15,126,37,8,178,208,227,146,4,183,147,231,48,102,168,28,240,188,210,90,245,217,121,55,56,86,40,22,112}, + {121,66,2,74,6,6,88,169,97,137,221,1,33,78,114,235,25,147,99,206,254,85,152,219,170,41,133,78,143,99,59,127}, + {170,119,56,39,128,28,95,151,68,67,79,245,138,27,171,172,185,60,193,43,24,47,44,22,133,51,192,33,91,235,206,106}, + {8,65,6,229,48,237,228,7,186,78,20,76,185,115,71,216,3,174,43,115,161,223,182,143,26,77,223,136,88,179,28,15}, + {97,202,213,1,93,35,63,31,114,140,174,116,11,159,132,134,43,215,202,227,193,252,196,226,200,189,101,97,25,250,52,110}, + {144,90,151,40,70,230,158,150,37,254,76,138,189,139,90,226,169,139,212,188,116,43,13,72,178,251,51,114,187,178,133,105}, + {10,188,206,205,136,173,60,128,77,197,17,231,223,211,230,220,17,104,1,218,62,134,163,191,85,109,102,124,51,150,122,56}, + {208,24,51,144,1,211,11,51,209,140,140,180,150,71,16,72,255,82,76,63,254,109,43,14,72,89,12,117,77,196,221,112}, + {50,40,208,33,127,78,209,52,163,161,65,165,100,201,185,211,194,83,220,236,171,131,64,9,243,32,91,219,61,241,131,20}, + {255,255,52,23,148,8,10,129,27,228,21,242,65,164,23,127,138,187,31,100,178,128,195,40,228,149,121,155,207,184,181,12}, + {169,10,50,75,199,215,160,218,225,10,166,49,42,98,157,131,106,197,113,14,21,16,69,162,127,31,115,83,26,50,220,44}, + {33,128,135,172,244,183,44,121,229,229,30,190,63,226,46,39,242,3,248,58,154,233,198,50,245,4,78,235,192,222,16,116}, + {144,75,112,204,177,170,103,101,100,245,2,231,54,239,231,165,204,193,16,59,117,199,192,107,107,218,95,48,56,38,110,59}, + {236,116,148,250,53,204,255,155,189,174,49,31,227,4,199,185,208,101,4,144,61,99,214,209,250,189,47,68,87,244,255,119}, + {190,179,239,119,211,163,178,156,228,21,15,252,208,25,41,206,154,89,209,161,71,3,248,190,218,248,185,156,20,160,126,76}, + {151,247,57,97,74,63,212,198,121,181,59,203,196,23,78,158,248,155,40,115,225,235,68,103,24,145,186,35,48,255,78,29}, + {91,88,13,142,88,152,119,94,151,178,38,105,65,203,224,246,198,72,71,98,229,32,31,51,217,79,138,34,198,58,179,70}, + {113,242,158,115,21,159,155,180,109,128,161,142,51,244,151,129,226,247,98,58,15,136,15,211,29,232,125,88,18,156,4,87}, + {59,136,166,195,70,104,62,128,52,248,9,234,7,194,70,131,203,213,54,0,194,151,73,250,173,41,5,68,170,108,31,97}, + {202,17,137,96,105,114,181,212,253,36,207,127,122,175,226,141,188,173,58,232,56,248,91,180,241,125,166,251,235,85,42,112}, + {170,194,130,44,72,120,74,92,93,148,117,38,246,71,92,140,114,84,251,163,98,26,115,180,126,160,230,40,229,122,74,88}, + {37,181,156,223,73,148,255,25,225,127,31,176,26,136,85,198,118,20,104,38,18,215,103,66,160,33,238,135,14,72,65,85}, + {31,131,56,113,246,52,240,82,43,199,215,249,193,40,111,135,237,109,39,35,12,11,42,67,129,73,56,188,52,215,185,88}, + {169,156,99,85,216,243,253,94,165,4,157,157,50,105,112,162,106,23,170,55,67,80,69,166,131,249,157,9,223,46,95,107}, + {70,37,114,73,84,70,104,61,216,163,160,43,161,16,125,139,33,44,118,108,80,0,40,14,175,183,38,130,96,78,152,39}, + {169,247,83,137,121,24,61,102,195,157,195,159,35,145,47,183,46,246,87,52,6,96,168,129,208,74,198,116,5,100,41,21}, + {244,201,218,228,24,195,67,76,89,84,36,108,125,251,247,27,12,181,242,88,132,116,255,121,142,33,45,179,14,63,74,45}, + {235,42,62,230,239,101,137,17,210,137,216,226,83,83,199,183,46,85,55,18,144,218,212,187,11,229,21,108,58,2,154,16}, + {115,196,14,7,223,5,34,5,145,161,211,231,159,143,233,118,19,24,78,249,104,215,51,54,88,168,226,120,163,227,155,38}, + {115,253,197,120,56,153,69,26,253,71,74,213,1,23,182,13,27,7,160,241,108,64,86,196,241,157,106,63,59,102,83,70}, + {166,74,198,146,147,49,106,142,62,179,216,242,183,55,52,108,245,246,139,38,110,64,8,26,208,107,9,188,81,47,146,68}, + {56,254,54,251,73,9,106,208,32,93,47,47,184,0,187,3,250,206,159,119,108,28,207,205,6,107,79,126,117,212,229,104}, + {42,113,184,14,22,84,226,141,134,22,150,26,253,241,96,135,90,28,222,1,178,62,150,181,184,105,88,129,174,162,148,31}, + {99,65,125,140,163,100,187,220,51,93,151,14,223,124,138,182,211,85,220,102,72,111,151,161,197,39,207,150,74,161,195,72}, + {248,127,161,232,101,239,115,61,149,169,29,53,123,150,212,49,199,212,35,26,112,56,50,56,38,192,228,150,254,103,189,37}, + {65,117,211,12,216,225,143,146,33,92,96,43,220,234,33,87,126,58,103,77,161,160,102,185,241,215,210,159,17,71,11,5}, + {221,57,1,167,72,124,145,106,61,123,89,250,26,224,11,219,121,16,207,132,86,104,47,8,29,126,69,51,110,83,43,27}, + {136,160,227,119,24,213,77,220,29,148,198,247,252,173,61,88,71,207,43,69,129,84,18,236,191,3,122,36,144,171,75,20}, + {39,176,114,157,15,77,195,47,98,46,154,106,101,97,186,245,113,93,10,243,11,51,126,171,222,29,36,172,254,185,16,107}, + {4,112,186,26,73,115,35,109,244,30,18,239,197,25,210,206,205,96,194,179,248,102,154,82,203,230,30,234,127,20,47,124}, + {247,1,180,237,7,35,235,55,91,30,219,255,215,219,252,149,109,218,104,100,69,236,67,247,154,161,81,88,69,65,32,118}, + {90,21,64,11,37,11,141,49,46,74,98,219,243,147,68,174,67,63,55,239,169,24,90,91,169,140,138,183,205,46,99,16}, + {82,74,202,211,226,26,97,34,75,225,54,117,19,142,96,216,218,114,149,24,159,148,129,161,240,127,243,22,171,202,34,125}, + {190,106,244,14,253,44,237,59,19,182,46,49,42,4,13,23,206,21,53,123,219,92,219,72,189,254,12,254,222,163,139,112}, + {11,192,78,123,179,201,109,66,134,214,78,204,16,96,195,16,175,13,246,229,141,108,82,77,67,243,128,121,82,195,16,43}, + {59,19,185,127,46,16,161,64,111,171,136,138,68,224,35,109,105,28,245,243,51,65,0,166,142,105,203,98,99,113,14,78}, + {126,41,246,11,112,28,100,230,194,136,26,88,211,173,236,33,44,41,106,174,67,215,91,37,46,49,215,16,209,95,196,8}, + {218,219,136,245,228,2,203,64,153,42,104,191,33,82,145,64,77,113,118,66,59,175,113,230,17,39,108,240,48,135,218,5}, + {215,252,67,88,250,76,235,146,160,67,132,180,99,166,125,255,236,116,0,120,234,205,110,20,121,207,98,60,13,181,143,4}, + {177,225,217,188,205,185,112,112,6,225,160,156,86,13,239,157,124,31,215,163,40,199,131,58,85,193,231,193,206,186,98,77}, + {217,169,80,55,17,90,153,11,148,47,211,56,65,144,161,138,66,5,206,212,207,66,115,159,107,113,126,238,3,82,214,54}, + {106,232,125,67,140,243,175,7,29,77,204,9,36,222,19,112,33,80,108,118,175,181,57,13,53,82,180,200,198,104,114,100}, + {25,167,166,42,250,60,154,221,179,53,153,104,130,229,157,17,231,241,201,107,57,106,224,96,242,13,148,59,97,220,153,42}, + {68,33,236,124,237,226,8,150,133,116,178,140,238,225,215,179,52,244,84,146,197,55,48,62,196,98,118,86,18,69,78,109}, + {33,37,129,47,133,98,239,169,189,200,141,166,43,22,238,225,172,247,225,218,173,149,150,77,179,73,52,25,216,221,41,3}, + {215,39,57,114,185,6,106,47,249,244,241,228,115,218,5,72,202,54,192,107,229,202,220,157,233,113,60,93,190,49,132,127}, + {4,160,84,26,135,171,173,252,81,216,123,198,123,183,81,98,69,205,244,47,30,1,131,217,10,22,97,41,89,219,154,42}, + {134,187,23,244,110,88,203,14,172,152,244,161,178,203,137,72,214,92,117,231,113,66,108,33,14,122,4,43,30,153,41,58}, + {109,131,103,194,88,121,106,20,61,194,0,112,7,219,194,121,205,239,137,238,145,227,176,145,116,169,132,110,222,186,25,13}, + {204,41,112,129,220,87,8,115,81,70,91,107,192,66,116,55,79,98,37,51,156,120,70,3,43,144,95,139,52,48,224,41}, + {134,162,134,212,176,129,0,175,152,87,105,13,210,170,183,174,181,214,22,255,166,217,245,17,157,178,60,67,182,213,243,81}, + {163,57,72,14,105,41,25,105,33,251,68,189,186,30,95,182,210,48,26,251,148,236,40,94,236,6,100,46,116,13,102,73}, + {231,214,186,185,132,85,228,182,28,78,168,61,112,205,229,145,139,97,178,236,91,120,171,153,29,24,190,249,110,159,96,14}, + {18,2,183,113,150,221,15,140,218,124,112,103,112,27,4,89,12,253,76,44,209,86,249,235,77,10,204,164,190,77,237,10}, + {248,99,147,125,98,129,78,142,57,115,131,11,241,197,240,182,57,193,94,193,14,11,136,122,72,116,247,254,53,232,184,73}, + {103,102,33,65,143,34,247,169,101,62,153,147,175,173,107,164,123,7,10,12,57,84,221,14,208,230,35,240,80,156,123,102}, + {131,46,70,237,163,138,5,131,9,132,240,153,214,179,149,218,22,99,31,46,136,7,28,80,213,71,143,234,132,201,142,32}, + {18,236,254,203,182,30,41,246,109,110,144,221,12,121,3,75,88,133,20,228,205,237,237,21,179,34,177,40,34,171,125,37}, + {164,246,166,99,198,192,139,239,233,157,116,118,18,84,11,82,8,253,193,169,18,215,22,128,96,174,105,202,219,183,140,17}, + {47,229,125,163,71,205,98,67,21,40,218,172,95,187,41,7,48,255,246,132,175,196,207,194,237,144,153,95,88,203,59,116}, + {47,229,125,163,71,205,98,67,21,40,218,172,95,187,41,7,48,255,246,132,175,196,207,194,237,144,153,95,88,203,59,116}, + {47,229,125,163,71,205,98,67,21,40,218,172,95,187,41,7,48,255,246,132,175,196,207,194,237,144,153,95,88,203,59,116}, + {47,229,125,163,71,205,98,67,21,40,218,172,95,187,41,7,48,255,246,132,175,196,207,194,237,144,153,95,88,203,59,116}, + {47,229,125,163,71,205,98,67,21,40,218,172,95,187,41,7,48,255,246,132,175,196,207,194,237,144,153,95,88,203,59,116}, + {47,229,125,163,71,205,98,67,21,40,218,172,95,187,41,7,48,255,246,132,175,196,207,194,237,144,153,95,88,203,59,116}, + {195,166,48,25,132,99,114,14,28,223,119,38,243,122,231,159,191,27,92,243,17,18,22,201,77,251,14,81,224,73,208,113}, + {195,166,48,25,132,99,114,14,28,223,119,38,243,122,231,159,191,27,92,243,17,18,22,201,77,251,14,81,224,73,208,113}, + {195,166,48,25,132,99,114,14,28,223,119,38,243,122,231,159,191,27,92,243,17,18,22,201,77,251,14,81,224,73,208,113}, + {195,166,48,25,132,99,114,14,28,223,119,38,243,122,231,159,191,27,92,243,17,18,22,201,77,251,14,81,224,73,208,113}, + {195,166,48,25,132,99,114,14,28,223,119,38,243,122,231,159,191,27,92,243,17,18,22,201,77,251,14,81,224,73,208,113}, + {195,166,48,25,132,99,114,14,28,223,119,38,243,122,231,159,191,27,92,243,17,18,22,201,77,251,14,81,224,73,208,113}, + {195,166,48,25,132,99,114,14,28,223,119,38,243,122,231,159,191,27,92,243,17,18,22,201,77,251,14,81,224,73,208,113}, + {195,166,48,25,132,99,114,14,28,223,119,38,243,122,231,159,191,27,92,243,17,18,22,201,77,251,14,81,224,73,208,113}, + {195,166,48,25,132,99,114,14,28,223,119,38,243,122,231,159,191,27,92,243,17,18,22,201,77,251,14,81,224,73,208,113}, + {195,166,48,25,132,99,114,14,28,223,119,38,243,122,231,159,191,27,92,243,17,18,22,201,77,251,14,81,224,73,208,113}, + {58,19,199,99,205,16,241,198,49,144,137,227,220,29,92,41,147,79,255,160,161,146,18,67,210,38,76,113,3,191,249,11}, + {58,19,199,99,205,16,241,198,49,144,137,227,220,29,92,41,147,79,255,160,161,146,18,67,210,38,76,113,3,191,249,11}, + {58,19,199,99,205,16,241,198,49,144,137,227,220,29,92,41,147,79,255,160,161,146,18,67,210,38,76,113,3,191,249,11}, + {58,19,199,99,205,16,241,198,49,144,137,227,220,29,92,41,147,79,255,160,161,146,18,67,210,38,76,113,3,191,249,11}, + {58,19,199,99,205,16,241,198,49,144,137,227,220,29,92,41,147,79,255,160,161,146,18,67,210,38,76,113,3,191,249,11}, + {58,19,199,99,205,16,241,198,49,144,137,227,220,29,92,41,147,79,255,160,161,146,18,67,210,38,76,113,3,191,249,11}, + {58,19,199,99,205,16,241,198,49,144,137,227,220,29,92,41,147,79,255,160,161,146,18,67,210,38,76,113,3,191,249,11}, + {58,19,199,99,205,16,241,198,49,144,137,227,220,29,92,41,147,79,255,160,161,146,18,67,210,38,76,113,3,191,249,11}, + {58,19,199,99,205,16,241,198,49,144,137,227,220,29,92,41,147,79,255,160,161,146,18,67,210,38,76,113,3,191,249,11}, + {58,19,199,99,205,16,241,198,49,144,137,227,220,29,92,41,147,79,255,160,161,146,18,67,210,38,76,113,3,191,249,11}, + {129,96,75,13,134,130,203,253,136,159,23,146,238,55,240,99,36,115,117,88,2,108,40,255,68,207,86,174,255,137,20,91}, + {129,96,75,13,134,130,203,253,136,159,23,146,238,55,240,99,36,115,117,88,2,108,40,255,68,207,86,174,255,137,20,91}, + {129,96,75,13,134,130,203,253,136,159,23,146,238,55,240,99,36,115,117,88,2,108,40,255,68,207,86,174,255,137,20,91}, + {129,96,75,13,134,130,203,253,136,159,23,146,238,55,240,99,36,115,117,88,2,108,40,255,68,207,86,174,255,137,20,91}, + {129,96,75,13,134,130,203,253,136,159,23,146,238,55,240,99,36,115,117,88,2,108,40,255,68,207,86,174,255,137,20,91}, + {129,96,75,13,134,130,203,253,136,159,23,146,238,55,240,99,36,115,117,88,2,108,40,255,68,207,86,174,255,137,20,91}, + {41,204,100,115,229,19,170,59,195,143,92,9,18,123,202,155,144,96,108,128,22,254,48,177,149,5,166,70,76,3,74,5}, + {41,204,100,115,229,19,170,59,195,143,92,9,18,123,202,155,144,96,108,128,22,254,48,177,149,5,166,70,76,3,74,5}, + {41,204,100,115,229,19,170,59,195,143,92,9,18,123,202,155,144,96,108,128,22,254,48,177,149,5,166,70,76,3,74,5}, + {41,204,100,115,229,19,170,59,195,143,92,9,18,123,202,155,144,96,108,128,22,254,48,177,149,5,166,70,76,3,74,5}, + {239,19,0,85,228,133,238,15,35,42,93,205,223,5,24,254,95,49,91,161,116,208,209,231,125,157,104,224,183,152,206,121}, + {239,19,0,85,228,133,238,15,35,42,93,205,223,5,24,254,95,49,91,161,116,208,209,231,125,157,104,224,183,152,206,121}, + {239,19,0,85,228,133,238,15,35,42,93,205,223,5,24,254,95,49,91,161,116,208,209,231,125,157,104,224,183,152,206,121}, + {239,19,0,85,228,133,238,15,35,42,93,205,223,5,24,254,95,49,91,161,116,208,209,231,125,157,104,224,183,152,206,121}, + {239,19,0,85,228,133,238,15,35,42,93,205,223,5,24,254,95,49,91,161,116,208,209,231,125,157,104,224,183,152,206,121}, + {239,19,0,85,228,133,238,15,35,42,93,205,223,5,24,254,95,49,91,161,116,208,209,231,125,157,104,224,183,152,206,121}, + {239,19,0,85,228,133,238,15,35,42,93,205,223,5,24,254,95,49,91,161,116,208,209,231,125,157,104,224,183,152,206,121}, + {239,19,0,85,228,133,238,15,35,42,93,205,223,5,24,254,95,49,91,161,116,208,209,231,125,157,104,224,183,152,206,121}, + {239,19,0,85,228,133,238,15,35,42,93,205,223,5,24,254,95,49,91,161,116,208,209,231,125,157,104,224,183,152,206,121}, + {239,19,0,85,228,133,238,15,35,42,93,205,223,5,24,254,95,49,91,161,116,208,209,231,125,157,104,224,183,152,206,121}, + {186,100,129,102,128,121,51,14,111,124,248,226,230,194,177,153,116,171,27,164,13,96,68,219,72,119,208,151,145,146,43,25}, + {186,100,129,102,128,121,51,14,111,124,248,226,230,194,177,153,116,171,27,164,13,96,68,219,72,119,208,151,145,146,43,25}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {49,69,121,140,250,11,254,249,40,76,73,64,54,199,254,133,6,8,187,230,229,221,241,248,52,191,158,201,205,76,149,38}, + {49,69,121,140,250,11,254,249,40,76,73,64,54,199,254,133,6,8,187,230,229,221,241,248,52,191,158,201,205,76,149,38}, + {49,69,121,140,250,11,254,249,40,76,73,64,54,199,254,133,6,8,187,230,229,221,241,248,52,191,158,201,205,76,149,38}, + {49,69,121,140,250,11,254,249,40,76,73,64,54,199,254,133,6,8,187,230,229,221,241,248,52,191,158,201,205,76,149,38}, + {49,69,121,140,250,11,254,249,40,76,73,64,54,199,254,133,6,8,187,230,229,221,241,248,52,191,158,201,205,76,149,38}, + {49,69,121,140,250,11,254,249,40,76,73,64,54,199,254,133,6,8,187,230,229,221,241,248,52,191,158,201,205,76,149,38}, + {49,69,121,140,250,11,254,249,40,76,73,64,54,199,254,133,6,8,187,230,229,221,241,248,52,191,158,201,205,76,149,38}, + {49,69,121,140,250,11,254,249,40,76,73,64,54,199,254,133,6,8,187,230,229,221,241,248,52,191,158,201,205,76,149,38}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {251,78,104,221,156,70,174,92,92,11,53,30,237,92,63,143,20,113,21,125,104,12,117,217,183,241,115,24,213,66,211,32}, + {18,60,113,251,175,3,10,192,89,8,28,98,103,78,130,248,100,186,27,194,145,77,83,69,230,171,87,109,26,188,18,28}, + {18,60,113,251,175,3,10,192,89,8,28,98,103,78,130,248,100,186,27,194,145,77,83,69,230,171,87,109,26,188,18,28}, + {18,60,113,251,175,3,10,192,89,8,28,98,103,78,130,248,100,186,27,194,145,77,83,69,230,171,87,109,26,188,18,28}, + {18,60,113,251,175,3,10,192,89,8,28,98,103,78,130,248,100,186,27,194,145,77,83,69,230,171,87,109,26,188,18,28}, + {18,60,113,251,175,3,10,192,89,8,28,98,103,78,130,248,100,186,27,194,145,77,83,69,230,171,87,109,26,188,18,28}, + {18,60,113,251,175,3,10,192,89,8,28,98,103,78,130,248,100,186,27,194,145,77,83,69,230,171,87,109,26,188,18,28}, + {18,60,113,251,175,3,10,192,89,8,28,98,103,78,130,248,100,186,27,194,145,77,83,69,230,171,87,109,26,188,18,28}, + {18,60,113,251,175,3,10,192,89,8,28,98,103,78,130,248,100,186,27,194,145,77,83,69,230,171,87,109,26,188,18,28}, + {18,60,113,251,175,3,10,192,89,8,28,98,103,78,130,248,100,186,27,194,145,77,83,69,230,171,87,109,26,188,18,28}, + {18,60,113,251,175,3,10,192,89,8,28,98,103,78,130,248,100,186,27,194,145,77,83,69,230,171,87,109,26,188,18,28}, +} ; + +static const unsigned char precomputed_nG_montgomery25519_n[precomputed_nG_montgomery25519_NUM][crypto_nG_SCALARBYTES] = { + {248,181,1,40,168,159,146,159,7,139,148,246,114,42,35,194,81,211,62,44,126,145,190,89,62,58,107,20,218,93,118,95}, + {14,232,69,146,96,32,217,118,165,148,112,63,5,13,120,17,228,235,88,112,98,223,9,159,154,56,205,253,30,183,254,241}, + {11,163,86,36,137,113,113,229,202,180,1,160,250,8,230,243,132,17,69,51,144,151,87,27,156,223,140,110,112,87,53,140}, + {16,216,149,3,205,241,168,94,207,104,27,160,54,112,73,99,134,123,175,246,124,247,59,182,146,31,82,203,200,18,92,130}, + {148,4,13,240,188,103,159,76,215,255,194,136,69,190,104,224,217,76,164,0,233,176,114,160,88,113,113,9,79,141,177,167}, + {18,57,230,52,26,1,62,159,250,37,100,205,24,38,31,225,20,8,251,54,163,185,28,238,130,157,199,35,237,92,244,183}, + {31,148,53,108,30,105,71,99,143,68,89,101,48,139,33,183,231,45,1,138,84,28,226,175,40,187,63,17,182,147,181,111}, + {88,108,123,69,26,196,138,148,157,192,0,60,139,64,0,18,50,253,240,196,178,158,190,242,213,127,171,27,171,100,126,98}, + {199,203,24,166,64,157,248,207,126,145,226,70,226,46,83,164,212,97,249,87,34,190,68,80,167,63,215,145,26,153,223,72}, + {12,178,98,251,119,168,170,140,182,33,62,143,118,199,236,245,180,189,123,225,65,6,230,228,227,92,55,211,134,132,198,38}, + {202,122,215,32,241,88,182,107,239,199,244,200,35,37,123,181,26,150,59,21,180,73,135,215,184,42,187,112,115,13,235,84}, + {119,199,1,5,187,141,221,57,160,118,141,51,84,183,7,115,31,183,209,1,224,243,85,240,163,250,207,186,125,153,24,121}, + {147,181,139,164,118,11,157,253,138,152,243,158,200,155,204,226,14,234,142,113,42,233,232,152,113,172,69,205,115,162,116,65}, + {151,201,136,193,3,163,232,197,250,69,54,50,146,250,192,80,116,116,69,85,81,243,34,135,215,190,6,34,187,205,146,211}, + {53,140,196,22,171,6,214,196,80,29,248,191,58,99,92,7,43,116,208,20,74,221,103,42,77,122,30,52,191,213,24,111}, + {152,21,165,122,147,183,199,178,223,227,148,248,12,192,148,244,198,101,20,221,20,40,81,179,137,166,133,247,158,97,16,186}, + {199,126,47,157,213,119,132,90,244,150,154,153,154,154,175,20,126,75,236,6,157,105,203,242,103,149,187,238,74,100,29,95}, + {147,41,221,16,120,22,132,154,184,105,117,139,112,209,48,48,102,83,82,213,18,58,173,96,158,249,223,174,110,72,249,153}, + {112,148,171,50,138,202,67,156,140,89,111,230,219,30,184,200,227,20,71,82,155,103,17,59,134,168,24,154,48,55,32,71}, + {199,183,70,67,59,68,228,176,208,10,125,52,255,142,161,107,28,174,244,115,102,51,114,77,64,190,79,234,136,47,175,91}, + {233,159,249,86,219,139,158,70,42,195,176,76,198,41,132,143,44,224,5,108,23,14,93,69,204,227,164,90,104,14,60,40}, + {190,72,88,96,176,73,76,47,132,132,175,86,38,14,206,53,218,244,156,179,108,147,149,29,169,28,214,15,234,26,85,53}, + {61,117,112,156,219,187,229,35,238,210,246,106,48,168,101,69,220,180,114,154,115,7,171,250,27,121,92,134,165,83,99,112}, + {250,220,191,52,104,105,84,62,242,254,8,18,46,88,247,248,39,31,253,69,209,26,127,225,178,41,120,249,238,52,73,53}, + {165,236,60,105,227,60,108,62,233,194,213,235,121,33,24,69,113,87,55,189,250,66,55,250,182,214,129,41,251,136,2,211}, + {183,127,46,22,41,41,11,240,249,213,246,134,2,67,153,129,251,42,136,14,216,249,183,120,53,251,1,106,115,229,245,147}, + {144,246,246,13,14,80,136,47,137,223,221,221,172,249,61,118,37,166,102,74,111,169,38,132,56,10,247,64,253,214,61,241}, + {185,57,126,93,32,245,59,244,228,128,212,243,96,46,242,13,13,75,2,167,111,120,117,105,47,12,230,96,5,40,73,184}, + {109,84,200,146,153,129,235,230,7,79,177,144,214,106,177,23,5,90,63,28,203,159,12,93,87,217,61,244,52,63,225,61}, + {228,162,222,194,144,84,3,9,115,119,212,85,233,217,59,199,57,157,40,142,48,6,250,102,92,195,127,128,27,22,158,71}, + {171,218,223,232,27,15,193,203,132,118,247,251,155,117,124,7,128,103,192,93,64,34,74,143,66,151,138,176,6,252,218,205}, + {73,212,56,83,87,96,45,59,56,150,101,42,101,118,4,94,69,135,31,96,60,74,155,222,137,187,207,211,110,129,54,134}, + {128,86,9,240,10,150,186,54,196,60,206,41,190,111,6,15,104,70,250,151,198,189,157,227,13,100,184,190,70,252,108,106}, + {143,68,191,130,34,54,10,179,78,122,92,103,61,194,242,182,56,117,173,172,239,46,26,254,221,174,44,106,77,163,109,150}, + {6,48,68,18,62,116,229,178,180,39,94,200,111,75,220,203,76,199,207,219,113,118,148,175,32,32,107,146,64,12,228,65}, + {54,5,81,2,149,104,165,112,156,85,53,35,105,152,8,215,27,169,227,200,119,128,41,178,83,124,82,55,80,34,124,147}, + {132,195,224,61,35,5,159,144,25,69,4,4,244,116,232,252,18,91,221,80,99,247,100,169,124,166,202,86,74,253,217,77}, + {80,56,243,242,188,63,207,83,52,5,144,165,76,248,253,168,159,178,148,61,10,233,168,227,9,236,253,57,87,93,157,133}, + {231,188,33,49,132,250,243,148,132,244,118,152,49,163,206,63,32,69,96,52,196,79,0,159,62,60,118,108,183,151,228,232}, + {43,158,30,127,10,160,120,118,158,170,140,134,64,33,132,156,29,44,71,180,174,52,16,184,8,204,93,155,16,209,127,97}, + {150,131,157,218,200,100,94,164,145,203,20,105,222,208,169,27,13,186,35,245,28,144,248,193,82,95,235,172,180,170,118,124}, + {193,246,237,0,40,33,29,56,183,153,174,89,123,144,18,83,96,136,49,82,239,132,102,241,0,53,52,62,17,45,121,18}, + {70,3,65,0,114,24,25,165,155,42,222,112,212,37,3,7,163,20,13,4,9,101,15,124,148,110,72,37,49,216,152,0}, + {33,194,117,109,66,207,181,250,92,38,54,162,70,144,28,242,118,168,64,183,98,239,199,235,154,113,222,57,0,186,194,49}, + {193,201,139,241,210,71,234,92,126,85,186,0,4,145,4,241,77,35,164,79,95,114,230,112,21,41,180,230,215,116,73,184}, + {150,139,28,166,172,205,159,1,23,222,96,89,102,139,25,175,183,101,239,183,206,32,33,192,41,22,223,107,143,73,160,50}, + {251,133,84,194,4,222,184,37,45,25,80,61,85,223,22,91,124,40,235,196,203,193,31,137,38,211,231,154,76,104,73,200}, + {131,86,213,72,251,92,146,144,158,137,245,228,136,104,186,182,226,128,158,192,62,202,69,189,225,43,214,117,51,26,31,51}, + {60,42,201,227,21,150,42,186,133,169,250,72,97,236,91,235,123,183,31,173,64,51,96,236,221,228,0,223,179,62,23,89}, + {128,199,106,32,154,78,38,27,72,148,80,4,95,247,73,203,28,41,88,197,27,184,58,22,198,111,243,15,190,166,149,198}, + {127,101,191,28,148,8,98,199,227,49,249,127,188,215,238,202,94,48,189,113,126,162,24,156,49,220,132,169,16,205,44,51}, + {32,114,157,231,253,81,34,116,65,111,53,89,235,252,196,252,48,13,141,44,21,182,186,106,84,221,61,119,12,206,88,155}, + {25,189,178,233,5,103,25,80,233,209,70,192,154,204,135,200,150,5,16,53,37,51,165,109,147,246,72,162,122,250,68,194}, + {172,208,42,169,82,1,140,1,13,13,126,143,78,134,234,87,52,24,69,233,98,68,63,110,47,160,4,231,94,116,177,114}, + {34,121,0,61,76,153,99,93,123,129,113,110,206,196,186,13,188,221,84,169,8,138,142,207,90,12,143,247,209,84,77,131}, + {42,136,94,105,148,88,105,238,54,10,193,182,191,238,173,106,165,179,167,114,129,129,171,197,72,161,212,183,140,130,184,99}, + {18,205,14,159,90,202,16,229,181,12,52,228,161,16,61,44,107,173,102,151,53,184,32,24,130,29,92,84,67,92,132,180}, + {163,203,116,25,171,243,121,61,195,21,221,204,26,153,102,181,18,126,247,132,97,24,154,66,189,179,44,203,2,156,163,230}, + {125,31,64,167,137,175,45,21,51,211,233,128,110,198,74,117,45,90,176,84,221,252,149,184,186,209,44,76,155,54,22,59}, + {201,219,182,219,90,131,170,113,119,195,100,44,89,247,250,41,204,90,36,184,227,150,213,164,34,114,159,96,7,210,203,249}, + {80,128,135,167,93,150,211,226,214,185,68,212,42,8,155,194,56,246,61,248,130,15,179,233,68,78,0,21,88,229,27,250}, + {156,66,77,180,174,107,233,12,184,58,46,61,64,98,183,92,16,219,71,111,27,51,188,248,186,186,102,180,73,56,13,192}, + {126,105,113,222,138,197,147,2,78,6,164,71,89,108,88,171,66,1,135,129,235,20,23,71,23,196,77,202,214,125,157,175}, + {210,1,39,43,213,4,113,52,209,168,194,36,183,83,208,113,96,24,160,90,15,173,111,2,218,216,204,35,245,82,131,100}, + {26,133,164,74,34,10,213,241,118,228,228,196,85,9,45,2,27,221,132,101,239,21,197,32,148,26,6,122,61,238,33,109}, + {24,77,11,250,21,9,26,2,228,106,203,113,113,8,205,27,52,212,75,253,88,90,98,94,225,3,17,117,52,37,118,8}, + {143,172,134,214,84,140,49,228,174,156,78,179,61,77,91,228,144,247,118,134,122,129,186,68,152,25,181,254,25,239,203,173}, + {219,123,41,215,52,53,170,77,222,109,52,73,25,99,9,198,56,1,84,246,138,208,150,1,142,15,66,240,6,89,57,84}, + {204,171,34,245,66,116,196,142,227,179,177,211,221,118,54,247,140,254,82,214,0,116,156,233,213,182,128,73,40,197,46,135}, + {61,124,30,206,44,119,58,162,88,242,155,6,244,255,208,58,104,217,249,227,171,95,17,220,83,192,221,148,164,122,8,64}, + {11,222,99,51,38,46,245,94,147,100,179,51,147,230,162,113,17,37,165,101,252,247,185,36,144,73,114,123,22,194,214,45}, + {0,109,134,77,20,214,239,230,93,78,150,182,114,48,60,49,182,164,80,57,127,100,123,26,249,117,119,77,10,164,16,174}, + {190,52,77,80,59,196,250,15,154,113,245,213,86,255,155,2,170,204,185,85,136,183,10,194,90,223,247,17,165,194,113,185}, + {115,106,3,157,86,134,12,145,213,31,164,99,232,92,120,54,207,172,141,117,138,12,49,213,173,20,82,175,80,110,119,181}, + {75,105,208,239,69,92,1,44,88,234,160,169,110,27,102,193,137,141,31,119,244,190,62,149,23,253,114,138,166,219,233,12}, + {25,4,206,72,111,144,216,129,151,243,187,122,192,98,90,152,226,21,218,134,198,164,40,4,78,212,53,34,231,49,235,93}, + {130,177,74,203,203,9,147,135,150,55,71,149,91,175,112,194,97,100,29,255,151,202,137,159,32,238,169,17,105,195,248,204}, + {26,139,84,222,73,164,95,200,197,246,159,238,232,197,100,177,248,155,162,245,92,148,69,65,182,152,102,102,144,175,66,166}, + {114,164,45,29,139,80,49,60,106,107,60,128,63,120,253,179,193,56,108,162,227,252,98,109,0,25,202,38,28,138,44,27}, + {140,255,196,225,13,181,102,161,58,158,219,87,108,13,233,160,85,170,107,238,165,112,3,40,204,223,33,176,135,137,131,231}, + {89,164,46,121,146,172,87,140,34,168,132,6,230,49,237,159,96,92,236,101,47,59,64,29,206,188,61,248,197,236,69,167}, + {15,224,104,161,59,86,211,32,209,58,171,165,234,218,86,47,130,95,28,62,155,193,166,66,168,42,126,13,43,240,89,217}, + {91,21,41,161,17,32,132,81,220,123,110,142,13,121,29,181,216,173,254,249,123,99,54,191,199,98,8,201,237,129,121,229}, + {119,175,107,233,214,49,15,33,34,240,165,131,124,172,88,165,151,21,231,192,33,212,143,125,164,32,251,55,215,88,94,173}, + {45,185,247,101,62,178,115,117,40,137,19,3,52,214,247,56,98,107,124,152,151,34,77,254,14,218,87,71,38,70,109,201}, + {212,148,110,55,200,16,191,27,144,170,216,245,122,143,77,52,2,173,111,97,150,226,50,250,255,202,251,217,158,10,214,176}, + {83,109,4,217,251,38,255,79,150,202,155,27,23,235,50,83,71,46,95,204,190,1,133,105,176,96,36,185,100,100,219,160}, + {220,73,255,236,98,106,71,217,120,72,104,95,145,59,95,228,172,211,130,57,153,25,136,142,244,43,208,201,7,59,127,82}, + {101,45,94,226,67,86,209,9,52,17,7,240,188,142,33,206,171,161,24,172,81,96,131,173,95,1,190,230,66,32,127,37}, + {139,29,203,36,46,99,179,5,84,125,7,126,231,205,84,116,96,255,175,78,138,28,127,170,191,60,163,92,81,71,35,141}, + {218,129,65,22,37,94,131,101,35,110,15,119,83,245,240,48,244,186,36,142,53,245,35,180,236,233,183,22,106,235,36,246}, + {134,239,139,12,40,148,217,177,8,124,217,162,184,125,47,135,143,189,125,245,99,46,131,92,130,250,53,108,244,194,45,133}, + {230,3,148,40,241,93,220,142,10,240,184,111,118,170,205,217,252,224,208,159,65,35,156,179,246,174,57,32,65,59,60,236}, + {123,179,56,107,13,69,146,119,8,144,192,54,27,20,55,8,83,79,44,187,149,68,160,184,173,31,244,171,70,41,131,106}, + {134,128,185,138,206,221,239,252,160,115,159,34,206,174,143,34,93,127,60,193,12,198,66,6,163,192,30,205,168,82,170,178}, + {139,0,60,75,217,43,90,39,138,78,41,105,11,51,18,195,181,67,4,2,160,54,244,203,125,170,229,99,68,44,246,50}, + {130,119,54,17,101,169,43,173,142,182,170,201,18,38,139,248,159,4,19,116,61,37,18,196,236,194,38,233,123,175,78,46}, + {203,223,42,236,165,214,194,133,186,90,243,232,20,65,51,85,124,253,59,176,226,143,40,176,27,56,128,97,229,157,203,62}, + {233,83,35,64,153,97,121,198,109,141,67,100,71,202,244,103,185,53,218,170,171,201,115,137,228,128,154,136,5,207,1,237}, + {70,227,81,151,194,81,152,39,109,58,72,118,146,53,147,99,166,243,65,97,127,11,103,218,15,58,248,94,80,141,219,179}, + {176,126,237,81,102,102,132,124,198,161,76,34,206,83,37,206,222,67,114,153,232,1,251,175,144,138,7,199,201,115,7,28}, + {8,139,80,129,28,92,227,252,104,99,17,50,65,187,193,22,212,206,170,208,43,233,87,99,27,150,116,7,208,93,145,84}, + {29,177,188,135,13,64,192,142,201,69,250,152,30,173,54,236,59,99,15,242,142,72,189,22,157,126,27,244,31,52,167,177}, + {106,62,139,211,234,205,169,252,229,42,19,207,121,246,194,120,167,15,115,166,20,223,32,104,216,154,194,95,131,167,36,197}, + {87,95,6,48,16,178,73,234,28,200,209,171,227,63,109,129,57,214,223,106,131,249,240,73,116,200,157,242,240,42,76,162}, + {204,15,228,131,156,185,61,161,152,150,67,113,68,53,243,62,24,216,129,171,30,11,31,102,248,59,127,142,161,57,80,215}, + {55,138,52,244,26,64,233,55,219,89,73,81,174,126,193,63,206,82,174,123,74,198,156,229,224,10,38,108,77,120,157,26}, + {85,137,204,48,130,249,234,35,89,233,48,221,53,243,96,97,211,18,211,45,21,98,234,221,177,119,203,170,210,44,229,164}, + {56,252,57,128,138,57,148,28,83,174,202,88,98,17,163,34,82,26,247,112,162,64,192,167,231,8,189,28,156,29,188,251}, + {112,121,57,107,72,182,104,221,176,75,223,205,42,214,83,163,255,49,31,102,204,116,167,237,242,106,100,110,205,135,219,89}, + {44,125,194,131,141,28,85,153,189,124,131,6,215,148,12,146,101,154,22,73,139,185,118,218,137,216,101,196,127,218,186,94}, + {51,130,62,172,209,36,41,161,29,1,87,181,150,163,126,169,188,192,128,188,163,6,47,152,40,145,201,170,93,219,137,176}, + {117,39,80,87,195,165,184,217,135,17,153,93,117,67,4,42,11,71,238,32,18,163,25,219,224,124,157,18,124,177,88,48}, + {99,161,20,181,199,241,107,128,91,222,223,174,253,195,200,117,10,189,188,0,149,112,34,159,91,220,244,190,164,50,47,91}, + {129,131,164,9,1,35,50,200,135,132,250,64,150,121,41,247,33,174,51,108,194,47,111,153,203,98,177,70,155,227,121,56}, + {74,193,132,93,153,229,221,132,20,175,212,87,254,121,113,97,254,58,26,58,211,44,26,123,29,223,66,16,103,248,71,41}, + {115,254,100,139,60,197,181,208,22,157,181,82,59,72,36,58,212,9,46,184,187,159,233,153,4,128,243,94,6,94,131,242}, + {219,73,229,221,188,105,135,94,153,141,144,222,123,209,184,245,88,225,11,205,31,170,143,55,8,119,4,13,98,20,122,168}, + {196,193,187,93,241,121,11,47,90,122,60,236,194,215,109,163,178,7,61,147,65,26,117,3,164,2,158,146,36,119,32,60}, + {227,222,100,66,28,246,173,249,53,149,213,37,185,54,69,163,16,250,185,224,102,146,4,98,179,194,53,222,8,220,97,123}, + {209,99,147,114,75,237,209,1,229,15,127,18,235,119,0,211,147,124,173,121,62,141,17,8,76,143,7,103,226,214,166,146}, + {103,224,148,94,155,129,179,251,105,250,220,47,46,139,24,183,209,66,113,59,131,78,182,20,165,48,145,219,12,96,248,18}, + {208,4,251,158,62,204,198,242,117,188,234,88,248,175,49,90,172,113,94,200,25,91,3,16,43,140,111,76,171,161,135,4}, + {126,74,143,250,221,41,169,175,238,249,166,84,124,36,25,221,221,106,160,39,213,160,65,1,220,177,253,54,123,209,136,144}, + {143,57,128,178,242,8,119,32,25,176,50,115,223,118,164,211,113,228,56,213,248,18,237,148,101,184,118,9,25,46,43,44}, + {245,122,67,58,179,139,166,104,97,201,74,88,230,100,106,82,94,69,97,82,95,158,166,80,96,136,166,26,117,220,136,213}, + {177,1,54,227,31,2,70,177,148,115,178,232,34,44,225,90,104,138,115,154,32,57,48,20,168,164,0,83,173,234,42,97}, + {127,247,155,26,58,240,193,235,103,31,209,206,83,124,54,240,122,240,31,168,185,104,161,158,250,17,202,252,121,120,91,1}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {235,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {235,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {236,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {236,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {238,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {238,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {239,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {239,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {216,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {216,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {217,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {217,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {218,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {218,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {219,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {219,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {220,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {220,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {197,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {197,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {198,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {198,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {199,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {199,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {200,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {200,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {201,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {201,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {178,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {178,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {179,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {179,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {180,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {180,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {181,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {181,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {182,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {182,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {159,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {159,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {160,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {160,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {161,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {161,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {162,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {162,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {163,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {163,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {140,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {140,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {141,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {141,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {142,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {142,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {143,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {143,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {144,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {144,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {121,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {121,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {122,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {122,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {123,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {123,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {124,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {124,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {125,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {125,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, +} ; + +static void test_nG_montgomery25519_impl(long long impl) +{ + unsigned char *q = test_nG_montgomery25519_q; + unsigned char *n = test_nG_montgomery25519_n; + unsigned char *q2 = test_nG_montgomery25519_q2; + unsigned char *n2 = test_nG_montgomery25519_n2; + long long qlen = crypto_nG_POINTBYTES; + long long nlen = crypto_nG_SCALARBYTES; + + if (targeti && strcmp(targeti,lib25519_dispatch_nG_montgomery25519_implementation(impl))) return; + if (impl >= 0) { + crypto_nG = lib25519_dispatch_nG_montgomery25519(impl); + printf("nG_montgomery25519 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_nG_montgomery25519_implementation(impl),lib25519_dispatch_nG_montgomery25519_compiler(impl)); + } else { + crypto_nG = lib25519_nG_montgomery25519; + printf("nG_montgomery25519 selected implementation %s compiler %s\n",lib25519_nG_montgomery25519_implementation(),lib25519_nG_montgomery25519_compiler()); + } + for (long long checksumbig = 0;checksumbig < 2;++checksumbig) { + long long loops = checksumbig ? 512 : 64; + + checksum_clear(); + + for (long long loop = 0;loop < loops;++loop) { + + output_prepare(q2,q,qlen); + input_prepare(n2,n,nlen); + crypto_nG(q,n); + checksum(q,qlen); + output_compare(q2,q,qlen,"crypto_nG"); + input_compare(n2,n,nlen,"crypto_nG"); + + double_canary(q2,q,qlen); + double_canary(n2,n,nlen); + crypto_nG(q2,n2); + if (memcmp(q2,q,qlen) != 0) fail("failure: crypto_nG is nondeterministic\n"); + + double_canary(q2,q,qlen); + double_canary(n2,n,nlen); + crypto_nG(n2,n2); + if (memcmp(n2,q,qlen) != 0) fail("failure: crypto_nG does not handle n=q overlap\n"); + memcpy(n2,n,nlen); + } + checksum_expected(nG_montgomery25519_checksums[checksumbig]); + } + for (long long precomp = 0;precomp < precomputed_nG_montgomery25519_NUM;++precomp) { + output_prepare(q2,q,crypto_nG_POINTBYTES); + input_prepare(n2,n,crypto_nG_SCALARBYTES); + memcpy(n,precomputed_nG_montgomery25519_n[precomp],crypto_nG_SCALARBYTES); + memcpy(n2,precomputed_nG_montgomery25519_n[precomp],crypto_nG_SCALARBYTES); + crypto_nG(q,n); + if (memcmp(q,precomputed_nG_montgomery25519_q[precomp],crypto_nG_POINTBYTES)) { + fail("failure: crypto_nG fails precomputed test vectors\n"); + printf("expected q: "); + for (long long pos = 0;pos < crypto_nG_POINTBYTES;++pos) printf("%02x",precomputed_nG_montgomery25519_q[precomp][pos]); + printf("\n"); + printf("received q: "); + for (long long pos = 0;pos < crypto_nG_POINTBYTES;++pos) printf("%02x",q[pos]); + printf("\n"); + } + output_compare(q2,q,crypto_nG_POINTBYTES,"crypto_nG"); + input_compare(n2,n,crypto_nG_SCALARBYTES,"crypto_nG"); + } +} + +static void test_nG_montgomery25519(void) +{ + if (targeto && strcmp(targeto,"nG")) return; + if (targetp && strcmp(targetp,"montgomery25519")) return; + test_nG_montgomery25519_q = alignedcalloc(crypto_nG_POINTBYTES); + test_nG_montgomery25519_n = alignedcalloc(crypto_nG_SCALARBYTES); + test_nG_montgomery25519_q2 = alignedcalloc(crypto_nG_POINTBYTES); + test_nG_montgomery25519_n2 = alignedcalloc(crypto_nG_SCALARBYTES); + + for (long long offset = 0;offset < 2;++offset) { + printf("nG_montgomery25519 offset %lld\n",offset); + for (long long impl = -1;impl < lib25519_numimpl_nG_montgomery25519();++impl) + forked(test_nG_montgomery25519_impl,impl); + ++test_nG_montgomery25519_q; + ++test_nG_montgomery25519_n; + ++test_nG_montgomery25519_q2; + ++test_nG_montgomery25519_n2; + } +} +#undef crypto_nG_SCALARBYTES +#undef crypto_nG_POINTBYTES + + +/* ----- mGnP, derived from supercop/crypto_mGnP/try.c */ +static const char *mGnP_ed25519_checksums[] = { + "dc80be44fb0d482c5ae430779e76fe612c53fcd9e5847254bf27ab34e90745f4", + "9e1a3b7015c8fdb12763fd88494f5bfe9e2565ead4d3407d5ecf7ff6ca24c1d0", +} ; + +static void (*crypto_mGnP)(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *); +#define crypto_mGnP_MBYTES lib25519_mGnP_ed25519_MBYTES +#define crypto_mGnP_NBYTES lib25519_mGnP_ed25519_NBYTES +#define crypto_mGnP_PBYTES lib25519_mGnP_ed25519_PBYTES +#define crypto_mGnP_OUTPUTBYTES lib25519_mGnP_ed25519_OUTPUTBYTES + +static unsigned char *test_mGnP_ed25519_Q; +static unsigned char *test_mGnP_ed25519_m; +static unsigned char *test_mGnP_ed25519_n; +static unsigned char *test_mGnP_ed25519_P; +static unsigned char *test_mGnP_ed25519_Q2; +static unsigned char *test_mGnP_ed25519_m2; +static unsigned char *test_mGnP_ed25519_n2; +static unsigned char *test_mGnP_ed25519_P2; + +#define precomputed_mGnP_ed25519_NUM 453 + +static const unsigned char precomputed_mGnP_ed25519_Q[precomputed_mGnP_ed25519_NUM][crypto_mGnP_OUTPUTBYTES] = { + {193,20,31,22,66,224,234,80,225,166,208,110,185,170,33,13,42,170,37,31,162,113,128,119,198,205,250,123,183,207,66,236,0}, + {239,212,209,8,125,39,38,41,94,189,180,94,193,163,130,175,142,228,76,49,248,193,255,202,155,95,140,198,38,12,125,85,0}, + {55,62,88,224,26,74,175,40,62,4,120,230,61,96,198,36,123,205,4,104,84,86,86,127,219,32,148,226,161,23,102,170,0}, + {107,224,24,189,33,29,232,2,162,186,95,183,1,220,227,240,212,2,3,115,73,34,232,59,29,52,104,48,138,100,168,7,0}, + {31,253,125,101,135,126,126,76,190,193,95,50,18,196,29,41,215,190,147,142,86,228,65,24,220,35,222,83,116,163,20,189,0}, + {243,15,115,147,232,219,192,154,21,238,149,1,185,144,3,64,115,243,5,204,208,176,175,41,80,203,104,37,114,91,56,35,0}, + {172,182,182,78,25,22,62,39,198,223,99,189,255,52,241,97,195,181,245,66,20,227,79,115,28,186,88,10,3,240,179,224,0}, + {62,104,105,88,128,13,255,31,4,177,175,220,184,45,120,237,99,88,147,176,117,206,134,181,197,33,182,172,43,24,216,224,0}, + {36,217,83,145,174,217,124,120,161,163,60,166,133,73,218,76,115,10,1,225,148,53,222,179,249,147,201,35,226,121,230,13,0}, + {218,160,114,157,113,239,46,33,164,162,215,160,65,155,241,51,107,60,133,236,25,115,104,102,157,175,184,77,194,185,123,87,0}, + {215,18,28,155,4,191,122,36,53,143,209,22,121,185,137,113,183,218,156,83,150,28,58,43,202,4,0,59,210,69,177,23,0}, + {15,85,186,179,54,59,138,71,36,152,81,185,49,161,155,253,201,12,186,201,124,43,173,68,103,18,84,216,189,3,91,30,0}, + {189,165,144,177,33,155,200,169,68,113,243,73,187,247,153,192,74,26,254,232,14,126,200,148,143,100,214,124,84,85,5,196,0}, + {177,6,89,157,63,159,208,220,103,251,34,240,243,60,133,94,159,15,174,173,92,53,169,217,72,217,127,178,7,200,66,108,0}, + {200,218,238,202,246,181,95,139,167,63,121,155,154,33,125,40,65,81,42,170,163,12,128,110,223,77,176,79,105,118,186,253,0}, + {236,93,106,16,60,173,90,181,193,160,13,14,253,63,252,27,19,171,35,102,98,249,245,250,37,95,13,113,55,125,247,179,0}, + {21,53,251,238,252,219,189,16,63,238,20,219,129,77,8,52,75,60,4,184,215,235,138,142,75,206,183,127,188,3,19,109,0}, + {104,145,19,16,233,184,221,87,79,192,223,49,15,182,132,34,180,180,33,122,1,117,180,158,225,242,80,206,107,78,59,83,0}, + {60,113,37,3,202,241,247,44,54,115,117,67,243,43,170,197,26,34,207,51,98,51,204,54,181,252,211,107,106,231,22,55,0}, + {218,77,138,8,52,211,187,12,118,234,240,239,195,152,92,96,223,76,137,6,253,192,37,144,100,76,186,107,176,55,85,247,0}, + {24,85,179,137,39,191,189,162,202,35,169,187,29,201,116,49,239,233,68,57,75,237,56,237,66,16,223,28,30,143,117,106,0}, + {172,217,171,30,110,128,229,186,14,247,12,249,185,158,249,162,172,37,224,59,12,85,83,159,221,126,198,249,221,176,176,201,0}, + {202,97,44,50,136,124,132,199,192,148,9,31,216,168,18,23,195,214,1,160,248,207,238,145,34,71,174,25,110,9,104,128,0}, + {42,175,159,17,84,17,216,59,200,90,90,140,55,107,154,70,233,62,180,32,59,23,139,192,76,231,83,162,187,130,234,51,0}, + {229,252,98,104,214,93,46,189,70,61,31,182,9,80,169,26,123,205,82,111,118,102,239,192,12,184,220,83,122,171,92,231,0}, + {84,75,38,86,84,117,13,29,151,24,80,21,25,89,25,32,205,134,170,105,36,113,194,148,178,184,173,16,139,168,33,43,0}, + {67,171,250,206,251,11,201,48,202,162,189,211,63,128,226,36,143,62,132,190,101,147,174,76,208,185,81,61,220,19,68,102,0}, + {71,164,27,141,7,85,148,122,157,184,159,42,226,65,201,137,250,129,124,104,39,250,175,186,127,192,172,189,173,240,51,207,0}, + {213,3,201,50,183,32,237,188,33,37,139,137,250,76,159,166,57,190,10,236,250,160,21,49,216,160,143,15,209,235,186,153,0}, + {207,70,74,84,108,201,112,207,197,30,35,32,255,145,252,198,242,10,24,11,0,25,123,89,186,187,120,52,145,109,160,39,1}, + {102,62,185,27,136,36,225,54,217,146,46,69,87,248,199,31,218,148,52,41,250,110,21,12,16,48,208,245,191,46,232,150,0}, + {115,4,8,153,144,34,13,70,176,166,73,136,245,197,230,207,156,233,120,86,135,113,171,109,230,136,173,95,134,17,45,86,0}, + {247,100,145,199,12,157,94,212,196,149,181,92,183,129,63,148,17,225,141,190,150,16,49,111,24,209,126,46,209,157,216,81,0}, + {135,223,68,75,225,224,171,218,194,215,94,44,44,230,188,134,166,236,26,42,244,255,23,106,155,119,58,238,28,146,223,52,1}, + {121,233,37,176,6,139,215,0,20,81,159,70,184,202,89,182,176,171,14,107,188,59,75,128,28,119,29,32,162,222,94,106,0}, + {176,31,35,125,139,63,38,58,105,40,48,98,119,210,112,7,29,105,79,198,94,40,97,1,214,19,28,236,246,58,96,137,0}, + {65,116,102,140,80,101,108,148,65,135,63,241,188,126,246,182,165,206,235,171,202,191,58,105,36,157,55,236,200,3,170,136,0}, + {49,30,57,168,151,93,61,109,78,11,35,40,175,184,60,156,2,4,19,195,251,124,28,137,180,227,154,16,231,36,156,32,0}, + {209,194,45,74,228,198,222,120,85,129,55,68,190,66,75,250,110,49,195,163,27,138,80,152,62,235,61,12,62,210,194,95,0}, + {37,42,141,79,143,206,32,113,33,250,56,118,114,47,255,34,120,45,148,45,39,200,112,55,236,171,106,39,149,138,170,19,0}, + {94,11,111,55,202,45,7,20,114,142,84,135,129,234,54,228,229,87,148,60,156,205,122,126,58,171,5,65,240,38,65,150,0}, + {161,18,114,212,74,182,224,14,205,231,130,28,0,244,89,29,89,230,182,63,15,139,205,166,39,231,62,141,101,106,32,241,0}, + {85,74,198,40,127,105,178,33,172,143,174,12,203,69,54,100,169,70,251,247,94,213,36,48,163,228,6,249,24,26,36,66,0}, + {50,148,146,153,8,194,122,97,124,86,244,62,98,5,174,209,161,216,141,183,236,5,126,189,102,203,102,129,68,92,27,36,0}, + {222,120,50,224,107,165,97,25,148,20,191,53,96,241,49,81,129,181,93,40,67,175,133,247,115,145,121,84,75,223,160,22,0}, + {66,48,108,158,122,44,152,103,229,32,221,2,152,228,177,66,227,222,32,71,175,145,178,185,127,147,228,14,41,157,192,110,0}, + {126,136,17,40,84,115,4,255,31,54,129,120,86,20,190,40,19,144,1,55,84,140,181,64,238,166,69,132,190,8,210,91,0}, + {8,208,145,188,93,39,126,145,138,44,142,5,201,209,18,218,146,22,137,12,24,119,61,219,201,172,42,123,153,63,159,229,0}, + {49,41,251,71,131,78,87,0,35,53,209,64,135,218,91,95,129,70,119,42,123,5,187,50,164,230,137,80,91,88,197,65,0}, + {93,97,70,22,148,27,117,184,152,192,112,222,247,231,147,169,177,158,219,64,38,33,3,126,16,133,167,62,76,118,149,225,0}, + {141,190,90,236,73,144,189,50,207,184,82,102,249,93,67,78,231,203,228,18,251,139,68,150,78,182,8,252,105,29,13,62,1}, + {111,13,65,39,150,200,200,58,253,154,76,160,106,59,207,119,201,160,208,28,180,32,67,90,242,69,105,34,120,70,142,0,0}, + {42,245,168,171,149,209,9,91,24,87,52,230,85,220,126,222,69,163,48,98,130,181,12,218,98,234,7,90,112,192,83,84,0}, + {17,231,125,108,129,151,180,104,115,140,118,188,144,92,45,254,71,110,57,130,124,241,213,81,99,32,170,84,123,93,141,43,0}, + {229,74,103,141,63,20,223,15,26,155,169,69,200,113,14,92,38,237,104,218,218,104,178,25,83,167,233,61,65,154,210,83,0}, + {90,138,186,229,58,42,128,65,199,105,59,121,35,54,61,204,217,100,17,70,6,214,39,14,21,239,40,82,237,202,222,50,0}, + {62,27,45,160,250,34,184,215,198,155,193,87,104,14,35,226,242,60,127,75,153,5,171,26,217,244,133,116,119,59,122,224,0}, + {224,173,93,72,16,1,131,58,212,4,34,59,155,108,195,82,176,62,23,140,160,161,48,199,199,13,65,232,203,20,241,221,0}, + {121,121,155,104,4,104,124,156,77,161,185,126,48,59,140,173,178,0,150,126,64,242,216,1,115,7,145,52,66,77,156,86,0}, + {247,153,138,3,58,73,75,192,37,157,100,207,10,101,23,28,114,69,175,230,212,83,196,230,180,191,226,237,61,243,46,146,0}, + {230,176,124,10,70,122,91,26,159,37,95,221,50,227,72,169,204,99,70,93,221,132,169,222,129,233,176,129,30,203,152,229,0}, + {15,120,33,48,159,194,147,183,215,54,156,119,133,208,196,214,5,129,145,152,127,18,10,144,224,219,225,100,242,108,101,79,0}, + {167,1,29,49,129,245,249,183,143,251,188,150,151,209,115,166,165,118,250,183,26,57,79,21,85,191,65,166,191,201,178,226,0}, + {107,196,164,146,171,4,159,15,144,166,186,207,125,135,194,226,253,160,150,86,164,112,100,13,238,66,203,120,66,83,101,16,0}, + {148,82,13,175,152,167,145,182,128,172,189,135,197,63,174,66,64,205,75,214,54,139,19,139,198,56,15,78,222,158,119,249,0}, + {19,162,43,187,208,101,241,158,117,177,24,253,210,184,160,154,65,106,173,236,158,48,208,201,155,121,139,213,47,180,224,184,0}, + {83,172,167,145,216,247,82,113,240,244,220,85,56,113,45,184,111,149,176,83,223,154,213,203,140,88,116,202,237,145,52,40,0}, + {124,253,128,117,41,108,29,202,23,254,170,169,212,118,185,180,24,221,61,137,66,235,22,4,231,117,103,40,99,39,154,204,0}, + {226,73,19,152,162,95,45,105,186,66,128,221,228,182,93,245,203,202,137,236,71,232,124,86,133,157,97,208,174,116,30,46,0}, + {89,91,180,113,206,71,1,178,50,154,24,136,73,99,156,64,182,251,10,198,168,83,118,93,115,243,72,233,101,7,107,15,0}, + {206,79,49,233,164,205,90,99,13,239,177,207,94,255,194,154,53,19,68,90,101,199,68,154,65,52,161,101,75,123,113,118,0}, + {154,151,24,243,94,113,28,51,166,188,104,255,208,182,208,212,240,164,80,252,97,69,24,105,246,109,51,205,41,200,108,76,0}, + {64,121,48,83,161,68,2,245,86,175,96,187,75,222,98,16,240,73,208,21,162,145,211,100,214,231,219,203,43,223,214,40,0}, + {52,133,105,67,134,132,43,116,176,162,111,127,16,102,221,138,121,248,38,220,141,30,25,139,133,85,49,186,179,60,71,15,0}, + {70,229,176,18,106,251,184,129,253,195,114,250,19,172,48,77,36,29,55,91,130,203,238,115,24,195,58,198,142,248,40,167,0}, + {112,164,82,139,97,62,130,10,27,55,125,252,142,110,128,95,47,2,61,232,184,197,48,6,104,16,155,171,223,192,89,35,0}, + {190,208,247,211,155,59,75,157,179,250,254,252,189,215,31,67,131,3,63,236,249,194,189,213,208,109,108,138,209,69,193,248,1}, + {195,212,248,226,74,37,57,179,228,212,149,3,56,29,169,51,207,220,254,199,57,150,214,28,90,235,253,21,171,157,55,249,1}, + {255,165,59,4,252,157,248,120,243,44,253,180,197,252,185,108,117,207,103,140,135,24,128,142,70,140,155,225,189,22,211,36,0}, + {181,191,220,203,233,160,210,206,1,145,86,245,157,81,209,216,149,236,44,74,147,78,240,173,11,181,37,82,115,76,250,5,0}, + {29,1,186,38,166,25,107,94,126,203,3,182,237,28,134,27,16,62,100,83,118,66,155,243,241,233,189,95,149,230,247,8,0}, + {210,159,87,255,96,17,153,83,14,98,77,176,147,132,97,224,31,145,85,54,10,224,74,103,64,188,22,226,110,163,107,22,0}, + {76,173,220,109,186,95,116,216,62,108,230,81,64,143,201,53,239,88,186,253,201,3,109,8,244,1,169,220,102,71,189,27,0}, + {96,133,226,52,201,79,156,205,252,142,87,98,60,169,195,153,147,125,204,131,160,247,241,74,201,95,36,22,21,79,107,21,0}, + {54,166,52,180,65,207,217,247,52,226,216,255,155,219,159,105,29,230,137,236,98,63,73,251,131,97,220,106,65,87,20,168,0}, + {208,150,155,48,210,67,120,151,4,173,240,229,117,12,18,63,155,67,118,183,250,105,93,194,145,86,138,3,225,124,7,141,0}, + {149,26,45,113,116,70,47,95,51,219,222,12,204,90,132,194,176,93,201,200,185,65,215,195,57,34,228,110,202,47,169,25,0}, + {241,16,21,139,214,66,244,12,211,67,9,249,78,225,166,176,197,33,255,175,81,20,190,3,98,36,164,96,8,82,42,195,0}, + {10,146,230,112,13,84,206,28,164,135,218,74,29,232,232,2,109,110,199,116,213,135,33,100,37,73,119,232,73,241,147,212,0}, + {108,70,18,238,34,153,50,10,20,64,101,210,204,188,154,173,222,179,182,223,153,116,154,157,128,200,164,200,36,106,141,54,0}, + {245,171,111,80,134,249,172,93,28,33,1,185,246,12,244,174,120,46,65,202,57,96,255,211,85,76,201,80,218,16,240,69,0}, + {242,85,168,64,59,31,74,217,247,26,172,63,140,87,91,217,142,210,135,30,245,129,254,32,163,57,109,218,179,210,181,153,0}, + {118,173,18,240,139,31,58,166,73,214,236,231,203,65,140,213,148,241,218,146,249,73,69,26,34,16,222,28,172,17,27,228,0}, + {201,203,49,247,94,189,26,226,146,64,224,110,217,106,165,142,108,225,107,89,114,234,161,25,244,151,106,205,7,190,246,52,0}, + {255,19,90,217,255,0,128,224,20,1,148,40,83,205,84,84,165,62,37,174,124,85,38,53,40,252,196,125,97,149,110,171,0}, + {211,180,113,95,215,200,92,227,150,31,167,198,135,86,173,162,80,27,232,101,211,160,248,110,159,133,107,211,168,58,106,151,0}, + {103,197,24,44,169,145,191,232,180,145,83,223,37,90,49,228,95,244,186,197,248,216,89,17,31,148,158,193,22,104,51,47,0}, + {116,206,157,129,17,137,64,12,112,19,56,150,93,252,205,252,49,86,59,188,154,131,254,222,0,121,150,28,165,255,247,137,0}, + {120,103,31,230,182,239,69,236,65,16,9,114,175,98,139,133,70,51,150,24,202,31,137,78,106,125,160,250,107,220,7,150,0}, + {20,34,70,138,6,117,245,37,186,76,131,83,174,95,215,192,24,253,109,124,102,52,251,210,167,98,46,54,121,111,62,63,0}, + {55,88,87,251,10,197,49,177,238,221,225,75,124,110,119,127,168,72,234,68,102,17,32,167,101,52,50,174,6,161,4,125,0}, + {7,62,151,237,172,86,187,58,29,196,83,25,157,21,213,201,228,225,228,158,187,235,59,119,233,220,142,248,96,19,79,65,0}, + {107,43,89,86,247,102,229,131,249,152,25,245,66,71,250,216,38,159,91,238,127,109,121,59,102,44,253,208,87,116,141,0,0}, + {8,17,192,63,50,158,168,102,129,177,21,70,78,37,56,138,173,12,163,34,76,192,35,118,10,70,17,163,254,193,176,205,0}, + {200,9,16,33,63,225,14,34,183,215,65,22,65,3,89,181,80,108,26,189,159,229,64,48,180,69,121,133,123,149,199,34,0}, + {125,132,107,105,210,208,156,202,80,157,75,72,33,40,179,247,181,210,161,224,233,119,166,69,19,110,19,208,31,102,50,171,0}, + {5,204,97,195,120,117,198,174,183,127,170,92,124,133,192,69,27,67,54,19,70,138,109,209,94,200,113,215,86,185,245,228,0}, + {255,24,95,153,139,29,46,0,231,218,135,243,163,160,101,196,133,223,78,170,96,117,27,56,180,88,152,216,149,114,207,202,0}, + {54,27,212,85,95,160,199,90,116,104,191,57,45,222,41,22,219,99,245,78,12,56,14,255,120,13,0,164,3,106,209,162,0}, + {189,230,15,155,214,237,120,15,10,176,36,34,170,194,156,204,227,221,126,68,79,6,196,101,43,32,153,35,120,182,190,189,0}, + {20,68,46,35,213,144,84,147,26,72,49,234,68,118,158,193,190,126,115,230,76,226,28,234,240,18,177,207,39,74,242,177,0}, + {231,152,158,248,99,125,191,99,51,241,205,255,198,147,204,11,12,6,50,123,146,75,15,144,32,199,62,23,143,193,187,67,0}, + {112,182,218,230,100,12,144,223,152,5,48,247,181,187,16,2,204,27,69,12,242,149,142,220,93,19,184,9,224,114,165,200,0}, + {32,108,149,172,24,17,19,69,247,138,153,110,171,166,206,10,22,39,218,22,221,31,7,102,185,31,78,170,181,109,151,133,0}, + {176,103,204,52,144,92,167,238,89,64,214,119,85,215,38,88,233,146,72,8,52,198,251,149,92,88,200,88,43,233,191,141,0}, + {158,9,173,207,212,76,100,39,39,219,190,56,199,130,209,91,34,3,73,180,50,202,129,131,138,97,82,224,209,20,83,134,0}, + {140,118,145,18,189,236,122,204,159,143,57,252,100,127,144,220,198,52,207,154,7,68,82,239,173,38,39,248,215,63,245,65,0}, + {134,80,198,26,66,229,227,41,64,199,143,187,214,39,86,56,189,72,68,79,15,227,135,136,209,208,9,83,113,91,41,188,0}, + {78,134,217,103,144,107,124,56,91,147,41,235,238,163,23,169,129,90,233,229,226,160,226,79,227,84,172,155,126,28,81,89,0}, + {191,187,120,44,116,84,59,130,25,178,28,141,111,36,175,99,101,231,32,62,158,108,202,68,140,28,225,37,148,36,106,246,0}, + {104,165,206,237,111,169,182,158,80,219,96,26,198,139,230,201,74,238,211,251,12,2,12,86,157,243,215,146,188,27,20,212,0}, + {62,99,61,185,77,186,42,211,64,182,27,209,75,169,210,207,112,138,220,172,38,202,145,28,42,49,201,238,99,138,176,66,0}, + {255,128,95,36,155,42,108,241,68,206,24,93,254,14,251,124,65,209,252,42,155,254,194,221,187,227,180,196,102,15,192,200,0}, + {71,124,174,113,113,200,75,165,71,238,138,181,147,104,175,96,79,165,53,47,91,89,224,94,91,30,4,255,207,155,107,131,0}, + {192,199,166,23,122,9,41,147,126,255,96,11,123,70,188,210,117,13,21,115,75,145,7,149,34,24,87,236,81,212,105,123,0}, + {95,57,218,46,33,122,19,132,187,143,62,23,141,219,208,93,173,20,245,7,145,198,127,96,189,169,123,183,109,174,142,24,0}, + {24,220,23,138,41,174,187,235,127,134,105,202,13,154,221,103,5,175,154,27,87,88,230,85,253,27,9,118,123,97,123,139,0}, + {6,127,154,241,105,197,73,207,78,140,216,10,209,0,1,111,198,43,91,22,202,85,111,148,153,235,217,179,224,18,139,175,0}, + {114,185,212,101,17,176,14,73,225,55,117,235,124,78,245,62,227,93,182,113,87,123,236,48,21,16,86,42,56,29,43,230,0}, + {68,53,138,202,55,37,154,26,169,237,166,137,47,227,201,78,52,83,158,203,239,50,51,26,229,77,29,187,41,153,116,172,0}, + {199,163,182,225,35,57,239,34,221,184,129,24,114,207,139,77,157,40,230,186,60,247,92,230,171,160,97,212,32,105,204,6,0}, + {28,48,13,170,57,220,199,222,31,116,43,138,243,164,133,78,30,134,195,235,16,115,49,235,223,176,216,229,227,159,80,162,0}, + {77,231,65,175,171,54,11,105,191,213,248,116,225,246,165,83,134,23,165,231,13,129,111,80,127,44,64,244,235,34,216,56,0}, + {116,219,203,77,47,170,20,249,30,225,2,105,203,150,213,232,245,243,199,78,218,56,198,32,163,96,187,178,187,111,233,59,0}, + {12,149,25,189,53,59,73,57,118,143,16,122,232,76,20,173,233,105,35,44,198,170,87,24,44,121,34,191,243,120,39,192,0}, + {183,133,90,205,224,187,120,46,193,197,200,18,55,182,2,19,163,111,83,210,101,6,34,219,91,242,86,82,69,240,95,183,0}, + {3,193,235,82,80,166,219,203,130,123,255,154,163,102,180,121,172,4,45,161,154,164,146,203,130,92,197,6,229,183,104,232,0}, + {17,131,117,98,52,166,242,131,110,136,225,67,241,27,174,176,210,247,252,96,94,40,234,112,134,11,22,19,82,54,123,235,0}, + {89,48,120,174,189,168,67,136,147,144,24,102,140,217,245,111,175,180,8,120,97,18,106,164,203,202,109,5,149,151,154,185,0}, + {95,26,214,180,169,50,120,33,235,33,135,9,24,42,105,156,222,214,42,58,71,126,68,38,96,160,234,53,96,81,218,235,0}, + {8,241,97,132,151,205,153,98,62,32,240,186,229,71,248,54,98,52,11,46,138,223,98,9,203,105,170,64,169,144,14,248,0}, + {71,254,121,172,26,226,43,20,59,222,179,97,129,67,69,100,170,14,39,29,53,70,38,149,106,111,216,22,214,129,19,50,0}, + {58,22,218,58,46,250,154,56,84,211,162,130,30,66,231,90,37,37,113,141,77,65,231,184,112,84,152,40,240,199,220,109,0}, + {229,29,91,95,230,172,180,94,111,43,153,238,158,66,21,110,153,171,251,243,51,236,238,162,136,169,65,99,39,105,26,244,0}, + {42,154,181,199,6,43,244,102,32,254,229,151,112,171,65,44,224,58,97,19,227,236,166,230,56,183,27,177,78,54,12,45,0}, + {53,183,37,164,130,100,28,213,40,148,71,208,23,49,203,73,144,205,63,92,192,89,221,71,160,71,243,113,228,166,23,7,0}, + {196,187,46,107,131,239,107,108,70,83,225,30,69,139,115,178,7,79,61,53,254,226,168,224,141,101,195,124,82,57,180,144,0}, + {164,45,65,239,131,91,209,132,251,220,19,236,251,255,42,141,199,39,55,21,196,206,212,1,130,81,215,163,29,31,191,189,0}, + {155,185,177,145,56,110,246,62,7,227,190,186,160,36,126,241,82,87,168,123,203,131,246,166,246,105,239,67,219,213,42,121,0}, + {222,79,171,162,9,243,141,33,197,62,62,217,119,110,176,50,100,89,159,237,228,99,30,46,174,37,238,201,47,97,144,77,0}, + {61,229,205,97,254,155,235,98,129,166,180,47,176,52,24,219,139,33,118,198,152,129,196,250,218,71,4,169,38,204,169,252,0}, + {84,60,226,93,55,50,198,219,139,144,57,250,189,155,243,228,138,127,217,137,51,34,175,116,163,114,71,27,4,113,8,150,0}, + {172,20,123,108,148,102,186,89,194,53,169,189,51,152,114,124,204,59,186,9,134,107,123,150,49,52,132,185,203,123,136,23,0}, + {252,174,110,147,150,114,141,212,103,252,204,100,120,178,89,146,225,64,218,205,154,196,157,163,8,235,7,220,65,159,111,126,0}, + {115,191,92,79,27,34,234,71,173,17,26,226,138,2,173,24,175,181,255,35,149,21,84,244,225,92,63,192,227,107,31,75,0}, + {66,212,59,97,232,251,10,32,205,47,158,20,164,123,62,218,241,179,190,9,243,126,211,215,240,207,35,66,78,220,188,109,0}, + {169,208,153,159,119,139,209,205,27,148,13,159,44,107,42,208,84,245,51,200,225,13,27,30,196,224,150,202,28,25,198,131,0}, + {82,218,112,210,39,143,249,187,111,26,168,224,208,105,170,24,138,122,89,31,166,180,243,151,33,242,80,115,4,74,252,72,0}, + {100,51,23,48,217,96,93,253,69,253,170,112,170,189,149,41,28,121,238,73,197,28,81,12,225,43,97,174,222,62,35,79,0}, + {204,76,252,214,59,238,164,106,236,158,77,84,78,111,232,107,229,15,22,205,75,111,200,152,217,33,248,157,82,108,214,29,0}, + {162,7,104,250,204,252,190,118,11,79,0,230,238,0,135,193,107,216,152,99,250,141,250,108,75,176,156,244,180,114,225,171,0}, + {113,142,3,188,224,225,64,16,42,75,164,117,63,185,157,176,168,16,26,62,172,46,186,197,113,146,221,227,160,222,40,3,0}, + {145,204,129,76,111,90,122,151,18,62,83,41,50,222,93,73,33,103,240,182,178,62,145,226,135,111,76,85,164,30,207,121,0}, + {253,32,158,246,185,200,100,75,108,192,60,202,95,140,115,57,96,43,23,116,184,233,40,41,57,74,163,161,78,130,250,47,0}, + {143,137,99,37,83,232,154,92,209,108,156,13,53,131,249,129,3,131,162,58,46,162,43,60,54,138,180,147,66,74,168,159,0}, + {17,50,68,66,138,207,255,176,109,34,252,145,38,125,70,58,228,133,74,228,78,31,243,33,120,161,61,117,114,49,229,112,0}, + {180,42,203,20,96,93,224,34,43,104,178,173,192,206,15,51,30,225,185,223,31,164,25,79,78,186,18,242,210,84,185,88,1}, + {170,248,231,87,169,14,107,153,250,229,207,222,36,155,164,10,88,78,83,89,106,65,173,153,200,142,163,8,96,10,80,158,0}, + {103,160,252,150,179,149,236,129,119,38,138,37,37,61,76,152,141,116,252,242,118,196,190,168,252,45,3,117,99,98,180,11,0}, + {197,180,25,226,65,174,162,231,187,190,128,89,124,246,161,158,26,201,118,220,187,143,118,194,50,141,24,167,56,49,122,77,0}, + {28,192,229,46,163,226,32,247,83,76,190,145,182,169,223,116,30,109,154,149,79,230,170,41,192,71,73,33,172,225,239,79,0}, + {19,96,218,16,8,153,11,135,6,183,147,120,154,80,131,229,181,210,188,110,137,145,179,196,34,39,193,71,253,183,166,95,0}, + {235,100,123,252,248,96,118,43,67,163,70,32,242,185,195,186,42,16,54,80,42,69,218,6,61,27,173,116,54,146,193,34,0}, + {164,204,77,160,107,164,249,130,209,67,217,113,228,212,19,207,242,104,198,209,177,230,207,233,16,14,169,46,87,3,152,31,0}, + {195,161,158,212,169,55,66,22,247,245,255,251,146,34,248,154,58,167,3,112,124,165,182,183,175,199,225,5,196,12,88,118,0}, + {29,133,75,26,14,7,216,176,177,131,46,232,245,191,123,162,132,179,215,23,121,95,90,50,80,87,7,200,243,156,66,217,0}, + {242,1,23,67,30,255,234,221,144,234,121,206,183,149,3,95,203,9,78,198,131,117,137,10,161,154,90,24,136,210,244,198,0}, + {140,127,232,127,42,139,245,211,115,49,137,247,0,14,121,94,246,77,162,229,60,112,210,155,106,1,132,89,228,25,169,62,0}, + {152,145,26,162,12,22,19,131,144,45,225,129,138,147,212,143,183,147,150,225,139,229,99,49,51,204,204,97,23,187,209,176,0}, + {1,198,186,155,42,13,193,149,240,112,73,41,220,134,236,255,26,218,110,116,134,123,141,115,44,224,219,46,115,212,245,15,0}, + {225,41,205,108,217,212,116,206,149,104,183,105,139,86,70,92,199,5,97,113,145,73,158,167,223,176,161,213,200,134,233,155,0}, + {224,87,175,131,73,104,125,235,12,179,232,8,65,24,22,185,74,178,78,123,189,161,115,179,122,19,210,58,105,52,34,184,0}, + {178,52,25,199,90,86,164,55,188,96,66,234,37,235,245,156,179,116,31,108,118,11,114,193,69,161,163,240,131,70,136,41,0}, + {85,46,68,184,32,39,85,215,14,37,191,242,205,247,233,219,40,252,20,2,124,192,230,205,143,154,50,107,179,132,174,56,0}, + {9,243,61,41,221,46,28,109,249,126,189,32,63,44,91,250,250,148,190,216,153,35,38,255,98,58,31,14,16,207,218,103,0}, + {119,41,16,238,183,228,113,21,134,7,19,136,104,62,44,43,195,214,140,138,66,115,132,164,66,130,164,51,9,221,14,112,0}, + {57,83,133,85,54,122,202,157,26,71,227,204,227,96,115,93,121,66,204,30,215,212,168,81,140,220,209,99,94,205,66,188,0}, + {85,131,34,39,133,3,77,93,255,199,226,43,87,0,11,50,186,31,208,244,85,75,227,216,11,153,16,168,54,170,62,156,0}, + {108,187,90,43,9,35,178,142,161,240,55,101,92,85,180,233,170,4,58,82,212,95,36,102,168,64,179,218,64,185,249,136,0}, + {176,147,15,138,8,9,139,54,188,247,58,123,226,190,104,64,29,197,33,9,7,87,21,20,96,196,204,99,39,238,94,156,0}, + {20,242,117,252,25,179,45,243,102,34,226,222,49,157,239,97,35,44,139,16,7,90,75,80,49,51,157,128,31,106,210,185,0}, + {192,52,89,109,71,234,255,195,139,173,95,153,38,119,131,232,225,73,89,113,228,62,41,166,9,21,53,83,211,226,171,120,1}, + {82,108,228,253,226,128,19,98,172,63,94,238,167,19,62,163,143,33,126,13,127,153,70,102,66,163,232,249,109,196,106,142,0}, + {65,18,167,198,136,217,142,219,197,159,173,15,141,124,121,224,244,194,232,205,129,65,213,26,17,197,194,215,24,230,183,159,0}, + {180,153,173,48,95,67,84,30,93,52,3,136,190,168,74,195,211,232,146,202,169,24,76,61,238,37,31,234,223,213,0,89,0}, + {202,165,120,117,22,86,74,86,42,94,98,255,206,37,2,35,223,183,125,67,52,172,84,145,249,32,83,201,229,223,96,58,0}, + {252,149,85,217,212,247,232,213,144,197,71,191,222,89,29,96,101,121,15,12,140,126,159,130,216,149,56,127,205,179,255,42,0}, + {253,124,193,98,4,18,41,163,123,41,18,189,233,126,188,187,68,144,108,131,84,61,128,51,89,113,59,241,74,77,95,34,0}, + {188,29,254,226,86,215,157,94,245,37,243,238,40,143,25,94,21,253,188,156,53,228,75,108,131,54,57,155,48,211,213,129,0}, + {209,34,147,218,189,70,178,72,40,129,67,159,66,200,19,63,72,79,152,135,124,35,56,168,164,223,207,22,252,93,111,64,0}, + {93,76,193,194,54,30,117,98,14,53,17,169,170,27,204,4,157,228,41,224,171,146,185,161,70,199,87,15,161,183,240,201,0}, + {61,103,197,180,235,223,40,225,115,79,9,17,37,200,186,138,126,90,206,172,135,235,5,78,243,216,63,167,186,125,13,227,0}, + {178,50,149,29,111,242,184,196,63,52,27,241,10,33,85,253,53,225,66,169,232,210,116,220,191,158,106,223,113,13,239,23,0}, + {227,250,49,27,215,124,198,231,252,72,129,179,12,77,154,82,38,161,85,154,254,197,77,116,127,154,184,117,48,43,32,60,0}, + {162,168,183,171,141,199,160,230,69,138,6,31,77,19,221,73,161,80,198,208,166,13,140,104,184,208,145,20,174,145,219,6,0}, + {130,227,156,88,100,152,79,46,54,66,60,198,45,98,139,132,108,44,137,25,30,167,75,44,44,112,224,15,7,12,108,208,0}, + {223,99,10,15,80,12,136,175,186,78,202,203,77,55,128,186,46,141,153,129,90,46,50,209,92,83,37,17,97,71,174,136,0}, + {7,226,229,121,219,1,69,163,157,234,153,155,116,164,105,100,204,236,238,68,221,194,115,28,120,91,129,20,12,129,194,204,0}, + {146,185,22,158,22,156,200,222,72,243,18,73,154,74,6,38,187,161,199,209,251,39,188,210,166,238,217,23,208,29,115,93,0}, + {220,20,252,235,233,155,5,174,46,223,217,163,86,123,197,228,116,137,70,218,144,179,140,238,49,184,97,96,222,242,172,41,0}, + {87,180,129,206,116,98,229,165,211,57,20,123,16,172,247,177,38,34,77,129,141,13,104,4,71,78,221,151,64,9,227,207,0}, + {138,83,62,171,164,228,152,62,149,33,204,90,73,129,157,187,205,251,174,188,1,90,163,25,164,67,106,197,228,67,103,131,0}, + {82,112,12,96,103,197,179,28,20,128,39,136,107,88,132,43,184,43,41,231,251,31,57,16,215,194,190,240,131,101,34,18,0}, + {228,191,234,206,207,194,2,143,218,110,155,104,57,184,134,79,67,238,190,112,250,40,246,2,130,207,114,57,33,127,128,171,0}, + {161,90,36,53,141,110,156,20,122,51,220,124,82,170,27,230,90,141,81,51,162,61,186,105,188,105,136,219,9,177,190,179,0}, + {3,94,55,1,159,2,144,103,7,54,238,41,106,185,84,26,82,215,247,0,224,206,147,124,2,12,94,9,220,41,21,113,0}, + {199,3,164,43,140,80,61,67,252,2,205,9,88,166,121,232,198,78,113,232,151,210,14,135,34,187,162,208,75,178,124,54,0}, + {144,167,68,89,193,115,3,57,150,193,215,228,142,146,187,195,182,13,35,165,206,236,185,148,20,101,65,138,166,145,41,67,0}, + {35,35,205,103,235,11,200,107,209,181,106,171,31,196,94,21,223,44,28,147,190,168,239,128,144,166,158,53,21,239,235,184,0}, + {210,175,83,242,204,216,185,214,0,117,34,62,223,145,219,10,120,30,212,212,149,103,66,7,172,52,103,245,174,61,248,82,0}, + {25,244,154,144,157,199,133,159,60,157,193,240,22,84,206,193,141,203,216,178,252,141,52,226,8,6,210,29,113,16,148,225,0}, + {23,191,194,22,148,166,227,27,30,97,0,222,234,91,50,29,121,36,234,116,245,144,249,101,95,120,5,35,198,48,3,15,0}, + {41,83,21,146,88,185,198,30,244,178,108,215,138,32,1,207,175,165,94,241,7,236,67,24,124,136,86,143,226,183,83,203,0}, + {251,74,33,48,141,14,131,64,221,144,162,40,157,123,205,79,188,203,169,171,127,135,65,62,70,57,68,207,173,140,150,124,0}, + {175,33,162,150,85,64,145,43,28,221,190,87,193,114,108,146,36,17,119,159,90,246,246,53,193,236,185,28,173,102,235,161,0}, + {59,36,194,168,201,220,196,70,67,10,222,249,45,198,10,44,106,250,35,112,163,206,167,154,189,93,76,44,66,228,100,161,1}, + {114,9,49,40,212,23,179,75,28,102,210,160,169,223,176,133,248,104,224,175,49,117,118,125,157,123,64,213,142,31,130,12,0}, + {42,171,2,7,246,166,55,178,44,119,67,67,62,24,56,206,211,215,209,199,5,51,88,121,55,84,165,31,100,239,175,84,0}, + {10,185,192,100,193,13,22,66,210,15,216,17,10,70,195,98,40,7,58,200,188,174,82,233,74,33,211,12,91,242,52,126,0}, + {156,2,163,240,192,93,137,199,248,250,21,15,159,122,156,90,25,108,170,247,81,138,7,189,83,66,214,106,240,54,66,232,0}, + {236,18,162,230,26,28,181,47,92,243,181,213,140,35,191,229,20,250,118,64,147,146,108,21,29,13,151,245,187,145,214,73,0}, + {190,68,204,69,229,214,239,30,153,193,35,157,226,239,225,120,25,174,74,29,238,136,100,124,106,17,82,226,73,187,211,20,0}, + {190,35,37,39,77,143,53,98,17,237,222,54,77,242,166,57,115,92,236,44,62,174,237,140,239,65,248,104,41,65,30,111,0}, + {232,234,160,8,92,243,54,161,222,76,228,225,185,75,37,106,124,0,79,153,141,102,6,216,92,150,89,140,43,118,196,64,0}, + {197,121,33,225,12,194,117,115,248,227,67,153,25,61,94,204,79,105,91,104,224,16,84,203,177,138,189,233,131,254,10,98,0}, + {208,77,232,76,135,123,240,130,253,231,215,253,203,127,129,57,238,35,69,224,221,210,15,154,221,69,170,14,189,225,193,70,0}, + {71,165,71,49,221,111,50,150,144,109,166,113,59,147,170,5,96,2,14,67,19,6,230,43,156,217,111,37,7,21,9,42,0}, + {62,210,131,16,27,120,66,42,7,217,158,191,234,49,8,252,214,229,103,30,142,26,165,222,165,248,29,3,152,44,160,231,0}, + {155,44,143,156,178,35,187,10,204,170,176,150,171,225,64,69,227,179,174,96,238,148,144,58,55,48,94,69,238,147,29,74,0}, + {164,200,251,80,141,175,165,46,168,58,119,86,99,254,16,153,98,6,35,244,121,39,59,73,239,253,210,184,79,71,53,158,0}, + {24,108,121,29,123,18,89,201,0,22,250,171,43,248,34,210,128,201,131,183,216,30,158,106,204,43,145,12,36,222,113,78,0}, + {132,157,198,91,20,211,87,216,89,127,89,41,118,214,90,146,63,11,117,208,85,87,142,53,171,87,129,97,66,122,132,222,0}, + {80,85,196,250,69,253,94,223,32,90,241,226,45,250,73,99,141,188,4,112,61,32,75,42,156,75,140,2,246,159,66,25,0}, + {79,245,189,181,161,97,113,252,200,68,132,187,222,179,160,96,166,154,242,93,125,45,222,205,189,185,51,126,111,128,252,91,0}, + {225,241,204,216,255,203,85,53,148,16,104,88,19,180,44,163,88,64,122,170,181,223,80,170,111,21,224,11,156,76,6,181,0}, + {198,247,142,219,73,90,65,222,13,74,42,233,166,233,50,193,57,255,128,222,34,192,93,92,71,213,58,112,52,152,118,64,0}, + {66,204,116,163,189,198,214,73,223,140,42,159,2,82,125,14,78,4,176,152,193,86,58,229,176,33,212,84,47,93,221,103,0}, + {112,12,82,45,212,169,254,58,217,11,206,128,137,26,186,245,188,198,101,145,76,62,42,170,160,75,242,45,245,192,31,11,0}, + {16,97,169,139,87,198,116,75,23,241,99,82,210,232,198,16,136,14,156,247,110,104,8,30,113,250,112,93,145,44,155,36,1}, + {82,235,197,221,58,177,215,157,160,234,29,145,15,243,176,121,23,123,138,235,49,161,65,147,194,57,120,231,192,34,212,68,0}, + {63,58,168,61,54,143,174,251,141,222,44,163,212,255,42,27,173,48,233,60,1,33,174,138,112,38,5,8,242,170,27,130,0}, + {128,182,122,216,4,148,92,90,129,15,121,127,190,243,189,221,252,246,92,37,158,73,228,104,74,159,201,89,55,110,120,16,0}, + {58,156,110,9,80,101,157,77,247,119,74,79,172,89,124,84,44,158,234,83,137,44,158,74,29,240,253,241,176,203,241,145,0}, + {215,138,169,142,137,200,172,15,131,147,146,165,8,215,97,182,80,240,186,243,172,2,78,236,187,192,20,182,199,20,123,92,0}, + {20,203,245,30,250,36,252,204,38,57,201,16,83,133,239,160,45,188,186,205,129,245,35,9,194,178,149,81,66,148,242,205,0}, + {13,88,203,40,233,19,57,252,246,231,216,85,148,0,35,17,209,216,176,56,182,7,24,221,84,118,200,186,135,102,193,67,0}, + {30,164,131,247,247,116,113,65,227,89,53,151,189,111,118,64,152,104,161,222,191,243,211,115,28,70,80,35,196,65,57,135,0}, + {181,240,55,244,182,164,166,157,89,89,224,13,231,191,223,132,125,225,80,109,168,42,231,163,96,226,93,231,204,228,128,135,0}, + {53,232,219,238,243,176,146,221,153,68,43,106,117,194,171,138,125,48,71,72,99,69,30,94,235,154,148,136,36,99,104,179,0}, + {235,96,246,82,173,40,188,73,224,49,96,139,37,47,220,209,94,213,139,58,253,178,92,43,76,149,252,114,140,55,90,166,0}, + {94,102,18,22,192,243,176,241,136,198,106,204,0,221,136,33,211,181,112,41,14,159,144,225,48,160,171,63,108,131,79,77,0}, + {58,198,253,34,117,240,205,250,186,31,242,221,186,254,182,188,93,213,61,5,78,6,211,226,20,55,76,163,127,223,196,107,0}, + {163,111,57,221,35,61,216,135,132,215,209,146,150,248,156,247,115,24,23,73,135,76,204,16,72,169,204,68,219,26,6,2,0}, + {183,66,185,25,239,245,38,189,205,145,87,151,18,213,63,161,228,156,38,71,243,84,20,100,89,79,80,3,191,12,19,211,0}, + {165,219,225,130,241,216,20,249,198,112,215,14,248,238,170,91,39,90,22,212,201,131,179,180,170,69,0,42,221,92,41,169,0}, + {55,125,223,79,223,218,60,45,178,50,199,200,81,45,119,47,167,168,153,237,46,42,30,149,37,40,26,2,153,137,177,34,0}, + {204,33,182,22,8,190,85,19,220,2,226,71,40,81,44,37,125,44,206,33,223,144,166,187,16,226,44,156,218,108,156,123,0}, + {166,122,8,143,42,117,138,63,36,139,187,206,236,142,227,185,3,61,136,203,15,51,50,231,95,228,132,248,151,153,63,31,0}, + {78,242,158,211,160,131,27,233,103,49,9,112,16,229,48,104,77,40,209,207,239,30,45,27,222,105,206,190,136,219,42,23,0}, + {237,229,192,81,87,9,130,26,161,245,219,222,206,58,23,3,243,174,188,121,160,141,71,157,10,195,226,30,34,75,201,10,0}, + {176,97,9,153,67,111,171,114,173,68,120,211,72,254,38,96,85,87,171,114,78,251,20,75,159,198,75,140,95,17,118,212,0}, + {136,249,48,195,129,239,39,161,236,232,216,19,100,140,145,176,180,236,182,89,203,6,234,216,163,51,6,61,98,108,131,118,0}, + {67,87,57,116,116,249,148,221,183,132,186,23,217,11,73,43,223,179,222,93,191,98,211,97,182,117,125,89,254,244,248,13,1}, + {211,139,150,109,86,70,72,151,207,75,55,46,162,8,210,112,204,206,242,170,250,148,64,34,201,28,13,226,90,190,10,249,0}, + {136,26,115,219,117,102,216,214,244,64,153,135,212,60,252,222,13,39,35,251,129,234,95,134,218,118,219,0,233,5,92,106,0}, + {134,254,137,2,121,41,135,55,92,56,69,83,138,47,193,90,191,212,92,218,214,171,237,23,226,188,60,231,223,53,231,116,0}, + {54,96,25,43,27,132,7,162,55,220,219,111,178,72,204,56,43,183,191,220,148,105,38,34,224,119,207,37,58,141,100,68,0}, + {53,231,56,245,72,21,108,139,108,44,215,172,190,110,98,122,250,215,63,116,161,183,16,229,87,25,6,27,81,142,11,129,0}, + {3,203,78,167,128,154,162,210,153,240,140,63,244,149,81,158,109,30,237,245,254,163,231,130,4,66,58,238,116,179,115,246,0}, + {60,10,175,169,0,186,208,193,137,123,201,33,242,223,46,162,79,125,186,79,39,45,52,82,187,224,47,244,157,4,241,195,0}, + {60,79,47,167,252,76,163,21,137,191,70,129,147,50,123,113,28,210,21,215,212,101,239,129,40,173,131,208,251,65,222,232,0}, + {89,241,213,216,184,40,215,87,146,40,142,10,226,213,5,158,47,20,108,165,101,58,13,171,100,73,192,41,97,197,128,103,0}, + {29,238,164,66,136,242,54,17,255,198,96,229,117,62,102,155,10,114,128,61,191,193,214,127,18,15,166,70,9,219,253,113,0}, + {53,189,247,61,203,45,14,87,114,118,252,12,250,197,145,211,11,93,150,183,253,46,254,19,58,244,122,25,130,56,244,8,0}, + {17,2,251,49,204,212,35,49,191,249,162,49,28,115,151,75,167,96,167,189,35,54,94,58,53,156,106,205,79,187,53,155,0}, + {244,56,191,72,237,248,0,47,107,22,170,34,188,62,206,59,180,170,169,95,88,227,4,144,110,188,110,94,112,193,12,46,0}, + {104,158,120,157,33,210,119,66,141,15,254,232,22,15,224,24,159,178,181,254,14,110,84,12,230,253,111,118,224,129,192,162,0}, + {212,137,249,139,67,192,231,21,2,180,67,155,210,2,252,226,120,49,189,33,62,12,178,41,3,193,209,115,171,44,22,34,0}, + {142,198,90,148,77,241,97,195,74,13,4,181,21,94,158,83,132,89,8,19,35,237,160,240,47,170,138,38,183,18,214,146,0}, + {172,15,32,44,236,230,214,84,177,194,24,202,68,196,118,57,44,52,216,28,225,33,46,83,144,248,137,53,235,249,146,41,0}, + {219,205,196,118,109,104,75,78,200,3,75,44,254,230,51,80,31,14,173,152,215,202,5,103,99,226,91,52,95,151,213,202,0}, + {237,35,252,175,254,29,232,172,91,234,16,211,50,233,181,191,113,32,237,206,87,200,254,247,233,218,5,41,11,42,87,138,0}, + {39,161,48,124,76,218,214,65,32,126,189,231,202,109,66,122,200,93,34,124,69,75,190,129,121,172,22,192,95,222,179,248,0}, + {217,12,215,20,215,223,157,220,51,105,90,33,120,40,65,127,70,244,99,78,221,4,185,221,238,250,27,208,59,2,139,154,0}, + {55,52,233,241,230,34,83,143,171,246,229,9,87,25,223,156,228,254,160,36,210,216,64,162,53,172,93,148,121,146,43,192,0}, + {196,167,30,14,10,153,90,181,217,188,78,128,150,244,152,92,114,29,57,166,244,129,224,156,117,7,73,57,154,122,217,142,0}, + {44,17,5,243,14,116,35,189,106,235,187,90,163,130,102,84,98,235,183,48,0,84,13,228,202,82,64,192,217,235,254,90,1}, + {125,148,91,223,153,201,60,155,110,18,122,250,175,202,132,24,226,253,137,178,79,19,144,39,151,169,122,70,73,230,198,45,1}, + {240,20,151,82,156,223,39,19,131,65,88,136,255,184,176,42,217,70,51,130,83,9,143,194,4,251,103,102,133,26,76,141,1}, + {251,98,125,147,146,54,37,27,230,2,80,106,139,155,246,208,145,58,147,247,87,236,24,21,28,132,22,46,141,107,58,10,1}, + {61,135,30,168,179,157,221,230,0,41,246,221,162,152,124,17,88,96,116,40,49,196,102,85,232,121,243,62,99,247,148,35,1}, + {145,111,200,31,44,143,139,105,250,170,39,69,148,156,22,190,107,142,166,152,64,39,3,231,52,23,18,16,166,118,118,90,0}, + {76,84,78,210,37,75,244,108,245,154,178,180,166,203,31,107,138,113,1,119,47,52,27,142,229,70,9,187,72,89,56,49,0}, + {142,251,32,76,1,36,120,255,116,38,168,25,161,157,2,54,134,36,101,100,141,149,203,253,247,10,125,34,4,214,93,113,0}, + {110,165,144,122,238,139,107,215,61,195,98,203,213,87,64,232,106,254,181,231,46,132,11,206,198,143,136,25,82,250,221,22,0}, + {19,156,134,235,126,190,11,5,225,2,41,163,245,207,23,200,30,239,38,59,102,173,216,196,87,111,242,196,0,229,246,200,0}, + {22,108,142,74,86,189,140,68,10,130,141,192,12,59,33,152,75,121,252,151,180,180,161,223,37,212,235,147,111,147,249,225,0}, + {196,211,118,205,0,71,125,122,97,137,50,247,211,201,200,219,169,248,95,173,13,54,133,74,104,206,4,250,168,104,136,52,0}, + {181,139,201,60,58,135,163,190,31,55,133,151,2,209,69,11,194,5,148,128,39,93,249,171,158,96,2,242,81,124,237,9,0}, + {247,0,169,141,199,163,136,79,74,162,2,44,212,2,155,131,201,39,62,164,225,37,213,85,208,61,182,57,165,151,29,164,0}, + {169,7,33,75,22,162,82,106,14,167,37,103,235,188,161,139,34,203,3,185,81,154,141,226,21,27,173,219,68,188,37,30,0}, + {92,125,44,181,81,185,182,110,204,208,209,48,103,193,55,133,163,10,159,4,232,223,162,161,208,111,10,247,24,99,8,82,0}, + {180,88,129,167,183,83,153,252,186,230,255,211,246,183,169,165,232,236,91,82,111,143,165,1,6,208,42,47,252,106,161,85,0}, + {72,84,58,168,164,171,219,193,241,254,96,126,74,59,32,48,180,110,112,246,44,69,219,200,13,96,193,79,24,194,159,201,0}, + {132,185,122,66,237,0,216,167,4,89,27,80,40,65,10,75,59,167,140,169,194,81,98,122,98,159,118,191,129,10,243,119,0}, + {145,211,114,94,154,103,103,227,189,122,227,169,149,200,57,78,76,96,9,254,168,139,187,208,178,122,8,38,13,202,28,41,0}, + {233,166,245,105,109,67,122,68,225,255,35,81,216,44,29,126,26,102,76,149,179,8,88,111,42,246,214,170,25,250,204,142,0}, + {18,197,157,39,130,197,224,164,81,107,101,200,42,6,106,204,211,179,199,105,224,205,231,111,248,79,175,89,177,71,46,4,0}, + {189,178,166,64,103,104,249,173,2,56,220,111,64,32,248,162,185,138,126,94,134,158,133,174,143,229,190,14,230,178,227,150,0}, + {58,38,9,251,215,67,35,222,155,181,169,68,188,180,71,180,157,139,126,59,133,227,78,27,81,135,64,130,6,222,245,253,0}, + {146,183,70,152,99,224,17,8,151,98,16,27,215,90,17,53,186,221,46,130,61,215,24,160,204,59,35,149,180,156,35,207,0}, + {124,77,118,44,133,202,246,122,137,139,47,53,109,93,12,183,103,186,110,43,17,229,102,209,19,206,43,81,31,60,165,238,0}, + {215,122,85,84,245,17,180,81,187,47,7,30,188,105,26,91,195,239,251,54,222,249,217,61,132,147,144,94,178,81,240,219,0}, + {235,46,88,203,236,205,14,150,63,172,40,3,151,227,158,207,182,126,205,31,179,42,173,176,134,108,219,122,21,61,240,88,0}, + {235,113,68,219,223,158,1,63,248,118,188,21,16,43,208,0,229,104,181,243,223,246,205,81,53,201,140,46,64,76,139,232,0}, + {212,50,80,203,50,18,244,86,255,178,208,183,37,170,139,20,110,4,0,101,231,84,20,190,233,106,95,175,140,196,4,11,0}, + {90,203,157,13,157,160,72,116,32,145,125,71,221,24,236,191,135,4,102,82,46,177,109,120,240,239,54,152,75,6,185,132,0}, + {81,247,93,195,186,245,109,224,12,40,242,198,14,144,77,23,185,214,32,215,146,236,121,255,194,146,164,152,209,1,76,248,0}, + {188,27,57,198,143,249,2,41,176,80,179,22,135,206,140,247,37,89,124,162,195,166,220,40,84,54,46,61,203,235,156,152,0}, + {119,0,167,175,73,140,3,11,189,120,177,231,6,5,150,153,111,165,232,220,87,46,10,172,3,112,172,181,218,97,104,65,0}, + {133,47,94,200,127,16,103,193,238,205,61,223,132,224,34,200,143,144,114,41,54,188,198,44,84,174,9,156,211,150,43,213,0}, + {7,205,105,24,239,71,151,233,241,27,244,26,174,71,108,235,207,206,8,224,146,131,111,19,142,9,198,9,177,41,113,28,0}, + {251,33,84,63,77,9,185,195,3,214,146,249,246,58,87,253,252,13,110,47,98,97,97,91,200,81,154,17,166,10,110,0,0}, + {227,53,173,36,84,118,95,94,214,97,173,182,239,34,45,172,54,1,36,139,70,75,29,234,117,239,120,125,211,75,228,80,0}, + {228,28,36,245,125,243,215,211,114,120,139,164,184,196,106,3,245,114,74,135,17,197,91,169,165,69,142,49,203,193,120,78,0}, + {191,9,216,18,117,238,71,215,33,49,87,89,154,177,68,244,190,80,26,9,102,71,34,146,86,88,71,193,189,70,137,236,0}, + {110,139,248,71,35,223,29,67,237,208,34,79,41,118,188,185,86,214,171,248,244,170,106,63,62,22,28,30,124,182,162,201,0}, + {219,64,213,52,124,37,226,29,229,50,162,200,46,170,119,26,95,189,176,116,114,89,249,90,102,40,214,218,51,209,9,6,0}, + {224,236,49,166,102,5,231,70,198,51,43,93,87,131,246,97,172,21,0,20,175,44,158,93,205,90,228,77,17,55,55,106,0}, + {44,4,170,208,102,190,245,244,75,66,189,63,118,196,203,20,18,66,242,226,213,192,2,70,157,36,226,32,122,207,170,180,0}, + {224,94,201,150,232,112,183,146,255,138,134,238,99,88,158,182,61,177,227,14,17,91,158,174,48,176,173,5,205,239,230,170,0}, + {213,91,138,174,165,239,154,58,220,159,225,44,36,155,243,133,233,254,115,155,116,217,156,168,151,64,1,186,141,135,154,150,0}, + {143,84,85,128,217,159,207,201,36,86,110,46,7,233,187,133,135,215,47,222,53,66,202,120,15,144,32,102,69,94,137,124,0}, + {42,95,236,32,166,111,161,65,195,233,122,226,79,173,78,182,174,201,22,137,86,159,15,168,140,220,231,33,130,110,236,154,0}, + {107,87,183,201,49,107,199,199,120,7,144,175,111,118,154,130,87,250,252,78,151,145,242,65,175,147,72,83,179,171,205,96,0}, + {161,13,241,12,129,212,31,40,34,220,87,101,255,166,72,62,179,116,133,235,254,165,112,146,19,252,121,167,196,154,105,111,0}, + {167,124,86,39,65,240,122,226,141,151,207,80,9,245,53,222,21,98,85,75,198,174,215,78,157,252,30,254,60,94,248,176,0}, + {151,68,13,33,225,23,167,125,73,96,183,15,14,216,217,95,88,58,211,122,40,119,232,228,61,42,119,13,148,61,167,198,0}, + {29,64,140,55,144,149,55,224,198,63,92,7,69,0,136,45,24,82,104,57,30,55,41,199,235,124,194,82,223,72,100,8,0}, + {60,130,153,73,59,48,191,202,61,200,238,142,199,112,33,88,165,116,158,3,69,72,76,186,160,50,231,109,135,145,83,218,0}, + {144,78,239,149,207,245,233,27,9,216,167,214,66,192,209,118,136,88,74,211,70,66,246,4,68,236,183,74,245,108,31,4,0}, + {113,134,181,67,145,81,155,62,247,142,132,150,217,31,154,56,50,145,22,135,5,110,55,214,116,148,183,50,119,158,31,222,0}, + {184,206,207,102,188,77,48,17,171,189,214,230,91,159,166,170,12,59,148,222,7,211,64,77,189,48,209,121,221,92,124,194,0}, + {2,22,252,88,25,172,72,12,102,252,174,2,150,229,83,32,193,245,184,31,197,69,112,148,56,125,251,193,35,192,191,204,0}, + {104,13,88,37,195,21,231,139,128,98,10,254,229,228,227,179,97,39,143,162,161,231,172,42,183,52,101,79,202,160,89,121,0}, + {69,151,42,251,202,228,228,125,8,58,250,246,177,174,98,45,124,79,242,90,217,154,158,221,94,53,40,74,188,172,239,152,0}, + {250,85,60,241,217,74,206,98,165,230,29,217,181,135,195,211,87,224,78,136,112,130,25,241,55,181,127,93,217,26,192,144,0}, + {24,80,228,12,222,181,124,77,167,65,183,88,53,93,144,100,31,172,179,152,175,236,84,148,228,245,66,85,24,219,169,242,0}, + {85,84,92,43,87,234,27,209,249,104,158,59,224,86,8,14,19,207,155,13,44,228,243,199,246,130,81,97,196,198,0,246,0}, + {220,58,109,151,43,113,175,178,120,58,144,99,30,177,249,150,108,223,248,5,249,213,201,227,33,135,216,126,21,162,181,247,0}, + {59,113,209,87,0,114,69,108,186,170,64,212,204,154,151,181,37,66,159,146,19,170,98,120,8,92,115,47,44,196,188,193,0}, + {56,222,22,7,140,75,23,172,124,105,178,2,253,153,81,25,221,109,33,161,188,96,237,198,252,52,207,193,129,206,151,178,0}, + {245,90,130,145,190,19,210,241,183,105,167,186,18,80,140,252,82,200,120,107,39,121,218,146,127,28,68,251,140,239,80,160,0}, + {230,64,205,67,11,110,247,200,27,87,233,239,74,186,255,214,252,39,63,152,177,149,118,58,151,48,198,17,68,26,108,30,0}, + {202,151,34,53,207,196,154,190,166,130,14,133,165,215,149,7,57,61,102,204,141,162,227,119,127,43,251,98,211,215,101,171,0}, + {93,31,135,74,199,245,79,232,9,198,24,117,107,129,92,233,221,106,52,219,152,205,77,52,40,146,180,3,119,117,193,132,0}, + {155,121,125,129,139,85,185,112,47,147,237,162,29,203,7,225,108,226,253,61,13,173,157,234,164,50,234,95,198,101,27,60,0}, + {69,238,166,105,199,142,16,249,181,164,72,236,90,157,207,57,120,88,150,30,205,35,172,221,202,122,111,32,76,68,26,77,0}, + {120,55,129,150,171,221,57,132,17,173,121,224,193,44,123,202,215,106,38,191,111,213,183,125,109,67,178,68,77,133,11,97,0}, + {134,125,245,139,125,0,197,206,69,129,139,74,83,32,220,218,176,138,121,153,229,115,77,163,236,65,51,193,191,167,205,250,0}, + {13,78,25,148,182,155,109,162,69,119,72,230,195,6,76,68,199,38,131,89,138,16,81,166,1,190,159,212,11,208,35,3,0}, + {179,140,107,211,6,6,235,171,118,81,191,228,162,81,12,19,14,133,38,182,201,17,68,5,90,81,84,149,232,2,224,22,0}, + {132,106,115,155,226,23,148,224,146,74,252,171,21,76,245,69,99,243,72,223,170,179,206,180,108,210,114,237,230,178,96,131,0}, + {67,194,96,229,135,188,65,167,43,191,227,113,111,232,3,224,217,59,30,130,195,72,124,79,204,253,189,68,254,60,231,93,0}, + {92,111,73,233,73,142,111,101,20,178,65,247,174,103,94,136,141,209,1,232,53,8,247,243,123,78,71,198,23,217,209,43,0}, + {43,113,162,143,27,176,99,38,101,141,114,160,94,218,15,22,16,175,80,180,140,105,47,249,199,82,201,105,226,104,164,240,0}, + {89,56,92,193,152,78,214,137,95,200,200,33,221,170,214,136,145,104,210,101,250,7,27,0,74,156,189,244,189,165,206,52,0}, + {193,95,6,55,181,117,11,254,167,23,186,229,63,192,201,145,239,223,92,72,203,138,233,165,185,6,197,220,133,119,165,232,0}, + {197,131,130,136,241,231,68,243,47,93,142,114,56,221,219,231,30,210,244,146,93,98,56,59,238,66,127,99,99,128,239,236,0}, + {191,87,227,71,138,15,154,235,175,232,113,10,130,211,21,203,51,40,117,128,206,35,97,21,72,178,73,109,235,67,96,72,0}, + {131,212,171,36,16,149,185,0,135,90,49,184,201,172,245,156,114,161,90,135,23,202,193,34,25,46,217,168,224,5,141,82,0}, + {193,115,85,106,111,221,254,165,113,201,16,163,171,169,24,61,116,253,85,11,138,48,75,164,15,177,6,92,151,184,123,127,0}, + {67,24,60,142,158,194,215,0,144,100,179,117,195,226,171,165,7,133,229,136,23,86,248,75,222,107,126,192,51,148,124,186,0}, + {51,150,201,232,148,35,83,167,251,25,29,68,153,121,44,214,95,203,157,162,234,132,10,73,187,173,10,92,101,166,73,205,0}, + {57,17,126,156,117,24,26,132,180,69,128,29,179,228,8,245,110,149,136,120,180,75,206,54,154,127,247,168,229,50,10,27,1}, + {55,57,174,109,248,87,105,123,243,188,211,254,196,140,25,4,197,171,189,165,126,219,156,255,202,165,29,58,208,102,150,214,0}, + {160,185,162,19,77,208,102,189,88,75,193,241,35,243,137,103,36,188,141,236,144,84,131,108,130,33,11,121,26,159,219,36,1}, + {85,41,235,155,11,83,177,80,121,28,91,26,118,229,182,177,177,139,168,186,5,183,219,190,8,121,70,68,169,144,77,159,0}, + {173,230,69,55,143,97,61,182,36,10,43,59,148,50,33,144,235,77,53,16,158,188,1,123,151,90,43,163,59,255,193,11,0}, + {53,194,119,188,166,34,194,231,71,106,82,213,108,90,46,120,25,165,184,237,200,94,81,133,230,101,164,178,65,47,254,161,0}, + {11,35,121,102,35,193,18,24,192,127,100,212,6,183,52,109,209,123,6,11,75,95,242,26,88,48,22,58,73,18,241,88,0}, + {205,77,173,183,97,161,72,21,169,221,203,90,86,251,218,197,182,47,210,209,137,226,64,24,73,111,98,218,163,213,109,27,0}, + {84,212,56,170,67,12,212,250,250,176,38,213,171,69,178,145,143,198,27,180,156,184,43,249,135,105,218,127,168,183,254,212,0}, + {227,63,27,164,16,117,79,205,65,124,139,168,19,142,173,199,143,221,1,245,44,69,25,144,36,175,165,251,111,46,65,160,0}, + {217,26,152,92,14,142,43,99,247,14,146,140,100,248,104,61,134,101,216,218,124,143,61,163,8,94,71,136,74,122,165,78,0}, + {106,251,118,70,209,84,59,48,9,6,168,6,24,138,11,139,13,126,6,60,51,146,168,117,219,97,194,60,40,249,65,105,0}, + {252,89,218,3,30,102,86,183,132,87,18,197,4,215,77,56,202,238,31,155,212,158,19,58,138,17,139,181,94,221,9,199,0}, + {77,83,12,101,216,9,174,206,222,250,193,106,192,225,13,108,226,97,226,252,126,62,213,20,19,161,170,21,120,163,98,229,0}, + {92,139,4,122,179,64,4,41,101,143,233,68,52,183,242,114,196,153,24,121,248,105,33,102,218,164,91,242,246,98,60,183,0}, + {102,62,150,163,178,29,70,247,183,36,38,181,101,186,253,189,48,57,46,66,237,185,191,221,114,46,22,85,223,199,107,43,0}, + {220,66,142,134,197,190,19,60,223,57,208,34,173,111,6,236,243,76,211,22,156,210,232,246,56,253,173,191,250,245,188,242,0}, + {189,194,44,42,253,202,220,45,41,176,161,180,52,88,24,135,24,126,149,230,51,247,130,154,197,49,202,166,109,58,106,104,0}, + {143,49,184,94,164,189,147,102,207,142,147,2,195,121,83,109,38,216,80,240,72,184,189,62,88,91,52,144,144,230,28,18,0}, + {179,121,199,184,79,219,38,17,246,241,114,109,218,57,208,65,80,152,68,246,18,91,239,146,77,42,119,222,57,213,35,90,0}, + {192,55,197,97,88,67,73,231,202,36,46,22,238,185,214,23,1,212,234,34,114,85,197,191,38,60,6,144,217,226,94,34,0}, + {81,153,105,29,112,168,184,97,206,162,64,218,240,172,240,222,161,127,102,195,79,192,144,140,59,109,210,15,178,174,135,249,0}, + {212,34,0,27,170,123,138,62,30,39,77,89,83,252,58,29,246,66,12,73,164,166,37,13,131,1,57,252,159,145,109,140,0}, + {109,96,57,191,128,166,207,198,146,5,102,168,39,145,142,122,44,49,234,239,249,236,208,71,25,20,229,66,125,125,117,121,1}, + {139,49,174,184,131,138,111,1,112,29,219,133,72,43,115,199,26,253,88,66,156,118,111,50,233,167,195,112,186,132,203,128,0}, + {122,39,67,45,33,119,129,55,107,45,121,229,233,133,94,149,63,31,248,100,204,61,93,66,142,181,226,162,104,35,136,27,0}, + {66,238,205,20,186,85,219,78,26,148,41,85,205,167,9,66,199,0,183,154,231,65,193,252,46,118,41,15,103,6,136,188,0}, + {1,178,191,249,169,12,71,147,193,128,126,87,14,254,127,179,240,245,55,24,132,179,153,50,153,121,121,252,69,82,69,17,0}, + {31,48,154,117,119,23,111,150,139,102,229,169,127,51,95,197,180,84,3,245,91,6,43,194,90,209,50,37,211,85,179,19,1}, + {193,252,195,46,223,4,1,99,12,32,167,226,128,233,215,229,159,202,105,64,28,66,151,62,151,199,252,43,48,136,9,116,0}, + {244,124,164,37,184,116,50,48,106,21,224,238,117,43,73,138,174,60,7,183,227,54,132,2,29,151,73,153,60,28,236,222,0}, + {206,72,241,216,93,103,32,179,157,46,147,196,231,173,253,135,162,249,237,190,184,204,32,255,228,102,232,96,142,26,33,151,0}, + {73,57,183,92,248,126,190,127,79,46,210,216,111,55,200,14,133,63,197,38,64,45,70,33,206,208,20,46,98,34,230,206,0}, + {192,67,243,29,87,20,183,153,155,144,13,217,8,250,132,164,221,167,144,25,56,179,189,218,38,172,92,212,224,46,132,6,0}, + {64,137,248,177,99,62,163,121,95,37,168,249,209,243,229,210,175,50,8,59,156,246,24,202,165,63,139,7,176,163,39,74,0}, + {89,32,224,78,213,190,81,214,33,217,136,201,8,249,222,30,36,93,248,113,102,9,54,167,120,214,225,233,134,218,234,38,0}, + {109,23,152,137,75,50,45,172,208,149,96,184,20,135,24,127,253,38,251,18,9,199,149,105,113,223,220,5,217,150,201,219,0}, + {181,73,241,121,77,117,161,186,111,87,90,229,8,83,98,255,247,211,195,58,182,230,99,55,83,155,231,64,247,193,59,140,0}, + {66,4,105,102,148,236,87,97,148,215,173,135,174,138,13,68,133,51,136,133,186,182,231,141,107,139,235,119,82,245,105,170,0}, + {48,226,10,54,55,100,32,69,129,149,205,194,3,125,121,155,74,131,197,230,108,161,157,137,194,100,167,36,229,33,165,193,1}, + {231,8,246,164,143,148,161,253,65,71,108,202,141,60,199,147,139,242,33,186,72,20,60,155,159,158,83,99,5,22,178,51,0}, + {10,16,175,143,245,180,168,201,222,130,16,192,166,131,197,131,186,40,101,209,165,211,149,141,70,90,69,35,25,11,0,71,0}, + {49,14,135,194,64,118,131,71,147,86,240,36,0,84,236,181,248,160,78,34,92,15,251,220,52,205,35,173,32,26,254,221,0}, + {151,81,241,90,254,97,188,51,22,99,35,0,98,252,185,81,238,169,87,218,14,233,144,180,188,167,179,95,68,10,239,80,0}, + {199,12,217,16,33,40,150,157,102,254,145,11,225,147,203,111,108,241,153,203,75,126,212,241,7,87,184,133,130,43,207,206,0}, + {57,2,35,2,249,117,84,252,10,193,101,253,18,253,200,152,220,184,158,208,139,93,243,130,242,126,155,10,38,199,17,95,0}, + {52,192,15,192,93,12,221,74,117,58,250,69,235,168,67,105,167,2,18,0,86,57,40,64,153,37,128,2,245,153,241,246,0}, + {20,108,223,255,216,229,185,3,199,87,125,205,22,142,1,178,191,104,41,27,180,29,223,142,177,10,98,131,88,46,171,0,1}, + {220,142,170,70,232,30,214,33,169,132,215,116,251,58,20,181,93,168,134,141,27,143,153,254,37,169,41,206,134,165,202,135,0}, + {32,164,96,155,169,210,102,177,169,25,253,176,2,87,94,20,37,151,42,209,0,179,204,144,79,229,124,109,207,223,220,210,0}, + {173,217,144,241,67,183,157,124,112,42,195,91,35,203,123,26,101,7,88,81,97,239,4,144,128,10,124,83,19,189,88,180,0}, + {59,124,118,135,29,160,108,37,109,53,62,118,190,110,247,210,124,89,43,111,156,56,255,186,1,112,8,220,149,239,157,124,0}, + {137,86,52,37,120,11,30,74,8,75,233,212,226,242,151,94,222,128,160,61,168,174,186,31,115,152,24,153,223,149,27,216,1}, + {14,167,103,118,72,150,128,186,28,35,218,23,117,191,99,222,202,154,121,19,165,7,119,154,147,6,55,13,48,21,149,250,0}, + {119,151,223,244,98,123,1,159,97,84,22,210,81,2,174,157,19,142,200,52,82,205,202,164,122,240,209,243,39,79,186,124,0}, + {89,92,5,28,30,66,60,187,55,73,29,166,205,118,199,24,151,109,229,2,106,212,73,7,142,164,196,236,47,57,146,177,0}, + {20,201,161,43,60,94,246,136,130,93,58,117,247,8,239,119,154,255,96,228,236,148,172,125,62,154,27,195,186,255,36,170,0}, + {127,41,102,29,76,221,143,28,75,49,249,247,240,118,25,61,145,119,89,238,174,152,226,189,182,202,240,53,11,179,26,199,0}, + {135,249,172,252,232,177,128,137,229,250,248,226,60,73,76,188,207,60,220,221,124,108,27,4,162,186,132,202,182,200,190,54,0}, + {29,24,157,199,123,1,108,145,211,213,86,40,150,133,201,220,108,164,179,230,22,209,10,170,111,30,147,180,76,156,13,182,0}, + {229,237,148,21,59,195,201,18,37,134,153,193,144,197,124,157,71,129,106,76,130,106,247,30,87,247,201,44,101,236,57,243,0}, + {215,218,67,211,52,195,64,168,41,141,69,138,2,3,230,204,180,13,103,90,139,30,145,90,21,240,62,186,4,1,151,118,1}, + {249,122,140,8,101,24,105,169,158,64,151,121,147,201,152,242,112,137,24,226,240,1,247,125,153,44,235,179,132,2,244,175,0}, + {122,177,205,145,4,155,33,123,126,121,162,79,192,162,130,212,168,2,246,36,34,171,13,172,134,144,254,104,202,165,88,235,0}, + {59,86,63,78,51,23,240,169,120,46,127,14,117,221,154,163,237,5,177,128,37,86,92,179,218,84,83,102,233,138,40,218,0}, + {73,135,161,184,160,248,51,147,132,56,183,127,61,223,130,165,198,229,84,155,139,37,194,49,238,63,169,167,86,158,12,47,0}, + {44,52,124,109,175,6,234,48,243,213,212,218,71,240,227,54,37,208,220,13,20,192,205,3,123,140,45,252,79,177,225,68,0}, + {216,122,150,35,191,132,40,252,28,184,201,186,85,92,93,152,202,244,117,42,206,16,31,75,199,72,100,157,145,204,9,77,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, +} ; + +static const unsigned char precomputed_mGnP_ed25519_m[precomputed_mGnP_ed25519_NUM][crypto_mGnP_MBYTES] = { + {224,135,14,17,150,165,131,191,160,179,224,178,234,183,171,20,151,112,40,238,215,61,53,84,208,28,30,103,95,140,84,209}, + {78,64,12,16,211,36,206,251,165,39,152,226,219,206,5,210,37,186,123,49,239,249,65,170,191,244,78,72,66,168,159,60}, + {65,178,251,62,244,59,49,41,66,147,53,227,142,111,248,204,4,194,178,1,198,173,145,105,221,2,69,247,223,200,147,39}, + {96,154,68,253,117,168,110,149,206,46,4,114,0,15,189,95,68,173,57,32,121,250,25,129,13,74,155,200,176,155,84,147}, + {135,164,96,150,65,255,150,117,20,160,209,216,115,150,240,103,114,178,158,183,81,223,81,71,186,99,201,241,63,107,80,181}, + {40,198,180,56,7,46,177,116,244,230,243,39,186,199,131,56,93,231,171,247,190,216,228,148,76,101,139,44,166,158,197,63}, + {185,129,137,49,182,163,45,164,52,45,158,110,241,87,158,78,47,131,88,69,5,27,141,209,80,53,111,130,41,153,19,249}, + {222,81,100,34,85,252,179,241,247,165,190,25,214,31,237,181,34,80,174,90,14,211,251,22,37,139,233,203,91,152,186,195}, + {31,220,101,111,190,159,95,88,202,97,113,215,243,48,175,182,70,32,191,205,217,168,95,154,144,77,134,194,154,250,81,155}, + {194,225,139,187,217,246,76,169,82,71,14,242,243,66,223,18,107,162,8,79,205,43,135,179,184,253,172,176,78,229,15,62}, + {34,218,17,71,209,47,96,134,121,56,232,65,155,248,19,205,226,134,69,225,156,9,101,153,255,139,4,30,155,90,116,58}, + {22,153,156,234,207,199,232,81,16,19,228,112,122,41,92,192,16,162,133,98,37,244,69,112,26,172,30,5,37,165,204,230}, + {36,66,86,84,86,197,40,125,132,245,33,52,48,239,178,198,91,139,125,206,183,122,2,164,113,158,66,45,153,160,112,103}, + {24,132,96,205,123,135,225,41,44,33,190,36,39,71,205,22,140,220,198,241,211,206,242,157,27,150,13,37,0,176,208,62}, + {44,188,140,157,177,222,198,151,186,133,190,196,200,213,82,156,26,166,170,132,16,223,221,220,136,134,131,241,243,150,13,145}, + {105,212,6,187,154,227,199,215,80,21,209,32,148,252,203,4,192,151,119,104,250,202,161,192,157,206,130,103,205,92,139,45}, + {156,17,157,240,57,162,195,58,179,230,62,129,75,129,255,9,135,33,13,190,41,64,156,38,253,96,126,84,190,220,91,137}, + {95,111,137,168,162,7,8,4,43,143,176,35,153,139,8,1,245,26,140,172,113,166,180,251,39,253,81,250,21,118,118,126}, + {90,184,253,66,136,55,247,4,239,11,97,152,17,76,22,16,251,98,6,240,97,78,87,187,98,67,131,181,5,226,41,195}, + {170,235,102,12,200,238,165,23,13,235,59,201,106,179,213,215,174,1,241,163,149,102,208,87,87,19,208,64,185,199,62,181}, + {9,194,170,132,65,64,96,19,188,39,234,139,61,160,10,194,167,249,122,23,54,22,83,2,183,23,124,59,200,94,44,96}, + {104,156,133,242,202,230,100,133,22,28,163,155,114,236,3,202,131,1,120,186,192,240,136,224,97,66,121,104,20,173,107,33}, + {240,40,179,155,15,30,160,15,110,229,206,44,247,187,190,51,231,225,215,92,119,232,90,39,154,246,108,225,11,76,156,11}, + {59,189,252,71,108,218,131,67,53,196,149,41,201,185,96,21,80,84,204,138,251,123,41,46,233,66,113,44,154,57,252,220}, + {81,53,84,178,203,206,244,186,175,55,117,173,89,238,189,253,22,197,35,30,246,116,139,247,48,79,125,60,92,148,235,202}, + {205,123,216,129,99,250,189,75,237,203,41,24,82,134,106,23,12,188,23,53,47,192,184,89,108,187,185,44,219,154,156,42}, + {159,201,96,249,184,41,137,82,196,84,139,138,16,92,187,74,129,234,39,56,79,232,94,116,175,28,57,86,69,106,171,103}, + {6,115,24,244,136,17,223,94,14,127,120,116,74,16,130,217,246,22,90,66,152,3,78,42,128,109,17,165,217,41,114,113}, + {213,169,196,107,214,153,170,23,104,45,78,143,73,113,67,82,255,216,217,103,124,108,171,209,146,176,15,64,182,153,235,90}, + {248,241,234,149,182,116,91,240,203,29,127,212,156,65,59,135,54,233,190,26,191,113,109,106,183,54,148,34,201,198,232,11}, + {17,227,78,205,14,234,160,142,238,92,207,103,109,40,48,141,24,155,115,88,85,46,9,238,170,187,94,231,197,40,82,90}, + {243,11,222,138,209,83,183,37,113,136,111,115,213,8,99,118,163,178,52,32,173,35,236,141,131,35,72,167,114,225,103,160}, + {23,23,23,249,255,10,120,189,135,172,128,58,82,119,223,133,221,221,238,94,194,236,247,186,53,150,141,127,171,215,144,232}, + {166,202,6,51,186,210,4,174,40,143,237,94,98,245,25,39,135,185,139,203,125,129,247,79,41,2,157,237,93,102,165,12}, + {146,163,235,3,55,145,127,30,39,42,69,29,68,253,30,68,0,252,241,178,241,138,49,140,14,70,48,103,40,7,68,84}, + {210,115,123,137,154,23,15,78,52,47,71,159,22,50,129,84,23,66,250,68,205,164,157,114,71,74,7,78,240,105,39,95}, + {217,80,89,164,141,226,21,142,135,217,95,139,92,193,100,112,55,7,110,43,70,184,20,116,5,34,62,238,13,44,149,250}, + {68,87,194,243,34,95,180,188,4,205,131,73,224,90,220,36,174,245,235,76,55,195,156,232,148,35,133,223,73,183,122,140}, + {241,55,251,132,82,181,45,42,245,135,135,208,208,48,1,161,182,60,98,163,19,153,215,113,190,244,61,216,158,21,37,144}, + {64,132,11,216,163,104,20,120,97,148,243,4,197,113,248,13,105,128,92,102,90,86,162,39,96,163,75,133,150,0,162,27}, + {143,184,247,252,72,182,232,65,2,72,224,250,7,139,16,127,146,198,233,2,137,25,174,121,46,248,250,254,130,86,79,93}, + {72,58,202,217,106,65,115,47,56,165,160,168,183,3,60,167,223,32,103,255,44,14,92,146,102,250,108,94,58,6,27,10}, + {206,239,7,45,75,56,204,143,232,81,132,76,20,191,142,90,49,100,171,207,80,205,152,180,137,25,1,132,25,33,4,98}, + {223,216,45,133,29,28,215,158,234,156,213,203,239,190,61,129,3,61,212,175,176,234,137,228,210,219,218,104,101,132,214,246}, + {250,67,5,139,43,25,135,247,84,211,166,230,180,243,82,215,206,96,50,193,31,96,166,142,208,203,147,166,254,249,44,45}, + {46,207,118,166,175,165,16,232,250,232,93,251,204,224,6,208,100,36,135,247,17,193,204,110,126,205,113,131,190,51,103,214}, + {170,107,5,217,141,132,107,17,134,193,106,217,239,7,58,230,49,178,43,35,159,234,25,147,178,121,33,190,158,14,218,120}, + {107,78,39,225,76,227,118,123,0,129,248,249,234,57,152,24,81,250,97,25,113,97,107,172,96,9,73,106,150,136,57,164}, + {3,60,64,15,31,214,116,195,218,43,231,226,105,110,21,134,13,234,154,44,231,179,120,94,129,160,28,163,111,217,2,140}, + {64,40,108,149,22,25,59,138,149,195,70,113,58,105,68,121,39,188,163,188,106,65,154,198,157,222,180,173,75,94,76,21}, + {122,221,70,145,164,237,217,51,55,195,210,30,170,18,195,122,6,60,190,21,22,202,218,140,114,175,126,238,77,162,149,2}, + {152,220,75,52,124,232,213,35,4,214,177,235,213,216,159,240,218,18,61,19,82,69,154,230,47,232,108,229,115,202,67,109}, + {107,68,95,175,251,249,69,249,156,187,187,33,165,98,72,250,38,189,236,179,56,2,209,131,160,110,99,41,255,184,127,55}, + {244,76,29,67,84,149,0,177,39,7,38,58,223,25,63,7,24,14,52,41,218,252,69,216,245,25,118,227,42,228,143,76}, + {187,212,9,183,225,165,169,197,130,23,30,202,74,74,247,229,108,218,26,168,40,192,123,146,169,10,84,28,13,20,67,75}, + {9,106,247,3,83,87,111,18,167,253,145,203,37,197,185,197,63,49,99,158,211,90,119,134,30,211,230,117,84,82,16,13}, + {36,156,85,102,129,162,247,33,30,168,166,69,59,172,115,168,87,199,144,147,25,145,145,66,30,247,226,24,236,210,19,232}, + {162,8,33,200,237,112,120,68,185,134,234,24,136,19,241,200,239,8,170,157,33,133,24,179,43,198,40,151,209,152,43,127}, + {239,112,136,141,239,134,110,247,137,41,45,95,13,123,64,184,132,209,0,188,149,124,58,209,41,147,104,188,67,188,231,108}, + {16,117,126,29,176,36,4,104,39,137,174,35,224,159,30,217,88,230,203,37,59,174,76,203,202,232,170,86,146,179,85,120}, + {168,252,129,57,167,239,52,226,8,19,35,166,207,237,31,255,30,67,105,228,102,140,10,161,161,65,129,177,45,52,207,215}, + {226,102,135,157,218,1,165,137,166,39,235,168,202,200,223,13,239,184,253,140,248,77,118,116,192,222,193,171,187,173,146,145}, + {25,220,47,212,47,127,98,191,89,110,122,214,72,141,108,205,69,68,229,103,10,76,14,86,44,57,114,6,111,187,215,114}, + {86,59,0,2,72,23,188,253,134,220,248,36,208,73,205,107,166,226,25,105,133,206,181,124,204,164,57,77,188,109,207,118}, + {243,184,217,100,254,29,178,240,239,135,70,162,239,138,146,6,138,29,148,72,184,160,38,114,148,228,18,128,153,11,224,174}, + {131,168,29,187,246,140,99,94,109,254,15,212,72,65,93,22,101,1,49,47,37,211,77,145,134,207,71,76,253,174,193,181}, + {69,53,136,190,232,87,98,174,206,191,165,216,171,225,227,134,100,47,142,248,62,46,203,65,5,199,81,60,79,53,59,241}, + {181,197,14,3,82,56,91,173,34,65,93,208,45,196,167,35,106,53,92,85,2,69,144,149,93,6,53,246,2,232,207,42}, + {51,88,59,2,201,75,73,134,79,197,103,135,71,43,170,214,193,5,43,187,93,2,38,44,119,204,54,181,222,212,7,84}, + {47,170,80,5,220,151,138,196,1,111,19,189,219,114,204,255,134,95,57,60,177,219,76,239,129,186,115,216,207,221,177,97}, + {168,204,42,11,125,101,255,202,37,162,68,168,66,20,42,231,15,235,235,69,216,65,137,29,243,17,78,106,125,55,130,206}, + {232,62,105,117,172,202,149,71,156,226,84,158,85,1,3,99,52,53,170,156,54,133,250,249,82,238,123,66,210,200,148,227}, + {213,21,80,94,117,75,174,79,26,21,25,31,34,159,199,155,50,245,59,194,11,133,223,27,124,188,163,165,42,66,149,141}, + {125,164,137,67,133,155,45,50,163,76,109,132,112,54,60,115,59,20,89,156,73,106,13,179,48,32,251,143,176,64,66,221}, + {106,51,20,116,2,106,118,224,97,162,241,129,66,163,0,251,71,95,239,139,109,241,58,219,210,235,154,10,19,19,141,123}, + {76,46,148,134,27,146,178,213,128,114,239,156,159,128,150,41,144,70,48,114,70,67,51,110,71,229,144,230,74,200,166,215}, + {205,131,253,72,145,232,38,205,159,8,207,144,84,249,21,115,31,124,139,206,142,38,128,2,147,116,78,29,37,160,129,11}, + {96,151,31,137,24,112,150,195,145,38,26,220,52,42,60,74,60,61,115,209,131,131,11,217,189,194,65,222,80,117,95,10}, + {245,201,0,64,196,72,44,155,190,144,4,1,69,209,190,214,34,145,212,174,132,231,129,10,247,141,156,121,18,42,31,159}, + {219,20,222,204,237,101,236,30,241,105,252,86,94,187,66,70,99,27,64,64,93,121,251,110,188,136,215,46,80,124,221,237}, + {226,43,170,250,230,36,5,208,250,219,166,16,189,100,48,198,218,233,52,81,24,60,154,82,141,11,187,41,38,155,59,253}, + {13,166,217,76,35,11,140,70,25,175,208,170,163,100,113,144,234,212,165,224,185,131,99,236,54,101,218,224,236,200,206,116}, + {97,27,44,210,100,246,162,191,36,182,233,119,62,224,118,46,208,57,111,67,86,29,30,2,244,150,80,249,36,221,172,176}, + {172,148,59,148,242,32,5,108,246,237,156,51,71,55,106,173,223,35,246,194,152,131,24,170,9,249,97,247,188,131,126,194}, + {226,1,9,4,145,114,92,183,14,187,130,148,34,53,4,22,2,15,85,11,195,110,60,39,137,55,109,0,174,43,139,243}, + {51,101,159,49,0,222,246,249,145,81,79,191,217,180,122,137,157,223,123,85,141,209,24,74,145,147,124,120,76,94,15,29}, + {174,84,241,21,156,12,46,24,245,84,16,220,182,182,72,88,23,90,159,65,196,187,75,150,35,18,188,54,81,30,45,122}, + {31,142,135,193,1,215,238,172,244,14,164,230,69,5,133,47,94,175,138,108,184,157,66,8,230,7,51,212,47,35,8,242}, + {142,237,160,93,232,126,192,35,11,164,19,150,213,194,81,41,176,182,223,40,50,8,239,15,145,243,39,254,159,27,81,67}, + {213,41,111,56,14,157,182,65,98,218,184,232,244,236,124,43,245,69,210,154,29,107,247,30,59,177,116,16,210,176,213,99}, + {120,189,78,19,31,201,127,145,42,44,95,214,209,131,134,42,146,165,137,201,14,3,54,93,229,178,234,38,225,184,168,178}, + {91,244,98,112,241,189,229,178,62,171,51,94,144,103,129,164,115,59,204,8,207,121,185,66,99,59,183,82,29,183,203,91}, + {138,3,228,82,184,177,246,115,161,210,89,153,80,152,89,7,216,143,182,131,237,72,201,179,69,41,160,95,111,198,148,242}, + {251,69,208,40,183,154,92,138,213,240,233,57,155,57,134,55,171,172,70,233,22,23,12,11,6,228,64,154,139,59,217,77}, + {36,30,18,116,136,206,195,223,24,156,63,44,105,195,239,5,109,24,17,95,193,236,220,50,199,103,162,62,118,6,143,227}, + {113,13,201,84,66,144,100,125,30,146,212,189,210,38,19,118,187,32,170,213,209,232,157,106,249,47,167,90,228,215,135,240}, + {252,28,157,173,147,227,165,169,62,81,24,242,78,114,91,135,215,151,45,7,12,41,201,232,174,84,116,243,75,57,216,131}, + {77,119,217,151,138,214,35,150,192,254,164,19,76,179,37,162,125,188,249,9,252,150,98,209,144,163,36,40,58,244,92,66}, + {38,6,220,211,85,41,183,164,57,2,213,162,187,73,18,247,191,91,241,192,118,216,51,196,83,195,0,117,148,146,160,228}, + {164,93,230,155,71,186,139,79,185,170,33,158,49,249,72,90,134,123,155,133,208,45,253,132,221,197,89,127,49,113,152,85}, + {114,139,40,87,137,10,94,45,68,210,159,149,9,152,81,115,240,212,32,71,249,129,125,242,129,109,74,133,220,29,205,174}, + {90,90,250,202,123,157,139,60,81,30,109,201,231,145,80,120,119,138,56,218,20,81,240,182,171,33,147,64,111,27,225,240}, + {46,115,7,34,147,20,153,141,216,185,30,60,9,251,166,16,119,83,248,198,102,219,9,121,88,162,7,172,191,223,66,110}, + {113,98,137,30,106,13,22,133,131,248,96,106,126,130,13,1,123,66,105,10,144,146,14,199,143,253,64,177,18,207,119,200}, + {113,138,250,102,7,28,175,209,255,148,203,157,106,6,99,249,32,200,190,201,194,1,216,45,236,97,122,13,136,242,46,235}, + {184,205,249,85,69,156,209,39,132,167,194,51,124,132,36,136,16,11,193,58,175,41,58,190,23,12,100,38,198,250,140,100}, + {205,55,168,59,148,135,133,56,182,243,202,2,24,39,123,29,222,246,255,155,251,54,182,239,119,2,180,173,55,125,195,19}, + {215,117,246,213,246,237,2,157,18,144,98,97,197,169,76,70,240,219,206,187,13,17,162,159,236,193,63,39,37,206,100,61}, + {218,1,181,54,252,151,52,152,98,63,246,185,37,238,12,143,156,96,244,238,21,34,170,19,207,32,98,52,33,222,38,213}, + {70,223,44,90,4,250,128,197,248,164,182,24,249,255,220,227,0,244,98,187,128,88,7,191,115,110,174,40,40,29,9,111}, + {62,53,166,132,145,59,229,236,211,144,10,30,189,189,52,128,0,227,17,175,9,172,123,126,249,165,101,153,77,93,39,71}, + {38,212,103,81,24,150,223,127,173,168,132,82,161,40,166,201,84,19,243,68,128,25,98,97,180,77,89,203,132,236,127,31}, + {47,7,194,66,215,22,125,132,254,8,136,209,110,119,183,15,50,221,82,247,231,156,69,97,239,254,138,143,148,180,26,255}, + {145,15,103,67,163,205,50,247,78,68,63,114,67,47,13,26,78,135,133,39,213,85,42,125,173,45,134,206,239,19,83,103}, + {138,111,241,12,122,61,26,127,140,24,94,206,131,172,201,79,10,248,203,208,75,181,29,119,23,244,8,132,247,127,227,128}, + {221,205,93,150,194,205,101,59,79,122,150,89,32,0,6,186,149,69,231,223,72,89,241,207,58,37,233,14,189,244,235,131}, + {130,233,7,163,52,220,24,227,159,123,50,0,133,180,114,210,41,176,151,60,92,29,204,46,187,101,234,31,71,47,47,129}, + {110,52,33,49,248,96,63,242,162,221,98,187,212,225,224,140,14,96,122,134,110,44,32,218,2,162,251,77,216,177,216,120}, + {243,181,103,66,169,7,112,247,209,251,8,96,169,84,233,184,215,59,27,80,183,237,207,100,2,38,112,71,40,118,115,101}, + {121,34,242,188,194,159,16,197,45,147,252,179,183,6,144,95,100,159,12,220,225,156,58,249,0,7,253,54,76,222,222,41}, + {201,252,102,219,33,221,121,59,44,112,155,31,220,167,88,179,32,40,180,64,241,132,96,111,28,171,50,163,236,94,108,140}, + {229,180,104,21,93,201,20,238,29,107,169,121,148,43,155,189,232,171,189,88,95,254,43,211,196,55,176,119,252,215,100,69}, + {79,218,103,24,20,143,160,145,65,56,59,164,143,216,45,120,41,81,242,255,69,193,159,48,33,32,238,107,233,173,176,7}, + {38,72,166,226,178,225,201,209,210,249,249,232,157,67,191,138,36,168,1,8,90,6,181,141,229,132,181,82,220,84,18,255}, + {28,59,168,15,251,0,231,52,217,208,36,127,117,28,86,155,82,181,137,175,22,232,25,56,78,56,242,254,207,108,167,15}, + {248,37,158,253,175,78,16,243,160,22,175,192,5,12,129,56,64,204,7,7,113,188,177,175,250,252,13,243,226,10,231,139}, + {197,58,34,193,150,71,33,215,232,25,162,67,103,152,59,70,160,158,46,89,5,223,149,169,91,155,137,172,124,244,105,198}, + {3,7,72,202,244,59,15,254,212,94,21,34,136,185,243,88,11,168,83,36,244,45,245,3,101,36,133,174,54,114,138,56}, + {72,123,50,27,246,69,107,134,96,47,239,50,125,29,99,167,45,240,138,156,226,51,95,101,31,48,217,44,161,52,211,164}, + {93,254,143,54,95,125,60,214,254,8,21,3,63,72,214,18,81,55,127,38,185,226,77,7,168,97,53,40,91,122,18,12}, + {213,154,141,90,176,37,247,205,253,210,188,33,45,151,186,153,45,100,97,160,23,48,56,46,147,55,73,60,97,64,248,19}, + {140,168,60,159,14,114,223,4,225,222,119,83,228,211,81,118,216,25,221,194,34,170,69,18,79,65,227,3,39,182,147,186}, + {68,226,24,51,172,200,67,147,24,9,208,89,94,123,224,22,210,51,7,176,192,54,162,195,206,114,132,106,51,62,174,4}, + {51,4,150,24,156,115,10,217,237,112,56,74,8,43,181,247,41,68,144,184,103,137,86,16,72,24,122,103,59,199,114,229}, + {17,243,81,216,195,86,121,33,21,227,34,79,11,222,119,175,210,215,229,234,133,79,156,93,225,219,232,75,231,166,112,243}, + {146,241,160,254,50,216,130,196,35,63,60,4,197,133,153,15,77,15,252,120,52,190,145,170,227,189,18,37,46,156,173,128}, + {161,238,243,109,189,85,176,198,244,242,19,141,186,32,20,135,254,117,53,198,153,13,84,56,54,88,11,78,73,250,181,246}, + {52,171,180,223,196,42,90,89,7,121,70,171,201,106,54,179,77,138,200,154,181,202,246,145,185,98,229,43,190,25,230,150}, + {78,117,172,73,218,81,228,218,222,33,38,62,66,119,154,4,233,228,19,153,196,193,23,65,192,105,188,231,123,2,106,205}, + {231,13,250,132,75,39,138,183,123,251,102,111,37,112,23,151,89,10,178,195,103,11,118,84,6,239,107,246,197,211,104,175}, + {155,102,23,199,192,166,244,154,235,65,17,146,86,51,183,205,199,47,206,60,87,184,13,94,29,53,190,119,14,161,172,163}, + {89,96,23,38,74,48,18,170,81,175,188,105,128,163,77,192,248,18,213,205,19,44,148,62,66,142,150,239,44,229,27,91}, + {195,102,104,54,168,254,140,128,242,147,202,110,177,159,31,204,164,25,182,159,143,52,206,20,4,230,125,198,20,111,88,204}, + {254,89,36,214,241,246,56,119,140,28,69,130,105,224,22,171,24,18,62,30,59,0,85,204,165,236,37,0,110,71,156,47}, + {22,249,40,206,42,144,158,71,234,159,248,207,225,0,32,235,223,228,231,8,97,71,51,59,157,216,49,207,30,47,24,122}, + {124,87,184,135,160,92,168,83,146,230,153,2,159,192,228,81,201,209,183,137,124,160,214,58,7,136,75,50,39,115,70,132}, + {111,199,12,204,196,123,37,14,141,105,183,246,232,99,231,247,200,141,135,196,145,113,185,153,230,139,11,175,212,133,134,132}, + {156,117,133,41,95,71,126,238,232,146,193,214,128,163,162,225,240,211,142,64,146,17,105,240,211,185,37,28,155,196,137,118}, + {107,2,211,135,126,94,215,112,219,124,11,113,77,147,87,239,43,167,84,168,79,216,224,175,96,229,178,109,37,172,41,137}, + {223,200,236,126,192,41,104,138,209,216,187,230,190,26,163,137,253,40,199,41,185,77,158,35,208,221,62,74,24,99,43,150}, + {188,29,3,170,231,52,8,38,178,138,154,156,21,147,38,159,168,182,66,70,53,110,28,193,22,87,26,82,129,216,192,211}, + {160,208,75,19,73,39,30,188,136,179,50,130,85,78,98,246,222,0,94,198,6,20,4,40,7,211,44,255,179,129,179,179}, + {112,181,180,93,129,108,32,122,171,196,84,89,167,78,233,221,80,77,79,94,218,112,74,80,130,150,216,101,167,229,52,186}, + {8,112,197,13,236,156,115,226,147,155,184,9,110,102,229,64,221,17,118,189,98,164,17,82,124,72,106,232,214,11,103,235}, + {246,11,85,52,221,169,40,242,154,70,94,159,119,26,112,181,8,0,13,172,227,227,199,205,150,202,222,5,11,162,24,30}, + {47,113,147,43,53,91,216,12,102,100,175,21,204,204,113,83,228,89,229,134,110,19,224,241,47,94,111,180,117,97,27,193}, + {96,38,80,131,232,234,123,13,191,167,174,112,114,248,11,106,123,4,175,164,0,1,145,32,243,241,78,170,18,196,177,36}, + {230,10,252,165,184,146,174,57,12,236,103,52,227,205,225,2,80,7,83,107,234,88,46,14,251,220,150,233,225,196,76,6}, + {19,244,183,24,81,51,61,208,84,223,232,30,99,126,66,217,212,254,247,99,221,65,88,113,188,178,111,182,118,89,223,145}, + {160,235,191,217,224,240,150,77,15,182,207,97,168,98,10,82,167,169,152,173,113,127,200,107,156,238,18,81,101,170,126,223}, + {165,51,142,202,198,239,102,147,241,93,202,74,205,152,54,118,55,38,253,190,39,96,189,133,126,66,72,109,247,105,244,44}, + {240,162,102,147,127,59,128,59,244,44,158,25,221,102,174,197,45,157,139,209,127,211,130,113,81,246,7,156,84,192,22,133}, + {28,46,130,193,202,163,47,174,225,30,11,208,198,7,207,50,99,49,38,60,200,71,20,221,119,36,166,13,93,208,16,181}, + {21,252,132,23,198,46,209,43,118,183,229,167,179,36,202,45,178,179,234,85,114,210,20,180,57,242,35,30,91,186,217,53}, + {217,154,50,174,119,220,81,93,56,206,191,121,115,228,21,155,153,111,214,121,250,146,186,201,44,99,80,199,67,135,109,200}, + {108,85,197,23,0,146,163,41,131,216,153,90,138,83,121,145,122,214,87,0,238,111,131,11,166,213,98,201,108,28,213,50}, + {242,239,41,230,99,54,191,16,145,212,236,93,191,231,213,119,116,87,22,55,58,135,154,243,22,221,145,203,82,43,83,5}, + {178,130,247,226,166,48,237,238,3,164,133,169,180,88,16,193,118,236,39,248,119,184,95,42,223,124,228,113,30,237,235,98}, + {189,54,209,143,47,160,4,194,38,248,182,90,132,251,104,159,19,242,31,195,191,197,242,255,145,69,128,25,237,163,98,210}, + {111,54,10,14,78,211,115,205,175,156,64,100,98,214,247,122,229,100,175,149,85,129,119,135,165,86,223,219,43,155,43,35}, + {202,151,192,65,202,80,25,118,217,109,51,204,194,2,236,165,102,25,64,237,1,242,131,171,81,133,111,153,125,108,43,67}, + {49,142,164,146,62,226,62,144,123,156,207,117,100,23,102,80,206,33,212,113,89,248,243,32,157,3,20,119,145,24,85,159}, + {195,232,151,76,162,145,99,161,33,145,188,135,199,139,239,188,47,126,204,229,198,121,73,152,243,9,164,30,21,132,75,130}, + {37,94,141,104,131,132,69,129,106,250,215,87,168,145,0,2,17,239,75,243,63,23,161,229,110,53,6,133,39,4,83,163}, + {73,44,13,40,152,232,103,106,176,96,32,125,170,206,121,184,103,214,45,230,55,190,103,160,114,77,86,209,101,127,244,206}, + {153,46,76,236,244,71,99,131,120,2,139,85,67,152,71,110,218,197,59,36,230,190,102,104,199,166,239,111,20,243,38,226}, + {124,243,110,210,132,174,49,249,236,4,181,60,143,152,10,22,240,83,230,136,193,10,112,60,124,145,249,70,248,205,246,113}, + {234,98,3,217,93,185,21,30,164,65,164,167,143,22,5,167,209,0,198,178,15,236,190,150,149,144,158,93,132,187,108,200}, + {130,56,54,245,188,111,198,213,126,118,218,165,113,68,120,37,230,59,183,192,200,214,107,34,124,155,60,179,79,223,151,216}, + {156,20,27,90,74,232,173,207,13,170,101,80,142,193,249,255,73,20,38,37,73,19,95,43,232,94,54,243,219,68,28,73}, + {152,163,124,136,53,192,127,80,131,23,138,235,108,202,119,198,241,159,219,254,4,81,193,81,66,123,128,151,128,48,3,36}, + {211,96,75,255,137,21,14,100,24,14,33,56,129,81,78,43,88,109,233,15,148,120,100,141,221,183,155,226,16,31,181,132}, + {141,45,246,246,188,182,105,33,128,157,122,29,61,146,77,154,125,189,77,73,81,115,223,253,185,168,243,135,242,240,239,184}, + {158,146,191,162,204,181,50,56,48,226,130,120,250,218,86,233,91,137,2,185,61,143,39,50,147,107,191,240,83,214,22,207}, + {59,251,84,103,98,154,125,192,56,201,233,20,46,178,154,234,126,33,140,10,186,222,170,92,237,0,240,68,157,106,204,178}, + {199,156,190,42,58,161,239,118,15,62,111,87,135,186,83,208,3,228,46,31,122,89,119,123,144,177,212,173,174,114,100,27}, + {79,238,157,90,203,90,165,174,241,38,214,142,130,134,216,20,47,138,16,195,22,178,206,125,129,222,150,231,194,231,138,32}, + {193,9,36,103,143,12,208,9,127,231,115,229,220,192,102,1,204,36,255,216,71,206,160,151,96,141,33,76,119,112,167,199}, + {220,238,240,224,77,239,227,208,119,21,64,171,42,248,111,64,105,107,246,14,46,131,174,71,253,108,83,150,158,65,55,186}, + {58,240,72,28,153,158,220,55,75,191,212,68,176,59,15,242,205,57,166,34,162,99,199,96,99,32,138,155,184,191,86,3}, + {124,6,37,20,96,197,6,85,182,201,142,200,147,132,130,101,254,163,19,178,64,197,44,166,22,162,117,108,117,95,155,49}, + {141,86,122,119,60,122,213,130,193,20,57,29,232,125,102,222,86,71,9,47,30,205,228,174,244,210,235,190,160,87,211,6}, + {228,173,160,207,15,99,90,53,230,205,56,82,46,27,135,50,85,223,225,33,235,210,236,200,64,181,250,51,22,199,254,134}, + {180,184,62,178,121,127,7,25,26,3,139,41,241,80,230,188,37,13,226,78,176,244,106,164,27,189,65,234,78,228,93,106}, + {198,70,188,140,74,171,33,84,87,219,111,244,215,205,34,59,113,14,120,80,198,100,30,15,25,226,70,113,220,235,84,134}, + {212,237,195,194,92,132,197,140,100,225,231,151,5,248,169,228,226,135,188,247,4,135,67,43,61,221,64,77,255,8,118,85}, + {178,169,70,238,131,11,221,12,29,237,145,89,232,116,200,36,117,129,85,147,100,139,146,119,77,213,128,156,202,72,29,235}, + {164,208,126,148,99,158,148,96,166,241,57,130,179,39,75,7,76,32,1,171,136,59,181,42,136,7,14,106,166,158,197,42}, + {18,195,222,170,175,239,59,22,4,186,46,204,165,223,74,37,15,241,173,241,239,154,13,197,12,176,110,32,101,142,129,245}, + {43,59,249,123,246,175,123,89,65,162,161,96,155,25,255,16,134,170,210,155,231,15,243,200,57,247,116,192,97,125,253,221}, + {202,72,127,124,38,170,0,105,181,101,184,154,28,101,200,201,166,164,159,154,215,40,114,152,97,169,183,127,53,113,250,138}, + {8,227,84,252,204,238,151,122,104,169,44,212,117,51,82,215,199,139,131,149,172,233,189,90,4,4,113,109,50,57,43,209}, + {67,253,248,98,89,200,80,121,28,193,177,14,38,129,3,7,60,235,253,0,175,120,57,228,29,229,233,129,31,148,81,241}, + {16,101,119,175,245,176,204,87,4,9,55,228,150,126,151,38,169,104,89,186,32,137,54,35,81,117,253,17,85,227,94,151}, + {133,241,102,186,12,199,81,252,133,136,150,140,61,151,106,53,6,167,174,145,224,109,159,22,112,252,227,82,152,31,223,58}, + {92,237,199,133,245,117,54,115,211,97,22,14,239,203,90,78,137,77,209,184,7,164,181,231,101,204,254,108,185,9,161,57}, + {63,180,53,184,238,9,40,253,14,178,214,69,60,215,136,36,40,193,172,123,7,100,78,142,65,87,16,224,129,187,219,184}, + {138,18,134,249,243,115,255,231,69,235,212,107,231,147,203,186,225,11,7,67,241,119,47,123,101,169,147,82,121,57,148,240}, + {213,243,50,107,60,244,9,158,7,115,0,111,230,81,225,52,104,52,52,238,9,8,69,105,149,116,164,41,29,185,137,226}, + {255,163,130,223,111,130,158,202,61,207,126,239,83,125,118,42,168,207,92,167,47,201,47,170,129,190,65,236,220,232,197,170}, + {23,233,44,178,192,138,73,162,245,196,85,166,115,141,81,169,35,85,119,147,187,30,175,175,40,157,50,206,7,191,226,83}, + {226,55,127,198,136,90,204,69,180,89,226,77,183,200,95,195,170,140,56,51,251,18,103,97,230,20,97,255,108,242,37,43}, + {60,184,1,127,200,237,122,0,75,120,156,32,103,183,126,127,110,87,232,66,143,31,42,240,25,35,151,123,162,236,175,33}, + {252,201,68,1,94,213,176,96,2,5,141,152,116,97,229,211,48,91,19,106,57,152,28,37,95,100,130,157,229,50,118,70}, + {231,103,184,78,230,219,176,248,252,214,4,7,7,239,191,143,194,135,129,145,126,111,51,60,106,158,31,202,165,20,18,34}, + {11,246,230,84,240,242,160,187,249,208,38,128,61,151,57,85,111,124,235,186,87,72,100,114,45,9,151,119,75,247,171,180}, + {123,199,124,5,85,143,214,64,217,18,43,45,39,204,217,159,39,33,185,196,241,171,236,125,5,200,88,8,181,152,19,169}, + {86,12,0,74,231,236,29,181,68,80,19,137,173,200,54,76,103,209,118,93,159,195,175,8,143,147,18,55,200,169,181,54}, + {6,247,211,213,81,14,215,159,197,217,252,9,154,173,148,202,237,181,85,184,174,224,147,172,252,91,177,23,13,234,53,143}, + {32,196,186,12,241,6,125,112,184,252,58,3,243,4,108,132,27,11,79,253,187,157,30,89,207,110,210,33,90,120,30,75}, + {39,42,223,58,176,69,139,186,25,114,20,183,79,51,25,171,2,105,216,149,80,167,230,200,136,24,132,97,62,16,78,234}, + {222,49,39,101,35,154,168,68,8,225,127,249,6,101,78,4,80,95,130,20,2,99,92,153,167,132,117,241,233,40,139,29}, + {246,160,115,111,198,158,68,163,34,223,48,251,101,74,106,194,183,87,72,172,184,172,81,60,154,18,43,87,243,126,73,229}, + {204,119,228,209,134,144,69,104,82,98,196,54,140,244,56,111,248,203,155,115,246,117,66,247,45,220,137,74,153,164,144,139}, + {227,61,146,44,172,31,134,175,146,53,17,9,125,16,118,214,228,146,117,65,219,185,235,194,182,37,197,33,198,43,18,153}, + {99,161,87,12,20,66,189,241,16,138,226,166,105,111,71,39,253,156,198,223,3,208,49,126,63,86,51,21,153,90,166,3}, + {213,64,225,91,125,166,169,4,65,235,235,140,70,125,121,115,191,49,102,71,47,65,250,176,10,180,167,42,250,56,27,108}, + {179,170,4,90,121,97,71,167,146,73,173,136,244,210,168,186,220,147,232,58,80,93,177,158,126,22,125,38,94,94,158,242}, + {214,24,55,9,125,6,44,252,139,242,66,214,108,97,249,86,198,34,156,157,135,140,93,18,185,75,70,233,41,186,56,251}, + {126,108,4,175,196,149,87,41,92,161,48,162,107,127,253,179,38,16,101,26,161,179,212,185,156,157,51,219,249,64,218,20}, + {40,243,177,97,188,241,248,61,5,108,47,235,75,145,155,217,156,130,27,131,172,88,72,55,28,249,68,69,56,62,118,238}, + {3,163,97,215,119,68,20,21,129,249,34,94,134,211,106,245,154,180,36,99,138,5,93,83,179,231,30,60,45,187,159,208}, + {228,238,53,22,156,231,245,246,48,215,205,22,222,15,161,187,214,191,149,51,96,105,137,17,146,235,94,118,198,201,185,192}, + {181,92,130,12,107,166,241,91,64,73,252,9,166,113,49,27,189,205,145,18,118,188,2,170,249,41,224,232,84,215,87,195}, + {44,164,82,238,42,239,82,245,14,133,17,109,18,202,163,118,251,231,230,215,28,83,32,103,178,44,254,232,175,63,248,249}, + {139,122,221,214,126,124,228,76,144,138,1,132,158,140,119,178,27,38,40,141,119,220,240,248,16,154,13,150,209,39,47,98}, + {172,103,65,171,227,157,83,82,218,213,148,215,246,22,151,218,205,67,54,92,30,212,77,199,62,164,100,32,23,211,138,230}, + {97,171,134,102,99,61,106,216,114,100,117,206,206,171,81,16,241,114,38,89,92,115,141,66,218,15,30,224,90,249,106,91}, + {138,103,203,238,58,207,32,253,113,254,133,92,65,11,230,73,120,229,13,85,221,53,245,247,238,169,66,213,202,234,231,147}, + {218,76,66,170,147,200,170,75,155,167,10,189,170,22,196,241,106,132,209,227,203,150,31,48,178,164,201,92,81,104,106,167}, + {243,143,194,112,28,67,41,87,79,10,168,107,26,139,151,78,8,189,78,124,194,145,154,253,244,136,170,29,25,64,53,192}, + {174,18,122,54,137,79,164,228,135,9,84,83,151,25,211,186,141,111,71,235,102,253,20,165,184,13,78,40,164,177,50,231}, + {30,17,120,242,0,80,77,49,66,107,5,112,128,154,240,198,176,213,128,140,56,203,186,135,28,0,71,111,105,18,237,80}, + {29,187,15,26,40,78,231,104,185,76,15,244,127,88,247,237,242,244,38,132,203,0,133,252,9,118,49,187,235,23,191,253}, + {124,24,168,235,35,244,248,20,181,139,58,235,120,77,155,34,172,199,90,85,50,139,80,200,252,210,57,192,114,15,82,109}, + {184,173,65,165,231,90,124,51,54,198,158,186,67,210,230,142,102,80,73,246,77,253,26,213,180,129,220,199,200,228,251,149}, + {16,252,233,198,84,113,59,241,120,91,52,99,140,159,193,65,155,74,156,25,234,87,108,152,137,47,5,147,102,156,95,73}, + {175,203,195,215,186,181,148,98,57,226,154,204,141,235,79,124,53,47,53,177,65,45,1,181,238,48,18,68,167,27,91,207}, + {11,56,76,200,39,233,184,108,16,95,39,1,57,0,40,252,19,59,66,111,175,151,176,139,226,84,251,126,98,194,178,5}, + {252,149,250,226,164,51,189,101,173,248,254,3,87,210,36,92,239,206,135,75,169,112,79,17,50,45,78,210,141,42,243,185}, + {36,24,246,0,84,54,230,80,131,5,222,167,36,217,241,205,175,145,15,50,150,96,88,16,86,226,122,75,40,22,22,136}, + {241,182,198,252,143,228,121,7,130,249,24,56,134,195,183,225,168,127,1,173,65,155,154,136,43,165,105,154,254,176,132,208}, + {153,218,128,83,221,40,239,133,220,187,215,210,136,151,3,51,222,219,225,100,207,89,54,211,116,0,100,123,154,46,66,102}, + {24,152,129,206,15,18,77,228,176,74,181,191,156,18,76,181,246,18,78,36,89,226,252,247,204,90,79,122,159,255,177,143}, + {145,222,2,114,39,87,28,15,121,166,195,84,159,44,198,181,141,139,39,189,164,210,106,16,158,207,193,98,89,68,48,152}, + {43,27,215,159,148,76,159,27,121,254,242,220,133,91,183,126,82,176,131,64,30,51,52,218,44,223,4,37,120,32,101,84}, + {168,111,137,210,250,183,89,128,123,86,82,128,94,40,140,35,245,24,247,137,161,147,69,223,177,97,248,183,65,153,234,53}, + {140,134,234,252,248,114,253,216,18,237,27,115,63,240,65,42,121,139,206,24,45,47,3,43,92,156,6,254,168,31,219,172}, + {221,229,215,242,40,207,209,209,204,234,50,253,80,68,121,90,14,153,108,255,41,7,228,99,81,75,131,146,191,76,158,122}, + {122,151,17,172,100,37,239,70,0,69,96,171,213,9,80,15,60,174,145,99,253,210,79,202,86,70,153,151,83,62,232,223}, + {55,169,184,243,37,158,140,197,152,61,37,149,246,232,177,126,135,238,8,6,119,194,84,33,232,236,167,245,200,118,128,75}, + {86,163,214,52,251,144,171,195,41,30,200,28,193,28,78,255,174,100,115,190,128,246,65,10,221,12,246,156,86,194,202,243}, + {225,161,48,213,170,114,180,124,103,36,171,175,33,166,187,184,14,1,99,127,177,99,4,42,48,28,230,109,116,68,30,163}, + {165,52,39,93,78,59,6,153,160,81,240,187,231,139,4,129,75,228,32,162,167,85,25,223,49,132,8,116,7,24,192,102}, + {46,148,250,208,189,152,75,183,204,6,16,128,254,109,52,228,5,81,136,243,3,122,122,221,7,94,117,161,224,170,133,29}, + {95,111,47,84,205,185,39,87,160,182,233,31,237,137,13,112,138,12,184,191,86,244,144,225,35,228,147,188,173,213,23,203}, + {175,227,218,66,9,208,36,171,143,181,29,176,110,193,223,115,204,115,239,203,52,231,131,159,183,83,63,94,44,215,133,36}, + {181,235,77,84,62,214,225,51,188,235,72,170,33,62,154,79,102,112,52,173,82,136,13,219,93,96,72,119,13,237,224,79}, + {113,149,145,243,232,230,95,252,71,104,200,245,125,159,212,207,97,47,159,131,155,173,74,53,107,236,232,82,73,27,199,63}, + {207,19,204,239,132,44,140,132,200,231,165,25,90,62,214,117,141,189,42,41,237,77,225,118,83,172,11,215,202,201,229,23}, + {142,30,103,204,72,0,222,221,2,191,37,61,7,65,157,144,160,75,105,100,158,172,57,116,130,20,91,136,129,72,245,250}, + {213,115,0,117,26,114,244,5,197,99,241,112,41,252,14,213,139,22,213,72,38,163,179,233,73,15,130,255,13,42,116,132}, + {120,13,69,168,234,93,233,214,97,126,196,35,107,205,65,251,207,128,150,60,126,204,62,185,21,145,89,224,56,192,56,2}, + {11,23,92,200,69,154,13,208,17,59,124,150,82,160,225,29,61,169,102,154,209,1,111,218,49,167,100,118,158,81,105,203}, + {86,159,255,54,92,50,218,208,163,225,98,177,16,96,85,8,249,78,38,10,36,79,189,127,36,90,204,8,55,8,14,155}, + {96,171,211,51,104,100,182,78,125,47,84,9,74,42,206,87,228,217,189,118,24,185,133,21,28,51,34,126,250,159,146,132}, + {101,230,20,254,146,255,150,59,64,252,80,203,38,102,122,53,167,219,107,255,216,150,33,9,85,64,144,183,41,153,158,162}, + {129,204,0,103,37,49,76,190,57,124,179,139,40,81,188,168,211,122,127,18,107,190,117,76,197,153,253,239,111,102,46,69}, + {172,100,182,63,39,106,10,197,225,72,198,150,53,185,80,185,247,173,14,43,46,29,237,229,109,210,219,66,94,159,41,26}, + {74,103,13,128,72,204,163,212,17,51,33,236,204,86,242,181,10,216,139,69,199,205,255,234,168,178,48,131,161,54,146,94}, + {64,161,115,156,111,54,131,33,226,199,189,243,58,166,42,26,253,26,0,241,127,211,145,229,157,199,156,143,220,220,166,179}, + {78,162,175,206,131,204,167,156,2,153,94,154,37,27,43,2,176,113,63,111,154,37,198,104,138,215,32,33,82,39,242,203}, + {116,99,254,150,49,123,185,158,242,173,16,216,185,49,48,183,178,191,115,136,201,48,191,234,163,230,146,209,117,15,175,77}, + {58,228,62,86,9,65,13,42,210,44,64,77,33,171,36,202,93,38,102,253,210,77,233,110,219,30,72,193,225,173,48,168}, + {212,189,103,25,15,170,171,46,17,50,135,224,107,111,67,136,179,190,113,87,203,146,150,131,160,157,243,188,47,120,114,205}, + {239,151,238,247,79,152,138,220,169,255,214,47,220,62,231,79,64,2,216,126,132,198,245,57,249,248,32,140,233,232,32,184}, + {3,198,63,166,195,50,19,182,180,126,247,51,49,209,2,73,230,252,71,105,236,54,107,2,3,212,80,52,107,5,160,38}, + {151,204,245,111,240,77,190,230,82,25,203,14,168,240,196,54,68,37,6,12,118,223,17,2,211,196,100,160,41,7,101,198}, + {83,14,13,106,241,31,216,224,6,182,171,64,52,39,40,109,170,44,121,74,151,68,62,20,64,32,248,30,118,56,35,171}, + {243,188,31,185,17,240,54,212,163,67,198,61,222,2,85,54,166,202,127,228,53,12,19,122,27,29,7,249,10,239,74,236}, + {234,109,51,8,136,219,239,115,219,249,36,254,195,18,13,70,207,128,185,164,30,115,89,195,208,236,142,179,88,33,15,105}, + {23,120,210,21,148,60,20,226,88,46,209,237,37,207,43,116,233,163,91,72,126,74,215,234,147,242,235,62,60,221,121,139}, + {146,23,158,50,64,109,29,147,48,98,56,178,131,27,155,87,213,203,41,119,183,94,210,243,120,135,204,49,165,252,31,35}, + {83,142,151,19,250,223,214,60,236,144,84,103,70,105,63,79,88,197,91,77,185,55,133,57,163,89,118,102,44,46,170,139}, + {202,92,186,239,64,49,62,145,125,247,207,31,29,46,157,64,157,13,253,250,12,19,246,187,141,251,220,47,41,179,255,134}, + {197,80,193,251,165,120,253,208,180,2,67,53,203,150,206,128,20,252,176,106,75,228,244,8,77,227,1,56,87,246,37,55}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {235,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {236,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {238,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {239,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16}, + {216,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {217,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {218,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {219,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {220,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32}, + {197,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {198,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {199,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {200,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {201,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48}, + {178,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {179,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {180,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {181,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {182,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64}, + {159,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {160,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {161,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {162,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {163,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80}, + {140,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {141,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {142,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {143,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {144,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96}, + {121,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {122,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {123,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {124,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {125,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112}, + {102,159,174,231,210,24,147,192,178,230,188,23,245,206,247,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {103,159,174,231,210,24,147,192,178,230,188,23,245,206,247,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {104,159,174,231,210,24,147,192,178,230,188,23,245,206,247,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {105,159,174,231,210,24,147,192,178,230,188,23,245,206,247,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {106,159,174,231,210,24,147,192,178,230,188,23,245,206,247,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {83,115,164,68,237,123,165,24,137,131,180,186,211,200,214,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {84,115,164,68,237,123,165,24,137,131,180,186,211,200,214,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {85,115,164,68,237,123,165,24,137,131,180,186,211,200,214,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {86,115,164,68,237,123,165,24,137,131,180,186,211,200,214,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {87,115,164,68,237,123,165,24,137,131,180,186,211,200,214,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144}, + {64,71,154,161,7,223,183,112,95,32,172,93,178,194,181,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {65,71,154,161,7,223,183,112,95,32,172,93,178,194,181,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {66,71,154,161,7,223,183,112,95,32,172,93,178,194,181,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {67,71,154,161,7,223,183,112,95,32,172,93,178,194,181,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {68,71,154,161,7,223,183,112,95,32,172,93,178,194,181,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160}, + {45,27,144,254,33,66,202,200,53,189,163,0,145,188,148,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {46,27,144,254,33,66,202,200,53,189,163,0,145,188,148,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {47,27,144,254,33,66,202,200,53,189,163,0,145,188,148,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {48,27,144,254,33,66,202,200,53,189,163,0,145,188,148,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {49,27,144,254,33,66,202,200,53,189,163,0,145,188,148,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176}, + {26,239,133,91,60,165,220,32,12,90,155,163,111,182,115,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {27,239,133,91,60,165,220,32,12,90,155,163,111,182,115,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {28,239,133,91,60,165,220,32,12,90,155,163,111,182,115,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {29,239,133,91,60,165,220,32,12,90,155,163,111,182,115,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {30,239,133,91,60,165,220,32,12,90,155,163,111,182,115,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192}, + {7,195,123,184,86,8,239,120,226,246,146,70,78,176,82,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {8,195,123,184,86,8,239,120,226,246,146,70,78,176,82,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {9,195,123,184,86,8,239,120,226,246,146,70,78,176,82,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {10,195,123,184,86,8,239,120,226,246,146,70,78,176,82,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {11,195,123,184,86,8,239,120,226,246,146,70,78,176,82,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208}, + {244,150,113,21,113,107,1,209,184,147,138,233,44,170,49,36,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {245,150,113,21,113,107,1,209,184,147,138,233,44,170,49,36,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {246,150,113,21,113,107,1,209,184,147,138,233,44,170,49,36,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {247,150,113,21,113,107,1,209,184,147,138,233,44,170,49,36,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {248,150,113,21,113,107,1,209,184,147,138,233,44,170,49,36,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224}, + {225,106,103,114,139,206,19,41,143,48,130,140,11,164,16,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {226,106,103,114,139,206,19,41,143,48,130,140,11,164,16,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {227,106,103,114,139,206,19,41,143,48,130,140,11,164,16,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {228,106,103,114,139,206,19,41,143,48,130,140,11,164,16,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {229,106,103,114,139,206,19,41,143,48,130,140,11,164,16,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240}, + {50,247,98,124,67,204,221,248,209,165,188,179,170,154,165,66,87,155,135,247,105,66,110,206,78,244,28,55,223,142,122,245}, + {199,80,145,57,100,121,211,94,66,204,192,98,233,188,192,147,187,160,198,149,184,22,79,48,25,112,233,137,39,40,109,151}, + {38,51,73,253,25,129,134,224,136,101,17,183,140,209,92,230,117,177,115,225,215,64,109,239,74,79,80,16,159,118,78,70}, + {207,225,129,22,78,143,67,62,115,106,79,68,74,23,203,163,26,45,12,144,7,126,220,2,5,215,161,85,179,220,64,118}, + {143,143,26,149,89,167,83,31,99,155,20,230,251,58,16,10,159,151,255,168,239,127,216,141,63,151,167,91,107,105,190,204}, + {203,173,5,225,170,220,72,5,48,247,162,199,91,222,56,69,42,137,62,212,222,2,247,45,118,159,45,118,98,169,80,177}, + {50,38,100,17,163,75,209,175,7,113,155,30,230,56,114,123,89,174,82,136,109,163,208,116,196,111,94,236,102,234,200,254}, + {219,122,149,107,99,68,92,215,255,10,135,64,237,29,223,151,162,91,214,55,75,98,105,237,97,156,190,21,169,95,219,246}, + {133,229,77,66,2,162,48,32,154,115,112,182,77,118,116,76,35,213,17,59,252,53,65,188,20,131,128,155,16,161,69,50}, + {236,86,14,162,74,11,78,194,38,123,210,23,142,221,110,70,17,186,188,130,186,154,32,218,122,184,85,232,161,136,237,47}, + {221,85,115,26,126,40,239,29,93,138,5,86,167,130,212,18,238,116,116,139,91,12,114,106,169,97,190,73,234,174,129,8}, + {80,109,109,181,208,203,231,56,75,158,218,172,27,188,6,112,209,117,149,238,2,230,232,134,117,252,240,39,54,183,81,20}, + {3,81,105,1,61,71,43,50,136,142,81,144,185,21,171,124,165,159,134,240,227,71,130,32,250,115,117,52,149,166,185,1}, + {178,140,16,174,161,83,105,65,112,89,123,35,208,213,110,220,183,176,228,171,146,1,48,158,21,194,161,241,209,134,45,150}, + {22,192,122,10,159,17,132,226,79,39,32,139,39,19,142,152,201,222,228,74,183,247,32,94,12,208,5,234,237,22,214,223}, + {136,255,210,49,149,125,54,245,134,128,132,253,24,76,223,136,3,51,240,76,161,205,38,166,162,119,166,20,0,66,217,140}, + {7,150,213,243,14,198,34,76,161,85,199,153,43,159,241,223,125,255,149,229,129,138,199,232,139,228,212,75,87,165,63,231}, + {247,159,60,71,236,187,184,178,255,54,212,66,217,120,243,191,178,43,173,246,173,67,135,15,173,163,25,170,189,134,18,206}, + {44,180,35,154,7,80,216,223,203,245,123,183,155,73,217,51,136,62,220,160,204,254,181,236,113,150,172,66,50,123,198,129}, + {31,43,66,200,145,35,9,60,94,69,34,40,241,197,187,52,193,1,144,59,208,137,119,37,193,93,242,70,98,212,136,148}, + {140,57,86,79,204,177,197,92,68,95,243,160,104,39,40,204,190,202,47,186,185,167,122,221,183,213,83,59,52,224,127,161}, + {99,96,119,144,25,24,92,67,231,199,167,135,25,149,232,112,52,208,120,6,179,143,31,227,130,93,5,25,60,131,150,62}, + {151,58,22,113,38,153,67,59,3,178,208,145,145,212,14,206,79,32,244,156,231,173,26,150,208,144,167,51,14,235,0,136}, + {37,77,235,222,0,49,80,159,230,217,196,55,135,17,181,41,21,141,192,57,197,143,229,13,126,189,110,126,72,33,109,156}, + {105,129,189,232,233,65,53,212,88,101,152,62,50,244,218,143,3,184,151,35,126,241,195,108,171,194,187,152,176,108,235,178}, + {59,30,114,237,166,31,87,58,92,157,233,84,117,233,177,202,70,65,57,195,30,166,182,149,153,222,117,70,200,26,123,16}, + {128,104,203,124,234,142,36,185,56,244,121,47,130,59,86,182,216,246,9,230,25,55,88,129,51,134,144,69,83,207,213,54}, + {140,167,94,78,152,191,235,206,55,116,156,116,118,29,56,164,155,119,192,47,185,8,49,207,232,134,51,21,0,122,37,41}, + {99,93,96,152,17,198,47,118,62,236,136,5,96,202,97,95,150,55,161,108,241,73,106,45,147,71,224,227,192,152,132,59}, + {50,166,234,225,34,229,255,15,178,22,84,61,132,70,42,102,87,63,242,238,211,141,0,11,76,110,61,26,143,249,90,146}, + {32,144,214,166,58,254,157,90,160,187,105,254,248,223,140,97,77,59,42,155,14,128,232,92,79,232,63,19,120,123,106,218}, + {6,61,72,1,135,22,241,176,105,221,28,249,12,18,2,104,147,67,252,86,198,147,138,188,129,83,30,213,219,62,254,132}, + {192,249,60,81,169,130,20,17,72,107,212,6,121,135,232,73,184,255,9,121,216,243,10,56,16,31,6,58,22,156,50,137}, + {94,227,199,98,192,50,96,173,60,19,245,111,89,25,251,29,18,46,10,109,142,191,78,7,167,238,177,8,59,236,127,5}, + {255,132,240,211,207,145,87,205,47,232,98,219,80,114,27,146,140,251,184,248,119,17,140,31,139,118,188,127,219,205,235,157}, + {210,208,151,164,197,204,95,119,156,254,92,185,39,36,166,20,146,226,170,92,208,2,36,21,154,201,118,244,54,8,139,67}, + {233,9,29,35,13,184,111,142,181,11,8,67,172,39,110,183,146,236,102,139,246,201,130,162,213,136,175,163,80,232,165,149}, + {173,199,98,81,82,60,221,55,213,55,38,63,153,168,53,102,152,228,20,193,103,58,107,112,126,92,50,143,249,118,68,216}, + {39,60,76,87,192,84,166,117,217,108,218,19,97,46,177,222,89,179,54,158,115,21,48,132,36,136,97,218,98,60,78,1}, + {81,222,52,66,249,232,218,206,70,254,174,91,91,100,24,114,248,103,20,56,101,255,9,230,81,128,64,65,234,153,141,19}, + {99,132,115,213,182,7,130,71,29,90,224,218,150,39,153,192,138,31,157,32,177,211,108,168,101,99,124,239,217,25,92,203}, + {15,122,180,2,9,44,176,195,159,204,115,41,45,249,187,140,5,56,176,31,163,185,121,195,112,76,251,9,221,170,244,80}, + {136,98,123,97,76,16,179,239,13,107,189,181,195,213,60,84,118,130,156,8,217,64,253,127,91,44,26,196,21,89,108,45}, + {28,22,165,161,239,141,73,106,233,25,70,192,88,244,42,98,169,49,165,32,210,238,219,34,200,105,88,95,54,158,58,140}, + {215,192,143,58,239,126,237,20,206,72,197,232,182,25,0,45,52,86,193,159,30,191,251,167,232,208,46,9,89,101,231,212}, + {129,162,95,148,199,73,194,97,79,203,249,61,232,181,40,131,140,222,20,135,8,212,187,62,168,161,11,136,114,136,122,140}, + {145,234,29,155,101,52,70,142,75,2,170,91,5,134,84,229,6,95,225,60,96,223,224,118,63,233,241,116,211,40,75,168}, + {113,36,146,59,141,19,162,38,46,52,237,194,93,253,133,10,194,173,153,155,48,23,51,4,132,226,51,144,232,38,165,60}, + {6,40,82,117,144,41,251,52,60,131,12,54,5,140,177,190,117,184,35,40,199,103,135,39,106,254,91,189,60,248,98,228}, + {28,169,114,16,51,167,220,35,197,162,191,32,72,101,2,103,75,193,5,210,18,204,227,130,169,93,179,227,96,170,253,6}, + {100,47,31,235,31,23,113,235,193,136,124,242,213,243,53,20,117,154,99,37,198,84,90,73,121,48,87,38,160,5,7,252}, + {170,70,206,205,152,109,165,61,210,11,41,86,14,2,83,88,108,128,184,103,0,11,231,38,161,109,112,158,211,124,176,113}, + {230,16,12,191,217,110,63,224,23,76,95,88,44,220,85,148,205,195,226,4,45,223,179,51,118,243,195,114,144,10,141,162}, + {176,164,164,245,120,197,156,178,86,202,84,187,34,7,143,222,14,143,0,126,205,24,76,107,132,216,65,139,41,215,167,228}, + {8,167,78,91,212,5,58,231,156,236,156,222,129,97,87,137,123,99,106,70,149,27,223,149,240,121,81,100,13,206,28,242}, + {101,181,126,15,202,29,46,224,217,159,46,57,148,234,216,83,66,239,207,210,103,117,139,244,229,106,133,232,160,138,24,121}, + {100,66,147,234,214,28,28,240,14,101,245,90,142,103,58,181,228,202,131,240,78,140,116,47,150,234,49,127,72,103,80,224}, + {2,14,111,222,146,80,86,116,169,243,114,174,43,169,214,21,112,86,120,144,232,236,118,144,218,37,56,146,239,106,140,2}, + {147,149,67,253,234,99,236,222,19,235,90,6,170,177,147,72,114,156,132,186,209,148,65,198,254,196,180,169,82,168,134,121}, + {213,133,197,14,160,79,236,192,222,250,208,58,99,212,112,182,112,189,148,125,115,113,102,92,82,234,136,172,19,53,121,244}, + {89,220,44,248,163,151,31,162,75,79,110,60,200,78,72,147,113,147,211,61,112,105,234,102,250,173,150,180,175,92,106,237}, + {33,226,15,227,96,114,57,238,60,151,18,31,134,54,122,41,51,29,210,109,220,87,44,30,159,173,196,45,2,134,215,97}, + {97,102,149,173,172,66,165,6,96,35,166,63,184,140,9,147,126,34,183,200,13,196,15,162,166,169,164,23,115,131,185,11}, + {10,90,241,102,235,255,64,98,219,112,34,114,108,126,107,227,183,53,238,192,39,1,193,200,158,42,89,165,226,225,33,194}, + {237,73,159,211,126,107,188,227,76,134,90,77,105,34,227,200,119,76,224,107,123,28,253,10,1,109,151,99,48,185,5,253}, + {180,94,48,143,229,8,26,255,31,189,107,202,103,218,104,248,145,121,235,152,107,20,39,95,122,36,254,110,42,183,236,203}, + {233,197,40,79,78,143,213,1,1,110,128,177,128,194,188,171,22,249,50,109,38,92,161,78,80,177,149,169,211,130,146,47}, + {204,214,183,19,199,253,75,211,29,221,48,28,194,116,216,83,217,241,10,151,36,149,115,167,188,48,11,38,99,176,161,52}, + {27,132,165,245,134,148,241,185,242,229,18,16,135,90,99,75,136,215,240,224,43,204,224,57,160,217,207,126,249,77,209,249}, + {67,62,31,1,158,158,28,200,121,17,134,7,244,93,62,241,176,126,12,88,58,171,206,119,24,67,209,169,232,106,203,39}, + {247,125,106,221,240,122,104,215,76,78,240,21,167,68,180,80,118,45,209,46,175,43,172,86,121,232,19,150,71,16,225,109}, + {169,234,215,22,220,141,118,156,255,73,18,109,61,34,162,66,227,208,251,226,174,163,39,177,86,25,140,98,103,130,153,12}, + {177,110,244,29,255,64,176,62,10,94,6,171,191,248,16,172,46,49,93,91,238,106,67,76,85,155,46,10,40,194,168,216}, + {128,94,94,142,196,61,23,216,182,30,160,1,79,145,66,177,240,142,3,135,163,17,10,236,11,142,19,22,239,52,226,107}, + {112,126,34,147,36,143,34,215,193,236,52,52,17,107,81,234,174,194,32,77,177,17,184,87,237,195,134,234,142,5,138,39}, + {69,234,246,175,219,94,153,99,185,47,95,141,8,47,61,121,17,247,59,130,80,193,174,142,104,71,86,204,76,30,11,218}, + {78,36,103,246,70,203,240,103,8,189,190,34,70,115,108,103,200,160,107,193,157,135,164,97,208,118,177,36,21,166,249,252}, + {87,248,19,224,227,4,250,150,47,56,3,75,250,167,205,124,78,36,168,39,143,153,206,6,64,49,168,1,32,37,240,158}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, +} ; + +static const unsigned char precomputed_mGnP_ed25519_n[precomputed_mGnP_ed25519_NUM][crypto_mGnP_NBYTES] = { + {10,143,232,22,159,195,90,177,170,55,106,207,146,159,0,90,100,75,5,116,95,64,95,139,118,51,233,68,49,9,56,116,173,6,210,199,68,82,3,67,188,180,196,29,248,93,109,239,95,170,254,173,250,15,113,183,142,24,153,174,149,19,53,209}, + {147,166,155,108,84,238,173,228,212,61,200,159,5,20,138,201,108,43,242,173,100,71,240,92,219,123,154,10,24,229,36,173,252,162,4,55,146,220,234,252,72,199,58,95,44,234,48,84,67,100,240,82,17,226,194,127,186,209,79,255,50,135,240,210}, + {135,20,231,42,210,124,195,244,59,203,227,211,33,7,39,164,238,148,46,28,52,235,215,193,76,127,220,55,140,54,67,220,22,228,26,93,13,73,3,92,245,148,86,97,242,13,10,188,167,143,128,61,94,190,187,222,134,83,107,67,2,18,139,129}, + {93,23,40,225,110,159,207,34,135,141,181,194,198,68,38,219,47,212,6,165,191,255,1,237,217,130,20,80,230,148,245,159,125,85,148,114,170,197,206,208,77,111,33,137,46,51,197,213,243,60,209,171,162,116,249,228,65,73,159,247,19,55,15,135}, + {41,17,182,121,130,2,128,100,186,37,92,212,243,161,29,169,240,87,29,215,17,83,82,46,14,65,118,45,46,238,62,63,214,169,56,252,83,151,1,86,240,77,253,94,159,30,47,229,36,111,103,143,146,81,98,197,144,247,230,66,9,129,144,192}, + {144,66,204,78,248,67,198,192,211,26,54,67,65,7,97,103,231,132,200,149,160,233,139,56,33,97,196,143,112,216,26,21,6,217,42,39,247,244,199,183,11,24,190,187,12,160,153,89,205,247,218,239,225,11,28,153,254,134,144,184,87,217,185,134}, + {141,174,82,207,98,133,57,165,52,92,254,252,28,236,233,248,40,11,35,100,222,189,129,137,38,98,167,13,1,28,127,189,76,91,239,98,181,20,191,58,164,44,188,230,127,178,135,107,218,32,240,145,87,73,87,57,78,105,138,111,219,16,224,213}, + {71,153,68,94,14,197,196,216,63,57,251,150,148,206,84,33,0,164,206,176,4,171,98,35,27,44,245,1,231,38,217,156,93,238,240,189,216,12,19,43,251,206,170,29,6,176,124,203,238,85,36,95,172,122,49,215,14,83,91,12,189,154,252,184}, + {90,6,74,119,127,156,235,106,1,29,234,104,229,15,167,252,87,147,213,55,222,44,109,86,64,246,182,208,55,101,230,230,182,152,129,113,41,240,23,16,243,89,164,203,74,253,19,7,176,238,180,109,222,250,236,128,140,240,238,165,138,37,199,35}, + {15,175,136,25,173,216,247,254,165,79,208,96,254,123,37,204,130,108,204,9,129,148,77,223,95,178,154,217,216,125,76,35,209,243,90,173,83,238,65,9,208,67,134,145,250,132,113,253,8,146,106,225,79,112,52,4,220,90,243,9,73,50,109,89}, + {235,176,174,149,75,199,68,1,201,234,123,129,6,9,227,35,35,126,129,27,142,189,44,26,84,69,68,111,60,148,159,174,214,231,53,132,141,15,99,88,127,218,158,8,24,7,232,0,252,97,65,87,79,214,187,222,189,249,68,221,37,20,102,101}, + {150,118,227,102,87,244,124,54,111,91,155,132,44,128,231,182,122,177,10,208,143,169,242,102,108,238,212,252,38,246,120,170,18,174,198,21,83,5,111,189,210,27,234,40,154,135,198,169,2,109,123,110,78,145,218,255,153,60,155,160,232,60,225,51}, + {33,88,211,34,64,90,213,27,84,221,9,15,164,245,4,190,208,93,209,167,109,177,162,57,122,24,213,252,246,133,4,93,115,121,215,144,192,207,191,139,250,134,27,206,38,245,246,248,242,209,147,92,22,208,167,140,239,100,181,72,124,253,189,86}, + {23,42,9,168,149,67,225,68,221,92,5,101,135,205,220,233,113,229,93,28,11,14,240,8,223,244,78,233,61,201,117,195,203,239,136,244,145,213,179,193,69,248,238,30,49,168,84,223,122,219,155,116,77,182,16,144,221,148,18,214,220,87,145,76}, + {172,37,236,32,17,202,10,98,43,251,179,124,92,172,152,16,151,116,16,0,95,217,219,130,228,74,231,241,234,71,130,228,213,107,205,33,28,54,95,81,39,43,202,247,49,81,34,157,110,184,9,52,255,196,125,211,33,77,87,17,72,142,79,252}, + {150,233,194,54,155,39,49,154,32,100,23,54,135,243,66,176,95,170,253,9,95,198,10,76,179,116,65,226,19,206,61,75,77,112,16,76,136,128,23,122,221,125,73,98,246,231,76,233,174,115,158,61,171,210,129,114,15,96,52,53,26,148,183,9}, + {1,143,5,254,141,156,221,179,170,95,175,24,168,198,50,141,40,141,32,92,12,134,72,244,206,168,15,127,61,195,218,47,91,195,156,203,55,154,54,162,249,75,142,211,86,147,206,68,140,105,78,111,152,248,124,160,206,127,231,186,177,199,207,112}, + {254,164,41,191,208,165,189,79,230,205,190,82,12,194,86,16,71,124,103,109,196,160,233,80,201,247,78,6,128,160,247,26,142,186,213,16,245,185,19,114,215,8,4,117,242,89,19,10,213,30,196,23,229,242,94,14,6,170,152,46,82,221,251,67}, + {61,92,137,6,34,150,107,7,148,8,26,254,197,74,65,243,54,162,117,165,219,103,164,127,89,179,183,219,27,53,147,25,10,38,203,255,194,23,25,140,203,74,249,111,52,86,86,190,135,255,169,111,205,74,26,59,164,156,81,61,76,226,91,26}, + {209,181,234,189,149,207,147,30,22,222,107,103,214,26,164,77,88,58,47,239,253,86,139,110,77,111,173,118,110,20,112,202,175,156,148,52,75,142,201,81,76,20,186,168,209,123,131,251,1,86,6,53,198,185,99,153,86,26,54,75,63,85,72,191}, + {88,135,198,15,244,0,249,143,217,131,124,180,16,33,34,49,215,207,124,219,214,53,141,227,151,126,198,246,133,28,50,250,56,141,31,212,164,209,181,184,95,14,174,138,21,246,106,156,163,37,102,129,23,47,37,80,22,69,80,122,157,251,86,30}, + {48,217,101,122,57,119,101,209,130,108,197,155,238,104,206,51,22,218,238,190,53,39,187,244,231,124,68,104,139,195,67,219,243,216,33,240,183,234,182,105,60,149,175,107,20,122,140,73,158,248,112,201,31,228,106,106,228,97,199,226,96,78,147,27}, + {140,120,134,114,131,143,42,140,252,3,175,149,95,183,156,36,188,7,6,139,251,109,180,137,230,203,209,217,190,232,138,140,122,179,225,11,72,8,203,76,204,66,198,132,76,251,205,81,146,23,190,232,214,33,239,122,129,52,213,53,203,53,74,240}, + {110,202,34,214,68,131,135,9,183,1,213,132,43,143,152,213,63,182,240,165,137,185,240,166,52,161,34,224,212,192,141,194,182,83,90,119,43,4,31,98,1,121,111,19,17,20,177,60,56,18,69,77,123,43,49,45,76,180,177,95,216,79,67,90}, + {94,114,246,10,223,63,165,241,29,40,236,6,152,3,235,220,215,250,44,5,138,4,33,165,167,220,232,66,25,216,153,16,59,188,45,87,94,254,250,80,19,138,250,120,81,159,185,6,32,29,128,122,153,242,245,231,223,89,3,95,129,73,70,70}, + {21,171,10,249,206,3,219,18,98,31,194,170,128,250,202,80,18,38,221,51,13,162,100,127,78,124,28,71,207,187,93,131,127,101,159,116,164,65,165,172,222,79,77,78,234,50,153,126,172,118,197,231,236,136,11,27,244,132,85,222,43,37,106,25}, + {39,101,117,76,150,173,138,245,65,161,98,236,22,91,73,63,24,156,252,184,36,227,177,5,0,134,13,114,93,124,212,208,242,208,255,202,204,131,139,163,109,193,136,28,175,58,163,110,245,94,181,67,96,137,56,91,182,114,159,225,33,245,253,243}, + {90,124,101,194,183,238,181,83,64,18,104,46,48,40,106,115,138,244,44,41,232,106,71,225,252,7,127,157,160,222,17,112,79,219,131,178,82,214,173,64,191,121,255,99,95,119,142,17,32,59,7,172,192,95,146,156,51,88,191,85,45,192,102,155}, + {17,150,128,217,168,128,47,247,30,95,29,206,129,58,69,125,59,22,61,167,37,208,16,255,70,217,223,193,113,21,174,72,13,164,239,78,193,219,76,177,155,114,220,240,67,15,115,249,191,223,10,87,138,253,161,245,51,60,138,158,179,188,214,150}, + {125,122,129,99,100,83,139,36,25,5,105,72,13,43,91,126,141,101,191,77,185,233,220,215,15,251,101,193,196,190,118,214,105,175,85,105,171,190,207,109,138,54,234,178,190,119,76,2,157,88,43,114,50,8,190,211,201,169,66,81,198,224,176,131}, + {56,216,82,248,119,166,33,241,123,179,233,82,89,98,112,99,121,211,21,156,115,10,143,113,133,77,137,117,39,24,218,156,167,24,137,58,26,142,62,129,127,13,218,216,36,47,77,174,140,91,197,132,71,81,173,55,201,207,137,208,50,198,75,121}, + {19,56,52,249,87,122,96,42,253,25,106,245,140,45,164,36,6,251,174,59,47,126,231,88,212,250,165,87,194,73,86,129,150,193,246,5,82,135,157,255,209,102,224,159,194,65,124,21,138,10,19,58,26,170,28,214,150,125,86,31,192,166,162,13}, + {92,59,126,154,0,251,5,55,215,202,252,87,40,88,129,21,81,254,46,239,97,29,231,56,141,26,174,74,148,24,113,141,157,196,170,47,140,135,187,68,109,4,86,159,174,69,152,160,121,208,36,87,255,32,191,43,135,246,72,21,35,188,66,83}, + {1,238,24,201,178,207,86,169,146,84,111,162,109,24,110,131,5,51,117,137,71,24,150,115,227,241,102,182,109,239,124,8,155,236,6,124,168,25,192,21,241,104,61,120,160,244,51,112,79,53,44,151,241,171,145,102,42,112,109,19,171,140,66,73}, + {205,98,205,214,3,231,180,57,35,75,138,12,167,197,146,43,74,187,145,167,196,234,222,216,9,96,136,127,126,162,73,114,132,236,77,215,31,104,197,78,128,1,95,21,155,213,119,117,238,102,187,73,233,69,134,98,47,110,112,52,40,80,54,124}, + {188,116,138,97,71,249,140,175,239,220,21,154,43,131,216,23,68,28,80,241,44,193,208,135,158,76,75,116,236,247,72,234,233,6,33,114,50,179,202,234,54,60,172,89,38,215,130,118,233,82,126,130,147,248,179,246,120,89,69,159,142,239,147,188}, + {103,139,183,239,241,21,120,151,88,78,62,118,66,185,196,63,15,140,180,214,205,94,37,121,106,27,55,166,158,130,222,208,248,83,62,222,189,177,112,171,4,1,165,137,237,217,215,61,45,100,215,78,190,109,90,230,80,71,182,203,28,14,106,173}, + {185,248,163,215,145,159,175,165,82,103,249,107,23,189,102,135,148,108,75,211,131,15,33,198,91,0,102,42,8,46,246,9,130,149,254,204,10,91,157,255,143,72,237,181,199,65,213,48,112,73,22,236,56,142,224,202,11,180,123,1,211,158,161,65}, + {47,15,230,227,13,90,96,35,140,105,106,70,116,197,143,167,9,109,203,19,223,155,165,59,119,49,6,25,122,191,220,21,128,229,59,104,230,254,193,95,107,237,5,135,181,216,215,55,254,26,31,153,2,2,35,248,120,37,234,5,215,137,132,218}, + {246,34,116,39,99,140,255,153,195,41,170,28,71,22,190,16,63,79,145,179,149,163,220,222,55,84,177,126,4,138,30,63,94,16,130,152,114,48,9,134,115,152,62,85,36,232,246,108,111,81,120,195,130,9,107,112,76,251,247,19,21,65,160,218}, + {209,72,178,230,20,215,145,110,143,247,56,70,201,212,128,5,137,31,25,120,120,76,214,153,88,203,124,109,149,206,147,98,244,58,178,38,238,97,143,50,202,191,57,38,177,9,79,109,36,124,171,154,250,50,98,101,215,94,165,209,123,204,195,213}, + {18,225,198,22,94,21,180,89,23,104,204,234,30,204,255,118,162,114,187,206,255,78,144,100,33,53,155,146,124,149,68,115,19,229,197,26,2,175,238,213,184,123,127,69,175,149,174,250,253,189,14,139,177,144,174,228,241,189,181,41,119,91,53,111}, + {46,26,240,66,138,195,250,142,71,88,160,222,73,200,98,51,151,29,73,75,66,13,192,84,52,205,9,119,16,180,144,5,40,251,117,212,110,187,37,34,86,224,120,225,19,249,109,184,167,248,115,141,185,93,196,29,2,24,0,223,159,61,192,54}, + {8,236,140,201,126,170,97,174,65,143,160,31,105,145,254,249,239,247,198,171,216,199,2,207,52,26,79,27,97,84,46,236,230,49,43,196,156,35,236,8,37,189,236,121,130,80,228,7,67,9,20,186,194,160,230,86,33,234,210,123,243,203,193,181}, + {87,107,190,196,97,156,216,66,194,137,211,85,203,147,39,218,148,52,16,253,196,201,151,86,74,19,196,88,132,135,71,131,49,3,180,92,110,225,11,102,167,84,59,180,63,114,16,25,68,51,133,28,120,91,22,134,93,202,231,219,252,59,111,102}, + {143,110,124,194,173,221,193,10,195,164,161,136,165,156,121,153,4,39,5,125,191,68,45,160,222,56,238,189,99,26,138,178,105,230,188,191,155,117,215,155,219,221,251,237,144,47,11,9,91,56,75,80,24,135,203,36,187,16,67,25,18,16,38,83}, + {232,105,232,199,154,126,83,35,27,82,168,211,14,64,56,254,143,144,82,123,145,124,110,113,79,185,55,104,247,157,241,149,119,66,70,55,120,105,214,47,182,208,1,82,126,135,171,219,207,179,179,40,210,139,206,160,229,99,5,144,153,142,187,126}, + {17,231,205,49,59,70,180,67,189,31,128,177,166,167,178,3,178,161,239,40,62,173,156,115,88,151,228,188,47,26,32,100,17,89,238,249,24,217,233,123,194,129,208,87,73,243,39,117,231,235,219,8,246,162,4,202,197,159,167,167,62,31,9,233}, + {182,109,139,182,15,163,98,14,196,185,37,149,212,38,55,81,47,254,2,12,24,147,85,196,47,45,238,213,68,94,219,14,2,122,53,145,21,235,190,196,52,142,208,86,249,228,67,177,47,231,192,248,46,123,227,218,151,233,55,197,238,73,171,149}, + {45,180,112,92,129,43,151,225,144,14,34,15,232,218,73,62,35,95,69,132,122,90,168,137,151,55,31,53,58,166,175,20,236,201,98,242,253,41,104,75,220,195,163,148,149,138,255,68,58,57,251,211,194,124,91,217,137,227,243,152,93,169,4,143}, + {6,33,23,10,26,80,237,36,18,228,168,55,20,224,12,251,52,93,102,175,46,38,130,66,85,168,195,126,219,95,31,250,41,143,145,41,242,7,30,14,166,249,252,202,138,243,40,41,103,89,133,9,7,154,65,32,36,241,21,247,149,99,48,78}, + {12,122,212,72,89,7,115,202,14,103,9,206,168,142,171,226,178,194,102,85,242,217,133,247,215,163,57,66,134,162,128,55,150,78,152,125,249,175,116,36,94,222,227,140,151,98,214,105,16,27,174,6,39,131,229,238,79,22,164,132,116,169,228,53}, + {167,144,75,53,222,44,55,245,157,236,178,243,115,16,42,19,67,135,216,102,10,46,170,2,38,209,56,120,133,195,226,33,16,74,229,77,87,20,8,1,251,98,145,193,27,214,178,137,143,198,152,51,195,208,131,149,108,136,24,232,185,205,104,134}, + {138,28,146,113,188,179,69,142,119,229,56,30,161,55,58,62,7,147,2,57,106,26,90,239,87,66,162,158,50,129,220,81,146,120,64,148,251,253,133,152,224,222,52,228,200,15,62,120,55,81,4,255,145,176,130,32,118,0,181,42,174,147,43,226}, + {149,235,116,39,243,177,18,254,191,231,41,248,7,175,92,105,250,7,15,162,9,226,135,151,137,179,198,112,3,98,225,69,94,166,251,233,249,153,32,145,244,187,33,182,59,177,133,50,20,20,131,162,244,55,242,214,70,180,32,9,134,182,98,212}, + {217,158,60,158,190,171,81,71,128,188,253,169,75,30,174,243,43,217,32,202,50,146,106,104,92,27,8,110,74,223,196,249,2,57,96,6,99,80,156,142,151,76,182,59,128,208,167,85,190,161,246,201,209,196,144,238,201,241,109,119,41,46,136,40}, + {73,104,197,39,157,212,237,220,182,159,36,63,41,92,133,198,51,225,162,143,170,97,109,149,68,186,217,112,83,45,60,44,152,0,47,108,196,102,109,215,38,169,48,49,8,132,135,30,226,95,25,45,183,84,47,95,149,107,145,155,58,99,225,60}, + {46,132,157,149,28,171,1,116,2,246,39,18,3,88,224,201,137,119,1,73,118,171,176,238,134,199,69,246,22,73,194,9,52,65,218,0,182,109,11,40,186,18,14,166,14,168,135,89,12,194,21,233,76,255,102,185,18,248,125,134,5,26,193,111}, + {198,18,97,51,91,148,134,249,207,239,215,238,12,100,25,107,94,139,141,5,163,2,75,59,6,194,250,215,206,41,200,142,163,33,108,161,111,101,201,234,145,158,254,43,221,162,229,27,227,150,69,229,129,100,197,63,22,57,190,227,111,218,33,225}, + {80,163,246,209,93,216,64,181,217,120,113,111,219,245,18,167,158,39,50,10,226,149,110,234,110,122,8,31,81,193,135,57,218,23,88,247,26,21,94,121,123,76,209,198,23,50,96,187,96,154,149,108,130,184,154,77,218,29,178,189,197,211,176,204}, + {207,134,58,218,92,203,35,189,218,41,119,12,225,183,6,187,23,133,153,88,224,160,195,214,98,59,215,16,201,229,196,217,61,77,0,251,133,36,95,82,48,42,48,57,65,3,166,127,150,134,28,248,67,226,39,65,77,68,114,224,104,213,212,94}, + {207,8,48,72,168,20,225,25,8,111,84,209,102,109,22,218,223,62,148,208,60,173,26,232,114,35,200,74,167,192,14,134,196,39,248,114,169,92,3,252,80,9,158,239,247,105,117,160,101,205,18,77,188,39,134,131,167,56,184,162,177,153,114,197}, + {109,71,57,149,94,78,221,191,81,0,100,200,45,146,158,166,111,88,103,255,189,142,59,201,173,20,95,74,90,254,216,236,78,221,19,59,143,67,110,33,179,234,32,228,148,38,213,110,27,29,234,231,246,136,84,178,219,74,209,188,189,176,224,101}, + {115,141,238,54,85,98,1,129,151,40,32,27,183,86,149,152,101,203,23,213,14,111,11,100,185,192,97,249,221,42,249,79,32,254,53,43,140,216,196,85,118,26,230,67,134,214,148,24,206,238,182,98,2,90,254,4,254,40,151,117,160,80,236,82}, + {18,129,251,148,77,204,30,131,168,167,96,115,177,137,22,219,100,8,163,226,182,95,183,98,181,172,184,70,251,45,179,3,217,225,52,50,225,179,184,64,156,18,62,149,186,56,50,10,239,193,105,183,241,32,232,35,30,93,244,229,115,48,46,227}, + {124,18,76,202,170,211,50,76,30,5,28,181,68,26,116,212,246,166,117,23,112,233,70,209,49,152,132,73,66,249,220,92,96,51,160,53,216,47,125,104,101,26,242,194,75,194,186,36,40,131,180,128,219,102,250,214,75,13,222,41,246,193,226,24}, + {171,28,213,215,22,73,53,11,140,211,214,91,126,37,79,220,83,168,110,246,39,47,186,10,41,233,95,172,153,167,100,117,29,243,103,230,179,72,161,255,83,38,96,164,88,248,59,100,169,189,173,108,196,150,252,140,210,67,188,101,46,203,199,169}, + {191,159,171,96,193,210,197,160,187,253,180,224,115,132,3,149,241,226,218,117,165,255,78,238,8,47,155,159,153,239,154,250,152,121,79,178,74,24,209,187,174,123,168,207,173,40,224,173,105,81,11,106,153,183,53,17,135,221,246,185,137,124,118,185}, + {156,173,28,172,87,15,241,153,52,29,164,76,244,93,32,104,16,190,9,234,71,238,190,62,97,241,221,48,131,50,38,102,125,56,79,194,147,69,151,241,248,151,81,210,215,69,67,174,216,20,168,196,153,95,23,54,246,177,62,156,211,97,227,208}, + {39,84,203,200,33,78,183,157,46,66,214,77,164,219,139,211,134,101,46,254,6,120,47,37,125,220,250,149,26,183,50,167,33,117,49,198,184,6,86,46,111,34,77,97,77,84,190,47,42,160,189,56,82,128,236,77,70,150,113,184,39,24,191,143}, + {47,170,80,43,120,140,181,105,110,231,224,90,247,148,168,19,226,45,151,94,93,17,150,1,29,133,88,104,190,220,142,192,70,26,220,242,35,216,89,233,166,213,42,183,151,188,7,169,118,20,216,56,155,119,62,224,130,131,49,252,47,189,126,119}, + {36,235,101,95,31,236,177,136,189,133,164,188,53,192,178,103,124,168,159,19,96,80,49,222,52,119,170,189,73,57,219,72,226,167,225,15,253,196,110,252,65,171,116,57,164,14,232,57,40,2,153,228,42,14,206,119,181,23,49,253,131,8,33,182}, + {5,108,97,54,96,230,153,71,106,3,218,125,149,5,159,154,188,196,147,252,223,103,80,72,97,34,170,120,214,169,223,121,88,115,195,128,71,143,28,196,152,172,55,216,147,195,255,226,165,41,228,153,106,97,147,239,247,194,126,221,97,186,201,88}, + {173,81,213,70,32,139,78,30,36,177,96,197,184,233,228,128,44,216,189,182,26,215,81,164,17,36,48,68,173,6,44,48,207,136,1,93,25,9,79,36,73,209,228,55,76,108,199,65,33,138,112,94,78,144,184,158,25,110,136,139,255,238,174,203}, + {25,92,130,161,236,117,229,84,64,240,225,48,70,103,223,159,230,71,15,105,105,41,180,175,44,115,42,184,102,59,184,173,253,148,214,131,34,144,14,204,119,126,146,245,16,224,108,83,95,213,24,2,166,206,169,47,250,179,57,19,71,196,67,68}, + {205,81,237,151,104,62,56,197,209,59,65,52,112,97,217,204,169,47,111,146,67,238,180,49,158,239,158,236,107,97,6,180,144,119,192,185,131,10,38,173,206,202,243,229,243,136,186,48,7,27,192,18,81,51,166,80,161,29,66,9,2,236,235,42}, + {27,250,68,106,69,135,8,17,92,199,244,83,21,216,247,255,86,57,236,57,224,220,208,165,121,215,67,40,95,51,225,220,202,83,249,38,68,60,47,197,186,102,92,212,229,254,220,180,37,38,171,126,2,188,211,212,13,40,161,91,133,187,103,105}, + {68,100,155,89,237,22,117,100,171,79,170,41,63,92,46,112,139,137,142,58,0,252,236,128,197,81,87,255,243,19,14,239,221,172,114,234,5,101,79,179,30,234,65,160,52,161,130,228,98,4,17,21,122,29,225,182,203,80,106,195,219,72,57,143}, + {5,18,113,52,85,89,174,185,54,255,162,123,102,134,49,39,238,106,194,35,48,102,63,116,156,76,125,146,5,61,164,198,226,170,114,23,222,230,16,236,102,139,45,131,159,4,92,99,153,140,130,53,217,58,252,173,245,129,161,208,226,246,241,250}, + {9,12,65,92,141,211,51,205,191,85,91,214,242,128,113,167,208,193,195,194,76,94,16,80,148,201,194,60,160,50,148,138,190,45,25,232,16,186,242,210,75,143,170,134,144,125,136,61,220,192,4,229,131,231,82,65,56,28,240,99,178,130,216,108}, + {253,161,124,49,71,104,59,14,197,58,198,3,2,180,47,226,99,120,236,127,124,70,207,143,67,95,114,76,127,32,28,44,104,87,126,75,17,171,252,168,0,253,235,98,144,101,42,59,225,71,173,225,1,109,188,181,249,238,159,238,24,163,114,165}, + {14,83,99,227,44,181,29,117,72,145,85,163,141,92,245,239,109,203,235,168,5,73,104,218,22,191,168,158,156,24,209,55,214,194,242,49,85,209,110,94,40,245,48,38,243,15,29,227,208,171,133,13,238,76,135,185,87,221,62,219,240,247,160,54}, + {172,153,23,5,217,225,127,61,47,82,197,188,253,153,164,97,162,236,180,19,239,25,226,201,149,189,143,114,47,107,105,219,185,247,176,74,193,250,225,174,112,4,127,255,190,119,184,209,125,215,115,20,98,65,254,71,229,81,27,147,227,74,20,18}, + {242,202,119,59,130,110,137,56,89,31,116,119,219,183,56,32,180,116,34,189,6,115,215,155,96,238,116,199,113,122,93,131,94,173,130,210,198,43,214,250,162,161,197,203,112,254,189,184,9,208,250,210,253,124,82,98,153,70,131,95,24,53,181,97}, + {31,169,161,54,171,247,212,8,187,222,193,175,219,74,22,216,213,218,142,161,8,231,122,76,221,89,106,46,32,156,185,120,46,0,115,96,217,143,199,87,215,149,160,44,209,69,96,114,95,76,77,110,153,90,109,223,146,230,246,121,111,243,45,253}, + {178,133,155,88,53,191,29,127,62,85,109,89,223,233,197,21,105,108,224,145,93,218,129,60,82,123,205,224,228,190,206,214,252,92,251,143,224,54,68,121,104,120,164,222,173,116,18,40,120,170,43,199,187,155,61,115,175,28,156,175,194,231,133,90}, + {44,165,20,253,169,77,142,157,138,235,8,94,82,83,62,210,235,215,108,179,141,177,3,124,163,205,152,244,131,193,92,18,76,60,107,104,50,27,144,43,67,213,13,113,142,125,231,12,17,23,105,136,224,231,134,72,79,100,244,252,152,175,224,52}, + {254,197,187,189,154,165,185,64,65,167,17,132,24,37,18,119,134,132,121,123,222,30,202,74,154,91,234,221,35,20,242,254,171,167,145,65,128,175,176,37,130,67,254,175,74,102,254,42,202,141,143,171,83,189,17,152,74,105,97,217,218,49,210,231}, + {134,108,81,3,119,194,231,152,100,83,182,196,215,22,208,169,104,64,123,46,179,85,122,29,155,186,142,125,248,89,0,22,66,223,190,131,176,180,65,24,193,247,10,41,165,189,25,254,132,59,62,29,147,133,45,167,82,20,151,49,6,17,227,129}, + {87,155,98,90,210,82,97,43,159,197,38,198,21,82,107,135,235,221,17,97,36,230,11,233,101,8,25,119,191,149,49,12,25,105,236,105,178,6,201,247,242,140,70,143,220,127,91,119,254,64,244,26,109,166,136,95,87,154,7,78,223,244,173,19}, + {14,37,56,41,228,116,185,166,177,208,177,165,162,226,107,3,239,160,144,3,38,230,115,97,148,42,230,176,187,143,23,230,100,129,106,199,208,185,75,48,58,38,69,150,168,87,4,184,148,90,121,45,9,219,76,35,44,218,157,164,196,190,196,207}, + {131,248,154,140,112,176,222,235,17,13,162,238,64,211,140,42,85,113,189,251,49,107,0,90,215,201,120,243,70,243,59,211,238,100,220,142,116,151,196,254,222,197,228,6,253,202,78,29,40,33,238,117,198,49,200,154,52,62,91,51,255,239,155,205}, + {147,73,122,2,95,222,165,110,175,206,207,47,253,44,217,108,30,169,73,186,41,203,82,161,102,26,65,133,38,34,137,83,200,91,97,68,208,113,240,95,29,242,101,128,144,28,60,216,135,56,140,21,170,202,169,236,237,76,141,90,191,136,39,191}, + {220,175,73,29,205,206,167,28,179,132,245,123,143,223,3,136,251,241,221,41,186,168,59,237,171,29,129,9,175,123,236,177,19,228,89,50,222,96,116,152,27,196,158,9,27,56,102,96,223,93,76,190,146,218,222,63,87,87,152,56,193,112,226,251}, + {246,224,71,2,195,14,113,180,222,135,88,91,238,96,197,2,190,130,168,100,78,29,71,97,6,145,58,134,227,215,72,130,105,47,88,65,239,8,115,104,251,185,63,143,112,49,43,249,184,75,115,36,202,55,39,168,225,111,238,206,31,209,144,33}, + {74,98,159,204,117,5,76,155,155,147,199,171,41,188,89,171,183,232,72,54,53,41,3,55,54,85,165,131,82,186,96,49,75,134,166,9,107,132,76,106,175,42,185,149,18,108,199,67,164,185,242,128,248,153,98,74,89,220,179,54,149,231,149,219}, + {4,145,9,42,171,194,229,233,52,88,190,228,190,222,68,135,168,48,69,210,70,143,23,36,154,38,179,236,10,15,223,239,152,92,179,6,5,245,84,85,193,76,111,196,186,250,156,161,160,188,47,212,209,18,14,250,45,252,43,70,20,159,165,12}, + {143,220,233,112,70,65,20,178,104,91,248,35,197,179,99,206,155,6,112,142,226,37,148,83,137,228,122,249,59,82,102,193,193,49,237,227,63,215,117,69,146,114,83,65,143,21,5,52,100,70,166,94,254,162,124,57,31,146,107,250,220,46,48,210}, + {74,141,73,135,168,17,244,91,161,53,237,232,131,49,58,140,175,5,83,120,7,252,173,85,105,72,6,191,42,232,59,223,158,23,3,230,174,75,253,35,123,213,53,144,58,1,85,66,226,96,140,65,43,249,98,144,82,30,231,90,191,93,71,30}, + {129,85,99,153,177,59,85,81,226,56,208,148,88,67,123,80,15,94,23,3,82,63,140,147,82,140,206,46,70,173,245,128,19,50,242,204,219,11,213,204,74,211,115,68,181,248,47,19,63,219,165,115,83,60,229,179,107,92,15,90,251,1,214,89}, + {158,112,251,126,223,141,246,49,88,113,153,160,233,47,203,41,142,154,140,113,26,112,157,145,128,179,240,229,240,246,24,169,229,227,250,38,11,33,107,89,147,0,47,169,188,36,30,43,24,69,162,171,228,133,233,125,250,180,166,62,128,194,126,96}, + {138,42,16,151,1,40,58,88,213,38,245,200,208,98,206,130,79,146,26,34,1,217,50,82,233,167,231,28,45,11,99,115,179,247,196,134,32,240,171,128,40,153,248,49,10,16,27,192,169,65,191,183,199,98,106,207,36,102,45,217,190,37,36,238}, + {21,150,103,39,221,112,136,105,246,247,204,108,186,236,220,63,170,42,46,125,212,155,47,207,238,206,60,94,15,184,197,4,79,109,101,66,111,109,79,21,205,192,230,222,197,161,222,176,189,230,149,121,46,176,213,209,174,154,6,201,67,57,103,99}, + {130,175,197,155,124,136,216,18,174,47,139,133,153,146,17,228,25,161,188,150,173,246,13,160,152,73,117,229,116,238,111,88,76,218,152,72,58,172,238,80,4,124,50,251,104,73,51,147,167,117,86,38,138,62,215,71,148,116,10,120,92,150,236,95}, + {114,133,254,32,147,11,3,1,50,26,49,60,5,138,113,0,94,146,31,25,104,44,31,253,61,242,172,110,149,26,239,55,84,238,117,164,133,112,55,77,211,31,70,229,1,78,70,186,8,248,35,34,95,36,74,206,160,83,135,240,170,57,142,221}, + {80,174,98,51,244,50,158,117,14,244,195,248,114,15,97,217,20,109,92,78,245,138,66,236,51,109,9,60,72,218,47,162,107,112,33,41,15,76,203,16,255,101,110,247,107,175,190,159,130,142,233,105,116,175,194,181,75,224,199,79,124,21,35,178}, + {77,57,194,150,238,157,124,237,1,254,44,245,240,8,208,95,191,202,22,155,240,53,183,46,243,194,74,102,35,94,156,26,77,135,20,216,132,81,57,37,224,145,20,53,103,183,51,56,219,169,13,160,242,188,27,208,243,66,111,244,46,63,194,138}, + {234,155,226,137,69,255,33,70,196,5,120,205,168,123,71,192,21,153,96,54,8,71,93,159,31,251,163,140,119,23,32,116,99,123,163,25,42,210,206,163,164,244,220,228,233,192,209,55,44,116,103,121,167,166,35,85,82,242,197,79,214,8,149,131}, + {21,125,219,61,204,220,120,132,102,255,45,210,98,218,200,234,68,166,172,116,127,222,173,41,33,165,248,254,239,193,117,164,145,194,24,200,207,90,38,14,143,254,93,8,60,7,122,182,224,203,254,183,179,21,5,242,253,131,189,37,40,77,180,194}, + {93,174,39,41,49,250,206,29,88,137,212,1,37,79,193,89,47,189,207,132,63,172,81,199,203,192,60,47,90,213,51,136,207,114,110,249,208,160,70,37,51,200,204,218,40,245,32,69,111,229,3,92,234,37,127,112,229,167,195,196,77,222,120,27}, + {97,20,118,126,153,175,217,148,123,242,202,27,73,230,131,223,215,148,122,144,9,196,65,98,45,131,181,22,187,200,158,249,123,32,157,44,197,138,235,192,62,137,10,122,137,40,252,238,57,141,210,166,44,141,27,8,25,200,142,200,112,118,183,164}, + {242,164,31,199,237,100,217,1,180,22,30,65,15,163,172,107,142,202,228,15,59,216,147,90,216,38,199,228,65,137,104,66,145,2,169,83,166,228,88,146,118,203,38,112,36,56,224,109,164,160,159,54,235,86,53,192,29,85,11,27,192,136,152,172}, + {147,70,227,102,142,17,16,254,6,103,253,142,77,105,251,249,252,87,148,142,236,180,205,102,77,173,224,198,125,238,27,47,34,99,15,62,237,11,36,123,179,186,185,188,41,197,16,235,129,53,16,221,152,8,252,42,85,65,183,43,215,39,245,129}, + {171,152,80,207,160,59,203,100,143,138,131,218,171,184,52,92,235,180,238,198,30,215,176,135,143,176,180,157,187,154,179,157,113,226,109,79,58,96,237,67,218,123,180,139,7,13,164,175,81,20,38,57,77,48,250,131,167,123,11,161,178,173,182,182}, + {219,65,110,116,62,16,178,220,181,77,80,11,0,139,206,28,193,144,188,153,254,195,132,180,232,2,54,78,228,115,99,91,115,1,109,0,184,222,68,251,13,152,98,53,210,74,171,186,124,64,129,142,50,237,19,242,132,35,232,71,114,132,233,63}, + {75,41,73,9,199,94,27,224,112,69,95,166,54,86,63,37,188,7,185,72,104,235,111,79,198,208,207,184,48,216,26,174,147,87,226,227,88,254,247,0,222,196,0,3,192,109,158,72,51,219,126,63,133,208,119,202,175,105,62,162,65,37,42,130}, + {50,126,23,109,68,133,155,156,217,22,172,193,197,218,203,124,110,224,27,158,253,165,85,246,215,147,103,85,206,79,154,253,116,179,4,146,59,30,241,81,13,6,31,108,84,52,151,235,99,84,250,201,56,152,5,36,103,118,89,114,180,22,134,78}, + {142,126,137,185,25,177,75,128,148,113,60,167,96,8,18,210,7,108,237,156,73,11,211,136,38,138,216,62,251,46,223,117,21,13,150,60,125,198,29,45,27,191,67,75,148,105,101,144,203,102,50,158,167,211,52,186,24,113,11,46,142,97,115,192}, + {34,63,4,211,143,33,185,22,179,151,163,78,97,139,95,91,38,71,136,133,152,116,65,153,136,182,217,62,211,45,45,252,25,229,171,245,105,176,166,96,246,131,195,153,211,188,184,67,34,30,34,14,171,89,146,23,248,146,231,119,22,84,236,84}, + {156,15,101,160,27,154,0,29,232,217,28,97,41,113,136,34,64,85,55,204,33,92,254,236,180,158,223,98,20,161,74,68,12,1,191,176,209,16,117,165,246,52,187,70,182,232,216,200,132,246,36,228,158,157,170,27,84,171,154,99,53,111,131,53}, + {249,71,115,69,194,249,255,217,170,125,182,152,125,249,110,88,229,164,199,87,120,65,103,92,13,239,101,199,159,96,89,199,161,43,154,79,109,157,147,233,59,85,200,235,61,191,35,83,206,83,55,100,165,112,186,73,73,75,30,155,252,228,192,1}, + {132,20,96,140,203,126,73,214,76,213,255,168,133,59,96,217,133,58,186,38,145,128,95,206,208,245,244,69,141,110,230,24,62,152,34,241,218,160,178,75,23,39,241,187,57,125,139,186,17,82,209,56,117,69,226,214,165,129,158,84,83,177,140,154}, + {126,120,194,48,184,7,192,50,190,200,30,215,218,34,0,122,189,219,42,155,53,200,224,178,38,180,52,244,81,124,23,140,38,212,37,214,71,234,75,111,239,174,50,200,248,170,208,80,81,77,61,13,198,213,2,156,78,182,123,51,179,195,102,252}, + {37,70,218,208,202,82,62,107,232,177,221,100,3,187,8,203,52,104,20,140,243,136,123,2,61,224,209,127,0,28,208,95,193,78,187,35,178,68,2,156,252,191,244,161,60,38,254,144,137,172,125,237,218,113,86,192,159,50,108,186,238,238,69,37}, + {62,144,245,240,117,132,213,140,77,73,23,236,201,57,99,168,240,204,80,148,141,41,76,154,192,216,173,247,41,218,181,72,41,200,40,243,180,255,30,228,93,51,177,174,225,244,121,84,217,112,98,40,50,171,80,244,81,87,239,121,22,145,27,25}, + {219,15,136,27,168,13,9,69,74,111,181,89,54,13,194,227,207,84,119,193,156,232,65,5,141,188,93,217,33,167,111,178,94,67,128,105,183,27,31,177,159,164,108,48,2,206,135,126,141,219,71,22,169,115,83,66,149,51,229,20,174,14,142,16}, + {92,87,209,72,136,101,148,139,72,243,226,126,204,107,10,214,69,0,212,237,8,218,240,10,253,251,170,43,164,132,95,206,233,106,113,169,135,32,165,203,185,135,75,3,200,198,246,57,193,251,161,134,116,0,200,173,162,197,64,80,226,64,123,116}, + {154,226,188,29,207,58,204,67,145,231,224,17,151,250,114,162,123,26,164,26,65,123,220,195,44,141,164,96,195,118,235,198,2,196,237,0,26,10,86,68,69,126,113,56,70,80,189,220,168,160,90,212,34,208,171,3,84,176,189,89,151,69,125,243}, + {11,14,17,45,30,238,85,17,20,107,199,8,34,71,135,138,191,23,213,148,8,95,218,250,40,112,59,222,222,73,247,2,120,124,83,103,25,77,98,165,139,15,217,217,35,234,11,248,95,23,222,39,179,33,208,102,43,77,194,146,161,160,21,20}, + {200,215,62,177,19,93,74,25,59,141,5,38,241,150,196,120,6,77,139,250,160,117,2,206,193,252,73,96,185,58,207,49,139,149,148,59,230,62,172,184,158,178,172,89,111,211,170,38,150,127,124,253,71,41,169,5,138,244,59,247,153,144,50,40}, + {153,140,159,212,25,196,204,88,54,129,130,91,134,137,42,225,128,76,19,119,225,29,255,139,62,47,34,74,144,252,100,114,197,138,83,172,189,181,135,99,174,155,187,74,2,245,80,242,82,170,135,76,151,227,244,198,125,234,115,199,146,228,179,43}, + {243,206,191,204,135,200,231,168,195,105,221,106,16,144,125,2,40,255,145,167,203,231,87,98,234,90,120,209,218,233,247,94,132,130,71,83,59,229,88,30,137,188,191,46,227,176,171,4,242,120,56,174,250,102,90,154,194,143,176,183,59,66,234,173}, + {36,169,122,77,218,37,200,41,226,195,191,84,67,165,228,227,170,182,200,178,203,105,26,66,36,253,31,13,75,236,197,209,88,4,213,186,125,202,128,63,69,59,237,226,35,19,82,182,17,100,9,129,226,40,198,134,161,45,211,34,94,152,211,51}, + {196,115,91,214,46,252,212,148,31,147,239,114,151,170,2,159,7,185,136,190,197,144,151,12,73,162,160,201,61,54,1,133,71,190,4,31,188,238,252,59,22,42,38,137,217,28,62,128,18,128,192,197,254,185,8,172,192,144,155,192,169,1,214,81}, + {185,12,54,180,225,175,58,55,101,237,77,148,67,47,135,55,31,83,209,139,166,204,23,241,53,172,177,83,33,52,67,142,229,13,126,195,254,81,235,153,225,173,50,164,59,65,189,207,158,88,94,52,60,141,6,157,230,31,108,203,254,118,70,176}, + {246,252,167,11,132,100,239,88,196,58,112,53,254,54,67,8,139,37,207,110,168,206,239,203,98,36,40,36,118,205,124,198,60,99,131,250,134,111,69,56,152,0,101,83,95,111,123,210,234,208,164,232,218,93,155,114,89,197,56,11,147,211,188,208}, + {251,213,16,229,248,198,61,233,97,47,192,26,243,146,204,117,74,82,111,195,63,56,111,146,0,238,185,116,46,46,14,151,40,52,88,179,70,240,165,41,135,182,209,11,5,29,61,180,3,110,163,85,133,187,51,81,239,221,88,104,88,59,201,97}, + {11,124,191,250,55,47,167,194,24,93,13,15,87,98,181,59,123,225,1,12,31,154,167,244,254,134,119,175,79,146,82,214,35,74,251,94,78,155,85,181,144,232,104,58,219,12,86,101,229,212,163,3,217,251,69,47,15,116,73,18,100,201,57,5}, + {183,16,219,162,152,244,143,43,223,189,102,1,213,94,213,253,55,28,46,129,32,47,118,224,84,71,251,52,110,130,214,224,25,206,45,253,66,185,19,27,91,146,218,211,0,113,230,198,170,16,210,69,220,65,144,230,168,200,3,81,124,153,135,9}, + {36,83,95,248,54,143,3,115,74,74,171,42,20,9,200,127,193,223,224,181,150,192,94,87,251,10,125,222,79,185,34,103,113,20,117,217,211,132,0,51,111,147,115,58,252,248,238,187,249,161,36,220,139,70,33,231,247,227,220,153,77,231,147,132}, + {76,202,187,29,91,51,169,133,58,65,199,57,145,14,151,26,195,181,199,84,51,129,160,90,34,233,76,220,234,69,215,150,43,128,25,152,141,24,192,164,11,179,181,95,171,76,123,4,237,242,129,178,86,28,150,19,39,123,20,196,110,200,170,91}, + {88,179,237,23,194,217,190,229,11,50,236,30,39,37,36,251,101,246,242,165,174,255,68,9,27,222,15,129,165,2,214,211,14,159,31,255,6,218,238,38,0,198,92,133,63,216,32,19,123,104,130,250,220,248,210,242,234,222,9,113,50,170,64,137}, + {100,189,217,77,137,55,180,156,207,118,196,189,180,22,7,173,65,143,22,133,140,120,182,163,60,93,46,28,26,222,51,216,233,67,183,233,169,150,129,178,159,188,60,193,232,53,200,207,133,53,105,158,249,149,93,220,94,85,165,167,222,98,32,239}, + {117,185,93,209,248,186,91,228,93,128,96,166,196,170,182,97,73,65,25,166,11,30,33,153,228,54,194,52,209,219,46,130,144,245,189,159,86,72,47,43,160,219,151,51,91,107,101,98,10,108,10,136,100,103,57,241,10,139,55,111,171,139,4,54}, + {54,220,72,155,95,58,203,179,110,46,188,123,239,115,28,112,45,95,176,186,253,170,95,63,38,6,118,246,228,19,46,186,41,178,242,169,60,73,75,111,88,127,215,64,208,115,255,239,125,172,32,36,121,122,8,86,133,236,128,61,56,97,174,173}, + {227,247,86,247,12,45,120,98,208,224,17,233,8,243,31,90,181,172,32,96,200,3,22,222,68,220,187,211,173,24,215,67,8,152,226,191,53,85,191,150,116,49,221,62,161,252,212,135,194,92,214,232,16,120,29,20,97,44,12,98,186,194,132,75}, + {153,43,111,197,124,94,28,132,69,196,96,222,13,238,114,63,94,180,20,222,146,195,163,124,166,127,118,157,186,240,168,57,31,6,129,60,18,115,72,138,105,73,229,47,142,200,224,185,10,43,142,137,130,205,86,169,2,89,192,48,199,75,136,243}, + {160,249,35,44,202,191,26,249,137,131,149,41,154,66,186,69,184,114,147,164,80,100,182,34,28,92,143,150,130,9,197,181,237,234,60,246,16,151,163,109,95,111,166,155,39,80,54,174,144,56,250,63,91,48,45,251,66,113,54,127,43,108,62,20}, + {251,216,249,198,18,41,64,152,167,16,62,209,201,188,206,161,225,230,21,45,192,221,78,7,105,63,162,51,188,193,31,116,99,131,142,64,232,73,107,159,164,128,122,28,221,171,202,132,40,186,17,151,155,28,22,122,75,210,123,100,22,177,164,48}, + {248,141,181,24,87,11,64,14,25,177,140,68,183,105,43,137,19,176,152,211,224,104,221,177,66,21,241,69,206,105,57,67,127,114,255,36,97,176,160,157,215,33,59,72,24,134,132,53,205,129,87,45,53,48,74,90,54,5,55,65,173,171,32,119}, + {221,154,88,128,7,144,112,61,149,0,181,220,82,202,13,95,246,246,73,183,36,19,56,232,1,218,237,33,108,155,112,176,104,133,243,216,107,172,57,94,207,88,46,236,252,61,153,85,76,194,212,16,169,152,50,247,158,70,75,106,168,187,33,77}, + {99,2,3,195,220,173,199,182,30,20,153,205,161,117,213,51,222,198,195,5,134,30,28,78,127,159,55,20,75,106,68,233,47,77,60,142,189,127,56,12,53,243,96,130,42,9,3,177,204,126,164,145,47,41,228,26,57,233,105,240,201,90,13,250}, + {229,116,196,134,23,234,184,3,140,145,214,199,29,238,117,212,229,115,218,78,183,248,226,148,154,198,24,134,100,239,52,84,2,249,206,65,238,148,85,28,151,116,191,202,201,20,91,31,228,91,244,142,52,247,84,17,47,177,143,212,205,255,68,41}, + {118,30,204,118,134,252,66,184,96,30,223,212,8,9,115,186,80,100,235,145,149,140,143,83,206,3,121,16,112,134,160,244,8,127,199,103,224,180,196,237,105,208,140,46,222,137,121,181,60,8,104,88,132,61,75,134,159,27,33,216,202,163,7,162}, + {165,235,193,25,52,195,98,12,65,45,138,167,91,222,49,136,151,38,131,83,11,168,124,121,5,11,11,65,119,218,248,136,235,50,174,156,3,159,240,139,124,172,18,133,52,119,156,9,154,158,169,105,241,202,54,245,56,176,19,37,67,80,235,221}, + {32,21,151,73,16,125,194,46,0,7,28,209,109,182,0,117,2,81,211,236,228,58,113,197,235,80,40,96,238,104,184,71,45,241,65,22,40,157,192,9,102,178,226,205,61,169,240,16,29,119,251,177,66,176,15,8,226,10,138,149,234,207,94,164}, + {204,13,37,89,196,32,191,222,115,219,238,109,253,20,122,93,213,116,186,131,104,97,203,45,60,41,61,174,120,114,25,158,131,139,132,41,110,52,76,48,107,2,223,241,89,41,51,117,187,138,71,65,61,63,164,69,193,148,50,56,118,203,240,105}, + {182,187,177,54,239,215,245,223,85,18,152,157,1,43,114,84,142,38,201,11,147,197,148,169,239,33,250,29,146,7,57,20,103,141,252,9,89,60,113,97,107,94,94,15,254,91,81,183,212,24,2,210,43,230,148,12,202,201,82,201,122,108,171,132}, + {66,77,237,65,197,138,200,205,254,235,9,180,85,34,232,209,201,78,136,208,212,122,218,222,100,227,97,166,56,127,173,161,233,228,9,232,223,141,214,216,104,175,173,9,79,114,135,99,49,10,230,158,184,141,133,85,111,36,174,34,195,205,31,140}, + {132,59,218,205,170,175,214,177,88,249,91,100,66,97,121,19,41,50,71,197,33,63,112,192,56,18,1,251,132,74,131,232,204,203,47,126,73,34,251,137,5,223,107,210,80,245,33,187,193,10,23,51,229,129,243,64,193,228,134,209,119,71,148,239}, + {29,67,8,153,36,13,74,59,216,43,248,161,200,33,90,5,107,45,147,235,213,219,218,53,112,216,99,18,177,221,129,51,212,203,161,123,84,215,163,151,111,127,66,110,227,142,50,229,161,109,172,140,232,5,127,199,79,10,77,103,237,156,158,0}, + {173,162,28,26,11,157,125,204,43,26,126,60,56,145,15,33,9,30,90,42,60,1,229,23,135,183,89,9,100,76,200,4,226,136,220,15,73,232,112,66,72,87,13,102,220,38,237,197,224,156,237,50,133,74,226,45,91,7,237,210,114,251,232,43}, + {12,115,70,29,125,246,44,220,151,73,32,10,62,32,79,103,54,121,100,190,64,38,136,97,158,30,120,212,167,112,20,85,7,87,211,152,63,103,244,211,147,136,159,205,30,116,121,170,116,129,95,223,23,77,203,46,144,82,61,179,39,248,69,137}, + {154,85,85,105,211,163,45,61,71,233,173,140,215,243,163,106,48,3,60,7,141,5,155,230,215,206,168,91,232,5,1,4,16,242,16,96,144,54,227,46,118,202,31,24,159,192,131,32,139,72,170,229,167,187,253,41,251,50,21,160,122,214,65,227}, + {42,33,41,87,29,24,162,76,73,2,83,172,51,169,55,101,234,186,137,163,174,23,251,67,57,14,145,70,176,51,70,170,222,45,198,126,186,112,26,29,191,135,162,247,234,31,58,210,204,189,132,156,58,155,48,54,155,13,137,109,22,199,106,66}, + {247,136,49,153,189,83,10,217,251,127,245,109,26,46,11,176,63,224,12,35,161,182,36,173,112,59,33,132,180,102,119,163,25,113,100,151,44,113,101,75,110,104,82,54,233,254,100,171,185,251,84,252,5,132,147,104,205,158,36,219,74,123,145,21}, + {19,36,190,25,114,215,98,134,222,168,25,114,83,145,96,235,91,71,182,120,241,89,162,208,150,190,203,217,88,202,180,60,21,252,82,236,49,84,143,147,86,36,162,52,136,59,194,178,216,99,248,32,168,123,81,51,229,44,94,15,17,129,111,2}, + {116,151,250,118,177,206,21,141,3,105,144,214,63,102,14,250,229,198,110,138,120,9,190,187,197,149,38,78,138,152,184,15,21,120,190,85,155,232,133,183,191,109,66,92,134,201,199,39,68,11,113,76,25,85,187,59,100,82,244,186,61,70,144,110}, + {107,2,249,219,140,92,102,202,46,194,113,169,205,140,151,0,209,19,233,139,214,42,249,55,22,171,155,148,72,189,99,250,232,12,114,79,92,165,232,7,59,32,209,101,4,95,160,79,204,54,182,1,5,119,214,108,128,156,232,69,237,146,12,241}, + {158,99,162,55,241,2,75,213,95,62,244,209,51,229,83,7,87,93,67,144,125,206,162,81,74,155,157,114,224,50,198,207,47,206,22,122,186,138,88,128,142,138,26,152,148,2,29,171,83,108,184,56,186,120,205,105,149,39,151,208,160,162,107,69}, + {193,177,241,237,126,49,37,33,237,48,114,223,39,11,29,227,182,131,221,141,139,162,29,186,31,1,56,216,134,59,201,119,89,137,216,108,165,135,237,174,154,14,127,250,131,172,164,111,63,23,1,237,66,82,9,105,39,134,115,103,252,137,180,199}, + {184,114,80,10,35,136,114,124,58,192,72,100,242,16,121,218,140,92,253,16,139,36,211,74,35,27,46,34,204,100,101,10,240,91,50,91,125,103,155,71,145,171,122,14,77,183,41,48,36,33,211,241,186,57,47,2,92,103,20,248,85,57,84,32}, + {244,10,229,211,252,107,78,240,231,180,218,76,80,54,53,12,254,201,210,161,240,221,201,95,5,191,179,76,76,102,164,56,60,4,216,238,157,230,239,102,13,104,214,92,81,175,211,98,209,28,33,110,106,166,248,210,249,115,96,152,113,253,95,15}, + {24,99,151,252,42,59,152,60,26,237,225,70,225,126,142,145,101,68,179,222,117,225,113,152,43,116,205,191,223,47,41,214,49,91,83,200,100,197,232,119,236,180,159,211,192,221,68,235,102,194,200,109,165,240,86,140,7,228,81,216,116,249,248,223}, + {14,97,227,130,153,248,7,102,216,47,118,132,11,91,226,43,105,244,164,113,226,92,23,216,176,127,239,202,40,83,43,186,59,105,148,114,175,162,130,17,12,214,78,214,218,41,118,67,130,158,184,166,100,184,15,93,64,25,232,111,158,154,46,92}, + {195,107,215,90,182,12,98,121,242,164,61,56,35,249,163,115,1,235,1,250,255,111,96,109,166,141,112,133,56,15,238,62,168,127,101,253,104,26,155,232,151,46,169,114,148,72,5,82,229,0,30,150,224,89,201,14,108,118,222,146,208,152,40,220}, + {200,96,110,104,129,251,200,226,242,179,128,100,82,32,223,4,107,208,161,4,113,249,149,130,149,18,24,168,115,129,68,27,213,126,16,187,250,249,131,233,84,103,240,249,86,241,144,205,148,60,62,188,46,132,44,198,250,16,9,159,104,109,75,162}, + {193,159,235,1,222,80,8,184,5,128,208,161,28,100,77,189,87,16,99,63,44,221,28,134,242,14,35,66,119,212,231,148,120,47,210,71,145,13,200,242,192,126,33,238,169,233,0,192,161,49,75,229,219,100,220,90,63,206,61,218,44,98,27,199}, + {209,9,193,4,25,223,169,185,117,168,255,229,240,209,237,2,249,190,116,134,32,200,105,153,79,166,218,127,124,218,99,115,72,28,9,188,72,205,118,184,123,252,66,172,186,35,8,81,160,253,38,25,29,233,232,243,95,147,90,19,89,221,152,162}, + {81,146,157,56,150,177,73,108,252,13,230,157,197,135,33,88,149,49,228,195,42,160,0,227,82,226,130,203,245,167,182,42,178,190,116,255,209,53,11,196,244,171,88,211,35,48,159,6,170,195,142,43,69,0,233,227,2,144,69,10,67,43,98,208}, + {36,56,24,86,54,151,71,174,155,73,66,71,234,233,161,52,93,48,34,80,17,82,131,16,46,248,249,172,84,4,82,78,12,54,192,44,187,186,251,148,42,94,163,126,165,24,194,201,2,214,12,43,169,71,240,129,112,72,167,240,158,172,39,168}, + {99,178,22,182,239,234,125,35,159,66,171,186,209,123,118,224,11,69,254,146,107,161,56,136,71,75,17,219,44,126,113,84,220,7,99,191,3,101,201,193,193,6,212,177,205,203,254,216,210,35,105,209,45,49,207,62,95,44,107,113,194,79,20,225}, + {100,34,38,128,128,148,254,65,214,132,178,41,238,240,90,10,17,143,198,197,127,206,215,12,123,206,208,30,14,246,99,19,139,203,193,68,22,254,140,202,15,216,91,204,191,170,12,14,46,97,122,125,22,76,58,193,107,144,150,183,171,79,182,223}, + {123,72,158,227,26,114,128,145,114,68,47,169,122,114,45,115,87,210,162,128,220,156,134,207,8,103,188,98,239,180,254,130,196,161,55,120,29,135,185,193,225,234,124,3,228,184,67,6,45,223,97,196,103,184,255,55,226,251,195,5,13,174,71,84}, + {148,247,18,61,196,62,30,231,88,78,138,216,177,42,241,63,36,190,179,75,129,243,6,37,45,250,164,109,113,2,80,168,4,229,102,60,163,187,60,236,98,148,209,31,111,132,149,132,98,55,213,26,196,250,93,204,246,208,5,130,119,150,237,197}, + {148,90,102,253,3,231,219,57,125,134,201,70,150,175,163,102,241,146,106,178,238,63,181,137,67,40,129,51,253,221,199,233,19,221,19,131,184,129,26,59,38,254,200,9,188,237,193,190,42,174,242,77,47,208,79,121,97,115,65,38,182,138,226,43}, + {55,25,138,113,191,122,65,36,56,90,159,163,98,107,207,121,24,48,142,145,223,185,233,87,56,78,188,238,2,109,63,154,77,199,116,1,13,114,68,196,150,185,202,51,89,115,148,219,37,146,244,48,186,76,173,85,236,119,131,63,54,231,136,137}, + {229,131,107,164,150,112,180,120,32,75,164,171,35,123,110,80,117,178,73,46,51,96,30,168,211,198,50,132,26,115,135,129,184,89,121,248,151,151,143,14,144,214,173,222,21,107,49,172,33,65,126,226,9,74,180,71,119,42,205,75,241,44,96,53}, + {208,89,187,110,197,252,151,175,29,94,45,218,31,104,26,128,77,159,195,43,218,180,225,217,4,135,104,20,211,127,82,188,104,211,47,248,34,95,33,236,210,135,114,82,191,137,29,21,78,89,193,8,24,232,65,184,191,182,226,187,89,74,156,159}, + {74,60,135,0,80,192,192,50,162,223,119,229,210,135,96,124,210,3,163,224,85,110,133,142,78,5,175,47,21,205,161,68,36,95,3,69,167,236,25,15,11,228,96,68,49,127,100,173,171,51,158,53,158,147,195,4,52,71,36,22,15,102,245,229}, + {33,141,131,2,245,139,100,221,114,7,48,126,162,9,43,8,71,145,203,42,25,229,22,188,130,248,90,97,237,96,173,36,137,106,174,68,47,188,161,60,31,103,235,172,182,173,252,187,25,195,118,79,227,33,72,154,241,207,78,167,157,255,124,135}, + {132,255,233,216,109,244,132,116,3,114,150,129,0,115,45,125,4,109,51,48,74,217,61,218,127,65,93,242,100,153,184,159,53,247,158,48,94,155,222,31,105,222,39,214,93,215,30,152,16,254,147,6,235,220,167,252,207,32,234,45,78,214,218,142}, + {41,105,47,26,224,127,209,84,173,217,44,126,201,17,27,227,176,212,218,21,15,1,13,217,204,97,236,50,10,5,177,251,44,77,121,228,54,24,5,52,139,254,233,72,223,171,151,57,160,31,0,240,114,85,15,99,96,84,71,155,129,221,172,196}, + {186,230,120,240,153,228,255,40,111,24,10,201,119,19,195,4,179,96,15,159,140,227,27,158,80,83,68,142,234,17,66,132,144,91,82,156,114,74,80,204,203,129,128,178,174,140,208,126,115,70,26,102,110,215,68,163,112,71,200,95,124,2,35,53}, + {64,3,111,151,32,171,146,43,9,222,61,190,16,220,45,182,70,21,254,219,108,238,98,62,171,197,65,106,177,204,196,23,112,8,217,134,114,100,196,255,212,160,129,98,179,56,57,156,170,105,54,213,211,13,64,249,193,204,111,154,142,31,107,147}, + {117,92,12,66,198,142,243,156,235,73,160,92,74,29,71,247,87,106,69,13,137,237,191,5,116,40,185,67,158,43,97,171,231,143,212,235,34,189,110,14,103,111,181,110,17,100,179,122,236,88,140,8,195,41,86,46,44,64,79,136,177,240,171,232}, + {181,106,32,120,51,1,41,131,131,28,250,13,43,95,134,224,107,41,190,248,24,24,221,9,51,40,26,78,216,99,97,157,26,141,178,222,219,206,48,87,48,171,23,21,170,228,1,123,135,197,36,180,89,58,255,39,197,250,92,153,87,159,174,42}, + {147,83,86,182,164,153,7,102,179,135,151,29,181,229,35,237,37,135,214,186,200,214,38,170,161,48,177,151,214,138,4,77,16,61,196,109,124,37,168,148,196,135,171,183,248,148,207,235,178,249,42,49,201,67,131,251,59,229,250,114,138,218,51,74}, + {163,46,165,194,103,59,155,215,196,39,160,145,73,73,65,54,105,217,191,223,4,177,130,60,33,179,143,227,129,115,82,50,80,114,232,55,114,250,173,196,191,60,103,35,46,37,80,139,184,157,140,102,87,47,109,103,222,36,190,207,103,170,14,62}, + {125,133,43,156,71,142,210,18,147,227,231,103,155,97,182,54,14,217,87,44,22,205,195,103,84,111,163,115,38,179,110,123,65,71,196,248,12,128,175,250,188,211,214,219,50,44,227,25,38,114,33,4,184,192,234,43,200,185,191,59,81,205,194,186}, + {182,217,112,132,144,80,215,11,17,135,111,56,195,9,127,152,242,219,220,8,79,66,69,138,23,144,142,198,170,4,182,204,168,107,213,58,255,102,213,98,79,232,244,234,202,116,55,119,2,109,229,136,94,84,145,68,134,90,219,162,100,161,241,58}, + {77,185,124,132,110,182,163,171,9,84,195,224,241,33,166,104,200,224,124,220,2,247,253,229,90,195,241,39,166,111,133,137,242,191,77,90,113,187,235,206,143,55,212,30,21,239,1,14,72,135,145,26,117,125,110,156,230,234,121,79,149,226,239,171}, + {154,127,88,106,16,99,113,32,174,106,175,6,245,4,4,99,2,17,112,93,69,171,61,104,72,12,204,134,230,100,40,91,202,185,10,220,74,101,181,17,160,86,229,113,147,187,82,37,83,116,10,89,31,251,13,153,120,113,4,255,70,172,141,164}, + {172,255,143,238,161,97,77,184,85,133,183,232,13,188,173,62,199,86,201,254,104,100,0,190,36,73,234,185,109,127,219,108,168,41,215,154,74,226,247,220,204,143,29,5,239,189,107,112,131,31,122,60,201,207,233,90,185,11,94,169,219,143,109,75}, + {221,8,203,31,191,214,102,172,167,210,182,29,237,249,238,113,17,25,179,31,88,185,11,73,156,126,136,35,12,33,78,53,13,6,245,177,142,47,101,115,218,78,116,95,24,179,205,230,151,235,122,13,141,172,222,80,246,16,83,63,67,121,14,254}, + {229,194,241,187,240,85,31,241,8,27,107,112,42,149,42,151,219,112,226,18,75,29,170,89,62,10,193,103,162,22,62,77,174,176,188,253,200,208,45,252,80,228,248,154,93,110,32,136,109,206,120,81,121,123,182,54,234,227,20,185,8,33,94,231}, + {217,14,58,211,26,112,231,63,85,116,31,223,128,20,132,12,6,254,94,119,98,235,63,237,17,243,208,6,12,84,71,2,205,184,206,58,57,54,51,191,45,116,206,86,216,46,230,36,16,85,148,158,218,117,188,30,107,51,44,97,46,191,11,217}, + {80,152,218,3,109,117,203,246,7,252,99,27,24,236,82,18,96,197,225,175,239,50,105,124,160,51,41,226,16,152,79,208,149,67,40,177,146,49,68,201,224,235,131,213,120,75,13,254,155,42,183,146,87,23,28,234,118,245,203,112,150,115,29,60}, + {185,77,77,223,206,157,10,7,169,243,7,4,37,167,233,252,178,151,25,104,174,148,140,23,136,13,4,72,206,131,226,44,165,215,100,196,134,13,153,146,165,167,171,8,128,76,42,49,119,133,245,90,223,84,49,97,220,27,142,208,157,23,251,194}, + {219,140,78,5,84,69,165,203,45,58,107,145,62,194,32,73,189,116,185,110,20,199,99,31,58,66,197,229,75,200,197,133,51,219,54,78,128,93,6,137,77,14,100,66,151,134,27,213,90,198,96,39,242,22,42,105,60,94,117,244,79,199,39,161}, + {28,91,39,252,22,160,118,163,11,72,96,252,116,64,205,238,72,240,240,22,11,153,192,231,2,239,53,153,22,220,62,204,240,160,29,153,159,38,228,198,68,93,76,198,24,101,236,248,78,188,254,32,91,220,229,199,244,102,218,119,129,235,57,137}, + {8,215,69,175,190,91,61,154,122,188,236,45,218,42,35,188,55,59,206,194,92,29,27,241,147,4,140,121,93,96,72,23,67,229,224,219,230,60,46,25,83,233,159,20,124,204,145,179,136,202,51,245,64,167,192,22,154,38,117,172,168,176,210,57}, + {202,107,222,180,137,7,69,200,180,223,7,81,238,34,136,201,102,255,182,134,7,211,86,125,129,28,211,148,95,129,130,150,71,209,35,245,22,222,127,230,30,247,203,16,172,109,220,77,159,21,82,130,183,252,154,90,82,173,0,56,177,146,219,119}, + {18,225,215,0,251,197,98,192,148,176,44,68,37,77,147,79,188,61,22,146,140,204,205,95,240,3,105,182,83,84,13,206,185,123,112,245,253,240,35,197,155,190,163,197,206,193,131,44,95,34,255,100,122,58,49,171,31,125,147,252,246,218,178,147}, + {201,21,201,17,52,212,38,10,80,238,68,212,119,216,232,160,210,104,42,253,106,146,9,88,32,160,158,31,20,188,219,182,234,248,46,122,182,168,15,131,53,235,93,37,45,153,220,116,100,158,219,241,173,119,107,56,88,119,138,220,121,57,125,79}, + {63,227,207,135,56,61,10,92,82,205,66,150,195,234,161,81,162,85,218,182,11,108,144,35,109,57,149,115,58,207,172,254,138,212,231,103,182,143,6,242,123,120,24,229,87,76,167,155,164,139,187,71,195,9,5,101,228,204,87,22,154,16,54,177}, + {62,130,84,46,185,146,127,149,43,141,48,244,117,214,138,57,135,203,144,143,94,209,36,20,74,86,231,91,173,66,241,61,210,244,108,105,88,64,122,99,134,100,4,95,145,136,161,125,33,27,26,97,161,64,197,221,179,89,70,47,8,240,87,9}, + {131,82,74,109,156,216,73,104,21,80,164,21,153,27,202,143,174,42,126,131,9,141,217,137,171,0,152,112,129,50,131,16,245,163,226,243,52,54,254,196,82,132,209,45,219,75,21,180,6,90,82,50,215,82,182,139,148,29,205,6,145,73,225,7}, + {31,189,85,46,120,235,185,72,86,83,2,215,60,148,244,67,107,25,76,57,202,254,11,161,74,42,255,169,144,160,54,4,211,1,215,88,162,156,178,237,119,118,189,215,55,225,90,162,87,208,220,144,204,80,149,117,241,15,10,156,237,9,189,95}, + {22,233,36,77,152,106,18,224,247,125,69,231,202,47,119,217,150,135,56,107,123,4,174,152,140,30,253,77,231,132,105,60,153,33,183,79,194,42,38,161,60,132,35,58,5,86,33,209,26,6,56,94,250,147,122,235,254,107,219,253,149,199,223,171}, + {217,205,183,237,25,111,74,88,56,26,133,189,95,232,97,113,181,7,143,135,12,24,91,202,201,20,3,151,164,169,240,244,16,241,203,83,68,68,233,172,42,155,91,17,209,163,186,226,120,93,0,78,127,48,119,65,91,35,158,246,42,25,166,253}, + {70,8,121,86,214,95,183,13,153,166,125,182,114,171,19,193,183,197,254,10,250,30,11,136,24,87,161,150,41,229,128,235,0,81,246,60,155,8,159,20,167,67,169,116,5,159,168,8,95,78,159,24,213,188,233,219,154,230,86,221,148,186,250,8}, + {80,52,175,207,226,66,13,172,73,22,94,170,255,85,169,173,30,24,71,217,175,44,235,120,86,118,114,244,226,83,20,57,66,54,73,222,143,185,53,148,239,249,254,134,56,192,199,213,240,58,192,222,160,150,136,108,212,5,196,23,97,125,214,137}, + {34,28,32,188,19,79,105,28,217,120,58,105,155,5,240,84,212,112,53,96,181,196,75,226,194,255,39,52,228,133,93,15,248,125,74,175,65,110,142,200,240,85,203,228,180,175,14,241,111,51,170,182,38,79,199,122,159,197,215,128,222,203,173,33}, + {196,30,2,236,127,231,171,72,102,24,135,192,165,170,12,166,204,36,198,108,63,144,18,82,69,6,138,133,44,235,18,208,22,44,99,173,218,140,152,55,58,37,152,44,209,123,127,131,251,112,55,207,124,155,176,92,143,119,26,216,46,126,46,54}, + {168,126,130,120,92,49,253,62,221,48,72,21,60,167,54,196,57,7,79,167,208,175,156,24,174,178,119,212,168,242,112,57,7,235,20,34,19,227,213,81,48,203,64,68,240,212,189,49,219,226,149,140,165,28,65,199,164,251,223,206,28,32,92,143}, + {32,237,46,139,216,17,186,119,137,188,111,30,163,114,226,156,254,153,239,143,41,207,153,238,164,36,2,181,143,158,85,221,35,16,234,159,168,85,19,209,22,179,139,212,109,44,109,147,212,24,24,50,12,75,225,83,204,169,96,65,136,48,218,118}, + {40,218,149,81,94,146,168,65,8,150,28,186,227,251,74,223,107,69,146,38,73,140,219,28,123,123,1,99,159,13,238,223,76,207,86,54,169,68,1,60,248,46,83,162,220,123,16,128,128,64,135,132,25,101,247,241,63,134,234,24,53,35,136,28}, + {100,70,73,202,65,63,221,64,142,253,30,183,0,213,125,11,230,49,141,197,253,168,167,64,45,16,171,246,235,202,89,176,109,91,178,1,197,94,3,225,36,7,224,202,116,120,225,226,192,121,201,200,144,232,117,207,27,11,52,172,181,18,151,85}, + {110,247,15,160,173,143,29,98,33,158,214,211,230,168,51,179,145,82,220,48,245,5,198,43,47,201,75,89,228,209,17,151,241,122,221,103,29,248,111,175,79,217,162,187,15,167,147,226,223,86,177,86,7,173,206,35,128,178,93,205,187,4,85,40}, + {35,193,250,135,44,212,74,90,178,24,47,120,195,50,130,58,229,154,2,218,140,49,213,66,67,234,54,142,204,49,56,108,25,51,207,130,229,86,34,57,207,89,195,93,220,53,16,181,100,230,242,57,198,36,184,105,66,205,149,116,122,15,86,176}, + {252,25,214,248,57,106,26,57,18,120,222,88,72,128,132,203,29,69,199,252,48,93,125,1,226,150,251,33,50,255,234,35,74,147,172,144,12,110,118,181,157,163,182,254,217,106,13,224,164,143,82,231,240,9,150,120,29,31,145,112,206,59,232,74}, + {57,174,130,202,195,172,162,247,173,6,57,143,182,197,132,91,223,68,7,202,151,153,250,41,88,173,42,138,54,202,153,211,63,246,223,21,179,154,98,63,80,108,19,237,3,65,249,81,165,42,229,63,186,211,221,213,144,94,164,101,52,81,198,248}, + {57,43,110,221,229,5,165,60,106,201,77,88,176,136,76,239,133,43,87,58,151,113,79,102,226,110,140,151,150,137,202,175,67,74,235,68,53,104,66,75,105,252,96,247,81,210,1,223,164,52,140,13,225,162,49,161,104,73,126,44,39,55,180,184}, + {145,240,119,47,131,242,187,0,64,208,92,64,100,202,11,239,173,98,30,150,208,137,115,168,117,73,229,69,36,178,252,67,140,197,81,52,223,122,155,215,201,71,77,239,177,66,142,27,119,38,50,164,62,63,185,32,8,26,235,132,52,242,176,6}, + {98,91,204,191,253,254,221,229,8,163,12,51,234,1,55,251,20,245,103,148,119,39,58,170,107,90,148,161,130,109,101,197,48,109,231,228,52,215,129,98,42,74,224,200,154,108,220,84,68,176,41,64,10,16,235,190,31,20,187,81,85,17,147,160}, + {174,103,43,172,245,59,42,159,77,22,126,7,135,239,60,159,232,253,153,233,13,246,80,195,227,202,10,117,182,87,70,27,61,71,242,34,107,44,27,115,107,136,18,51,180,126,116,247,143,226,97,250,165,6,100,229,35,26,5,74,201,89,179,163}, + {45,209,204,223,89,219,38,253,214,42,25,169,12,132,117,18,33,16,208,207,25,208,254,178,24,28,124,111,56,208,174,181,233,231,1,70,30,147,131,105,128,87,105,109,183,14,13,107,192,61,124,183,193,113,88,188,165,49,165,32,143,108,62,228}, + {231,156,170,159,6,15,151,219,172,83,236,248,154,9,17,84,215,157,163,110,158,125,184,79,76,45,179,87,35,181,76,200,153,224,184,50,241,178,66,117,138,203,119,219,135,57,121,49,232,67,145,171,225,71,166,239,238,42,107,197,154,90,173,236}, + {50,247,253,97,73,246,90,67,42,143,253,50,38,9,230,53,186,232,66,247,94,143,45,168,207,37,4,228,119,244,115,12,238,165,59,212,215,125,9,184,64,144,19,122,151,36,172,160,129,76,53,223,121,31,78,234,176,100,182,26,134,211,242,154}, + {30,101,15,157,189,172,165,131,240,34,215,194,23,151,0,228,250,214,203,172,245,110,23,66,130,171,80,80,17,46,113,145,157,148,51,135,124,34,189,88,10,197,201,138,33,47,32,165,44,91,6,63,68,103,40,69,104,82,53,109,142,9,50,142}, + {208,55,1,142,177,235,117,146,32,1,150,1,42,245,168,187,122,149,231,1,100,59,219,132,208,25,115,168,77,66,168,135,122,123,100,86,182,153,24,208,130,205,229,210,171,213,103,99,116,89,14,237,182,89,68,34,94,119,157,158,167,227,146,7}, + {174,19,225,239,99,235,171,67,252,203,111,89,70,191,78,160,67,207,89,45,97,65,157,181,192,71,30,17,157,88,250,157,72,233,119,250,17,155,185,245,6,29,195,231,179,75,99,105,120,180,238,22,108,23,209,64,68,191,196,202,222,102,113,91}, + {223,49,126,77,20,195,177,169,138,58,93,60,156,173,246,233,210,113,14,106,67,65,140,135,8,90,113,120,71,78,34,183,245,238,77,36,212,207,135,141,84,181,82,66,214,76,198,248,174,127,112,28,75,105,80,150,56,158,105,196,41,92,26,38}, + {16,229,152,52,91,209,227,123,46,97,82,249,78,206,57,87,41,214,101,205,226,127,54,24,235,212,228,60,244,83,88,234,159,252,118,223,17,234,9,2,161,13,8,169,17,46,229,242,145,175,90,30,26,125,209,30,65,127,25,89,58,121,55,174}, + {21,231,105,231,44,71,76,74,203,41,174,117,239,113,119,38,152,16,98,124,223,129,88,212,30,25,45,96,14,107,224,80,22,170,235,84,18,247,111,83,218,61,155,108,29,234,51,234,241,183,145,134,199,148,53,82,192,172,153,114,30,6,148,76}, + {148,2,167,106,31,108,121,135,161,188,115,241,153,172,42,97,175,5,48,2,14,186,111,167,215,20,4,168,179,193,8,68,189,12,52,139,205,215,253,164,41,234,118,169,183,62,120,117,2,54,189,83,88,230,43,250,157,170,172,75,128,19,225,134}, + {23,235,7,102,40,138,93,190,228,0,160,65,16,41,89,206,240,6,32,182,151,228,184,3,84,222,243,46,137,238,116,31,178,33,32,23,167,25,46,128,40,149,188,218,205,142,131,142,127,55,55,162,174,155,179,198,195,188,173,179,130,111,91,229}, + {189,128,246,208,219,162,86,50,58,105,113,118,28,126,174,187,81,99,143,98,250,31,26,77,200,23,196,8,39,110,79,171,168,79,93,108,199,246,186,213,81,156,243,35,231,15,180,80,234,113,190,248,218,112,200,196,196,235,231,213,113,91,107,131}, + {216,6,153,30,119,43,161,143,94,58,213,122,144,21,151,19,4,44,53,14,85,183,83,79,109,61,243,213,28,172,137,215,193,2,233,184,170,220,117,4,244,190,250,31,51,111,87,177,114,42,214,113,118,233,43,85,244,240,114,168,109,85,31,168}, + {31,105,14,223,25,63,94,242,23,113,182,211,84,176,99,225,13,233,177,228,149,57,187,47,37,92,13,148,39,223,160,127,20,45,128,210,91,79,144,17,28,151,37,78,221,193,78,89,148,190,222,32,209,187,210,216,32,246,200,72,245,135,82,242}, + {118,153,217,101,129,47,177,126,188,230,81,218,164,92,44,14,195,41,25,86,148,100,240,82,110,248,52,153,142,137,134,189,80,81,135,189,238,82,172,91,114,183,37,205,3,172,97,248,202,83,44,46,103,87,110,40,40,62,75,176,254,225,89,222}, + {64,236,220,69,109,44,49,144,204,200,200,199,235,251,164,226,249,127,149,49,40,154,206,80,155,116,18,46,71,32,57,154,226,140,228,12,9,103,96,21,72,31,131,227,186,72,107,236,12,246,153,155,158,172,74,5,38,140,238,227,139,90,212,9}, + {32,4,111,207,85,246,33,102,204,70,209,221,97,120,208,86,232,185,48,34,195,39,26,175,103,31,143,20,91,122,41,11,59,184,191,206,96,246,86,73,149,30,49,83,131,132,188,124,156,207,216,43,246,117,200,16,201,88,144,134,177,185,46,158}, + {82,46,166,167,200,0,30,35,158,165,198,238,150,104,23,94,99,48,179,164,77,240,111,212,123,234,130,242,49,104,7,149,165,248,79,102,204,252,84,245,116,24,132,193,65,242,46,166,245,250,85,16,13,163,69,69,251,148,127,16,246,87,138,52}, + {245,232,216,44,174,188,125,199,173,57,11,111,151,62,201,81,205,223,144,222,94,222,15,93,232,144,125,0,32,56,219,222,112,216,220,250,160,134,102,53,154,189,36,219,124,117,185,36,207,101,14,94,98,220,255,38,81,148,34,132,248,85,125,128}, + {67,47,45,242,30,144,209,112,1,187,205,86,147,211,120,233,198,113,232,115,148,89,195,176,225,118,223,224,217,35,55,249,115,108,134,237,66,90,149,171,118,11,148,112,125,169,59,79,147,187,64,51,52,64,127,224,184,185,122,155,228,40,164,223}, + {200,211,214,156,145,122,173,119,182,126,153,4,40,74,164,53,177,7,66,35,92,168,88,106,159,134,228,151,134,71,153,182,186,88,138,179,93,199,8,98,119,7,106,211,37,203,207,86,199,19,79,0,88,106,105,129,108,14,79,238,248,5,80,80}, + {56,173,245,95,27,126,171,66,235,98,248,209,43,65,104,112,157,175,85,51,13,148,253,199,70,215,129,7,246,107,181,56,165,165,5,159,249,74,29,113,186,89,236,255,9,117,207,104,154,223,187,153,107,46,218,219,195,120,35,22,254,247,134,99}, + {189,181,92,6,239,201,182,204,32,105,23,226,16,116,125,76,98,61,8,66,187,236,63,102,158,143,109,160,178,182,103,160,135,179,2,130,66,182,17,162,203,77,124,210,89,56,131,202,235,234,109,179,143,176,35,243,54,29,24,139,201,18,237,88}, + {47,109,230,83,88,70,102,154,204,198,0,84,63,148,162,108,9,89,191,157,97,181,14,200,117,186,233,213,157,65,227,78,110,11,177,52,29,2,75,110,138,46,225,145,75,133,47,209,242,117,255,255,252,188,228,133,4,222,178,164,86,36,245,198}, + {129,248,69,248,183,248,157,253,233,226,209,179,189,228,232,209,217,64,45,47,74,13,85,106,173,132,33,236,212,215,45,180,167,215,181,179,217,185,19,193,170,13,141,244,133,23,21,71,241,249,66,148,36,121,145,218,247,151,181,219,79,156,23,40}, + {44,123,136,223,244,234,123,211,24,156,210,126,139,9,183,115,176,190,238,35,83,96,2,121,91,161,77,178,178,236,30,91,27,15,60,157,45,80,101,11,50,156,209,165,20,52,105,81,240,42,76,124,123,199,97,168,4,71,117,249,227,34,132,159}, + {129,40,162,240,217,149,138,189,149,115,86,75,224,32,173,199,101,252,194,198,87,87,192,145,176,119,125,31,227,189,168,101,193,177,49,70,121,74,159,99,243,142,201,51,76,184,70,17,223,4,145,136,19,173,255,108,83,42,255,32,107,138,8,193}, + {134,188,248,120,169,48,214,35,17,119,219,34,27,50,165,117,122,172,5,49,174,46,233,69,206,193,80,111,42,254,209,15,253,226,36,248,212,21,209,87,114,201,240,89,141,236,15,144,59,96,26,225,24,206,218,208,240,135,96,36,5,227,22,233}, + {101,27,214,108,4,187,138,220,26,139,245,139,219,119,132,37,220,220,230,161,190,141,105,50,213,227,128,165,194,65,215,211,228,159,51,70,194,236,131,100,21,149,22,88,162,103,48,114,59,10,214,67,180,167,35,240,33,119,236,127,244,78,159,28}, + {35,38,75,24,211,130,48,144,88,83,131,116,15,172,178,196,43,69,5,35,132,4,130,173,229,212,169,129,156,237,44,244,190,167,232,241,227,6,43,105,9,110,95,116,27,124,217,76,48,217,210,197,191,27,64,187,38,54,172,60,56,69,126,178}, + {49,61,210,7,14,203,122,127,119,177,137,151,91,75,127,60,157,14,156,209,185,246,113,25,18,163,172,236,163,181,21,243,72,100,164,133,98,118,95,161,6,86,171,68,240,92,116,195,251,51,83,65,121,131,87,235,244,187,72,241,145,166,51,246}, + {19,162,2,69,139,248,156,7,129,189,185,25,222,6,87,162,160,117,154,50,1,194,226,5,191,216,13,43,75,10,32,250,93,255,36,162,156,254,184,204,142,93,212,87,170,194,27,223,99,127,115,99,61,90,18,68,46,105,65,65,49,23,73,158}, + {124,217,192,174,189,193,52,54,60,134,142,225,134,255,36,169,138,206,7,203,6,164,252,59,111,166,254,82,222,195,79,137,65,38,187,207,126,224,170,85,204,159,88,119,101,187,127,230,64,183,229,223,244,6,56,221,81,129,236,151,242,144,103,42}, + {33,129,143,2,249,251,225,11,174,252,165,33,192,176,15,171,36,73,213,173,22,80,10,168,119,84,118,124,22,77,97,228,136,42,21,21,100,104,11,72,51,145,146,177,90,187,220,126,127,8,246,191,61,131,154,76,117,206,62,59,119,27,95,13}, + {169,191,221,149,202,54,122,116,198,40,77,146,201,86,54,122,88,193,253,112,198,116,199,49,150,1,252,63,165,195,227,187,45,84,216,250,101,72,136,138,38,108,205,124,27,96,31,125,224,229,163,216,175,27,147,83,229,46,182,69,82,135,111,118}, + {75,158,212,141,137,190,224,221,12,153,133,233,245,166,234,98,184,40,75,43,52,19,235,80,127,84,180,190,77,141,112,153,213,157,66,234,105,110,240,0,95,7,229,90,19,8,20,7,202,247,235,10,219,190,149,14,36,243,171,213,117,190,50,78}, + {189,66,146,82,5,114,244,103,117,13,48,75,158,218,203,94,17,174,97,122,100,121,211,83,177,65,68,21,96,191,213,17,92,166,156,131,214,155,70,220,221,119,166,204,66,156,3,159,86,136,182,31,74,119,173,88,124,163,152,125,145,116,38,150}, + {72,63,98,38,139,127,159,104,215,84,142,36,127,95,2,1,118,40,65,37,20,124,68,211,100,163,188,222,107,215,155,201,113,95,171,130,39,56,193,5,172,21,74,105,106,223,0,109,68,233,89,189,177,207,63,97,41,221,79,6,227,244,245,33}, + {207,225,224,157,112,58,16,87,103,236,241,29,43,244,87,185,87,34,228,55,86,60,121,242,251,74,10,133,243,121,125,247,29,14,201,51,124,3,134,118,99,12,81,122,2,54,231,200,255,97,45,187,154,248,44,146,86,176,21,148,14,49,167,87}, + {21,216,177,199,208,3,237,231,3,126,123,31,99,44,123,141,15,177,53,254,16,86,44,118,192,132,202,171,68,124,145,6,7,49,39,28,58,142,158,91,233,47,105,13,56,134,225,82,160,110,240,239,246,91,50,123,16,165,224,27,71,18,105,113}, + {154,175,84,83,42,230,253,145,200,52,105,36,90,27,157,80,11,58,52,223,50,75,229,112,132,115,226,5,186,48,195,17,28,246,224,192,217,111,163,77,223,122,173,2,202,57,173,150,11,31,255,251,107,67,10,81,230,38,254,236,109,240,52,140}, + {49,244,52,80,227,54,170,35,197,1,233,41,136,85,162,107,220,66,197,94,125,69,2,81,177,20,213,234,132,176,40,128,151,224,57,205,16,5,10,207,116,187,222,170,85,112,172,154,133,219,197,27,18,209,241,126,165,22,53,86,59,124,253,127}, + {120,124,213,155,64,247,233,28,34,0,236,124,71,120,181,162,221,17,21,147,26,63,95,130,214,251,206,250,248,120,84,179,61,60,114,197,47,61,83,196,68,201,36,139,96,23,46,140,229,175,118,185,14,248,81,137,176,34,223,109,52,39,1,45}, + {247,60,8,85,13,168,100,104,208,78,233,253,181,241,126,39,88,192,183,247,20,206,92,27,181,225,173,197,207,60,225,188,36,121,246,132,242,171,68,137,74,188,232,3,236,199,223,129,9,66,239,179,130,214,81,80,189,11,159,14,19,71,28,102}, + {173,2,26,76,99,98,143,145,20,160,224,76,67,34,238,93,156,132,46,85,86,209,216,131,24,158,17,234,107,146,7,160,169,127,23,125,94,190,194,15,233,243,211,240,4,54,255,178,1,111,60,124,224,198,62,215,246,246,91,75,186,3,40,116}, + {181,230,0,6,52,90,138,97,30,36,17,66,143,124,185,40,91,122,144,32,83,130,70,247,95,125,210,63,85,144,93,94,41,15,84,112,190,32,201,11,90,33,38,20,83,12,42,209,15,176,27,15,0,145,236,140,175,55,140,83,26,240,222,185}, + {23,155,225,234,242,251,40,70,86,15,1,144,6,248,79,239,77,228,153,113,105,42,141,9,96,172,148,172,92,61,106,11,213,155,162,158,236,26,34,223,128,39,195,130,9,212,51,184,81,187,111,21,180,168,128,34,5,254,234,143,66,19,156,58}, + {152,111,109,47,40,127,35,30,131,10,52,91,29,219,13,158,44,102,85,89,178,216,212,69,226,230,182,178,89,90,37,251,12,144,12,50,94,154,197,173,236,183,3,48,58,140,78,109,186,195,125,197,189,135,125,243,40,41,83,15,186,55,218,196}, + {116,171,220,41,71,93,211,173,236,54,245,165,118,169,19,29,41,82,28,18,128,109,222,48,77,216,177,123,213,176,177,65,146,230,85,115,58,95,180,5,63,133,226,125,224,219,206,220,171,170,255,23,109,87,168,13,224,101,141,40,89,202,135,74}, + {31,165,231,132,226,216,117,89,158,21,111,163,122,68,229,19,45,121,69,116,187,238,153,214,62,43,16,19,115,177,176,19,109,197,89,42,165,73,6,240,205,204,152,137,190,197,99,78,196,197,32,75,149,147,115,11,10,84,182,116,71,95,149,163}, + {93,4,129,147,199,144,87,228,143,218,222,104,250,231,147,88,60,200,82,14,65,57,232,160,77,209,36,86,218,164,12,90,106,52,80,4,223,251,245,186,110,24,150,26,87,147,44,184,247,73,247,109,199,39,50,128,21,33,91,90,170,194,152,66}, + {55,117,164,78,252,232,15,132,117,2,12,106,207,128,62,101,231,116,105,24,45,44,187,245,111,65,230,78,133,235,207,77,74,208,107,149,117,162,114,54,152,173,135,248,26,38,72,8,80,239,38,168,105,181,81,120,134,230,113,79,249,128,187,30}, + {116,134,97,169,66,106,96,56,232,85,195,216,46,214,27,156,136,4,84,62,4,92,15,166,254,33,128,38,117,119,110,21,18,76,177,97,85,144,159,87,38,134,252,5,188,128,142,104,239,134,110,182,208,125,24,161,70,27,246,154,92,76,1,129}, + {108,101,49,157,164,169,12,88,137,28,178,88,234,220,23,144,52,193,94,120,185,171,221,105,253,232,67,110,141,101,171,170,49,127,140,120,133,63,166,154,140,24,210,116,69,58,67,254,148,203,99,196,212,189,213,249,255,208,115,247,53,133,170,58}, + {160,156,230,140,208,124,253,30,145,232,143,76,168,28,99,207,180,221,55,93,175,71,194,175,181,130,147,124,25,54,157,128,9,95,0,186,170,126,120,135,211,212,41,52,230,87,39,93,34,241,79,192,187,66,74,133,197,215,235,4,14,176,91,52}, + {14,7,215,232,122,60,209,240,119,149,95,185,71,34,29,103,114,150,160,49,179,190,49,146,64,76,161,144,197,6,53,160,185,25,221,46,8,47,209,70,83,158,224,34,248,201,200,253,121,97,61,40,214,7,79,232,173,222,198,33,236,99,59,239}, + {243,85,150,0,71,155,114,72,65,230,62,199,161,253,217,37,97,127,92,176,105,24,232,82,69,209,234,38,254,74,98,156,222,241,47,69,60,223,111,170,134,154,100,71,99,211,237,46,128,239,243,149,242,167,7,2,5,255,247,136,182,182,131,113}, + {167,136,179,133,24,29,48,11,41,59,249,73,213,30,93,160,198,94,54,164,174,130,96,199,241,221,205,155,218,153,252,168,209,123,112,66,176,104,202,91,184,70,194,61,170,119,255,96,211,186,189,115,247,0,185,13,26,82,181,39,129,144,89,18}, + {239,149,210,115,125,206,136,50,210,170,17,201,206,70,125,86,2,60,17,164,151,184,47,18,49,108,254,19,81,128,139,255,51,187,18,139,210,31,98,114,203,11,54,165,159,42,68,141,204,103,71,8,201,179,120,95,109,254,163,166,17,196,171,120}, + {44,183,123,252,220,112,230,38,97,156,179,226,109,106,97,129,166,186,7,23,235,103,36,114,135,184,23,23,44,83,151,85,14,121,52,122,90,27,35,145,228,60,66,110,250,48,218,205,205,150,23,231,204,87,47,165,27,245,247,27,66,128,204,155}, + {53,37,62,47,148,57,194,227,7,15,47,52,109,201,230,184,173,64,249,234,71,93,229,54,108,63,151,3,27,64,198,33,106,113,13,8,8,43,200,120,11,107,79,170,182,164,193,202,78,78,250,25,223,245,138,245,22,101,96,13,114,245,53,118}, + {135,171,221,169,164,163,154,89,163,251,160,219,4,113,192,175,150,219,84,116,107,217,153,25,119,16,66,148,40,240,103,128,58,255,214,156,217,207,194,19,162,57,230,0,49,223,217,108,15,113,135,168,14,73,124,228,119,129,90,145,22,149,242,207}, + {201,72,150,7,241,51,16,117,198,44,36,204,86,54,20,14,44,142,95,204,148,46,198,107,36,127,87,94,42,171,60,125,52,175,3,110,167,9,121,239,90,229,246,79,207,133,18,130,200,33,53,154,230,226,17,158,218,242,155,145,123,102,166,146}, + {59,24,87,186,197,111,43,119,184,236,82,245,124,70,20,49,192,252,241,98,91,156,234,107,72,253,127,55,40,67,175,195,37,152,90,120,94,66,14,11,123,117,89,38,211,91,65,21,68,15,46,252,87,83,207,196,146,19,107,175,175,208,205,206}, + {16,17,176,101,163,50,211,155,10,105,124,200,74,228,159,69,67,205,130,26,37,2,175,114,146,40,115,44,204,73,192,207,201,238,193,153,117,42,136,52,129,118,6,57,225,155,166,110,181,105,204,169,163,141,14,12,148,187,180,23,212,247,248,204}, + {71,70,112,189,61,249,226,103,119,81,55,193,235,102,173,41,178,203,101,252,118,255,186,122,134,233,126,46,145,199,231,87,185,31,80,252,226,127,40,172,117,114,250,165,20,69,67,59,11,71,107,46,146,142,87,103,136,42,62,211,52,136,231,235}, + {92,186,91,229,142,102,241,162,229,102,202,23,227,216,28,169,73,184,253,26,58,96,11,90,101,81,198,214,229,126,102,149,11,55,229,57,31,95,193,137,175,238,106,210,144,143,245,30,223,172,58,171,122,209,147,35,202,220,24,128,106,131,157,134}, + {183,165,249,6,25,14,24,81,209,126,139,87,46,69,203,192,186,25,74,52,101,37,40,51,26,209,20,205,30,185,249,80,225,243,143,106,108,99,171,79,224,165,146,164,245,0,204,243,36,137,151,219,170,228,223,70,250,153,247,73,74,255,104,40}, + {34,6,139,221,152,8,143,132,167,173,123,204,96,50,167,139,147,135,145,236,2,174,125,120,40,130,202,43,173,206,189,64,30,61,20,61,241,232,152,100,37,94,180,74,156,30,83,33,217,176,186,194,47,125,63,210,168,64,235,231,11,246,8,218}, + {136,12,119,186,31,200,77,54,218,46,120,55,79,161,192,25,125,186,34,204,187,161,120,167,15,65,164,224,206,147,188,71,37,173,225,208,174,60,250,69,152,179,137,145,153,0,137,160,56,121,243,230,196,3,57,12,170,230,157,77,68,125,20,175}, + {214,74,66,22,9,188,113,131,5,55,192,208,227,24,249,60,243,115,101,254,133,98,210,15,170,210,26,118,187,244,90,254,183,250,23,178,175,130,35,137,254,166,230,143,201,32,31,155,128,87,200,209,164,121,57,152,3,16,124,157,28,186,91,60}, + {232,217,149,40,251,197,92,97,37,169,175,76,159,222,112,10,18,215,229,39,72,57,116,51,43,126,180,160,69,50,17,160,207,229,63,19,210,78,242,209,186,68,53,48,189,21,60,180,74,128,104,110,121,156,98,192,107,70,21,66,243,13,31,6}, + {91,49,238,2,98,0,236,119,135,218,202,177,9,120,151,217,226,34,16,71,112,168,11,133,240,199,74,14,177,115,211,174,34,50,138,238,103,36,244,136,42,159,151,110,74,81,166,19,143,255,186,49,164,97,249,163,136,61,63,163,156,93,169,62}, + {31,128,135,220,89,29,198,45,153,253,66,171,202,139,22,121,10,232,41,249,252,230,112,128,77,67,235,245,215,46,52,103,28,211,57,124,197,131,93,47,183,76,55,197,155,61,14,251,66,152,33,231,178,232,39,196,106,55,240,156,170,171,170,67}, + {244,136,58,161,45,199,39,133,70,147,33,116,222,252,8,92,26,162,184,199,166,51,227,99,110,145,114,185,122,88,159,78,169,51,149,82,160,203,19,46,3,189,141,224,168,211,99,51,18,97,236,161,57,30,192,36,129,218,152,165,192,186,192,84}, + {221,43,217,181,107,94,231,245,81,139,114,166,95,34,125,236,224,179,241,125,15,65,35,130,26,217,204,138,23,41,75,237,71,148,60,153,116,3,124,61,254,20,142,24,221,105,240,82,164,49,181,240,114,71,99,178,195,64,219,16,189,234,187,49}, + {23,217,10,132,79,32,111,154,130,199,232,12,95,93,251,179,177,164,233,94,145,148,225,94,203,205,252,225,45,252,220,80,98,122,174,146,76,75,217,244,179,70,206,214,65,104,112,71,156,191,241,45,7,251,3,168,188,27,36,215,94,169,1,52}, + {83,73,96,96,81,137,174,175,201,89,8,14,51,142,180,168,191,201,176,253,175,128,63,184,16,100,227,192,140,158,227,59,125,167,178,250,119,204,134,233,182,204,34,10,27,226,170,79,125,254,17,214,246,121,102,218,139,251,39,32,222,199,179,219}, + {130,111,176,230,202,71,25,157,70,66,57,144,48,137,68,121,163,246,229,247,125,71,150,154,119,87,84,191,232,198,150,0,59,245,34,204,103,233,3,85,250,148,100,90,126,247,44,177,109,195,115,55,125,138,242,45,105,92,36,107,190,22,127,198}, + {5,27,94,67,156,137,28,208,42,231,22,27,30,97,150,47,77,79,99,108,37,21,30,234,20,64,41,157,239,48,180,65,182,255,182,45,35,21,35,248,7,115,206,250,189,122,238,67,51,182,90,118,87,54,178,97,196,195,121,235,81,119,101,0}, + {160,8,74,241,171,79,118,180,232,122,192,144,70,116,213,11,168,172,12,64,78,8,63,248,10,237,13,228,34,13,119,178,62,169,102,38,255,186,13,80,197,16,5,45,43,33,8,203,34,74,99,71,194,111,252,188,11,10,142,102,167,119,250,103}, + {213,229,158,73,58,153,203,229,84,106,17,74,193,223,162,36,177,61,223,213,9,87,62,139,101,247,128,53,74,21,142,44,184,7,69,165,235,111,177,93,58,198,15,124,104,140,99,134,188,114,248,219,191,186,229,213,102,203,197,255,13,220,120,225}, + {106,134,48,45,197,11,74,217,81,184,157,238,192,211,93,144,87,193,146,175,14,220,93,86,151,179,133,111,186,75,250,136,199,167,12,0,103,40,207,12,1,11,125,67,13,35,128,148,221,111,11,184,35,38,147,200,157,219,82,76,175,107,36,232}, + {169,152,51,152,200,212,26,135,97,97,231,240,96,74,226,98,106,199,51,182,182,3,8,23,247,207,184,102,232,49,5,226,53,201,116,45,48,77,11,110,102,4,77,232,25,227,143,182,31,21,104,51,215,230,191,101,37,126,167,1,237,182,222,28}, + {33,97,218,5,186,84,79,7,214,55,68,39,107,179,140,49,72,147,97,84,30,98,156,209,205,148,113,111,84,163,235,47,251,20,69,176,112,153,6,58,26,131,54,33,81,69,42,76,25,208,228,71,87,169,25,167,252,51,112,43,103,50,221,18}, + {9,171,48,246,207,159,173,245,48,120,164,54,103,205,201,106,65,178,70,16,127,225,10,154,159,92,211,57,6,82,3,170,118,25,236,146,138,3,125,77,19,164,211,87,203,124,70,34,146,105,195,171,178,167,157,230,249,12,244,63,129,15,200,44}, + {155,209,109,240,170,31,134,225,217,73,124,14,156,209,214,222,81,153,135,153,217,52,68,87,74,223,44,207,92,245,32,242,236,117,3,63,133,13,181,62,63,78,192,158,192,89,253,62,197,110,235,126,71,57,121,255,122,174,73,13,13,241,207,173}, + {239,116,126,127,85,130,165,209,168,210,28,253,119,136,89,76,220,242,152,217,34,208,122,206,172,32,173,214,13,114,128,85,27,112,178,175,119,215,15,194,39,248,192,86,42,107,67,88,208,212,118,27,92,186,220,185,255,245,148,30,62,249,207,161}, + {35,238,83,97,210,209,186,236,62,39,173,168,237,32,31,43,157,190,46,124,96,142,224,46,137,115,193,149,144,239,181,42,125,8,149,251,7,120,30,31,218,51,43,111,171,171,236,78,82,145,147,131,125,122,245,45,132,23,231,171,114,34,171,120}, + {123,245,145,41,166,71,131,252,165,84,241,5,1,20,116,95,57,247,71,88,87,62,16,201,67,46,253,19,98,218,135,128,10,219,52,102,197,78,102,147,182,14,243,200,193,23,110,24,215,168,100,37,114,206,249,117,80,251,185,147,148,147,110,148}, + {111,163,82,17,146,181,41,3,243,151,31,229,198,92,141,153,133,215,17,130,100,242,12,218,248,42,90,31,112,185,49,173,186,141,104,161,115,218,222,168,48,169,238,88,44,228,207,43,30,105,67,210,208,142,192,190,64,177,136,72,111,124,174,112}, + {189,2,145,5,203,165,188,69,95,163,13,167,3,60,65,144,184,206,159,13,31,171,252,156,16,194,103,198,79,244,255,142,250,187,6,26,54,43,41,144,183,182,185,103,34,227,181,211,157,49,192,163,184,133,72,217,255,216,132,13,170,37,102,125}, + {51,255,134,18,23,255,242,126,243,48,113,68,8,16,239,230,209,173,121,125,108,192,170,118,51,231,243,186,175,3,84,154,141,40,25,124,198,82,188,47,164,171,116,142,147,226,199,20,170,126,164,166,173,74,61,18,69,245,61,232,106,121,146,143}, + {155,73,5,159,11,242,211,154,225,185,149,87,66,68,156,148,109,170,73,167,40,162,104,254,63,194,14,116,239,250,169,189,184,211,146,158,10,52,98,98,137,60,62,42,9,243,101,218,102,218,201,27,156,204,218,179,127,56,9,55,28,52,238,213}, + {142,239,232,5,88,221,175,162,123,109,50,203,71,155,38,95,248,253,216,214,91,55,240,68,183,208,194,137,217,3,231,123,162,224,122,109,0,106,255,124,30,11,107,141,217,208,144,53,250,230,93,98,166,212,251,177,125,73,170,161,13,57,146,165}, + {155,164,0,58,39,26,147,254,133,93,92,48,130,207,60,6,233,204,157,168,148,35,227,210,205,46,20,132,89,229,15,7,66,199,72,197,141,217,26,113,89,64,17,220,254,131,60,149,101,138,88,250,37,180,175,99,122,122,9,192,99,25,46,63}, + {40,60,234,41,90,192,188,24,197,154,115,232,49,194,227,145,15,136,148,240,223,253,82,44,232,45,190,231,244,78,202,90,181,185,212,201,120,216,211,129,194,15,156,164,134,166,214,58,114,234,42,62,129,201,213,107,214,12,150,202,2,254,210,45}, + {13,252,126,55,152,99,2,217,145,26,173,220,250,69,153,51,131,184,23,208,68,125,146,181,212,83,225,172,127,156,34,34,27,159,94,110,157,20,25,232,124,17,95,3,246,75,47,124,64,106,49,25,64,12,230,236,100,223,163,86,206,238,97,108}, + {177,144,22,245,236,153,147,168,226,29,183,70,74,246,156,70,126,8,177,69,51,35,134,72,134,85,248,109,24,89,162,204,117,12,171,169,94,67,128,1,122,140,199,97,203,56,90,67,241,144,55,176,77,113,154,118,242,9,99,237,182,148,195,18}, + {249,78,160,157,57,88,101,3,43,82,91,111,125,75,197,87,124,23,126,211,78,15,142,108,65,176,92,91,61,20,189,98,106,153,188,169,164,29,107,185,189,37,213,38,199,152,203,48,122,107,79,47,29,65,249,57,65,39,89,239,80,104,12,203}, + {226,75,177,82,13,243,166,236,91,202,112,253,204,8,177,78,251,176,58,141,204,240,65,246,151,63,181,143,50,178,204,198,57,13,81,24,213,122,63,86,12,16,29,181,239,56,206,253,234,157,185,61,62,71,216,44,150,114,253,249,54,199,60,203}, + {47,205,253,217,113,222,229,39,102,159,189,155,85,40,213,158,91,121,204,59,197,173,36,245,142,79,69,133,232,23,152,94,69,177,59,126,233,150,25,65,34,156,14,119,160,89,34,201,218,249,146,236,78,83,170,157,119,44,155,246,234,71,50,230}, + {53,173,77,198,54,205,192,100,237,19,100,213,125,142,248,202,226,225,63,239,211,154,163,62,253,19,106,185,151,53,52,115,203,233,161,113,220,177,44,34,170,119,116,105,87,73,254,71,109,255,196,206,110,178,212,198,161,154,1,70,176,223,101,191}, + {82,246,106,134,160,89,219,146,142,18,74,49,130,60,181,60,207,126,242,60,176,139,135,53,65,110,12,97,128,255,11,75,159,9,137,129,117,115,123,196,21,179,99,174,233,50,184,28,130,213,143,128,182,15,58,220,10,113,187,227,194,166,135,88}, + {49,221,118,84,30,0,75,45,3,171,131,185,182,74,226,185,70,12,84,167,134,141,199,39,99,199,8,52,232,77,2,9,240,78,112,238,107,183,98,190,39,74,210,234,171,147,164,25,27,160,164,218,27,242,72,8,150,110,51,79,163,198,40,98}, + {247,168,137,173,170,10,227,83,74,20,183,235,68,13,64,166,7,181,253,160,56,43,134,244,43,87,121,10,233,208,240,178,122,247,103,172,144,76,21,97,20,93,5,196,188,143,229,204,157,63,4,77,77,168,171,141,218,102,124,170,30,166,95,8}, + {51,98,239,173,208,3,63,174,158,136,208,217,227,36,70,101,176,204,39,70,243,82,93,108,115,134,21,239,98,137,214,160,203,228,22,213,231,207,19,231,28,1,59,22,183,17,216,169,114,17,147,213,217,121,190,72,3,14,124,69,60,206,171,160}, + {111,7,226,59,200,106,221,190,36,201,2,146,219,147,218,137,32,91,187,72,6,219,229,115,97,107,173,64,142,123,122,28,72,31,205,226,40,250,40,247,33,64,84,180,36,69,46,97,0,35,23,194,158,5,144,203,45,168,162,166,236,41,70,207}, + {129,61,72,222,141,150,85,26,170,207,228,33,137,105,16,211,115,34,58,71,73,171,169,216,125,252,129,40,15,31,21,56,18,106,176,33,49,216,109,26,212,73,79,97,81,86,43,30,174,64,80,179,0,188,155,79,138,11,153,13,110,213,237,175}, + {209,17,79,33,55,134,253,134,147,83,199,14,59,11,168,14,45,16,196,36,119,135,77,8,152,218,98,55,254,81,228,13,142,231,35,236,110,25,108,160,153,128,164,186,155,251,29,14,107,1,253,202,46,61,94,246,170,134,222,25,65,95,110,101}, + {101,157,162,172,19,142,30,114,118,182,40,14,162,159,49,44,237,36,92,186,190,254,57,15,83,64,23,218,155,211,181,90,66,190,54,97,241,235,22,55,108,186,211,197,4,120,126,121,90,89,204,123,204,240,211,103,213,92,67,62,105,84,173,146}, + {238,251,68,84,101,205,149,174,128,1,40,159,141,164,14,133,156,32,18,136,178,28,0,146,244,168,55,110,43,153,61,215,119,142,206,230,28,183,69,202,197,101,212,43,22,142,147,224,136,152,12,199,23,44,56,115,1,125,240,114,162,199,184,95}, + {242,150,2,165,84,34,81,8,107,135,249,24,79,154,79,242,142,110,145,130,59,36,231,78,120,121,247,237,195,230,16,196,224,217,107,40,16,36,125,111,132,223,231,226,34,125,55,68,99,110,239,95,86,175,195,254,245,196,111,140,180,70,254,130}, + {192,231,21,241,26,139,85,34,175,61,240,104,52,214,36,95,53,53,232,102,99,41,63,229,28,252,196,85,59,124,125,95,173,80,173,154,6,108,7,182,232,234,69,67,84,41,216,71,133,181,134,11,247,212,15,241,136,48,230,39,217,106,173,224}, + {164,8,208,190,45,234,120,146,85,80,227,72,167,241,209,116,240,80,133,225,76,59,241,30,148,151,24,15,175,16,118,111,96,92,126,22,249,175,208,198,196,211,195,18,224,150,140,90,67,109,80,204,136,198,215,63,244,252,74,255,236,216,224,60}, + {143,68,129,48,186,217,28,124,178,53,148,75,164,38,16,58,21,177,97,27,228,98,104,59,49,159,154,179,23,145,191,190,9,36,90,228,173,33,59,159,119,198,226,45,207,50,27,103,113,137,240,67,50,59,251,147,91,134,239,122,166,37,6,136}, + {67,93,192,31,207,9,240,174,18,59,30,165,76,64,27,40,112,70,105,99,119,62,225,154,99,73,179,3,33,249,21,14,128,197,37,106,10,254,154,218,74,131,249,114,165,34,233,63,117,174,15,152,99,36,7,51,167,130,163,73,67,146,171,151}, + {192,3,32,202,44,212,135,27,253,102,83,247,102,120,34,9,97,46,96,214,13,46,146,219,117,109,182,22,239,16,44,217,92,157,26,91,29,83,156,90,75,141,187,14,145,91,234,237,9,156,69,145,68,148,151,19,235,236,106,207,245,145,180,2}, + {226,165,78,202,22,237,69,208,177,172,157,176,242,23,192,161,196,251,94,197,97,117,202,166,52,98,47,79,216,39,200,18,60,69,180,214,173,120,179,84,141,113,248,106,39,93,176,49,167,77,71,67,59,63,143,241,135,14,89,72,107,213,59,220}, + {98,9,78,12,22,50,70,109,92,255,65,81,205,129,89,30,144,247,160,216,103,106,119,11,167,55,101,207,183,94,94,241,20,138,73,41,70,20,70,42,95,186,118,151,177,240,148,227,203,3,216,217,152,182,91,61,192,210,188,176,8,24,101,18}, + {198,200,36,153,137,8,120,18,160,122,245,42,251,253,233,221,37,193,116,162,95,6,178,147,131,14,177,225,198,95,43,155,150,3,107,158,159,46,183,60,242,103,124,114,225,255,183,3,123,39,200,121,183,249,209,124,12,131,123,51,228,148,113,111}, + {122,4,92,214,25,28,246,55,44,13,231,113,24,72,149,92,51,68,240,203,18,0,70,173,78,32,167,134,92,104,199,99,82,80,25,88,90,89,60,254,168,86,220,244,249,64,247,100,86,186,152,178,81,255,159,104,33,37,222,251,64,229,139,118}, + {47,49,114,144,183,90,3,119,112,4,154,218,207,102,224,224,86,245,150,229,96,192,55,236,83,40,157,15,160,43,91,98,196,18,31,124,241,123,162,0,217,21,216,227,37,98,181,138,188,215,227,71,188,45,92,189,125,39,165,196,195,29,56,134}, + {30,241,146,172,103,176,178,250,28,84,107,190,117,45,113,248,38,195,142,117,188,59,90,202,12,50,59,150,8,127,46,10,0,98,116,164,225,118,172,253,66,13,56,184,43,136,53,215,42,201,123,82,137,196,84,207,167,173,115,7,46,234,24,169}, + {183,36,145,194,227,6,73,124,85,195,22,159,211,254,202,239,31,42,106,158,131,168,241,112,0,55,53,252,134,211,45,163,92,154,38,220,231,25,189,227,198,135,116,24,89,99,191,214,75,10,239,12,6,239,249,130,236,20,105,4,171,9,171,180}, + {252,105,66,142,48,138,13,125,229,34,10,52,33,36,178,168,209,198,250,99,118,213,133,59,112,228,72,58,83,34,125,99,248,182,162,8,173,237,39,252,41,107,173,253,175,1,243,205,54,4,227,49,243,158,54,75,166,50,71,242,32,128,43,56}, + {53,147,135,177,56,1,28,187,128,77,129,190,18,233,246,140,50,211,214,50,177,167,193,3,188,27,3,22,64,173,196,50,62,90,20,17,140,22,89,249,172,52,186,93,83,192,156,55,240,229,143,59,81,187,250,154,176,113,8,121,57,16,209,229}, + {115,157,44,194,143,197,141,255,115,244,100,98,189,188,176,3,245,227,18,1,123,25,153,126,152,12,80,95,178,190,166,105,130,18,233,201,16,143,63,81,204,37,60,1,223,64,181,69,58,142,3,230,100,21,114,9,108,69,172,65,19,116,43,141}, + {178,68,121,209,110,66,188,205,118,78,254,215,133,224,197,187,172,27,152,154,45,18,223,187,86,114,32,234,234,79,13,15,168,176,248,171,122,69,31,47,39,32,118,114,73,112,126,164,115,136,34,36,217,160,141,8,62,125,156,237,246,185,76,56}, + {240,255,27,241,38,250,76,228,158,7,147,221,248,113,166,106,246,42,149,165,56,70,159,192,228,40,109,4,11,192,66,0,150,39,18,29,185,189,242,126,208,78,24,182,9,196,97,88,132,231,62,86,159,121,87,203,23,245,191,3,38,74,1,191}, + {153,135,153,14,56,81,112,25,105,144,201,54,149,227,71,108,165,69,42,37,221,40,119,233,21,121,69,29,72,8,90,241,61,133,7,196,188,243,146,217,27,5,169,165,39,252,4,61,30,248,195,193,222,228,125,190,52,136,10,142,25,142,107,237}, + {48,5,107,58,208,171,249,81,154,62,223,87,244,189,219,53,205,20,169,78,214,244,241,95,188,168,10,113,165,206,250,170,52,0,214,38,175,25,185,172,86,29,221,50,106,91,251,113,252,3,71,130,17,171,229,225,224,240,177,246,240,196,81,225}, + {33,141,171,29,83,96,74,60,127,75,23,102,142,180,122,239,151,68,217,225,60,67,113,22,34,165,46,215,59,107,90,51,96,57,235,150,252,246,20,58,157,199,253,208,84,82,21,160,135,79,71,226,160,154,21,141,207,48,154,98,227,104,42,239}, + {36,132,131,161,6,44,29,171,56,19,123,216,248,2,24,156,199,90,205,235,85,197,174,120,168,157,201,226,109,140,163,26,133,171,111,70,3,234,111,13,180,161,107,87,111,166,135,177,141,217,148,51,254,186,133,191,73,32,123,177,71,102,109,44}, + {131,11,253,0,145,245,180,242,40,201,7,4,79,35,114,208,205,57,67,154,232,69,11,36,44,6,180,171,58,76,160,253,103,171,128,120,83,178,220,182,8,122,246,240,138,94,209,37,147,44,6,106,189,209,179,242,138,241,254,39,86,126,213,74}, + {60,100,129,116,104,189,53,213,124,61,79,238,202,162,13,175,145,170,76,90,153,56,142,208,59,242,142,187,246,148,66,1,189,127,207,75,215,223,206,162,82,192,70,135,92,14,242,205,88,96,36,128,158,230,202,9,97,7,174,69,91,170,130,86}, + {210,201,20,91,78,203,250,194,97,138,185,65,190,198,76,249,191,142,203,115,244,13,29,213,165,128,55,102,107,173,175,44,62,162,1,28,138,130,144,175,12,200,166,112,31,102,255,223,32,107,88,58,114,85,249,15,63,218,244,184,91,170,160,81}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {235,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {236,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {238,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {239,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {216,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {217,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {218,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {219,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {220,167,235,185,52,198,36,176,172,57,239,69,189,243,189,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {197,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {198,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {199,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {200,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {201,123,225,22,79,41,55,8,131,214,230,232,155,237,156,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {178,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {179,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {180,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {181,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {182,79,215,115,105,140,73,96,89,115,222,139,122,231,123,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {159,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {160,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {161,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {162,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {163,35,205,208,131,239,91,184,47,16,214,46,89,225,90,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {140,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {141,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {142,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {143,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {144,247,194,45,158,82,110,16,6,173,205,209,55,219,57,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {121,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {122,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {123,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {124,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {125,203,184,138,184,181,128,104,220,73,197,116,22,213,24,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {102,159,174,231,210,24,147,192,178,230,188,23,245,206,247,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {103,159,174,231,210,24,147,192,178,230,188,23,245,206,247,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {104,159,174,231,210,24,147,192,178,230,188,23,245,206,247,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {105,159,174,231,210,24,147,192,178,230,188,23,245,206,247,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {106,159,174,231,210,24,147,192,178,230,188,23,245,206,247,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {83,115,164,68,237,123,165,24,137,131,180,186,211,200,214,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {84,115,164,68,237,123,165,24,137,131,180,186,211,200,214,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {85,115,164,68,237,123,165,24,137,131,180,186,211,200,214,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {86,115,164,68,237,123,165,24,137,131,180,186,211,200,214,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {87,115,164,68,237,123,165,24,137,131,180,186,211,200,214,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {64,71,154,161,7,223,183,112,95,32,172,93,178,194,181,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {65,71,154,161,7,223,183,112,95,32,172,93,178,194,181,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {66,71,154,161,7,223,183,112,95,32,172,93,178,194,181,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {67,71,154,161,7,223,183,112,95,32,172,93,178,194,181,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {68,71,154,161,7,223,183,112,95,32,172,93,178,194,181,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {45,27,144,254,33,66,202,200,53,189,163,0,145,188,148,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {46,27,144,254,33,66,202,200,53,189,163,0,145,188,148,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {47,27,144,254,33,66,202,200,53,189,163,0,145,188,148,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {48,27,144,254,33,66,202,200,53,189,163,0,145,188,148,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {49,27,144,254,33,66,202,200,53,189,163,0,145,188,148,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {26,239,133,91,60,165,220,32,12,90,155,163,111,182,115,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {27,239,133,91,60,165,220,32,12,90,155,163,111,182,115,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {28,239,133,91,60,165,220,32,12,90,155,163,111,182,115,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {29,239,133,91,60,165,220,32,12,90,155,163,111,182,115,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {30,239,133,91,60,165,220,32,12,90,155,163,111,182,115,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {7,195,123,184,86,8,239,120,226,246,146,70,78,176,82,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {8,195,123,184,86,8,239,120,226,246,146,70,78,176,82,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {9,195,123,184,86,8,239,120,226,246,146,70,78,176,82,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,195,123,184,86,8,239,120,226,246,146,70,78,176,82,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {11,195,123,184,86,8,239,120,226,246,146,70,78,176,82,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {244,150,113,21,113,107,1,209,184,147,138,233,44,170,49,36,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {245,150,113,21,113,107,1,209,184,147,138,233,44,170,49,36,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {246,150,113,21,113,107,1,209,184,147,138,233,44,170,49,36,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {247,150,113,21,113,107,1,209,184,147,138,233,44,170,49,36,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {248,150,113,21,113,107,1,209,184,147,138,233,44,170,49,36,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {225,106,103,114,139,206,19,41,143,48,130,140,11,164,16,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {226,106,103,114,139,206,19,41,143,48,130,140,11,164,16,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {227,106,103,114,139,206,19,41,143,48,130,140,11,164,16,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {228,106,103,114,139,206,19,41,143,48,130,140,11,164,16,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {229,106,103,114,139,206,19,41,143,48,130,140,11,164,16,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, +} ; + +static const unsigned char precomputed_mGnP_ed25519_P[precomputed_mGnP_ed25519_NUM][crypto_mGnP_PBYTES] = { + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {133,160,158,72,186,1,91,246,75,247,188,75,16,198,93,128,164,113,55,55,220,92,49,210,31,166,134,94,97,102,5,0}, + {126,9,112,146,235,66,90,188,88,90,224,136,228,242,98,43,140,84,144,235,92,61,104,8,151,8,170,19,74,101,26,0}, + {224,235,122,124,59,65,184,174,22,86,227,250,241,159,196,106,218,9,141,235,156,50,177,253,134,98,5,22,95,73,184,0}, + {78,153,126,111,141,111,252,5,83,158,51,138,15,154,98,2,177,156,85,136,224,97,247,104,153,151,213,108,44,80,209,2}, + {38,232,149,143,194,178,39,176,69,195,244,137,242,239,152,240,213,223,172,5,211,198,51,57,177,56,2,136,109,83,252,5}, + {216,108,32,196,179,96,94,68,67,2,255,92,49,186,224,159,180,48,192,50,147,246,46,195,68,43,166,22,8,46,100,7}, + {57,219,28,111,68,228,27,79,57,195,231,19,30,185,73,83,121,159,249,151,252,104,182,48,163,51,251,217,35,68,59,15}, + {236,63,241,36,166,68,105,38,186,89,59,208,14,4,117,182,224,197,36,94,214,86,73,144,201,200,124,44,114,135,210,18}, + {131,196,183,157,143,181,189,1,175,102,45,100,112,127,96,148,29,133,197,254,108,223,64,228,78,218,154,119,172,195,122,20}, + {210,186,161,55,8,56,251,114,246,167,32,187,114,36,90,87,225,135,97,195,100,30,70,140,91,62,25,23,39,4,151,20}, + {36,145,108,107,202,212,204,240,212,7,88,47,196,61,65,201,118,189,125,61,219,34,22,53,62,0,98,1,168,122,87,26}, + {122,28,92,77,125,237,195,230,62,33,8,41,109,183,82,24,187,193,165,119,212,177,27,181,161,51,180,157,140,73,39,28}, + {40,88,214,103,129,21,75,153,249,2,125,196,106,194,160,240,125,135,250,100,100,169,68,112,20,135,90,176,29,90,59,28}, + {84,98,59,221,196,58,205,222,193,212,5,15,125,194,15,151,226,134,6,28,104,129,10,154,232,189,228,19,219,62,250,28}, + {190,29,39,95,90,208,83,102,202,66,104,169,222,136,104,211,11,169,221,5,219,246,37,64,231,183,79,157,51,91,215,31}, + {121,143,86,97,2,235,73,184,161,214,123,238,227,125,254,83,105,132,81,226,170,103,169,131,3,239,243,66,130,162,245,31}, + {73,5,247,160,82,142,177,165,227,112,105,120,156,113,65,250,51,182,120,221,241,74,127,117,108,20,238,116,190,67,140,33}, + {195,197,239,216,169,17,254,69,106,234,207,109,125,91,219,86,176,172,130,149,239,188,156,126,148,254,169,106,106,151,164,33}, + {199,107,6,14,106,204,173,171,172,197,195,135,208,242,65,105,184,65,3,53,248,19,42,24,130,222,59,132,6,169,41,35}, + {65,151,24,239,64,74,239,193,174,29,224,191,212,221,134,157,51,195,248,49,107,37,99,200,22,128,125,206,250,81,111,35}, + {177,247,0,177,3,171,57,137,155,38,125,194,25,247,245,140,155,229,0,42,239,191,97,152,75,172,202,145,101,17,214,38}, + {223,216,44,45,181,10,83,110,84,6,126,6,109,2,206,245,142,111,78,106,228,46,208,250,97,79,18,205,28,200,77,39}, + {87,139,29,60,28,115,112,14,34,56,78,44,30,181,221,106,70,70,179,41,26,78,163,211,121,60,160,133,169,94,159,40}, + {214,29,37,12,25,50,23,234,30,104,146,137,133,26,147,2,192,156,213,212,0,107,225,220,7,156,137,47,109,121,65,41}, + {71,115,11,40,71,121,222,157,200,253,37,88,149,201,189,228,121,103,16,216,209,224,15,179,45,249,173,154,254,86,129,44}, + {196,228,176,109,8,132,104,21,146,247,171,74,172,171,187,80,178,223,34,193,250,46,71,23,171,214,1,6,110,17,210,44}, + {180,197,177,2,16,210,146,58,7,75,243,35,76,11,100,180,162,152,182,121,119,109,163,254,48,36,81,97,128,102,147,45}, + {186,70,250,82,228,40,43,83,55,31,133,225,239,143,160,226,23,225,58,252,207,202,116,81,178,20,150,89,14,164,65,48}, + {2,164,39,56,19,10,255,33,76,226,219,91,174,27,185,47,165,171,243,223,243,221,75,112,196,245,103,21,248,247,187,48}, + {142,244,68,150,222,150,211,254,205,215,68,178,88,52,152,26,145,14,101,206,18,159,199,146,23,90,210,210,151,118,130,49}, + {18,235,145,30,130,228,169,214,15,240,202,250,202,187,97,240,114,203,81,230,53,178,128,21,204,150,37,113,166,164,179,50}, + {167,210,150,114,229,201,82,81,135,160,75,243,98,1,199,26,226,39,106,107,128,163,31,11,162,59,146,125,231,88,224,50}, + {68,2,91,26,217,254,139,221,39,73,184,210,146,164,44,78,184,255,112,208,54,162,56,50,153,18,172,159,67,102,122,53}, + {233,12,172,112,192,147,166,147,39,59,151,90,81,96,95,114,142,243,50,253,200,25,171,89,32,91,82,78,239,132,13,55}, + {225,110,19,97,81,243,92,255,202,187,153,206,129,100,141,62,48,57,186,217,143,9,134,162,123,112,179,197,253,176,56,55}, + {15,38,156,170,214,169,239,180,234,147,218,70,196,3,211,71,186,238,99,62,246,134,37,6,124,5,211,28,220,130,237,55}, + {217,49,191,136,255,92,143,239,180,251,18,245,222,109,34,183,41,127,73,5,254,225,153,68,176,43,208,43,10,220,95,57}, + {63,122,67,230,107,240,216,213,10,9,110,222,86,94,177,229,180,235,177,107,114,124,213,49,118,214,35,68,243,102,62,61}, + {205,131,228,181,108,197,210,92,220,69,217,99,14,236,103,11,254,178,143,176,74,17,223,84,177,112,113,45,60,168,63,64}, + {121,78,107,39,56,46,163,237,221,7,132,223,157,121,249,154,234,72,89,68,193,136,205,145,28,153,97,230,101,230,232,64}, + {45,143,42,61,151,228,197,167,52,156,175,209,21,74,32,108,56,62,136,106,141,11,89,252,59,187,76,76,65,62,245,64}, + {145,208,46,32,13,252,228,53,6,139,4,78,173,242,164,13,67,207,6,60,77,204,46,193,43,88,175,225,13,16,72,65}, + {182,18,95,224,137,137,7,82,75,21,206,108,134,232,116,54,130,23,101,9,173,169,33,221,66,72,237,193,236,175,21,68}, + {90,151,55,119,99,172,162,93,193,113,7,114,197,167,118,93,81,212,200,116,11,244,13,131,119,104,212,16,145,200,237,69}, + {52,237,196,85,30,241,2,205,246,153,11,186,199,15,81,101,179,37,191,166,164,177,249,254,245,193,141,16,27,12,7,71}, + {100,38,244,188,137,70,78,230,162,25,214,6,142,134,54,150,147,230,43,93,36,46,210,188,247,179,32,157,207,140,12,71}, + {103,147,223,167,47,28,51,206,134,23,84,253,66,253,110,157,218,220,83,83,161,249,85,144,43,247,67,184,116,36,66,74}, + {128,225,254,112,11,214,173,199,112,250,76,43,159,253,110,117,105,22,167,152,221,165,163,11,235,207,217,79,112,132,194,74}, + {36,104,163,116,124,109,81,96,141,238,89,230,234,59,182,21,202,187,196,154,32,78,218,111,43,79,206,50,58,105,205,74}, + {208,242,110,90,72,140,78,17,11,232,22,29,211,15,115,42,91,210,250,111,137,68,115,53,37,13,223,153,64,187,214,79}, + {103,146,179,33,108,99,169,165,255,105,248,67,103,183,62,212,155,30,0,215,242,229,230,102,119,48,128,159,187,25,225,79}, + {103,70,152,180,184,0,206,31,156,181,59,146,75,251,253,210,202,235,151,165,221,1,0,48,246,42,167,193,126,17,72,80}, + {29,249,54,71,143,91,3,152,41,66,231,43,195,76,148,132,237,52,126,153,4,43,248,35,68,10,40,98,122,17,1,82}, + {221,28,66,103,33,110,75,113,187,134,110,164,119,237,103,137,146,195,72,82,183,130,227,165,61,111,248,242,216,34,43,83}, + {8,95,214,196,190,247,191,203,167,220,91,68,19,123,144,2,144,245,250,107,3,96,231,241,243,86,193,203,135,228,31,85}, + {95,156,149,188,163,80,140,36,177,208,177,85,156,131,239,91,4,68,92,196,88,28,142,134,216,34,78,221,208,159,17,87}, + {29,182,217,36,219,194,226,80,102,180,84,3,108,168,134,207,11,172,66,128,227,162,187,36,19,1,127,120,57,109,178,87}, + {87,173,12,84,130,4,224,15,255,165,110,22,255,93,102,224,201,159,218,22,129,106,106,100,37,117,25,252,193,223,118,88}, + {50,218,214,158,75,153,232,238,246,90,195,93,68,97,229,252,238,232,229,49,117,154,108,77,181,165,23,48,119,20,9,94}, + {33,158,135,215,170,85,89,178,199,10,178,241,198,171,131,3,255,209,83,204,190,12,196,245,219,115,188,16,200,207,179,98}, + {54,129,203,31,182,210,103,149,201,84,239,1,4,173,95,59,164,114,126,8,140,177,48,18,5,0,77,93,8,226,19,103}, + {213,105,89,54,151,2,93,204,228,177,220,135,151,91,75,114,81,144,186,151,76,179,156,47,245,18,103,71,82,115,76,107}, + {210,76,135,163,211,65,145,20,82,211,212,126,203,80,22,158,160,58,151,101,216,149,170,224,51,231,7,192,105,11,100,107}, + {249,39,38,36,232,230,206,127,84,51,49,159,243,150,75,230,222,245,87,204,175,97,107,179,146,240,206,238,89,157,153,108}, + {60,165,126,144,74,35,167,121,71,123,75,252,34,112,32,138,190,164,37,251,92,56,21,215,208,217,97,205,165,45,185,108}, + {78,154,192,104,2,2,81,141,207,192,101,46,36,183,197,24,154,29,122,177,62,241,220,250,177,110,114,197,242,199,41,112}, + {215,112,3,150,147,250,141,106,5,182,204,42,223,25,43,127,93,204,144,57,219,152,192,236,42,0,172,170,34,163,162,112}, + {28,108,193,36,56,188,232,222,209,69,152,221,56,98,101,247,22,253,219,116,84,194,12,86,14,193,79,74,18,213,192,112}, + {113,168,202,225,174,241,105,63,76,244,7,153,70,8,140,238,63,59,110,110,8,78,147,119,241,98,69,40,35,48,237,113}, + {63,24,82,104,230,229,60,65,45,199,150,19,78,9,16,25,94,21,229,57,134,215,65,160,213,176,158,236,37,61,42,114}, + {136,141,166,125,172,46,107,241,28,17,176,185,50,174,195,232,68,142,198,30,162,192,132,24,159,163,8,179,67,215,113,116}, + {15,212,111,12,27,25,213,247,143,250,231,170,223,124,55,203,221,72,232,246,227,201,223,174,76,9,234,163,228,146,211,116}, + {189,129,176,12,94,42,9,222,24,87,94,100,15,11,204,157,195,143,17,33,3,187,44,41,61,147,60,52,244,226,78,118}, + {7,15,29,158,249,45,243,86,149,240,67,227,182,187,29,165,226,107,4,189,241,76,230,17,194,202,244,253,216,151,180,121}, + {199,23,106,112,61,77,216,79,186,60,11,118,13,16,103,15,42,32,83,250,44,57,204,198,78,199,253,119,146,172,3,122}, + {109,157,174,111,128,130,186,160,252,179,9,224,135,223,178,38,180,195,3,142,101,113,183,205,46,227,81,238,31,115,191,126}, + {224,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {225,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {226,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {227,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {228,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {229,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {230,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {231,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {232,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {233,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {234,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {236,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {237,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {238,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {241,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {242,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {243,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {244,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {245,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127}, + {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128}, + {15,202,72,65,134,59,164,90,150,30,251,86,17,92,90,253,247,183,247,41,145,35,193,117,17,136,192,98,245,81,100,128}, + {205,235,122,124,59,65,184,174,22,86,227,250,241,159,196,106,218,9,141,235,156,50,177,253,134,98,5,22,95,73,184,128}, + {134,45,86,6,135,126,106,53,88,197,149,226,163,37,202,21,175,21,54,79,124,201,81,251,29,168,112,67,85,215,214,133}, + {19,232,149,143,194,178,39,176,69,195,244,137,242,239,152,240,213,223,172,5,211,198,51,57,177,56,2,136,109,83,252,133}, + {169,110,86,37,132,219,71,97,245,248,1,116,176,11,9,146,76,167,15,128,12,4,150,39,207,94,13,180,150,216,139,134}, + {27,94,32,221,185,253,205,81,16,106,160,71,66,193,172,50,128,123,150,24,2,205,204,28,35,232,42,182,24,139,247,134}, + {42,253,187,252,134,95,243,186,16,181,187,15,255,28,206,0,110,241,40,76,23,47,234,133,198,158,33,31,179,145,23,135}, + {41,109,180,132,253,90,130,59,68,248,72,68,176,181,63,184,171,140,214,99,65,91,214,4,160,17,215,177,76,55,164,136}, + {89,176,33,129,176,6,44,214,190,23,39,124,63,9,188,121,108,239,97,239,34,189,0,153,47,119,0,160,146,111,87,139}, + {11,46,34,224,225,54,132,37,50,225,50,181,111,149,20,28,55,237,157,88,182,35,146,71,255,20,62,22,131,72,123,143}, + {175,8,2,207,88,111,14,41,6,241,193,250,227,210,71,27,173,58,211,40,158,235,38,41,77,191,164,39,149,115,145,143}, + {158,63,163,2,209,61,243,101,255,215,205,118,14,128,144,81,227,196,193,155,244,96,139,47,49,229,71,152,32,158,96,144}, + {168,222,62,78,165,5,144,178,39,48,36,112,244,186,178,129,204,219,85,212,107,36,99,166,133,109,125,246,2,134,254,145}, + {161,164,99,189,12,125,22,108,64,69,81,70,238,147,169,129,39,21,125,46,182,24,184,237,48,87,82,210,76,63,69,148}, + {170,162,42,35,41,84,42,97,251,71,156,129,94,24,92,143,122,46,126,93,23,192,112,188,136,198,130,139,213,202,223,148}, + {168,98,236,26,122,57,204,10,102,3,57,100,14,248,246,86,160,155,93,84,30,194,127,129,10,213,18,36,220,243,182,150}, + {62,72,157,122,56,223,50,242,126,141,3,69,108,245,176,206,48,10,150,154,125,43,80,183,144,157,16,85,100,144,208,153}, + {59,3,54,152,124,140,187,237,103,170,221,75,236,125,70,49,81,201,224,116,6,46,3,154,33,29,120,202,38,178,124,155}, + {197,131,97,219,129,218,22,217,9,209,249,57,140,173,163,106,113,34,131,143,175,83,178,28,7,22,221,212,49,225,175,159}, + {162,32,69,38,74,213,90,104,72,3,18,57,109,49,55,243,64,172,152,80,15,123,12,201,235,19,76,9,208,93,0,166}, + {116,224,121,163,115,49,221,231,34,23,75,55,170,41,248,219,64,30,172,12,14,12,22,73,85,92,239,84,238,225,137,167}, + {187,129,32,77,78,44,152,80,61,210,244,23,155,18,159,123,75,11,180,226,234,33,106,228,99,10,71,36,196,124,186,168}, + {33,135,173,176,8,63,68,129,123,108,150,228,3,1,207,219,61,134,80,166,211,205,62,43,251,80,230,122,84,229,174,170}, + {192,162,3,203,98,171,180,1,119,178,173,156,44,204,12,246,1,20,24,143,6,228,102,249,59,211,209,107,144,228,91,171}, + {214,214,220,104,206,133,2,160,149,204,55,98,82,188,149,15,156,46,142,39,255,210,231,206,119,101,85,249,61,71,105,171}, + {203,39,31,0,55,163,112,132,197,100,203,59,48,241,40,44,149,91,114,205,194,202,152,164,241,115,85,14,215,8,63,179}, + {50,174,127,41,66,118,225,92,168,54,126,229,107,137,0,209,170,175,233,44,66,199,138,179,129,180,92,2,191,35,1,180}, + {133,87,197,21,1,127,223,75,81,227,105,50,176,135,246,243,135,36,218,220,216,101,27,75,222,163,174,73,160,3,113,181}, + {169,250,39,98,67,83,7,88,248,188,130,125,154,194,114,112,26,221,139,207,155,50,237,29,19,134,110,13,212,8,68,182}, + {231,97,91,239,176,88,194,117,73,15,124,25,71,53,206,155,65,82,141,200,198,213,236,155,199,186,144,197,94,36,72,185}, + {82,164,31,126,105,247,223,71,7,119,74,46,203,243,129,215,184,44,218,12,105,81,114,135,162,240,192,229,122,11,238,186}, + {68,107,89,151,178,8,165,126,190,185,3,102,128,110,169,106,207,22,232,197,118,195,230,143,170,73,134,183,173,15,40,188}, + {185,152,154,170,236,246,115,238,74,219,239,56,100,83,37,163,50,33,189,75,224,75,190,203,72,137,112,104,220,239,104,193}, + {59,214,195,53,132,229,207,187,49,198,64,174,162,142,160,26,20,185,105,4,177,178,190,21,28,215,211,7,3,121,39,198}, + {165,1,85,204,92,195,160,51,144,94,25,60,59,220,190,189,53,83,239,30,122,38,249,5,158,236,141,178,225,14,167,203}, + {88,81,251,2,207,106,39,128,151,6,28,147,198,137,136,250,160,252,133,169,145,168,218,72,34,12,204,148,17,234,154,208}, + {238,225,222,190,117,211,58,162,19,55,118,168,14,229,79,71,244,82,123,68,109,97,137,130,38,14,102,255,34,118,243,213}, + {116,42,148,68,23,204,156,70,174,248,50,174,62,189,211,94,76,60,4,17,71,103,132,33,105,19,78,144,215,223,83,214}, + {76,156,149,188,163,80,140,36,177,208,177,85,156,131,239,91,4,68,92,196,88,28,142,134,216,34,78,221,208,159,17,215}, + {139,202,181,227,103,99,103,9,81,107,188,27,164,116,79,159,216,139,8,179,208,79,37,87,110,212,142,176,25,99,210,216}, + {81,92,255,221,73,228,142,1,185,168,93,221,226,119,29,193,48,71,4,77,84,27,95,120,52,51,217,35,88,133,26,217}, + {182,156,86,236,201,64,95,215,117,54,216,131,185,176,83,160,222,174,131,178,241,17,60,108,57,200,140,182,155,46,54,217}, + {9,188,121,142,101,162,29,184,100,78,137,159,37,111,57,77,113,60,16,102,124,242,102,127,172,96,14,134,139,214,140,217}, + {68,49,61,40,119,1,237,10,222,249,20,18,173,202,76,112,101,244,115,26,3,110,95,3,175,58,158,206,228,224,69,221}, + {110,231,191,231,185,198,135,152,226,160,157,20,180,236,4,95,104,20,220,153,68,77,224,29,125,241,106,176,102,3,108,222}, + {175,196,110,247,30,28,103,111,47,204,216,96,129,4,55,151,114,121,86,203,7,249,208,248,173,147,50,247,229,196,88,225}, + {25,77,245,209,222,132,188,180,142,57,37,51,8,156,72,189,163,170,90,15,141,174,226,219,255,181,243,35,175,126,96,225}, + {170,98,56,164,72,174,110,232,61,139,156,208,254,101,181,175,151,86,215,57,110,193,214,63,2,135,171,215,210,20,245,225}, + {31,197,166,74,131,146,196,77,31,22,233,128,227,240,166,28,119,63,127,132,247,126,126,16,126,5,253,115,3,239,206,226}, + {69,106,177,228,109,125,112,168,162,247,211,94,144,52,79,60,108,23,19,11,146,34,37,84,243,205,47,160,105,187,209,226}, + {28,171,209,216,175,254,199,10,151,151,156,191,38,110,76,81,57,13,152,95,69,12,16,242,120,100,70,152,131,35,11,227}, + {81,189,38,89,68,73,35,175,82,161,183,179,3,172,11,122,32,165,68,13,82,166,61,232,24,57,169,104,75,75,179,230}, + {182,145,235,22,179,180,64,250,107,114,83,50,154,212,240,27,181,88,189,14,124,230,164,117,193,3,21,221,168,253,50,231}, + {176,79,79,215,176,10,153,157,240,165,119,165,163,42,33,167,29,129,169,168,188,121,206,135,66,47,164,94,59,253,205,235}, + {99,157,130,192,144,139,60,72,218,187,135,117,63,67,39,238,21,141,213,107,239,19,161,86,49,187,57,169,167,46,50,237}, + {180,23,106,112,61,77,216,79,186,60,11,118,13,16,103,15,42,32,83,250,44,57,204,198,78,199,253,119,146,172,3,250}, + {246,62,201,197,215,170,104,159,210,158,46,56,180,16,88,31,190,213,165,127,255,80,20,248,96,9,223,108,60,26,11,250}, + {239,19,109,220,255,224,30,59,97,20,253,177,54,40,172,36,207,251,146,132,101,137,195,105,75,155,185,156,11,234,91,250}, + {29,21,207,61,161,253,57,233,159,131,233,236,31,111,26,48,33,50,187,28,71,206,175,59,55,143,249,117,160,119,245,250}, + {150,161,67,40,164,154,114,122,147,65,34,174,195,86,255,45,139,28,69,231,240,129,82,161,24,231,190,9,96,57,113,251}, + {192,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {193,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {194,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {195,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {196,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {197,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {198,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {199,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {200,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {201,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {202,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {203,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {204,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {205,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {206,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {208,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {209,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {210,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {211,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {212,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {213,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {214,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {215,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {216,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {217,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {218,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {219,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {220,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {221,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {222,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {223,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {224,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {225,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {226,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {227,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {228,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {229,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {230,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {231,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {232,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {233,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {234,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {236,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {237,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {238,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {240,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {241,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {242,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {243,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {244,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {245,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, +} ; + +static void test_mGnP_ed25519_impl(long long impl) +{ + unsigned char *Q = test_mGnP_ed25519_Q; + unsigned char *m = test_mGnP_ed25519_m; + unsigned char *n = test_mGnP_ed25519_n; + unsigned char *P = test_mGnP_ed25519_P; + unsigned char *Q2 = test_mGnP_ed25519_Q2; + unsigned char *m2 = test_mGnP_ed25519_m2; + unsigned char *n2 = test_mGnP_ed25519_n2; + unsigned char *P2 = test_mGnP_ed25519_P2; + long long Qlen = crypto_mGnP_OUTPUTBYTES; + long long mlen = crypto_mGnP_MBYTES; + long long nlen = crypto_mGnP_NBYTES; + long long Plen = crypto_mGnP_PBYTES; + + if (targeti && strcmp(targeti,lib25519_dispatch_mGnP_ed25519_implementation(impl))) return; + if (impl >= 0) { + crypto_mGnP = lib25519_dispatch_mGnP_ed25519(impl); + printf("mGnP_ed25519 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_mGnP_ed25519_implementation(impl),lib25519_dispatch_mGnP_ed25519_compiler(impl)); + } else { + crypto_mGnP = lib25519_mGnP_ed25519; + printf("mGnP_ed25519 selected implementation %s compiler %s\n",lib25519_mGnP_ed25519_implementation(),lib25519_mGnP_ed25519_compiler()); + } + for (long long checksumbig = 0;checksumbig < 2;++checksumbig) { + long long loops = checksumbig ? 1024 : 128; + + checksum_clear(); + + for (long long loop = 0;loop < loops;++loop) { + + output_prepare(Q2,Q,Qlen); + input_prepare(m2,m,mlen); + input_prepare(n2,n,nlen); + input_prepare(P2,P,Plen); + crypto_mGnP(Q,m,n,P); + checksum(Q,Qlen); + output_compare(Q2,Q,Qlen,"crypto_mGnP"); + input_compare(m2,m,mlen,"crypto_mGnP"); + input_compare(n2,n,nlen,"crypto_mGnP"); + input_compare(P2,P,Plen,"crypto_mGnP"); + + double_canary(Q2,Q,Qlen); + double_canary(m2,m,mlen); + double_canary(n2,n,nlen); + double_canary(P2,P,Plen); + crypto_mGnP(Q2,m2,n2,P2); + if (memcmp(Q2,Q,Qlen) != 0) fail("failure: crypto_mGnP is nondeterministic\n"); + + double_canary(Q2,Q,Qlen); + double_canary(m2,m,mlen); + double_canary(n2,n,nlen); + double_canary(P2,P,Plen); + crypto_mGnP(m2,m2,n,P); + if (memcmp(m2,Q,Qlen) != 0) fail("failure: crypto_mGnP does not handle m=Q overlap\n"); + memcpy(m2,m,mlen); + crypto_mGnP(n2,m,n2,P); + if (memcmp(n2,Q,Qlen) != 0) fail("failure: crypto_mGnP does not handle n=Q overlap\n"); + memcpy(n2,n,nlen); + crypto_mGnP(P2,m,n,P2); + if (memcmp(P2,Q,Qlen) != 0) fail("failure: crypto_mGnP does not handle P=Q overlap\n"); + memcpy(P2,P,Plen); + } + checksum_expected(mGnP_ed25519_checksums[checksumbig]); + } + for (long long precomp = 0;precomp < precomputed_mGnP_ed25519_NUM;++precomp) { + output_prepare(Q2,Q,crypto_mGnP_OUTPUTBYTES); + input_prepare(m2,m,crypto_mGnP_MBYTES); + memcpy(m,precomputed_mGnP_ed25519_m[precomp],crypto_mGnP_MBYTES); + memcpy(m2,precomputed_mGnP_ed25519_m[precomp],crypto_mGnP_MBYTES); + input_prepare(n2,n,crypto_mGnP_NBYTES); + memcpy(n,precomputed_mGnP_ed25519_n[precomp],crypto_mGnP_NBYTES); + memcpy(n2,precomputed_mGnP_ed25519_n[precomp],crypto_mGnP_NBYTES); + input_prepare(P2,P,crypto_mGnP_PBYTES); + memcpy(P,precomputed_mGnP_ed25519_P[precomp],crypto_mGnP_PBYTES); + memcpy(P2,precomputed_mGnP_ed25519_P[precomp],crypto_mGnP_PBYTES); + crypto_mGnP(Q,m,n,P); + if (memcmp(Q,precomputed_mGnP_ed25519_Q[precomp],crypto_mGnP_OUTPUTBYTES)) { + fail("failure: crypto_mGnP fails precomputed test vectors\n"); + printf("expected Q: "); + for (long long pos = 0;pos < crypto_mGnP_OUTPUTBYTES;++pos) printf("%02x",precomputed_mGnP_ed25519_Q[precomp][pos]); + printf("\n"); + printf("received Q: "); + for (long long pos = 0;pos < crypto_mGnP_OUTPUTBYTES;++pos) printf("%02x",Q[pos]); + printf("\n"); + } + output_compare(Q2,Q,crypto_mGnP_OUTPUTBYTES,"crypto_mGnP"); + input_compare(m2,m,crypto_mGnP_MBYTES,"crypto_mGnP"); + input_compare(n2,n,crypto_mGnP_NBYTES,"crypto_mGnP"); + input_compare(P2,P,crypto_mGnP_PBYTES,"crypto_mGnP"); + } +} + +static void test_mGnP_ed25519(void) +{ + if (targeto && strcmp(targeto,"mGnP")) return; + if (targetp && strcmp(targetp,"ed25519")) return; + test_mGnP_ed25519_Q = alignedcalloc(crypto_mGnP_OUTPUTBYTES); + test_mGnP_ed25519_m = alignedcalloc(crypto_mGnP_MBYTES); + test_mGnP_ed25519_n = alignedcalloc(crypto_mGnP_NBYTES); + test_mGnP_ed25519_P = alignedcalloc(crypto_mGnP_PBYTES); + test_mGnP_ed25519_Q2 = alignedcalloc(crypto_mGnP_OUTPUTBYTES); + test_mGnP_ed25519_m2 = alignedcalloc(crypto_mGnP_MBYTES); + test_mGnP_ed25519_n2 = alignedcalloc(crypto_mGnP_NBYTES); + test_mGnP_ed25519_P2 = alignedcalloc(crypto_mGnP_PBYTES); + + for (long long offset = 0;offset < 2;++offset) { + printf("mGnP_ed25519 offset %lld\n",offset); + for (long long impl = -1;impl < lib25519_numimpl_mGnP_ed25519();++impl) + forked(test_mGnP_ed25519_impl,impl); + ++test_mGnP_ed25519_Q; + ++test_mGnP_ed25519_m; + ++test_mGnP_ed25519_n; + ++test_mGnP_ed25519_P; + ++test_mGnP_ed25519_Q2; + ++test_mGnP_ed25519_m2; + ++test_mGnP_ed25519_n2; + ++test_mGnP_ed25519_P2; + } +} +#undef crypto_mGnP_MBYTES +#undef crypto_mGnP_NBYTES +#undef crypto_mGnP_PBYTES +#undef crypto_mGnP_OUTPUTBYTES + + +/* ----- dh, derived from supercop/crypto_dh/try.c */ +static const char *dh_x25519_checksums[] = { + "2c8a73ec86d5d4c4bc838f49cfd78c87b60b534ae6fff59ce3bea0c32cdc1450", + "b09016b3a1371786b46a183085133338159e623c5eb9cbc5eaa4f8b62d6c5aea", +} ; + +static void (*crypto_dh_keypair)(unsigned char *,unsigned char *); +static void (*crypto_dh)(unsigned char *,const unsigned char *,const unsigned char *); +#define crypto_dh_SECRETKEYBYTES lib25519_dh_x25519_SECRETKEYBYTES +#define crypto_dh_PUBLICKEYBYTES lib25519_dh_x25519_PUBLICKEYBYTES +#define crypto_dh_BYTES lib25519_dh_x25519_BYTES + +static unsigned char *test_dh_x25519_a; +static unsigned char *test_dh_x25519_b; +static unsigned char *test_dh_x25519_c; +static unsigned char *test_dh_x25519_d; +static unsigned char *test_dh_x25519_e; +static unsigned char *test_dh_x25519_f; +static unsigned char *test_dh_x25519_a2; +static unsigned char *test_dh_x25519_b2; +static unsigned char *test_dh_x25519_c2; +static unsigned char *test_dh_x25519_d2; +static unsigned char *test_dh_x25519_e2; +static unsigned char *test_dh_x25519_f2; + +static void test_dh_x25519_impl(long long impl) +{ + unsigned char *a = test_dh_x25519_a; + unsigned char *b = test_dh_x25519_b; + unsigned char *c = test_dh_x25519_c; + unsigned char *d = test_dh_x25519_d; + unsigned char *e = test_dh_x25519_e; + unsigned char *f = test_dh_x25519_f; + unsigned char *a2 = test_dh_x25519_a2; + unsigned char *b2 = test_dh_x25519_b2; + unsigned char *c2 = test_dh_x25519_c2; + unsigned char *d2 = test_dh_x25519_d2; + unsigned char *e2 = test_dh_x25519_e2; + unsigned char *f2 = test_dh_x25519_f2; + long long alen = crypto_dh_SECRETKEYBYTES; + long long blen = crypto_dh_SECRETKEYBYTES; + long long clen = crypto_dh_PUBLICKEYBYTES; + long long dlen = crypto_dh_PUBLICKEYBYTES; + long long elen = crypto_dh_BYTES; + long long flen = crypto_dh_BYTES; + + if (targeti && strcmp(targeti,lib25519_dispatch_dh_x25519_implementation(impl))) return; + if (impl >= 0) { + crypto_dh_keypair = lib25519_dispatch_dh_x25519_keypair(impl); + crypto_dh = lib25519_dispatch_dh_x25519(impl); + printf("dh_x25519 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_dh_x25519_implementation(impl),lib25519_dispatch_dh_x25519_compiler(impl)); + } else { + crypto_dh_keypair = lib25519_dh_x25519_keypair; + crypto_dh = lib25519_dh_x25519; + printf("dh_x25519 selected implementation %s compiler %s\n",lib25519_dh_x25519_implementation(),lib25519_dh_x25519_compiler()); + } + for (long long checksumbig = 0;checksumbig < 2;++checksumbig) { + long long loops = checksumbig ? 512 : 64; + + checksum_clear(); + + for (long long loop = 0;loop < loops;++loop) { + + output_prepare(c2,c,clen); + output_prepare(a2,a,alen); + crypto_dh_keypair(c,a); + checksum(c,clen); + checksum(a,alen); + output_compare(c2,c,clen,"crypto_dh_keypair"); + output_compare(a2,a,alen,"crypto_dh_keypair"); + output_prepare(d2,d,dlen); + output_prepare(b2,b,blen); + crypto_dh_keypair(d,b); + checksum(d,dlen); + checksum(b,blen); + output_compare(d2,d,dlen,"crypto_dh_keypair"); + output_compare(b2,b,blen,"crypto_dh_keypair"); + output_prepare(e2,e,elen); + memcpy(d2,d,dlen); + double_canary(d2,d,dlen); + memcpy(a2,a,alen); + double_canary(a2,a,alen); + crypto_dh(e,d,a); + checksum(e,elen); + output_compare(e2,e,elen,"crypto_dh"); + input_compare(d2,d,dlen,"crypto_dh"); + input_compare(a2,a,alen,"crypto_dh"); + + double_canary(e2,e,elen); + double_canary(d2,d,dlen); + double_canary(a2,a,alen); + crypto_dh(e2,d2,a2); + if (memcmp(e2,e,elen) != 0) fail("failure: crypto_dh is nondeterministic\n"); + + double_canary(e2,e,elen); + double_canary(d2,d,dlen); + double_canary(a2,a,alen); + crypto_dh(d2,d2,a); + if (memcmp(d2,e,elen) != 0) fail("failure: crypto_dh does not handle d=e overlap\n"); + memcpy(d2,d,dlen); + crypto_dh(a2,d,a2); + if (memcmp(a2,e,elen) != 0) fail("failure: crypto_dh does not handle a=e overlap\n"); + memcpy(a2,a,alen); + output_prepare(f2,f,flen); + memcpy(c2,c,clen); + double_canary(c2,c,clen); + memcpy(b2,b,blen); + double_canary(b2,b,blen); + crypto_dh(f,c,b); + checksum(f,flen); + output_compare(f2,f,flen,"crypto_dh"); + input_compare(c2,c,clen,"crypto_dh"); + input_compare(b2,b,blen,"crypto_dh"); + + double_canary(f2,f,flen); + double_canary(c2,c,clen); + double_canary(b2,b,blen); + crypto_dh(f2,c2,b2); + if (memcmp(f2,f,flen) != 0) fail("failure: crypto_dh is nondeterministic\n"); + + double_canary(f2,f,flen); + double_canary(c2,c,clen); + double_canary(b2,b,blen); + crypto_dh(c2,c2,b); + if (memcmp(c2,f,flen) != 0) fail("failure: crypto_dh does not handle c=f overlap\n"); + memcpy(c2,c,clen); + crypto_dh(b2,c,b2); + if (memcmp(b2,f,flen) != 0) fail("failure: crypto_dh does not handle b=f overlap\n"); + memcpy(b2,b,blen); + + if (memcmp(f,e,elen) != 0) fail("failure: crypto_dh not associative\n"); + } + checksum_expected(dh_x25519_checksums[checksumbig]); + } +} + +static void test_dh_x25519(void) +{ + if (targeto && strcmp(targeto,"dh")) return; + if (targetp && strcmp(targetp,"x25519")) return; + test_dh_x25519_a = alignedcalloc(crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES); + test_dh_x25519_b = alignedcalloc(crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES); + test_dh_x25519_c = alignedcalloc(crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES); + test_dh_x25519_d = alignedcalloc(crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES); + test_dh_x25519_e = alignedcalloc(crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES); + test_dh_x25519_f = alignedcalloc(crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES); + test_dh_x25519_a2 = alignedcalloc(crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES); + test_dh_x25519_b2 = alignedcalloc(crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES); + test_dh_x25519_c2 = alignedcalloc(crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES); + test_dh_x25519_d2 = alignedcalloc(crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES); + test_dh_x25519_e2 = alignedcalloc(crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES); + test_dh_x25519_f2 = alignedcalloc(crypto_dh_BYTES+crypto_dh_PUBLICKEYBYTES+crypto_dh_SECRETKEYBYTES); + + for (long long offset = 0;offset < 2;++offset) { + printf("dh_x25519 offset %lld\n",offset); + for (long long impl = -1;impl < lib25519_numimpl_dh_x25519();++impl) + forked(test_dh_x25519_impl,impl); + ++test_dh_x25519_a; + ++test_dh_x25519_b; + ++test_dh_x25519_c; + ++test_dh_x25519_d; + ++test_dh_x25519_e; + ++test_dh_x25519_f; + ++test_dh_x25519_a2; + ++test_dh_x25519_b2; + ++test_dh_x25519_c2; + ++test_dh_x25519_d2; + ++test_dh_x25519_e2; + ++test_dh_x25519_f2; + } +} +#undef crypto_dh_SECRETKEYBYTES +#undef crypto_dh_PUBLICKEYBYTES +#undef crypto_dh_BYTES + + +/* ----- sign, derived from supercop/crypto_sign/try.c */ +static const char *sign_ed25519_checksums[] = { + "ce11fd7c1eac4dd0bc5eec49b26ad1e91aef696fae50ce377dbd806dc394da01", + "2ed857f17c917a8185e6c296303a11772ae45683a5e7cb5b095489bad65fffde", +} ; + +static void (*crypto_sign_keypair)(unsigned char *,unsigned char *); +static void (*crypto_sign)(unsigned char *,long long *,const unsigned char *,long long,const unsigned char *); +static int (*crypto_sign_open)(unsigned char *,long long *,const unsigned char *,long long,const unsigned char *); +#define crypto_sign_SECRETKEYBYTES lib25519_sign_ed25519_SECRETKEYBYTES +#define crypto_sign_PUBLICKEYBYTES lib25519_sign_ed25519_PUBLICKEYBYTES +#define crypto_sign_BYTES lib25519_sign_ed25519_BYTES + +static unsigned char *test_sign_ed25519_p; +static unsigned char *test_sign_ed25519_s; +static unsigned char *test_sign_ed25519_m; +static unsigned char *test_sign_ed25519_c; +static unsigned char *test_sign_ed25519_t; +static unsigned char *test_sign_ed25519_p2; +static unsigned char *test_sign_ed25519_s2; +static unsigned char *test_sign_ed25519_m2; +static unsigned char *test_sign_ed25519_c2; +static unsigned char *test_sign_ed25519_t2; + +static void test_sign_ed25519_impl(long long impl) +{ + unsigned char *p = test_sign_ed25519_p; + unsigned char *s = test_sign_ed25519_s; + unsigned char *m = test_sign_ed25519_m; + unsigned char *c = test_sign_ed25519_c; + unsigned char *t = test_sign_ed25519_t; + unsigned char *p2 = test_sign_ed25519_p2; + unsigned char *s2 = test_sign_ed25519_s2; + unsigned char *m2 = test_sign_ed25519_m2; + unsigned char *c2 = test_sign_ed25519_c2; + unsigned char *t2 = test_sign_ed25519_t2; + long long plen = crypto_sign_PUBLICKEYBYTES; + long long slen = crypto_sign_SECRETKEYBYTES; + long long mlen; + long long clen; + long long tlen; + + if (targeti && strcmp(targeti,lib25519_dispatch_sign_ed25519_implementation(impl))) return; + if (impl >= 0) { + crypto_sign_keypair = lib25519_dispatch_sign_ed25519_keypair(impl); + crypto_sign = lib25519_dispatch_sign_ed25519(impl); + crypto_sign_open = lib25519_dispatch_sign_ed25519_open(impl); + printf("sign_ed25519 %lld implementation %s compiler %s\n",impl,lib25519_dispatch_sign_ed25519_implementation(impl),lib25519_dispatch_sign_ed25519_compiler(impl)); + } else { + crypto_sign_keypair = lib25519_sign_ed25519_keypair; + crypto_sign = lib25519_sign_ed25519; + crypto_sign_open = lib25519_sign_ed25519_open; + printf("sign_ed25519 selected implementation %s compiler %s\n",lib25519_sign_ed25519_implementation(),lib25519_sign_ed25519_compiler()); + } + for (long long checksumbig = 0;checksumbig < 2;++checksumbig) { + long long loops = checksumbig ? 64 : 8; + long long maxtest = checksumbig ? 4096 : 128; + + checksum_clear(); + + for (long long loop = 0;loop < loops;++loop) { + int result; + mlen = myrandom() % (maxtest + 1); + + output_prepare(p2,p,plen); + output_prepare(s2,s,slen); + crypto_sign_keypair(p,s); + checksum(p,plen); + checksum(s,slen); + output_compare(p2,p,plen,"crypto_sign_keypair"); + output_compare(s2,s,slen,"crypto_sign_keypair"); + clen = mlen + crypto_sign_BYTES; + output_prepare(c2,c,clen); + input_prepare(m2,m,mlen); + memcpy(s2,s,slen); + double_canary(s2,s,slen); + crypto_sign(c,&clen,m,mlen,s); + if (clen < mlen) fail("failure: crypto_sign returns smaller output than input\n"); + if (clen > mlen + crypto_sign_BYTES) fail("failure: crypto_sign returns more than crypto_sign_BYTES extra bytes\n"); + checksum(c,clen); + output_compare(c2,c,clen,"crypto_sign"); + input_compare(m2,m,mlen,"crypto_sign"); + input_compare(s2,s,slen,"crypto_sign"); + tlen = clen; + output_prepare(t2,t,tlen); + memcpy(c2,c,clen); + double_canary(c2,c,clen); + memcpy(p2,p,plen); + double_canary(p2,p,plen); + result = crypto_sign_open(t,&tlen,c,clen,p); + if (result != 0) fail("failure: crypto_sign_open returns nonzero\n"); + if (tlen != mlen) fail("failure: crypto_sign_open does not match mlen\n"); + if (memcmp(t,m,mlen) != 0) fail("failure: crypto_sign_open does not match m\n"); + checksum(t,tlen); + output_compare(t2,t,clen,"crypto_sign_open"); + input_compare(c2,c,clen,"crypto_sign_open"); + input_compare(p2,p,plen,"crypto_sign_open"); + + double_canary(t2,t,tlen); + double_canary(c2,c,clen); + double_canary(p2,p,plen); + result = crypto_sign_open(t2,&tlen,c2,clen,p2); + if (result != 0) fail("failure: crypto_sign_open returns nonzero\n"); + if (memcmp(t2,t,tlen) != 0) fail("failure: crypto_sign_open is nondeterministic\n"); + + double_canary(t2,t,tlen); + double_canary(c2,c,clen); + double_canary(p2,p,plen); + result = crypto_sign_open(c2,&tlen,c2,clen,p); + if (result != 0) fail("failure: crypto_sign_open with c=t overlap returns nonzero\n"); + if (memcmp(c2,t,tlen) != 0) fail("failure: crypto_sign_open does not handle c=t overlap\n"); + memcpy(c2,c,clen); + result = crypto_sign_open(p2,&tlen,c,clen,p2); + if (result != 0) fail("failure: crypto_sign_open with p=t overlap returns nonzero\n"); + if (memcmp(p2,t,tlen) != 0) fail("failure: crypto_sign_open does not handle p=t overlap\n"); + memcpy(p2,p,plen); + + c[myrandom() % clen] += 1 + (myrandom() % 255); + if (crypto_sign_open(t,&tlen,c,clen,p) == 0) + if ((tlen != mlen) || (memcmp(t,m,mlen) != 0)) + fail("failure: crypto_sign_open allows trivial forgeries\n"); + c[myrandom() % clen] += 1 + (myrandom() % 255); + if (crypto_sign_open(t,&tlen,c,clen,p) == 0) + if ((tlen != mlen) || (memcmp(t,m,mlen) != 0)) + fail("failure: crypto_sign_open allows trivial forgeries\n"); + c[myrandom() % clen] += 1 + (myrandom() % 255); + if (crypto_sign_open(t,&tlen,c,clen,p) == 0) + if ((tlen != mlen) || (memcmp(t,m,mlen) != 0)) + fail("failure: crypto_sign_open allows trivial forgeries\n"); + } + checksum_expected(sign_ed25519_checksums[checksumbig]); + } +} + +static void test_sign_ed25519(void) +{ + if (targeto && strcmp(targeto,"sign")) return; + if (targetp && strcmp(targetp,"ed25519")) return; + test_sign_ed25519_p = alignedcalloc(4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES); + test_sign_ed25519_s = alignedcalloc(4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES); + test_sign_ed25519_m = alignedcalloc(4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES); + test_sign_ed25519_c = alignedcalloc(4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES); + test_sign_ed25519_t = alignedcalloc(4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES); + test_sign_ed25519_p2 = alignedcalloc(4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES); + test_sign_ed25519_s2 = alignedcalloc(4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES); + test_sign_ed25519_m2 = alignedcalloc(4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES); + test_sign_ed25519_c2 = alignedcalloc(4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES); + test_sign_ed25519_t2 = alignedcalloc(4096+crypto_sign_BYTES+crypto_sign_PUBLICKEYBYTES+crypto_sign_SECRETKEYBYTES); + + for (long long offset = 0;offset < 2;++offset) { + printf("sign_ed25519 offset %lld\n",offset); + for (long long impl = -1;impl < lib25519_numimpl_sign_ed25519();++impl) + forked(test_sign_ed25519_impl,impl); + ++test_sign_ed25519_p; + ++test_sign_ed25519_s; + ++test_sign_ed25519_m; + ++test_sign_ed25519_c; + ++test_sign_ed25519_t; + ++test_sign_ed25519_p2; + ++test_sign_ed25519_s2; + ++test_sign_ed25519_m2; + ++test_sign_ed25519_c2; + ++test_sign_ed25519_t2; + } +} +#undef crypto_sign_SECRETKEYBYTES +#undef crypto_sign_PUBLICKEYBYTES +#undef crypto_sign_BYTES + +/* ----- top level */ + +#include "print_cpuid.inc" + +int main(int argc,char **argv) +{ + setvbuf(stdout,0,_IOLBF,0); + kernelrandombytes_setup(); + printf("lib25519 version %s\n",lib25519_version); + printf("lib25519 arch %s\n",lib25519_arch); + print_cpuid(); + + if (*argv) ++argv; + if (*argv) { + targeto = *argv++; + if (*argv) { + targetp = *argv++; + if (*argv) { + targeti = *argv++; + } + } + } + + test_verify(); + test_hashblocks_sha512(); + test_hash_sha512(); + test_pow_inv25519(); + test_nP_montgomery25519(); + test_nG_merged25519(); + test_nG_montgomery25519(); + test_mGnP_ed25519(); + test_dh_x25519(); + test_sign_ed25519(); + + if (!ok) { + printf("some tests failed\n"); + return 100; + } + printf("all tests succeeded\n"); + return 0; +} diff --git a/lib-25519/lib25519/command/limits.inc b/lib-25519/lib25519/command/limits.inc new file mode 100644 index 0000000000..0852b371ef --- /dev/null +++ b/lib-25519/lib25519/command/limits.inc @@ -0,0 +1,17 @@ +static void limits() +{ +#ifdef RLIM_INFINITY + struct rlimit r; + r.rlim_cur = 0; + r.rlim_max = 0; +#ifdef RLIMIT_NOFILE + setrlimit(RLIMIT_NOFILE,&r); +#endif +#ifdef RLIMIT_NPROC + setrlimit(RLIMIT_NPROC,&r); +#endif +#ifdef RLIMIT_CORE + setrlimit(RLIMIT_CORE,&r); +#endif +#endif +} diff --git a/lib-25519/lib25519/command/print_cpuid.inc b/lib-25519/lib25519/command/print_cpuid.inc new file mode 100644 index 0000000000..f693e08796 --- /dev/null +++ b/lib-25519/lib25519/command/print_cpuid.inc @@ -0,0 +1,9 @@ +static void print_cpuid(void) +{ + unsigned int cpuid[32]; + lib25519_cpuid(cpuid,32); + printf("cpuid"); + for (long long j = 0;j < 32;++j) + printf(" %08x",cpuid[j]); + printf("\n"); +} diff --git a/lib-25519/lib25519/compilers/amd64+avx b/lib-25519/lib25519/compilers/amd64+avx new file mode 100644 index 0000000000..ce5264ee2b --- /dev/null +++ b/lib-25519/lib25519/compilers/amd64+avx @@ -0,0 +1,2 @@ +gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge +clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge diff --git a/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2 b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2 new file mode 100644 index 0000000000..cff508964e --- /dev/null +++ b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2 @@ -0,0 +1,2 @@ +gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell +clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell diff --git a/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx new file mode 100644 index 0000000000..f104f00761 --- /dev/null +++ b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx @@ -0,0 +1,2 @@ +gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake +clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake diff --git a/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx+avx512f+avx512vl b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx+avx512f+avx512vl new file mode 100644 index 0000000000..d0cfaa6593 --- /dev/null +++ b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx+avx512f+avx512vl @@ -0,0 +1,2 @@ +gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake +clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake diff --git a/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx+avx512f+avx512vl+avx512ifma b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx+avx512f+avx512vl+avx512ifma new file mode 100644 index 0000000000..72e89255bc --- /dev/null +++ b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx+avx512f+avx512vl+avx512ifma @@ -0,0 +1,2 @@ +gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake +clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake diff --git a/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx+avx512f+avx512vl+avx512ifma.c b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx+avx512f+avx512vl+avx512ifma.c new file mode 100644 index 0000000000..26b5b8c51a --- /dev/null +++ b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx+avx512f+avx512vl+avx512ifma.c @@ -0,0 +1,37 @@ +#define CPUID(func,leaf,a,b,c,d) \ + __asm("cpuid":"=a"(a),"=b"(b),"=c"(c),"=d"(d):"a"(func),"c"(leaf):) + +#define WANT_1_3 ((1<<23)|(1<<25)|(1<<26)) +/* 23=mmx; 25=sse; 26=sse2 */ + +#define WANT_1_2 ((1<<0)|(1<<9)|(1<<19)|(1<<20)|(1<<27)|(1<<28)) +/* 0=sse3; 9=ssse3; 19=sse41; 20=sse42; 27=osxsave; 28=avx */ + +#define WANT_7_1 ((1<<3)|(1<<5)|(1<<8)|(1<<16)|(1<<19)|(1<<21)|(1<<31)) +/* 3=bmi1; 5=avx2; 8=bmi2; 16=avx512_f; 19=adx; 21=avx512_ifma; 31=avx512_vl */ + +#define WANT_XCR ((1<<1)|(1<<2)) +/* 1=xmm; 2=ymm */ + +int supports(void) +{ + unsigned int cpuidmax,id0,id1,id2; + unsigned int familymodelstepping; + unsigned int feature0,feature1,feature2,feature3; + unsigned int xcrlow,xcrhigh; + + CPUID(0,0,cpuidmax,id0,id1,id2); + if (cpuidmax < 7) return 0; + + CPUID(1,0,familymodelstepping,feature1,feature2,feature3); + if (WANT_1_2 != (WANT_1_2 & feature2)) return 0; + if (WANT_1_3 != (WANT_1_3 & feature3)) return 0; + + CPUID(7,0,feature0,feature1,feature2,feature3); + if (WANT_7_1 != (WANT_7_1 & feature1)) return 0; + + asm(".byte 15;.byte 1;.byte 208":"=a"(xcrlow),"=d"(xcrhigh):"c"(0)); + if (WANT_XCR != (WANT_XCR & xcrlow)) return 0; + + return 1; +} diff --git a/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx+avx512f+avx512vl.c b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx+avx512f+avx512vl.c new file mode 100644 index 0000000000..d4ff2983fd --- /dev/null +++ b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx+avx512f+avx512vl.c @@ -0,0 +1,37 @@ +#define CPUID(func,leaf,a,b,c,d) \ + __asm("cpuid":"=a"(a),"=b"(b),"=c"(c),"=d"(d):"a"(func),"c"(leaf):) + +#define WANT_1_3 ((1<<23)|(1<<25)|(1<<26)) +/* 23=mmx; 25=sse; 26=sse2 */ + +#define WANT_1_2 ((1<<0)|(1<<9)|(1<<19)|(1<<20)|(1<<27)|(1<<28)) +/* 0=sse3; 9=ssse3; 19=sse41; 20=sse42; 27=osxsave; 28=avx */ + +#define WANT_7_1 ((1<<3)|(1<<5)|(1<<8)|(1<<16)|(1<<19)|(1<<31)) +/* 3=bmi1; 5=avx2; 8=bmi2; 16=avx512_f; 19=adx; 31=avx512_vl */ + +#define WANT_XCR ((1<<1)|(1<<2)) +/* 1=xmm; 2=ymm */ + +int supports(void) +{ + unsigned int cpuidmax,id0,id1,id2; + unsigned int familymodelstepping; + unsigned int feature0,feature1,feature2,feature3; + unsigned int xcrlow,xcrhigh; + + CPUID(0,0,cpuidmax,id0,id1,id2); + if (cpuidmax < 7) return 0; + + CPUID(1,0,familymodelstepping,feature1,feature2,feature3); + if (WANT_1_2 != (WANT_1_2 & feature2)) return 0; + if (WANT_1_3 != (WANT_1_3 & feature3)) return 0; + + CPUID(7,0,feature0,feature1,feature2,feature3); + if (WANT_7_1 != (WANT_7_1 & feature1)) return 0; + + asm(".byte 15;.byte 1;.byte 208":"=a"(xcrlow),"=d"(xcrhigh):"c"(0)); + if (WANT_XCR != (WANT_XCR & xcrlow)) return 0; + + return 1; +} diff --git a/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx.c b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx.c new file mode 100644 index 0000000000..4678dddd58 --- /dev/null +++ b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2+adx.c @@ -0,0 +1,37 @@ +#define CPUID(func,leaf,a,b,c,d) \ + __asm("cpuid":"=a"(a),"=b"(b),"=c"(c),"=d"(d):"a"(func),"c"(leaf):) + +#define WANT_1_3 ((1<<23)|(1<<25)|(1<<26)) +/* 23=mmx; 25=sse; 26=sse2 */ + +#define WANT_1_2 ((1<<0)|(1<<9)|(1<<19)|(1<<20)|(1<<27)|(1<<28)) +/* 0=sse3; 9=ssse3; 19=sse41; 20=sse42; 27=osxsave; 28=avx */ + +#define WANT_7_1 ((1<<3)|(1<<5)|(1<<8)|(1<<19)) +/* 3=bmi1; 5=avx2; 8=bmi2; 19=adx */ + +#define WANT_XCR ((1<<1)|(1<<2)) +/* 1=xmm; 2=ymm */ + +int supports(void) +{ + unsigned int cpuidmax,id0,id1,id2; + unsigned int familymodelstepping; + unsigned int feature0,feature1,feature2,feature3; + unsigned int xcrlow,xcrhigh; + + CPUID(0,0,cpuidmax,id0,id1,id2); + if (cpuidmax < 7) return 0; + + CPUID(1,0,familymodelstepping,feature1,feature2,feature3); + if (WANT_1_2 != (WANT_1_2 & feature2)) return 0; + if (WANT_1_3 != (WANT_1_3 & feature3)) return 0; + + CPUID(7,0,feature0,feature1,feature2,feature3); + if (WANT_7_1 != (WANT_7_1 & feature1)) return 0; + + asm(".byte 15;.byte 1;.byte 208":"=a"(xcrlow),"=d"(xcrhigh):"c"(0)); + if (WANT_XCR != (WANT_XCR & xcrlow)) return 0; + + return 1; +} diff --git a/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2.c b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2.c new file mode 100644 index 0000000000..6b2871cfe9 --- /dev/null +++ b/lib-25519/lib25519/compilers/amd64+avx+bmi2+avx2.c @@ -0,0 +1,53 @@ +/* +gcc has __builtin_cpu_supports("avx2") +but implemented it incorrectly until 2018: +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85100 + +as of 2022, many machines still have buggy versions of gcc + +furthermore, why is checking just for avx2 enough? +has intel guaranteed that it will never introduce +a cpu with avx2 instructions and without (e.g.) sse4.2? + +so manually check cpuid and xgetbv here +and include all the "lower" instruction sets +rather than trying to guess which ones are implied +*/ + +#define CPUID(func,leaf,a,b,c,d) \ + __asm("cpuid":"=a"(a),"=b"(b),"=c"(c),"=d"(d):"a"(func),"c"(leaf):) + +#define WANT_1_3 ((1<<23)|(1<<25)|(1<<26)) +/* 23=mmx; 25=sse; 26=sse2 */ + +#define WANT_1_2 ((1<<0)|(1<<9)|(1<<19)|(1<<20)|(1<<27)|(1<<28)) +/* 0=sse3; 9=ssse3; 19=sse41; 20=sse42; 27=osxsave; 28=avx */ + +#define WANT_7_1 ((1<<3)|(1<<5)|(1<<8)) +/* 3=bmi1; 5=avx2; 8=bmi2 */ + +#define WANT_XCR ((1<<1)|(1<<2)) +/* 1=xmm; 2=ymm */ + +int supports(void) +{ + unsigned int cpuidmax,id0,id1,id2; + unsigned int familymodelstepping; + unsigned int feature0,feature1,feature2,feature3; + unsigned int xcrlow,xcrhigh; + + CPUID(0,0,cpuidmax,id0,id1,id2); + if (cpuidmax < 7) return 0; + + CPUID(1,0,familymodelstepping,feature1,feature2,feature3); + if (WANT_1_2 != (WANT_1_2 & feature2)) return 0; + if (WANT_1_3 != (WANT_1_3 & feature3)) return 0; + + CPUID(7,0,feature0,feature1,feature2,feature3); + if (WANT_7_1 != (WANT_7_1 & feature1)) return 0; + + asm(".byte 15;.byte 1;.byte 208":"=a"(xcrlow),"=d"(xcrhigh):"c"(0)); + if (WANT_XCR != (WANT_XCR & xcrlow)) return 0; + + return 1; +} diff --git a/lib-25519/lib25519/compilers/amd64+avx.c b/lib-25519/lib25519/compilers/amd64+avx.c new file mode 100644 index 0000000000..3bb4555811 --- /dev/null +++ b/lib-25519/lib25519/compilers/amd64+avx.c @@ -0,0 +1,31 @@ +#define CPUID(func,leaf,a,b,c,d) \ + __asm("cpuid":"=a"(a),"=b"(b),"=c"(c),"=d"(d):"a"(func),"c"(leaf):) + +#define WANT_1_3 ((1<<23)|(1<<25)|(1<<26)) +/* 23=mmx; 25=sse; 26=sse2 */ + +#define WANT_1_2 ((1<<0)|(1<<9)|(1<<19)|(1<<20)|(1<<27)|(1<<28)) +/* 0=sse3; 9=ssse3; 19=sse41; 20=sse42; 27=osxsave; 28=avx */ + +#define WANT_XCR ((1<<1)|(1<<2)) +/* 1=xmm; 2=ymm */ + +int supports(void) +{ + unsigned int cpuidmax,id0,id1,id2; + unsigned int familymodelstepping; + unsigned int feature1,feature2,feature3; + unsigned int xcrlow,xcrhigh; + + CPUID(0,0,cpuidmax,id0,id1,id2); + if (cpuidmax < 1) return 0; + + CPUID(1,0,familymodelstepping,feature1,feature2,feature3); + if (WANT_1_2 != (WANT_1_2 & feature2)) return 0; + if (WANT_1_3 != (WANT_1_3 & feature3)) return 0; + + asm(".byte 15;.byte 1;.byte 208":"=a"(xcrlow),"=d"(xcrhigh):"c"(0)); + if (WANT_XCR != (WANT_XCR & xcrlow)) return 0; + + return 1; +} diff --git a/lib-25519/lib25519/compilers/default b/lib-25519/lib25519/compilers/default new file mode 100644 index 0000000000..c08737c062 --- /dev/null +++ b/lib-25519/lib25519/compilers/default @@ -0,0 +1,2 @@ +gcc -Wall -fPIC -fwrapv -O2 +clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 diff --git a/lib-25519/lib25519/configure b/lib-25519/lib25519/configure new file mode 100755 index 0000000000..9e159acad9 --- /dev/null +++ b/lib-25519/lib25519/configure @@ -0,0 +1,1159 @@ +#!/usr/bin/env python3 + +import os +import shutil +import sys +import platform +import subprocess +import tempfile +import hashlib +import re + +def sha512(s): + h = hashlib.sha512() + h.update(s) + return h.digest() + +prefix = '/usr/local' +clean = True +trim = True + +host = platform.machine() +host = ''.join(c for c in host if c in '_0123456789abcdefghijklmnopqrstuvwxyz') + +def dirlinksym(dir,source,target): + with tempfile.TemporaryDirectory(dir=dir) as t: + os.symlink(target,'%s/symlink' % t) + os.rename('%s/symlink' % t,'%s/%s' % (dir,source)) + +makefile = '' +librandombytes = 'randombytes_kernel' +libcpucycles = 'cpucycles' +linktype = 'so' + +for arg in sys.argv[1:]: + if arg.startswith('--prefix='): + prefix = arg[9:] + continue + if arg.startswith('--host='): + host = arg[8:] + host = host.split('-')[0] + continue + if arg == '--clean': + clean = True + continue + if arg == '--noclean': + clean = False + continue + if arg == '--trim': + trim = True + continue + if arg == '--notrim': + trim = False + continue + if arg == '--staticbinaries': + linktype = 'a' # binaries usable by themselves + continue + if arg == '--nostaticbinaries': + linktype = 'so' # save disk space + continue + raise ValueError('unrecognized argument %s' % arg) + +if host == 'x86_64': host = 'amd64' +if host == 'i686': host = 'x86' +if host == 'armv7': host = 'arm' + +echoargs = './configure' +echoargs += ' --prefix=%s' % prefix +echoargs += ' --host=%s' % host +if clean: echoargs += ' --clean' +if not clean: echoargs += ' --noclean' +if trim: echoargs += ' --trim' +if not trim: echoargs += ' --notrim' +if linktype == 'a': echoargs += ' --staticbinaries' +if linktype == 'so': echoargs += ' --nostaticbinaries' +print(echoargs) + +if prefix[0] != '/': + raise ValueError('prefix %s is not an absolute path' % prefix) + +rpath = None +# XXX: rpath = '%s/lib' % prefix + +if clean: + shutil.rmtree('build/%s' % host,ignore_errors=True) + +os.makedirs('build/%s' % host,exist_ok=True) +os.makedirs('build/%s/package/bin' % host,exist_ok=True) +os.makedirs('build/%s/package/lib' % host,exist_ok=True) +os.makedirs('build/%s/package/include' % host,exist_ok=True) + +def copytree(src,dst,acceptfn=None): + # starting with python 3.8 can use shutil.copytree + # with dirs_exist_ok=True + # but want to support older versions of python too + + os.makedirs(dst,exist_ok=True) + for fn in sorted(os.listdir(src)): + srcfn = '%s/%s' % (src,fn) + if os.path.isdir(srcfn): + dstfn = '%s/%s' % (dst,fn) + copytree(srcfn,dstfn) + else: + if acceptfn is not None: + if not acceptfn(fn): continue + dstfn = '%s/%s' % (dst,fn) + shutil.copy2(srcfn,dstfn) + shutil.copystat(src,dst) + +def acceptfn_shared(fn): + if fn.startswith('shared-'): return True + if fn.endswith('.S'): return True + if fn.endswith('.h'): return True + if fn.endswith('.data'): return True + return False + +def acceptfn_nonshared(fn): + if fn.startswith('shared-'): + if fn.endswith('.c'): return False + return True + if not fn.endswith('.S'): return True + return False + +shutil.copy2('api','build/%s/api' % host) +copytree('scripts-build','build/%s/scripts' % host) +copytree('cpuid','build/%s/cpuid' % host) +copytree('priority','build/%s/priority' % host) + +os.makedirs('build/%s/include-build' % host,exist_ok=True) +shutil.copy2('randombytes/randombytes.h','build/%s/include-build/randombytes.h' % host) +shutil.copy2('cpucycles/cpucycles.h','build/%s/include-build/cpucycles.h' % host) + +for bits in 8,16,32,64: + with open('build/%s/include-build/crypto_int%d.h' % (host,bits),'w') as f: + f.write('#include \n') + f.write('#define crypto_int%d int%d_t' % (bits,bits)) + with open('build/%s/include-build/crypto_uint%d.h' % (host,bits),'w') as f: + f.write('#include \n') + f.write('#define crypto_uint%d uint%d_t' % (bits,bits)) + +def impl2symbol(i): + return i.replace('-','').replace('_','') + +# ----- compilers + +def compilerversion(c): + try: + p = subprocess.Popen(c.split()+['--version'],stdout=subprocess.PIPE,stderr=subprocess.STDOUT,universal_newlines=True) + out,err = p.communicate() + assert not err + assert not p.returncode + return out + except: + pass + +compilerversionline = {} +compilers = {} +for arch in sorted(os.listdir('compilers')): + if arch.endswith('.c'): continue + if arch == 'default' or arch == host or arch.startswith('%s+' % host): + with open('compilers/%s' % arch) as f: + for c in f.readlines(): + c = c.strip() + cv = compilerversion(c) + if cv == None: + print('skipping %s compiler %s' % (arch,c)) + continue + if arch not in compilers: compilers[arch] = [] + compilers[arch] += [c] + cv = (c+'\n'+cv).strip().replace('\n','; ') + compilerversionline[arch,c] = cv + print('using %s compiler %s' % (arch,cv)) + +firstcompiler = compilers['default'][0] + +compilerabbrev = {} +i = 0 +for arch in sorted(compilers): + for compiler in compilers[arch]: + compilerabbrev[arch,compiler] = 'C%d'%i + i += 1 + print('abbreviating %s = %s %s' % (compilerabbrev[arch,compiler],arch,compiler)) + +os.makedirs('build/%s/compilerarch' % host,exist_ok=True) +for arch,compiler in compilerabbrev: + with open('build/%s/compilerarch/%s' % (host,compilerabbrev[arch,compiler]),'w') as f: + f.write('%s\n' % arch) + +os.makedirs('build/%s/compilerversion' % host,exist_ok=True) +for arch,compiler in compilerabbrev: + with open('build/%s/compilerversion/%s' % (host,compilerabbrev[arch,compiler]),'w') as f: + f.write('%s\n' % compilerversionline[arch,compiler]) + +with open('build/%s/scripts/compiledefault' % host,'w') as f: + f.write('#!/bin/sh\n') + f.write('\n') + f.write('dir="$1"; shift\n') + f.write('base="$1"; shift\n') + f.write('ext="$1"; shift\n') + f.write('\n') + f.write('cd "$dir" && \\\n') + f.write('%s \\\n' % firstcompiler) + f.write(' -fvisibility=hidden \\\n') + f.write(' "$@" \\\n') + f.write(' -c "$base.$ext"\n') +os.chmod('build/%s/scripts/compiledefault' % host,0o755) + +with open('build/%s/scripts/compile' % host,'w') as f: + f.write('#!/bin/sh\n') + f.write('opic="$1"; shift\n') + f.write('base="$1"; shift\n') + f.write('ext="$1"; shift\n') + f.write('\n') + f.write('cd "$opic" || exit 1\n') + f.write('compiler=`cat compiler`\n') + f.write('opi=`dirname $opic`\n') + f.write('op=`dirname $opi`\n') + f.write('o=`dirname $op`\n') + f.write('p=`basename $op`\n') + f.write('iunder=`basename $opi | tr -d _-`\n') + f.write('c=`basename $opic`\n') + f.write('namespace=lib25519_${o}_${p}_${iunder}_${c}\n') + f.write('shared_namespace=lib25519_${o}_${p}_${iunder}_shared\n') + f.write('\n') + f.write('if $compiler \\\n') + f.write(' -I ../../../../include-build \\\n') + f.write(' -fvisibility=hidden \\\n') + f.write(' -D"CRYPTO_NAMESPACE(name)=${namespace}_##name" \\\n') + f.write(' -D"_CRYPTO_NAMESPACE(name)=_${namespace}_##name" \\\n') + f.write(' -D"CRYPTO_SHARED_NAMESPACE(name)=${shared_namespace}_##name" \\\n') + f.write(' -D"_CRYPTO_SHARED_NAMESPACE(name)=_${shared_namespace}_##name" \\\n') + f.write(' -c "$base.$ext" \\\n') + f.write(' > "$base.o.compileoutput" 2>&1 \n') + f.write('then\n') + f.write(' cat "$base.o.compileoutput"\n') + f.write('else\n') + f.write(' case "$?" in\n') + f.write(' 111)\n') + f.write(' # maybe someday compilers can be convinced\n') + f.write(' # to use exit code 111 for temporary failures\n') + f.write(' exit 111\n') + f.write(' ;;\n') + f.write(' *)\n') + f.write(' : > "$base.o"\n') + f.write(' touch "$base.o.compilefailed"\n') + f.write(' esac\n') + f.write('fi\n') +os.chmod('build/%s/scripts/compile' % host,0o755) + +# ----- run-time checks for whether host actually supports compiler + +copytree('compilers','build/%s/compilers' % host) + +for arch in sorted(compilers): + if arch == 'default': continue + assert os.path.exists('compilers/%s.c'%arch) + + arch_csymbol = ''.join(x if x in '0123456789abcdefghijklmnopqrstuvwxyz' else '_' for x in arch) + + M = '\n' + M += 'compilers/%s.o: compilers/%s.c\n' % (arch,arch) + M += '\tscripts/compiledefault compilers %s c -Dsupports=lib25519_supports_%s\n' % (arch,arch_csymbol) + makefile = M + makefile + +M = '\n' +M += 'compilers-all: %s\n' % ' '.join('compilers/%s.o'%arch for arch in sorted(compilers) if arch != 'default') +M += '\ttouch compilers-all\n' +makefile = M + makefile + +# ----- crypto + +operations = [] +primitives = {} +sizes = {} +exports = {} +prototypes = {} + +with open('api') as f: + for line in f: + line = line.strip() + if line.startswith('crypto_'): + x = line.split() + x = x[0].split('/') + assert len(x) == 2 + o = x[0].split('_')[1] + if o not in operations: operations += [o] + p = x[1] + if o not in primitives: primitives[o] = [] + primitives[o] += [p] + continue + if line.startswith('#define '): + x = line.split(' ') + x = x[1].split('_') + assert len(x) == 4 + assert x[0] == 'crypto' + o = x[1] + p = x[2] + if (o,p) not in sizes: sizes[o,p] = '' + sizes[o,p] += line+'\n' + continue + if line.endswith(');'): + fun,args = line[:-2].split('(') + rettype,fun = fun.split() + fun = fun.split('_') + o = fun[1] + assert fun[0] == 'crypto' + if o not in exports: exports[o] = [] + exports[o] += ['_'.join(fun[1:])] + if o not in prototypes: prototypes[o] = [] + prototypes[o] += [(rettype,fun,args)] + +with open('hdoc') as f: + hfile = f.read() + +hfile += """ +#ifndef lib25519_h +#define lib25519_h + +#ifdef __cplusplus +extern "C" { +#endif +""" + +with open('version') as f: + version = f.readlines()[0].strip() + +def cstring(x): + return '"%s"' % x.replace('\\','\\\\').replace('"','\\"').replace('\n','\\n') + +hfile += '\n' +hfile += '#define lib25519_version %s\n' % cstring(version) +hfile += '#define lib25519_arch %s\n' % cstring(host) +hfile += '\n' +hfile += 'extern void lib25519_cpuid(unsigned int *,long long);\n' + +for o in operations: + for ppos,p in enumerate(primitives[o]): + if len(sizes[o,p]) > 0: + S = re.sub(' crypto_',' lib25519_',sizes[o,p]) + if ppos == 0: + hfile += '\n' + hfile += re.sub('lib25519_%s_%s_'%(o,p),'lib25519_%s_'%o,S) + hfile += '\n' + hfile += S + + for rettype,fun,args in prototypes[o]: + shortfun = '_'.join(fun[1:]) + pshortfun = '_'.join([o,p]+fun[2:]) + if ppos == 0: + hfile += '\n' + hfile += '#define lib25519_%s lib25519_%s\n' % (shortfun,pshortfun) + hfile += '#define lib25519_dispatch_%s lib25519_dispatch_%s\n' % (shortfun,pshortfun) + hfile += '\n' + hfile += 'extern %s lib25519_%s(%s);\n' % (rettype,pshortfun,args) + hfile += 'extern %s (*lib25519_dispatch_%s(long long))(%s);\n' % (rettype,pshortfun,args) + + if ppos == 0: + hfile += '\n' + hfile += '#define lib25519_%s_implementation lib25519_%s_%s_implementation\n' % (o,o,p) + hfile += '#define lib25519_%s_compiler lib25519_%s_%s_compiler\n' % (o,o,p) + hfile += '#define lib25519_dispatch_%s_implementation lib25519_dispatch_%s_%s_implementation\n' % (o,o,p) + hfile += '#define lib25519_dispatch_%s_compiler lib25519_dispatch_%s_%s_compiler\n' % (o,o,p) + hfile += '#define lib25519_numimpl_%s lib25519_numimpl_%s_%s\n' % (o,o,p) + hfile += '\n' + hfile += 'extern const char *lib25519_%s_%s_implementation(void);\n' % (o,p) + hfile += 'extern const char *lib25519_%s_%s_compiler(void);\n' % (o,p) + hfile += 'extern const char *lib25519_dispatch_%s_%s_implementation(long long);\n' % (o,p) + hfile += 'extern const char *lib25519_dispatch_%s_%s_compiler(long long);\n' % (o,p) + hfile += 'extern long long lib25519_numimpl_%s_%s(void);\n' % (o,p) + +hfile += """ +#ifdef __cplusplus +} +#endif + +#endif +""" + +with open('build/%s/package/include/lib25519.h' % host,'w') as f: + f.write(hfile) +os.chmod('build/%s/package/include/lib25519.h' % host,0o644) + +for o in operations: + for p in primitives[o]: + cryptoh = '' + cryptoh += '#ifndef crypto_%s_%s_h\n' % (o,p) + cryptoh += '#define crypto_%s_%s_h\n' % (o,p) + cryptoh += '\n' + for rettype,fun,args in prototypes[o]: + pshortfun = '_'.join([o,p]+fun[2:]) + cryptoh += '#define crypto_%s lib25519_%s\n' % (pshortfun,pshortfun) + cryptoh += '\n' + cryptoh += sizes[o,p] + cryptoh += '\n' + for rettype,fun,args in prototypes[o]: + pshortfun = '_'.join([o,p]+fun[2:]) + cryptoh += 'extern %s crypto_%s(%s);\n' % (rettype,pshortfun,args) + cryptoh += '\n' + cryptoh += '#endif\n' + + with open('build/%s/include-build/crypto_%s_%s.h' % (host,o,p),'w') as f: + f.write(cryptoh) + +doth = {} +for o in operations: + for p in primitives[o]: + result = '' + result += '#ifndef crypto_%s_h\n' % o + result += '#define crypto_%s_h\n' % o + result += '\n' + for m in exports[o]: + result += '#define crypto_%s CRYPTO_NAMESPACE(%s)\n' % (m,m) + result += '\n' + result += sizes[o,p] + result += re.sub('crypto_%s_%s_'%(o,p),'crypto_%s_'%o,sizes[o,p]) + result += '\n' + for rettype,fun,args in prototypes[o]: + result += 'extern %s %s(%s) __attribute__((visibility("default")));\n' % (rettype,'_'.join(fun),args) + result += '\n' + result += '#endif\n' + doth[o,p] = result + +impls = {} +for o in operations: + for p in primitives[o]: + impls[o,p] = [] + for i in sorted(os.listdir('crypto_%s/%s' % (o,p))): + impldir = 'crypto_%s/%s/%s' % (o,p,i) + if not os.path.isdir(impldir): continue + if os.stat(impldir).st_mode & 0o1000 == 0o1000: + print('skipping sticky %s' % impldir) + continue + + implarch = None + if os.path.exists('%s/architectures' % impldir): + with open('%s/architectures' % impldir) as f: + for line in f: + line = line.strip().split() + if len(line) == 0: continue + if line[0] != host: continue + implarch = line + else: + implarch = [host] + + if implarch == None: continue + assert implarch[0] == host + + impls[o,p] += [(i,impldir,implarch)] + +undisciplined = set() +file_hash = {} +inclusions = {} +namespace_defines = {} +namespace_uses = {} +namespace_definedin = {} + +def file_process(dir,fn,substitutes={}): + if (dir,fn) in file_hash: return + + if fn in substitutes: + x = substitutes[fn] + else: + with open(dir+'/'+fn) as f: + x = f.read() + + file_hash[dir,fn] = sha512(x.encode('utf8')) + inclusions[dir,fn] = [] + namespace_defines[dir,fn] = [] + namespace_uses[dir,fn] = [] + + for line in x.splitlines(): + line = line.split() + + if line[:3] == ['//','linker','define']: + for x in line[3:]: + namespace_defines[dir,fn] += [x] + if (dir,x) in namespace_definedin: + undisciplined.add(dir) + namespace_definedin[dir,x] = fn + + if line[:3] == ['//','linker','use']: + for x in line[3:]: + namespace_uses[dir,fn] += [x] + + if line[:1] != ['#include']: continue + if len(line) < 2: continue + subfn = line[1] + if not subfn.startswith('"'): continue + if not subfn.endswith('"'): continue + subfn = subfn[1:-1] + if subfn == 'randombytes.h': continue + if subfn.startswith('crypto_') and subfn not in substitutes: continue + inclusions[dir,fn] += [subfn] + file_process(dir,subfn,substitutes) + +checksum_cache = {} +checksum_inprogress = set() +def checksum(dir,fn): + if dir in undisciplined: + return os.urandom(32) + if (dir,fn) not in checksum_cache: + if (dir,fn) in checksum_inprogress: + undisciplined.add(dir) + return os.urandom(32) + checksum_inprogress.add((dir,fn)) + result = file_hash[dir,fn] + for subfn in inclusions[dir,fn]: + result += checksum(dir,subfn) + for symbol in namespace_uses[dir,fn]: + if (dir,symbol) in namespace_definedin: + result += checksum(dir,namespace_definedin[dir,symbol]) + result = sha512(result) + checksum_cache[dir,fn] = result + checksum_inprogress.remove((dir,fn)) + return checksum_cache[dir,fn] + +checksum_context = {} + +for o in operations: + for p in primitives[o]: + for i,impldir,implarch in impls[o,p]: + for fn in sorted(os.listdir(impldir)): + if fn.endswith('.c') or fn.endswith('.S'): + file_process(impldir,fn,substitutes={'crypto_%s.h'%o:doth[o,p]}) + for fn in sorted(os.listdir(impldir)): + if fn.endswith('.c') or fn.endswith('.S'): + c = checksum(impldir,fn) + if c not in checksum_context: + checksum_context[c] = [] + checksum_context[c] += [(o,p,i,impldir,implarch,fn)] + +def copywithinclusions(targetdir,dir,fn,substitutes={}): + if fn in substitutes: + with open(targetdir+'/'+fn,'w') as f: + f.write(substitutes[fn]) + shutil.copystat(dir,targetdir+'/'+fn) + else: + shutil.copy2(dir+'/'+fn,targetdir+'/'+fn) + for subfn in inclusions[dir,fn]: + copywithinclusions(targetdir,dir,subfn,substitutes) + +unified_files = {} +# crypto_o/p/i/fn will be unified across multiple (o,p,i,fn) +# if fn in unified_files[o,p,i] + +for o in operations: + for p in primitives[o]: + for i,impldir,implarch in impls[o,p]: + unified_files[o,p,i] = set() + unified_symbols = set() + for fn in sorted(os.listdir(impldir)): + if not(fn.endswith('.S') or fn.endswith('.c')): continue + if len(namespace_defines[impldir,fn]) == 0: continue + c = checksum(impldir,fn) + if c not in checksum_context: continue + if len(checksum_context[c]) == 1: continue + unified_files[o,p,i].add(fn) + for symbol in namespace_defines[impldir,fn]: + unified_symbols.add(symbol) + + progress = True + while progress: + progress = False + for fn in sorted(unified_files[o,p,i]): + if any(symbol not in unified_symbols for symbol in namespace_uses[impldir,fn]): + progress = True + unified_files[o,p,i].remove(fn) + for symbol in namespace_defines[impldir,fn]: + unified_symbols.remove(symbol) + +unified_built = set() +checksum_unified = {} + +unified_counter = {} + +def unified_dir(o,p,i,fn): + allowedchars = '0123456789' + allowedchars += 'abcdefghijklmnopqrstuvwxyz' + allowedchars += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + base = ''.join(c for c in fn if c in allowedchars) + if len(base) == 0: base = 'x' + + if base not in unified_counter: + unified_counter[base] = 0 + unified_counter[base] += 1 + return 'unified/%s/%d' % (base,unified_counter[base]) + +for o in operations: + for p in primitives[o]: + for i,impldir,implarch in impls[o,p]: + if impldir in undisciplined: + print('warning: undisciplined %s' % impldir) + unified_files[o,p,i] = [] + + for fn in unified_files[o,p,i]: + if acceptfn_shared(fn): + c = checksum(impldir,fn) + if c not in checksum_unified: + checksum_unified[c] = unified_dir(o,p,i,fn) + else: + for arch in compilers: + if any(implarchreq not in arch.split('+')[1:] for implarchreq in implarch[1:]): + continue + for compiler in compilers[arch]: + c = checksum(impldir,fn) + if (c,compiler) not in checksum_unified: + checksum_unified[c,compiler] = unified_dir(o,p,i,fn) + +ofiles = [] +opicdirs = [] +builddirs = [] + +opicdir2dependencies = {} + +for o in operations: + for p in primitives[o]: + for i,impldir,implarch in impls[o,p]: + builtshared = False + needshared = False + shareddeps = [] + + for arch in compilers: + if any(implarchreq not in arch.split('+')[1:] for implarchreq in implarch[1:]): + continue + + for compiler in compilers[arch]: + if not builtshared: + shareddeps += ['%s/%s/%s/shared' % (o,p,i)] + + builddirs += ['%s/%s/%s/shared' % (o,p,i)] + shared_builddir = 'build/%s/%s/%s/%s/shared' % (host,o,p,i) + os.makedirs(shared_builddir,exist_ok=True) + copytree(impldir,shared_builddir,acceptfn_shared) + + nonunified_shared_compiler = compiler + for fn2 in sorted(unified_files[o,p,i]): + if not acceptfn_shared(fn2): continue + for symbol in namespace_defines[impldir,fn2]: + c2 = checksum(impldir,fn2) + nonunified_shared_compiler += ' -Dlib25519_%s_%s_%s_%s_%s=lib25519_%s_%s_%s' % ( + o,p,impl2symbol(i),'shared',symbol, + checksum_unified[c2].replace('/','_'),'shared',symbol + ) + with open('%s/compiler' % shared_builddir,'w') as f: + f.write(nonunified_shared_compiler) + + for fn in sorted(os.listdir(impldir)): + if not acceptfn_shared(fn): continue + if fn.endswith('.S') or fn.endswith('.c'): + needshared = True + + base = fn[:-2] + ext = fn[-1:] + + if fn in unified_files[o,p,i]: + if not acceptfn_shared(fn): continue + c = checksum(impldir,fn) + shareddeps += ['%s/shared' % checksum_unified[c]] + if checksum_unified[c] not in unified_built: + builddirs += ['%s/shared' % checksum_unified[c]] + unifieddir = 'build/%s/%s/shared' % (host,checksum_unified[c]) + os.makedirs(unifieddir,exist_ok=True) + copywithinclusions(unifieddir,impldir,fn,substitutes={'crypto_%s.h'%o:doth[o,p]}) + unified_shared_compiler = compiler + for fn2 in sorted(unified_files[o,p,i]): + if not acceptfn_shared(fn2): continue + for symbol in namespace_defines[impldir,fn2]: + c2 = checksum(impldir,fn2) + unified_shared_compiler += ' -Dlib25519_%s_%s_%s=lib25519_%s_%s_%s' % ( + checksum_unified[c].replace('/','_'),'shared',symbol, + checksum_unified[c2].replace('/','_'),'shared',symbol + ) + with open('%s/compiler' % unifieddir,'w') as f: + f.write(unified_shared_compiler) + makefile += '\n' + ofiles += ['%s/shared/%s.o' % (checksum_unified[c],base)] + makefile += '%s/shared/%s.o: %s/shared/%s\n' % (checksum_unified[c],base,checksum_unified[c],fn) + makefile += '\tscripts/compile %s/shared %s %s\n' % (checksum_unified[c],base,ext) + unified_built.add(checksum_unified[c]) + else: + makefile += '\n' + ofiles += ['%s/%s/%s/shared/%s.o' % (o,p,i,base)] + makefile += '%s/%s/%s/shared/%s.o: %s/%s/%s/shared/%s\n' % (o,p,i,base,o,p,i,fn) + makefile += '\tscripts/compile %s/%s/%s/shared %s %s\n' % (o,p,i,base,ext) + + builtshared = True + + dependencies = list(shareddeps) if needshared else [] + + compilerdir = compilerabbrev[arch,compiler] + + opicdir = '%s/%s/%s/%s' % (o,p,i,compilerdir) + opicdirs += [opicdir] + builddirs += [opicdir] + builddir = 'build/%s/%s/%s/%s/%s' % (host,o,p,i,compilerdir) + os.makedirs(builddir,exist_ok=True) + copytree(impldir,builddir,acceptfn_nonshared) + + nonunified_nonshared_compiler = compiler + for fn in sorted(unified_files[o,p,i]): + for symbol in namespace_defines[impldir,fn]: + c = checksum(impldir,fn) + if acceptfn_shared(fn): + nonunified_nonshared_compiler += ' -Dlib25519_%s_%s_%s_%s_%s=lib25519_%s_%s_%s' % ( + o,p,impl2symbol(i),'shared',symbol, + checksum_unified[c].replace('/','_'),'shared',symbol + ) + else: + nonunified_nonshared_compiler += ' -Dlib25519_%s_%s_%s_%s_%s=lib25519_%s_%s_%s' % ( + o,p,impl2symbol(i),compilerdir,symbol, + checksum_unified[c,compiler].replace('/','_'),compilerdir,symbol + ) + + with open('%s/crypto_%s.h' % (builddir,o),'w') as f: + f.write(doth[o,p]) + with open('%s/compiler' % builddir,'w') as f: + f.write(nonunified_nonshared_compiler) + + for fn in sorted(os.listdir(impldir)): + if not acceptfn_nonshared(fn): continue + if fn.endswith('.c'): + base = fn[:-2] + ext = fn[-1:] + + if fn in unified_files[o,p,i]: + if not acceptfn_nonshared(fn): continue + c = checksum(impldir,fn) + dependencies += ['%s/%s' % (checksum_unified[c,compiler],compilerdir)] + if checksum_unified[c,compiler] not in unified_built: + unifieddir = 'build/%s/%s/%s' % (host,checksum_unified[c,compiler],compilerdir) + builddirs += ['%s/%s' % (checksum_unified[c,compiler],compilerdir)] + os.makedirs(unifieddir,exist_ok=True) + copywithinclusions(unifieddir,impldir,fn,substitutes={'crypto_%s.h'%o:doth[o,p]}) + unified_nonshared_compiler = compiler + for fn2 in sorted(unified_files[o,p,i]): + for symbol in namespace_defines[impldir,fn2]: + c2 = checksum(impldir,fn2) + if acceptfn_shared(fn2): + unified_nonshared_compiler += ' -Dlib25519_%s_%s_%s=lib25519_%s_%s_%s' % ( + checksum_unified[c,compiler].replace('/','_'),'shared',symbol, + checksum_unified[c2].replace('/','_'),'shared',symbol + ) + else: + unified_nonshared_compiler += ' -Dlib25519_%s_%s_%s=lib25519_%s_%s_%s' % ( + checksum_unified[c,compiler].replace('/','_'),compilerdir,symbol, + checksum_unified[c2,compiler].replace('/','_'),compilerdir,symbol + ) + with open('%s/compiler' % unifieddir,'w') as f: + f.write(unified_nonshared_compiler) + makefile += '\n' + ofiles += ['%s/%s/%s.o' % (checksum_unified[c,compiler],compilerdir,base)] + makefile += '%s/%s/%s.o: %s/%s/%s\n' % (checksum_unified[c,compiler],compilerdir,base,checksum_unified[c,compiler],compilerdir,fn) + makefile += '\tscripts/compile %s/%s %s %s\n' % (checksum_unified[c,compiler],compilerdir,base,ext) + unified_built.add(checksum_unified[c,compiler]) + else: + makefile += '\n' + ofiles += ['%s/%s/%s/%s/%s.o' % (o,p,i,compilerdir,base)] + makefile += '%s/%s/%s/%s/%s.o: %s/%s/%s/%s/%s\n' % (o,p,i,compilerdir,base,o,p,i,compilerdir,fn) + makefile += '\tscripts/compile %s/%s/%s/%s %s %s\n' % (o,p,i,compilerdir,base,ext) + + opicdir2dependencies[opicdir] = dependencies + if len(dependencies) > 0: + with open(builddir+'/dependencies','w') as f: + f.write('\n'.join(dependencies)) + +# ----- dispatch + +with open('build/%s/opicdirs'%host,'w') as f: + for opicdir in opicdirs: + f.write(opicdir+'\n') + +M = 'compiledimplementations: opicdirs scripts/compiledimplementations \\\n' +for opicdir in opicdirs: + M += '%s/allcompiled %s/warnings \\\n' % (opicdir,opicdir) +M += '\n' +M += '\tscripts/compiledimplementations < opicdirs > compiledimplementations\n' +M += '\n' + +for opicdir in opicdirs: + if len(opicdir2dependencies[opicdir]) > 0: + dependencies_compiled = ' '.join(builddir+'/allcompiled' for builddir in opicdir2dependencies[opicdir]) + M += '%s/allcompiled: %s\n' % (opicdir,dependencies_compiled) + M += '\n' + +for builddir in builddirs: + builddir_ofiles = ' '.join(ofile for ofile in ofiles if ofile.startswith(builddir+'/')) + M += '%s/allcompiled: %s\n' % (builddir,builddir_ofiles) + M += '\ttouch %s/allcompiled\n' % builddir + M += '\n' + +for opicdir in opicdirs: + M += '%s/warnings: %s/warnings-namespace %s/warnings-insns\n' % (opicdir,opicdir,opicdir) + M += '\tcat %s/warnings-namespace %s/warnings-insns > %s/warnings\n' % (opicdir,opicdir,opicdir) + M += '\n' + +for opicdir in opicdirs: + M += '%s/warnings-insns: %s/allcompiled scripts/checkinsns\n' % (opicdir,opicdir) + M += '\tscripts/checkinsns %s %s\n' % (host,opicdir) + M += '\n' + +for opicdir in opicdirs: + M += '%s/warnings-namespace: %s/allcompiled scripts/checknamespace\n' % (opicdir,opicdir) + M += '\tscripts/checknamespace lib25519 %s\n' % (opicdir) + M += '\n' + +makefile = M + makefile + +selectedlist = ' '.join('selected/%s_%s' % (o,p) for o in operations for p in primitives[o]) +M = 'usedimplementations: scripts/usedimplementations %s\n' % selectedlist +M += '\tscripts/usedimplementations %s > usedimplementations\n' % selectedlist +M += '\n' +makefile = M + makefile + +os.makedirs('build/%s/selected' % host,exist_ok=True) +M = '' +for o in operations: + for p in primitives[o]: + M += 'selected/%s_%s: scripts/selected compiledimplementations\n' % (o,p) + M += '\tscripts/selected %s %s %s %s < compiledimplementations > selected/%s_%s\n' % (o,p,host,trim,o,p) + M += '\n' +makefile = M + makefile + +for goal in 'auto','manual': + os.makedirs('build/%s/dispatch-%s' % (host,goal),exist_ok=True) + + M = '' + for o in operations: + for p in primitives[o]: + M += 'dispatch-%s/%s_%s.c: scripts/dispatch selected/%s_%s\n' % (goal,o,p,o,p) + M += '\tscripts/dispatch %s %s %s %s < selected/%s_%s > dispatch-%s/%s_%s.c\n' % (goal,o,p,host,o,p,goal,o,p) + M += '\n' + makefile = M + makefile + + M = '' + for o in operations: + for p in primitives[o]: + M += 'dispatch-%s/%s_%s.o: dispatch-%s/%s_%s.c\n' % (goal,o,p,goal,o,p) + M += '\tscripts/compiledefault dispatch-%s %s_%s c\n' % (goal,o,p) + M += '\n' + makefile = M + makefile + + M = 'dispatch-%s-all: \\\n' % goal + for o in operations: + for p in primitives[o]: + M += 'dispatch-%s/%s_%s.o \\\n' % (goal,o,p) + M += '\n' + M += '\ttouch dispatch-%s-all\n' % goal + M += '\n' + makefile = M + makefile + +# ----- lib25519 + +M = 'odirs: usedimplementations\n' +M += '\t( cat usedimplementations; echo dispatch-auto; echo dispatch-manual; echo compilers; echo cpuid ) > odirs\n' +M += '\n' +makefile = M + makefile + +M = 'ofiles: scripts/ofiles odirs usedimplementations dispatch-auto-all dispatch-manual-all compilers-all cpuid-all\n' +M += '\tscripts/ofiles < odirs\n' +M += '\n' +makefile = M + makefile + +with open('build/%s/scripts/staticlib' % host,'w') as f: + f.write('#!/bin/sh\n') + f.write('\n') + f.write('rm -f package/lib/lib25519.a\n') + f.write('ar cr package/lib/lib25519.a ofiles/*.o\n') + f.write('ranlib package/lib/lib25519.a || :\n') + f.write('chmod 644 package/lib/lib25519.a\n') +os.chmod('build/%s/scripts/staticlib' % host,0o755) + +M = 'package/lib/lib25519.a: scripts/staticlib ofiles\n' +M += '\tscripts/staticlib\n' +M += '\n' +makefile = M + makefile + +with open('build/%s/scripts/sharedlib' % host,'w') as f: + f.write('#!/bin/sh\n') + f.write('\n') + f.write('%s -shared \\\n' % firstcompiler) + if rpath: + f.write(' -Wl,-rpath=%s \\\n' % rpath) + f.write(' -Wl,-soname,lib25519.so.1 \\\n') + f.write(' -o package/lib/lib25519.so.1 \\\n') + f.write(' ofiles/*.o\n') + f.write('chmod 644 package/lib/lib25519.so.1\n') +os.chmod('build/%s/scripts/sharedlib' % host,0o755) + +M = 'package/lib/lib25519.so.1: scripts/sharedlib ofiles\n' +M += '\tscripts/sharedlib\n' +M += '\n' +makefile = M + makefile + +M = 'package/lib/lib25519.so: package/lib/lib25519.so.1\n' +M += '\trm -f package/lib/lib25519.so\n' +M += '\tln -s lib25519.so.1 package/lib/lib25519.so\n' +M += '\n' +makefile = M + makefile + +# ----- librandombytes + +copytree('randombytes','build/%s/randombytes' % host) + +for r in 'devurandom',: + M = 'randombytes/%s.o: randombytes/%s.c\n' % (r,r) + M += '\tscripts/compiledefault randombytes %s c -I ../include-build\n' % r + M += '\n' +makefile = M + makefile + +with open('build/%s/randombytes/staticlib' % host,'w') as f: + f.write('#!/bin/sh\n') + f.write('\n') + f.write('rm -f package/lib/lib%s.a\n' % librandombytes) + f.write('ar cr package/lib/lib%s.a randombytes/*.o\n' % librandombytes) + f.write('ranlib package/lib/lib%s.a || :\n' % librandombytes) + f.write('chmod 644 package/lib/lib%s.a\n' % librandombytes) +os.chmod('build/%s/randombytes/staticlib' % host,0o755) + +M = 'package/lib/lib%s.a: randombytes/staticlib randombytes/devurandom.o\n' % librandombytes +M += '\trandombytes/staticlib\n' +M += '\n' +makefile = M + makefile + +with open('build/%s/randombytes/sharedlib' % host,'w') as f: + f.write('#!/bin/sh\n') + f.write('\n') + f.write('%s -shared \\\n' % firstcompiler) + if rpath: + f.write(' -Wl,-rpath=%s \\\n' % rpath) + f.write(' -Wl,-soname,lib%s.so.1 \\\n' % librandombytes) + f.write(' -o package/lib/lib%s.so.1 \\\n' % librandombytes) + f.write(' randombytes/devurandom.o\n') + f.write('chmod 644 package/lib/lib%s.so.1\n' % librandombytes) +os.chmod('build/%s/randombytes/sharedlib' % host,0o755) + +M = 'package/lib/lib%s.so.1: randombytes/sharedlib randombytes/devurandom.o\n' % librandombytes +M += '\trandombytes/sharedlib\n' +M += '\n' +makefile = M + makefile + +M = 'package/lib/lib%s.so: package/lib/lib%s.so.1\n' % (librandombytes,librandombytes) +M += '\trm -f package/lib/lib%s.so\n' % librandombytes +M += '\tln -s lib%s.so.1 package/lib/lib%s.so\n' % (librandombytes,librandombytes) +M += '\n' +makefile = M + makefile + +# ----- cpuid + +cpuid = host +if not os.path.exists('cpuid/%s.c' % host): + cpuid = 'default' + +M = '\n' +M += 'cpuid-all: cpuid/%s.o\n' % cpuid +M += '\ttouch cpuid-all\n' +M += '\n' +M += 'cpuid/%s.o: cpuid/%s.c\n' % (cpuid,cpuid) +M += '\tscripts/compiledefault cpuid %s c\n' % cpuid +makefile += M + +# ----- libcpucycles + +os.makedirs('build/%s/cpucycles' % host,exist_ok=True) + +with open('build/%s/cpucycles/compile-ticks' % host,'w') as f: + f.write('#!/bin/sh\n') + f.write('arch="$1"; shift\n') + f.write('x="$1"; shift\n') + f.write('for source in try-"$arch"-"$x".c try-default-zero.c\n') + f.write('do\n') + f.write(' cp "$source" "$arch"-"$x".c\n') + f.write(' %s \\\n' % firstcompiler) + f.write(' -I ../include-build \\\n') + f.write(' -fvisibility=hidden \\\n') + f.write(' -Dticks=cpucycles_ticks_"$arch"_"$x" \\\n') + f.write(' -Dticks_setup=cpucycles_ticks_"$arch"_"$x"_setup \\\n') + f.write(' -c "$arch"-"$x".c\n') + f.write(' case $? in\n') + f.write(' 0) break ;;\n') + f.write(' 111) exit 111 ;;\n') + f.write(' esac\n') + f.write('done\n') +os.chmod('build/%s/cpucycles/compile-ticks' % host,0o755) + +cpucyclesoptions = [] +cpucyclesofiles = [] + +with open('cpucycles/options') as f: + for line in f: + line = line.strip() + if line == '': continue + if line[0] == '#': continue + base = line.split()[0] + if not os.path.exists('cpucycles/%s.c' % base): continue + cpucycles = base.split('-') + if len(cpucycles) != 2: continue + if cpucycles[0] not in (host,'default'): continue + cpucyclesoptions += [cpucycles] + +cpucyclesoptions += [['default','zero']] # must be last + +for cpucycles in cpucyclesoptions: + base = '-'.join(cpucycles) + cpucyclesofiles += ['cpucycles/%s.o' % base] + shutil.copy2('cpucycles/%s.c' % base,'build/%s/cpucycles/try-%s.c' % (host,base)) + M = 'cpucycles/%s.o: cpucycles/try-%s.c cpucycles/try-default-zero.c\n' % (base,base) + M += '\tcd cpucycles && ./compile-ticks %s %s\n' % (cpucycles[0],cpucycles[1]) + M += '\n' + makefile = M + makefile + +for fn in sorted(os.listdir('cpucycles')): + if not fn.endswith('.c'): continue + if '-' in fn: continue + base = fn[:-2] + cpucyclesofiles += ['cpucycles/%s.o' % base] + shutil.copy2('cpucycles/%s' % fn,'build/%s/cpucycles/%s' % (host,fn)) + M = 'cpucycles/%s.o: cpucycles/%s.c\n' % (base,base) + M += '\tscripts/compiledefault cpucycles %s c -I ../include-build\n' % base + M += '\n' + makefile = M + makefile + +with open('build/%s/cpucycles/options.inc' % host,'w') as f: + f.write('#define NUMOPTIONS %d\n' % len(cpucyclesoptions)) + f.write('#define DEFAULTOPTION (NUMOPTIONS-1)\n') + f.write('\n') + for cpucycles in cpucyclesoptions: + f.write('extern long long cpucycles_ticks_%s_%s_setup(void);\n' % (cpucycles[0],cpucycles[1])) + f.write('extern long long cpucycles_ticks_%s_%s(void);\n' % (cpucycles[0],cpucycles[1])) + f.write('\n') + f.write('struct {\n') + f.write(' const char *implementation;\n') + f.write(' long long (*ticks_setup)(void);\n') + f.write(' long long (*ticks)(void);\n') + f.write('} options[NUMOPTIONS] = {\n') + for cpucycles in cpucyclesoptions: + f.write('{ "%s-%s", cpucycles_ticks_%s_%s_setup, cpucycles_ticks_%s_%s },\n' % (cpucycles[0],cpucycles[1],cpucycles[0],cpucycles[1],cpucycles[0],cpucycles[1])) + f.write('} ;\n') + +with open('build/%s/cpucycles/staticlib' % host,'w') as f: + f.write('#!/bin/sh\n') + f.write('\n') + f.write('rm -f package/lib/lib%s.a\n' % libcpucycles) + f.write('ar cr package/lib/lib%s.a "$@"\n' % libcpucycles) + f.write('ranlib package/lib/lib%s.a || :\n' % libcpucycles) + f.write('chmod 644 package/lib/lib%s.a\n' % libcpucycles) +os.chmod('build/%s/cpucycles/staticlib' % host,0o755) + +M = 'package/lib/lib%s.a: cpucycles/staticlib %s\n' % (libcpucycles,' '.join(cpucyclesofiles)) +M += '\tcpucycles/staticlib %s\n' % ' '.join(cpucyclesofiles) +M += '\n' +makefile = M + makefile + +with open('build/%s/cpucycles/sharedlib' % host,'w') as f: + f.write('#!/bin/sh\n') + f.write('\n') + f.write('%s -shared \\\n' % firstcompiler) + if rpath: + f.write(' -Wl,-rpath=%s \\\n' % rpath) + f.write(' -Wl,-soname,lib%s.so.1 \\\n' % libcpucycles) + f.write(' -o package/lib/lib%s.so.1 \\\n' % libcpucycles) + f.write(' "$@"\n') + f.write('chmod 644 package/lib/lib%s.so.1\n' % libcpucycles) +os.chmod('build/%s/cpucycles/sharedlib' % host,0o755) + +M = 'package/lib/lib%s.so.1: cpucycles/sharedlib %s\n' % (libcpucycles,' '.join(cpucyclesofiles)) +M += '\tcpucycles/sharedlib %s\n' % ' '.join(cpucyclesofiles) +M += '\n' +makefile = M + makefile + +M = 'package/lib/lib%s.so: package/lib/lib%s.so.1\n' % (libcpucycles,libcpucycles) +M += '\trm -f package/lib/lib%s.so\n' % libcpucycles +M += '\tln -s lib%s.so.1 package/lib/lib%s.so\n' % (libcpucycles,libcpucycles) +M += '\n' +makefile = M + makefile + +# ----- command + +copytree('command','build/%s/command'%host) +dirlinksym('build/%s/command'%host,'bin','../package/bin') +dirlinksym('build/%s/command'%host,'lib','../package/lib') +dirlinksym('build/%s/command'%host,'include-build','../include-build') +dirlinksym('build/%s/command'%host,'include','../package/include') + +with open('build/%s/command/link' % host,'w') as f: + f.write('#!/bin/sh\n') + f.write('target="$1"; shift\n') + f.write('%s \\\n' % firstcompiler) + f.write(' -fvisibility=hidden \\\n') + f.write(' -o "$target" "$@"\n') +os.chmod('build/%s/command/link' % host,0o755) + +commands = [] + +for fn in sorted(os.listdir('command')): + if not fn.endswith('.c'): continue + + libs = set() + with open('command/%s' % fn) as f: + for line in f: + line = line.strip().split() + if len(line) < 1: continue + if line[0] != '#include': continue + if '-lcpucycles' in line: libs.add('libcpucycles') + if '-l25519' in line: libs.add('lib25519') + if '-lrandombytes_kernel' in line: libs.add('librandombytes_kernel') + + libs = sorted(libs) + # XXX: with more libs, might need non-default sort order for linking + + base = fn[:-2] + M = 'command/%s.o: command/%s.c\n' % (base,base) + M += '\tscripts/compiledefault command %s c -I include -I include-build\n' % base + M += '\n' + makefile = M + makefile + M = 'package/bin/%s: command/%s.o%s\n' % (base,base,''.join(' package/lib/%s.%s' % (x,linktype) for x in libs)) + M += '\tcd command && ./link bin/%s %s.o%s\n' % (base,base,''.join(' lib/%s.%s' % (x,linktype) for x in libs)) + M += '\n' + makefile = M + makefile + commands += ['package/bin/%s' % base] + +M = 'commands: %s\n' % ' '.join(commands) +M += '\n' +makefile = M + makefile + +# ----- make install + +M = 'install: scripts/install default\n' +M += '\tscripts/install %s\n' % prefix +M += '\n' +makefile = M + makefile + +# ----- make default + +M = 'default: package/lib/lib25519.a package/lib/lib25519.so package/lib/lib25519.so.1 \\\n' +M += 'package/lib/lib%s.a package/lib/lib%s.so package/lib/lib%s.so.1 \\\n' % (librandombytes,librandombytes,librandombytes) +M += 'package/lib/lib%s.a package/lib/lib%s.so package/lib/lib%s.so.1 \\\n' % (libcpucycles,libcpucycles,libcpucycles) +M += 'commands\n' +M += '\n' +makefile = M + makefile + +with open('build/%s/Makefile' % host,'w') as f: + f.write(makefile) + +# ----- build/0, build/Makefile + +dirlinksym('build','0',host) + +with tempfile.TemporaryDirectory(dir='build') as t: + os.symlink(host,'%s/0' % t) + os.rename('%s/0' % t,'build/0') + +with open('build/Makefile','w') as f: + f.write('default:\n') + f.write('\tcd %s && $(MAKE)\n' % host) + f.write('\n') + f.write('install:\n') + f.write('\tcd %s && $(MAKE) install\n' % host) + f.write('\n') + f.write('clean:\n') + f.write('\trm -r %s\n' % host) diff --git a/lib-25519/lib25519/cpucycles/amd64-pmc.c b/lib-25519/lib25519/cpucycles/amd64-pmc.c new file mode 100644 index 0000000000..a71e0b1110 --- /dev/null +++ b/lib-25519/lib25519/cpucycles/amd64-pmc.c @@ -0,0 +1,46 @@ +#include +#include +#include +#include +#include +#include +#include + +static struct perf_event_attr attr; +static int fdperf = -1; +static struct perf_event_mmap_page *buf = 0; + +long long ticks_setup(void) +{ + if (fdperf == -1) { + attr.type = PERF_TYPE_HARDWARE; + attr.config = PERF_COUNT_HW_CPU_CYCLES; + attr.exclude_kernel = 1; + fdperf = syscall(__NR_perf_event_open,&attr,0,-1,-1,0); + if (fdperf == -1) return 0; + buf = mmap(NULL,sysconf(_SC_PAGESIZE),PROT_READ,MAP_SHARED,fdperf,0); + } + return -1; +} + +long long ticks(void) +{ + long long result; + unsigned int seq; + long long index; + long long offset; + + do { + seq = buf->lock; + asm volatile("" ::: "memory"); + index = buf->index; + offset = buf->offset; + asm volatile("rdpmc;shlq $32,%%rdx;orq %%rdx,%%rax" + : "=a"(result) : "c"(index-1) : "%rdx"); + asm volatile("" ::: "memory"); + } while (buf->lock != seq); + + result += offset; + result &= 0xffffffffffff; + return result; +} diff --git a/lib-25519/lib25519/cpucycles/amd64-tsc.c b/lib-25519/lib25519/cpucycles/amd64-tsc.c new file mode 100644 index 0000000000..dbf3148329 --- /dev/null +++ b/lib-25519/lib25519/cpucycles/amd64-tsc.c @@ -0,0 +1,12 @@ +long long ticks_setup(void) +{ + return -2; +} + +long long ticks(void) +{ + unsigned long long result; + asm volatile(".byte 15;.byte 49;shlq $32,%%rdx;orq %%rdx,%%rax" + : "=a"(result) :: "%rdx"); + return result; +} diff --git a/lib-25519/lib25519/cpucycles/cpucycles.h b/lib-25519/lib25519/cpucycles/cpucycles.h new file mode 100644 index 0000000000..c8d48c832d --- /dev/null +++ b/lib-25519/lib25519/cpucycles/cpucycles.h @@ -0,0 +1,9 @@ +#ifndef cpucycles_h +#define cpucycles_h + +extern long long (*cpucycles)(void) __attribute__((visibility("default")));; +extern long long cpucycles_init(void) __attribute__((visibility("default")));; +extern const char *cpucycles_implementation(void) __attribute__((visibility("default")));; +extern long long cpucycles_persecond(void) __attribute__((visibility("default")));; + +#endif diff --git a/lib-25519/lib25519/cpucycles/default-gettimeofday.c b/lib-25519/lib25519/cpucycles/default-gettimeofday.c new file mode 100644 index 0000000000..4e4c2deb6a --- /dev/null +++ b/lib-25519/lib25519/cpucycles/default-gettimeofday.c @@ -0,0 +1,19 @@ +#include +#include +#include + +long long ticks_setup(void) +{ + return 1000000; +} + +long long ticks(void) +{ + struct timeval t; + long long result; + gettimeofday(&t,(struct timezone *) 0); + result = t.tv_sec; + result *= 1000000; + result += t.tv_usec; + return result; +} diff --git a/lib-25519/lib25519/cpucycles/default-monotonic.c b/lib-25519/lib25519/cpucycles/default-monotonic.c new file mode 100644 index 0000000000..cfb5b80d85 --- /dev/null +++ b/lib-25519/lib25519/cpucycles/default-monotonic.c @@ -0,0 +1,18 @@ +#include +#include + +long long ticks_setup(void) +{ + return 1000000000; +} + +long long ticks(void) +{ + struct timespec t; + long long result; + clock_gettime(CLOCK_MONOTONIC,&t); + result = t.tv_sec; + result *= 1000000000; + result += t.tv_nsec; + return result; +} diff --git a/lib-25519/lib25519/cpucycles/default-zero.c b/lib-25519/lib25519/cpucycles/default-zero.c new file mode 100644 index 0000000000..53cc2f0254 --- /dev/null +++ b/lib-25519/lib25519/cpucycles/default-zero.c @@ -0,0 +1,9 @@ +long long ticks_setup(void) +{ + return 0; +} + +long long ticks(void) +{ + return 0; +} diff --git a/lib-25519/lib25519/cpucycles/options b/lib-25519/lib25519/cpucycles/options new file mode 100644 index 0000000000..3f554d60c4 --- /dev/null +++ b/lib-25519/lib25519/cpucycles/options @@ -0,0 +1,4 @@ +amd64-pmc +amd64-tsc +default-monotonic +default-gettimeofday diff --git a/lib-25519/lib25519/cpucycles/wrapper.c b/lib-25519/lib25519/cpucycles/wrapper.c new file mode 100644 index 0000000000..a71c386c78 --- /dev/null +++ b/lib-25519/lib25519/cpucycles/wrapper.c @@ -0,0 +1,216 @@ +#include +#include +#include "cpucycles.h" + +static double osfreq(void) +{ + FILE *f; + char *x; + double result; + int s; + + f = fopen("/etc/cpucyclespersecond", "r"); + if (f) { + s = fscanf(f,"%lf",&result); + fclose(f); + if (s > 0) return result; + } + + f = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed", "r"); + if (f) { + s = fscanf(f,"%lf",&result); + fclose(f); + if (s > 0) return 1000.0 * result; + } + + f = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq", "r"); + if (f) { + s = fscanf(f,"%lf",&result); + fclose(f); + if (s > 0) return 1000.0 * result; + } + + f = fopen("/sys/devices/system/cpu/cpu0/clock_tick", "r"); + if (f) { + s = fscanf(f,"%lf",&result); + fclose(f); + if (s > 0) return result; + } + + f = fopen("/proc/cpuinfo","r"); + if (f) { + for (;;) { + s = fscanf(f,"cpu MHz : %lf",&result); + if (s > 0) break; + if (s == 0) s = fscanf(f,"%*[^\n]\n"); + if (s < 0) { result = 0; break; } + } + fclose(f); + if (result) return 1000000.0 * result; + } + + f = fopen("/proc/cpuinfo","r"); + if (f) { + for (;;) { + s = fscanf(f,"clock : %lf",&result); + if (s > 0) break; + if (s == 0) s = fscanf(f,"%*[^\n]\n"); + if (s < 0) { result = 0; break; } + } + fclose(f); + if (result) return 1000000.0 * result; + } + + f = popen("sysctl hw.cpufrequency 2>/dev/null","r"); + if (f) { + s = fscanf(f,"hw.cpufrequency: %lf",&result); + pclose(f); + if (s > 0) if (result > 0) return result; + } + + f = popen("/usr/sbin/lsattr -E -l proc0 -a frequency 2>/dev/null","r"); + if (f) { + s = fscanf(f,"frequency %lf",&result); + pclose(f); + if (s > 0) return result; + } + + f = popen("/usr/sbin/psrinfo -v 2>/dev/null","r"); + if (f) { + for (;;) { + s = fscanf(f," The %*s processor operates at %lf MHz",&result); + if (s > 0) break; + if (s == 0) s = fscanf(f,"%*[^\n]\n"); + if (s < 0) { result = 0; break; } + } + pclose(f); + if (result) return 1000000.0 * result; + } + + x = getenv("cpucyclespersecond"); + if (x) { + s = sscanf(x,"%lf",&result); + if (s > 0) return result; + } + + return 0; +} + +static long long persecond = 0; +const char *implementation = "none"; + +long long (*cpucycles)(void) = cpucycles_init; + +const char *cpucycles_implementation(void) +{ + cpucycles(); + return implementation; +} + +long long cpucycles_persecond(void) +{ + cpucycles(); + return persecond; +} + +static double cpucycles_scaled_scaling = 0; +static long long (*cpucycles_scaled_from)(void) = 0; + +static long long cpucycles_scaled(void) +{ + return cpucycles_scaled_from()*cpucycles_scaled_scaling; +} + +#include "options.inc" + +#define CALLS 1000 + +long long cpucycles_init(void) +{ + long long precision[NUMOPTIONS]; + long long scaling[NUMOPTIONS]; + long long bestprecision; + long long bestopt; + + persecond = osfreq(); + + for (long long opt = 0;opt < NUMOPTIONS;++opt) { + long long freq = options[opt].ticks_setup(); + + // freq > 0: freq ticks per second + // freq == 0: do not use + // freq == -1: cycle counter (e.g., rdpmc) + // freq == -2: probably cycle counter (e.g., rdtsc) + // freq == -3: tick counter every N cycles for some unknown N + + precision[opt] = 0; + + if (freq > 0) { // means: freq ticks per second + scaling[opt] = persecond*1.0/freq; + } else if (freq == -1) { // means: cycle counter; e.g., rdpmc + scaling[opt] = 1.0; + } else if (freq == -2) { // means: probably cycle counter; e.g., rdtsc + scaling[opt] = 1.0; + } else { + continue; + } + + for (long long tries = 0;tries < 10;++tries) { + long long t[CALLS+1]; + long long ok = 1; + + if (scaling[opt] == 1.0) { + for (long long i = 0;i <= CALLS;++i) + t[i] = options[opt].ticks(); + } else { + double scalingopt = scaling[opt]; + for (long long i = 0;i <= CALLS;++i) + t[i] = options[opt].ticks()*scalingopt; + } + for (long long i = 0;i < CALLS;++i) + if (t[i] > t[i+1]) + ok = 0; + if (t[0] == t[CALLS]) + ok = 0; + + if (ok) { + long long smallestdiff = 0; + for (long long i = 0;i < CALLS;++i) { + long long diff = t[i+1]-t[i]; + if (diff <= 0) continue; + if (smallestdiff == 0 || diff < smallestdiff) + smallestdiff = diff; + } + precision[opt] = smallestdiff; + if (freq != -1) + precision[opt] += 100; + break; + } + + // otherwise keep trying + // since !ok can be caused by overflow + // or by core swap + } + } + + bestopt = DEFAULTOPTION; + bestprecision = 0; + for (long long opt = 0;opt < NUMOPTIONS;++opt) + if (precision[opt] > 0) + if (!bestprecision || precision[opt] < bestprecision) { + bestopt = opt; + bestprecision = precision[opt]; + } + + implementation = options[bestopt].implementation; + + if (scaling[bestopt] == 1.0) { + cpucycles = options[bestopt].ticks; + } else { + cpucycles_scaled_scaling = scaling[bestopt]; + cpucycles_scaled_from = options[bestopt].ticks; + cpucycles = cpucycles_scaled; + } + + return cpucycles(); +} diff --git a/lib-25519/lib25519/cpuid/amd64.c b/lib-25519/lib25519/cpuid/amd64.c new file mode 100644 index 0000000000..b572485407 --- /dev/null +++ b/lib-25519/lib25519/cpuid/amd64.c @@ -0,0 +1,73 @@ +#include + +#define CPUID(func,leaf,a,b,c,d) \ + __asm("cpuid":"=a"(a),"=b"(b),"=c"(c),"=d"(d):"a"(func),"c"(leaf):) + +__attribute__((visibility("default"))) +void lib25519_cpuid(unsigned int *result,long long resultlen) +{ + unsigned int a,b,c,d; + unsigned int cpuidmax,extendedcpuidmax; + int havexgetbv = 0; + + CPUID(0,0,a,b,c,d); + cpuidmax = a; + if (resultlen > 0) { *result++ = b; --resultlen; } + if (resultlen > 0) { *result++ = c; --resultlen; } + if (resultlen > 0) { *result++ = d; --resultlen; } + + a = b = c = d = 0; + CPUID(0x80000000,0,a,b,c,d); + extendedcpuidmax = a; + + a = b = c = d = 0; + if (extendedcpuidmax >= 0x80000002) CPUID(0x80000002,0,a,b,c,d); + if (resultlen > 0) { *result++ = a; --resultlen; } + if (resultlen > 0) { *result++ = b; --resultlen; } + if (resultlen > 0) { *result++ = c; --resultlen; } + if (resultlen > 0) { *result++ = d; --resultlen; } + + a = b = c = d = 0; + if (extendedcpuidmax >= 0x80000003) CPUID(0x80000003,0,a,b,c,d); + if (resultlen > 0) { *result++ = a; --resultlen; } + if (resultlen > 0) { *result++ = b; --resultlen; } + if (resultlen > 0) { *result++ = c; --resultlen; } + if (resultlen > 0) { *result++ = d; --resultlen; } + + a = b = c = d = 0; + if (extendedcpuidmax >= 0x80000004) CPUID(0x80000004,0,a,b,c,d); + if (resultlen > 0) { *result++ = a; --resultlen; } + if (resultlen > 0) { *result++ = b; --resultlen; } + if (resultlen > 0) { *result++ = c; --resultlen; } + if (resultlen > 0) { *result++ = d; --resultlen; } + + a = b = c = d = 0; + if (cpuidmax >= 1) CPUID(1,0,a,b,c,d); + if (resultlen > 0) { *result++ = a; --resultlen; } + if (resultlen > 0) { *result++ = b; --resultlen; } + if (resultlen > 0) { *result++ = c; --resultlen; } + if (resultlen > 0) { *result++ = d; --resultlen; } + /* 27=osxsave; 28=avx */ + if (((1<<27)|(1<<28)) == (((1<<27)|(1<<28)) & c)) + havexgetbv = 1; + + a = b = c = d = 0; + if (cpuidmax >= 7) CPUID(7,0,a,b,c,d); + if (resultlen > 0) { *result++ = a; --resultlen; } + if (resultlen > 0) { *result++ = b; --resultlen; } + if (resultlen > 0) { *result++ = c; --resultlen; } + if (resultlen > 0) { *result++ = d; --resultlen; } + + a = b = c = d = 0; + if (extendedcpuidmax >= 0x80000001) CPUID(0x80000001,0,a,b,c,d); + if (resultlen > 0) { *result++ = a; --resultlen; } + if (resultlen > 0) { *result++ = b; --resultlen; } + if (resultlen > 0) { *result++ = c; --resultlen; } + if (resultlen > 0) { *result++ = d; --resultlen; } + + a = b = c = d = 0; + if (havexgetbv) asm(".byte 15;.byte 1;.byte 208":"=a"(a),"=d"(d):"c"(0)); + if (resultlen > 0) { *result++ = a; --resultlen; } + + while (resultlen > 0) { *result++ = 0; --resultlen; } +} diff --git a/lib-25519/lib25519/cpuid/default.c b/lib-25519/lib25519/cpuid/default.c new file mode 100644 index 0000000000..e82011c9f0 --- /dev/null +++ b/lib-25519/lib25519/cpuid/default.c @@ -0,0 +1,7 @@ +#include + +__attribute__((visibility("default"))) +void lib25519_cpuid(unsigned int *result,long long resultlen) +{ + while (resultlen > 0) { *result++ = 0; --resultlen; } +} diff --git a/lib-25519/lib25519/crypto_dh/x25519/wrapper/dh.c b/lib-25519/lib25519/crypto_dh/x25519/wrapper/dh.c new file mode 100644 index 0000000000..48f4724c72 --- /dev/null +++ b/lib-25519/lib25519/crypto_dh/x25519/wrapper/dh.c @@ -0,0 +1,9 @@ +#include "crypto_nP_montgomery25519.h" +#include "crypto_dh.h" + +void crypto_dh(unsigned char *abshared, + const unsigned char *bobpk, + const unsigned char *alicesk) +{ + crypto_nP_montgomery25519(abshared,alicesk,bobpk); +} diff --git a/lib-25519/lib25519/crypto_dh/x25519/wrapper/keypair.c b/lib-25519/lib25519/crypto_dh/x25519/wrapper/keypair.c new file mode 100644 index 0000000000..a059152956 --- /dev/null +++ b/lib-25519/lib25519/crypto_dh/x25519/wrapper/keypair.c @@ -0,0 +1,9 @@ +#include "crypto_nG_montgomery25519.h" +#include "randombytes.h" +#include "crypto_dh.h" + +void crypto_dh_keypair(unsigned char *pk,unsigned char *sk) +{ + randombytes(sk,crypto_dh_SECRETKEYBYTES); + crypto_nG_montgomery25519(pk,sk); +} diff --git a/lib-25519/lib25519/crypto_hash/sha512/blocksplusavx/api.h b/lib-25519/lib25519/crypto_hash/sha512/blocksplusavx/api.h new file mode 120000 index 0000000000..ea89e0a421 --- /dev/null +++ b/lib-25519/lib25519/crypto_hash/sha512/blocksplusavx/api.h @@ -0,0 +1 @@ +../ref/api.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hash/sha512/blocksplusavx/architectures b/lib-25519/lib25519/crypto_hash/sha512/blocksplusavx/architectures new file mode 120000 index 0000000000..fd9d4fc548 --- /dev/null +++ b/lib-25519/lib25519/crypto_hash/sha512/blocksplusavx/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hash/sha512/blocksplusavx/hash.c b/lib-25519/lib25519/crypto_hash/sha512/blocksplusavx/hash.c new file mode 100644 index 0000000000..aadb89e18b --- /dev/null +++ b/lib-25519/lib25519/crypto_hash/sha512/blocksplusavx/hash.c @@ -0,0 +1,78 @@ +#include +#include "crypto_hashblocks_sha512.h" +#include "crypto_hash.h" + +#define blocks crypto_hashblocks_sha512 + +#define ALIGNED __attribute((aligned(32))) + +static const ALIGNED unsigned char iv[64] = { + 0x6a,0x09,0xe6,0x67,0xf3,0xbc,0xc9,0x08, + 0xbb,0x67,0xae,0x85,0x84,0xca,0xa7,0x3b, + 0x3c,0x6e,0xf3,0x72,0xfe,0x94,0xf8,0x2b, + 0xa5,0x4f,0xf5,0x3a,0x5f,0x1d,0x36,0xf1, + 0x51,0x0e,0x52,0x7f,0xad,0xe6,0x82,0xd1, + 0x9b,0x05,0x68,0x8c,0x2b,0x3e,0x6c,0x1f, + 0x1f,0x83,0xd9,0xab,0xfb,0x41,0xbd,0x6b, + 0x5b,0xe0,0xcd,0x19,0x13,0x7e,0x21,0x79 +} ; + +typedef unsigned long long uint64; + +#define load256(x) (_mm256_loadu_si256((void *) (x))) +#define store256(x,y) (_mm256_storeu_si256((void *) (x),y)) + +void crypto_hash(unsigned char *out,const unsigned char *in,long long inlen) +{ + ALIGNED unsigned char h[64]; + ALIGNED unsigned char padded[256]; + unsigned long long i; + unsigned long long bytes = inlen; + __m256i X0,X1; + + X0 = load256(iv); + X1 = load256(iv + 32); + + store256(h,X0); + store256(h + 32,X1); + + blocks(h,in,inlen); + in += inlen; + inlen &= 127; + in -= inlen; + + X0 ^= X0; + + if (inlen < 112) { + store256(padded,X0); + store256(padded + 32,X0); + store256(padded + 64,X0); + store256(padded + 96,X0); + + for (i = 0;i < inlen;++i) padded[i] = in[i]; + padded[inlen] = 0x80; + + padded[119] = bytes >> 61; + *(uint64 *) (padded + 120) = __builtin_bswap64(bytes << 3); + blocks(h,padded,128); + } else { + store256(padded + 96,X0); + store256(padded + 128,X0); + store256(padded + 160,X0); + store256(padded + 192,X0); + store256(padded + 224,X0); + + for (i = 0;i < inlen;++i) padded[i] = in[i]; + padded[inlen] = 0x80; + + padded[247] = bytes >> 61; + *(uint64 *) (padded + 248) = __builtin_bswap64(bytes << 3); + blocks(h,padded,256); + } + + X0 = load256(h); + X1 = load256(h + 32); + + store256(out,X0); + store256(out + 32,X1); +} diff --git a/lib-25519/lib25519/crypto_hash/sha512/blocksplusavx/implementors b/lib-25519/lib25519/crypto_hash/sha512/blocksplusavx/implementors new file mode 120000 index 0000000000..cf489baa9f --- /dev/null +++ b/lib-25519/lib25519/crypto_hash/sha512/blocksplusavx/implementors @@ -0,0 +1 @@ +../ref/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hash/sha512/ref/api.h b/lib-25519/lib25519/crypto_hash/sha512/ref/api.h new file mode 100644 index 0000000000..de9380d71e --- /dev/null +++ b/lib-25519/lib25519/crypto_hash/sha512/ref/api.h @@ -0,0 +1 @@ +#define CRYPTO_BYTES 64 diff --git a/lib-25519/lib25519/crypto_hash/sha512/ref/hash.c b/lib-25519/lib25519/crypto_hash/sha512/ref/hash.c new file mode 100644 index 0000000000..06c2a1044e --- /dev/null +++ b/lib-25519/lib25519/crypto_hash/sha512/ref/hash.c @@ -0,0 +1,69 @@ +/* +20080913 +D. J. Bernstein +Public domain. +*/ + +#include "crypto_hashblocks_sha512.h" +#include "crypto_hash.h" + +#define blocks crypto_hashblocks_sha512 + +static const unsigned char iv[64] = { + 0x6a,0x09,0xe6,0x67,0xf3,0xbc,0xc9,0x08, + 0xbb,0x67,0xae,0x85,0x84,0xca,0xa7,0x3b, + 0x3c,0x6e,0xf3,0x72,0xfe,0x94,0xf8,0x2b, + 0xa5,0x4f,0xf5,0x3a,0x5f,0x1d,0x36,0xf1, + 0x51,0x0e,0x52,0x7f,0xad,0xe6,0x82,0xd1, + 0x9b,0x05,0x68,0x8c,0x2b,0x3e,0x6c,0x1f, + 0x1f,0x83,0xd9,0xab,0xfb,0x41,0xbd,0x6b, + 0x5b,0xe0,0xcd,0x19,0x13,0x7e,0x21,0x79 +} ; + +typedef unsigned long long uint64; + +void crypto_hash(unsigned char *out,const unsigned char *in,long long inlen) +{ + unsigned char h[64]; + unsigned char padded[256]; + int i; + unsigned long long bytes = inlen; + + for (i = 0;i < 64;++i) h[i] = iv[i]; + + blocks(h,in,inlen); + in += inlen; + inlen &= 127; + in -= inlen; + + for (i = 0;i < inlen;++i) padded[i] = in[i]; + padded[inlen] = 0x80; + + if (inlen < 112) { + for (i = inlen + 1;i < 119;++i) padded[i] = 0; + padded[119] = bytes >> 61; + padded[120] = bytes >> 53; + padded[121] = bytes >> 45; + padded[122] = bytes >> 37; + padded[123] = bytes >> 29; + padded[124] = bytes >> 21; + padded[125] = bytes >> 13; + padded[126] = bytes >> 5; + padded[127] = bytes << 3; + blocks(h,padded,128); + } else { + for (i = inlen + 1;i < 247;++i) padded[i] = 0; + padded[247] = bytes >> 61; + padded[248] = bytes >> 53; + padded[249] = bytes >> 45; + padded[250] = bytes >> 37; + padded[251] = bytes >> 29; + padded[252] = bytes >> 21; + padded[253] = bytes >> 13; + padded[254] = bytes >> 5; + padded[255] = bytes << 3; + blocks(h,padded,256); + } + + for (i = 0;i < 64;++i) out[i] = h[i]; +} diff --git a/lib-25519/lib25519/crypto_hash/sha512/ref/implementors b/lib-25519/lib25519/crypto_hash/sha512/ref/implementors new file mode 100644 index 0000000000..40afca0943 --- /dev/null +++ b/lib-25519/lib25519/crypto_hash/sha512/ref/implementors @@ -0,0 +1 @@ +Daniel J. Bernstein (wrapper around crypto_hashblocks/sha512) diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx/api.h b/lib-25519/lib25519/crypto_hashblocks/sha512/avx/api.h new file mode 120000 index 0000000000..1dfe625ff0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx/api.h @@ -0,0 +1 @@ +../m3/api.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx/architectures b/lib-25519/lib25519/crypto_hashblocks/sha512/avx/architectures new file mode 100644 index 0000000000..4eecfa7ef0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx/architectures @@ -0,0 +1,2 @@ +amd64 avx2 +x86 avx2 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx/constants.c b/lib-25519/lib25519/crypto_hashblocks/sha512/avx/constants.c new file mode 120000 index 0000000000..d9f993dec8 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx/constants.c @@ -0,0 +1 @@ +../m3/constants.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx/implementors b/lib-25519/lib25519/crypto_hashblocks/sha512/avx/implementors new file mode 120000 index 0000000000..3476030106 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx/implementors @@ -0,0 +1 @@ +../m3/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx/inner.c b/lib-25519/lib25519/crypto_hashblocks/sha512/avx/inner.c new file mode 100644 index 0000000000..260d8b8c36 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx/inner.c @@ -0,0 +1,249 @@ +#include +#include "inner.h" + +#define uint64 crypto_uint64 + +static uint64 load_bigendian(const unsigned char *x) +{ + return __builtin_bswap64(*(uint64 *) x); +} + +static void store_bigendian(unsigned char *x,uint64 u) +{ + *(uint64 *) x = __builtin_bswap64(u); +} + +#define SHR(x,c) ((x) >> (c)) +#define ROTR(x,c) (((x) >> (c)) | ((x) << (64 - (c)))) +#define sigma0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x,7)) +#define sigma1(x) (ROTR(x,19) ^ ROTR(x,61) ^ SHR(x,6)) + +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) ((x & (y ^ z)) ^ (y & z)) +#define Sigma0(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39)) +#define Sigma1(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41)) + +#define ALIGNED __attribute((aligned(32))) + +#define load64(x) (*(uint64 *) (x)) + +#define store256(x,y) (*(volatile __m256i *) (x) = (y)) + +#define bigendian64 _mm256_set_epi8(8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7) + +#define PREEXPANDx4(X0,X9,X1) \ + X0 = _mm256_add_epi64(X0, \ + _mm256_srli_epi64(X1,1) ^ _mm256_slli_epi64(X1,63) ^ \ + _mm256_srli_epi64(X1,8) ^ _mm256_slli_epi64(X1,56) ^ \ + _mm256_srli_epi64(X1,7) \ + ); \ + X0 = _mm256_add_epi64(X0,X9); + +#define POSTEXPANDx4(X0,W0,W2,W14) \ + W0 = ( \ + _mm256_extracti128_si256(X0,0)); \ + W0 = _mm_add_epi64(W0, \ + _mm_srli_epi64(W14,19) ^ _mm_slli_epi64(W14,45) ^ \ + _mm_srli_epi64(W14,61) ^ _mm_slli_epi64(W14,3) ^ \ + _mm_srli_epi64(W14,6)); \ + W2 = ( \ + _mm256_extracti128_si256(X0,1)); \ + W2 = _mm_add_epi64(W2, \ + _mm_srli_epi64(W0,19) ^ _mm_slli_epi64(W0,45) ^ \ + _mm_srli_epi64(W0,61) ^ _mm_slli_epi64(W0,3) ^ \ + _mm_srli_epi64(W0,6)); \ + X0 = _mm256_insertf128_si256(_mm256_castsi128_si256(W0),W2,1); + +#define ROUND0(i,r0,r1,r2,r3,r4,r5,r6,r7) \ + r7 += load64(&wc[i]); \ + r7 += Ch(r4,r5,r6); \ + r7 += Sigma1(r4); \ + r3 += r7; \ + r7 += Maj(r2,r0,r1); \ + r7 += Sigma0(r0); \ + +#define ROUND1(i,r0,r1,r2,r3,r4,r5,r6,r7) \ + r7 += load64(&wc[i]); \ + r7 += Ch(r4,r5,r6); \ + r7 += Sigma1(r4); \ + r3 += r7; \ + r7 += Maj(r0,r1,r2); \ + r7 += Sigma0(r0); \ + +int inner(unsigned char *statebytes,const unsigned char *in,unsigned int inlen,const uint64 *constants) +{ + ALIGNED uint64 state[8]; + ALIGNED uint64 w[20]; + ALIGNED uint64 wc[16]; /* w[i]+constants[i] */ + uint64 r0,r1,r2,r3,r4,r5,r6,r7; + __m128i W0,W2,W4,W6,W8,W10,W12,W14; + __m256i X0,X1,X4,X5,X8,X9,X12,X13; + __m256i D0,D4,D8,D12; + int i; + + state[0] = r0 = load_bigendian(statebytes); + state[1] = r1 = load_bigendian(statebytes+8); + state[2] = r2 = load_bigendian(statebytes+16); + state[3] = r3 = load_bigendian(statebytes+24); + state[4] = r4 = load_bigendian(statebytes+32); + state[5] = r5 = load_bigendian(statebytes+40); + state[6] = r6 = load_bigendian(statebytes+48); + state[7] = r7 = load_bigendian(statebytes+56); + + do { + X0 = _mm256_loadu_si256((void *) (in+0)); + X0 = _mm256_shuffle_epi8(X0,bigendian64); + D0 = _mm256_loadu_si256((void *) &constants[0]); + D0 = _mm256_add_epi64(X0,D0); + store256(&wc[0],D0); + store256(&w[0],X0); + store256(&w[16],X0); + + X4 = _mm256_loadu_si256((void *) (in+32)); + X4 = _mm256_shuffle_epi8(X4,bigendian64); + D4 = _mm256_loadu_si256((void *) &constants[4]); + D4 = _mm256_add_epi64(X4,D4); + store256(&wc[4],D4); + store256(&w[4],X4); + + ROUND0(0,r0,r1,r2,r3,r4,r5,r6,r7) + ROUND1(1,r7,r0,r1,r2,r3,r4,r5,r6) + + X8 = _mm256_loadu_si256((void *) (in+64)); + X8 = _mm256_shuffle_epi8(X8,bigendian64); + D8 = _mm256_loadu_si256((void *) &constants[8]); + D8 = _mm256_add_epi64(X8,D8); + store256(&wc[8],D8); + store256(&w[8],X8); + + ROUND0(2,r6,r7,r0,r1,r2,r3,r4,r5) + ROUND1(3,r5,r6,r7,r0,r1,r2,r3,r4) + + ROUND0(4,r4,r5,r6,r7,r0,r1,r2,r3) + ROUND1(5,r3,r4,r5,r6,r7,r0,r1,r2) + + X12 = _mm256_loadu_si256((void *) (in+96)); + X12 = _mm256_shuffle_epi8(X12,bigendian64); + D12 = _mm256_loadu_si256((void *) &constants[12]); + D12 = _mm256_add_epi64(X12,D12); + store256(&wc[12],D12); + store256(&w[12],X12); + + ROUND0(6,r2,r3,r4,r5,r6,r7,r0,r1) + ROUND1(7,r1,r2,r3,r4,r5,r6,r7,r0) + + ROUND0(8,r0,r1,r2,r3,r4,r5,r6,r7) + ROUND1(9,r7,r0,r1,r2,r3,r4,r5,r6) + + + for (i = 4;i > 0;--i) { + + constants += 16; + + X1 = _mm256_loadu_si256((void *) (w+1)); + X9 = _mm256_loadu_si256((void *) (w+9)); + PREEXPANDx4(X0,X9,X1) + + W14 = _mm_loadu_si128((void *) (w+14)); + POSTEXPANDx4(X0,W0,W2,W14) + + D0 = _mm256_loadu_si256((void *) &constants[0]); + D0 = _mm256_add_epi64(X0,D0); + store256(&wc[0],D0); + store256(w+16,X0); + store256(w+0,X0); + + ROUND0(10,r6,r7,r0,r1,r2,r3,r4,r5) + ROUND1(11,r5,r6,r7,r0,r1,r2,r3,r4) + + ROUND0(12,r4,r5,r6,r7,r0,r1,r2,r3) + ROUND1(13,r3,r4,r5,r6,r7,r0,r1,r2) + + X5 = _mm256_loadu_si256((void *) (w+5)); + X13 = _mm256_loadu_si256((void *) (w+13)); + PREEXPANDx4(X4,X13,X5) + + W2 = _mm_loadu_si128((void *) (w+2)); + POSTEXPANDx4(X4,W4,W6,W2) + + D4 = _mm256_loadu_si256((void *) &constants[4]); + D4 = _mm256_add_epi64(X4,D4); + store256(&wc[4],D4); + store256(w+4,X4); + + ROUND0(14,r2,r3,r4,r5,r6,r7,r0,r1) + ROUND1(15,r1,r2,r3,r4,r5,r6,r7,r0) + + ROUND0(0,r0,r1,r2,r3,r4,r5,r6,r7) + ROUND1(1,r7,r0,r1,r2,r3,r4,r5,r6) + + X9 = _mm256_loadu_si256((void *) (w+9)); + X1 = _mm256_loadu_si256((void *) (w+1)); + PREEXPANDx4(X8,X1,X9) + + W6 = _mm_loadu_si128((void *) (w+6)); + POSTEXPANDx4(X8,W8,W10,W6) + + D8 = _mm256_loadu_si256((void *) &constants[8]); + D8 = _mm256_add_epi64(X8,D8); + store256(&wc[8],D8); + store256(w+8,X8); + + ROUND0(2,r6,r7,r0,r1,r2,r3,r4,r5) + ROUND1(3,r5,r6,r7,r0,r1,r2,r3,r4) + + ROUND0(4,r4,r5,r6,r7,r0,r1,r2,r3) + ROUND1(5,r3,r4,r5,r6,r7,r0,r1,r2) + + X13 = _mm256_loadu_si256((void *) (w+13)); + X5 = _mm256_loadu_si256((void *) (w+5)); + PREEXPANDx4(X12,X5,X13) + + W10 = _mm_loadu_si128((void *) (w+10)); + POSTEXPANDx4(X12,W12,W14,W10) + + D12 = _mm256_loadu_si256((void *) &constants[12]); + D12 = _mm256_add_epi64(X12,D12); + store256(&wc[12],D12); + store256(w+12,X12); + + ROUND0(6,r2,r3,r4,r5,r6,r7,r0,r1) + ROUND1(7,r1,r2,r3,r4,r5,r6,r7,r0) + + ROUND0(8,r0,r1,r2,r3,r4,r5,r6,r7) + ROUND1(9,r7,r0,r1,r2,r3,r4,r5,r6) + + } + + { + ROUND0(10,r6,r7,r0,r1,r2,r3,r4,r5) + ROUND1(11,r5,r6,r7,r0,r1,r2,r3,r4) + + ROUND0(12,r4,r5,r6,r7,r0,r1,r2,r3) + ROUND1(13,r3,r4,r5,r6,r7,r0,r1,r2) + + ROUND0(14,r2,r3,r4,r5,r6,r7,r0,r1) + ROUND1(15,r1,r2,r3,r4,r5,r6,r7,r0) + } + + + constants -= 64; + + r0 += state[0]; state[0] = r0; + r1 += state[1]; state[1] = r1; + r2 += state[2]; state[2] = r2; + r3 += state[3]; state[3] = r3; + r4 += state[4]; state[4] = r4; + r5 += state[5]; state[5] = r5; + r6 += state[6]; state[6] = r6; + r7 += state[7]; state[7] = r7; + + in += 128; + inlen -= 128; + } while (inlen >= 128); + + for (i = 0;i < 8;++i) + store_bigendian(statebytes+8*i,state[i]); + + return inlen; +} diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx/inner.h b/lib-25519/lib25519/crypto_hashblocks/sha512/avx/inner.h new file mode 100644 index 0000000000..bfbf4a6652 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx/inner.h @@ -0,0 +1,10 @@ +#ifndef inner_h +#define inner_h + +#define inner CRYPTO_NAMESPACE(inner) + +#include "crypto_uint64.h" + +extern int inner(unsigned char *,const unsigned char *,unsigned int,const crypto_uint64 *); + +#endif diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/Makefile b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/Makefile new file mode 100644 index 0000000000..faa5ff3098 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/Makefile @@ -0,0 +1,68 @@ +inner.S: \ +round01.q \ +round23.q \ +round45.q \ +round67.q \ +round89.q \ +round1011.q \ +round1213.q \ +round1415.q \ +expand0.q \ +expand4.q \ +expand8.q \ +expand12.q \ +rer0.q \ +rer4.q \ +rer8.q \ +rer12.q \ +inner.q \ +inner.S.do + ./inner.S.do < inner.q > inner.S + +round01.q: round.py + ./round.py 0 > round01.q + +round23.q: round.py + ./round.py 1 > round23.q + +round45.q: round.py + ./round.py 2 > round45.q + +round67.q: round.py + ./round.py 3 > round67.q + +round89.q: round.py + ./round.py 4 > round89.q + +round1011.q: round.py + ./round.py 5 > round1011.q + +round1213.q: round.py + ./round.py 6 > round1213.q + +round1415.q: round.py + ./round.py 7 > round1415.q + +expand0.q: expand.py + ./expand.py 0 > expand0.q + +expand4.q: expand.py + ./expand.py 4 > expand4.q + +expand8.q: expand.py + ./expand.py 8 > expand8.q + +expand12.q: expand.py + ./expand.py 12 > expand12.q + +rer0.q: rer.py + ./rer.py 0 > rer0.q + +rer4.q: rer.py + ./rer.py 4 > rer4.q + +rer8.q: rer.py + ./rer.py 8 > rer8.q + +rer12.q: rer.py + ./rer.py 12 > rer12.q diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/api.h b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/api.h new file mode 120000 index 0000000000..1dfe625ff0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/api.h @@ -0,0 +1 @@ +../m3/api.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/architectures b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/architectures new file mode 100644 index 0000000000..704ec25ae2 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/architectures @@ -0,0 +1,2 @@ +amd64 bmi2 avx2 +x86 bmi2 avx2 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/constants.c b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/constants.c new file mode 100644 index 0000000000..3f98081fae --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/constants.c @@ -0,0 +1,104 @@ +#include "crypto_hashblocks.h" +#include "inner.h" + +static const crypto_uint64 constants[84] = { + 0x428a2f98d728ae22ULL +, 0x7137449123ef65cdULL +, 0xb5c0fbcfec4d3b2fULL +, 0xe9b5dba58189dbbcULL +, 0x3956c25bf348b538ULL +, 0x59f111f1b605d019ULL +, 0x923f82a4af194f9bULL +, 0xab1c5ed5da6d8118ULL +, 0xd807aa98a3030242ULL +, 0x12835b0145706fbeULL +, 0x243185be4ee4b28cULL +, 0x550c7dc3d5ffb4e2ULL +, 0x72be5d74f27b896fULL +, 0x80deb1fe3b1696b1ULL +, 0x9bdc06a725c71235ULL +, 0xc19bf174cf692694ULL +, 0xe49b69c19ef14ad2ULL +, 0xefbe4786384f25e3ULL +, 0x0fc19dc68b8cd5b5ULL +, 0x240ca1cc77ac9c65ULL +, 0x2de92c6f592b0275ULL +, 0x4a7484aa6ea6e483ULL +, 0x5cb0a9dcbd41fbd4ULL +, 0x76f988da831153b5ULL +, 0x983e5152ee66dfabULL +, 0xa831c66d2db43210ULL +, 0xb00327c898fb213fULL +, 0xbf597fc7beef0ee4ULL +, 0xc6e00bf33da88fc2ULL +, 0xd5a79147930aa725ULL +, 0x06ca6351e003826fULL +, 0x142929670a0e6e70ULL +, 0x27b70a8546d22ffcULL +, 0x2e1b21385c26c926ULL +, 0x4d2c6dfc5ac42aedULL +, 0x53380d139d95b3dfULL +, 0x650a73548baf63deULL +, 0x766a0abb3c77b2a8ULL +, 0x81c2c92e47edaee6ULL +, 0x92722c851482353bULL +, 0xa2bfe8a14cf10364ULL +, 0xa81a664bbc423001ULL +, 0xc24b8b70d0f89791ULL +, 0xc76c51a30654be30ULL +, 0xd192e819d6ef5218ULL +, 0xd69906245565a910ULL +, 0xf40e35855771202aULL +, 0x106aa07032bbd1b8ULL +, 0x19a4c116b8d2d0c8ULL +, 0x1e376c085141ab53ULL +, 0x2748774cdf8eeb99ULL +, 0x34b0bcb5e19b48a8ULL +, 0x391c0cb3c5c95a63ULL +, 0x4ed8aa4ae3418acbULL +, 0x5b9cca4f7763e373ULL +, 0x682e6ff3d6b2b8a3ULL +, 0x748f82ee5defb2fcULL +, 0x78a5636f43172f60ULL +, 0x84c87814a1f0ab72ULL +, 0x8cc702081a6439ecULL +, 0x90befffa23631e28ULL +, 0xa4506cebde82bde9ULL +, 0xbef9a3f7b2c67915ULL +, 0xc67178f2e372532bULL +, 0xca273eceea26619cULL +, 0xd186b8c721c0c207ULL +, 0xeada7dd6cde0eb1eULL +, 0xf57d4f7fee6ed178ULL +, 0x06f067aa72176fbaULL +, 0x0a637dc5a2c898a6ULL +, 0x113f9804bef90daeULL +, 0x1b710b35131c471bULL +, 0x28db77f523047d84ULL +, 0x32caab7b40c72493ULL +, 0x3c9ebe0a15c9bebcULL +, 0x431d67c49c100d4cULL +, 0x4cc5d4becb3e42b6ULL +, 0x597f299cfc657e2aULL +, 0x5fcb6fab3ad6faecULL +, 0x6c44198c4a475817ULL + +/* constants for the AVX code: */ +, 0x0001020304050607ULL +, 0x08090a0b0c0d0e0fULL +, 0x0001020304050607ULL +, 0x08090a0b0c0d0e0fULL +}; + +#define CUTOFF 65536 /* must be multiple of 128 */ + +int crypto_hashblocks(unsigned char *statebytes,const unsigned char *in,long long inlen) +{ + while (inlen >= CUTOFF) { + inner(statebytes,in,CUTOFF,constants); /* returns 0 */ + in += CUTOFF; + inlen -= CUTOFF; + } + if (inlen < 128) return inlen; + return inner(statebytes,in,inlen,constants); +} diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand.py b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand.py new file mode 100755 index 0000000000..6dcaedea49 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 + +import sys + +for i in (0,4,8,12): + if len(sys.argv) > 1: + if sys.argv[1] != str(i): + continue + + i0 = (i+0)&15 + i1 = (i+1)&15 + i9 = (i+9)&15 + i14 = (i+14)&15 + + print(' X%d = mem256[&w + %d]' % (i1,8*i1)) + print(' W%d = mem128[&w + %d],0' % (i14,8*i14)) + print('') + print(' 4x X%dright1 = X%d unsigned>> 1' % (i1,i1)) + print(' 4x X%dleft63 = X%d << 63' % (i1,i1)) + print(' X%dsigma0 = X%dright1 ^ X%dleft63' % (i1,i1,i1)) + print(' 4x X%dright8 = X%d unsigned>> 8' % (i1,i1)) + print(' X%dsigma0 = X%dsigma0 ^ X%dright8' % (i1,i1,i1)) + print(' 2x,0 W%dright19 = W%d unsigned>> 19' % (i14,i14)) + print(' 4x X%dleft56 = X%d << 56' % (i1,i1)) + print(' 2x,0 W%dleft45 = W%d << 45' % (i14,i14)) + print(' X%dsigma0 = X%dsigma0 ^ X%dleft56' % (i1,i1,i1)) + print(' 1x,0 W%dsigma1 = W%dright19 ^ W%dleft45' % (i14,i14,i14)) + print(' 4x X%dright7 = X%d unsigned>> 7' % (i1,i1)) + print(' 2x,0 W%dright61 = W%d unsigned>> 61' % (i14,i14)) + print(' X%dsigma0 = X%dsigma0 ^ X%dright7' % (i1,i1,i1)) + print(' 1x,0 W%dsigma1 ^= W%dright61' % (i14,i14)) + print(' 4x X%d = X%d + X%dsigma0' % (i0,i0,i1)) + print(' 2x,0 W%dleft3 = W%d << 3' % (i14,i14)) + print(' 4x X%d = X%d + mem256[&w + %d]' % (i0,i0,8*i9)) + print(' 1x,0 W%dsigma1 ^= W%dleft3' % (i14,i14)) + print(' 2x,0 W%dright6 = W%d unsigned>> 6' % (i14,i14)) + print(' 1x,0 W%dsigma1 ^= W%dright6' % (i14,i14)) + print(' 4x X%d = W%dsigma1 + X%d' % (i0,i14,i0)) + print('') + print(' 2x,0 W%dright19 = X%d unsigned>> 19' % (i0,i0)) + print(' 2x,0 W%dleft45 = X%d << 45' % (i0,i0)) + print(' 1x,0 W%dsigma1 = W%dright19 ^ W%dleft45' % (i0,i0,i0)) + print(' 2x,0 W%dright61 = X%d unsigned>> 61' % (i0,i0)) + print(' 1x,0 W%dsigma1 ^= W%dright61' % (i0,i0)) + print(' 2x,0 W%dleft3 = X%d << 3' % (i0,i0)) + print(' 1x,0 W%dsigma1 ^= W%dleft3' % (i0,i0)) + print(' 2x,0 W%dright6 = X%d unsigned>> 6' % (i0,i0)) + print(' 1x,0 W%dsigma1 ^= W%dright6' % (i0,i0)) + print(' W%dsigma1 = W%dsigma1[1],W%dsigma1[0]' % (i0,i0,i0)) + print('') + print(' 4x X%d = X%d + W%dsigma1' % (i0,i0,i0)) + if i == 0: + print(' mem256[&w + 128] = X%d' % (i0)) + print(' mem256[&w + %d] = X%d' % (8*i0,i0)) + print(' 4x D%d = X%d + mem256[constants + %d]' % (i0,i0,8*i0)) + print(' wc%d%d%d%d = D%d' % (i,i+1,i+2,i+3,i0)) + print('') diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand0.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand0.q new file mode 100644 index 0000000000..b3c38457bb --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand0.q @@ -0,0 +1,42 @@ + X1 = mem256[&w + 8] + W14 = mem128[&w + 112],0 + + 4x X1right1 = X1 unsigned>> 1 + 4x X1left63 = X1 << 63 + X1sigma0 = X1right1 ^ X1left63 + 4x X1right8 = X1 unsigned>> 8 + X1sigma0 = X1sigma0 ^ X1right8 + 2x,0 W14right19 = W14 unsigned>> 19 + 4x X1left56 = X1 << 56 + 2x,0 W14left45 = W14 << 45 + X1sigma0 = X1sigma0 ^ X1left56 + 1x,0 W14sigma1 = W14right19 ^ W14left45 + 4x X1right7 = X1 unsigned>> 7 + 2x,0 W14right61 = W14 unsigned>> 61 + X1sigma0 = X1sigma0 ^ X1right7 + 1x,0 W14sigma1 ^= W14right61 + 4x X0 = X0 + X1sigma0 + 2x,0 W14left3 = W14 << 3 + 4x X0 = X0 + mem256[&w + 72] + 1x,0 W14sigma1 ^= W14left3 + 2x,0 W14right6 = W14 unsigned>> 6 + 1x,0 W14sigma1 ^= W14right6 + 4x X0 = W14sigma1 + X0 + + 2x,0 W0right19 = X0 unsigned>> 19 + 2x,0 W0left45 = X0 << 45 + 1x,0 W0sigma1 = W0right19 ^ W0left45 + 2x,0 W0right61 = X0 unsigned>> 61 + 1x,0 W0sigma1 ^= W0right61 + 2x,0 W0left3 = X0 << 3 + 1x,0 W0sigma1 ^= W0left3 + 2x,0 W0right6 = X0 unsigned>> 6 + 1x,0 W0sigma1 ^= W0right6 + W0sigma1 = W0sigma1[1],W0sigma1[0] + + 4x X0 = X0 + W0sigma1 + mem256[&w + 128] = X0 + mem256[&w + 0] = X0 + 4x D0 = X0 + mem256[constants + 0] + wc0123 = D0 + diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand12.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand12.q new file mode 100644 index 0000000000..bf9ba251c8 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand12.q @@ -0,0 +1,41 @@ + X13 = mem256[&w + 104] + W10 = mem128[&w + 80],0 + + 4x X13right1 = X13 unsigned>> 1 + 4x X13left63 = X13 << 63 + X13sigma0 = X13right1 ^ X13left63 + 4x X13right8 = X13 unsigned>> 8 + X13sigma0 = X13sigma0 ^ X13right8 + 2x,0 W10right19 = W10 unsigned>> 19 + 4x X13left56 = X13 << 56 + 2x,0 W10left45 = W10 << 45 + X13sigma0 = X13sigma0 ^ X13left56 + 1x,0 W10sigma1 = W10right19 ^ W10left45 + 4x X13right7 = X13 unsigned>> 7 + 2x,0 W10right61 = W10 unsigned>> 61 + X13sigma0 = X13sigma0 ^ X13right7 + 1x,0 W10sigma1 ^= W10right61 + 4x X12 = X12 + X13sigma0 + 2x,0 W10left3 = W10 << 3 + 4x X12 = X12 + mem256[&w + 40] + 1x,0 W10sigma1 ^= W10left3 + 2x,0 W10right6 = W10 unsigned>> 6 + 1x,0 W10sigma1 ^= W10right6 + 4x X12 = W10sigma1 + X12 + + 2x,0 W12right19 = X12 unsigned>> 19 + 2x,0 W12left45 = X12 << 45 + 1x,0 W12sigma1 = W12right19 ^ W12left45 + 2x,0 W12right61 = X12 unsigned>> 61 + 1x,0 W12sigma1 ^= W12right61 + 2x,0 W12left3 = X12 << 3 + 1x,0 W12sigma1 ^= W12left3 + 2x,0 W12right6 = X12 unsigned>> 6 + 1x,0 W12sigma1 ^= W12right6 + W12sigma1 = W12sigma1[1],W12sigma1[0] + + 4x X12 = X12 + W12sigma1 + mem256[&w + 96] = X12 + 4x D12 = X12 + mem256[constants + 96] + wc12131415 = D12 + diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand4.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand4.q new file mode 100644 index 0000000000..663d951c3d --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand4.q @@ -0,0 +1,41 @@ + X5 = mem256[&w + 40] + W2 = mem128[&w + 16],0 + + 4x X5right1 = X5 unsigned>> 1 + 4x X5left63 = X5 << 63 + X5sigma0 = X5right1 ^ X5left63 + 4x X5right8 = X5 unsigned>> 8 + X5sigma0 = X5sigma0 ^ X5right8 + 2x,0 W2right19 = W2 unsigned>> 19 + 4x X5left56 = X5 << 56 + 2x,0 W2left45 = W2 << 45 + X5sigma0 = X5sigma0 ^ X5left56 + 1x,0 W2sigma1 = W2right19 ^ W2left45 + 4x X5right7 = X5 unsigned>> 7 + 2x,0 W2right61 = W2 unsigned>> 61 + X5sigma0 = X5sigma0 ^ X5right7 + 1x,0 W2sigma1 ^= W2right61 + 4x X4 = X4 + X5sigma0 + 2x,0 W2left3 = W2 << 3 + 4x X4 = X4 + mem256[&w + 104] + 1x,0 W2sigma1 ^= W2left3 + 2x,0 W2right6 = W2 unsigned>> 6 + 1x,0 W2sigma1 ^= W2right6 + 4x X4 = W2sigma1 + X4 + + 2x,0 W4right19 = X4 unsigned>> 19 + 2x,0 W4left45 = X4 << 45 + 1x,0 W4sigma1 = W4right19 ^ W4left45 + 2x,0 W4right61 = X4 unsigned>> 61 + 1x,0 W4sigma1 ^= W4right61 + 2x,0 W4left3 = X4 << 3 + 1x,0 W4sigma1 ^= W4left3 + 2x,0 W4right6 = X4 unsigned>> 6 + 1x,0 W4sigma1 ^= W4right6 + W4sigma1 = W4sigma1[1],W4sigma1[0] + + 4x X4 = X4 + W4sigma1 + mem256[&w + 32] = X4 + 4x D4 = X4 + mem256[constants + 32] + wc4567 = D4 + diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand8.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand8.q new file mode 100644 index 0000000000..e3ad74101d --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/expand8.q @@ -0,0 +1,41 @@ + X9 = mem256[&w + 72] + W6 = mem128[&w + 48],0 + + 4x X9right1 = X9 unsigned>> 1 + 4x X9left63 = X9 << 63 + X9sigma0 = X9right1 ^ X9left63 + 4x X9right8 = X9 unsigned>> 8 + X9sigma0 = X9sigma0 ^ X9right8 + 2x,0 W6right19 = W6 unsigned>> 19 + 4x X9left56 = X9 << 56 + 2x,0 W6left45 = W6 << 45 + X9sigma0 = X9sigma0 ^ X9left56 + 1x,0 W6sigma1 = W6right19 ^ W6left45 + 4x X9right7 = X9 unsigned>> 7 + 2x,0 W6right61 = W6 unsigned>> 61 + X9sigma0 = X9sigma0 ^ X9right7 + 1x,0 W6sigma1 ^= W6right61 + 4x X8 = X8 + X9sigma0 + 2x,0 W6left3 = W6 << 3 + 4x X8 = X8 + mem256[&w + 8] + 1x,0 W6sigma1 ^= W6left3 + 2x,0 W6right6 = W6 unsigned>> 6 + 1x,0 W6sigma1 ^= W6right6 + 4x X8 = W6sigma1 + X8 + + 2x,0 W8right19 = X8 unsigned>> 19 + 2x,0 W8left45 = X8 << 45 + 1x,0 W8sigma1 = W8right19 ^ W8left45 + 2x,0 W8right61 = X8 unsigned>> 61 + 1x,0 W8sigma1 ^= W8right61 + 2x,0 W8left3 = X8 << 3 + 1x,0 W8sigma1 ^= W8left3 + 2x,0 W8right6 = X8 unsigned>> 6 + 1x,0 W8sigma1 ^= W8right6 + W8sigma1 = W8sigma1[1],W8sigma1[0] + + 4x X8 = X8 + W8sigma1 + mem256[&w + 64] = X8 + 4x D8 = X8 + mem256[constants + 64] + wc891011 = D8 + diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/implementors b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/implementors new file mode 120000 index 0000000000..3476030106 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/implementors @@ -0,0 +1 @@ +../m3/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/inner.S b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/inner.S new file mode 100644 index 0000000000..fc35beb17b --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/inner.S @@ -0,0 +1,5608 @@ +// linker define inner + +# qhasm: int64 input_0 + +# qhasm: int64 input_1 + +# qhasm: int64 input_2 + +# qhasm: int64 input_3 + +# qhasm: int64 input_4 + +# qhasm: int64 input_5 + +# qhasm: stack64 input_6 + +# qhasm: stack64 input_7 + +# qhasm: int64 caller_r11 + +# qhasm: int64 caller_r12 + +# qhasm: int64 caller_r13 + +# qhasm: int64 caller_r14 + +# qhasm: int64 caller_r15 + +# qhasm: int64 caller_rbx + +# qhasm: int64 caller_rbp + +# qhasm: stack64 r11_stack + +# qhasm: stack64 r12_stack + +# qhasm: stack64 r13_stack + +# qhasm: stack64 r14_stack + +# qhasm: stack64 r15_stack + +# qhasm: stack64 rbx_stack + +# qhasm: stack64 rbp_stack + +# qhasm: int64 statebytes + +# qhasm: stack64 statebytes_stack + +# qhasm: int64 in + +# qhasm: stack64 in_stack + +# qhasm: int64 inlen + +# qhasm: stack64 inlen_stack + +# qhasm: int64 constants + +# qhasm: stack64 constants_stack + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 r4 + +# qhasm: int64 r5 + +# qhasm: int64 r6 + +# qhasm: int64 r7 + +# qhasm: int64 i + +# qhasm: stack256 state0123 + +# qhasm: stack256 state4567 + +# qhasm: reg256 X0 + +# qhasm: reg256 X4 + +# qhasm: reg256 X8 + +# qhasm: reg256 X12 + +# qhasm: reg256 X1 + +# qhasm: reg256 X5 + +# qhasm: reg256 X9 + +# qhasm: reg256 X13 + +# qhasm: reg256 bigendian64 + +# qhasm: reg256 D0 + +# qhasm: reg256 D4 + +# qhasm: reg256 D8 + +# qhasm: reg256 D12 + +# qhasm: reg256 W0 + +# qhasm: reg256 W2 + +# qhasm: reg256 W4 + +# qhasm: reg256 W6 + +# qhasm: reg256 W8 + +# qhasm: reg256 W10 + +# qhasm: reg256 W12 + +# qhasm: reg256 W14 + +# qhasm: stack1280 w + +# qhasm: stack256 wc0123 + +# qhasm: stack256 wc4567 + +# qhasm: stack256 wc891011 + +# qhasm: stack256 wc12131415 + +# qhasm: int64 r0andr1 + +# qhasm: int64 r2andr3 + +# qhasm: int64 r4andr5 + +# qhasm: int64 r6andr7 + +# qhasm: int64 ch0 + +# qhasm: int64 ch1 + +# qhasm: int64 ch2 + +# qhasm: int64 ch3 + +# qhasm: int64 ch4 + +# qhasm: int64 ch5 + +# qhasm: int64 ch6 + +# qhasm: int64 ch7 + +# qhasm: int64 maj0 + +# qhasm: int64 maj1 + +# qhasm: int64 maj2 + +# qhasm: int64 maj3 + +# qhasm: int64 maj4 + +# qhasm: int64 maj5 + +# qhasm: int64 maj6 + +# qhasm: int64 maj7 + +# qhasm: int64 r0Sigma0 + +# qhasm: int64 r1Sigma0 + +# qhasm: int64 r2Sigma0 + +# qhasm: int64 r3Sigma0 + +# qhasm: int64 r4Sigma0 + +# qhasm: int64 r5Sigma0 + +# qhasm: int64 r6Sigma0 + +# qhasm: int64 r7Sigma0 + +# qhasm: int64 r0Sigma1 + +# qhasm: int64 r1Sigma1 + +# qhasm: int64 r2Sigma1 + +# qhasm: int64 r3Sigma1 + +# qhasm: int64 r4Sigma1 + +# qhasm: int64 r5Sigma1 + +# qhasm: int64 r6Sigma1 + +# qhasm: int64 r7Sigma1 + +# qhasm: int64 r018 + +# qhasm: int64 r118 + +# qhasm: int64 r218 + +# qhasm: int64 r318 + +# qhasm: int64 r418 + +# qhasm: int64 r518 + +# qhasm: int64 r618 + +# qhasm: int64 r718 + +# qhasm: int64 r041 + +# qhasm: int64 r141 + +# qhasm: int64 r241 + +# qhasm: int64 r341 + +# qhasm: int64 r441 + +# qhasm: int64 r541 + +# qhasm: int64 r641 + +# qhasm: int64 r741 + +# qhasm: int64 r034 + +# qhasm: int64 r134 + +# qhasm: int64 r234 + +# qhasm: int64 r334 + +# qhasm: int64 r434 + +# qhasm: int64 r534 + +# qhasm: int64 r634 + +# qhasm: int64 r734 + +# qhasm: int64 r039 + +# qhasm: int64 r139 + +# qhasm: int64 r239 + +# qhasm: int64 r339 + +# qhasm: int64 r439 + +# qhasm: int64 r539 + +# qhasm: int64 r639 + +# qhasm: int64 r739 + +# qhasm: reg256 X1right1 + +# qhasm: reg256 X1left63 + +# qhasm: reg256 X1right8 + +# qhasm: reg256 X1left56 + +# qhasm: reg256 X1right7 + +# qhasm: reg256 X1sigma0 + +# qhasm: reg256 X5right1 + +# qhasm: reg256 X5left63 + +# qhasm: reg256 X5right8 + +# qhasm: reg256 X5left56 + +# qhasm: reg256 X5right7 + +# qhasm: reg256 X5sigma0 + +# qhasm: reg256 X9right1 + +# qhasm: reg256 X9left63 + +# qhasm: reg256 X9right8 + +# qhasm: reg256 X9left56 + +# qhasm: reg256 X9right7 + +# qhasm: reg256 X9sigma0 + +# qhasm: reg256 X13right1 + +# qhasm: reg256 X13left63 + +# qhasm: reg256 X13right8 + +# qhasm: reg256 X13left56 + +# qhasm: reg256 X13right7 + +# qhasm: reg256 X13sigma0 + +# qhasm: reg256 W0right19 + +# qhasm: reg256 W0right61 + +# qhasm: reg256 W0right6 + +# qhasm: reg256 W0left45 + +# qhasm: reg256 W0left3 + +# qhasm: reg256 W0sigma1 + +# qhasm: reg256 W2right19 + +# qhasm: reg256 W2right61 + +# qhasm: reg256 W2right6 + +# qhasm: reg256 W2left45 + +# qhasm: reg256 W2left3 + +# qhasm: reg256 W2sigma1 + +# qhasm: reg256 W4right19 + +# qhasm: reg256 W4right61 + +# qhasm: reg256 W4right6 + +# qhasm: reg256 W4left45 + +# qhasm: reg256 W4left3 + +# qhasm: reg256 W4sigma1 + +# qhasm: reg256 W6right19 + +# qhasm: reg256 W6right61 + +# qhasm: reg256 W6right6 + +# qhasm: reg256 W6left45 + +# qhasm: reg256 W6left3 + +# qhasm: reg256 W6sigma1 + +# qhasm: reg256 W8right19 + +# qhasm: reg256 W8right61 + +# qhasm: reg256 W8right6 + +# qhasm: reg256 W8left45 + +# qhasm: reg256 W8left3 + +# qhasm: reg256 W8sigma1 + +# qhasm: reg256 W10right19 + +# qhasm: reg256 W10right61 + +# qhasm: reg256 W10right6 + +# qhasm: reg256 W10left45 + +# qhasm: reg256 W10left3 + +# qhasm: reg256 W10sigma1 + +# qhasm: reg256 W12right19 + +# qhasm: reg256 W12right61 + +# qhasm: reg256 W12right6 + +# qhasm: reg256 W12left45 + +# qhasm: reg256 W12left3 + +# qhasm: reg256 W12sigma1 + +# qhasm: reg256 W14right19 + +# qhasm: reg256 W14right61 + +# qhasm: reg256 W14right6 + +# qhasm: reg256 W14left45 + +# qhasm: reg256 W14left3 + +# qhasm: reg256 W14sigma1 + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(inner) +.p2align 7 +.global _CRYPTO_SHARED_NAMESPACE(inner) +.global CRYPTO_SHARED_NAMESPACE(inner) +_CRYPTO_SHARED_NAMESPACE(inner): +CRYPTO_SHARED_NAMESPACE(inner): +mov %rsp,%r11 +and $511,%r11 +add $416,%r11 +sub %r11,%rsp + +# qhasm: constants = input_3 +# asm 1: mov constants=int64#5 +# asm 2: mov constants=%r8 +mov %rcx,%r8 + +# qhasm: bigendian64 = mem256[input_3+640] +# asm 1: vmovupd 640(bigendian64=reg256#1 +# asm 2: vmovupd 640(bigendian64=%ymm0 +vmovupd 640(%rcx),%ymm0 + +# qhasm: X0 = mem256[input_0+0] +# asm 1: vmovupd 0(X0=reg256#2 +# asm 2: vmovupd 0(X0=%ymm1 +vmovupd 0(%rdi),%ymm1 + +# qhasm: statebytes = input_0 +# asm 1: mov statebytes=int64#4 +# asm 2: mov statebytes=%rcx +mov %rdi,%rcx + +# qhasm: X4 = mem256[input_0+32] +# asm 1: vmovupd 32(X4=reg256#3 +# asm 2: vmovupd 32(X4=%ymm2 +vmovupd 32(%rdi),%ymm2 + +# qhasm: 2x 16x X0 = X0[bigendian64] +# asm 1: vpshufb X0=reg256#2 +# asm 2: vpshufb X0=%ymm1 +vpshufb %ymm0,%ymm1,%ymm1 + +# qhasm: 2x 16x X4 = X4[bigendian64] +# asm 1: vpshufb X4=reg256#3 +# asm 2: vpshufb X4=%ymm2 +vpshufb %ymm0,%ymm2,%ymm2 + +# qhasm: state0123 = X0 +# asm 1: vmovapd state0123=stack256#1 +# asm 2: vmovapd state0123=0(%rsp) +vmovapd %ymm1,0(%rsp) + +# qhasm: r11_stack = caller_r11 +# asm 1: movq r11_stack=stack64#1 +# asm 2: movq r11_stack=320(%rsp) +movq %r11,320(%rsp) + +# qhasm: state4567 = X4 +# asm 1: vmovapd state4567=stack256#2 +# asm 2: vmovapd state4567=32(%rsp) +vmovapd %ymm2,32(%rsp) + +# qhasm: r13_stack = caller_r13 +# asm 1: movq r13_stack=stack64#2 +# asm 2: movq r13_stack=328(%rsp) +movq %r13,328(%rsp) + +# qhasm: r12_stack = caller_r12 +# asm 1: movq r12_stack=stack64#3 +# asm 2: movq r12_stack=336(%rsp) +movq %r12,336(%rsp) + +# qhasm: r14_stack = caller_r14 +# asm 1: movq r14_stack=stack64#4 +# asm 2: movq r14_stack=344(%rsp) +movq %r14,344(%rsp) + +# qhasm: rbx_stack = caller_rbx +# asm 1: movq rbx_stack=stack64#5 +# asm 2: movq rbx_stack=352(%rsp) +movq %rbx,352(%rsp) + +# qhasm: r15_stack = caller_r15 +# asm 1: movq r15_stack=stack64#6 +# asm 2: movq r15_stack=360(%rsp) +movq %r15,360(%rsp) + +# qhasm: rbp_stack = caller_rbp +# asm 1: movq rbp_stack=stack64#7 +# asm 2: movq rbp_stack=368(%rsp) +movq %rbp,368(%rsp) + +# qhasm: inlen_stack = input_2 +# asm 1: movq inlen_stack=stack64#8 +# asm 2: movq inlen_stack=376(%rsp) +movq %rdx,376(%rsp) + +# qhasm: in = input_1 +# asm 1: mov in=int64#1 +# asm 2: mov in=%rdi +mov %rsi,%rdi + +# qhasm: statebytes_stack = statebytes +# asm 1: movq statebytes_stack=stack64#9 +# asm 2: movq statebytes_stack=384(%rsp) +movq %rcx,384(%rsp) + +# qhasm: r0 = state0123[0] +# asm 1: movq r0=int64#2 +# asm 2: movq r0=%rsi +movq 0(%rsp),%rsi + +# qhasm: r2 = state0123[2] +# asm 1: movq r2=int64#3 +# asm 2: movq r2=%rdx +movq 16(%rsp),%rdx + +# qhasm: constants_stack = constants +# asm 1: movq constants_stack=stack64#10 +# asm 2: movq constants_stack=392(%rsp) +movq %r8,392(%rsp) + +# qhasm: r1 = state0123[1] +# asm 1: movq r1=int64#4 +# asm 2: movq r1=%rcx +movq 8(%rsp),%rcx + +# qhasm: r3 = state0123[3] +# asm 1: movq r3=int64#6 +# asm 2: movq r3=%r9 +movq 24(%rsp),%r9 + +# qhasm: r5 = state4567[1] +# asm 1: movq r5=int64#8 +# asm 2: movq r5=%r10 +movq 40(%rsp),%r10 + +# qhasm: r4 = state4567[0] +# asm 1: movq r4=int64#9 +# asm 2: movq r4=%r11 +movq 32(%rsp),%r11 + +# qhasm: r6 = state4567[2] +# asm 1: movq r6=int64#10 +# asm 2: movq r6=%r12 +movq 48(%rsp),%r12 + +# qhasm: r7 = state4567[3] +# asm 1: movq r7=int64#11 +# asm 2: movq r7=%r13 +movq 56(%rsp),%r13 + +# qhasm: new w + +# qhasm: nop9 +.byte 0x66,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 + +# qhasm: nop9 +.byte 0x66,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 + +# qhasm: nop2 +.byte 0x66,0x90 + +# qhasm: outerloop: +._outerloop: + +# qhasm: X0 = mem256[in + 0] +# asm 1: vmovupd 0(X0=reg256#2 +# asm 2: vmovupd 0(X0=%ymm1 +vmovupd 0(%rdi),%ymm1 + +# qhasm: 2x 16x X0 = X0[bigendian64] +# asm 1: vpshufb X0=reg256#2 +# asm 2: vpshufb X0=%ymm1 +vpshufb %ymm0,%ymm1,%ymm1 + +# qhasm: ch7 = r6 +# asm 1: mov ch7=int64#7 +# asm 2: mov ch7=%rax +mov %r12,%rax + +# qhasm: r4Sigma1 = r4>>>14 +# asm 1: rorx $14,r4Sigma1=int64#12 +# asm 2: rorx $14,r4Sigma1=%r14 +rorx $14,%r11,%r14 + +# qhasm: ch7 ^= r5 +# asm 1: xor D0=reg256#3 +# asm 2: vpaddq 0(D0=%ymm2 +vpaddq 0(%r8),%ymm1,%ymm2 + +# qhasm: r418 = r4>>>18 +# asm 1: rorx $18,r418=int64#13 +# asm 2: rorx $18,r418=%r15 +rorx $18,%r11,%r15 + +# qhasm: r4Sigma1 ^= r418 +# asm 1: xor >>41 +# asm 1: rorx $41,r441=int64#13 +# asm 2: rorx $41,r441=%r15 +rorx $41,%r11,%r15 + +# qhasm: r4Sigma1 ^= r441 +# asm 1: xor >>28 +# asm 1: rorx $28,r0Sigma0=int64#13 +# asm 2: rorx $28,r0Sigma0=%r15 +rorx $28,%rsi,%r15 + +# qhasm: ch7 ^= r6 +# asm 1: xor >>34 +# asm 1: rorx $34,r034=int64#14 +# asm 2: rorx $34,r034=%rbx +rorx $34,%rsi,%rbx + +# qhasm: r039 = r0>>>39 +# asm 1: rorx $39,r039=int64#15 +# asm 2: rorx $39,r039=%rbp +rorx $39,%rsi,%rbp + +# qhasm: inplace state4567[3] = r7 +# asm 1: movq maj6=int64#7 +# asm 2: mov maj6=%rax +mov %rcx,%rax + +# qhasm: maj6 ^= r0 +# asm 1: xor r0andr1=int64#14 +# asm 2: mov r0andr1=%rbx +mov %rcx,%rbx + +# qhasm: r0andr1 &= r0 +# asm 1: and maj7=int64#12 +# asm 2: mov maj7=%r14 +mov %rdx,%r14 + +# qhasm: wc0123 = D0 +# asm 1: vmovapd wc0123=stack256#3 +# asm 2: vmovapd wc0123=64(%rsp) +vmovapd %ymm2,64(%rsp) + +# qhasm: r7 += wc0123[0] +# asm 1: addq ch6=int64#13 +# asm 2: mov ch6=%r15 +mov %r10,%r15 + +# qhasm: r3Sigma1 = r3>>>14 +# asm 1: rorx $14,r3Sigma1=int64#15 +# asm 2: rorx $14,r3Sigma1=%rbp +rorx $14,%r9,%rbp + +# qhasm: ch6 ^= r4 +# asm 1: xor X4=reg256#3 +# asm 2: vmovupd 32(X4=%ymm2 +vmovupd 32(%rdi),%ymm2 + +# qhasm: 2x 16x X4 = X4[bigendian64] +# asm 1: vpshufb X4=reg256#3 +# asm 2: vpshufb X4=%ymm2 +vpshufb %ymm0,%ymm2,%ymm2 + +# qhasm: r7 += maj7 +# asm 1: add >>18 +# asm 1: rorx $18,r318=int64#12 +# asm 2: rorx $18,r318=%r14 +rorx $18,%r9,%r14 + +# qhasm: 4x D4 = X4 + mem256[constants + 32] +# asm 1: vpaddq 32(D4=reg256#4 +# asm 2: vpaddq 32(D4=%ymm3 +vpaddq 32(%r8),%ymm2,%ymm3 + +# qhasm: ch6 &= r3 +# asm 1: and >>41 +# asm 1: rorx $41,r341=int64#12 +# asm 2: rorx $41,r341=%r14 +rorx $41,%r9,%r14 + +# qhasm: ch6 ^= r5 +# asm 1: xor >>28 +# asm 1: rorx $28,r7Sigma0=int64#14 +# asm 2: rorx $28,r7Sigma0=%rbx +rorx $28,%r13,%rbx + +# qhasm: inplace state4567[1] = r5 +# asm 1: movq >>34 +# asm 1: rorx $34,r734=int64#12 +# asm 2: rorx $34,r734=%r14 +rorx $34,%r13,%r14 + +# qhasm: inplace state0123[2] = r2 +# asm 1: movq >>39 +# asm 1: rorx $39,r739=int64#13 +# asm 2: rorx $39,r739=%r15 +rorx $39,%r13,%r15 + +# qhasm: r7Sigma0 ^= r734 +# asm 1: xor ch5=int64#12 +# asm 2: mov ch5=%r14 +mov %r11,%r14 + +# qhasm: ch5 ^= r3 +# asm 1: xor >>14 +# asm 1: rorx $14,r2Sigma1=int64#7 +# asm 2: rorx $14,r2Sigma1=%rax +rorx $14,%rdx,%rax + +# qhasm: r6 += r7Sigma0 +# asm 1: add >>18 +# asm 1: rorx $18,r218=int64#13 +# asm 2: rorx $18,r218=%r15 +rorx $18,%rdx,%r15 + +# qhasm: mem256[&w + 32] = X4 +# asm 1: vmovupd >>41 +# asm 1: rorx $41,r241=int64#13 +# asm 2: rorx $41,r241=%r15 +rorx $41,%rdx,%r15 + +# qhasm: maj4 = r7 +# asm 1: mov maj4=int64#14 +# asm 2: mov maj4=%rbx +mov %r13,%rbx + +# qhasm: maj4 ^= r6 +# asm 1: xor >>28 +# asm 1: rorx $28,r6Sigma0=int64#15 +# asm 2: rorx $28,r6Sigma0=%rbp +rorx $28,%r12,%rbp + +# qhasm: wc4567 = D4 +# asm 1: vmovapd wc4567=stack256#4 +# asm 2: vmovapd wc4567=96(%rsp) +vmovapd %ymm3,96(%rsp) + +# qhasm: r2Sigma1 ^= r241 +# asm 1: xor >>34 +# asm 1: rorx $34,r634=int64#12 +# asm 2: rorx $34,r634=%r14 +rorx $34,%r12,%r14 + +# qhasm: in_stack = in +# asm 1: movq in_stack=stack64#11 +# asm 2: movq in_stack=400(%rsp) +movq %rdi,400(%rsp) + +# qhasm: r6Sigma0 ^= r634 +# asm 1: xor >>39 +# asm 1: rorx $39,r639=int64#12 +# asm 2: rorx $39,r639=%r14 +rorx $39,%r12,%r14 + +# qhasm: r6andr7 = r7 +# asm 1: mov r6andr7=int64#13 +# asm 2: mov r6andr7=%r15 +mov %r13,%r15 + +# qhasm: r6andr7 &= r6 +# asm 1: and maj5=int64#12 +# asm 2: mov maj5=%r14 +mov %rsi,%r14 + +# qhasm: inplace state0123[1] = r1 +# asm 1: movq ch4=int64#7 +# asm 2: mov ch4=%rax +mov %r9,%rax + +# qhasm: r1Sigma1 = r1>>>14 +# asm 1: rorx $14,r1Sigma1=int64#15 +# asm 2: rorx $14,r1Sigma1=%rbp +rorx $14,%rcx,%rbp + +# qhasm: ch4 ^= r2 +# asm 1: xor >>18 +# asm 1: rorx $18,r118=int64#12 +# asm 2: rorx $18,r118=%r14 +rorx $18,%rcx,%r14 + +# qhasm: inplace state0123[0] = r0 +# asm 1: movq >>41 +# asm 1: rorx $41,r141=int64#12 +# asm 2: rorx $41,r141=%r14 +rorx $41,%rcx,%r14 + +# qhasm: X8 = mem256[in + 64] +# asm 1: vmovupd 64(X8=reg256#4 +# asm 2: vmovupd 64(X8=%ymm3 +vmovupd 64(%rdi),%ymm3 + +# qhasm: r1Sigma1 ^= r141 +# asm 1: xor >>28 +# asm 1: rorx $28,r5Sigma0=int64#12 +# asm 2: rorx $28,r5Sigma0=%r14 +rorx $28,%r10,%r14 + +# qhasm: maj4 ^= r6andr7 +# asm 1: xor >>34 +# asm 1: rorx $34,r534=int64#7 +# asm 2: rorx $34,r534=%rax +rorx $34,%r10,%rax + +# qhasm: r4 += r1Sigma1 +# asm 1: add X12=reg256#5 +# asm 2: vmovupd 96(X12=%ymm4 +vmovupd 96(%rdi),%ymm4 + +# qhasm: r0 += r4 +# asm 1: add >>39 +# asm 1: rorx $39,r539=int64#1 +# asm 2: rorx $39,r539=%rdi +rorx $39,%r10,%rdi + +# qhasm: r4 += maj4 +# asm 1: add >>14 +# asm 1: rorx $14,r0Sigma1=int64#1 +# asm 2: rorx $14,r0Sigma1=%rdi +rorx $14,%rsi,%rdi + +# qhasm: r4 += r5Sigma0 +# asm 1: add ch3=int64#7 +# asm 2: mov ch3=%rax +mov %rdx,%rax + +# qhasm: r018 = r0>>>18 +# asm 1: rorx $18,r018=int64#12 +# asm 2: rorx $18,r018=%r14 +rorx $18,%rsi,%r14 + +# qhasm: ch3 ^= r1 +# asm 1: xor X8=reg256#4 +# asm 2: vpshufb X8=%ymm3 +vpshufb %ymm0,%ymm3,%ymm3 + +# qhasm: r0Sigma1 ^= r018 +# asm 1: xor >>41 +# asm 1: rorx $41,r041=int64#12 +# asm 2: rorx $41,r041=%r14 +rorx $41,%rsi,%r14 + +# qhasm: r4Sigma0 = r4>>>28 +# asm 1: rorx $28,r4Sigma0=int64#13 +# asm 2: rorx $28,r4Sigma0=%r15 +rorx $28,%r11,%r15 + +# qhasm: 4x D8 = X8 + mem256[constants + 64] +# asm 1: vpaddq 64(D8=reg256#6 +# asm 2: vpaddq 64(D8=%ymm5 +vpaddq 64(%r8),%ymm3,%ymm5 + +# qhasm: r0Sigma1 ^= r041 +# asm 1: xor >>34 +# asm 1: rorx $34,r434=int64#7 +# asm 2: rorx $34,r434=%rax +rorx $34,%r11,%rax + +# qhasm: r439 = r4>>>39 +# asm 1: rorx $39,r439=int64#12 +# asm 2: rorx $39,r439=%r14 +rorx $39,%r11,%r14 + +# qhasm: maj2 = r5 +# asm 1: mov maj2=int64#14 +# asm 2: mov maj2=%rbx +mov %r10,%rbx + +# qhasm: maj2 ^= r4 +# asm 1: xor wc891011=stack256#3 +# asm 2: vmovapd wc891011=64(%rsp) +vmovapd %ymm5,64(%rsp) + +# qhasm: r4Sigma0 ^= r434 +# asm 1: xor r4andr5=int64#1 +# asm 2: mov r4andr5=%rdi +mov %r10,%rdi + +# qhasm: r4andr5 &= r4 +# asm 1: and maj3=int64#7 +# asm 2: mov maj3=%rax +mov %r12,%rax + +# qhasm: maj3 &= maj2 +# asm 1: and X12=reg256#5 +# asm 2: vpshufb X12=%ymm4 +vpshufb %ymm0,%ymm4,%ymm4 + +# qhasm: ch2 = r1 +# asm 1: mov ch2=int64#12 +# asm 2: mov ch2=%r14 +mov %rcx,%r14 + +# qhasm: maj3 ^= r4andr5 +# asm 1: xor >>14 +# asm 1: rorx $14,r7Sigma1=int64#7 +# asm 2: rorx $14,r7Sigma1=%rax +rorx $14,%r13,%rax + +# qhasm: 4x D12 = X12 + mem256[constants + 96] +# asm 1: vpaddq 96(D12=reg256#6 +# asm 2: vpaddq 96(D12=%ymm5 +vpaddq 96(%r8),%ymm4,%ymm5 + +# qhasm: ch2 &= r7 +# asm 1: and >>18 +# asm 1: rorx $18,r718=int64#13 +# asm 2: rorx $18,r718=%r15 +rorx $18,%r13,%r15 + +# qhasm: r7Sigma1 ^= r718 +# asm 1: xor >>41 +# asm 1: rorx $41,r741=int64#13 +# asm 2: rorx $41,r741=%r15 +rorx $41,%r13,%r15 + +# qhasm: mem256[&w + 96] = X12 +# asm 1: vmovupd >>28 +# asm 1: rorx $28,r3Sigma0=int64#1 +# asm 2: rorx $28,r3Sigma0=%rdi +rorx $28,%r9,%rdi + +# qhasm: wc12131415 = D12 +# asm 1: vmovapd wc12131415=stack256#5 +# asm 2: vmovapd wc12131415=128(%rsp) +vmovapd %ymm5,128(%rsp) + +# qhasm: r2 += ch2 +# asm 1: add ch1=int64#7 +# asm 2: mov ch1=%rax +mov %rsi,%rax + +# qhasm: r334 = r3>>>34 +# asm 1: rorx $34,r334=int64#12 +# asm 2: rorx $34,r334=%r14 +rorx $34,%r9,%r14 + +# qhasm: ch1 ^= r7 +# asm 1: xor >>39 +# asm 1: rorx $39,r339=int64#12 +# asm 2: rorx $39,r339=%r14 +rorx $39,%r9,%r14 + +# qhasm: r2 += maj2 +# asm 1: add >>14 +# asm 1: rorx $14,r6Sigma1=int64#12 +# asm 2: rorx $14,r6Sigma1=%r14 +rorx $14,%r12,%r14 + +# qhasm: r618 = r6>>>18 +# asm 1: rorx $18,r618=int64#13 +# asm 2: rorx $18,r618=%r15 +rorx $18,%r12,%r15 + +# qhasm: r641 = r6>>>41 +# asm 1: rorx $41,r641=int64#14 +# asm 2: rorx $41,r641=%rbx +rorx $41,%r12,%rbx + +# qhasm: ch1 &= r6 +# asm 1: and >>28 +# asm 1: rorx $28,r2Sigma0=int64#1 +# asm 2: rorx $28,r2Sigma0=%rdi +rorx $28,%rdx,%rdi + +# qhasm: r6Sigma1 ^= r641 +# asm 1: xor >>34 +# asm 1: rorx $34,r234=int64#13 +# asm 2: rorx $34,r234=%r15 +rorx $34,%rdx,%r15 + +# qhasm: maj0 = r3 +# asm 1: mov maj0=int64#14 +# asm 2: mov maj0=%rbx +mov %r9,%rbx + +# qhasm: maj0 ^= r2 +# asm 1: xor >>39 +# asm 1: rorx $39,r239=int64#7 +# asm 2: rorx $39,r239=%rax +rorx $39,%rdx,%rax + +# qhasm: r2andr3 = r3 +# asm 1: mov r2andr3=int64#13 +# asm 2: mov r2andr3=%r15 +mov %r9,%r15 + +# qhasm: r2andr3 &= r2 +# asm 1: and maj1=int64#7 +# asm 2: mov maj1=%rax +mov %r11,%rax + +# qhasm: maj1 &= maj0 +# asm 1: and ch0=int64#1 +# asm 2: mov ch0=%rdi +mov %r13,%rdi + +# qhasm: maj1 ^= r2andr3 +# asm 1: xor >>14 +# asm 1: rorx $14,r5Sigma1=int64#12 +# asm 2: rorx $14,r5Sigma1=%r14 +rorx $14,%r10,%r14 + +# qhasm: r1 += maj1 +# asm 1: add >>18 +# asm 1: rorx $18,r518=int64#7 +# asm 2: rorx $18,r518=%rax +rorx $18,%r10,%rax + +# qhasm: r5Sigma1 ^= r518 +# asm 1: xor >>41 +# asm 1: rorx $41,r541=int64#7 +# asm 2: rorx $41,r541=%rax +rorx $41,%r10,%rax + +# qhasm: r5Sigma1 ^= r541 +# asm 1: xor >>28 +# asm 1: rorx $28,r1Sigma0=int64#7 +# asm 2: rorx $28,r1Sigma0=%rax +rorx $28,%rcx,%rax + +# qhasm: r0 += ch0 +# asm 1: add >>34 +# asm 1: rorx $34,r134=int64#1 +# asm 2: rorx $34,r134=%rdi +rorx $34,%rcx,%rdi + +# qhasm: r1Sigma0 ^= r134 +# asm 1: xor >>39 +# asm 1: rorx $39,r139=int64#1 +# asm 2: rorx $39,r139=%rdi +rorx $39,%rcx,%rdi + +# qhasm: r1Sigma0 ^= r139 +# asm 1: xor i=int64#1 +# asm 2: mov $4,>i=%rdi +mov $4,%rdi + +# qhasm: innerloop: +._innerloop: + +# qhasm: X1 = mem256[&w + 8] +# asm 1: vmovupd X1=reg256#6 +# asm 2: vmovupd X1=%ymm5 +vmovupd 168(%rsp),%ymm5 + +# qhasm: 4x X1right1 = X1 unsigned>> 1 +# asm 1: vpsrlq $1,X1right1=reg256#7 +# asm 2: vpsrlq $1,X1right1=%ymm6 +vpsrlq $1,%ymm5,%ymm6 + +# qhasm: r4Sigma1 = r4>>>14 +# asm 1: rorx $14,r4Sigma1=int64#7 +# asm 2: rorx $14,r4Sigma1=%rax +rorx $14,%r11,%rax + +# qhasm: r7 += wc891011[0] +# asm 1: addq X1left63=reg256#8 +# asm 2: vpsllq $63,X1left63=%ymm7 +vpsllq $63,%ymm5,%ymm7 + +# qhasm: ch7 = r6 +# asm 1: mov ch7=int64#12 +# asm 2: mov ch7=%r14 +mov %r12,%r14 + +# qhasm: ch7 ^= r5 +# asm 1: xor >>18 +# asm 1: rorx $18,r418=int64#13 +# asm 2: rorx $18,r418=%r15 +rorx $18,%r11,%r15 + +# qhasm: ch7 &= r4 +# asm 1: and maj6=int64#14 +# asm 2: mov maj6=%rbx +mov %rcx,%rbx + +# qhasm: maj6 ^= r0 +# asm 1: xor W14=reg256#9%128 +# asm 2: vmovupd W14=%xmm8 +vmovupd 272(%rsp),%xmm8 + +# qhasm: r441 = r4>>>41 +# asm 1: rorx $41,r441=int64#15 +# asm 2: rorx $41,r441=%rbp +rorx $41,%r11,%rbp + +# qhasm: r4Sigma1 ^= r418 +# asm 1: xor X1sigma0=reg256#7 +# asm 2: vpxor X1sigma0=%ymm6 +vpxor %ymm6,%ymm7,%ymm6 + +# qhasm: 4x X1right8 = X1 unsigned>> 8 +# asm 1: vpsrlq $8,X1right8=reg256#8 +# asm 2: vpsrlq $8,X1right8=%ymm7 +vpsrlq $8,%ymm5,%ymm7 + +# qhasm: r4Sigma1 ^= r441 +# asm 1: xor >>28 +# asm 1: rorx $28,r0Sigma0=int64#12 +# asm 2: rorx $28,r0Sigma0=%r14 +rorx $28,%rsi,%r14 + +# qhasm: r034 = r0>>>34 +# asm 1: rorx $34,r034=int64#13 +# asm 2: rorx $34,r034=%r15 +rorx $34,%rsi,%r15 + +# qhasm: X1sigma0 = X1sigma0 ^ X1right8 +# asm 1: vpxor X1sigma0=reg256#7 +# asm 2: vpxor X1sigma0=%ymm6 +vpxor %ymm6,%ymm7,%ymm6 + +# qhasm: r7 += r4Sigma1 +# asm 1: add maj7=int64#7 +# asm 2: mov maj7=%rax +mov %rdx,%rax + +# qhasm: maj7 &= maj6 +# asm 1: and > 19 +# asm 1: vpsrlq $19,W14right19=reg256#8%128 +# asm 2: vpsrlq $19,W14right19=%xmm7 +vpsrlq $19,%xmm8,%xmm7 + +# qhasm: r039 = r0>>>39 +# asm 1: rorx $39,r039=int64#13 +# asm 2: rorx $39,r039=%r15 +rorx $39,%rsi,%r15 + +# qhasm: 4x X1left56 = X1 << 56 +# asm 1: vpsllq $56,X1left56=reg256#10 +# asm 2: vpsllq $56,X1left56=%ymm9 +vpsllq $56,%ymm5,%ymm9 + +# qhasm: r3 += r7 +# asm 1: add r0andr1=int64#13 +# asm 2: mov r0andr1=%r15 +mov %rcx,%r15 + +# qhasm: r0andr1 &= r0 +# asm 1: and W14left45=reg256#11%128 +# asm 2: vpsllq $45,W14left45=%xmm10 +vpsllq $45,%xmm8,%xmm10 + +# qhasm: r7 += r0Sigma0 +# asm 1: add ch6=int64#12 +# asm 2: mov ch6=%r14 +mov %r10,%r14 + +# qhasm: ch6 ^= r4 +# asm 1: xor > 61 +# asm 1: vpsrlq $61,W14right61=reg256#12%128 +# asm 2: vpsrlq $61,W14right61=%xmm11 +vpsrlq $61,%xmm8,%xmm11 + +# qhasm: r3Sigma1 = r3>>>14 +# asm 1: rorx $14,r3Sigma1=int64#15 +# asm 2: rorx $14,r3Sigma1=%rbp +rorx $14,%r9,%rbp + +# qhasm: X1sigma0 = X1sigma0 ^ X1left56 +# asm 1: vpxor X1sigma0=reg256#7 +# asm 2: vpxor X1sigma0=%ymm6 +vpxor %ymm6,%ymm9,%ymm6 + +# qhasm: r7 += maj7 +# asm 1: add >>18 +# asm 1: rorx $18,r318=int64#7 +# asm 2: rorx $18,r318=%rax +rorx $18,%r9,%rax + +# qhasm: 4x X1right7 = X1 unsigned>> 7 +# asm 1: vpsrlq $7,X1right7=reg256#6 +# asm 2: vpsrlq $7,X1right7=%ymm5 +vpsrlq $7,%ymm5,%ymm5 + +# qhasm: 1x,0 W14sigma1 = W14right19 ^ W14left45 +# asm 1: vpxor W14sigma1=reg256#8%128 +# asm 2: vpxor W14sigma1=%xmm7 +vpxor %xmm7,%xmm10,%xmm7 + +# qhasm: ch6 &= r3 +# asm 1: and >>41 +# asm 1: rorx $41,r341=int64#7 +# asm 2: rorx $41,r341=%rax +rorx $41,%r9,%rax + +# qhasm: maj6 &= r7 +# asm 1: and X1sigma0=reg256#6 +# asm 2: vpxor X1sigma0=%ymm5 +vpxor %ymm6,%ymm5,%ymm5 + +# qhasm: 1x,0 W14sigma1 ^= W14right61 +# asm 1: vpxor X0=reg256#2 +# asm 2: vpaddq X0=%ymm1 +vpaddq %ymm1,%ymm5,%ymm1 + +# qhasm: r3Sigma1 ^= r341 +# asm 1: xor W14left3=reg256#6%128 +# asm 2: vpsllq $3,W14left3=%xmm5 +vpsllq $3,%xmm8,%xmm5 + +# qhasm: r7Sigma0 = r7>>>28 +# asm 1: rorx $28,r7Sigma0=int64#7 +# asm 2: rorx $28,r7Sigma0=%rax +rorx $28,%r13,%rax + +# qhasm: ch6 ^= r5 +# asm 1: xor X0=reg256#2 +# asm 2: vpaddq X0=%ymm1 +vpaddq 232(%rsp),%ymm1,%ymm1 + +# qhasm: r734 = r7>>>34 +# asm 1: rorx $34,r734=int64#13 +# asm 2: rorx $34,r734=%r15 +rorx $34,%r13,%r15 + +# qhasm: r5 += wc891011[2] +# asm 1: addq >>39 +# asm 1: rorx $39,r739=int64#12 +# asm 2: rorx $39,r739=%r14 +rorx $39,%r13,%r14 + +# qhasm: r2 += r6 +# asm 1: add > 6 +# asm 1: vpsrlq $6,W14right6=reg256#6%128 +# asm 2: vpsrlq $6,W14right6=%xmm5 +vpsrlq $6,%xmm8,%xmm5 + +# qhasm: r7Sigma0 ^= r739 +# asm 1: xor ch5=int64#12 +# asm 2: mov ch5=%r14 +mov %r11,%r14 + +# qhasm: ch5 ^= r3 +# asm 1: xor >>14 +# asm 1: rorx $14,r2Sigma1=int64#7 +# asm 2: rorx $14,r2Sigma1=%rax +rorx $14,%rdx,%rax + +# qhasm: 1x,0 W14sigma1 ^= W14right6 +# asm 1: vpxor >>18 +# asm 1: rorx $18,r218=int64#13 +# asm 2: rorx $18,r218=%r15 +rorx $18,%rdx,%r15 + +# qhasm: r241 = r2>>>41 +# asm 1: rorx $41,r241=int64#14 +# asm 2: rorx $41,r241=%rbx +rorx $41,%rdx,%rbx + +# qhasm: 4x X0 = W14sigma1 + X0 +# asm 1: vpaddq X0=reg256#2 +# asm 2: vpaddq X0=%ymm1 +vpaddq %ymm7,%ymm1,%ymm1 + +# qhasm: ch5 ^= r4 +# asm 1: xor > 19 +# asm 1: vpsrlq $19,W0right19=reg256#6%128 +# asm 2: vpsrlq $19,W0right19=%xmm5 +vpsrlq $19,%xmm1,%xmm5 + +# qhasm: r6Sigma0 = r6>>>28 +# asm 1: rorx $28,r6Sigma0=int64#13 +# asm 2: rorx $28,r6Sigma0=%r15 +rorx $28,%r12,%r15 + +# qhasm: r5 += ch5 +# asm 1: add W0left45=reg256#7%128 +# asm 2: vpsllq $45,W0left45=%xmm6 +vpsllq $45,%xmm1,%xmm6 + +# qhasm: r634 = r6>>>34 +# asm 1: rorx $34,r634=int64#12 +# asm 2: rorx $34,r634=%r14 +rorx $34,%r12,%r14 + +# qhasm: r2Sigma1 ^= r241 +# asm 1: xor maj4=int64#14 +# asm 2: mov maj4=%rbx +mov %r13,%rbx + +# qhasm: X5 = mem256[&w + 40] +# asm 1: vmovupd X5=reg256#8 +# asm 2: vmovupd X5=%ymm7 +vmovupd 200(%rsp),%ymm7 + +# qhasm: maj4 ^= r6 +# asm 1: xor > 61 +# asm 1: vpsrlq $61,W0right61=reg256#9%128 +# asm 2: vpsrlq $61,W0right61=%xmm8 +vpsrlq $61,%xmm1,%xmm8 + +# qhasm: 1x,0 W0sigma1 = W0right19 ^ W0left45 +# asm 1: vpxor W0sigma1=reg256#6%128 +# asm 2: vpxor W0sigma1=%xmm5 +vpxor %xmm5,%xmm6,%xmm5 + +# qhasm: r6Sigma0 ^= r634 +# asm 1: xor >>39 +# asm 1: rorx $39,r639=int64#12 +# asm 2: rorx $39,r639=%r14 +rorx $39,%r12,%r14 + +# qhasm: 2x,0 W0left3 = X0 << 3 +# asm 1: vpsllq $3,W0left3=reg256#7%128 +# asm 2: vpsllq $3,W0left3=%xmm6 +vpsllq $3,%xmm1,%xmm6 + +# qhasm: r6Sigma0 ^= r639 +# asm 1: xor > 6 +# asm 1: vpsrlq $6,W0right6=reg256#9%128 +# asm 2: vpsrlq $6,W0right6=%xmm8 +vpsrlq $6,%xmm1,%xmm8 + +# qhasm: 1x,0 W0sigma1 ^= W0left3 +# asm 1: vpxor r6andr7=int64#7 +# asm 2: mov r6andr7=%rax +mov %r13,%rax + +# qhasm: r6andr7 &= r6 +# asm 1: and >>14 +# asm 1: rorx $14,r1Sigma1=int64#12 +# asm 2: rorx $14,r1Sigma1=%r14 +rorx $14,%rcx,%r14 + +# qhasm: r5 += r6Sigma0 +# asm 1: add maj5=int64#13 +# asm 2: mov maj5=%r15 +mov %rsi,%r15 + +# qhasm: maj5 &= maj4 +# asm 1: and W0sigma1=reg256#6 +# asm 2: vpermq $0x4e,W0sigma1=%ymm5 +vpermq $0x4e,%ymm5,%ymm5 + +# qhasm: maj5 ^= r6andr7 +# asm 1: xor ch4=int64#15 +# asm 2: mov ch4=%rbp +mov %r9,%rbp + +# qhasm: 4x X5right1 = X5 unsigned>> 1 +# asm 1: vpsrlq $1,X5right1=reg256#7 +# asm 2: vpsrlq $1,X5right1=%ymm6 +vpsrlq $1,%ymm7,%ymm6 + +# qhasm: ch4 ^= r2 +# asm 1: xor >>18 +# asm 1: rorx $18,r118=int64#13 +# asm 2: rorx $18,r118=%r15 +rorx $18,%rcx,%r15 + +# qhasm: ch4 &= r1 +# asm 1: and >>41 +# asm 1: rorx $41,r141=int64#13 +# asm 2: rorx $41,r141=%r15 +rorx $41,%rcx,%r15 + +# qhasm: 4x X0 = X0 + W0sigma1 +# asm 1: vpaddq X0=reg256#2 +# asm 2: vpaddq X0=%ymm1 +vpaddq %ymm1,%ymm5,%ymm1 + +# qhasm: r4 += ch4 +# asm 1: add >>28 +# asm 1: rorx $28,r5Sigma0=int64#7 +# asm 2: rorx $28,r5Sigma0=%rax +rorx $28,%r10,%rax + +# qhasm: 4x D0 = X0 + mem256[constants + 128] +# asm 1: vpaddq 128(D0=reg256#6 +# asm 2: vpaddq 128(D0=%ymm5 +vpaddq 128(%r8),%ymm1,%ymm5 + +# qhasm: r1Sigma1 ^= r141 +# asm 1: xor >>34 +# asm 1: rorx $34,r534=int64#13 +# asm 2: rorx $34,r534=%r15 +rorx $34,%r10,%r15 + +# qhasm: mem256[&w + 128] = X0 +# asm 1: vmovupd >>39 +# asm 1: rorx $39,r539=int64#12 +# asm 2: rorx $39,r539=%r14 +rorx $39,%r10,%r14 + +# qhasm: r3 += wc12131415[0] +# asm 1: addq wc0123=stack256#3 +# asm 2: vmovapd wc0123=64(%rsp) +vmovapd %ymm5,64(%rsp) + +# qhasm: W2 = mem128[&w + 16],0 +# asm 1: vmovupd W2=reg256#6%128 +# asm 2: vmovupd W2=%xmm5 +vmovupd 176(%rsp),%xmm5 + +# qhasm: r4 += r5Sigma0 +# asm 1: add >>14 +# asm 1: rorx $14,r0Sigma1=int64#7 +# asm 2: rorx $14,r0Sigma1=%rax +rorx $14,%rsi,%rax + +# qhasm: ch3 = r2 +# asm 1: mov ch3=int64#12 +# asm 2: mov ch3=%r14 +mov %rdx,%r14 + +# qhasm: ch3 ^= r1 +# asm 1: xor X5left63=reg256#9 +# asm 2: vpsllq $63,X5left63=%ymm8 +vpsllq $63,%ymm7,%ymm8 + +# qhasm: r018 = r0>>>18 +# asm 1: rorx $18,r018=int64#13 +# asm 2: rorx $18,r018=%r15 +rorx $18,%rsi,%r15 + +# qhasm: maj2 = r5 +# asm 1: mov maj2=int64#14 +# asm 2: mov maj2=%rbx +mov %r10,%rbx + +# qhasm: ch3 &= r0 +# asm 1: and >>41 +# asm 1: rorx $41,r041=int64#15 +# asm 2: rorx $41,r041=%rbp +rorx $41,%rsi,%rbp + +# qhasm: X5sigma0 = X5right1 ^ X5left63 +# asm 1: vpxor X5sigma0=reg256#7 +# asm 2: vpxor X5sigma0=%ymm6 +vpxor %ymm6,%ymm8,%ymm6 + +# qhasm: r0Sigma1 ^= r018 +# asm 1: xor > 8 +# asm 1: vpsrlq $8,X5right8=reg256#9 +# asm 2: vpsrlq $8,X5right8=%ymm8 +vpsrlq $8,%ymm7,%ymm8 + +# qhasm: r4Sigma0 = r4>>>28 +# asm 1: rorx $28,r4Sigma0=int64#13 +# asm 2: rorx $28,r4Sigma0=%r15 +rorx $28,%r11,%r15 + +# qhasm: r0Sigma1 ^= r041 +# asm 1: xor >>34 +# asm 1: rorx $34,r434=int64#12 +# asm 2: rorx $34,r434=%r14 +rorx $34,%r11,%r14 + +# qhasm: X5sigma0 = X5sigma0 ^ X5right8 +# asm 1: vpxor X5sigma0=reg256#7 +# asm 2: vpxor X5sigma0=%ymm6 +vpxor %ymm6,%ymm8,%ymm6 + +# qhasm: r3 += r0Sigma1 +# asm 1: add maj3=int64#7 +# asm 2: mov maj3=%rax +mov %r12,%rax + +# qhasm: maj3 &= maj2 +# asm 1: and >>39 +# asm 1: rorx $39,r439=int64#12 +# asm 2: rorx $39,r439=%r14 +rorx $39,%r11,%r14 + +# qhasm: 2x,0 W2right19 = W2 unsigned>> 19 +# asm 1: vpsrlq $19,W2right19=reg256#9%128 +# asm 2: vpsrlq $19,W2right19=%xmm8 +vpsrlq $19,%xmm5,%xmm8 + +# qhasm: 4x X5left56 = X5 << 56 +# asm 1: vpsllq $56,X5left56=reg256#10 +# asm 2: vpsllq $56,X5left56=%ymm9 +vpsllq $56,%ymm7,%ymm9 + +# qhasm: r7 += r3 +# asm 1: add r4andr5=int64#12 +# asm 2: mov r4andr5=%r14 +mov %r10,%r14 + +# qhasm: r4andr5 &= r4 +# asm 1: and W2left45=reg256#11%128 +# asm 2: vpsllq $45,W2left45=%xmm10 +vpsllq $45,%xmm5,%xmm10 + +# qhasm: r3 += r4Sigma0 +# asm 1: add ch2=int64#13 +# asm 2: mov ch2=%r15 +mov %rcx,%r15 + +# qhasm: ch2 ^= r0 +# asm 1: xor > 61 +# asm 1: vpsrlq $61,W2right61=reg256#12%128 +# asm 2: vpsrlq $61,W2right61=%xmm11 +vpsrlq $61,%xmm5,%xmm11 + +# qhasm: r7Sigma1 = r7>>>14 +# asm 1: rorx $14,r7Sigma1=int64#15 +# asm 2: rorx $14,r7Sigma1=%rbp +rorx $14,%r13,%rbp + +# qhasm: X5sigma0 = X5sigma0 ^ X5left56 +# asm 1: vpxor X5sigma0=reg256#7 +# asm 2: vpxor X5sigma0=%ymm6 +vpxor %ymm6,%ymm9,%ymm6 + +# qhasm: r3 += maj3 +# asm 1: add > 7 +# asm 1: vpsrlq $7,X5right7=reg256#8 +# asm 2: vpsrlq $7,X5right7=%ymm7 +vpsrlq $7,%ymm7,%ymm7 + +# qhasm: r718 = r7>>>18 +# asm 1: rorx $18,r718=int64#7 +# asm 2: rorx $18,r718=%rax +rorx $18,%r13,%rax + +# qhasm: 1x,0 W2sigma1 = W2right19 ^ W2left45 +# asm 1: vpxor W2sigma1=reg256#9%128 +# asm 2: vpxor W2sigma1=%xmm8 +vpxor %xmm8,%xmm10,%xmm8 + +# qhasm: ch2 &= r7 +# asm 1: and X5sigma0=reg256#7 +# asm 2: vpxor X5sigma0=%ymm6 +vpxor %ymm6,%ymm7,%ymm6 + +# qhasm: r741 = r7>>>41 +# asm 1: rorx $41,r741=int64#7 +# asm 2: rorx $41,r741=%rax +rorx $41,%r13,%rax + +# qhasm: maj2 &= r3 +# asm 1: and X4=reg256#3 +# asm 2: vpaddq X4=%ymm2 +vpaddq %ymm2,%ymm6,%ymm2 + +# qhasm: r7Sigma1 ^= r741 +# asm 1: xor W2left3=reg256#7%128 +# asm 2: vpsllq $3,W2left3=%xmm6 +vpsllq $3,%xmm5,%xmm6 + +# qhasm: r3Sigma0 = r3>>>28 +# asm 1: rorx $28,r3Sigma0=int64#7 +# asm 2: rorx $28,r3Sigma0=%rax +rorx $28,%r9,%rax + +# qhasm: ch2 ^= r1 +# asm 1: xor >>34 +# asm 1: rorx $34,r334=int64#12 +# asm 2: rorx $34,r334=%r14 +rorx $34,%r9,%r14 + +# qhasm: 4x X4 = X4 + mem256[&w + 104] +# asm 1: vpaddq X4=reg256#3 +# asm 2: vpaddq X4=%ymm2 +vpaddq 264(%rsp),%ymm2,%ymm2 + +# qhasm: r1 += wc12131415[2] +# asm 1: addq >>39 +# asm 1: rorx $39,r339=int64#12 +# asm 2: rorx $39,r339=%r14 +rorx $39,%r9,%r14 + +# qhasm: r6 += r2 +# asm 1: add > 6 +# asm 1: vpsrlq $6,W2right6=reg256#6%128 +# asm 2: vpsrlq $6,W2right6=%xmm5 +vpsrlq $6,%xmm5,%xmm5 + +# qhasm: r3Sigma0 ^= r339 +# asm 1: xor ch1=int64#12 +# asm 2: mov ch1=%r14 +mov %rsi,%r14 + +# qhasm: ch1 ^= r7 +# asm 1: xor >>14 +# asm 1: rorx $14,r6Sigma1=int64#7 +# asm 2: rorx $14,r6Sigma1=%rax +rorx $14,%r12,%rax + +# qhasm: 1x,0 W2sigma1 ^= W2right6 +# asm 1: vpxor >>18 +# asm 1: rorx $18,r618=int64#13 +# asm 2: rorx $18,r618=%r15 +rorx $18,%r12,%r15 + +# qhasm: r641 = r6>>>41 +# asm 1: rorx $41,r641=int64#14 +# asm 2: rorx $41,r641=%rbx +rorx $41,%r12,%rbx + +# qhasm: 4x X4 = W2sigma1 + X4 +# asm 1: vpaddq X4=reg256#3 +# asm 2: vpaddq X4=%ymm2 +vpaddq %ymm8,%ymm2,%ymm2 + +# qhasm: ch1 ^= r0 +# asm 1: xor > 19 +# asm 1: vpsrlq $19,W4right19=reg256#6%128 +# asm 2: vpsrlq $19,W4right19=%xmm5 +vpsrlq $19,%xmm2,%xmm5 + +# qhasm: r1 += ch1 +# asm 1: add >>28 +# asm 1: rorx $28,r2Sigma0=int64#12 +# asm 2: rorx $28,r2Sigma0=%r14 +rorx $28,%rdx,%r14 + +# qhasm: 2x,0 W4left45 = X4 << 45 +# asm 1: vpsllq $45,W4left45=reg256#7%128 +# asm 2: vpsllq $45,W4left45=%xmm6 +vpsllq $45,%xmm2,%xmm6 + +# qhasm: r6Sigma1 ^= r641 +# asm 1: xor >>34 +# asm 1: rorx $34,r234=int64#13 +# asm 2: rorx $34,r234=%r15 +rorx $34,%rdx,%r15 + +# qhasm: maj0 = r3 +# asm 1: mov maj0=int64#14 +# asm 2: mov maj0=%rbx +mov %r9,%rbx + +# qhasm: maj0 ^= r2 +# asm 1: xor > 61 +# asm 1: vpsrlq $61,W4right61=reg256#8%128 +# asm 2: vpsrlq $61,W4right61=%xmm7 +vpsrlq $61,%xmm2,%xmm7 + +# qhasm: X9 = mem256[&w + 72] +# asm 1: vmovupd X9=reg256#9 +# asm 2: vmovupd X9=%ymm8 +vmovupd 232(%rsp),%ymm8 + +# qhasm: r2Sigma0 ^= r234 +# asm 1: xor W4sigma1=reg256#6%128 +# asm 2: vpxor W4sigma1=%xmm5 +vpxor %xmm5,%xmm6,%xmm5 + +# qhasm: r239 = r2>>>39 +# asm 1: rorx $39,r239=int64#13 +# asm 2: rorx $39,r239=%r15 +rorx $39,%rdx,%r15 + +# qhasm: 2x,0 W4left3 = X4 << 3 +# asm 1: vpsllq $3,W4left3=reg256#7%128 +# asm 2: vpsllq $3,W4left3=%xmm6 +vpsllq $3,%xmm2,%xmm6 + +# qhasm: 1x,0 W4sigma1 ^= W4right61 +# asm 1: vpxor > 6 +# asm 1: vpsrlq $6,W4right6=reg256#8%128 +# asm 2: vpsrlq $6,W4right6=%xmm7 +vpsrlq $6,%xmm2,%xmm7 + +# qhasm: r2Sigma0 ^= r239 +# asm 1: xor r2andr3=int64#7 +# asm 2: mov r2andr3=%rax +mov %r9,%rax + +# qhasm: r5Sigma1 = r5>>>14 +# asm 1: rorx $14,r5Sigma1=int64#13 +# asm 2: rorx $14,r5Sigma1=%r15 +rorx $14,%r10,%r15 + +# qhasm: r2andr3 &= r2 +# asm 1: and maj1=int64#12 +# asm 2: mov maj1=%r14 +mov %r11,%r14 + +# qhasm: maj1 &= maj0 +# asm 1: and W4sigma1=reg256#6 +# asm 2: vpermq $0x4e,W4sigma1=%ymm5 +vpermq $0x4e,%ymm5,%ymm5 + +# qhasm: maj1 ^= r2andr3 +# asm 1: xor ch0=int64#15 +# asm 2: mov ch0=%rbp +mov %r13,%rbp + +# qhasm: 4x X9right1 = X9 unsigned>> 1 +# asm 1: vpsrlq $1,X9right1=reg256#7 +# asm 2: vpsrlq $1,X9right1=%ymm6 +vpsrlq $1,%ymm8,%ymm6 + +# qhasm: ch0 ^= r6 +# asm 1: xor >>18 +# asm 1: rorx $18,r518=int64#12 +# asm 2: rorx $18,r518=%r14 +rorx $18,%r10,%r14 + +# qhasm: maj0 &= r1 +# asm 1: and X4=reg256#3 +# asm 2: vpaddq X4=%ymm2 +vpaddq %ymm2,%ymm5,%ymm2 + +# qhasm: r541 = r5>>>41 +# asm 1: rorx $41,r541=int64#12 +# asm 2: rorx $41,r541=%r14 +rorx $41,%r10,%r14 + +# qhasm: mem256[&w + 32] = X4 +# asm 1: vmovupd >>28 +# asm 1: rorx $28,r1Sigma0=int64#7 +# asm 2: rorx $28,r1Sigma0=%rax +rorx $28,%rcx,%rax + +# qhasm: 4x D4 = X4 + mem256[constants + 32] +# asm 1: vpaddq 32(D4=reg256#6 +# asm 2: vpaddq 32(D4=%ymm5 +vpaddq 32(%r8),%ymm2,%ymm5 + +# qhasm: wc4567 = D4 +# asm 1: vmovapd wc4567=stack256#4 +# asm 2: vmovapd wc4567=96(%rsp) +vmovapd %ymm5,96(%rsp) + +# qhasm: r5Sigma1 ^= r541 +# asm 1: xor >>34 +# asm 1: rorx $34,r134=int64#12 +# asm 2: rorx $34,r134=%r14 +rorx $34,%rcx,%r14 + +# qhasm: r0 += r5Sigma1 +# asm 1: add >>39 +# asm 1: rorx $39,r139=int64#12 +# asm 2: rorx $39,r139=%r14 +rorx $39,%rcx,%r14 + +# qhasm: r4 += r0 +# asm 1: add >>14 +# asm 1: rorx $14,r4Sigma1=int64#12 +# asm 2: rorx $14,r4Sigma1=%r14 +rorx $14,%r11,%r14 + +# qhasm: W6 = mem128[&w + 48],0 +# asm 1: vmovupd W6=reg256#6%128 +# asm 2: vmovupd W6=%xmm5 +vmovupd 208(%rsp),%xmm5 + +# qhasm: r0 += r1Sigma0 +# asm 1: add ch7=int64#7 +# asm 2: mov ch7=%rax +mov %r12,%rax + +# qhasm: ch7 ^= r5 +# asm 1: xor >>18 +# asm 1: rorx $18,r418=int64#13 +# asm 2: rorx $18,r418=%r15 +rorx $18,%r11,%r15 + +# qhasm: 4x X9left63 = X9 << 63 +# asm 1: vpsllq $63,X9left63=reg256#8 +# asm 2: vpsllq $63,X9left63=%ymm7 +vpsllq $63,%ymm8,%ymm7 + +# qhasm: ch7 &= r4 +# asm 1: and maj6=int64#14 +# asm 2: mov maj6=%rbx +mov %rcx,%rbx + +# qhasm: maj6 ^= r0 +# asm 1: xor >>41 +# asm 1: rorx $41,r441=int64#15 +# asm 2: rorx $41,r441=%rbp +rorx $41,%r11,%rbp + +# qhasm: X9sigma0 = X9right1 ^ X9left63 +# asm 1: vpxor X9sigma0=reg256#7 +# asm 2: vpxor X9sigma0=%ymm6 +vpxor %ymm6,%ymm7,%ymm6 + +# qhasm: r4Sigma1 ^= r418 +# asm 1: xor > 8 +# asm 1: vpsrlq $8,X9right8=reg256#8 +# asm 2: vpsrlq $8,X9right8=%ymm7 +vpsrlq $8,%ymm8,%ymm7 + +# qhasm: ch7 ^= r6 +# asm 1: xor >>28 +# asm 1: rorx $28,r0Sigma0=int64#13 +# asm 2: rorx $28,r0Sigma0=%r15 +rorx $28,%rsi,%r15 + +# qhasm: r7 += ch7 +# asm 1: add X9sigma0=reg256#7 +# asm 2: vpxor X9sigma0=%ymm6 +vpxor %ymm6,%ymm7,%ymm6 + +# qhasm: r7 += r4Sigma1 +# asm 1: add >>34 +# asm 1: rorx $34,r034=int64#7 +# asm 2: rorx $34,r034=%rax +rorx $34,%rsi,%rax + +# qhasm: maj7 = r2 +# asm 1: mov maj7=int64#12 +# asm 2: mov maj7=%r14 +mov %rdx,%r14 + +# qhasm: maj7 &= maj6 +# asm 1: and > 19 +# asm 1: vpsrlq $19,W6right19=reg256#8%128 +# asm 2: vpsrlq $19,W6right19=%xmm7 +vpsrlq $19,%xmm5,%xmm7 + +# qhasm: r039 = r0>>>39 +# asm 1: rorx $39,r039=int64#7 +# asm 2: rorx $39,r039=%rax +rorx $39,%rsi,%rax + +# qhasm: r3 += r7 +# asm 1: add X9left56=reg256#10 +# asm 2: vpsllq $56,X9left56=%ymm9 +vpsllq $56,%ymm8,%ymm9 + +# qhasm: r6 += wc0123[1] +# asm 1: addq r0andr1=int64#7 +# asm 2: mov r0andr1=%rax +mov %rcx,%rax + +# qhasm: r0andr1 &= r0 +# asm 1: and ch6=int64#13 +# asm 2: mov ch6=%r15 +mov %r10,%r15 + +# qhasm: 2x,0 W6left45 = W6 << 45 +# asm 1: vpsllq $45,W6left45=reg256#11%128 +# asm 2: vpsllq $45,W6left45=%xmm10 +vpsllq $45,%xmm5,%xmm10 + +# qhasm: maj7 ^= r0andr1 +# asm 1: xor > 61 +# asm 1: vpsrlq $61,W6right61=reg256#12%128 +# asm 2: vpsrlq $61,W6right61=%xmm11 +vpsrlq $61,%xmm5,%xmm11 + +# qhasm: r3Sigma1 = r3>>>14 +# asm 1: rorx $14,r3Sigma1=int64#15 +# asm 2: rorx $14,r3Sigma1=%rbp +rorx $14,%r9,%rbp + +# qhasm: r7 += maj7 +# asm 1: add X9sigma0=reg256#7 +# asm 2: vpxor X9sigma0=%ymm6 +vpxor %ymm6,%ymm9,%ymm6 + +# qhasm: 4x X9right7 = X9 unsigned>> 7 +# asm 1: vpsrlq $7,X9right7=reg256#9 +# asm 2: vpsrlq $7,X9right7=%ymm8 +vpsrlq $7,%ymm8,%ymm8 + +# qhasm: r318 = r3>>>18 +# asm 1: rorx $18,r318=int64#12 +# asm 2: rorx $18,r318=%r14 +rorx $18,%r9,%r14 + +# qhasm: 1x,0 W6sigma1 = W6right19 ^ W6left45 +# asm 1: vpxor W6sigma1=reg256#8%128 +# asm 2: vpxor W6sigma1=%xmm7 +vpxor %xmm7,%xmm10,%xmm7 + +# qhasm: ch6 &= r3 +# asm 1: and >>41 +# asm 1: rorx $41,r341=int64#12 +# asm 2: rorx $41,r341=%r14 +rorx $41,%r9,%r14 + +# qhasm: X9sigma0 = X9sigma0 ^ X9right7 +# asm 1: vpxor X9sigma0=reg256#7 +# asm 2: vpxor X9sigma0=%ymm6 +vpxor %ymm6,%ymm8,%ymm6 + +# qhasm: maj6 &= r7 +# asm 1: and X8=reg256#4 +# asm 2: vpaddq X8=%ymm3 +vpaddq %ymm3,%ymm6,%ymm3 + +# qhasm: r3Sigma1 ^= r341 +# asm 1: xor W6left3=reg256#7%128 +# asm 2: vpsllq $3,W6left3=%xmm6 +vpsllq $3,%xmm5,%xmm6 + +# qhasm: r7Sigma0 = r7>>>28 +# asm 1: rorx $28,r7Sigma0=int64#7 +# asm 2: rorx $28,r7Sigma0=%rax +rorx $28,%r13,%rax + +# qhasm: ch6 ^= r5 +# asm 1: xor X8=reg256#4 +# asm 2: vpaddq X8=%ymm3 +vpaddq 168(%rsp),%ymm3,%ymm3 + +# qhasm: r734 = r7>>>34 +# asm 1: rorx $34,r734=int64#12 +# asm 2: rorx $34,r734=%r14 +rorx $34,%r13,%r14 + +# qhasm: r5 += wc0123[2] +# asm 1: addq >>39 +# asm 1: rorx $39,r739=int64#12 +# asm 2: rorx $39,r739=%r14 +rorx $39,%r13,%r14 + +# qhasm: r2 += r6 +# asm 1: add ch5=int64#12 +# asm 2: mov ch5=%r14 +mov %r11,%r14 + +# qhasm: 2x,0 W6right6 = W6 unsigned>> 6 +# asm 1: vpsrlq $6,W6right6=reg256#6%128 +# asm 2: vpsrlq $6,W6right6=%xmm5 +vpsrlq $6,%xmm5,%xmm5 + +# qhasm: r6 += maj6 +# asm 1: add >>14 +# asm 1: rorx $14,r2Sigma1=int64#7 +# asm 2: rorx $14,r2Sigma1=%rax +rorx $14,%rdx,%rax + +# qhasm: 1x,0 W6sigma1 ^= W6right6 +# asm 1: vpxor >>18 +# asm 1: rorx $18,r218=int64#13 +# asm 2: rorx $18,r218=%r15 +rorx $18,%rdx,%r15 + +# qhasm: r241 = r2>>>41 +# asm 1: rorx $41,r241=int64#14 +# asm 2: rorx $41,r241=%rbx +rorx $41,%rdx,%rbx + +# qhasm: 4x X8 = W6sigma1 + X8 +# asm 1: vpaddq X8=reg256#4 +# asm 2: vpaddq X8=%ymm3 +vpaddq %ymm7,%ymm3,%ymm3 + +# qhasm: 2x,0 W8right19 = X8 unsigned>> 19 +# asm 1: vpsrlq $19,W8right19=reg256#6%128 +# asm 2: vpsrlq $19,W8right19=%xmm5 +vpsrlq $19,%xmm3,%xmm5 + +# qhasm: ch5 ^= r4 +# asm 1: xor >>28 +# asm 1: rorx $28,r6Sigma0=int64#13 +# asm 2: rorx $28,r6Sigma0=%r15 +rorx $28,%r12,%r15 + +# qhasm: r5 += ch5 +# asm 1: add W8left45=reg256#7%128 +# asm 2: vpsllq $45,W8left45=%xmm6 +vpsllq $45,%xmm3,%xmm6 + +# qhasm: r634 = r6>>>34 +# asm 1: rorx $34,r634=int64#12 +# asm 2: rorx $34,r634=%r14 +rorx $34,%r12,%r14 + +# qhasm: r2Sigma1 ^= r241 +# asm 1: xor maj4=int64#14 +# asm 2: mov maj4=%rbx +mov %r13,%rbx + +# qhasm: 2x,0 W8right61 = X8 unsigned>> 61 +# asm 1: vpsrlq $61,W8right61=reg256#8%128 +# asm 2: vpsrlq $61,W8right61=%xmm7 +vpsrlq $61,%xmm3,%xmm7 + +# qhasm: maj4 ^= r6 +# asm 1: xor W8sigma1=reg256#6%128 +# asm 2: vpxor W8sigma1=%xmm5 +vpxor %xmm5,%xmm6,%xmm5 + +# qhasm: r639 = r6>>>39 +# asm 1: rorx $39,r639=int64#12 +# asm 2: rorx $39,r639=%r14 +rorx $39,%r12,%r14 + +# qhasm: 1x,0 W8sigma1 ^= W8right61 +# asm 1: vpxor W8left3=reg256#7%128 +# asm 2: vpsllq $3,W8left3=%xmm6 +vpsllq $3,%xmm3,%xmm6 + +# qhasm: r6Sigma0 ^= r639 +# asm 1: xor > 6 +# asm 1: vpsrlq $6,W8right6=reg256#8%128 +# asm 2: vpsrlq $6,W8right6=%xmm7 +vpsrlq $6,%xmm3,%xmm7 + +# qhasm: 1x,0 W8sigma1 ^= W8left3 +# asm 1: vpxor r6andr7=int64#7 +# asm 2: mov r6andr7=%rax +mov %r13,%rax + +# qhasm: r6andr7 &= r6 +# asm 1: and >>14 +# asm 1: rorx $14,r1Sigma1=int64#12 +# asm 2: rorx $14,r1Sigma1=%r14 +rorx $14,%rcx,%r14 + +# qhasm: 1x,0 W8sigma1 ^= W8right6 +# asm 1: vpxor maj5=int64#13 +# asm 2: mov maj5=%r15 +mov %rsi,%r15 + +# qhasm: maj5 &= maj4 +# asm 1: and W8sigma1=reg256#6 +# asm 2: vpermq $0x4e,W8sigma1=%ymm5 +vpermq $0x4e,%ymm5,%ymm5 + +# qhasm: maj5 ^= r6andr7 +# asm 1: xor ch4=int64#15 +# asm 2: mov ch4=%rbp +mov %r9,%rbp + +# qhasm: ch4 ^= r2 +# asm 1: xor X13=reg256#7 +# asm 2: vmovupd X13=%ymm6 +vmovupd 264(%rsp),%ymm6 + +# qhasm: 4x X13right1 = X13 unsigned>> 1 +# asm 1: vpsrlq $1,X13right1=reg256#8 +# asm 2: vpsrlq $1,X13right1=%ymm7 +vpsrlq $1,%ymm6,%ymm7 + +# qhasm: r5 += maj5 +# asm 1: add >>18 +# asm 1: rorx $18,r118=int64#13 +# asm 2: rorx $18,r118=%r15 +rorx $18,%rcx,%r15 + +# qhasm: ch4 &= r1 +# asm 1: and >>41 +# asm 1: rorx $41,r141=int64#13 +# asm 2: rorx $41,r141=%r15 +rorx $41,%rcx,%r15 + +# qhasm: 4x X8 = X8 + W8sigma1 +# asm 1: vpaddq X8=reg256#4 +# asm 2: vpaddq X8=%ymm3 +vpaddq %ymm3,%ymm5,%ymm3 + +# qhasm: mem256[&w + 64] = X8 +# asm 1: vmovupd >>28 +# asm 1: rorx $28,r5Sigma0=int64#7 +# asm 2: rorx $28,r5Sigma0=%rax +rorx $28,%r10,%rax + +# qhasm: 4x D8 = X8 + mem256[constants + 64] +# asm 1: vpaddq 64(D8=reg256#6 +# asm 2: vpaddq 64(D8=%ymm5 +vpaddq 64(%r8),%ymm3,%ymm5 + +# qhasm: wc891011 = D8 +# asm 1: vmovapd wc891011=stack256#3 +# asm 2: vmovapd wc891011=64(%rsp) +vmovapd %ymm5,64(%rsp) + +# qhasm: r534 = r5>>>34 +# asm 1: rorx $34,r534=int64#15 +# asm 2: rorx $34,r534=%rbp +rorx $34,%r10,%rbp + +# qhasm: r1Sigma1 ^= r141 +# asm 1: xor >>39 +# asm 1: rorx $39,r539=int64#12 +# asm 2: rorx $39,r539=%r14 +rorx $39,%r10,%r14 + +# qhasm: r3 += wc4567[0] +# asm 1: addq W10=reg256#6%128 +# asm 2: vmovupd W10=%xmm5 +vmovupd 240(%rsp),%xmm5 + +# qhasm: r5Sigma0 ^= r539 +# asm 1: xor >>14 +# asm 1: rorx $14,r0Sigma1=int64#12 +# asm 2: rorx $14,r0Sigma1=%r14 +rorx $14,%rsi,%r14 + +# qhasm: r4 += r5Sigma0 +# asm 1: add ch3=int64#7 +# asm 2: mov ch3=%rax +mov %rdx,%rax + +# qhasm: ch3 ^= r1 +# asm 1: xor X13left63=reg256#9 +# asm 2: vpsllq $63,X13left63=%ymm8 +vpsllq $63,%ymm6,%ymm8 + +# qhasm: r018 = r0>>>18 +# asm 1: rorx $18,r018=int64#13 +# asm 2: rorx $18,r018=%r15 +rorx $18,%rsi,%r15 + +# qhasm: maj2 = r5 +# asm 1: mov maj2=int64#14 +# asm 2: mov maj2=%rbx +mov %r10,%rbx + +# qhasm: maj2 ^= r4 +# asm 1: xor X13sigma0=reg256#8 +# asm 2: vpxor X13sigma0=%ymm7 +vpxor %ymm7,%ymm8,%ymm7 + +# qhasm: r041 = r0>>>41 +# asm 1: rorx $41,r041=int64#15 +# asm 2: rorx $41,r041=%rbp +rorx $41,%rsi,%rbp + +# qhasm: r0Sigma1 ^= r018 +# asm 1: xor > 8 +# asm 1: vpsrlq $8,X13right8=reg256#9 +# asm 2: vpsrlq $8,X13right8=%ymm8 +vpsrlq $8,%ymm6,%ymm8 + +# qhasm: r4Sigma0 = r4>>>28 +# asm 1: rorx $28,r4Sigma0=int64#13 +# asm 2: rorx $28,r4Sigma0=%r15 +rorx $28,%r11,%r15 + +# qhasm: r0Sigma1 ^= r041 +# asm 1: xor >>34 +# asm 1: rorx $34,r434=int64#7 +# asm 2: rorx $34,r434=%rax +rorx $34,%r11,%rax + +# qhasm: X13sigma0 = X13sigma0 ^ X13right8 +# asm 1: vpxor X13sigma0=reg256#8 +# asm 2: vpxor X13sigma0=%ymm7 +vpxor %ymm7,%ymm8,%ymm7 + +# qhasm: r3 += r0Sigma1 +# asm 1: add maj3=int64#12 +# asm 2: mov maj3=%r14 +mov %r12,%r14 + +# qhasm: maj3 &= maj2 +# asm 1: and > 19 +# asm 1: vpsrlq $19,W10right19=reg256#9%128 +# asm 2: vpsrlq $19,W10right19=%xmm8 +vpsrlq $19,%xmm5,%xmm8 + +# qhasm: r4Sigma0 ^= r434 +# asm 1: xor >>39 +# asm 1: rorx $39,r439=int64#7 +# asm 2: rorx $39,r439=%rax +rorx $39,%r11,%rax + +# qhasm: 4x X13left56 = X13 << 56 +# asm 1: vpsllq $56,X13left56=reg256#10 +# asm 2: vpsllq $56,X13left56=%ymm9 +vpsllq $56,%ymm6,%ymm9 + +# qhasm: r4Sigma0 ^= r439 +# asm 1: xor r4andr5=int64#7 +# asm 2: mov r4andr5=%rax +mov %r10,%rax + +# qhasm: 2x,0 W10left45 = W10 << 45 +# asm 1: vpsllq $45,W10left45=reg256#11%128 +# asm 2: vpsllq $45,W10left45=%xmm10 +vpsllq $45,%xmm5,%xmm10 + +# qhasm: r4andr5 &= r4 +# asm 1: and ch2=int64#13 +# asm 2: mov ch2=%r15 +mov %rcx,%r15 + +# qhasm: 2x,0 W10right61 = W10 unsigned>> 61 +# asm 1: vpsrlq $61,W10right61=reg256#12%128 +# asm 2: vpsrlq $61,W10right61=%xmm11 +vpsrlq $61,%xmm5,%xmm11 + +# qhasm: ch2 ^= r0 +# asm 1: xor X13sigma0=reg256#8 +# asm 2: vpxor X13sigma0=%ymm7 +vpxor %ymm7,%ymm9,%ymm7 + +# qhasm: r7Sigma1 = r7>>>14 +# asm 1: rorx $14,r7Sigma1=int64#15 +# asm 2: rorx $14,r7Sigma1=%rbp +rorx $14,%r13,%rbp + +# qhasm: 4x X13right7 = X13 unsigned>> 7 +# asm 1: vpsrlq $7,X13right7=reg256#7 +# asm 2: vpsrlq $7,X13right7=%ymm6 +vpsrlq $7,%ymm6,%ymm6 + +# qhasm: r3 += maj3 +# asm 1: add >>18 +# asm 1: rorx $18,r718=int64#12 +# asm 2: rorx $18,r718=%r14 +rorx $18,%r13,%r14 + +# qhasm: 1x,0 W10sigma1 = W10right19 ^ W10left45 +# asm 1: vpxor W10sigma1=reg256#9%128 +# asm 2: vpxor W10sigma1=%xmm8 +vpxor %xmm8,%xmm10,%xmm8 + +# qhasm: ch2 &= r7 +# asm 1: and >>41 +# asm 1: rorx $41,r741=int64#12 +# asm 2: rorx $41,r741=%r14 +rorx $41,%r13,%r14 + +# qhasm: X13sigma0 = X13sigma0 ^ X13right7 +# asm 1: vpxor X13sigma0=reg256#7 +# asm 2: vpxor X13sigma0=%ymm6 +vpxor %ymm7,%ymm6,%ymm6 + +# qhasm: maj2 &= r3 +# asm 1: and X12=reg256#5 +# asm 2: vpaddq X12=%ymm4 +vpaddq %ymm4,%ymm6,%ymm4 + +# qhasm: r7Sigma1 ^= r741 +# asm 1: xor W10left3=reg256#7%128 +# asm 2: vpsllq $3,W10left3=%xmm6 +vpsllq $3,%xmm5,%xmm6 + +# qhasm: r3Sigma0 = r3>>>28 +# asm 1: rorx $28,r3Sigma0=int64#7 +# asm 2: rorx $28,r3Sigma0=%rax +rorx $28,%r9,%rax + +# qhasm: ch2 ^= r1 +# asm 1: xor >>34 +# asm 1: rorx $34,r334=int64#12 +# asm 2: rorx $34,r334=%r14 +rorx $34,%r9,%r14 + +# qhasm: 4x X12 = X12 + mem256[&w + 40] +# asm 1: vpaddq X12=reg256#5 +# asm 2: vpaddq X12=%ymm4 +vpaddq 200(%rsp),%ymm4,%ymm4 + +# qhasm: r1 += wc4567[2] +# asm 1: addq >>39 +# asm 1: rorx $39,r339=int64#12 +# asm 2: rorx $39,r339=%r14 +rorx $39,%r9,%r14 + +# qhasm: 2x,0 W10right6 = W10 unsigned>> 6 +# asm 1: vpsrlq $6,W10right6=reg256#6%128 +# asm 2: vpsrlq $6,W10right6=%xmm5 +vpsrlq $6,%xmm5,%xmm5 + +# qhasm: r6 += r2 +# asm 1: add ch1=int64#12 +# asm 2: mov ch1=%r14 +mov %rsi,%r14 + +# qhasm: r2 += maj2 +# asm 1: add >>14 +# asm 1: rorx $14,r6Sigma1=int64#7 +# asm 2: rorx $14,r6Sigma1=%rax +rorx $14,%r12,%rax + +# qhasm: 1x,0 W10sigma1 ^= W10right6 +# asm 1: vpxor >>18 +# asm 1: rorx $18,r618=int64#13 +# asm 2: rorx $18,r618=%r15 +rorx $18,%r12,%r15 + +# qhasm: ch1 ^= r0 +# asm 1: xor X12=reg256#5 +# asm 2: vpaddq X12=%ymm4 +vpaddq %ymm8,%ymm4,%ymm4 + +# qhasm: r641 = r6>>>41 +# asm 1: rorx $41,r641=int64#14 +# asm 2: rorx $41,r641=%rbx +rorx $41,%r12,%rbx + +# qhasm: 2x,0 W12right19 = X12 unsigned>> 19 +# asm 1: vpsrlq $19,W12right19=reg256#6%128 +# asm 2: vpsrlq $19,W12right19=%xmm5 +vpsrlq $19,%xmm4,%xmm5 + +# qhasm: r6Sigma1 ^= r618 +# asm 1: xor >>28 +# asm 1: rorx $28,r2Sigma0=int64#12 +# asm 2: rorx $28,r2Sigma0=%r14 +rorx $28,%rdx,%r14 + +# qhasm: 2x,0 W12left45 = X12 << 45 +# asm 1: vpsllq $45,W12left45=reg256#7%128 +# asm 2: vpsllq $45,W12left45=%xmm6 +vpsllq $45,%xmm4,%xmm6 + +# qhasm: r6Sigma1 ^= r641 +# asm 1: xor >>34 +# asm 1: rorx $34,r234=int64#13 +# asm 2: rorx $34,r234=%r15 +rorx $34,%rdx,%r15 + +# qhasm: maj0 = r3 +# asm 1: mov maj0=int64#14 +# asm 2: mov maj0=%rbx +mov %r9,%rbx + +# qhasm: maj0 ^= r2 +# asm 1: xor > 61 +# asm 1: vpsrlq $61,W12right61=reg256#8%128 +# asm 2: vpsrlq $61,W12right61=%xmm7 +vpsrlq $61,%xmm4,%xmm7 + +# qhasm: r239 = r2>>>39 +# asm 1: rorx $39,r239=int64#13 +# asm 2: rorx $39,r239=%r15 +rorx $39,%rdx,%r15 + +# qhasm: 1x,0 W12sigma1 = W12right19 ^ W12left45 +# asm 1: vpxor W12sigma1=reg256#6%128 +# asm 2: vpxor W12sigma1=%xmm5 +vpxor %xmm5,%xmm6,%xmm5 + +# qhasm: 2x,0 W12left3 = X12 << 3 +# asm 1: vpsllq $3,W12left3=reg256#7%128 +# asm 2: vpsllq $3,W12left3=%xmm6 +vpsllq $3,%xmm4,%xmm6 + +# qhasm: 1x,0 W12sigma1 ^= W12right61 +# asm 1: vpxor > 6 +# asm 1: vpsrlq $6,W12right6=reg256#8%128 +# asm 2: vpsrlq $6,W12right6=%xmm7 +vpsrlq $6,%xmm4,%xmm7 + +# qhasm: r5 += r1 +# asm 1: add r2andr3=int64#7 +# asm 2: mov r2andr3=%rax +mov %r9,%rax + +# qhasm: r2andr3 &= r2 +# asm 1: and >>14 +# asm 1: rorx $14,r5Sigma1=int64#13 +# asm 2: rorx $14,r5Sigma1=%r15 +rorx $14,%r10,%r15 + +# qhasm: r1 += r2Sigma0 +# asm 1: add maj1=int64#12 +# asm 2: mov maj1=%r14 +mov %r11,%r14 + +# qhasm: maj1 &= maj0 +# asm 1: and W12sigma1=reg256#6 +# asm 2: vpermq $0x4e,W12sigma1=%ymm5 +vpermq $0x4e,%ymm5,%ymm5 + +# qhasm: maj1 ^= r2andr3 +# asm 1: xor ch0=int64#15 +# asm 2: mov ch0=%rbp +mov %r13,%rbp + +# qhasm: ch0 ^= r6 +# asm 1: xor >>18 +# asm 1: rorx $18,r518=int64#12 +# asm 2: rorx $18,r518=%r14 +rorx $18,%r10,%r14 + +# qhasm: maj0 &= r1 +# asm 1: and >>41 +# asm 1: rorx $41,r541=int64#12 +# asm 2: rorx $41,r541=%r14 +rorx $41,%r10,%r14 + +# qhasm: 4x X12 = X12 + W12sigma1 +# asm 1: vpaddq X12=reg256#5 +# asm 2: vpaddq X12=%ymm4 +vpaddq %ymm4,%ymm5,%ymm4 + +# qhasm: r0 += ch0 +# asm 1: add >>28 +# asm 1: rorx $28,r1Sigma0=int64#7 +# asm 2: rorx $28,r1Sigma0=%rax +rorx $28,%rcx,%rax + +# qhasm: 4x D12 = X12 + mem256[constants + 96] +# asm 1: vpaddq 96(D12=reg256#6 +# asm 2: vpaddq 96(D12=%ymm5 +vpaddq 96(%r8),%ymm4,%ymm5 + +# qhasm: wc12131415 = D12 +# asm 1: vmovapd wc12131415=stack256#5 +# asm 2: vmovapd wc12131415=128(%rsp) +vmovapd %ymm5,128(%rsp) + +# qhasm: r5Sigma1 ^= r541 +# asm 1: xor >>34 +# asm 1: rorx $34,r134=int64#12 +# asm 2: rorx $34,r134=%r14 +rorx $34,%rcx,%r14 + +# qhasm: r0 += r5Sigma1 +# asm 1: add >>39 +# asm 1: rorx $39,r139=int64#12 +# asm 2: rorx $39,r139=%r14 +rorx $39,%rcx,%r14 + +# qhasm: r4 += r0 +# asm 1: add >>14 +# asm 1: rorx $14,r4Sigma1=int64#1 +# asm 2: rorx $14,r4Sigma1=%rdi +rorx $14,%r11,%rdi + +# qhasm: ch7 = r6 +# asm 1: mov ch7=int64#5 +# asm 2: mov ch7=%r8 +mov %r12,%r8 + +# qhasm: r418 = r4>>>18 +# asm 1: rorx $18,r418=int64#7 +# asm 2: rorx $18,r418=%rax +rorx $18,%r11,%rax + +# qhasm: ch7 ^= r5 +# asm 1: xor >>41 +# asm 1: rorx $41,r441=int64#12 +# asm 2: rorx $41,r441=%r14 +rorx $41,%r11,%r14 + +# qhasm: r4Sigma1 ^= r418 +# asm 1: xor >>28 +# asm 1: rorx $28,r0Sigma0=int64#7 +# asm 2: rorx $28,r0Sigma0=%rax +rorx $28,%rsi,%rax + +# qhasm: r4Sigma1 ^= r441 +# asm 1: xor >>34 +# asm 1: rorx $34,r034=int64#12 +# asm 2: rorx $34,r034=%r14 +rorx $34,%rsi,%r14 + +# qhasm: maj6 = r1 +# asm 1: mov maj6=int64#13 +# asm 2: mov maj6=%r15 +mov %rcx,%r15 + +# qhasm: maj6 ^= r0 +# asm 1: xor r0andr1=int64#5 +# asm 2: mov r0andr1=%r8 +mov %rcx,%r8 + +# qhasm: r039 = r0>>>39 +# asm 1: rorx $39,r039=int64#12 +# asm 2: rorx $39,r039=%r14 +rorx $39,%rsi,%r14 + +# qhasm: r0andr1 &= r0 +# asm 1: and maj7=int64#1 +# asm 2: mov maj7=%rdi +mov %rdx,%rdi + +# qhasm: r6 += wc891011[1] +# asm 1: addq ch6=int64#7 +# asm 2: mov ch6=%rax +mov %r10,%rax + +# qhasm: maj7 ^= r0andr1 +# asm 1: xor >>14 +# asm 1: rorx $14,r3Sigma1=int64#12 +# asm 2: rorx $14,r3Sigma1=%r14 +rorx $14,%r9,%r14 + +# qhasm: r7 += maj7 +# asm 1: add >>18 +# asm 1: rorx $18,r318=int64#1 +# asm 2: rorx $18,r318=%rdi +rorx $18,%r9,%rdi + +# qhasm: r3Sigma1 ^= r318 +# asm 1: xor >>41 +# asm 1: rorx $41,r341=int64#1 +# asm 2: rorx $41,r341=%rdi +rorx $41,%r9,%rdi + +# qhasm: r3Sigma1 ^= r341 +# asm 1: xor >>28 +# asm 1: rorx $28,r7Sigma0=int64#1 +# asm 2: rorx $28,r7Sigma0=%rdi +rorx $28,%r13,%rdi + +# qhasm: maj6 ^= r0andr1 +# asm 1: xor >>34 +# asm 1: rorx $34,r734=int64#5 +# asm 2: rorx $34,r734=%r8 +rorx $34,%r13,%r8 + +# qhasm: r7Sigma0 ^= r734 +# asm 1: xor >>39 +# asm 1: rorx $39,r739=int64#5 +# asm 2: rorx $39,r739=%r8 +rorx $39,%r13,%r8 + +# qhasm: r7Sigma0 ^= r739 +# asm 1: xor in=int64#1 +# asm 2: movq in=%rdi +movq 400(%rsp),%rdi + +# qhasm: r5 += wc891011[2] +# asm 1: addq >>14 +# asm 1: rorx $14,r2Sigma1=int64#5 +# asm 2: rorx $14,r2Sigma1=%r8 +rorx $14,%rdx,%r8 + +# qhasm: ch5 = r4 +# asm 1: mov ch5=int64#7 +# asm 2: mov ch5=%rax +mov %r11,%rax + +# qhasm: r218 = r2>>>18 +# asm 1: rorx $18,r218=int64#12 +# asm 2: rorx $18,r218=%r14 +rorx $18,%rdx,%r14 + +# qhasm: ch5 ^= r3 +# asm 1: xor >>41 +# asm 1: rorx $41,r241=int64#13 +# asm 2: rorx $41,r241=%r15 +rorx $41,%rdx,%r15 + +# qhasm: r2Sigma1 ^= r218 +# asm 1: xor >>28 +# asm 1: rorx $28,r6Sigma0=int64#12 +# asm 2: rorx $28,r6Sigma0=%r14 +rorx $28,%r12,%r14 + +# qhasm: r2Sigma1 ^= r241 +# asm 1: xor >>34 +# asm 1: rorx $34,r634=int64#13 +# asm 2: rorx $34,r634=%r15 +rorx $34,%r12,%r15 + +# qhasm: maj4 = r7 +# asm 1: mov maj4=int64#14 +# asm 2: mov maj4=%rbx +mov %r13,%rbx + +# qhasm: maj4 ^= r6 +# asm 1: xor r6andr7=int64#7 +# asm 2: mov r6andr7=%rax +mov %r13,%rax + +# qhasm: r639 = r6>>>39 +# asm 1: rorx $39,r639=int64#13 +# asm 2: rorx $39,r639=%r15 +rorx $39,%r12,%r15 + +# qhasm: r6andr7 &= r6 +# asm 1: and maj5=int64#5 +# asm 2: mov maj5=%r8 +mov %rsi,%r8 + +# qhasm: r4 += wc891011[3] +# asm 1: addq ch4=int64#12 +# asm 2: mov ch4=%r14 +mov %r9,%r14 + +# qhasm: maj5 ^= r6andr7 +# asm 1: xor >>14 +# asm 1: rorx $14,r1Sigma1=int64#13 +# asm 2: rorx $14,r1Sigma1=%r15 +rorx $14,%rcx,%r15 + +# qhasm: r5 += maj5 +# asm 1: add >>18 +# asm 1: rorx $18,r118=int64#5 +# asm 2: rorx $18,r118=%r8 +rorx $18,%rcx,%r8 + +# qhasm: r1Sigma1 ^= r118 +# asm 1: xor >>41 +# asm 1: rorx $41,r141=int64#5 +# asm 2: rorx $41,r141=%r8 +rorx $41,%rcx,%r8 + +# qhasm: r1Sigma1 ^= r141 +# asm 1: xor >>28 +# asm 1: rorx $28,r5Sigma0=int64#5 +# asm 2: rorx $28,r5Sigma0=%r8 +rorx $28,%r10,%r8 + +# qhasm: maj4 ^= r6andr7 +# asm 1: xor >>34 +# asm 1: rorx $34,r534=int64#7 +# asm 2: rorx $34,r534=%rax +rorx $34,%r10,%rax + +# qhasm: r5Sigma0 ^= r534 +# asm 1: xor >>39 +# asm 1: rorx $39,r539=int64#7 +# asm 2: rorx $39,r539=%rax +rorx $39,%r10,%rax + +# qhasm: r5Sigma0 ^= r539 +# asm 1: xor inlen=int64#7 +# asm 2: movq inlen=%rax +movq 376(%rsp),%rax + +# qhasm: in += 128 +# asm 1: add $128,>>14 +# asm 1: rorx $14,r0Sigma1=int64#5 +# asm 2: rorx $14,r0Sigma1=%r8 +rorx $14,%rsi,%r8 + +# qhasm: ch3 = r2 +# asm 1: mov ch3=int64#12 +# asm 2: mov ch3=%r14 +mov %rdx,%r14 + +# qhasm: r018 = r0>>>18 +# asm 1: rorx $18,r018=int64#13 +# asm 2: rorx $18,r018=%r15 +rorx $18,%rsi,%r15 + +# qhasm: ch3 ^= r1 +# asm 1: xor >>41 +# asm 1: rorx $41,r041=int64#14 +# asm 2: rorx $41,r041=%rbx +rorx $41,%rsi,%rbx + +# qhasm: r0Sigma1 ^= r018 +# asm 1: xor >>28 +# asm 1: rorx $28,r4Sigma0=int64#13 +# asm 2: rorx $28,r4Sigma0=%r15 +rorx $28,%r11,%r15 + +# qhasm: r0Sigma1 ^= r041 +# asm 1: xor >>34 +# asm 1: rorx $34,r434=int64#14 +# asm 2: rorx $34,r434=%rbx +rorx $34,%r11,%rbx + +# qhasm: maj2 = r5 +# asm 1: mov maj2=int64#15 +# asm 2: mov maj2=%rbp +mov %r10,%rbp + +# qhasm: maj2 ^= r4 +# asm 1: xor r4andr5=int64#12 +# asm 2: mov r4andr5=%r14 +mov %r10,%r14 + +# qhasm: r439 = r4>>>39 +# asm 1: rorx $39,r439=int64#14 +# asm 2: rorx $39,r439=%rbx +rorx $39,%r11,%rbx + +# qhasm: r4andr5 &= r4 +# asm 1: and maj3=int64#5 +# asm 2: mov maj3=%r8 +mov %r12,%r8 + +# qhasm: r2 += wc12131415[1] +# asm 1: addq ch2=int64#13 +# asm 2: mov ch2=%r15 +mov %rcx,%r15 + +# qhasm: maj3 ^= r4andr5 +# asm 1: xor >>14 +# asm 1: rorx $14,r7Sigma1=int64#14 +# asm 2: rorx $14,r7Sigma1=%rbx +rorx $14,%r13,%rbx + +# qhasm: r3 += maj3 +# asm 1: add >>18 +# asm 1: rorx $18,r718=int64#5 +# asm 2: rorx $18,r718=%r8 +rorx $18,%r13,%r8 + +# qhasm: r7Sigma1 ^= r718 +# asm 1: xor >>41 +# asm 1: rorx $41,r741=int64#5 +# asm 2: rorx $41,r741=%r8 +rorx $41,%r13,%r8 + +# qhasm: r7Sigma1 ^= r741 +# asm 1: xor >>28 +# asm 1: rorx $28,r3Sigma0=int64#5 +# asm 2: rorx $28,r3Sigma0=%r8 +rorx $28,%r9,%r8 + +# qhasm: maj2 ^= r4andr5 +# asm 1: xor >>34 +# asm 1: rorx $34,r334=int64#12 +# asm 2: rorx $34,r334=%r14 +rorx $34,%r9,%r14 + +# qhasm: r3Sigma0 ^= r334 +# asm 1: xor >>39 +# asm 1: rorx $39,r339=int64#12 +# asm 2: rorx $39,r339=%r14 +rorx $39,%r9,%r14 + +# qhasm: r3Sigma0 ^= r339 +# asm 1: xor >>14 +# asm 1: rorx $14,r6Sigma1=int64#5 +# asm 2: rorx $14,r6Sigma1=%r8 +rorx $14,%r12,%r8 + +# qhasm: ch1 = r0 +# asm 1: mov ch1=int64#12 +# asm 2: mov ch1=%r14 +mov %rsi,%r14 + +# qhasm: r618 = r6>>>18 +# asm 1: rorx $18,r618=int64#13 +# asm 2: rorx $18,r618=%r15 +rorx $18,%r12,%r15 + +# qhasm: ch1 ^= r7 +# asm 1: xor >>41 +# asm 1: rorx $41,r641=int64#14 +# asm 2: rorx $41,r641=%rbx +rorx $41,%r12,%rbx + +# qhasm: r6Sigma1 ^= r618 +# asm 1: xor >>28 +# asm 1: rorx $28,r2Sigma0=int64#13 +# asm 2: rorx $28,r2Sigma0=%r15 +rorx $28,%rdx,%r15 + +# qhasm: r6Sigma1 ^= r641 +# asm 1: xor >>34 +# asm 1: rorx $34,r234=int64#14 +# asm 2: rorx $34,r234=%rbx +rorx $34,%rdx,%rbx + +# qhasm: maj0 = r3 +# asm 1: mov maj0=int64#15 +# asm 2: mov maj0=%rbp +mov %r9,%rbp + +# qhasm: maj0 ^= r2 +# asm 1: xor r2andr3=int64#12 +# asm 2: mov r2andr3=%r14 +mov %r9,%r14 + +# qhasm: r239 = r2>>>39 +# asm 1: rorx $39,r239=int64#14 +# asm 2: rorx $39,r239=%rbx +rorx $39,%rdx,%rbx + +# qhasm: r2andr3 &= r2 +# asm 1: and maj1=int64#5 +# asm 2: mov maj1=%r8 +mov %r11,%r8 + +# qhasm: r0 += wc12131415[3] +# asm 1: addq ch0=int64#13 +# asm 2: mov ch0=%r15 +mov %r13,%r15 + +# qhasm: maj1 ^= r2andr3 +# asm 1: xor >>14 +# asm 1: rorx $14,r5Sigma1=int64#14 +# asm 2: rorx $14,r5Sigma1=%rbx +rorx $14,%r10,%rbx + +# qhasm: r1 += maj1 +# asm 1: add >>18 +# asm 1: rorx $18,r518=int64#5 +# asm 2: rorx $18,r518=%r8 +rorx $18,%r10,%r8 + +# qhasm: r5Sigma1 ^= r518 +# asm 1: xor >>41 +# asm 1: rorx $41,r541=int64#5 +# asm 2: rorx $41,r541=%r8 +rorx $41,%r10,%r8 + +# qhasm: r5Sigma1 ^= r541 +# asm 1: xor >>28 +# asm 1: rorx $28,r1Sigma0=int64#5 +# asm 2: rorx $28,r1Sigma0=%r8 +rorx $28,%rcx,%r8 + +# qhasm: maj0 ^= r2andr3 +# asm 1: xor >>34 +# asm 1: rorx $34,r134=int64#12 +# asm 2: rorx $34,r134=%r14 +rorx $34,%rcx,%r14 + +# qhasm: r1Sigma0 ^= r134 +# asm 1: xor >>39 +# asm 1: rorx $39,r139=int64#12 +# asm 2: rorx $39,r139=%r14 +rorx $39,%rcx,%r14 + +# qhasm: r1Sigma0 ^= r139 +# asm 1: xor inlen_stack=stack64#8 +# asm 2: movq inlen_stack=376(%rsp) +movq %rax,376(%rsp) + +# qhasm: r7 += state4567[3] +# asm 1: addq constants=int64#5 +# asm 2: movq constants=%r8 +movq 392(%rsp),%r8 + +# qhasm: r0 += state0123[0] +# asm 1: addq statebytes=int64#1 +# asm 2: movq statebytes=%rdi +movq 384(%rsp),%rdi + +# qhasm: X0 = state0123 +# asm 1: vmovapd X0=reg256#2 +# asm 2: vmovapd X0=%ymm1 +vmovapd 0(%rsp),%ymm1 + +# qhasm: X4 = state4567 +# asm 1: vmovapd X4=reg256#3 +# asm 2: vmovapd X4=%ymm2 +vmovapd 32(%rsp),%ymm2 + +# qhasm: 2x 16x X0 = X0[bigendian64] +# asm 1: vpshufb X0=reg256#2 +# asm 2: vpshufb X0=%ymm1 +vpshufb %ymm0,%ymm1,%ymm1 + +# qhasm: 2x 16x X4 = X4[bigendian64] +# asm 1: vpshufb X4=reg256#1 +# asm 2: vpshufb X4=%ymm0 +vpshufb %ymm0,%ymm2,%ymm0 + +# qhasm: mem256[statebytes+0] = X0 +# asm 1: vmovupd caller_r11=int64#9 +# asm 2: movq caller_r11=%r11 +movq 320(%rsp),%r11 + +# qhasm: caller_r12 = r12_stack +# asm 1: movq caller_r12=int64#10 +# asm 2: movq caller_r12=%r12 +movq 336(%rsp),%r12 + +# qhasm: caller_r14 = r14_stack +# asm 1: movq caller_r14=int64#12 +# asm 2: movq caller_r14=%r14 +movq 344(%rsp),%r14 + +# qhasm: caller_r13 = r13_stack +# asm 1: movq caller_r13=int64#11 +# asm 2: movq caller_r13=%r13 +movq 328(%rsp),%r13 + +# qhasm: caller_r15 = r15_stack +# asm 1: movq caller_r15=int64#13 +# asm 2: movq caller_r15=%r15 +movq 360(%rsp),%r15 + +# qhasm: caller_rbx = rbx_stack +# asm 1: movq caller_rbx=int64#14 +# asm 2: movq caller_rbx=%rbx +movq 352(%rsp),%rbx + +# qhasm: caller_rbp = rbp_stack +# asm 1: movq caller_rbp=int64#15 +# asm 2: movq caller_rbp=%rbp +movq 368(%rsp),%rbp + +# qhasm: return inlen +add %r11,%rsp +ret diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/inner.S.do b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/inner.S.do new file mode 100644 index 0000000000..095ce2c05e --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/inner.S.do @@ -0,0 +1,15 @@ +#!/bin/sh + +cpp \ +| qhasm-amd64avx \ +| sed 's/\/CRYPTO_SHARED_NAMESPACE(inner)/' \ +| sed 's/\<_inner\>/_CRYPTO_SHARED_NAMESPACE(inner)/' \ +| sed 's/^\.p2align 5/.p2align 7/' \ +| awk '{ + found = 0 + if (!found && $0 == "and $31,%r11") { + found = 1 + $0 = "and $511,%r11" + } + print +}' diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/inner.h b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/inner.h new file mode 100644 index 0000000000..629ecb5c29 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/inner.h @@ -0,0 +1,10 @@ +#ifndef inner_h +#define inner_h + +#define inner CRYPTO_SHARED_NAMESPACE(inner) + +#include "crypto_uint64.h" + +extern int inner(unsigned char *,const unsigned char *,unsigned long long,const crypto_uint64 *); + +#endif diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/inner.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/inner.q new file mode 100644 index 0000000000..74cfc79cdc --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/inner.q @@ -0,0 +1,1260 @@ +stack64 r11_stack +stack64 r12_stack +stack64 r13_stack +stack64 r14_stack +stack64 r15_stack +stack64 rbx_stack +stack64 rbp_stack + +int64 statebytes +stack64 statebytes_stack +int64 in +stack64 in_stack +int64 inlen +stack64 inlen_stack +int64 constants +stack64 constants_stack +int64 r0 +int64 r1 +int64 r2 +int64 r3 +int64 r4 +int64 r5 +int64 r6 +int64 r7 +int64 i + +stack256 state0123 +stack256 state4567 +reg256 X0 +reg256 X4 +reg256 X8 +reg256 X12 +reg256 X1 +reg256 X5 +reg256 X9 +reg256 X13 +reg256 bigendian64 +reg256 D0 +reg256 D4 +reg256 D8 +reg256 D12 +reg256 W0 +reg256 W2 +reg256 W4 +reg256 W6 +reg256 W8 +reg256 W10 +reg256 W12 +reg256 W14 + +stack1280 w +stack256 wc0123 +stack256 wc4567 +stack256 wc891011 +stack256 wc12131415 + +int64 r0andr1 +int64 r2andr3 +int64 r4andr5 +int64 r6andr7 +int64 ch0 +int64 ch1 +int64 ch2 +int64 ch3 +int64 ch4 +int64 ch5 +int64 ch6 +int64 ch7 +int64 maj0 +int64 maj1 +int64 maj2 +int64 maj3 +int64 maj4 +int64 maj5 +int64 maj6 +int64 maj7 +int64 r0Sigma0 +int64 r1Sigma0 +int64 r2Sigma0 +int64 r3Sigma0 +int64 r4Sigma0 +int64 r5Sigma0 +int64 r6Sigma0 +int64 r7Sigma0 +int64 r0Sigma1 +int64 r1Sigma1 +int64 r2Sigma1 +int64 r3Sigma1 +int64 r4Sigma1 +int64 r5Sigma1 +int64 r6Sigma1 +int64 r7Sigma1 +int64 r018 +int64 r118 +int64 r218 +int64 r318 +int64 r418 +int64 r518 +int64 r618 +int64 r718 +int64 r041 +int64 r141 +int64 r241 +int64 r341 +int64 r441 +int64 r541 +int64 r641 +int64 r741 +int64 r034 +int64 r134 +int64 r234 +int64 r334 +int64 r434 +int64 r534 +int64 r634 +int64 r734 +int64 r039 +int64 r139 +int64 r239 +int64 r339 +int64 r439 +int64 r539 +int64 r639 +int64 r739 + +reg256 X1right1 +reg256 X1left63 +reg256 X1right8 +reg256 X1left56 +reg256 X1right7 +reg256 X1sigma0 +reg256 X5right1 +reg256 X5left63 +reg256 X5right8 +reg256 X5left56 +reg256 X5right7 +reg256 X5sigma0 +reg256 X9right1 +reg256 X9left63 +reg256 X9right8 +reg256 X9left56 +reg256 X9right7 +reg256 X9sigma0 +reg256 X13right1 +reg256 X13left63 +reg256 X13right8 +reg256 X13left56 +reg256 X13right7 +reg256 X13sigma0 + +reg256 W0right19 +reg256 W0right61 +reg256 W0right6 +reg256 W0left45 +reg256 W0left3 +reg256 W0sigma1 +reg256 W2right19 +reg256 W2right61 +reg256 W2right6 +reg256 W2left45 +reg256 W2left3 +reg256 W2sigma1 +reg256 W4right19 +reg256 W4right61 +reg256 W4right6 +reg256 W4left45 +reg256 W4left3 +reg256 W4sigma1 +reg256 W6right19 +reg256 W6right61 +reg256 W6right6 +reg256 W6left45 +reg256 W6left3 +reg256 W6sigma1 +reg256 W8right19 +reg256 W8right61 +reg256 W8right6 +reg256 W8left45 +reg256 W8left3 +reg256 W8sigma1 +reg256 W10right19 +reg256 W10right61 +reg256 W10right6 +reg256 W10left45 +reg256 W10left3 +reg256 W10sigma1 +reg256 W12right19 +reg256 W12right61 +reg256 W12right6 +reg256 W12left45 +reg256 W12left3 +reg256 W12sigma1 +reg256 W14right19 +reg256 W14right61 +reg256 W14right6 +reg256 W14left45 +reg256 W14left3 +reg256 W14sigma1 + + +enter inner + +constants = input_3 + +bigendian64 = mem256[input_3+640] + +X0 = mem256[input_0+0] +statebytes = input_0 +X4 = mem256[input_0+32] + +2x 16x X0 = X0[bigendian64] +2x 16x X4 = X4[bigendian64] + +state0123 = X0 + +r11_stack = caller_r11 +state4567 = X4 +r13_stack = caller_r13 +r12_stack = caller_r12 +r14_stack = caller_r14 +rbx_stack = caller_rbx +r15_stack = caller_r15 +rbp_stack = caller_rbp + +inlen_stack = input_2 +in = input_1 +statebytes_stack = statebytes + +r0 = state0123[0] +r2 = state0123[2] +constants_stack = constants +r1 = state0123[1] +r3 = state0123[3] +r5 = state4567[1] +r4 = state4567[0] +r6 = state4567[2] +r7 = state4567[3] + +new w + +// interesting pads: 4,5,11,14,17,20,26 +nop9 +nop9 +nop2 + +outerloop: + + X0 = mem256[in + 0] + 2x 16x X0 = X0[bigendian64] + ch7 = r6 + r4Sigma1 = r4>>>14 + ch7 ^= r5 + + 4x D0 = X0 + mem256[constants + 0] + r418 = r4>>>18 + r4Sigma1 ^= r418 + ch7 &= r4 + r441 = r4>>>41 + + r4Sigma1 ^= r441 + r0Sigma0 = r0>>>28 + ch7 ^= r6 + r034 = r0>>>34 + + r039 = r0>>>39 +inplace state4567[3] = r7 + r0Sigma0 ^= r034 + r7 += ch7 + maj6 = r1 + maj6 ^= r0 + + r0Sigma0 ^= r039 + r0andr1 = r1 + r0andr1 &= r0 + r7 += r4Sigma1 + + maj7 = r2 + wc0123 = D0 + r7 += wc0123[0] + maj7 &= maj6 +inplace state0123[3] = r3 + + r3 += r7 + r7 += r0Sigma0 + maj7 ^= r0andr1 + ch6 = r5 + + r3Sigma1 = r3>>>14 + ch6 ^= r4 + X4 = mem256[in + 32] + 2x 16x X4 = X4[bigendian64] + r7 += maj7 + r318 = r3>>>18 + + 4x D4 = X4 + mem256[constants + 32] + ch6 &= r3 + r3Sigma1 ^= r318 + maj6 &= r7 +inplace state4567[2] = r6 + + r341 = r3>>>41 + ch6 ^= r5 + maj6 ^= r0andr1 + r7Sigma0 = r7>>>28 +inplace state4567[1] = r5 + + r6 += ch6 + r3Sigma1 ^= r341 + r734 = r7>>>34 +inplace state0123[2] = r2 + r5 += wc0123[2] + + r739 = r7>>>39 + r7Sigma0 ^= r734 + ch5 = r4 + ch5 ^= r3 + r6 += wc0123[1] + + r6 += r3Sigma1 + mem256[&w + 0] = X0 # can skip &w+128 this time + r7Sigma0 ^= r739 + + r2 += r6 + r6 += maj6 +inplace state4567[0] = r4 + + r2Sigma1 = r2>>>14 + r6 += r7Sigma0 + ch5 &= r2 + r218 = r2>>>18 + mem256[&w + 32] = X4 + + r2Sigma1 ^= r218 + ch5 ^= r4 + r241 = r2>>>41 + maj4 = r7 + maj4 ^= r6 + + r6Sigma0 = r6>>>28 + wc4567 = D4 + r2Sigma1 ^= r241 + r5 += ch5 + r634 = r6>>>34 + in_stack = in + + r6Sigma0 ^= r634 + r639 = r6>>>39 + r6andr7 = r7 + r6andr7 &= r6 + + r6Sigma0 ^= r639 + maj5 = r0 +inplace state0123[1] = r1 + r5 += r2Sigma1 + r4 += wc0123[3] + maj5 &= maj4 + + r1 += r5 + r5 += r6Sigma0 + maj5 ^= r6andr7 + ch4 = r3 + + r1Sigma1 = r1>>>14 + ch4 ^= r2 + r5 += maj5 + ch4 &= r1 + r118 = r1>>>18 +inplace state0123[0] = r0 + + r1Sigma1 ^= r118 + maj4 &= r5 + ch4 ^= r3 + r141 = r1>>>41 + X8 = mem256[in + 64] + + r1Sigma1 ^= r141 + r5Sigma0 = r5>>>28 + maj4 ^= r6andr7 + r4 += ch4 + + r534 = r5>>>34 + r4 += r1Sigma1 + r5Sigma0 ^= r534 + r3 += wc4567[0] + + X12 = mem256[in + 96] + r0 += r4 + r539 = r5>>>39 + r4 += maj4 + r5Sigma0 ^= r539 + + r0Sigma1 = r0>>>14 + r4 += r5Sigma0 + ch3 = r2 + r018 = r0>>>18 + ch3 ^= r1 + + 2x 16x X8 = X8[bigendian64] + r0Sigma1 ^= r018 + ch3 &= r0 + r041 = r0>>>41 + + r4Sigma0 = r4>>>28 + 4x D8 = X8 + mem256[constants + 64] + r0Sigma1 ^= r041 + ch3 ^= r2 + mem256[&w + 64] = X8 + + r3 += ch3 + r434 = r4>>>34 + r439 = r4>>>39 + maj2 = r5 + maj2 ^= r4 + wc891011 = D8 + + r4Sigma0 ^= r434 + r3 += r0Sigma1 + r4andr5 = r5 + r4andr5 &= r4 + r2 += wc4567[1] + + r4Sigma0 ^= r439 + maj3 = r6 + maj3 &= maj2 + r7 += r3 + r3 += r4Sigma0 + + 2x 16x X12 = X12[bigendian64] + ch2 = r1 + maj3 ^= r4andr5 + ch2 ^= r0 + r3 += maj3 + r7Sigma1 = r7>>>14 + + 4x D12 = X12 + mem256[constants + 96] + ch2 &= r7 + r718 = r7>>>18 + + r7Sigma1 ^= r718 + maj2 &= r3 + ch2 ^= r1 + r741 = r7>>>41 + mem256[&w + 96] = X12 + + r7Sigma1 ^= r741 + maj2 ^= r4andr5 + r3Sigma0 = r3>>>28 + wc12131415 = D12 + r2 += ch2 + + r2 += r7Sigma1 + r1 += wc4567[2] + ch1 = r0 + r334 = r3>>>34 + ch1 ^= r7 + + r3Sigma0 ^= r334 + r6 += r2 + r339 = r3>>>39 + r2 += maj2 + + r3Sigma0 ^= r339 + r6Sigma1 = r6>>>14 + r618 = r6>>>18 + + r641 = r6>>>41 + ch1 &= r6 + r2 += r3Sigma0 + r6Sigma1 ^= r618 + r2Sigma0 = r2>>>28 + + r6Sigma1 ^= r641 + ch1 ^= r0 + r234 = r2>>>34 + maj0 = r3 + maj0 ^= r2 + + r2Sigma0 ^= r234 + r1 += ch1 + r239 = r2>>>39 + r2andr3 = r3 + r2andr3 &= r2 + + r2Sigma0 ^= r239 + r1 += r6Sigma1 + maj1 = r4 + maj1 &= maj0 + r0 += wc4567[3] + r5 += r1 + r1 += r2Sigma0 + ch0 = r7 + maj1 ^= r2andr3 + ch0 ^= r6 + r5Sigma1 = r5>>>14 + r1 += maj1 + ch0 &= r5 + r518 = r5>>>18 + r5Sigma1 ^= r518 + maj0 &= r1 + ch0 ^= r7 + r541 = r5>>>41 + r5Sigma1 ^= r541 + maj0 ^= r2andr3 + r1Sigma0 = r1>>>28 + r0 += ch0 + r0 += r5Sigma1 + r134 = r1>>>34 + r1Sigma0 ^= r134 + r4 += r0 + r0 += maj0 + r139 = r1>>>39 + r1Sigma0 ^= r139 + r0 += r1Sigma0 + + i = 4 + + + innerloop: + + X1 = mem256[&w + 8] + 4x X1right1 = X1 unsigned>> 1 + r4Sigma1 = r4>>>14 + r7 += wc891011[0] + 4x X1left63 = X1 << 63 + ch7 = r6 + ch7 ^= r5 + + r418 = r4>>>18 + ch7 &= r4 + maj6 = r1 + maj6 ^= r0 + W14 = mem128[&w + 112],0 + + r441 = r4>>>41 + r4Sigma1 ^= r418 + ch7 ^= r6 + X1sigma0 = X1right1 ^ X1left63 + + 4x X1right8 = X1 unsigned>> 8 + r4Sigma1 ^= r441 + r7 += ch7 + r0Sigma0 = r0>>>28 + + r034 = r0>>>34 + X1sigma0 = X1sigma0 ^ X1right8 + r7 += r4Sigma1 + maj7 = r2 + maj7 &= maj6 + + r0Sigma0 ^= r034 + 2x,0 W14right19 = W14 unsigned>> 19 + r039 = r0>>>39 + + 4x X1left56 = X1 << 56 + r3 += r7 + r0Sigma0 ^= r039 + r6 += wc891011[1] + r0andr1 = r1 + r0andr1 &= r0 + + 2x,0 W14left45 = W14 << 45 + r7 += r0Sigma0 + maj7 ^= r0andr1 + ch6 = r5 + ch6 ^= r4 + + 2x,0 W14right61 = W14 unsigned>> 61 + r3Sigma1 = r3>>>14 + X1sigma0 = X1sigma0 ^ X1left56 + r7 += maj7 + + r318 = r3>>>18 + 4x X1right7 = X1 unsigned>> 7 + 1x,0 W14sigma1 = W14right19 ^ W14left45 + ch6 &= r3 + + r3Sigma1 ^= r318 + r341 = r3>>>41 + maj6 &= r7 + X1sigma0 = X1sigma0 ^ X1right7 + + 1x,0 W14sigma1 ^= W14right61 + 4x X0 = X0 + X1sigma0 + r3Sigma1 ^= r341 + maj6 ^= r0andr1 + + 2x,0 W14left3 = W14 << 3 + r7Sigma0 = r7>>>28 + ch6 ^= r5 + r6 += r3Sigma1 + + 4x X0 = X0 + mem256[&w + 72] + r734 = r7>>>34 + r5 += wc891011[2] + r6 += ch6 + + r7Sigma0 ^= r734 + r739 = r7>>>39 + r2 += r6 + 1x,0 W14sigma1 ^= W14left3 + + 2x,0 W14right6 = W14 unsigned>> 6 + r7Sigma0 ^= r739 + r6 += maj6 + ch5 = r4 + ch5 ^= r3 + + r6 += r7Sigma0 + r2Sigma1 = r2>>>14 + 1x,0 W14sigma1 ^= W14right6 + ch5 &= r2 + + r218 = r2>>>18 + r241 = r2>>>41 + 4x X0 = W14sigma1 + X0 + ch5 ^= r4 + + r2Sigma1 ^= r218 + 2x,0 W0right19 = X0 unsigned>> 19 + r6Sigma0 = r6>>>28 + r5 += ch5 + + 2x,0 W0left45 = X0 << 45 + r634 = r6>>>34 + r2Sigma1 ^= r241 + maj4 = r7 + + X5 = mem256[&w + 40] + maj4 ^= r6 + 2x,0 W0right61 = X0 unsigned>> 61 + 1x,0 W0sigma1 = W0right19 ^ W0left45 + r6Sigma0 ^= r634 + 1x,0 W0sigma1 ^= W0right61 + r639 = r6>>>39 + + 2x,0 W0left3 = X0 << 3 + r6Sigma0 ^= r639 + r5 += r2Sigma1 + + 2x,0 W0right6 = X0 unsigned>> 6 + 1x,0 W0sigma1 ^= W0left3 + r1 += r5 + r6andr7 = r7 + r6andr7 &= r6 + + r1Sigma1 = r1>>>14 + r5 += r6Sigma0 + 1x,0 W0sigma1 ^= W0right6 + maj5 = r0 + maj5 &= maj4 + + W0sigma1 = W0sigma1[2,3,0,1] + maj5 ^= r6andr7 + ch4 = r3 + + 4x X5right1 = X5 unsigned>> 1 + ch4 ^= r2 + r5 += maj5 + r118 = r1>>>18 + ch4 &= r1 + + maj4 &= r5 + ch4 ^= r3 + r4 += wc891011[3] + r1Sigma1 ^= r118 + + r141 = r1>>>41 + 4x X0 = X0 + W0sigma1 + r4 += ch4 + maj4 ^= r6andr7 + + r5Sigma0 = r5>>>28 + 4x D0 = X0 + mem256[constants + 128] + r1Sigma1 ^= r141 + r534 = r5>>>34 + mem256[&w + 128] = X0 + + r4 += r1Sigma1 + r5Sigma0 ^= r534 + r539 = r5>>>39 + r3 += wc12131415[0] + mem256[&w + 0] = X0 + + r0 += r4 + r4 += maj4 + r5Sigma0 ^= r539 + constants += 128 + wc0123 = D0 + + + W2 = mem128[&w + 16],0 + r4 += r5Sigma0 + r0Sigma1 = r0>>>14 + ch3 = r2 + ch3 ^= r1 + + 4x X5left63 = X5 << 63 + r018 = r0>>>18 + maj2 = r5 + ch3 &= r0 + maj2 ^= r4 + + r041 = r0>>>41 + X5sigma0 = X5right1 ^ X5left63 + r0Sigma1 ^= r018 + ch3 ^= r2 + + 4x X5right8 = X5 unsigned>> 8 + r4Sigma0 = r4>>>28 + r0Sigma1 ^= r041 + r3 += ch3 + + r434 = r4>>>34 + X5sigma0 = X5sigma0 ^ X5right8 + r3 += r0Sigma1 + maj3 = r6 + maj3 &= maj2 + + r4Sigma0 ^= r434 + r439 = r4>>>39 + 2x,0 W2right19 = W2 unsigned>> 19 + + 4x X5left56 = X5 << 56 + r7 += r3 + r4Sigma0 ^= r439 + r2 += wc12131415[1] + r4andr5 = r5 + r4andr5 &= r4 + + 2x,0 W2left45 = W2 << 45 + r3 += r4Sigma0 + maj3 ^= r4andr5 + ch2 = r1 + ch2 ^= r0 + + 2x,0 W2right61 = W2 unsigned>> 61 + r7Sigma1 = r7>>>14 + X5sigma0 = X5sigma0 ^ X5left56 + r3 += maj3 + + 4x X5right7 = X5 unsigned>> 7 + r718 = r7>>>18 + 1x,0 W2sigma1 = W2right19 ^ W2left45 + ch2 &= r7 + + r7Sigma1 ^= r718 + X5sigma0 = X5sigma0 ^ X5right7 + r741 = r7>>>41 + maj2 &= r3 + + 1x,0 W2sigma1 ^= W2right61 + 4x X4 = X4 + X5sigma0 + r7Sigma1 ^= r741 + maj2 ^= r4andr5 + + 2x,0 W2left3 = W2 << 3 + r3Sigma0 = r3>>>28 + ch2 ^= r1 + r2 += r7Sigma1 + + r334 = r3>>>34 + 4x X4 = X4 + mem256[&w + 104] + r1 += wc12131415[2] + r2 += ch2 + + r3Sigma0 ^= r334 + r339 = r3>>>39 + r6 += r2 + 1x,0 W2sigma1 ^= W2left3 + + 2x,0 W2right6 = W2 unsigned>> 6 + r3Sigma0 ^= r339 + r2 += maj2 + ch1 = r0 + ch1 ^= r7 + + r2 += r3Sigma0 + r6Sigma1 = r6>>>14 + 1x,0 W2sigma1 ^= W2right6 + ch1 &= r6 + + r618 = r6>>>18 + r641 = r6>>>41 + 4x X4 = W2sigma1 + X4 + ch1 ^= r0 + + r6Sigma1 ^= r618 + 2x,0 W4right19 = X4 unsigned>> 19 + r1 += ch1 + r2Sigma0 = r2>>>28 + + 2x,0 W4left45 = X4 << 45 + r6Sigma1 ^= r641 + r234 = r2>>>34 + maj0 = r3 + maj0 ^= r2 + + 2x,0 W4right61 = X4 unsigned>> 61 + X9 = mem256[&w + 72] + r2Sigma0 ^= r234 + 1x,0 W4sigma1 = W4right19 ^ W4left45 + r239 = r2>>>39 + + 2x,0 W4left3 = X4 << 3 + 1x,0 W4sigma1 ^= W4right61 + 2x,0 W4right6 = X4 unsigned>> 6 + r2Sigma0 ^= r239 + r1 += r6Sigma1 + + 1x,0 W4sigma1 ^= W4left3 + r5 += r1 + r2andr3 = r3 + + r5Sigma1 = r5>>>14 + r2andr3 &= r2 + 1x,0 W4sigma1 ^= W4right6 + r1 += r2Sigma0 + maj1 = r4 + maj1 &= maj0 + + W4sigma1 = W4sigma1[2,3,0,1] + maj1 ^= r2andr3 + ch0 = r7 + + 4x X9right1 = X9 unsigned>> 1 + ch0 ^= r6 + r1 += maj1 + ch0 &= r5 + r518 = r5>>>18 + + maj0 &= r1 + r0 += wc12131415[3] + ch0 ^= r7 + r5Sigma1 ^= r518 + + 4x X4 = X4 + W4sigma1 + r541 = r5>>>41 + mem256[&w + 32] = X4 + r0 += ch0 + maj0 ^= r2andr3 + + r1Sigma0 = r1>>>28 + 4x D4 = X4 + mem256[constants + 32] + wc4567 = D4 + r5Sigma1 ^= r541 + r134 = r1>>>34 + + r0 += r5Sigma1 + r1Sigma0 ^= r134 + r7 += wc0123[0] + r139 = r1>>>39 + + r4 += r0 + r0 += maj0 + r1Sigma0 ^= r139 + + r4Sigma1 = r4>>>14 + W6 = mem128[&w + 48],0 + r0 += r1Sigma0 + ch7 = r6 + ch7 ^= r5 + + r418 = r4>>>18 + 4x X9left63 = X9 << 63 + ch7 &= r4 + maj6 = r1 + maj6 ^= r0 + + r441 = r4>>>41 + X9sigma0 = X9right1 ^ X9left63 + r4Sigma1 ^= r418 + + 4x X9right8 = X9 unsigned>> 8 + ch7 ^= r6 + r4Sigma1 ^= r441 + r0Sigma0 = r0>>>28 + r7 += ch7 + + X9sigma0 = X9sigma0 ^ X9right8 + r7 += r4Sigma1 + r034 = r0>>>34 + maj7 = r2 + maj7 &= maj6 + + r0Sigma0 ^= r034 + 2x,0 W6right19 = W6 unsigned>> 19 + r039 = r0>>>39 + r3 += r7 + + r0Sigma0 ^= r039 + 4x X9left56 = X9 << 56 + r6 += wc0123[1] + r0andr1 = r1 + r0andr1 &= r0 + + r7 += r0Sigma0 + ch6 = r5 + 2x,0 W6left45 = W6 << 45 + maj7 ^= r0andr1 + ch6 ^= r4 + + 2x,0 W6right61 = W6 unsigned>> 61 + r3Sigma1 = r3>>>14 + r7 += maj7 + X9sigma0 = X9sigma0 ^ X9left56 + + 4x X9right7 = X9 unsigned>> 7 + r318 = r3>>>18 + 1x,0 W6sigma1 = W6right19 ^ W6left45 + ch6 &= r3 + + r3Sigma1 ^= r318 + r341 = r3>>>41 + X9sigma0 = X9sigma0 ^ X9right7 + maj6 &= r7 + + 1x,0 W6sigma1 ^= W6right61 + 4x X8 = X8 + X9sigma0 + r3Sigma1 ^= r341 + maj6 ^= r0andr1 + + 2x,0 W6left3 = W6 << 3 + r7Sigma0 = r7>>>28 + ch6 ^= r5 + r6 += r3Sigma1 + + 4x X8 = X8 + mem256[&w + 8] + r734 = r7>>>34 + r5 += wc0123[2] + r6 += ch6 + + r7Sigma0 ^= r734 + 1x,0 W6sigma1 ^= W6left3 + r739 = r7>>>39 + r2 += r6 + + r7Sigma0 ^= r739 + ch5 = r4 + 2x,0 W6right6 = W6 unsigned>> 6 + r6 += maj6 + ch5 ^= r3 + + r6 += r7Sigma0 + r2Sigma1 = r2>>>14 + 1x,0 W6sigma1 ^= W6right6 + ch5 &= r2 + + r218 = r2>>>18 + r241 = r2>>>41 + 4x X8 = W6sigma1 + X8 + + 2x,0 W8right19 = X8 unsigned>> 19 + ch5 ^= r4 + r2Sigma1 ^= r218 + r6Sigma0 = r6>>>28 + r5 += ch5 + + 2x,0 W8left45 = X8 << 45 + r634 = r6>>>34 + r2Sigma1 ^= r241 + maj4 = r7 + + 2x,0 W8right61 = X8 unsigned>> 61 + maj4 ^= r6 + r6Sigma0 ^= r634 + 1x,0 W8sigma1 = W8right19 ^ W8left45 + r639 = r6>>>39 + + 1x,0 W8sigma1 ^= W8right61 + 2x,0 W8left3 = X8 << 3 + r6Sigma0 ^= r639 + r5 += r2Sigma1 + r1 += r5 + + 2x,0 W8right6 = X8 unsigned>> 6 + 1x,0 W8sigma1 ^= W8left3 + r6andr7 = r7 + r6andr7 &= r6 + + r1Sigma1 = r1>>>14 + 1x,0 W8sigma1 ^= W8right6 + r5 += r6Sigma0 + maj5 = r0 + maj5 &= maj4 + + W8sigma1 = W8sigma1[2,3,0,1] + maj5 ^= r6andr7 + ch4 = r3 + ch4 ^= r2 + + X13 = mem256[&w + 104] + 4x X13right1 = X13 unsigned>> 1 + r5 += maj5 + r118 = r1>>>18 + ch4 &= r1 + + maj4 &= r5 + ch4 ^= r3 + r4 += wc0123[3] + r1Sigma1 ^= r118 + + r141 = r1>>>41 + 4x X8 = X8 + W8sigma1 + mem256[&w + 64] = X8 + r4 += ch4 + maj4 ^= r6andr7 + + r5Sigma0 = r5>>>28 + 4x D8 = X8 + mem256[constants + 64] + wc891011 = D8 + r534 = r5>>>34 + r1Sigma1 ^= r141 + + r4 += r1Sigma1 + r5Sigma0 ^= r534 + r539 = r5>>>39 + r3 += wc4567[0] + + r0 += r4 + r4 += maj4 + W10 = mem128[&w + 80],0 + r5Sigma0 ^= r539 + + r0Sigma1 = r0>>>14 + r4 += r5Sigma0 + ch3 = r2 + ch3 ^= r1 + ch3 &= r0 + + 4x X13left63 = X13 << 63 + r018 = r0>>>18 + maj2 = r5 + maj2 ^= r4 + + X13sigma0 = X13right1 ^ X13left63 + r041 = r0>>>41 + r0Sigma1 ^= r018 + ch3 ^= r2 + + 4x X13right8 = X13 unsigned>> 8 + r4Sigma0 = r4>>>28 + r0Sigma1 ^= r041 + r3 += ch3 + + r434 = r4>>>34 + X13sigma0 = X13sigma0 ^ X13right8 + r3 += r0Sigma1 + maj3 = r6 + maj3 &= maj2 + + 2x,0 W10right19 = W10 unsigned>> 19 + r4Sigma0 ^= r434 + r7 += r3 + r439 = r4>>>39 + + 4x X13left56 = X13 << 56 + r4Sigma0 ^= r439 + r2 += wc4567[1] + r4andr5 = r5 + + 2x,0 W10left45 = W10 << 45 + r4andr5 &= r4 + r3 += r4Sigma0 + maj3 ^= r4andr5 + ch2 = r1 + + 2x,0 W10right61 = W10 unsigned>> 61 + ch2 ^= r0 + X13sigma0 = X13sigma0 ^ X13left56 + r7Sigma1 = r7>>>14 + + 4x X13right7 = X13 unsigned>> 7 + r3 += maj3 + r718 = r7>>>18 + 1x,0 W10sigma1 = W10right19 ^ W10left45 + ch2 &= r7 + + r7Sigma1 ^= r718 + r741 = r7>>>41 + X13sigma0 = X13sigma0 ^ X13right7 + maj2 &= r3 + + 1x,0 W10sigma1 ^= W10right61 + 4x X12 = X12 + X13sigma0 + r7Sigma1 ^= r741 + maj2 ^= r4andr5 + + 2x,0 W10left3 = W10 << 3 + r3Sigma0 = r3>>>28 + ch2 ^= r1 + r2 += r7Sigma1 + + r334 = r3>>>34 + 4x X12 = X12 + mem256[&w + 40] + r1 += wc4567[2] + r2 += ch2 + + 1x,0 W10sigma1 ^= W10left3 + r3Sigma0 ^= r334 + r339 = r3>>>39 + + 2x,0 W10right6 = W10 unsigned>> 6 + r6 += r2 + r3Sigma0 ^= r339 + ch1 = r0 + r2 += maj2 + ch1 ^= r7 + + r2 += r3Sigma0 + r6Sigma1 = r6>>>14 + 1x,0 W10sigma1 ^= W10right6 + ch1 &= r6 + + r618 = r6>>>18 + ch1 ^= r0 + 4x X12 = W10sigma1 + X12 + r641 = r6>>>41 + + 2x,0 W12right19 = X12 unsigned>> 19 + r6Sigma1 ^= r618 + r1 += ch1 + r2Sigma0 = r2>>>28 + + 2x,0 W12left45 = X12 << 45 + r6Sigma1 ^= r641 + r234 = r2>>>34 + maj0 = r3 + maj0 ^= r2 + + r2Sigma0 ^= r234 + 2x,0 W12right61 = X12 unsigned>> 61 + r239 = r2>>>39 + 1x,0 W12sigma1 = W12right19 ^ W12left45 + + 2x,0 W12left3 = X12 << 3 + 1x,0 W12sigma1 ^= W12right61 + r2Sigma0 ^= r239 + r1 += r6Sigma1 + + 2x,0 W12right6 = X12 unsigned>> 6 + r5 += r1 + 1x,0 W12sigma1 ^= W12left3 + r2andr3 = r3 + r2andr3 &= r2 + + r5Sigma1 = r5>>>14 + r1 += r2Sigma0 + 1x,0 W12sigma1 ^= W12right6 + maj1 = r4 + maj1 &= maj0 + + W12sigma1 = W12sigma1[2,3,0,1] + maj1 ^= r2andr3 + ch0 = r7 + ch0 ^= r6 + + r1 += maj1 + ch0 &= r5 + r518 = r5>>>18 + + maj0 &= r1 + r0 += wc4567[3] + ch0 ^= r7 + r5Sigma1 ^= r518 + + r541 = r5>>>41 + 4x X12 = X12 + W12sigma1 + r0 += ch0 + mem256[&w + 96] = X12 + maj0 ^= r2andr3 + + r1Sigma0 = r1>>>28 + 4x D12 = X12 + mem256[constants + 96] + wc12131415 = D12 + r5Sigma1 ^= r541 + r134 = r1>>>34 + + r0 += r5Sigma1 + r1Sigma0 ^= r134 + r139 = r1>>>39 + + r4 += r0 + r0 += maj0 + r1Sigma0 ^= r139 + + r0 += r1Sigma0 + + + + + =? i -= 1 + goto innerloop if != + +#include "round89.q" + + in = in_stack + +#include "round1011.q" + + inlen = inlen_stack + in += 128 + +#include "round1213.q" + + inlen -= 128 + +#include "round1415.q" + + inlen_stack = inlen + + r7 += state4567[3] + r3 += state0123[3] + + r6 += state4567[2] + r2 += state0123[2] + + r5 += state4567[1] + r1 += state0123[1] + + r4 += state4567[0] + + constants = constants_stack # or: constants -= 512 + r0 += state0123[0] + + unsigned> 1' % (j1,j1)) +print(' r%dSigma1 = r%d>>>14' % (i4,i4)) +print(' r%d += %s[0]' % (i7,wcin)) +print(' ch%d = r%d' % (i7,i6)) +print(' ch%d ^= r%d' % (i7,i5)) +print('') +print(' 4x X%dleft63 = X%d << 63' % (j1,j1)) +print(' r%d18 = r%d>>>18' % (i4,i4)) +print(' ch%d &= r%d' % (i7,i4)) +print(' maj%d = r%d' % (i6,i1)) +print(' maj%d ^= r%d' % (i6,i0)) +print('') +print(' X%dsigma0 = X%dright1 ^ X%dleft63' % (j1,j1,j1)) +print(' r%d41 = r%d>>>41' % (i4,i4)) +print(' r%dSigma1 ^= r%d18' % (i4,i4)) +print(' ch%d ^= r%d' % (i7,i6)) +print('') +print(' 4x X%dright8 = X%d unsigned>> 8' % (j1,j1)) +print(' r%dSigma1 ^= r%d41' % (i4,i4)) +print(' r%dSigma0 = r%d>>>28' % (i0,i0)) +print(' r%d += ch%d' % (i7,i7)) +print('') +print(' X%dsigma0 = X%dsigma0 ^ X%dright8' % (j1,j1,j1)) +print(' r%d34 = r%d>>>34' % (i0,i0)) +print(' r%d += r%dSigma1' % (i7,i4)) +print(' maj%d = r%d' % (i7,i2)) +print(' maj%d &= maj%d' % (i7,i6)) +print('') +print(' W%d = mem128[&w + %d],0' % (j14,8*j14)) +print(' 2x,0 W%dright19 = W%d unsigned>> 19' % (j14,j14)) +print(' r%dSigma0 ^= r%d34' % (i0,i0)) +print(' r%d39 = r%d>>>39' % (i0,i0)) +print(' r%d += r%d' % (i3,i7)) +print('') +print(' 4x X%dleft56 = X%d << 56' % (j1,j1)) +print(' r%dSigma0 ^= r%d39' % (i0,i0)) +print(' r%d += %s[1]' % (i6,wcin)) +print(' r%dandr%d = r%d' % (i0,i1,i1)) +print(' r%dandr%d &= r%d' % (i0,i1,i0)) +print('') +print(' 2x,0 W%dleft45 = W%d << 45' % (j14,j14)) +print(' r%d += r%dSigma0' % (i7,i0)) +print(' maj%d ^= r%dandr%d' % (i7,i0,i1)) +print(' ch%d = r%d' % (i6,i5)) +print(' ch%d ^= r%d' % (i6,i4)) +print('') +print(' X%dsigma0 = X%dsigma0 ^ X%dleft56' % (j1,j1,j1)) +print(' 2x,0 W%dright61 = W%d unsigned>> 61' % (j14,j14)) +print(' r%dSigma1 = r%d>>>14' % (i3,i3)) +print(' r%d += maj%d' % (i7,i7)) +print('') +print(' 4x X%dright7 = X%d unsigned>> 7' % (j1,j1)) +print(' 1x,0 W%dsigma1 = W%dright19 ^ W%dleft45' % (j14,j14,j14)) +print(' r%d18 = r%d>>>18' % (i3,i3)) +print(' ch%d &= r%d' % (i6,i3)) +print('') +print(' X%dsigma0 = X%dsigma0 ^ X%dright7' % (j1,j1,j1)) +print(' r%dSigma1 ^= r%d18' % (i3,i3)) +print(' r%d41 = r%d>>>41' % (i3,i3)) +print(' maj%d &= r%d' % (i6,i7)) +print('') +print(' 1x,0 W%dsigma1 ^= W%dright61' % (j14,j14)) +print(' 4x X%d = X%d + mem256[&w + %d]' % (j0,j0,8*j9)) +print(' r%dSigma1 ^= r%d41' % (i3,i3)) +print(' maj%d ^= r%dandr%d' % (i6,i0,i1)) +print('') +print(' 2x,0 W%dleft3 = W%d << 3' % (j14,j14)) +print(' r%dSigma0 = r%d>>>28' % (i7,i7)) +print(' ch%d ^= r%d' % (i6,i5)) +print(' r%d += r%dSigma1' % (i6,i3)) +print('') +print(' 4x X%d = X%d + X%dsigma0' % (j0,j0,j1)) +print(' r%d34 = r%d>>>34' % (i7,i7)) +print(' r%d += %s[2]' % (i5,wcin)) +print(' r%d += ch%d' % (i6,i6)) +print('') +print(' 1x,0 W%dsigma1 ^= W%dleft3' % (j14,j14)) +print(' r%dSigma0 ^= r%d34' % (i7,i7)) +print(' r%d39 = r%d>>>39' % (i7,i7)) +print(' r%d += r%d' % (i2,i6)) +print('') +print(' 2x,0 W%dright6 = W%d unsigned>> 6' % (j14,j14)) +print(' r%dSigma0 ^= r%d39' % (i7,i7)) +print(' r%d += maj%d' % (i6,i6)) +print(' ch%d = r%d' % (i5,i4)) +print(' ch%d ^= r%d' % (i5,i3)) +print('') +print(' 1x,0 W%dsigma1 ^= W%dright6' % (j14,j14)) +print(' r%d += r%dSigma0' % (i6,i7)) +print(' r%dSigma1 = r%d>>>14' % (i2,i2)) +print(' ch%d &= r%d' % (i5,i2)) +print('') +print(' 4x X%d = W%dsigma1 + X%d' % (j0,j14,j0)) +print(' r%d18 = r%d>>>18' % (i2,i2)) +print(' r%d41 = r%d>>>41' % (i2,i2)) +print(' ch%d ^= r%d' % (i5,i4)) +print('') +print(' 2x,0 W%dright19 = X%d unsigned>> 19' % (j0,j0)) +print(' r%dSigma1 ^= r%d18' % (i2,i2)) +print(' r%dSigma0 = r%d>>>28' % (i6,i6)) +print(' r%d += ch%d' % (i5,i5)) +print('') +print(' 2x,0 W%dleft45 = X%d << 45' % (j0,j0)) +print(' r%dSigma1 ^= r%d41' % (i2,i2)) +print(' r%d34 = r%d>>>34' % (i6,i6)) +print(' maj%d = r%d' % (i4,i7)) +print(' maj%d ^= r%d' % (i4,i6)) +print('') +print(' 2x,0 W%dright61 = X%d unsigned>> 61' % (j0,j0)) +print(' 1x,0 W%dsigma1 = W%dright19 ^ W%dleft45' % (j0,j0,j0)) +print(' r%dSigma0 ^= r%d34' % (i6,i6)) +print(' r%d39 = r%d>>>39' % (i6,i6)) +print('') +print(' 2x,0 W%dleft3 = X%d << 3' % (j0,j0)) +print(' 1x,0 W%dsigma1 ^= W%dright61' % (j0,j0)) +print(' r%dSigma0 ^= r%d39' % (i6,i6)) +print(' r%d += r%dSigma1' % (i5,i2)) +print('') +print(' 2x,0 W%dright6 = X%d unsigned>> 6' % (j0,j0)) +print(' 1x,0 W%dsigma1 ^= W%dleft3' % (j0,j0)) +print(' r%d += r%d' % (i1,i5)) +print(' r%dandr%d = r%d' % (i6,i7,i7)) +print(' r%dandr%d &= r%d' % (i6,i7,i6)) +print('') +print(' 1x,0 W%dsigma1 ^= W%dright6' % (j0,j0)) +print(' r%dSigma1 = r%d>>>14' % (i1,i1)) +print(' r%d += r%dSigma0' % (i5,i6)) +print(' maj%d = r%d' % (i5,i0)) +print(' maj%d &= maj%d' % (i5,i4)) +print('') +print(' W%dsigma1 = W%dsigma1[1],W%dsigma1[0]' % (j0,j0,j0)) +print(' maj%d ^= r%dandr%d' % (i5,i6,i7)) +print(' ch%d = r%d' % (i4,i3)) +print(' ch%d ^= r%d' % (i4,i2)) +print('') +print(' r%d += maj%d' % (i5,i5)) +print(' ch%d &= r%d' % (i4,i1)) +print(' r%d18 = r%d>>>18' % (i1,i1)) +print('') +print(' maj%d &= r%d' % (i4,i5)) +print(' ch%d ^= r%d' % (i4,i3)) +print(' r%d += %s[3]' % (i4,wcin)) +print(' r%dSigma1 ^= r%d18' % (i1,i1)) +print('') +print(' r%d41 = r%d>>>41' % (i1,i1)) +print(' 4x X%d = X%d + W%dsigma1' % (j0,j0,j0)) +if j0 == 0: + print(' mem256[&w + 128] = X%d' % (j0)) +print(' mem256[&w + %d] = X%d' % (8*j0,j0)) +print(' r%d += ch%d' % (i4,i4)) +print(' maj%d ^= r%dandr%d' % (i4,i6,i7)) +print('') +print(' r%dSigma0 = r%d>>>28' % (i5,i5)) +print(' 4x D%d = X%d + mem256[constants + %d]' % (j0,j0,8*j0)) +print(' %s = D%d' % (wcout,j0)) +print(' r%d34 = r%d>>>34' % (i5,i5)) +print(' r%dSigma1 ^= r%d41' % (i1,i1)) +print('') +print(' r%d += r%dSigma1' % (i4,i1)) +print(' r%dSigma0 ^= r%d34' % (i5,i5)) +print(' r%d39 = r%d>>>39' % (i5,i5)) +print('') +print(' r%d += r%d' % (i0,i4)) +print(' r%d += maj%d' % (i4,i4)) +print(' r%dSigma0 ^= r%d39' % (i5,i5)) +print('') +print(' r%d += r%dSigma0' % (i4,i5)) diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/rer0.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/rer0.q new file mode 100644 index 0000000000..e8eec8f859 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/rer0.q @@ -0,0 +1,167 @@ + X1 = mem256[&w + 8] + 4x X1right1 = X1 unsigned>> 1 + r4Sigma1 = r4>>>14 + r7 += wc891011[0] + ch7 = r6 + ch7 ^= r5 + + 4x X1left63 = X1 << 63 + r418 = r4>>>18 + ch7 &= r4 + maj6 = r1 + maj6 ^= r0 + + X1sigma0 = X1right1 ^ X1left63 + r441 = r4>>>41 + r4Sigma1 ^= r418 + ch7 ^= r6 + + 4x X1right8 = X1 unsigned>> 8 + r4Sigma1 ^= r441 + r0Sigma0 = r0>>>28 + r7 += ch7 + + X1sigma0 = X1sigma0 ^ X1right8 + r034 = r0>>>34 + r7 += r4Sigma1 + maj7 = r2 + maj7 &= maj6 + + W14 = mem128[&w + 112],0 + 2x,0 W14right19 = W14 unsigned>> 19 + r0Sigma0 ^= r034 + r039 = r0>>>39 + r3 += r7 + + 4x X1left56 = X1 << 56 + r0Sigma0 ^= r039 + r6 += wc891011[1] + r0andr1 = r1 + r0andr1 &= r0 + + 2x,0 W14left45 = W14 << 45 + r7 += r0Sigma0 + maj7 ^= r0andr1 + ch6 = r5 + ch6 ^= r4 + + X1sigma0 = X1sigma0 ^ X1left56 + 2x,0 W14right61 = W14 unsigned>> 61 + r3Sigma1 = r3>>>14 + r7 += maj7 + + 4x X1right7 = X1 unsigned>> 7 + 1x,0 W14sigma1 = W14right19 ^ W14left45 + r318 = r3>>>18 + ch6 &= r3 + + X1sigma0 = X1sigma0 ^ X1right7 + r3Sigma1 ^= r318 + r341 = r3>>>41 + maj6 &= r7 + + 1x,0 W14sigma1 ^= W14right61 + 4x X0 = X0 + mem256[&w + 72] + r3Sigma1 ^= r341 + maj6 ^= r0andr1 + + 2x,0 W14left3 = W14 << 3 + r7Sigma0 = r7>>>28 + ch6 ^= r5 + r6 += r3Sigma1 + + 4x X0 = X0 + X1sigma0 + r734 = r7>>>34 + r5 += wc891011[2] + r6 += ch6 + + 1x,0 W14sigma1 ^= W14left3 + r7Sigma0 ^= r734 + r739 = r7>>>39 + r2 += r6 + + 2x,0 W14right6 = W14 unsigned>> 6 + r7Sigma0 ^= r739 + r6 += maj6 + ch5 = r4 + ch5 ^= r3 + + 1x,0 W14sigma1 ^= W14right6 + r6 += r7Sigma0 + r2Sigma1 = r2>>>14 + ch5 &= r2 + + 4x X0 = W14sigma1 + X0 + r218 = r2>>>18 + r241 = r2>>>41 + ch5 ^= r4 + + 2x,0 W0right19 = X0 unsigned>> 19 + r2Sigma1 ^= r218 + r6Sigma0 = r6>>>28 + r5 += ch5 + + 2x,0 W0left45 = X0 << 45 + r2Sigma1 ^= r241 + r634 = r6>>>34 + maj4 = r7 + maj4 ^= r6 + + 2x,0 W0right61 = X0 unsigned>> 61 + 1x,0 W0sigma1 = W0right19 ^ W0left45 + r6Sigma0 ^= r634 + r639 = r6>>>39 + + 2x,0 W0left3 = X0 << 3 + 1x,0 W0sigma1 ^= W0right61 + r6Sigma0 ^= r639 + r5 += r2Sigma1 + + 2x,0 W0right6 = X0 unsigned>> 6 + 1x,0 W0sigma1 ^= W0left3 + r1 += r5 + r6andr7 = r7 + r6andr7 &= r6 + + 1x,0 W0sigma1 ^= W0right6 + r1Sigma1 = r1>>>14 + r5 += r6Sigma0 + maj5 = r0 + maj5 &= maj4 + + W0sigma1 = W0sigma1[1],W0sigma1[0] + maj5 ^= r6andr7 + ch4 = r3 + ch4 ^= r2 + + r5 += maj5 + ch4 &= r1 + r118 = r1>>>18 + + maj4 &= r5 + ch4 ^= r3 + r4 += wc891011[3] + r1Sigma1 ^= r118 + + r141 = r1>>>41 + 4x X0 = X0 + W0sigma1 + mem256[&w + 128] = X0 + mem256[&w + 0] = X0 + r4 += ch4 + maj4 ^= r6andr7 + + r5Sigma0 = r5>>>28 + 4x D0 = X0 + mem256[constants + 0] + wc0123 = D0 + r534 = r5>>>34 + r1Sigma1 ^= r141 + + r4 += r1Sigma1 + r5Sigma0 ^= r534 + r539 = r5>>>39 + + r0 += r4 + r4 += maj4 + r5Sigma0 ^= r539 + + r4 += r5Sigma0 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/rer12.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/rer12.q new file mode 100644 index 0000000000..40d1d8ac18 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/rer12.q @@ -0,0 +1,166 @@ + X13 = mem256[&w + 104] + 4x X13right1 = X13 unsigned>> 1 + r0Sigma1 = r0>>>14 + r3 += wc4567[0] + ch3 = r2 + ch3 ^= r1 + + 4x X13left63 = X13 << 63 + r018 = r0>>>18 + ch3 &= r0 + maj2 = r5 + maj2 ^= r4 + + X13sigma0 = X13right1 ^ X13left63 + r041 = r0>>>41 + r0Sigma1 ^= r018 + ch3 ^= r2 + + 4x X13right8 = X13 unsigned>> 8 + r0Sigma1 ^= r041 + r4Sigma0 = r4>>>28 + r3 += ch3 + + X13sigma0 = X13sigma0 ^ X13right8 + r434 = r4>>>34 + r3 += r0Sigma1 + maj3 = r6 + maj3 &= maj2 + + W10 = mem128[&w + 80],0 + 2x,0 W10right19 = W10 unsigned>> 19 + r4Sigma0 ^= r434 + r439 = r4>>>39 + r7 += r3 + + 4x X13left56 = X13 << 56 + r4Sigma0 ^= r439 + r2 += wc4567[1] + r4andr5 = r5 + r4andr5 &= r4 + + 2x,0 W10left45 = W10 << 45 + r3 += r4Sigma0 + maj3 ^= r4andr5 + ch2 = r1 + ch2 ^= r0 + + X13sigma0 = X13sigma0 ^ X13left56 + 2x,0 W10right61 = W10 unsigned>> 61 + r7Sigma1 = r7>>>14 + r3 += maj3 + + 4x X13right7 = X13 unsigned>> 7 + 1x,0 W10sigma1 = W10right19 ^ W10left45 + r718 = r7>>>18 + ch2 &= r7 + + X13sigma0 = X13sigma0 ^ X13right7 + r7Sigma1 ^= r718 + r741 = r7>>>41 + maj2 &= r3 + + 1x,0 W10sigma1 ^= W10right61 + 4x X12 = X12 + mem256[&w + 40] + r7Sigma1 ^= r741 + maj2 ^= r4andr5 + + 2x,0 W10left3 = W10 << 3 + r3Sigma0 = r3>>>28 + ch2 ^= r1 + r2 += r7Sigma1 + + 4x X12 = X12 + X13sigma0 + r334 = r3>>>34 + r1 += wc4567[2] + r2 += ch2 + + 1x,0 W10sigma1 ^= W10left3 + r3Sigma0 ^= r334 + r339 = r3>>>39 + r6 += r2 + + 2x,0 W10right6 = W10 unsigned>> 6 + r3Sigma0 ^= r339 + r2 += maj2 + ch1 = r0 + ch1 ^= r7 + + 1x,0 W10sigma1 ^= W10right6 + r2 += r3Sigma0 + r6Sigma1 = r6>>>14 + ch1 &= r6 + + 4x X12 = W10sigma1 + X12 + r618 = r6>>>18 + r641 = r6>>>41 + ch1 ^= r0 + + 2x,0 W12right19 = X12 unsigned>> 19 + r6Sigma1 ^= r618 + r2Sigma0 = r2>>>28 + r1 += ch1 + + 2x,0 W12left45 = X12 << 45 + r6Sigma1 ^= r641 + r234 = r2>>>34 + maj0 = r3 + maj0 ^= r2 + + 2x,0 W12right61 = X12 unsigned>> 61 + 1x,0 W12sigma1 = W12right19 ^ W12left45 + r2Sigma0 ^= r234 + r239 = r2>>>39 + + 2x,0 W12left3 = X12 << 3 + 1x,0 W12sigma1 ^= W12right61 + r2Sigma0 ^= r239 + r1 += r6Sigma1 + + 2x,0 W12right6 = X12 unsigned>> 6 + 1x,0 W12sigma1 ^= W12left3 + r5 += r1 + r2andr3 = r3 + r2andr3 &= r2 + + 1x,0 W12sigma1 ^= W12right6 + r5Sigma1 = r5>>>14 + r1 += r2Sigma0 + maj1 = r4 + maj1 &= maj0 + + W12sigma1 = W12sigma1[1],W12sigma1[0] + maj1 ^= r2andr3 + ch0 = r7 + ch0 ^= r6 + + r1 += maj1 + ch0 &= r5 + r518 = r5>>>18 + + maj0 &= r1 + ch0 ^= r7 + r0 += wc4567[3] + r5Sigma1 ^= r518 + + r541 = r5>>>41 + 4x X12 = X12 + W12sigma1 + mem256[&w + 96] = X12 + r0 += ch0 + maj0 ^= r2andr3 + + r1Sigma0 = r1>>>28 + 4x D12 = X12 + mem256[constants + 96] + wc12131415 = D12 + r134 = r1>>>34 + r5Sigma1 ^= r541 + + r0 += r5Sigma1 + r1Sigma0 ^= r134 + r139 = r1>>>39 + + r4 += r0 + r0 += maj0 + r1Sigma0 ^= r139 + + r0 += r1Sigma0 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/rer4.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/rer4.q new file mode 100644 index 0000000000..1eb81e8cf2 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/rer4.q @@ -0,0 +1,166 @@ + X5 = mem256[&w + 40] + 4x X5right1 = X5 unsigned>> 1 + r0Sigma1 = r0>>>14 + r3 += wc12131415[0] + ch3 = r2 + ch3 ^= r1 + + 4x X5left63 = X5 << 63 + r018 = r0>>>18 + ch3 &= r0 + maj2 = r5 + maj2 ^= r4 + + X5sigma0 = X5right1 ^ X5left63 + r041 = r0>>>41 + r0Sigma1 ^= r018 + ch3 ^= r2 + + 4x X5right8 = X5 unsigned>> 8 + r0Sigma1 ^= r041 + r4Sigma0 = r4>>>28 + r3 += ch3 + + X5sigma0 = X5sigma0 ^ X5right8 + r434 = r4>>>34 + r3 += r0Sigma1 + maj3 = r6 + maj3 &= maj2 + + W2 = mem128[&w + 16],0 + 2x,0 W2right19 = W2 unsigned>> 19 + r4Sigma0 ^= r434 + r439 = r4>>>39 + r7 += r3 + + 4x X5left56 = X5 << 56 + r4Sigma0 ^= r439 + r2 += wc12131415[1] + r4andr5 = r5 + r4andr5 &= r4 + + 2x,0 W2left45 = W2 << 45 + r3 += r4Sigma0 + maj3 ^= r4andr5 + ch2 = r1 + ch2 ^= r0 + + X5sigma0 = X5sigma0 ^ X5left56 + 2x,0 W2right61 = W2 unsigned>> 61 + r7Sigma1 = r7>>>14 + r3 += maj3 + + 4x X5right7 = X5 unsigned>> 7 + 1x,0 W2sigma1 = W2right19 ^ W2left45 + r718 = r7>>>18 + ch2 &= r7 + + X5sigma0 = X5sigma0 ^ X5right7 + r7Sigma1 ^= r718 + r741 = r7>>>41 + maj2 &= r3 + + 1x,0 W2sigma1 ^= W2right61 + 4x X4 = X4 + mem256[&w + 104] + r7Sigma1 ^= r741 + maj2 ^= r4andr5 + + 2x,0 W2left3 = W2 << 3 + r3Sigma0 = r3>>>28 + ch2 ^= r1 + r2 += r7Sigma1 + + 4x X4 = X4 + X5sigma0 + r334 = r3>>>34 + r1 += wc12131415[2] + r2 += ch2 + + 1x,0 W2sigma1 ^= W2left3 + r3Sigma0 ^= r334 + r339 = r3>>>39 + r6 += r2 + + 2x,0 W2right6 = W2 unsigned>> 6 + r3Sigma0 ^= r339 + r2 += maj2 + ch1 = r0 + ch1 ^= r7 + + 1x,0 W2sigma1 ^= W2right6 + r2 += r3Sigma0 + r6Sigma1 = r6>>>14 + ch1 &= r6 + + 4x X4 = W2sigma1 + X4 + r618 = r6>>>18 + r641 = r6>>>41 + ch1 ^= r0 + + 2x,0 W4right19 = X4 unsigned>> 19 + r6Sigma1 ^= r618 + r2Sigma0 = r2>>>28 + r1 += ch1 + + 2x,0 W4left45 = X4 << 45 + r6Sigma1 ^= r641 + r234 = r2>>>34 + maj0 = r3 + maj0 ^= r2 + + 2x,0 W4right61 = X4 unsigned>> 61 + 1x,0 W4sigma1 = W4right19 ^ W4left45 + r2Sigma0 ^= r234 + r239 = r2>>>39 + + 2x,0 W4left3 = X4 << 3 + 1x,0 W4sigma1 ^= W4right61 + r2Sigma0 ^= r239 + r1 += r6Sigma1 + + 2x,0 W4right6 = X4 unsigned>> 6 + 1x,0 W4sigma1 ^= W4left3 + r5 += r1 + r2andr3 = r3 + r2andr3 &= r2 + + 1x,0 W4sigma1 ^= W4right6 + r5Sigma1 = r5>>>14 + r1 += r2Sigma0 + maj1 = r4 + maj1 &= maj0 + + W4sigma1 = W4sigma1[1],W4sigma1[0] + maj1 ^= r2andr3 + ch0 = r7 + ch0 ^= r6 + + r1 += maj1 + ch0 &= r5 + r518 = r5>>>18 + + maj0 &= r1 + ch0 ^= r7 + r0 += wc12131415[3] + r5Sigma1 ^= r518 + + r541 = r5>>>41 + 4x X4 = X4 + W4sigma1 + mem256[&w + 32] = X4 + r0 += ch0 + maj0 ^= r2andr3 + + r1Sigma0 = r1>>>28 + 4x D4 = X4 + mem256[constants + 32] + wc4567 = D4 + r134 = r1>>>34 + r5Sigma1 ^= r541 + + r0 += r5Sigma1 + r1Sigma0 ^= r134 + r139 = r1>>>39 + + r4 += r0 + r0 += maj0 + r1Sigma0 ^= r139 + + r0 += r1Sigma0 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/rer8.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/rer8.q new file mode 100644 index 0000000000..e4965e8468 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/rer8.q @@ -0,0 +1,166 @@ + X9 = mem256[&w + 72] + 4x X9right1 = X9 unsigned>> 1 + r4Sigma1 = r4>>>14 + r7 += wc0123[0] + ch7 = r6 + ch7 ^= r5 + + 4x X9left63 = X9 << 63 + r418 = r4>>>18 + ch7 &= r4 + maj6 = r1 + maj6 ^= r0 + + X9sigma0 = X9right1 ^ X9left63 + r441 = r4>>>41 + r4Sigma1 ^= r418 + ch7 ^= r6 + + 4x X9right8 = X9 unsigned>> 8 + r4Sigma1 ^= r441 + r0Sigma0 = r0>>>28 + r7 += ch7 + + X9sigma0 = X9sigma0 ^ X9right8 + r034 = r0>>>34 + r7 += r4Sigma1 + maj7 = r2 + maj7 &= maj6 + + W6 = mem128[&w + 48],0 + 2x,0 W6right19 = W6 unsigned>> 19 + r0Sigma0 ^= r034 + r039 = r0>>>39 + r3 += r7 + + 4x X9left56 = X9 << 56 + r0Sigma0 ^= r039 + r6 += wc0123[1] + r0andr1 = r1 + r0andr1 &= r0 + + 2x,0 W6left45 = W6 << 45 + r7 += r0Sigma0 + maj7 ^= r0andr1 + ch6 = r5 + ch6 ^= r4 + + X9sigma0 = X9sigma0 ^ X9left56 + 2x,0 W6right61 = W6 unsigned>> 61 + r3Sigma1 = r3>>>14 + r7 += maj7 + + 4x X9right7 = X9 unsigned>> 7 + 1x,0 W6sigma1 = W6right19 ^ W6left45 + r318 = r3>>>18 + ch6 &= r3 + + X9sigma0 = X9sigma0 ^ X9right7 + r3Sigma1 ^= r318 + r341 = r3>>>41 + maj6 &= r7 + + 1x,0 W6sigma1 ^= W6right61 + 4x X8 = X8 + mem256[&w + 8] + r3Sigma1 ^= r341 + maj6 ^= r0andr1 + + 2x,0 W6left3 = W6 << 3 + r7Sigma0 = r7>>>28 + ch6 ^= r5 + r6 += r3Sigma1 + + 4x X8 = X8 + X9sigma0 + r734 = r7>>>34 + r5 += wc0123[2] + r6 += ch6 + + 1x,0 W6sigma1 ^= W6left3 + r7Sigma0 ^= r734 + r739 = r7>>>39 + r2 += r6 + + 2x,0 W6right6 = W6 unsigned>> 6 + r7Sigma0 ^= r739 + r6 += maj6 + ch5 = r4 + ch5 ^= r3 + + 1x,0 W6sigma1 ^= W6right6 + r6 += r7Sigma0 + r2Sigma1 = r2>>>14 + ch5 &= r2 + + 4x X8 = W6sigma1 + X8 + r218 = r2>>>18 + r241 = r2>>>41 + ch5 ^= r4 + + 2x,0 W8right19 = X8 unsigned>> 19 + r2Sigma1 ^= r218 + r6Sigma0 = r6>>>28 + r5 += ch5 + + 2x,0 W8left45 = X8 << 45 + r2Sigma1 ^= r241 + r634 = r6>>>34 + maj4 = r7 + maj4 ^= r6 + + 2x,0 W8right61 = X8 unsigned>> 61 + 1x,0 W8sigma1 = W8right19 ^ W8left45 + r6Sigma0 ^= r634 + r639 = r6>>>39 + + 2x,0 W8left3 = X8 << 3 + 1x,0 W8sigma1 ^= W8right61 + r6Sigma0 ^= r639 + r5 += r2Sigma1 + + 2x,0 W8right6 = X8 unsigned>> 6 + 1x,0 W8sigma1 ^= W8left3 + r1 += r5 + r6andr7 = r7 + r6andr7 &= r6 + + 1x,0 W8sigma1 ^= W8right6 + r1Sigma1 = r1>>>14 + r5 += r6Sigma0 + maj5 = r0 + maj5 &= maj4 + + W8sigma1 = W8sigma1[1],W8sigma1[0] + maj5 ^= r6andr7 + ch4 = r3 + ch4 ^= r2 + + r5 += maj5 + ch4 &= r1 + r118 = r1>>>18 + + maj4 &= r5 + ch4 ^= r3 + r4 += wc0123[3] + r1Sigma1 ^= r118 + + r141 = r1>>>41 + 4x X8 = X8 + W8sigma1 + mem256[&w + 64] = X8 + r4 += ch4 + maj4 ^= r6andr7 + + r5Sigma0 = r5>>>28 + 4x D8 = X8 + mem256[constants + 64] + wc891011 = D8 + r534 = r5>>>34 + r1Sigma1 ^= r141 + + r4 += r1Sigma1 + r5Sigma0 ^= r534 + r539 = r5>>>39 + + r0 += r4 + r4 += maj4 + r5Sigma0 ^= r539 + + r4 += r5Sigma0 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round.py b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round.py new file mode 100755 index 0000000000..4847c8f48f --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 + +import sys + +i = 0 + +for doubleround in range(8): + i0 = (i+0)&7 + i1 = (i+1)&7 + i2 = (i+2)&7 + i3 = (i+3)&7 + i4 = (i+4)&7 + i5 = (i+5)&7 + i6 = (i+6)&7 + i7 = (i+7)&7 + + round = 2*doubleround + round4 = round&~3 + loadarray = 'wc%d%d%d%d' % (round4,round4+1,round4+2,round4+3) + i0load = '%s[%d]' % (loadarray,(round+0)&3) + i1load = '%s[%d]' % (loadarray,(round+1)&3) + + i -= 2 + + if len(sys.argv) > 1: + if sys.argv[1] != str(doubleround): + continue + + + print(' r%d += %s' % (i7,i0load)) + print(' r%dSigma1 = r%d>>>14' % (i4,i4)) + print(' ch%d = r%d' % (i7,i6)) + print(' r%d18 = r%d>>>18' % (i4,i4)) + print(' ch%d ^= r%d' % (i7,i5)) + + print(' r%d41 = r%d>>>41' % (i4,i4)) + print(' r%dSigma1 ^= r%d18' % (i4,i4)) + print(' ch%d &= r%d' % (i7,i4)) + print(' r%dSigma0 = r%d>>>28' % (i0,i0)) + + print(' r%dSigma1 ^= r%d41' % (i4,i4)) + print(' ch%d ^= r%d' % (i7,i6)) + print(' r%d34 = r%d>>>34' % (i0,i0)) + print(' maj%d = r%d' % (i6,i1)) + print(' maj%d ^= r%d' % (i6,i0)) + + print(' r%dSigma0 ^= r%d34' % (i0,i0)) + print(' r%d += ch%d' % (i7,i7)) + print(' r%dandr%d = r%d' % (i0,i1,i1)) + print(' r%d39 = r%d>>>39' % (i0,i0)) + print(' r%dandr%d &= r%d' % (i0,i1,i0)) + + print(' r%dSigma0 ^= r%d39' % (i0,i0)) + print(' r%d += r%dSigma1' % (i7,i4)) + print(' maj%d = r%d' % (i7,i2)) + print(' r%d += %s' % (i6,i1load)) + print(' maj%d &= maj%d' % (i7,i6)) + + print(' r%d += r%d' % (i3,i7)) + print(' r%d += r%dSigma0' % (i7,i0)) + print(' ch%d = r%d' % (i6,i5)) + print(' maj%d ^= r%dandr%d' % (i7,i0,i1)) + print(' ch%d ^= r%d' % (i6,i4)) + + print(' r%dSigma1 = r%d>>>14' % (i3,i3)) + print(' r%d += maj%d' % (i7,i7)) + print(' ch%d &= r%d' % (i6,i3)) + print(' r%d18 = r%d>>>18' % (i3,i3)) + + print(' r%dSigma1 ^= r%d18' % (i3,i3)) + print(' maj%d &= r%d' % (i6,i7)) + print(' ch%d ^= r%d' % (i6,i5)) + print(' r%d41 = r%d>>>41' % (i3,i3)) + + print(' r%dSigma1 ^= r%d41' % (i3,i3)) + print(' r%dSigma0 = r%d>>>28' % (i7,i7)) + print(' maj%d ^= r%dandr%d' % (i6,i0,i1)) + print(' r%d += ch%d' % (i6,i6)) + + print(' r%d += r%dSigma1' % (i6,i3)) + print(' r%d34 = r%d>>>34' % (i7,i7)) + + print(' r%dSigma0 ^= r%d34' % (i7,i7)) + print(' r%d += r%d' % (i2,i6)) + print(' r%d += maj%d' % (i6,i6)) + print(' r%d39 = r%d>>>39' % (i7,i7)) + + print(' r%dSigma0 ^= r%d39' % (i7,i7)) + + print(' r%d += r%dSigma0' % (i6,i7)) diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round01.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round01.q new file mode 100644 index 0000000000..a039e8cff5 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round01.q @@ -0,0 +1,49 @@ + r7 += wc0123[0] + r4Sigma1 = r4>>>14 + ch7 = r6 + r418 = r4>>>18 + ch7 ^= r5 + r441 = r4>>>41 + r4Sigma1 ^= r418 + ch7 &= r4 + r0Sigma0 = r0>>>28 + r4Sigma1 ^= r441 + ch7 ^= r6 + r034 = r0>>>34 + maj6 = r1 + maj6 ^= r0 + r0Sigma0 ^= r034 + r7 += ch7 + r0andr1 = r1 + r039 = r0>>>39 + r0andr1 &= r0 + r0Sigma0 ^= r039 + r7 += r4Sigma1 + maj7 = r2 + r6 += wc0123[1] + maj7 &= maj6 + r3 += r7 + r7 += r0Sigma0 + ch6 = r5 + maj7 ^= r0andr1 + ch6 ^= r4 + r3Sigma1 = r3>>>14 + r7 += maj7 + ch6 &= r3 + r318 = r3>>>18 + r3Sigma1 ^= r318 + maj6 &= r7 + ch6 ^= r5 + r341 = r3>>>41 + r3Sigma1 ^= r341 + r7Sigma0 = r7>>>28 + maj6 ^= r0andr1 + r6 += ch6 + r6 += r3Sigma1 + r734 = r7>>>34 + r7Sigma0 ^= r734 + r2 += r6 + r6 += maj6 + r739 = r7>>>39 + r7Sigma0 ^= r739 + r6 += r7Sigma0 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round1011.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round1011.q new file mode 100644 index 0000000000..da67716c9c --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round1011.q @@ -0,0 +1,49 @@ + r5 += wc891011[2] + r2Sigma1 = r2>>>14 + ch5 = r4 + r218 = r2>>>18 + ch5 ^= r3 + r241 = r2>>>41 + r2Sigma1 ^= r218 + ch5 &= r2 + r6Sigma0 = r6>>>28 + r2Sigma1 ^= r241 + ch5 ^= r4 + r634 = r6>>>34 + maj4 = r7 + maj4 ^= r6 + r6Sigma0 ^= r634 + r5 += ch5 + r6andr7 = r7 + r639 = r6>>>39 + r6andr7 &= r6 + r6Sigma0 ^= r639 + r5 += r2Sigma1 + maj5 = r0 + r4 += wc891011[3] + maj5 &= maj4 + r1 += r5 + r5 += r6Sigma0 + ch4 = r3 + maj5 ^= r6andr7 + ch4 ^= r2 + r1Sigma1 = r1>>>14 + r5 += maj5 + ch4 &= r1 + r118 = r1>>>18 + r1Sigma1 ^= r118 + maj4 &= r5 + ch4 ^= r3 + r141 = r1>>>41 + r1Sigma1 ^= r141 + r5Sigma0 = r5>>>28 + maj4 ^= r6andr7 + r4 += ch4 + r4 += r1Sigma1 + r534 = r5>>>34 + r5Sigma0 ^= r534 + r0 += r4 + r4 += maj4 + r539 = r5>>>39 + r5Sigma0 ^= r539 + r4 += r5Sigma0 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round1213.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round1213.q new file mode 100644 index 0000000000..b1b9ea9c65 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round1213.q @@ -0,0 +1,49 @@ + r3 += wc12131415[0] + r0Sigma1 = r0>>>14 + ch3 = r2 + r018 = r0>>>18 + ch3 ^= r1 + r041 = r0>>>41 + r0Sigma1 ^= r018 + ch3 &= r0 + r4Sigma0 = r4>>>28 + r0Sigma1 ^= r041 + ch3 ^= r2 + r434 = r4>>>34 + maj2 = r5 + maj2 ^= r4 + r4Sigma0 ^= r434 + r3 += ch3 + r4andr5 = r5 + r439 = r4>>>39 + r4andr5 &= r4 + r4Sigma0 ^= r439 + r3 += r0Sigma1 + maj3 = r6 + r2 += wc12131415[1] + maj3 &= maj2 + r7 += r3 + r3 += r4Sigma0 + ch2 = r1 + maj3 ^= r4andr5 + ch2 ^= r0 + r7Sigma1 = r7>>>14 + r3 += maj3 + ch2 &= r7 + r718 = r7>>>18 + r7Sigma1 ^= r718 + maj2 &= r3 + ch2 ^= r1 + r741 = r7>>>41 + r7Sigma1 ^= r741 + r3Sigma0 = r3>>>28 + maj2 ^= r4andr5 + r2 += ch2 + r2 += r7Sigma1 + r334 = r3>>>34 + r3Sigma0 ^= r334 + r6 += r2 + r2 += maj2 + r339 = r3>>>39 + r3Sigma0 ^= r339 + r2 += r3Sigma0 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round1415.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round1415.q new file mode 100644 index 0000000000..60498a9dd1 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round1415.q @@ -0,0 +1,49 @@ + r1 += wc12131415[2] + r6Sigma1 = r6>>>14 + ch1 = r0 + r618 = r6>>>18 + ch1 ^= r7 + r641 = r6>>>41 + r6Sigma1 ^= r618 + ch1 &= r6 + r2Sigma0 = r2>>>28 + r6Sigma1 ^= r641 + ch1 ^= r0 + r234 = r2>>>34 + maj0 = r3 + maj0 ^= r2 + r2Sigma0 ^= r234 + r1 += ch1 + r2andr3 = r3 + r239 = r2>>>39 + r2andr3 &= r2 + r2Sigma0 ^= r239 + r1 += r6Sigma1 + maj1 = r4 + r0 += wc12131415[3] + maj1 &= maj0 + r5 += r1 + r1 += r2Sigma0 + ch0 = r7 + maj1 ^= r2andr3 + ch0 ^= r6 + r5Sigma1 = r5>>>14 + r1 += maj1 + ch0 &= r5 + r518 = r5>>>18 + r5Sigma1 ^= r518 + maj0 &= r1 + ch0 ^= r7 + r541 = r5>>>41 + r5Sigma1 ^= r541 + r1Sigma0 = r1>>>28 + maj0 ^= r2andr3 + r0 += ch0 + r0 += r5Sigma1 + r134 = r1>>>34 + r1Sigma0 ^= r134 + r4 += r0 + r0 += maj0 + r139 = r1>>>39 + r1Sigma0 ^= r139 + r0 += r1Sigma0 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round23.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round23.q new file mode 100644 index 0000000000..685c57309b --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round23.q @@ -0,0 +1,49 @@ + r5 += wc0123[2] + r2Sigma1 = r2>>>14 + ch5 = r4 + r218 = r2>>>18 + ch5 ^= r3 + r241 = r2>>>41 + r2Sigma1 ^= r218 + ch5 &= r2 + r6Sigma0 = r6>>>28 + r2Sigma1 ^= r241 + ch5 ^= r4 + r634 = r6>>>34 + maj4 = r7 + maj4 ^= r6 + r6Sigma0 ^= r634 + r5 += ch5 + r6andr7 = r7 + r639 = r6>>>39 + r6andr7 &= r6 + r6Sigma0 ^= r639 + r5 += r2Sigma1 + maj5 = r0 + r4 += wc0123[3] + maj5 &= maj4 + r1 += r5 + r5 += r6Sigma0 + ch4 = r3 + maj5 ^= r6andr7 + ch4 ^= r2 + r1Sigma1 = r1>>>14 + r5 += maj5 + ch4 &= r1 + r118 = r1>>>18 + r1Sigma1 ^= r118 + maj4 &= r5 + ch4 ^= r3 + r141 = r1>>>41 + r1Sigma1 ^= r141 + r5Sigma0 = r5>>>28 + maj4 ^= r6andr7 + r4 += ch4 + r4 += r1Sigma1 + r534 = r5>>>34 + r5Sigma0 ^= r534 + r0 += r4 + r4 += maj4 + r539 = r5>>>39 + r5Sigma0 ^= r539 + r4 += r5Sigma0 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round45.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round45.q new file mode 100644 index 0000000000..4d0bb8494e --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round45.q @@ -0,0 +1,49 @@ + r3 += wc4567[0] + r0Sigma1 = r0>>>14 + ch3 = r2 + r018 = r0>>>18 + ch3 ^= r1 + r041 = r0>>>41 + r0Sigma1 ^= r018 + ch3 &= r0 + r4Sigma0 = r4>>>28 + r0Sigma1 ^= r041 + ch3 ^= r2 + r434 = r4>>>34 + maj2 = r5 + maj2 ^= r4 + r4Sigma0 ^= r434 + r3 += ch3 + r4andr5 = r5 + r439 = r4>>>39 + r4andr5 &= r4 + r4Sigma0 ^= r439 + r3 += r0Sigma1 + maj3 = r6 + r2 += wc4567[1] + maj3 &= maj2 + r7 += r3 + r3 += r4Sigma0 + ch2 = r1 + maj3 ^= r4andr5 + ch2 ^= r0 + r7Sigma1 = r7>>>14 + r3 += maj3 + ch2 &= r7 + r718 = r7>>>18 + r7Sigma1 ^= r718 + maj2 &= r3 + ch2 ^= r1 + r741 = r7>>>41 + r7Sigma1 ^= r741 + r3Sigma0 = r3>>>28 + maj2 ^= r4andr5 + r2 += ch2 + r2 += r7Sigma1 + r334 = r3>>>34 + r3Sigma0 ^= r334 + r6 += r2 + r2 += maj2 + r339 = r3>>>39 + r3Sigma0 ^= r339 + r2 += r3Sigma0 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round67.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round67.q new file mode 100644 index 0000000000..d56aaf2fc0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round67.q @@ -0,0 +1,49 @@ + r1 += wc4567[2] + r6Sigma1 = r6>>>14 + ch1 = r0 + r618 = r6>>>18 + ch1 ^= r7 + r641 = r6>>>41 + r6Sigma1 ^= r618 + ch1 &= r6 + r2Sigma0 = r2>>>28 + r6Sigma1 ^= r641 + ch1 ^= r0 + r234 = r2>>>34 + maj0 = r3 + maj0 ^= r2 + r2Sigma0 ^= r234 + r1 += ch1 + r2andr3 = r3 + r239 = r2>>>39 + r2andr3 &= r2 + r2Sigma0 ^= r239 + r1 += r6Sigma1 + maj1 = r4 + r0 += wc4567[3] + maj1 &= maj0 + r5 += r1 + r1 += r2Sigma0 + ch0 = r7 + maj1 ^= r2andr3 + ch0 ^= r6 + r5Sigma1 = r5>>>14 + r1 += maj1 + ch0 &= r5 + r518 = r5>>>18 + r5Sigma1 ^= r518 + maj0 &= r1 + ch0 ^= r7 + r541 = r5>>>41 + r5Sigma1 ^= r541 + r1Sigma0 = r1>>>28 + maj0 ^= r2andr3 + r0 += ch0 + r0 += r5Sigma1 + r134 = r1>>>34 + r1Sigma0 ^= r134 + r4 += r0 + r0 += maj0 + r139 = r1>>>39 + r1Sigma0 ^= r139 + r0 += r1Sigma0 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round89.q b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round89.q new file mode 100644 index 0000000000..6d6db4653c --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/avx2/round89.q @@ -0,0 +1,49 @@ + r7 += wc891011[0] + r4Sigma1 = r4>>>14 + ch7 = r6 + r418 = r4>>>18 + ch7 ^= r5 + r441 = r4>>>41 + r4Sigma1 ^= r418 + ch7 &= r4 + r0Sigma0 = r0>>>28 + r4Sigma1 ^= r441 + ch7 ^= r6 + r034 = r0>>>34 + maj6 = r1 + maj6 ^= r0 + r0Sigma0 ^= r034 + r7 += ch7 + r0andr1 = r1 + r039 = r0>>>39 + r0andr1 &= r0 + r0Sigma0 ^= r039 + r7 += r4Sigma1 + maj7 = r2 + r6 += wc891011[1] + maj7 &= maj6 + r3 += r7 + r7 += r0Sigma0 + ch6 = r5 + maj7 ^= r0andr1 + ch6 ^= r4 + r3Sigma1 = r3>>>14 + r7 += maj7 + ch6 &= r3 + r318 = r3>>>18 + r3Sigma1 ^= r318 + maj6 &= r7 + ch6 ^= r5 + r341 = r3>>>41 + r3Sigma1 ^= r341 + r7Sigma0 = r7>>>28 + maj6 ^= r0andr1 + r6 += ch6 + r6 += r3Sigma1 + r734 = r7>>>34 + r7Sigma0 ^= r734 + r2 += r6 + r6 += maj6 + r739 = r7>>>39 + r7Sigma0 ^= r739 + r6 += r7Sigma0 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/compact/api.h b/lib-25519/lib25519/crypto_hashblocks/sha512/compact/api.h new file mode 120000 index 0000000000..1dfe625ff0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/compact/api.h @@ -0,0 +1 @@ +../m3/api.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/compact/blocks.c b/lib-25519/lib25519/crypto_hashblocks/sha512/compact/blocks.c new file mode 100644 index 0000000000..b7326ca9bf --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/compact/blocks.c @@ -0,0 +1,218 @@ +#include "crypto_hashblocks.h" + +typedef unsigned long long uint64; + +static uint64 load_bigendian(const unsigned char *x) +{ + return + (uint64) (x[7]) \ + | (((uint64) (x[6])) << 8) \ + | (((uint64) (x[5])) << 16) \ + | (((uint64) (x[4])) << 24) \ + | (((uint64) (x[3])) << 32) \ + | (((uint64) (x[2])) << 40) \ + | (((uint64) (x[1])) << 48) \ + | (((uint64) (x[0])) << 56) + ; +} + +static void store_bigendian(unsigned char *x,uint64 u) +{ + x[7] = u; u >>= 8; + x[6] = u; u >>= 8; + x[5] = u; u >>= 8; + x[4] = u; u >>= 8; + x[3] = u; u >>= 8; + x[2] = u; u >>= 8; + x[1] = u; u >>= 8; + x[0] = u; +} + +#define SHR(x,c) ((x) >> (c)) +#define ROTR(x,c) (((x) >> (c)) | ((x) << (64 - (c)))) + +#define sigma0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x,7)) +#define sigma1(x) (ROTR(x,19) ^ ROTR(x,61) ^ SHR(x,6)) + +#define M(w0,w14,w9,w1) w0 = sigma1(w14) + w9 + sigma0(w1) + w0; + +static void expand(uint64 *w) +{ + M(w[0] ,w[14],w[9] ,w[1] ) + M(w[1] ,w[15],w[10],w[2] ) + M(w[2] ,w[0] ,w[11],w[3] ) + M(w[3] ,w[1] ,w[12],w[4] ) + M(w[4] ,w[2] ,w[13],w[5] ) + M(w[5] ,w[3] ,w[14],w[6] ) + M(w[6] ,w[4] ,w[15],w[7] ) + M(w[7] ,w[5] ,w[0] ,w[8] ) + M(w[8] ,w[6] ,w[1] ,w[9] ) + M(w[9] ,w[7] ,w[2] ,w[10]) + M(w[10],w[8] ,w[3] ,w[11]) + M(w[11],w[9] ,w[4] ,w[12]) + M(w[12],w[10],w[5] ,w[13]) + M(w[13],w[11],w[6] ,w[14]) + M(w[14],w[12],w[7] ,w[15]) + M(w[15],w[13],w[8] ,w[0] ) +} + +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) ((x & (y ^ z)) ^ (y & z)) +#define Sigma0(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39)) +#define Sigma1(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41)) + +#define F(r0,r1,r2,r3,r4,r5,r6,r7,w,k) \ + r7 += Sigma1(r4) + Ch(r4,r5,r6) + k + w; \ + r3 += r7; \ + r7 += Sigma0(r0) + Maj(r0,r1,r2); + +static void handle(uint64 *r,const uint64 *w,const uint64 *c) +{ + F(r[0],r[1],r[2],r[3],r[4],r[5],r[6],r[7],w[0] ,c[0]) + F(r[7],r[0],r[1],r[2],r[3],r[4],r[5],r[6],w[1] ,c[1]) + F(r[6],r[7],r[0],r[1],r[2],r[3],r[4],r[5],w[2] ,c[2]) + F(r[5],r[6],r[7],r[0],r[1],r[2],r[3],r[4],w[3] ,c[3]) + F(r[4],r[5],r[6],r[7],r[0],r[1],r[2],r[3],w[4] ,c[4]) + F(r[3],r[4],r[5],r[6],r[7],r[0],r[1],r[2],w[5] ,c[5]) + F(r[2],r[3],r[4],r[5],r[6],r[7],r[0],r[1],w[6] ,c[6]) + F(r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[0],w[7] ,c[7]) + F(r[0],r[1],r[2],r[3],r[4],r[5],r[6],r[7],w[8] ,c[8]) + F(r[7],r[0],r[1],r[2],r[3],r[4],r[5],r[6],w[9] ,c[9]) + F(r[6],r[7],r[0],r[1],r[2],r[3],r[4],r[5],w[10],c[10]) + F(r[5],r[6],r[7],r[0],r[1],r[2],r[3],r[4],w[11],c[11]) + F(r[4],r[5],r[6],r[7],r[0],r[1],r[2],r[3],w[12],c[12]) + F(r[3],r[4],r[5],r[6],r[7],r[0],r[1],r[2],w[13],c[13]) + F(r[2],r[3],r[4],r[5],r[6],r[7],r[0],r[1],w[14],c[14]) + F(r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[0],w[15],c[15]) +} + +static const uint64 round[80] = { + 0x428a2f98d728ae22ULL +, 0x7137449123ef65cdULL +, 0xb5c0fbcfec4d3b2fULL +, 0xe9b5dba58189dbbcULL +, 0x3956c25bf348b538ULL +, 0x59f111f1b605d019ULL +, 0x923f82a4af194f9bULL +, 0xab1c5ed5da6d8118ULL +, 0xd807aa98a3030242ULL +, 0x12835b0145706fbeULL +, 0x243185be4ee4b28cULL +, 0x550c7dc3d5ffb4e2ULL +, 0x72be5d74f27b896fULL +, 0x80deb1fe3b1696b1ULL +, 0x9bdc06a725c71235ULL +, 0xc19bf174cf692694ULL +, 0xe49b69c19ef14ad2ULL +, 0xefbe4786384f25e3ULL +, 0x0fc19dc68b8cd5b5ULL +, 0x240ca1cc77ac9c65ULL +, 0x2de92c6f592b0275ULL +, 0x4a7484aa6ea6e483ULL +, 0x5cb0a9dcbd41fbd4ULL +, 0x76f988da831153b5ULL +, 0x983e5152ee66dfabULL +, 0xa831c66d2db43210ULL +, 0xb00327c898fb213fULL +, 0xbf597fc7beef0ee4ULL +, 0xc6e00bf33da88fc2ULL +, 0xd5a79147930aa725ULL +, 0x06ca6351e003826fULL +, 0x142929670a0e6e70ULL +, 0x27b70a8546d22ffcULL +, 0x2e1b21385c26c926ULL +, 0x4d2c6dfc5ac42aedULL +, 0x53380d139d95b3dfULL +, 0x650a73548baf63deULL +, 0x766a0abb3c77b2a8ULL +, 0x81c2c92e47edaee6ULL +, 0x92722c851482353bULL +, 0xa2bfe8a14cf10364ULL +, 0xa81a664bbc423001ULL +, 0xc24b8b70d0f89791ULL +, 0xc76c51a30654be30ULL +, 0xd192e819d6ef5218ULL +, 0xd69906245565a910ULL +, 0xf40e35855771202aULL +, 0x106aa07032bbd1b8ULL +, 0x19a4c116b8d2d0c8ULL +, 0x1e376c085141ab53ULL +, 0x2748774cdf8eeb99ULL +, 0x34b0bcb5e19b48a8ULL +, 0x391c0cb3c5c95a63ULL +, 0x4ed8aa4ae3418acbULL +, 0x5b9cca4f7763e373ULL +, 0x682e6ff3d6b2b8a3ULL +, 0x748f82ee5defb2fcULL +, 0x78a5636f43172f60ULL +, 0x84c87814a1f0ab72ULL +, 0x8cc702081a6439ecULL +, 0x90befffa23631e28ULL +, 0xa4506cebde82bde9ULL +, 0xbef9a3f7b2c67915ULL +, 0xc67178f2e372532bULL +, 0xca273eceea26619cULL +, 0xd186b8c721c0c207ULL +, 0xeada7dd6cde0eb1eULL +, 0xf57d4f7fee6ed178ULL +, 0x06f067aa72176fbaULL +, 0x0a637dc5a2c898a6ULL +, 0x113f9804bef90daeULL +, 0x1b710b35131c471bULL +, 0x28db77f523047d84ULL +, 0x32caab7b40c72493ULL +, 0x3c9ebe0a15c9bebcULL +, 0x431d67c49c100d4cULL +, 0x4cc5d4becb3e42b6ULL +, 0x597f299cfc657e2aULL +, 0x5fcb6fab3ad6faecULL +, 0x6c44198c4a475817ULL +}; + +int crypto_hashblocks(unsigned char *statebytes,const unsigned char *in,long long inlen) +{ + uint64 w[16]; + uint64 state[8]; + uint64 r[8]; + int i; + + for (i = 0;i < 8;++i) + state[i] = r[i] = load_bigendian(statebytes+8*i); + + while (inlen >= 128) { + for (i = 0;i < 16;++i) + w[i] = load_bigendian(in+8*i); + + handle(r,w,round+0); + + expand(w); + + handle(r,w,round+16); + + expand(w); + + handle(r,w,round+32); + + expand(w); + + handle(r,w,round+48); + + expand(w); + + handle(r,w,round+64); + + for (i = 0;i < 8;++i) { + uint64 x = r[i]+state[i]; + state[i] = x; + r[i] = x; + } + + in += 128; + inlen -= 128; + } + + for (i = 0;i < 8;++i) + store_bigendian(statebytes+8*i,state[i]); + + return inlen; +} diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/compact/implementors b/lib-25519/lib25519/crypto_hashblocks/sha512/compact/implementors new file mode 120000 index 0000000000..3476030106 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/compact/implementors @@ -0,0 +1 @@ +../m3/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/compact2/api.h b/lib-25519/lib25519/crypto_hashblocks/sha512/compact2/api.h new file mode 120000 index 0000000000..1dfe625ff0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/compact2/api.h @@ -0,0 +1 @@ +../m3/api.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/compact2/blocks.c b/lib-25519/lib25519/crypto_hashblocks/sha512/compact2/blocks.c new file mode 100644 index 0000000000..988be5533b --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/compact2/blocks.c @@ -0,0 +1,198 @@ +#include "crypto_hashblocks.h" + +typedef unsigned long long uint64; + +static uint64 load_bigendian(const unsigned char *x) +{ + return + (uint64) (x[7]) \ + | (((uint64) (x[6])) << 8) \ + | (((uint64) (x[5])) << 16) \ + | (((uint64) (x[4])) << 24) \ + | (((uint64) (x[3])) << 32) \ + | (((uint64) (x[2])) << 40) \ + | (((uint64) (x[1])) << 48) \ + | (((uint64) (x[0])) << 56) + ; +} + +static void store_bigendian(unsigned char *x,uint64 u) +{ + x[7] = u; u >>= 8; + x[6] = u; u >>= 8; + x[5] = u; u >>= 8; + x[4] = u; u >>= 8; + x[3] = u; u >>= 8; + x[2] = u; u >>= 8; + x[1] = u; u >>= 8; + x[0] = u; +} + +#define SHR(x,c) ((x) >> (c)) +#define ROTR(x,c) (((x) >> (c)) | ((x) << (64 - (c)))) +#define sigma0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x,7)) +#define sigma1(x) (ROTR(x,19) ^ ROTR(x,61) ^ SHR(x,6)) + +static void expand(uint64 *w) +{ + int i; + for (i = 0;i < 16;++i) { + w[i] += w[15&(i+9)]; + w[i] += sigma1(w[15&(i+14)]); + w[i] += sigma0(w[15&(i+1)]); + } +} + +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) ((x & (y ^ z)) ^ (y & z)) +#define Sigma0(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39)) +#define Sigma1(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41)) + +static void handle(uint64 *r,const uint64 *w,const uint64 *c) +{ + int i; + uint64 x; + + for (i = 0;i < 16;++i) { + x = r[7&(7-i)]; + x += w[i]; + x += c[i]; + x += Sigma1(r[7&(4-i)]); + x += Ch(r[7&(4-i)],r[7&(5-i)],r[7&(6-i)]); + r[7&(3-i)] += x; + x += Sigma0(r[7&(0-i)]); + x += Maj(r[7&(0-i)],r[7&(1-i)],r[7&(2-i)]); + r[7&(7-i)] = x; + } +} + +static const uint64 round[80] = { + 0x428a2f98d728ae22ULL +, 0x7137449123ef65cdULL +, 0xb5c0fbcfec4d3b2fULL +, 0xe9b5dba58189dbbcULL +, 0x3956c25bf348b538ULL +, 0x59f111f1b605d019ULL +, 0x923f82a4af194f9bULL +, 0xab1c5ed5da6d8118ULL +, 0xd807aa98a3030242ULL +, 0x12835b0145706fbeULL +, 0x243185be4ee4b28cULL +, 0x550c7dc3d5ffb4e2ULL +, 0x72be5d74f27b896fULL +, 0x80deb1fe3b1696b1ULL +, 0x9bdc06a725c71235ULL +, 0xc19bf174cf692694ULL +, 0xe49b69c19ef14ad2ULL +, 0xefbe4786384f25e3ULL +, 0x0fc19dc68b8cd5b5ULL +, 0x240ca1cc77ac9c65ULL +, 0x2de92c6f592b0275ULL +, 0x4a7484aa6ea6e483ULL +, 0x5cb0a9dcbd41fbd4ULL +, 0x76f988da831153b5ULL +, 0x983e5152ee66dfabULL +, 0xa831c66d2db43210ULL +, 0xb00327c898fb213fULL +, 0xbf597fc7beef0ee4ULL +, 0xc6e00bf33da88fc2ULL +, 0xd5a79147930aa725ULL +, 0x06ca6351e003826fULL +, 0x142929670a0e6e70ULL +, 0x27b70a8546d22ffcULL +, 0x2e1b21385c26c926ULL +, 0x4d2c6dfc5ac42aedULL +, 0x53380d139d95b3dfULL +, 0x650a73548baf63deULL +, 0x766a0abb3c77b2a8ULL +, 0x81c2c92e47edaee6ULL +, 0x92722c851482353bULL +, 0xa2bfe8a14cf10364ULL +, 0xa81a664bbc423001ULL +, 0xc24b8b70d0f89791ULL +, 0xc76c51a30654be30ULL +, 0xd192e819d6ef5218ULL +, 0xd69906245565a910ULL +, 0xf40e35855771202aULL +, 0x106aa07032bbd1b8ULL +, 0x19a4c116b8d2d0c8ULL +, 0x1e376c085141ab53ULL +, 0x2748774cdf8eeb99ULL +, 0x34b0bcb5e19b48a8ULL +, 0x391c0cb3c5c95a63ULL +, 0x4ed8aa4ae3418acbULL +, 0x5b9cca4f7763e373ULL +, 0x682e6ff3d6b2b8a3ULL +, 0x748f82ee5defb2fcULL +, 0x78a5636f43172f60ULL +, 0x84c87814a1f0ab72ULL +, 0x8cc702081a6439ecULL +, 0x90befffa23631e28ULL +, 0xa4506cebde82bde9ULL +, 0xbef9a3f7b2c67915ULL +, 0xc67178f2e372532bULL +, 0xca273eceea26619cULL +, 0xd186b8c721c0c207ULL +, 0xeada7dd6cde0eb1eULL +, 0xf57d4f7fee6ed178ULL +, 0x06f067aa72176fbaULL +, 0x0a637dc5a2c898a6ULL +, 0x113f9804bef90daeULL +, 0x1b710b35131c471bULL +, 0x28db77f523047d84ULL +, 0x32caab7b40c72493ULL +, 0x3c9ebe0a15c9bebcULL +, 0x431d67c49c100d4cULL +, 0x4cc5d4becb3e42b6ULL +, 0x597f299cfc657e2aULL +, 0x5fcb6fab3ad6faecULL +, 0x6c44198c4a475817ULL +}; + +int crypto_hashblocks(unsigned char *statebytes,const unsigned char *in,long long inlen) +{ + uint64 w[16]; + uint64 state[8]; + uint64 r[8]; + int i; + + for (i = 0;i < 8;++i) + state[i] = r[i] = load_bigendian(statebytes+8*i); + + while (inlen >= 128) { + for (i = 0;i < 16;++i) + w[i] = load_bigendian(in+8*i); + + handle(r,w,round+0); + + expand(w); + + handle(r,w,round+16); + + expand(w); + + handle(r,w,round+32); + + expand(w); + + handle(r,w,round+48); + + expand(w); + + handle(r,w,round+64); + + for (i = 0;i < 8;++i) { + uint64 x = r[i]+state[i]; + state[i] = x; + r[i] = x; + } + + in += 128; + inlen -= 128; + } + + for (i = 0;i < 8;++i) + store_bigendian(statebytes+8*i,state[i]); + + return inlen; +} diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/compact2/implementors b/lib-25519/lib25519/crypto_hashblocks/sha512/compact2/implementors new file mode 120000 index 0000000000..3476030106 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/compact2/implementors @@ -0,0 +1 @@ +../m3/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/compact3/api.h b/lib-25519/lib25519/crypto_hashblocks/sha512/compact3/api.h new file mode 120000 index 0000000000..1dfe625ff0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/compact3/api.h @@ -0,0 +1 @@ +../m3/api.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/compact3/blocks.c b/lib-25519/lib25519/crypto_hashblocks/sha512/compact3/blocks.c new file mode 100644 index 0000000000..f5d1530745 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/compact3/blocks.c @@ -0,0 +1,170 @@ +#include "crypto_hashblocks.h" + +typedef unsigned long long uint64; + +static uint64 load_bigendian(const unsigned char *x) +{ + return + (uint64) (x[7]) \ + | (((uint64) (x[6])) << 8) \ + | (((uint64) (x[5])) << 16) \ + | (((uint64) (x[4])) << 24) \ + | (((uint64) (x[3])) << 32) \ + | (((uint64) (x[2])) << 40) \ + | (((uint64) (x[1])) << 48) \ + | (((uint64) (x[0])) << 56) + ; +} + +static void store_bigendian(unsigned char *x,uint64 u) +{ + x[7] = u; u >>= 8; + x[6] = u; u >>= 8; + x[5] = u; u >>= 8; + x[4] = u; u >>= 8; + x[3] = u; u >>= 8; + x[2] = u; u >>= 8; + x[1] = u; u >>= 8; + x[0] = u; +} + +#define SHR(x,c) ((x) >> (c)) +#define ROTR(x,c) (((x) >> (c)) | ((x) << (64 - (c)))) +#define sigma0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x,7)) +#define sigma1(x) (ROTR(x,19) ^ ROTR(x,61) ^ SHR(x,6)) + +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) ((x & (y ^ z)) ^ (y & z)) +#define Sigma0(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39)) +#define Sigma1(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41)) + +static const uint64 round[80] = { + 0x428a2f98d728ae22ULL +, 0x7137449123ef65cdULL +, 0xb5c0fbcfec4d3b2fULL +, 0xe9b5dba58189dbbcULL +, 0x3956c25bf348b538ULL +, 0x59f111f1b605d019ULL +, 0x923f82a4af194f9bULL +, 0xab1c5ed5da6d8118ULL +, 0xd807aa98a3030242ULL +, 0x12835b0145706fbeULL +, 0x243185be4ee4b28cULL +, 0x550c7dc3d5ffb4e2ULL +, 0x72be5d74f27b896fULL +, 0x80deb1fe3b1696b1ULL +, 0x9bdc06a725c71235ULL +, 0xc19bf174cf692694ULL +, 0xe49b69c19ef14ad2ULL +, 0xefbe4786384f25e3ULL +, 0x0fc19dc68b8cd5b5ULL +, 0x240ca1cc77ac9c65ULL +, 0x2de92c6f592b0275ULL +, 0x4a7484aa6ea6e483ULL +, 0x5cb0a9dcbd41fbd4ULL +, 0x76f988da831153b5ULL +, 0x983e5152ee66dfabULL +, 0xa831c66d2db43210ULL +, 0xb00327c898fb213fULL +, 0xbf597fc7beef0ee4ULL +, 0xc6e00bf33da88fc2ULL +, 0xd5a79147930aa725ULL +, 0x06ca6351e003826fULL +, 0x142929670a0e6e70ULL +, 0x27b70a8546d22ffcULL +, 0x2e1b21385c26c926ULL +, 0x4d2c6dfc5ac42aedULL +, 0x53380d139d95b3dfULL +, 0x650a73548baf63deULL +, 0x766a0abb3c77b2a8ULL +, 0x81c2c92e47edaee6ULL +, 0x92722c851482353bULL +, 0xa2bfe8a14cf10364ULL +, 0xa81a664bbc423001ULL +, 0xc24b8b70d0f89791ULL +, 0xc76c51a30654be30ULL +, 0xd192e819d6ef5218ULL +, 0xd69906245565a910ULL +, 0xf40e35855771202aULL +, 0x106aa07032bbd1b8ULL +, 0x19a4c116b8d2d0c8ULL +, 0x1e376c085141ab53ULL +, 0x2748774cdf8eeb99ULL +, 0x34b0bcb5e19b48a8ULL +, 0x391c0cb3c5c95a63ULL +, 0x4ed8aa4ae3418acbULL +, 0x5b9cca4f7763e373ULL +, 0x682e6ff3d6b2b8a3ULL +, 0x748f82ee5defb2fcULL +, 0x78a5636f43172f60ULL +, 0x84c87814a1f0ab72ULL +, 0x8cc702081a6439ecULL +, 0x90befffa23631e28ULL +, 0xa4506cebde82bde9ULL +, 0xbef9a3f7b2c67915ULL +, 0xc67178f2e372532bULL +, 0xca273eceea26619cULL +, 0xd186b8c721c0c207ULL +, 0xeada7dd6cde0eb1eULL +, 0xf57d4f7fee6ed178ULL +, 0x06f067aa72176fbaULL +, 0x0a637dc5a2c898a6ULL +, 0x113f9804bef90daeULL +, 0x1b710b35131c471bULL +, 0x28db77f523047d84ULL +, 0x32caab7b40c72493ULL +, 0x3c9ebe0a15c9bebcULL +, 0x431d67c49c100d4cULL +, 0x4cc5d4becb3e42b6ULL +, 0x597f299cfc657e2aULL +, 0x5fcb6fab3ad6faecULL +, 0x6c44198c4a475817ULL +}; + +int crypto_hashblocks(unsigned char *statebytes,const unsigned char *in,long long inlen) +{ + uint64 w[16]; + uint64 state[8]; + uint64 r[8]; + uint64 x; + int i; + + for (i = 0;i < 8;++i) + state[i] = r[i] = load_bigendian(statebytes+8*i); + + while (inlen >= 128) { + for (i = 0;i < 16;++i) + w[i] = load_bigendian(in+8*i); + + for (i = 0;i < 80;++i) { + x = r[7&(7-i)]; + x += w[15&i]; + x += round[i]; + x += Sigma1(r[7&(4-i)]); + x += Ch(r[7&(4-i)],r[7&(5-i)],r[7&(6-i)]); + r[7&(3-i)] += x; + x += Sigma0(r[7&(0-i)]); + x += Maj(r[7&(0-i)],r[7&(1-i)],r[7&(2-i)]); + r[7&(7-i)] = x; + + /* not used for i >= 64: */ + w[15&i] += w[15&(i+9)]; + w[15&i] += sigma1(w[15&(i+14)]); + w[15&i] += sigma0(w[15&(i+1)]); + } + + for (i = 0;i < 8;++i) { + uint64 x = r[i]+state[i]; + state[i] = x; + r[i] = x; + } + + in += 128; + inlen -= 128; + } + + for (i = 0;i < 8;++i) + store_bigendian(statebytes+8*i,state[i]); + + return inlen; +} diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/compact3/implementors b/lib-25519/lib25519/crypto_hashblocks/sha512/compact3/implementors new file mode 120000 index 0000000000..3476030106 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/compact3/implementors @@ -0,0 +1 @@ +../m3/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/compact4/api.h b/lib-25519/lib25519/crypto_hashblocks/sha512/compact4/api.h new file mode 120000 index 0000000000..1dfe625ff0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/compact4/api.h @@ -0,0 +1 @@ +../m3/api.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/compact4/blocks.c b/lib-25519/lib25519/crypto_hashblocks/sha512/compact4/blocks.c new file mode 100644 index 0000000000..58bbdf2307 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/compact4/blocks.c @@ -0,0 +1,172 @@ +#include "crypto_hashblocks.h" + +typedef unsigned long long uint64; + +static uint64 load_bigendian(const unsigned char *x) +{ + return + (uint64) (x[7]) \ + | (((uint64) (x[6])) << 8) \ + | (((uint64) (x[5])) << 16) \ + | (((uint64) (x[4])) << 24) \ + | (((uint64) (x[3])) << 32) \ + | (((uint64) (x[2])) << 40) \ + | (((uint64) (x[1])) << 48) \ + | (((uint64) (x[0])) << 56) + ; +} + +static void store_bigendian(unsigned char *x,uint64 u) +{ + x[7] = u; u >>= 8; + x[6] = u; u >>= 8; + x[5] = u; u >>= 8; + x[4] = u; u >>= 8; + x[3] = u; u >>= 8; + x[2] = u; u >>= 8; + x[1] = u; u >>= 8; + x[0] = u; +} + +#define SHR(x,c) ((x) >> (c)) +#define ROTR(x,c) (((x) >> (c)) | ((x) << (64 - (c)))) +#define sigma0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x,7)) +#define sigma1(x) (ROTR(x,19) ^ ROTR(x,61) ^ SHR(x,6)) + +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) ((x & (y ^ z)) ^ (y & z)) +#define Sigma0(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39)) +#define Sigma1(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41)) + +static const uint64 round[80] = { + 0x428a2f98d728ae22ULL +, 0x7137449123ef65cdULL +, 0xb5c0fbcfec4d3b2fULL +, 0xe9b5dba58189dbbcULL +, 0x3956c25bf348b538ULL +, 0x59f111f1b605d019ULL +, 0x923f82a4af194f9bULL +, 0xab1c5ed5da6d8118ULL +, 0xd807aa98a3030242ULL +, 0x12835b0145706fbeULL +, 0x243185be4ee4b28cULL +, 0x550c7dc3d5ffb4e2ULL +, 0x72be5d74f27b896fULL +, 0x80deb1fe3b1696b1ULL +, 0x9bdc06a725c71235ULL +, 0xc19bf174cf692694ULL +, 0xe49b69c19ef14ad2ULL +, 0xefbe4786384f25e3ULL +, 0x0fc19dc68b8cd5b5ULL +, 0x240ca1cc77ac9c65ULL +, 0x2de92c6f592b0275ULL +, 0x4a7484aa6ea6e483ULL +, 0x5cb0a9dcbd41fbd4ULL +, 0x76f988da831153b5ULL +, 0x983e5152ee66dfabULL +, 0xa831c66d2db43210ULL +, 0xb00327c898fb213fULL +, 0xbf597fc7beef0ee4ULL +, 0xc6e00bf33da88fc2ULL +, 0xd5a79147930aa725ULL +, 0x06ca6351e003826fULL +, 0x142929670a0e6e70ULL +, 0x27b70a8546d22ffcULL +, 0x2e1b21385c26c926ULL +, 0x4d2c6dfc5ac42aedULL +, 0x53380d139d95b3dfULL +, 0x650a73548baf63deULL +, 0x766a0abb3c77b2a8ULL +, 0x81c2c92e47edaee6ULL +, 0x92722c851482353bULL +, 0xa2bfe8a14cf10364ULL +, 0xa81a664bbc423001ULL +, 0xc24b8b70d0f89791ULL +, 0xc76c51a30654be30ULL +, 0xd192e819d6ef5218ULL +, 0xd69906245565a910ULL +, 0xf40e35855771202aULL +, 0x106aa07032bbd1b8ULL +, 0x19a4c116b8d2d0c8ULL +, 0x1e376c085141ab53ULL +, 0x2748774cdf8eeb99ULL +, 0x34b0bcb5e19b48a8ULL +, 0x391c0cb3c5c95a63ULL +, 0x4ed8aa4ae3418acbULL +, 0x5b9cca4f7763e373ULL +, 0x682e6ff3d6b2b8a3ULL +, 0x748f82ee5defb2fcULL +, 0x78a5636f43172f60ULL +, 0x84c87814a1f0ab72ULL +, 0x8cc702081a6439ecULL +, 0x90befffa23631e28ULL +, 0xa4506cebde82bde9ULL +, 0xbef9a3f7b2c67915ULL +, 0xc67178f2e372532bULL +, 0xca273eceea26619cULL +, 0xd186b8c721c0c207ULL +, 0xeada7dd6cde0eb1eULL +, 0xf57d4f7fee6ed178ULL +, 0x06f067aa72176fbaULL +, 0x0a637dc5a2c898a6ULL +, 0x113f9804bef90daeULL +, 0x1b710b35131c471bULL +, 0x28db77f523047d84ULL +, 0x32caab7b40c72493ULL +, 0x3c9ebe0a15c9bebcULL +, 0x431d67c49c100d4cULL +, 0x4cc5d4becb3e42b6ULL +, 0x597f299cfc657e2aULL +, 0x5fcb6fab3ad6faecULL +, 0x6c44198c4a475817ULL +}; + +int crypto_hashblocks(unsigned char *statebytes,const unsigned char *in,long long inlen) +{ + uint64 w[96]; + uint64 state[8]; + uint64 r[88]; + uint64 x,y; + int i; + + for (i = 0;i < 8;++i) + state[i] = r[7-i] = load_bigendian(statebytes+8*i); + + while (inlen >= 128) { + for (i = 0;i < 16;++i) + w[i] = load_bigendian(in+8*i); + + for (i = 0;i < 80;++i) { + y = w[i]; + + x = r[i]; + x += y; + x += round[i]; + x += Sigma1(r[i+3]); + x += Ch(r[i+3],r[i+2],r[i+1]); + r[i+4] += x; + x += Sigma0(r[i+7]); + x += Maj(r[i+7],r[i+6],r[i+5]); + r[i+8] = x; + + /* not used for i >= 64: */ + y += w[i+9]; + y += sigma1(w[i+14]); + y += sigma0(w[i+1]); + w[i+16] = y; + } + + for (i = 0;i < 8;++i) { + uint64 x = r[87-i]+state[i]; + state[i] = r[7-i] = x; + } + + in += 128; + inlen -= 128; + } + + for (i = 0;i < 8;++i) + store_bigendian(statebytes+8*i,state[i]); + + return inlen; +} diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/compact4/implementors b/lib-25519/lib25519/crypto_hashblocks/sha512/compact4/implementors new file mode 120000 index 0000000000..3476030106 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/compact4/implementors @@ -0,0 +1 @@ +../m3/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/inplace/api.h b/lib-25519/lib25519/crypto_hashblocks/sha512/inplace/api.h new file mode 120000 index 0000000000..1dfe625ff0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/inplace/api.h @@ -0,0 +1 @@ +../m3/api.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/inplace/blocks.c b/lib-25519/lib25519/crypto_hashblocks/sha512/inplace/blocks.c new file mode 100644 index 0000000000..9ade99094c --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/inplace/blocks.c @@ -0,0 +1,256 @@ +#include "crypto_hashblocks.h" + +typedef unsigned long long uint64; + +static uint64 load_bigendian(const unsigned char *x) +{ + return + (uint64) (x[7]) \ + | (((uint64) (x[6])) << 8) \ + | (((uint64) (x[5])) << 16) \ + | (((uint64) (x[4])) << 24) \ + | (((uint64) (x[3])) << 32) \ + | (((uint64) (x[2])) << 40) \ + | (((uint64) (x[1])) << 48) \ + | (((uint64) (x[0])) << 56) + ; +} + +static void store_bigendian(unsigned char *x,uint64 u) +{ + x[7] = u; u >>= 8; + x[6] = u; u >>= 8; + x[5] = u; u >>= 8; + x[4] = u; u >>= 8; + x[3] = u; u >>= 8; + x[2] = u; u >>= 8; + x[1] = u; u >>= 8; + x[0] = u; +} + +#define SHR(x,c) ((x) >> (c)) +#define ROTR(x,c) (((x) >> (c)) | ((x) << (64 - (c)))) + +#define Ch(x,y,z) ((x & y) ^ (~x & z)) +#define Maj(x,y,z) ((x & y) ^ (x & z) ^ (y & z)) +#define Sigma0(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39)) +#define Sigma1(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41)) +#define sigma0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x,7)) +#define sigma1(x) (ROTR(x,19) ^ ROTR(x,61) ^ SHR(x,6)) + +#define M(w0,w14,w9,w1) w0 = sigma1(w14) + w9 + sigma0(w1) + w0; + +#define EXPAND \ + M(w0 ,w14,w9 ,w1 ) \ + M(w1 ,w15,w10,w2 ) \ + M(w2 ,w0 ,w11,w3 ) \ + M(w3 ,w1 ,w12,w4 ) \ + M(w4 ,w2 ,w13,w5 ) \ + M(w5 ,w3 ,w14,w6 ) \ + M(w6 ,w4 ,w15,w7 ) \ + M(w7 ,w5 ,w0 ,w8 ) \ + M(w8 ,w6 ,w1 ,w9 ) \ + M(w9 ,w7 ,w2 ,w10) \ + M(w10,w8 ,w3 ,w11) \ + M(w11,w9 ,w4 ,w12) \ + M(w12,w10,w5 ,w13) \ + M(w13,w11,w6 ,w14) \ + M(w14,w12,w7 ,w15) \ + M(w15,w13,w8 ,w0 ) + +#define F(r0,r1,r2,r3,r4,r5,r6,r7,w,k) \ + r7 += Sigma1(r4) + Ch(r4,r5,r6) + k + w; \ + r3 += r7; \ + r7 += Sigma0(r0) + Maj(r0,r1,r2); + +#define G(r0,r1,r2,r3,r4,r5,r6,r7,i) \ + F(r0,r1,r2,r3,r4,r5,r6,r7,w0 ,round[i + 0]) \ + F(r7,r0,r1,r2,r3,r4,r5,r6,w1 ,round[i + 1]) \ + F(r6,r7,r0,r1,r2,r3,r4,r5,w2 ,round[i + 2]) \ + F(r5,r6,r7,r0,r1,r2,r3,r4,w3 ,round[i + 3]) \ + F(r4,r5,r6,r7,r0,r1,r2,r3,w4 ,round[i + 4]) \ + F(r3,r4,r5,r6,r7,r0,r1,r2,w5 ,round[i + 5]) \ + F(r2,r3,r4,r5,r6,r7,r0,r1,w6 ,round[i + 6]) \ + F(r1,r2,r3,r4,r5,r6,r7,r0,w7 ,round[i + 7]) \ + F(r0,r1,r2,r3,r4,r5,r6,r7,w8 ,round[i + 8]) \ + F(r7,r0,r1,r2,r3,r4,r5,r6,w9 ,round[i + 9]) \ + F(r6,r7,r0,r1,r2,r3,r4,r5,w10,round[i + 10]) \ + F(r5,r6,r7,r0,r1,r2,r3,r4,w11,round[i + 11]) \ + F(r4,r5,r6,r7,r0,r1,r2,r3,w12,round[i + 12]) \ + F(r3,r4,r5,r6,r7,r0,r1,r2,w13,round[i + 13]) \ + F(r2,r3,r4,r5,r6,r7,r0,r1,w14,round[i + 14]) \ + F(r1,r2,r3,r4,r5,r6,r7,r0,w15,round[i + 15]) + +static const uint64 round[80] = { + 0x428a2f98d728ae22ULL +, 0x7137449123ef65cdULL +, 0xb5c0fbcfec4d3b2fULL +, 0xe9b5dba58189dbbcULL +, 0x3956c25bf348b538ULL +, 0x59f111f1b605d019ULL +, 0x923f82a4af194f9bULL +, 0xab1c5ed5da6d8118ULL +, 0xd807aa98a3030242ULL +, 0x12835b0145706fbeULL +, 0x243185be4ee4b28cULL +, 0x550c7dc3d5ffb4e2ULL +, 0x72be5d74f27b896fULL +, 0x80deb1fe3b1696b1ULL +, 0x9bdc06a725c71235ULL +, 0xc19bf174cf692694ULL +, 0xe49b69c19ef14ad2ULL +, 0xefbe4786384f25e3ULL +, 0x0fc19dc68b8cd5b5ULL +, 0x240ca1cc77ac9c65ULL +, 0x2de92c6f592b0275ULL +, 0x4a7484aa6ea6e483ULL +, 0x5cb0a9dcbd41fbd4ULL +, 0x76f988da831153b5ULL +, 0x983e5152ee66dfabULL +, 0xa831c66d2db43210ULL +, 0xb00327c898fb213fULL +, 0xbf597fc7beef0ee4ULL +, 0xc6e00bf33da88fc2ULL +, 0xd5a79147930aa725ULL +, 0x06ca6351e003826fULL +, 0x142929670a0e6e70ULL +, 0x27b70a8546d22ffcULL +, 0x2e1b21385c26c926ULL +, 0x4d2c6dfc5ac42aedULL +, 0x53380d139d95b3dfULL +, 0x650a73548baf63deULL +, 0x766a0abb3c77b2a8ULL +, 0x81c2c92e47edaee6ULL +, 0x92722c851482353bULL +, 0xa2bfe8a14cf10364ULL +, 0xa81a664bbc423001ULL +, 0xc24b8b70d0f89791ULL +, 0xc76c51a30654be30ULL +, 0xd192e819d6ef5218ULL +, 0xd69906245565a910ULL +, 0xf40e35855771202aULL +, 0x106aa07032bbd1b8ULL +, 0x19a4c116b8d2d0c8ULL +, 0x1e376c085141ab53ULL +, 0x2748774cdf8eeb99ULL +, 0x34b0bcb5e19b48a8ULL +, 0x391c0cb3c5c95a63ULL +, 0x4ed8aa4ae3418acbULL +, 0x5b9cca4f7763e373ULL +, 0x682e6ff3d6b2b8a3ULL +, 0x748f82ee5defb2fcULL +, 0x78a5636f43172f60ULL +, 0x84c87814a1f0ab72ULL +, 0x8cc702081a6439ecULL +, 0x90befffa23631e28ULL +, 0xa4506cebde82bde9ULL +, 0xbef9a3f7b2c67915ULL +, 0xc67178f2e372532bULL +, 0xca273eceea26619cULL +, 0xd186b8c721c0c207ULL +, 0xeada7dd6cde0eb1eULL +, 0xf57d4f7fee6ed178ULL +, 0x06f067aa72176fbaULL +, 0x0a637dc5a2c898a6ULL +, 0x113f9804bef90daeULL +, 0x1b710b35131c471bULL +, 0x28db77f523047d84ULL +, 0x32caab7b40c72493ULL +, 0x3c9ebe0a15c9bebcULL +, 0x431d67c49c100d4cULL +, 0x4cc5d4becb3e42b6ULL +, 0x597f299cfc657e2aULL +, 0x5fcb6fab3ad6faecULL +, 0x6c44198c4a475817ULL +}; + +int crypto_hashblocks(unsigned char *statebytes,const unsigned char *in,long long inlen) +{ + uint64 state[8]; + uint64 r0; + uint64 r1; + uint64 r2; + uint64 r3; + uint64 r4; + uint64 r5; + uint64 r6; + uint64 r7; + + r0 = load_bigendian(statebytes + 0); state[0] = r0; + r1 = load_bigendian(statebytes + 8); state[1] = r1; + r2 = load_bigendian(statebytes + 16); state[2] = r2; + r3 = load_bigendian(statebytes + 24); state[3] = r3; + r4 = load_bigendian(statebytes + 32); state[4] = r4; + r5 = load_bigendian(statebytes + 40); state[5] = r5; + r6 = load_bigendian(statebytes + 48); state[6] = r6; + r7 = load_bigendian(statebytes + 56); state[7] = r7; + + while (inlen >= 128) { + uint64 w0 = load_bigendian(in + 0); + uint64 w1 = load_bigendian(in + 8); + uint64 w2 = load_bigendian(in + 16); + uint64 w3 = load_bigendian(in + 24); + uint64 w4 = load_bigendian(in + 32); + uint64 w5 = load_bigendian(in + 40); + uint64 w6 = load_bigendian(in + 48); + uint64 w7 = load_bigendian(in + 56); + uint64 w8 = load_bigendian(in + 64); + uint64 w9 = load_bigendian(in + 72); + uint64 w10 = load_bigendian(in + 80); + uint64 w11 = load_bigendian(in + 88); + uint64 w12 = load_bigendian(in + 96); + uint64 w13 = load_bigendian(in + 104); + uint64 w14 = load_bigendian(in + 112); + uint64 w15 = load_bigendian(in + 120); + + G(r0,r1,r2,r3,r4,r5,r6,r7,0) + + EXPAND + + G(r0,r1,r2,r3,r4,r5,r6,r7,16) + + EXPAND + + G(r0,r1,r2,r3,r4,r5,r6,r7,32) + + EXPAND + + G(r0,r1,r2,r3,r4,r5,r6,r7,48) + + EXPAND + + G(r0,r1,r2,r3,r4,r5,r6,r7,64) + + r0 += state[0]; + r1 += state[1]; + r2 += state[2]; + r3 += state[3]; + r4 += state[4]; + r5 += state[5]; + r6 += state[6]; + r7 += state[7]; + + state[0] = r0; + state[1] = r1; + state[2] = r2; + state[3] = r3; + state[4] = r4; + state[5] = r5; + state[6] = r6; + state[7] = r7; + + in += 128; + inlen -= 128; + } + + store_bigendian(statebytes + 0,state[0]); + store_bigendian(statebytes + 8,state[1]); + store_bigendian(statebytes + 16,state[2]); + store_bigendian(statebytes + 24,state[3]); + store_bigendian(statebytes + 32,state[4]); + store_bigendian(statebytes + 40,state[5]); + store_bigendian(statebytes + 48,state[6]); + store_bigendian(statebytes + 56,state[7]); + + return inlen; +} diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/inplace/implementors b/lib-25519/lib25519/crypto_hashblocks/sha512/inplace/implementors new file mode 120000 index 0000000000..3476030106 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/inplace/implementors @@ -0,0 +1 @@ +../m3/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m3/Makefile b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/Makefile new file mode 100644 index 0000000000..62838f30c0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/Makefile @@ -0,0 +1,10 @@ +all: inner.inc inner32.S + +inner32.S: inner32.q copy-collector align inner32.S.do + sh inner32.S.do > inner32.S + +inner32.q: inner.q inner32.top inner32.desc inner32.q.do + sh inner32.q.do > inner32.q + +inner.inc: inner.q inner.top inner.desc inner.c.do + sh inner.c.do > inner.inc diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m3/align b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/align new file mode 100755 index 0000000000..0e9835244c --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/align @@ -0,0 +1,76 @@ +#!/bin/sh + +cat > align-tmp.s + +arm-none-eabi-gcc -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -Os -ffunction-sections -fdata-sections -c align-tmp.s +arm-none-eabi-objdump -D align-tmp.o \ +| python -c ' +import sys +program = [] +addr = 0 +with open("align-tmp.s") as f: + for dumpline in sys.stdin: + if dumpline[0] == " ": + while True: + fline = f.readline() + if not fline: break + fline = fline.strip() + if len(fline.split()) == 0 or fline[0] == "#" or fline[0] == "." or fline.find(":") >= 0: + program += [[-1,fline]] + else: + x = dumpline.strip().split("\t") + addr = int(x[0].split(":")[0],16) + dumpop = x[2] + if dumpop.endswith(".w"): dumpop = dumpop[:-2] + fop = fline.split()[0] + if fop.endswith(".w"): fop = fop[:-2] + if fop == "push": fop = "stmdb" + if fop == "pop": fop = "ldmia" + assert dumpop == fop or (dumpop == "movs" and fop == "ldr") or (dumpop == "lsrs" and fop == "movs") or (dumpop == "bcs" and fop == "bhs") or (dumpop == "mov" and fop == "ldr") + program += [[addr,fline]] + break + +for i in range(1,len(program)): + if program[i][0] < 0: continue + for j in reversed(range(i)): + if program[j][0] != -1: + program[j][0] = program[i][0]-program[j][0] + break + +while True: + addr = 0 + happy = True + addresses = [] + for i in range(len(program)): + addresses += [addr] + size = program[i][0] + if size < 0: continue + wantalign = False + if program[i][1].startswith("ldr "): wantalign = True + if program[i][1].startswith("str "): wantalign = True + if program[i][1].startswith("ldrd "): wantalign = True + if program[i][1].startswith("strd "): wantalign = True + if program[i][1].startswith("ldm "): wantalign = True + if program[i][1].startswith("stm "): wantalign = True + if program[i][1].startswith("push "): wantalign = True + if program[i][1].startswith("pop "): wantalign = True + if program[i][1].startswith("vpush "): wantalign = True + if program[i][1].startswith("vpop "): wantalign = True + if wantalign and size == 4 and addr%4: + happy = False + for j in reversed(range(i)): + if program[j][0] == 2 and addresses[j]%4 == 0: + x = program[j][1].split() + x[0] += ".w" + program[j] = [4," ".join(x)] + break + break + addr += size + if happy: break + +for size,line in program: + print(line) +' + +rm align-tmp.s +rm align-tmp.o diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m3/api.h b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/api.h new file mode 100644 index 0000000000..ac45d1030d --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/api.h @@ -0,0 +1,2 @@ +#define CRYPTO_STATEBYTES 64 +#define CRYPTO_BLOCKBYTES 128 diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m3/architectures b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/architectures new file mode 100644 index 0000000000..3fecf3a0a5 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/architectures @@ -0,0 +1,2 @@ +arm +armeabi diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m3/constants.c b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/constants.c new file mode 100644 index 0000000000..8bd0e8f2f4 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/constants.c @@ -0,0 +1,98 @@ +#include "crypto_hashblocks.h" +#include "inner.h" + +static const crypto_uint64 constants[80] = { + 0x428a2f98d728ae22ULL +, 0x7137449123ef65cdULL +, 0xb5c0fbcfec4d3b2fULL +, 0xe9b5dba58189dbbcULL +, 0x3956c25bf348b538ULL +, 0x59f111f1b605d019ULL +, 0x923f82a4af194f9bULL +, 0xab1c5ed5da6d8118ULL +, 0xd807aa98a3030242ULL +, 0x12835b0145706fbeULL +, 0x243185be4ee4b28cULL +, 0x550c7dc3d5ffb4e2ULL +, 0x72be5d74f27b896fULL +, 0x80deb1fe3b1696b1ULL +, 0x9bdc06a725c71235ULL +, 0xc19bf174cf692694ULL +, 0xe49b69c19ef14ad2ULL +, 0xefbe4786384f25e3ULL +, 0x0fc19dc68b8cd5b5ULL +, 0x240ca1cc77ac9c65ULL +, 0x2de92c6f592b0275ULL +, 0x4a7484aa6ea6e483ULL +, 0x5cb0a9dcbd41fbd4ULL +, 0x76f988da831153b5ULL +, 0x983e5152ee66dfabULL +, 0xa831c66d2db43210ULL +, 0xb00327c898fb213fULL +, 0xbf597fc7beef0ee4ULL +, 0xc6e00bf33da88fc2ULL +, 0xd5a79147930aa725ULL +, 0x06ca6351e003826fULL +, 0x142929670a0e6e70ULL +, 0x27b70a8546d22ffcULL +, 0x2e1b21385c26c926ULL +, 0x4d2c6dfc5ac42aedULL +, 0x53380d139d95b3dfULL +, 0x650a73548baf63deULL +, 0x766a0abb3c77b2a8ULL +, 0x81c2c92e47edaee6ULL +, 0x92722c851482353bULL +, 0xa2bfe8a14cf10364ULL +, 0xa81a664bbc423001ULL +, 0xc24b8b70d0f89791ULL +, 0xc76c51a30654be30ULL +, 0xd192e819d6ef5218ULL +, 0xd69906245565a910ULL +, 0xf40e35855771202aULL +, 0x106aa07032bbd1b8ULL +, 0x19a4c116b8d2d0c8ULL +, 0x1e376c085141ab53ULL +, 0x2748774cdf8eeb99ULL +, 0x34b0bcb5e19b48a8ULL +, 0x391c0cb3c5c95a63ULL +, 0x4ed8aa4ae3418acbULL +, 0x5b9cca4f7763e373ULL +, 0x682e6ff3d6b2b8a3ULL +, 0x748f82ee5defb2fcULL +, 0x78a5636f43172f60ULL +, 0x84c87814a1f0ab72ULL +, 0x8cc702081a6439ecULL +, 0x90befffa23631e28ULL +, 0xa4506cebde82bde9ULL +, 0xbef9a3f7b2c67915ULL +, 0xc67178f2e372532bULL +, 0xca273eceea26619cULL +, 0xd186b8c721c0c207ULL +, 0xeada7dd6cde0eb1eULL +, 0xf57d4f7fee6ed178ULL +, 0x06f067aa72176fbaULL +, 0x0a637dc5a2c898a6ULL +, 0x113f9804bef90daeULL +, 0x1b710b35131c471bULL +, 0x28db77f523047d84ULL +, 0x32caab7b40c72493ULL +, 0x3c9ebe0a15c9bebcULL +, 0x431d67c49c100d4cULL +, 0x4cc5d4becb3e42b6ULL +, 0x597f299cfc657e2aULL +, 0x5fcb6fab3ad6faecULL +, 0x6c44198c4a475817ULL +}; + +#define CUTOFF 32768 /* must be multiple of 128 */ + +int crypto_hashblocks(unsigned char *statebytes,const unsigned char *in,long long inlen) +{ + while (inlen >= CUTOFF) { + inner(statebytes,in,CUTOFF,constants); /* returns 0 */ + in += CUTOFF; + inlen -= CUTOFF; + } + if (inlen < 128) return inlen; + return inner(statebytes,in,inlen,constants); +} diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m3/copy-collector b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/copy-collector new file mode 100755 index 0000000000..0bdc8e573a --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/copy-collector @@ -0,0 +1,94 @@ +#!/usr/bin/env python3 + +import sys + +buffer = [] # vmov operations not yet printed + +def buffer_printandclear(): + global buffer + if len(buffer) == 0: return + print('# copy-collector output starts') + while len(buffer) > 0: + if len(buffer) >= 2: + x = buffer[0] + y = buffer[1] + if len(x) == 2 and len(y) == 2 and x[0] == 'vmov' and y[0] == 'vmov': + x = x[1].split(',') + y = y[1].split(',') + if x[0][0] == 's' and y[0][0] == 's': + s0 = int(x[0][1:]) + s1 = int(y[0][1:]) + if s0//2==s1//2: + if s1 == s0+1: + print('vmov d%d,%s,%s' % (s0//2,x[1],y[1])) + buffer = buffer[2:] + continue + if s0 == s1+1: + print('vmov d%d,%s,%s' % (s0//2,y[1],x[1])) + buffer = buffer[2:] + continue + if x[1][0] == 's' and y[1][0] == 's': + s0 = int(x[1][1:]) + s1 = int(y[1][1:]) + if s0//2==s1//2: + if s1 == s0+1: + print('vmov %s,%s,d%d' % (x[0],y[0],s0//2)) + buffer = buffer[2:] + continue + if s0 == s1+1: + print('vmov %s,%s,d%d' % (y[0],x[0],s0//2)) + buffer = buffer[2:] + continue + if len(x) == 2 and len(y) == 2 and x[0] == 'str' and y[0] == 'str': + x = x[1].split(',') + y = y[1].split(',') + # strd is not safe for unaligned addresses + # but stack is guaranteed to be aligned + if x[1] == '[sp' and y[1] == '[sp': + sp0 = int(x[2][1:-1]) + sp1 = int(y[2][1:-1]) + if x[2] == '#%d]'%sp0 and y[2] == '#%d]'%sp1: + if sp1 == sp0+4: + print('strd %s,%s,[sp,#%d]' % (x[0],y[0],sp0)) + buffer = buffer[2:] + continue + + firstloads = 0 + while firstloads < len(buffer) and buffer[firstloads][0] == 'ldr': + firstloads += 1 + if firstloads >= 2: + x = [buffer[i][1].split(',') for i in range(firstloads)] + if all(xi[1] == '[sp' for xi in x): + stackpos = int(x[0][2][1:-1]) + if all(x[i][2] == '#%d]'%(stackpos+4*i) for i in range(firstloads)): + if firstloads == 2: + print('ldrd %s,[sp,#%d]' % (','.join(xi[0] for xi in x),stackpos)) + buffer = buffer[firstloads:] + continue + if firstloads >= 2 and stackpos == 0: + print('ldm sp,{%s}' % (','.join(xi[0] for xi in x),stackpos)) + buffer = buffer[firstloads:] + continue + for i in range(firstloads): + print(' '.join(buffer[i])) + buffer = buffer[firstloads:] + continue + print(' '.join(buffer[0])) + buffer = buffer[1:] + print('# copy-collector output ends') + +for line in sys.stdin: + line = line.strip() + x = line.split() + if len(x) == 0: + print(line) + elif x[0] == '#': + print(line) + elif len(x) == 2 and x[0] in ['vmov','str','ldr']: + print('# copy-collector input: '+line) + buffer += [x] + else: + buffer_printandclear() + print(line) + +buffer_printandclear() diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m3/implementors b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/implementors new file mode 100644 index 0000000000..f6fb3c73e9 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/implementors @@ -0,0 +1 @@ +Daniel J. Bernstein diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner.c.do b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner.c.do new file mode 100644 index 0000000000..f5699abba8 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner.c.do @@ -0,0 +1,12 @@ +#!/bin/sh + +cat inner.top +( cat inner.desc + cat inner.q | sed 's/#.*//' | sed 's/:/#/g' +) \ +| qhasm-ops \ +| qhasm-regs \ +| qhasm-as \ +| grep -v '^# qhasm: livefloat80' \ +| grep . \ +| sed 's_^#_\/\/_' diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner.desc b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner.desc new file mode 100644 index 0000000000..c912032f4f --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner.desc @@ -0,0 +1,101 @@ +:name:ptr:p0:p1:p2:p3:p4:p5: +ptr r:var/r=ptr: +:name:int32:i0:i1:i2:i3:i4:i5:i6:i7:i8:i9: +int32 r:var/r=int32: +:name:int64:u0:u1:u2:u3:u4:u5:u6:u7:u8:u9:u10:u11:u12:u13:u14:u15:u16: +int64 r:var/r=int64: +:name:stack64:m0:m1:m2:m3:m4:m5:m6:m7:m8:m9:m10:m11:m12:m13:m14:m15:m16:m17:m18: +stack64 r:var/r=stack64: +:name:stackptr:n0:n1:n2: +stackptr r:var/r=stackptr: +:name:stack32:o0:o1:o2: +stack32 r:var/r=stack32: +:name:spill64:d0:d1:d2:d3:d4:d5:d6:d7:d8:d9:d10:d11:d12:d13:d14:d15:d16: +spill64 r:var/r=spill64: + +:flag:=: +:flag:unsigned>=: + +pushenter f:enter/f:>input_0=ptr#1:>input_1=ptr#2:>input_2=int32#3:>input_3=ptr#4:asm/int #f(unsigned char *p0,unsigned char *p1,unsigned int i2,unsigned char *p3):asm/{:asm/int equal;:asm/int unsignedge;:asm/unsigned char *p2;:asm/unsigned int i0,i1,i3,i4,i5,i6,i7,i8,i9;:asm/uint64 u0,u1,u2,u3,u4,u5,u6,u7;:asm/uint64 m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18;:asm/unsigned char *n0,*n1,*n2;:asm/unsigned int o0,o1,o2;:asm/uint64 d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16;: + +popreturn r:=:#f:jump/f:=:asm/if (unsignedge) goto label_#f;: + +r = s:>r=ptr:r = r=ptr:#n:asm/r=ptr:#n:asm/r=ptr:r = r=stackptr:r = r=int32:r = r=int32:#n:asm/>r = #n;: +r = n simple:>r=int32:#n:asm/>r = #n;: +r += n:r=int32:#n:asm/r=int32:r = r=int32:r = r=stack32:r = r=int32:#n:asm/r=int32:#n:>?=:asm/equal = eq(r=int32:#n:>?=:>?unsigned>=:asm/equal = eq(r=int64:r = r=int64:r = r=stack64:r = r=int64:r = r=spill64:r = r=int64:r = load64(r=int64:s=int32:asm/>r = load64(r=int64:r = load64(r=int64:r = flip(load64(r=int64:s=int32:asm/>r = flip(load64(r=int64:r = flip(load64(r=int64:r = reverse(r=int64:r = reverse(flip(r=int64:r=int64:r=int64:r=int64:r=int64:r=int64:> (c)) +#define ROTR(x,c) (((x) >> (c)) | ((x) << (64 - (c)))) +#define sigma0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x,7)) +#define sigma1(x) (ROTR(x,19) ^ ROTR(x,61) ^ SHR(x,6)) +# +#define flip(x) ROTR(x,32) + +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) ((x & (y ^ z)) ^ (y & z)) +#define Sigma0(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39)) +#define Sigma1(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41)) + +#define reverse(x) __builtin_bswap64(x) +#define load64(x) *(uint64 *) (x) +#define store64(x,y) *(uint64 *) (x) = y +#define eq(x,y) (x == y) +#define ge(x,y) (x >= y) + +// qhasm: ptr input_0 +// qhasm: ptr input_1 +// qhasm: int32 input_2 +// qhasm: ptr input_3 +// qhasm: spill64 r0_spill +// qhasm: spill64 r1_spill +// qhasm: spill64 r2_spill +// qhasm: spill64 r3_spill +// qhasm: spill64 r4_spill +// qhasm: spill64 r5_spill +// qhasm: spill64 r6_spill +// qhasm: spill64 r7_spill +// qhasm: spill64 w0_spill +// qhasm: spill64 w1_spill +// qhasm: spill64 w2_spill +// qhasm: spill64 w3_spill +// qhasm: spill64 w4_spill +// qhasm: spill64 w5_spill +// qhasm: spill64 w6_spill +// qhasm: spill64 w7_spill +// qhasm: stack64 w8_stack +// qhasm: stack64 state0 +// qhasm: stack64 state1 +// qhasm: stack64 state2 +// qhasm: stack64 state3 +// qhasm: stack64 state4 +// qhasm: stack64 state5 +// qhasm: stack64 state6 +// qhasm: stack64 state7 +// qhasm: int64 r0 +// qhasm: int64 r1 +// qhasm: int64 r2 +// qhasm: int64 r3 +// qhasm: int64 r4 +// qhasm: int64 r5 +// qhasm: int64 r6 +// qhasm: int64 r7 +// qhasm: int64 w0 +// qhasm: int64 w1 +// qhasm: int64 w2 +// qhasm: int64 w3 +// qhasm: int64 w4 +// qhasm: int64 w5 +// qhasm: int64 w6 +// qhasm: int64 w7 +// qhasm: stack64 w0_next +// qhasm: stack64 w1_next +// qhasm: stack64 w2_next +// qhasm: stack64 w3_next +// qhasm: stack64 w4_next +// qhasm: stack64 w5_next +// qhasm: stack64 w6_next +// qhasm: stack64 w7_next +// qhasm: int64 w8 +// qhasm: int64 w9 +// qhasm: int64 w10 +// qhasm: int64 w11 +// qhasm: int64 w12 +// qhasm: int64 w13 +// qhasm: int64 w14 +// qhasm: int64 w15 +// qhasm: int32 i +// qhasm: ptr statebytes +// qhasm: ptr in +// qhasm: int32 inlen +// qhasm: ptr constants +// qhasm: stackptr in_stack +// qhasm: stackptr statebytes_stack +// qhasm: stack32 inlen_stack +// qhasm: stack32 i_stack +// qhasm: pushenter inner +int inner(unsigned char *p0,unsigned char *p1,unsigned int i2,unsigned char *p3) +{ +int equal; +int unsignedge; +unsigned char *p2; +unsigned int i0,i1,i3,i4,i5,i6,i7,i8,i9; +uint64 u0,u1,u2,u3,u4,u5,u6,u7; +uint64 m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18; +unsigned char *n0,*n1,*n2; +unsigned int o0,o1,o2; +uint64 d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16; +// qhasm: statebytes_stack = input_0 +// asm 1: >statebytes_stack=stackptr#1 = statebytes_stack=n0 = in_stack=stackptr#2 = in_stack=n1 = inlen=int32#1 = inlen=i0 = inlen_stack=stack32#1 = inlen_stack=o0 = r0=int64#1 = flip(load64(r0=u0 = flip(load64(r1=int64#2 = flip(load64(r1=u1 = flip(load64(r2=int64#3 = flip(load64(r2=u2 = flip(load64(r3=int64#4 = flip(load64(r3=u3 = flip(load64(r0=int64#1 = reverse(flip(r0=u0 = reverse(flip(r1=int64#2 = reverse(flip(r1=u1 = reverse(flip(r2=int64#3 = reverse(flip(r2=u2 = reverse(flip(r3=int64#4 = reverse(flip(r3=u3 = reverse(flip(state0=stack64#1 = state0=m0 = state1=stack64#2 = state1=m1 = state2=stack64#3 = state2=m2 = state3=stack64#4 = state3=m3 = r0_spill=spill64#1 = r0_spill=d0 = r1_spill=spill64#2 = r1_spill=d1 = r2_spill=spill64#3 = r2_spill=d2 = r3_spill=spill64#4 = r3_spill=d3 = r4=int64#1 = flip(load64(r4=u0 = flip(load64(r5=int64#2 = flip(load64(r5=u1 = flip(load64(r6=int64#3 = flip(load64(r6=u2 = flip(load64(r7=int64#4 = flip(load64(r7=u3 = flip(load64(r4=int64#1 = reverse(flip(r4=u0 = reverse(flip(r5=int64#2 = reverse(flip(r5=u1 = reverse(flip(r6=int64#3 = reverse(flip(r6=u2 = reverse(flip(r7=int64#4 = reverse(flip(r7=u3 = reverse(flip(state4=stack64#5 = state4=m4 = state5=stack64#6 = state5=m5 = state6=stack64#7 = state6=m6 = state7=stack64#8 = state7=m7 = r4_spill=spill64#5 = r4_spill=d4 = r5_spill=spill64#6 = r5_spill=d5 = r6_spill=spill64#7 = r6_spill=d6 = r7_spill=spill64#8 = r7_spill=d7 = constants=ptr#1 = constants=p0 = in=ptr#2 = in=p1 = w0=int64#1 = flip(load64(w0=u0 = flip(load64(w1=int64#2 = flip(load64(w1=u1 = flip(load64(w2=int64#3 = flip(load64(w2=u2 = flip(load64(w3=int64#4 = flip(load64(w3=u3 = flip(load64(w0=int64#1 = reverse(flip(w0=u0 = reverse(flip(w1=int64#2 = reverse(flip(w1=u1 = reverse(flip(w2=int64#3 = reverse(flip(w2=u2 = reverse(flip(w3=int64#4 = reverse(flip(w3=u3 = reverse(flip(w0_spill=spill64#9 = w0_spill=d8 = w1_spill=spill64#10 = w1_spill=d9 = w2_spill=spill64#11 = w2_spill=d10 = w3_spill=spill64#12 = w3_spill=d11 = w4=int64#1 = flip(load64(w4=u0 = flip(load64(w5=int64#2 = flip(load64(w5=u1 = flip(load64(w6=int64#3 = flip(load64(w6=u2 = flip(load64(w7=int64#4 = flip(load64(w7=u3 = flip(load64(w4=int64#1 = reverse(flip(w4=u0 = reverse(flip(w5=int64#2 = reverse(flip(w5=u1 = reverse(flip(w6=int64#3 = reverse(flip(w6=u2 = reverse(flip(w7=int64#4 = reverse(flip(w7=u3 = reverse(flip(w4_spill=spill64#13 = w4_spill=d12 = w5_spill=spill64#14 = w5_spill=d13 = w6_spill=spill64#15 = w6_spill=d14 = w7_spill=spill64#16 = w7_spill=d15 = w8=int64#1 = flip(load64(w8=u0 = flip(load64(w9=int64#2 = flip(load64(w9=u1 = flip(load64(w10=int64#3 = flip(load64(w10=u2 = flip(load64(w11=int64#4 = flip(load64(w11=u3 = flip(load64(w8=int64#1 = reverse(flip(w8=u0 = reverse(flip(w9=int64#2 = reverse(flip(w9=u1 = reverse(flip(w10=int64#3 = reverse(flip(w10=u2 = reverse(flip(w11=int64#4 = reverse(flip(w11=u3 = reverse(flip(w0_next=stack64#9 = w0_next=m8 = w1_next=stack64#10 = w1_next=m9 = w2_next=stack64#11 = w2_next=m10 = w3_next=stack64#12 = w3_next=m11 = w12=int64#1 = flip(load64(w12=u0 = flip(load64(w13=int64#2 = flip(load64(w13=u1 = flip(load64(w14=int64#3 = flip(load64(w14=u2 = flip(load64(w15=int64#4 = flip(load64(w15=u3 = flip(load64(w12=int64#1 = reverse(flip(w12=u0 = reverse(flip(w13=int64#2 = reverse(flip(w13=u1 = reverse(flip(w14=int64#3 = reverse(flip(w14=u2 = reverse(flip(w15=int64#4 = reverse(flip(w15=u3 = reverse(flip(w4_next=stack64#13 = w4_next=m12 = w5_next=stack64#14 = w5_next=m13 = w6_next=stack64#15 = w6_next=m14 = w7_next=stack64#16 = w7_next=m15 = in_stack=stackptr#2 = in_stack=n1 = i=int32#1 = 80; +// asm 2: >i=i0 = 80; +i0 = 80; +// qhasm: i_stack = i +// asm 1: >i_stack=stack32#2 = i_stack=o1 = r3=int64#1 = r3=u0 = r4=int64#2 = r4=u1 = r5=int64#3 = r5=u2 = r6=int64#4 = r6=u3 = r7=int64#5 = r7=u4 = w0=int64#6 = w0=u5 = r3_spill=spill64#4 = r3_spill=d3 = r0=int64#2 = r0=u1 = r1=int64#3 = r1=u2 = r2=int64#4 = r2=u3 = r7_spill=spill64#8 = r7_spill=d7 = r4=int64#2 = r4=u1 = r5=int64#3 = r5=u2 = r6=int64#5 = r6=u4 = w1=int64#6 = w1=u5 = r2_spill=spill64#3 = r2_spill=d2 = r7=int64#1 = r7=u0 = r0=int64#2 = r0=u1 = r1=int64#3 = r1=u2 = r6_spill=spill64#7 = r6_spill=d6 = r3=int64#1 = r3=u0 = r4=int64#2 = r4=u1 = r5=int64#5 = r5=u4 = w2=int64#6 = w2=u5 = r1_spill=spill64#2 = r1_spill=d1 = r6=int64#1 = r6=u0 = r7=int64#2 = r7=u1 = r0=int64#4 = r0=u3 = r5_spill=spill64#6 = r5_spill=d5 = r2=int64#1 = r2=u0 = r3=int64#2 = r3=u1 = r4=int64#5 = r4=u4 = w3=int64#6 = w3=u5 = r0_spill=spill64#1 = r0_spill=d0 = r5=int64#1 = r5=u0 = r6=int64#2 = r6=u1 = r7=int64#3 = r7=u2 = r4_spill=spill64#5 = r4_spill=d4 = r1=int64#1 = r1=u0 = r2=int64#2 = r2=u1 = r3=int64#5 = r3=u4 = w4=int64#6 = w4=u5 = r7_spill=spill64#8 = r7_spill=d7 = r4=int64#1 = r4=u0 = r5=int64#2 = r5=u1 = r6=int64#4 = r6=u3 = r3_spill=spill64#4 = r3_spill=d3 = r0=int64#1 = r0=u0 = r1=int64#2 = r1=u1 = r2=int64#5 = r2=u4 = w5=int64#6 = w5=u5 = r6_spill=spill64#7 = r6_spill=d6 = r3=int64#1 = r3=u0 = r4=int64#2 = r4=u1 = r5=int64#3 = r5=u2 = r2_spill=spill64#3 = r2_spill=d2 = r7=int64#1 = r7=u0 = r0=int64#2 = r0=u1 = r1=int64#5 = r1=u4 = w6=int64#6 = w6=u5 = r5_spill=spill64#6 = r5_spill=d5 = r2=int64#1 = r2=u0 = r3=int64#2 = r3=u1 = r4=int64#4 = r4=u3 = r1_spill=spill64#2 = r1_spill=d1 = r6=int64#1 = r6=u0 = r7=int64#2 = r7=u1 = r0=int64#5 = r0=u4 = w7=int64#6 = w7=u5 = r4_spill=spill64#5 = r4_spill=d4 = r1=int64#1 = r1=u0 = r2=int64#2 = r2=u1 = r3=int64#3 = r3=u2 = r0_spill=spill64#1 = r0_spill=d0 = i=int32#1 = i=i0 = i_stack=stack32#2 = i_stack=o1 = w8=int64#1 = w8=u0 = w9=int64#2 = w9=u1 = w6=int64#3 = w6=u2 = w1=int64#4 = w1=u3 = w1_spill=spill64#10 = w1_spill=d9 = w7=int64#4 = w7=u3 = w8_stack=stack64#16 = w8_stack=m15 = w10=int64#5 = w10=u4 = w2=int64#6 = w2=u5 = w2_spill=spill64#11 = w2_spill=d10 = w1_next=stack64#10 = w1_next=m9 = w11=int64#1 = w11=u0 = w3=int64#6 = w3=u5 = w3_spill=spill64#12 = w3_spill=d11 = w2_next=stack64#11 = w2_next=m10 = w12=int64#2 = w12=u1 = w4=int64#6 = w4=u5 = w4_spill=spill64#13 = w4_spill=d12 = w3_next=stack64#12 = w3_next=m11 = w13=int64#5 = w13=u4 = w5=int64#6 = w5=u5 = w5_spill=spill64#14 = w5_spill=d13 = w4_next=stack64#13 = w4_next=m12 = w14=int64#1 = w14=u0 = w6_spill=spill64#15 = w6_spill=d14 = w5_next=stack64#14 = w5_next=m13 = w15=int64#2 = w15=u1 = w7_spill=spill64#16 = w7_spill=d15 = w6_next=stack64#15 = w6_next=m14 = w0=int64#1 = w0=u0 = w8=int64#3 = w8=u2 = w0_next=stack64#9 = w0_next=m8 = w7_next=stack64#16 = w7_next=m15 = w0_spill=spill64#9 = w0_spill=d8 = w0=int64#1 = w0=u0 = w1=int64#2 = w1=u1 = w2=int64#3 = w2=u2 = w3=int64#4 = w3=u3 = w0_spill=spill64#9 = w0_spill=d8 = w1_spill=spill64#10 = w1_spill=d9 = w2_spill=spill64#11 = w2_spill=d10 = w3_spill=spill64#12 = w3_spill=d11 = w4=int64#1 = w4=u0 = w5=int64#2 = w5=u1 = w6=int64#3 = w6=u2 = w7=int64#4 = w7=u3 = w4_spill=spill64#13 = w4_spill=d12 = w5_spill=spill64#14 = w5_spill=d13 = w6_spill=spill64#15 = w6_spill=d14 = w7_spill=spill64#16 = w7_spill=d15 = r0=int64#1 = r0=u0 = r1=int64#2 = r1=u1 = r2=int64#3 = r2=u2 = r3=int64#4 = r3=u3 = state0=stack64#1 = state0=m0 = state1=stack64#2 = state1=m1 = state2=stack64#3 = state2=m2 = state3=stack64#4 = state3=m3 = r0_spill=spill64#1 = r0_spill=d0 = r1_spill=spill64#2 = r1_spill=d1 = r2_spill=spill64#3 = r2_spill=d2 = r3_spill=spill64#4 = r3_spill=d3 = r4=int64#1 = r4=u0 = r5=int64#2 = r5=u1 = r6=int64#3 = r6=u2 = r7=int64#4 = r7=u3 = state4=stack64#5 = state4=m4 = state5=stack64#6 = state5=m5 = state6=stack64#7 = state6=m6 = state7=stack64#8 = state7=m7 = r4_spill=spill64#5 = r4_spill=d4 = r5_spill=spill64#6 = r5_spill=d5 = r6_spill=spill64#7 = r6_spill=d6 = r7_spill=spill64#8 = r7_spill=d7 = inlen=int32#1 = inlen=i0 = =? inlen -= 128 +// asm 1: equal = eq(inlen_stack=stack32#1 = inlen_stack=o0 = = +if (unsignedge) goto label_mainloop; +// qhasm: endmainloop: +label_endmainloop: +// qhasm: statebytes = statebytes_stack +// asm 1: >statebytes=ptr#1 = statebytes=p0 = r0=int64#1 = r0=u0 = r1=int64#2 = r1=u1 = r2=int64#3 = r2=u2 = r3=int64#4 = r3=u3 = r0=int64#1 = reverse(flip(r0=u0 = reverse(flip(r1=int64#2 = reverse(flip(r1=u1 = reverse(flip(r2=int64#3 = reverse(flip(r2=u2 = reverse(flip(r3=int64#4 = reverse(flip(r3=u3 = reverse(flip(r4=int64#1 = r4=u0 = r5=int64#2 = r5=u1 = r6=int64#3 = r6=u2 = r7=int64#4 = r7=u3 = r4=int64#1 = reverse(flip(r4=u0 = reverse(flip(r5=int64#2 = reverse(flip(r5=u1 = reverse(flip(r6=int64#3 = reverse(flip(r6=u2 = reverse(flip(r7=int64#4 = reverse(flip(r7=u3 = reverse(flip(=? inlen -= 128 + inlen_stack = inlen + goto mainloop if unsigned>= +endmainloop: + +statebytes = statebytes_stack + +r0 = state0 +r1 = state1 +r2 = state2 +r3 = state3 + +r0 = reverse flip r0 +r1 = reverse flip r1 +r2 = reverse flip r2 +r3 = reverse flip r3 + +mem64[statebytes] = flip r0 +mem64[statebytes+8] = flip r1 +mem64[statebytes+16] = flip r2 +mem64[statebytes+24] = flip r3 + +r4 = state4 +r5 = state5 +r6 = state6 +r7 = state7 + +r4 = reverse flip r4 +r5 = reverse flip r5 +r6 = reverse flip r6 +r7 = reverse flip r7 + +mem64[statebytes+32] = flip r4 +mem64[statebytes+40] = flip r5 +mem64[statebytes+48] = flip r6 +mem64[statebytes+56] = flip r7 + +inlen += 128 +popreturn inlen diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner.top b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner.top new file mode 100644 index 0000000000..79ebdcc03f --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner.top @@ -0,0 +1,20 @@ +typedef unsigned long long uint64; + +#define SHR(x,c) ((x) >> (c)) +#define ROTR(x,c) (((x) >> (c)) | ((x) << (64 - (c)))) +#define sigma0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x,7)) +#define sigma1(x) (ROTR(x,19) ^ ROTR(x,61) ^ SHR(x,6)) +# +#define flip(x) ROTR(x,32) + +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) ((x & (y ^ z)) ^ (y & z)) +#define Sigma0(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39)) +#define Sigma1(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41)) + +#define reverse(x) __builtin_bswap64(x) +#define load64(x) *(uint64 *) (x) +#define store64(x,y) *(uint64 *) (x) = y +#define eq(x,y) (x == y) +#define ge(x,y) (x >= y) + diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner32.S b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner32.S new file mode 100644 index 0000000000..797472e5b1 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner32.S @@ -0,0 +1,6786 @@ +// linker define inner + +# qhasm: int32 input_0 + +# qhasm: int32 input_1 + +# qhasm: int32 input_2 + +# qhasm: int32 input_3 + +# qhasm: stack32 input_4 + +# qhasm: stack32 input_5 + +# qhasm: stack32 input_6 + +# qhasm: stack32 input_7 + +# qhasm: int32 caller_r4 + +# qhasm: int32 caller_r5 + +# qhasm: int32 caller_r6 + +# qhasm: int32 caller_r7 + +# qhasm: int32 caller_r8 + +# qhasm: int32 caller_r9 + +# qhasm: int32 caller_r10 + +# qhasm: int32 caller_r11 + +# qhasm: int32 caller_r12 + +# qhasm: int32 caller_r14 + +# qhasm: startcode +.text +.arch armv7 +.syntax unified + +# qhasm: int32 lotmp + +# qhasm: int32 lotmp2 + +# qhasm: int32 hitmp + +# qhasm: int32 hitmp2 + +# qhasm: int32 lou0 + +# qhasm: int32 lou1 + +# qhasm: int32 lou2 + +# qhasm: int32 lou3 + +# qhasm: int32 lou4 + +# qhasm: int32 lou5 + +# qhasm: int32 hiu0 + +# qhasm: int32 hiu1 + +# qhasm: int32 hiu2 + +# qhasm: int32 hiu3 + +# qhasm: int32 hiu4 + +# qhasm: int32 hiu5 + +# qhasm: stack32 hid0 + +# qhasm: stack32 hid1 + +# qhasm: stack32 hid2 + +# qhasm: stack32 hid3 + +# qhasm: stack32 hid4 + +# qhasm: stack32 hid5 + +# qhasm: stack32 hid6 + +# qhasm: stack32 hid7 + +# qhasm: stack32 hid8 + +# qhasm: stack32 hid9 + +# qhasm: stack32 hid10 + +# qhasm: stack32 hid11 + +# qhasm: stack32 hid12 + +# qhasm: stack32 hid13 + +# qhasm: stack32 hid14 + +# qhasm: stack32 hid15 + +# qhasm: stack32 lod0 + +# qhasm: stack32 lod1 + +# qhasm: stack32 lod2 + +# qhasm: stack32 lod3 + +# qhasm: stack32 lod4 + +# qhasm: stack32 lod5 + +# qhasm: stack32 lod6 + +# qhasm: stack32 lod7 + +# qhasm: stack32 lod8 + +# qhasm: stack32 lod9 + +# qhasm: stack32 lod10 + +# qhasm: stack32 lod11 + +# qhasm: stack32 lod12 + +# qhasm: stack32 lod13 + +# qhasm: stack32 lod14 + +# qhasm: stack32 lod15 + +# qhasm: stack32 him0 + +# qhasm: stack32 him1 + +# qhasm: stack32 him2 + +# qhasm: stack32 him3 + +# qhasm: stack32 him4 + +# qhasm: stack32 him5 + +# qhasm: stack32 him6 + +# qhasm: stack32 him7 + +# qhasm: stack32 him8 + +# qhasm: stack32 him9 + +# qhasm: stack32 him10 + +# qhasm: stack32 him11 + +# qhasm: stack32 him12 + +# qhasm: stack32 him13 + +# qhasm: stack32 him14 + +# qhasm: stack32 him15 + +# qhasm: stack32 lom0 + +# qhasm: stack32 lom1 + +# qhasm: stack32 lom2 + +# qhasm: stack32 lom3 + +# qhasm: stack32 lom4 + +# qhasm: stack32 lom5 + +# qhasm: stack32 lom6 + +# qhasm: stack32 lom7 + +# qhasm: stack32 lom8 + +# qhasm: stack32 lom9 + +# qhasm: stack32 lom10 + +# qhasm: stack32 lom11 + +# qhasm: stack32 lom12 + +# qhasm: stack32 lom13 + +# qhasm: stack32 lom14 + +# qhasm: stack32 lom15 + +# qhasm: stack32 o0 + +# qhasm: stack32 o1 + +# qhasm: stack32 o2 + +# qhasm: stack32 o3 + +# qhasm: rpushenter CRYPTO_SHARED_NAMESPACE(inner) +.p2align 2 +.global CRYPTO_SHARED_NAMESPACE(inner) +.type CRYPTO_SHARED_NAMESPACE(inner),%function +.thumb +.thumb_func +CRYPTO_SHARED_NAMESPACE(inner): +push {r4,r5,r6,r7,r8,r9,r10,r11,r14} +sub.w sp,sp,#288 + +# qhasm: o0 = input_0 +# asm 1: str o0=stack32#1 +# asm 2: str o0=[sp,#0] +# copy-collector input: str r0,[sp,#0] + +# qhasm: o1 = input_1 +# asm 1: str o1=stack32#2 +# asm 2: str o1=[sp,#4] +# copy-collector input: str r1,[sp,#4] + +# qhasm: input_1 = input_2 - 128 +# asm 1: sub >input_1=int32#2,input_1=r1,o2=stack32#3 +# asm 2: str o2=[sp,#8] +# copy-collector input: str r1,[sp,#8] + +# qhasm: hiu0 = mem32[input_0] +# asm 1: ldr >hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#5,[hiu1=r4,[lou1=int32#6,[lou1=r5,[hiu2=int32#7,[hiu2=r6,[lou2=int32#8,[lou2=r7,[hiu3=int32#9,[hiu3=r8,[lou3=int32#10,[lou3=r9,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#6,lou1=r5,hiu1=int32#5,hiu1=r4,lou2=int32#8,lou2=r7,hiu2=int32#7,hiu2=r6,lou3=int32#10,lou3=r9,hiu3=int32#9,hiu3=r8,lom0=stack32#4 +# asm 2: str lom0=[sp,#12] +# copy-collector input: str r2,[sp,#12] + +# qhasm: him0 = hiu0 +# asm 1: str him0=stack32#5 +# asm 2: str him0=[sp,#16] +# copy-collector input: str r1,[sp,#16] + +# qhasm: lom1 = lou1 +# asm 1: str lom1=stack32#6 +# asm 2: str lom1=[sp,#20] +# copy-collector input: str r5,[sp,#20] + +# qhasm: him1 = hiu1 +# asm 1: str him1=stack32#7 +# asm 2: str him1=[sp,#24] +# copy-collector input: str r4,[sp,#24] + +# qhasm: lom2 = lou2 +# asm 1: str lom2=stack32#8 +# asm 2: str lom2=[sp,#28] +# copy-collector input: str r7,[sp,#28] + +# qhasm: him2 = hiu2 +# asm 1: str him2=stack32#9 +# asm 2: str him2=[sp,#32] +# copy-collector input: str r6,[sp,#32] + +# qhasm: lom3 = lou3 +# asm 1: str lom3=stack32#10 +# asm 2: str lom3=[sp,#36] +# copy-collector input: str r9,[sp,#36] + +# qhasm: him3 = hiu3 +# asm 1: str him3=stack32#11 +# asm 2: str him3=[sp,#40] +# copy-collector input: str r8,[sp,#40] + +# qhasm: lod0 = lou0 +# asm 1: str lod0=stack32#12 +# asm 2: str lod0=[sp,#44] +# copy-collector input: str r2,[sp,#44] + +# qhasm: hid0 = hiu0 +# asm 1: str hid0=stack32#13 +# asm 2: str hid0=[sp,#48] +# copy-collector input: str r1,[sp,#48] + +# qhasm: lod1 = lou1 +# asm 1: str lod1=stack32#14 +# asm 2: str lod1=[sp,#52] +# copy-collector input: str r5,[sp,#52] + +# qhasm: hid1 = hiu1 +# asm 1: str hid1=stack32#15 +# asm 2: str hid1=[sp,#56] +# copy-collector input: str r4,[sp,#56] + +# qhasm: lod2 = lou2 +# asm 1: str lod2=stack32#16 +# asm 2: str lod2=[sp,#60] +# copy-collector input: str r7,[sp,#60] + +# qhasm: hid2 = hiu2 +# asm 1: str hid2=stack32#17 +# asm 2: str hid2=[sp,#64] +# copy-collector input: str r6,[sp,#64] + +# qhasm: lod3 = lou3 +# asm 1: str lod3=stack32#18 +# asm 2: str lod3=[sp,#68] +# copy-collector input: str r9,[sp,#68] + +# qhasm: hid3 = hiu3 +# asm 1: str hid3=stack32#19 +# asm 2: str hid3=[sp,#72] +# copy-collector input: str r8,[sp,#72] + +# qhasm: hiu0 = mem32[input_0+32] +# asm 1: ldr >hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#5,[hiu1=r4,[lou1=int32#6,[lou1=r5,[hiu2=int32#7,[hiu2=r6,[lou2=int32#8,[lou2=r7,[hiu3=int32#9,[hiu3=r8,[lou3=int32#1,[lou3=r0,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#6,lou1=r5,hiu1=int32#5,hiu1=r4,lou2=int32#8,lou2=r7,hiu2=int32#7,hiu2=r6,lou3=int32#1,lou3=r0,hiu3=int32#9,hiu3=r8,lom4=stack32#20 +# asm 2: str lom4=[sp,#76] +# copy-collector input: str r2,[sp,#76] + +# qhasm: him4 = hiu0 +# asm 1: str him4=stack32#21 +# asm 2: str him4=[sp,#80] +# copy-collector input: str r1,[sp,#80] + +# qhasm: lom5 = lou1 +# asm 1: str lom5=stack32#22 +# asm 2: str lom5=[sp,#84] +# copy-collector input: str r5,[sp,#84] + +# qhasm: him5 = hiu1 +# asm 1: str him5=stack32#23 +# asm 2: str him5=[sp,#88] +# copy-collector input: str r4,[sp,#88] + +# qhasm: lom6 = lou2 +# asm 1: str lom6=stack32#24 +# asm 2: str lom6=[sp,#92] +# copy-collector input: str r7,[sp,#92] + +# qhasm: him6 = hiu2 +# asm 1: str him6=stack32#25 +# asm 2: str him6=[sp,#96] +# copy-collector input: str r6,[sp,#96] + +# qhasm: lom7 = lou3 +# asm 1: str lom7=stack32#26 +# asm 2: str lom7=[sp,#100] +# copy-collector input: str r0,[sp,#100] + +# qhasm: him7 = hiu3 +# asm 1: str him7=stack32#27 +# asm 2: str him7=[sp,#104] +# copy-collector input: str r8,[sp,#104] + +# qhasm: lod4 = lou0 +# asm 1: str lod4=stack32#28 +# asm 2: str lod4=[sp,#108] +# copy-collector input: str r2,[sp,#108] + +# qhasm: hid4 = hiu0 +# asm 1: str hid4=stack32#29 +# asm 2: str hid4=[sp,#112] +# copy-collector input: str r1,[sp,#112] + +# qhasm: lod5 = lou1 +# asm 1: str lod5=stack32#30 +# asm 2: str lod5=[sp,#116] +# copy-collector input: str r5,[sp,#116] + +# qhasm: hid5 = hiu1 +# asm 1: str hid5=stack32#31 +# asm 2: str hid5=[sp,#120] +# copy-collector input: str r4,[sp,#120] + +# qhasm: lod6 = lou2 +# asm 1: str lod6=stack32#32 +# asm 2: str lod6=[sp,#124] +# copy-collector input: str r7,[sp,#124] + +# qhasm: hid6 = hiu2 +# asm 1: str hid6=stack32#33 +# asm 2: str hid6=[sp,#128] +# copy-collector input: str r6,[sp,#128] + +# qhasm: lod7 = lou3 +# asm 1: str lod7=stack32#34 +# asm 2: str lod7=[sp,#132] +# copy-collector input: str r0,[sp,#132] + +# qhasm: hid7 = hiu3 +# asm 1: str hid7=stack32#35 +# asm 2: str hid7=[sp,#136] +# copy-collector input: str r8,[sp,#136] + +# qhasm: input_1 = input_3 +# asm 1: mov >input_1=int32#1,input_1=r0,input_0=int32#2,input_0=r1,hiu0=int32#3,[hiu0=r2,[lou0=int32#4,[lou0=r3,[hiu1=int32#5,[hiu1=r4,[lou1=int32#6,[lou1=r5,[hiu2=int32#7,[hiu2=r6,[lou2=int32#8,[lou2=r7,[hiu3=int32#9,[hiu3=r8,[lou3=int32#10,[lou3=r9,[lou0=int32#4,lou0=r3,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#5,hiu1=r4,lou2=int32#8,lou2=r7,hiu2=int32#7,hiu2=r6,lou3=int32#10,lou3=r9,hiu3=int32#9,hiu3=r8,lod8=stack32#36 +# asm 2: str lod8=[sp,#140] +# copy-collector input: str r3,[sp,#140] + +# qhasm: hid8 = hiu0 +# asm 1: str hid8=stack32#37 +# asm 2: str hid8=[sp,#144] +# copy-collector input: str r2,[sp,#144] + +# qhasm: lod9 = lou1 +# asm 1: str lod9=stack32#38 +# asm 2: str lod9=[sp,#148] +# copy-collector input: str r5,[sp,#148] + +# qhasm: hid9 = hiu1 +# asm 1: str hid9=stack32#39 +# asm 2: str hid9=[sp,#152] +# copy-collector input: str r4,[sp,#152] + +# qhasm: lod10 = lou2 +# asm 1: str lod10=stack32#40 +# asm 2: str lod10=[sp,#156] +# copy-collector input: str r7,[sp,#156] + +# qhasm: hid10 = hiu2 +# asm 1: str hid10=stack32#41 +# asm 2: str hid10=[sp,#160] +# copy-collector input: str r6,[sp,#160] + +# qhasm: lod11 = lou3 +# asm 1: str lod11=stack32#42 +# asm 2: str lod11=[sp,#164] +# copy-collector input: str r9,[sp,#164] + +# qhasm: hid11 = hiu3 +# asm 1: str hid11=stack32#43 +# asm 2: str hid11=[sp,#168] +# copy-collector input: str r8,[sp,#168] + +# qhasm: hiu0 = mem32[input_0]; input_0 += 4 +# asm 1: ldr >hiu0=int32#3,[hiu0=r2,[lou0=int32#4,[lou0=r3,[hiu1=int32#5,[hiu1=r4,[lou1=int32#6,[lou1=r5,[hiu2=int32#7,[hiu2=r6,[lou2=int32#8,[lou2=r7,[hiu3=int32#9,[hiu3=r8,[lou3=int32#10,[lou3=r9,[lou0=int32#4,lou0=r3,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#5,hiu1=r4,lou2=int32#8,lou2=r7,hiu2=int32#7,hiu2=r6,lou3=int32#10,lou3=r9,hiu3=int32#9,hiu3=r8,lod12=stack32#44 +# asm 2: str lod12=[sp,#172] +# copy-collector input: str r3,[sp,#172] + +# qhasm: hid12 = hiu0 +# asm 1: str hid12=stack32#45 +# asm 2: str hid12=[sp,#176] +# copy-collector input: str r2,[sp,#176] + +# qhasm: lod13 = lou1 +# asm 1: str lod13=stack32#46 +# asm 2: str lod13=[sp,#180] +# copy-collector input: str r5,[sp,#180] + +# qhasm: hid13 = hiu1 +# asm 1: str hid13=stack32#47 +# asm 2: str hid13=[sp,#184] +# copy-collector input: str r4,[sp,#184] + +# qhasm: lod14 = lou2 +# asm 1: str lod14=stack32#48 +# asm 2: str lod14=[sp,#188] +# copy-collector input: str r7,[sp,#188] + +# qhasm: hid14 = hiu2 +# asm 1: str hid14=stack32#49 +# asm 2: str hid14=[sp,#192] +# copy-collector input: str r6,[sp,#192] + +# qhasm: lod15 = lou3 +# asm 1: str lod15=stack32#50 +# asm 2: str lod15=[sp,#196] +# copy-collector input: str r9,[sp,#196] + +# qhasm: hid15 = hiu3 +# asm 1: str hid15=stack32#51 +# asm 2: str hid15=[sp,#200] +# copy-collector input: str r8,[sp,#200] + +# qhasm: hiu0 = mem32[input_0]; input_0 += 4 +# asm 1: ldr >hiu0=int32#3,[hiu0=r2,[lou0=int32#4,[lou0=r3,[hiu1=int32#5,[hiu1=r4,[lou1=int32#6,[lou1=r5,[hiu2=int32#7,[hiu2=r6,[lou2=int32#8,[lou2=r7,[hiu3=int32#9,[hiu3=r8,[lou3=int32#10,[lou3=r9,[lou0=int32#4,lou0=r3,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#5,hiu1=r4,lou2=int32#8,lou2=r7,hiu2=int32#7,hiu2=r6,lou3=int32#10,lou3=r9,hiu3=int32#9,hiu3=r8,lom8=stack32#52 +# asm 2: str lom8=[sp,#204] +# copy-collector input: str r3,[sp,#204] + +# qhasm: him8 = hiu0 +# asm 1: str him8=stack32#53 +# asm 2: str him8=[sp,#208] +# copy-collector input: str r2,[sp,#208] + +# qhasm: lom9 = lou1 +# asm 1: str lom9=stack32#54 +# asm 2: str lom9=[sp,#212] +# copy-collector input: str r5,[sp,#212] + +# qhasm: him9 = hiu1 +# asm 1: str him9=stack32#55 +# asm 2: str him9=[sp,#216] +# copy-collector input: str r4,[sp,#216] + +# qhasm: lom10 = lou2 +# asm 1: str lom10=stack32#56 +# asm 2: str lom10=[sp,#220] +# copy-collector input: str r7,[sp,#220] + +# qhasm: him10 = hiu2 +# asm 1: str him10=stack32#57 +# asm 2: str him10=[sp,#224] +# copy-collector input: str r6,[sp,#224] + +# qhasm: lom11 = lou3 +# asm 1: str lom11=stack32#58 +# asm 2: str lom11=[sp,#228] +# copy-collector input: str r9,[sp,#228] + +# qhasm: him11 = hiu3 +# asm 1: str him11=stack32#59 +# asm 2: str him11=[sp,#232] +# copy-collector input: str r8,[sp,#232] + +# qhasm: hiu0 = mem32[input_0]; input_0 += 4 +# asm 1: ldr >hiu0=int32#3,[hiu0=r2,[lou0=int32#4,[lou0=r3,[hiu1=int32#5,[hiu1=r4,[lou1=int32#6,[lou1=r5,[hiu2=int32#7,[hiu2=r6,[lou2=int32#8,[lou2=r7,[hiu3=int32#9,[hiu3=r8,[lou3=int32#10,[lou3=r9,[lou0=int32#4,lou0=r3,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#5,hiu1=r4,lou2=int32#8,lou2=r7,hiu2=int32#7,hiu2=r6,lou3=int32#10,lou3=r9,hiu3=int32#9,hiu3=r8,lom12=stack32#60 +# asm 2: str lom12=[sp,#236] +# copy-collector input: str r3,[sp,#236] + +# qhasm: him12 = hiu0 +# asm 1: str him12=stack32#61 +# asm 2: str him12=[sp,#240] +# copy-collector input: str r2,[sp,#240] + +# qhasm: lom13 = lou1 +# asm 1: str lom13=stack32#62 +# asm 2: str lom13=[sp,#244] +# copy-collector input: str r5,[sp,#244] + +# qhasm: him13 = hiu1 +# asm 1: str him13=stack32#63 +# asm 2: str him13=[sp,#248] +# copy-collector input: str r4,[sp,#248] + +# qhasm: lom14 = lou2 +# asm 1: str lom14=stack32#64 +# asm 2: str lom14=[sp,#252] +# copy-collector input: str r7,[sp,#252] + +# qhasm: him14 = hiu2 +# asm 1: str him14=stack32#65 +# asm 2: str him14=[sp,#256] +# copy-collector input: str r6,[sp,#256] + +# qhasm: lom15 = lou3 +# asm 1: str lom15=stack32#66 +# asm 2: str lom15=[sp,#260] +# copy-collector input: str r9,[sp,#260] + +# qhasm: him15 = hiu3 +# asm 1: str him15=stack32#67 +# asm 2: str him15=[sp,#264] +# copy-collector input: str r8,[sp,#264] + +# qhasm: o1 = input_0 +# asm 1: str o1=stack32#2 +# asm 2: str o1=[sp,#4] +# copy-collector input: str r1,[sp,#4] + +# qhasm: input_0 = 80 simple +# asm 1: mov >input_0=int32#2,80 +# asm 2: mov >input_0=r1,80 +# copy-collector output starts +strd r3,r2,[sp,#236] +strd r5,r4,[sp,#244] +strd r7,r6,[sp,#252] +strd r9,r8,[sp,#260] +str r1,[sp,#4] +# copy-collector output ends +mov r1,80 + +# qhasm: o3 = input_0 +# asm 1: str o3=stack32#68 +# asm 2: str o3=[sp,#268] +# copy-collector input: str r1,[sp,#268] + +# qhasm: innerloop: +# copy-collector output starts +str r1,[sp,#268] +# copy-collector output ends +._innerloop: + +# qhasm: lou0 = lod3 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#10,lou4=r9,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#11,hiu4=r10,lotmp=int32#6,lotmp=r5,lotmp2=int32#4,lotmp2=r3,lotmp=int32#4,lotmp=r3,lou4=int32#4,lou4=r3,hitmp=int32#6,hitmp=r5,hitmp2=int32#5,hitmp2=r4,hitmp=int32#5,hitmp=r4,hiu4=int32#5,hiu4=r4,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lod3=stack32#18 +# asm 2: str lod3=[sp,#68] +# copy-collector input: str r1,[sp,#68] + +# qhasm: hid3 = hiu0 +# asm 1: str hid3=stack32#19 +# asm 2: str hid3=[sp,#72] +# copy-collector input: str r2,[sp,#72] + +# qhasm: lou1 = lod0 +# asm 1: ldr >lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou2=int32#8,lou2=r7,hiu2=int32#9,hiu2=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,> 7) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#4,lou4=r3,> 7) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 2) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 28) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#5,hiu4=r4,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#4,lou4=r3,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#5,hiu4=r4,lod7=stack32#16 +# asm 2: str lod7=[sp,#60] +# copy-collector input: str r3,[sp,#60] + +# qhasm: hid7 = hiu4 +# asm 1: str hid7=stack32#17 +# asm 2: str hid7=[sp,#64] +# copy-collector input: str r4,[sp,#64] + +# qhasm: lou1 = lod4 +# asm 1: ldr >lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#8,lou4=r7,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#9,hiu4=r8,lotmp=int32#4,lotmp=r3,lotmp2=int32#2,lotmp2=r1,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#4,hitmp=r3,hitmp2=int32#3,hitmp2=r2,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod2=stack32#32 +# asm 2: str lod2=[sp,#124] +# copy-collector input: str r3,[sp,#124] + +# qhasm: hid2 = hiu3 +# asm 1: str hid2=stack32#33 +# asm 2: str hid2=[sp,#128] +# copy-collector input: str r4,[sp,#128] + +# qhasm: lou0 = lod7 +# asm 1: ldr >lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou2=int32#10,lou2=r9,hiu2=int32#11,hiu2=r10,> 7) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#2,lou4=r1,> 7) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 2) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 28) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod6=stack32#14 +# asm 2: str lod6=[sp,#52] +# copy-collector input: str r1,[sp,#52] + +# qhasm: hid6 = hiu4 +# asm 1: str hid6=stack32#15 +# asm 2: str hid6=[sp,#56] +# copy-collector input: str r2,[sp,#56] + +# qhasm: lou0 = lod3 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#8,lou4=r7,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou2=int32#4,lou2=r3,hiu2=int32#5,hiu2=r4,lod1=stack32#30 +# asm 2: str lod1=[sp,#116] +# copy-collector input: str r3,[sp,#116] + +# qhasm: hid1 = hiu2 +# asm 1: str hid1=stack32#31 +# asm 2: str hid1=[sp,#120] +# copy-collector input: str r4,[sp,#120] + +# qhasm: lou0 = lod6 +# asm 1: ldr >lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,> 7) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#2,lou4=r1,> 7) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 2) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 28) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod5=stack32#12 +# asm 2: str lod5=[sp,#44] +# copy-collector input: str r1,[sp,#44] + +# qhasm: hid5 = hiu4 +# asm 1: str hid5=stack32#13 +# asm 2: str hid5=[sp,#48] +# copy-collector input: str r2,[sp,#48] + +# qhasm: lou0 = lod2 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#8,lou4=r7,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod0=stack32#28 +# asm 2: str lod0=[sp,#108] +# copy-collector input: str r3,[sp,#108] + +# qhasm: hid0 = hiu3 +# asm 1: str hid0=stack32#29 +# asm 2: str hid0=[sp,#112] +# copy-collector input: str r4,[sp,#112] + +# qhasm: lou0 = lod5 +# asm 1: ldr >lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou2=int32#10,lou2=r9,hiu2=int32#11,hiu2=r10,> 7) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#2,lou4=r1,> 7) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 2) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 28) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod4=stack32#69 +# asm 2: str lod4=[sp,#272] +# copy-collector input: str r1,[sp,#272] + +# qhasm: hid4 = hiu4 +# asm 1: str hid4=stack32#70 +# asm 2: str hid4=[sp,#276] +# copy-collector input: str r2,[sp,#276] + +# qhasm: lou0 = lod1 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#8,lou4=r7,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou2=int32#4,lou2=r3,hiu2=int32#5,hiu2=r4,lod7=stack32#34 +# asm 2: str lod7=[sp,#132] +# copy-collector input: str r3,[sp,#132] + +# qhasm: hid7 = hiu2 +# asm 1: str hid7=stack32#35 +# asm 2: str hid7=[sp,#136] +# copy-collector input: str r4,[sp,#136] + +# qhasm: lou0 = lod4 +# asm 1: ldr >lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,> 7) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#2,lou4=r1,> 7) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 2) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 28) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod3=stack32#18 +# asm 2: str lod3=[sp,#68] +# copy-collector input: str r1,[sp,#68] + +# qhasm: hid3 = hiu4 +# asm 1: str hid3=stack32#19 +# asm 2: str hid3=[sp,#72] +# copy-collector input: str r2,[sp,#72] + +# qhasm: lou0 = lod0 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#8,lou4=r7,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod6=stack32#32 +# asm 2: str lod6=[sp,#124] +# copy-collector input: str r3,[sp,#124] + +# qhasm: hid6 = hiu3 +# asm 1: str hid6=stack32#33 +# asm 2: str hid6=[sp,#128] +# copy-collector input: str r4,[sp,#128] + +# qhasm: lou0 = lod3 +# asm 1: ldr >lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou2=int32#10,lou2=r9,hiu2=int32#11,hiu2=r10,> 7) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#2,lou4=r1,> 7) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 2) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 28) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod2=stack32#16 +# asm 2: str lod2=[sp,#60] +# copy-collector input: str r1,[sp,#60] + +# qhasm: hid2 = hiu4 +# asm 1: str hid2=stack32#17 +# asm 2: str hid2=[sp,#64] +# copy-collector input: str r2,[sp,#64] + +# qhasm: lou0 = lod7 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#8,lou4=r7,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou2=int32#4,lou2=r3,hiu2=int32#5,hiu2=r4,lod5=stack32#30 +# asm 2: str lod5=[sp,#116] +# copy-collector input: str r3,[sp,#116] + +# qhasm: hid5 = hiu2 +# asm 1: str hid5=stack32#31 +# asm 2: str hid5=[sp,#120] +# copy-collector input: str r4,[sp,#120] + +# qhasm: lou0 = lod2 +# asm 1: ldr >lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,> 7) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#2,lou4=r1,> 7) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 2) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 28) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod1=stack32#14 +# asm 2: str lod1=[sp,#52] +# copy-collector input: str r1,[sp,#52] + +# qhasm: hid1 = hiu4 +# asm 1: str hid1=stack32#15 +# asm 2: str hid1=[sp,#56] +# copy-collector input: str r2,[sp,#56] + +# qhasm: lou0 = lod6 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#8,lou4=r7,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod4=stack32#28 +# asm 2: str lod4=[sp,#108] +# copy-collector input: str r3,[sp,#108] + +# qhasm: hid4 = hiu3 +# asm 1: str hid4=stack32#29 +# asm 2: str hid4=[sp,#112] +# copy-collector input: str r4,[sp,#112] + +# qhasm: lou0 = lod1 +# asm 1: ldr >lou0=int32#4,lou0=r3,hiu0=int32#5,hiu0=r4,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou2=int32#8,lou2=r7,hiu2=int32#9,hiu2=r8,> 7) +# asm 1: mov >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 2) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 28) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,lou4=int32#2,lou4=r1,> 7) +# asm 1: mov >hitmp=int32#10,hitmp=r9,hitmp=int32#10,hitmp=r9,> 2) +# asm 1: eor >hitmp=int32#10,hitmp=r9,hitmp=int32#10,hitmp=r9,> 28) +# asm 1: eor >hitmp=int32#10,hitmp=r9,hitmp=int32#10,hitmp=r9,hiu4=int32#3,hiu4=r2,lotmp=int32#10,lotmp=r9,lotmp=int32#4,lotmp=r3,lotmp2=int32#6,lotmp2=r5,lotmp=int32#4,lotmp=r3,lou4=int32#2,lou4=r1,hitmp=int32#4,hitmp=r3,hitmp=int32#4,hitmp=r3,hitmp2=int32#5,hitmp2=r4,hitmp=int32#4,hitmp=r3,hiu4=int32#3,hiu4=r2,lod0=stack32#12 +# asm 2: str lod0=[sp,#44] +# copy-collector input: str r1,[sp,#44] + +# qhasm: hid0 = hiu4 +# asm 1: str hid0=stack32#13 +# asm 2: str hid0=[sp,#48] +# copy-collector input: str r2,[sp,#48] + +# qhasm: input_0 = o3 +# asm 1: ldr >input_0=int32#2,input_0=r1,input_0=int32#2,input_0=r1,o3=stack32#68 +# asm 2: str o3=[sp,#268] +# copy-collector input: str r1,[sp,#268] + +# qhasm: =? input_0 - 8 +# asm 1: cmp lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,> 6) +# asm 1: mov >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 19) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 29) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,lou0=int32#2,lou0=r1,> 6) +# asm 1: mov >hitmp=int32#10,hitmp=r9,> 19) +# asm 1: eor >hitmp=int32#10,hitmp=r9,hitmp=int32#10,hitmp=r9,> 29) +# asm 1: eor >hitmp=int32#10,hitmp=r9,hitmp=int32#10,hitmp=r9,hiu0=int32#3,hiu0=r2,> 1) +# asm 1: movs >lotmp=int32#10,lotmp=r9,> 1) +# asm 1: mov >hitmp=int32#11,hitmp=r10,lotmp=int32#10,lotmp=r9,>7) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,>7) +# asm 1: eor >hitmp=int32#11,hitmp=r10,>8) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,>8) +# asm 1: eor >hitmp=int32#11,hitmp=r10,hitmp=int32#11,hitmp=r10,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lod9=stack32#38 +# asm 2: str lod9=[sp,#148] +# copy-collector input: str r7,[sp,#148] + +# qhasm: hid9 = hiu3 +# asm 1: str hid9=stack32#39 +# asm 2: str hid9=[sp,#152] +# copy-collector input: str r8,[sp,#152] + +# qhasm: lou3 = lom15 +# asm 1: ldr >lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lom15=stack32#36 +# asm 2: str lom15=[sp,#140] +# copy-collector input: str r1,[sp,#140] + +# qhasm: him15 = hiu0 +# asm 1: str him15=stack32#37 +# asm 2: str him15=[sp,#144] +# copy-collector input: str r2,[sp,#144] + +# qhasm: lotmp = (lou3 unsigned>> 6) +# asm 1: mov >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 19) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 29) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,lou1=int32#4,lou1=r3,> 6) +# asm 1: mov >hitmp=int32#10,hitmp=r9,> 19) +# asm 1: eor >hitmp=int32#10,hitmp=r9,hitmp=int32#10,hitmp=r9,> 29) +# asm 1: eor >hitmp=int32#10,hitmp=r9,hitmp=int32#10,hitmp=r9,hiu1=int32#5,hiu1=r4,lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,> 1) +# asm 1: movs >lotmp=int32#12,lotmp=r11,> 1) +# asm 1: mov >hitmp=int32#13,hitmp=r12,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,>8) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>8) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lod10=stack32#40 +# asm 2: str lod10=[sp,#156] +# copy-collector input: str r11,[sp,#156] + +# qhasm: hid10 = hiu5 +# asm 1: str hid10=stack32#41 +# asm 2: str hid10=[sp,#160] +# copy-collector input: str r12,[sp,#160] + +# qhasm: lom9 = lou1 +# asm 1: str lom9=stack32#54 +# asm 2: str lom9=[sp,#212] +# copy-collector input: str r3,[sp,#212] + +# qhasm: him9 = hiu1 +# asm 1: str him9=stack32#55 +# asm 2: str him9=[sp,#216] +# copy-collector input: str r4,[sp,#216] + +# qhasm: lotmp = (lou0 unsigned>> 6) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 19) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 29) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#10,lou4=r9,> 6) +# asm 1: mov >hitmp=int32#12,hitmp=r11,> 19) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 29) +# asm 1: eor >hitmp=int32#2,hitmp=r1,hitmp=int32#2,hitmp=r1,hiu4=int32#2,hiu4=r1,lou0=int32#3,lou0=r2,hiu0=int32#11,hiu0=r10,> 1) +# asm 1: movs >lotmp=int32#12,lotmp=r11,> 1) +# asm 1: mov >hitmp=int32#13,hitmp=r12,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,>8) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>8) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#10,lou4=r9,hiu4=int32#2,hiu4=r1,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#10,lou4=r9,hiu4=int32#2,hiu4=r1,lod11=stack32#42 +# asm 2: str lod11=[sp,#164] +# copy-collector input: str r11,[sp,#164] + +# qhasm: hid11 = hiu5 +# asm 1: str hid11=stack32#43 +# asm 2: str hid11=[sp,#168] +# copy-collector input: str r12,[sp,#168] + +# qhasm: lom10 = lou4 +# asm 1: str lom10=stack32#56 +# asm 2: str lom10=[sp,#220] +# copy-collector input: str r9,[sp,#220] + +# qhasm: him10 = hiu4 +# asm 1: str him10=stack32#57 +# asm 2: str him10=[sp,#224] +# copy-collector input: str r1,[sp,#224] + +# qhasm: lotmp = (lou1 unsigned>> 6) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 19) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 29) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou0=int32#3,lou0=r2,> 6) +# asm 1: mov >hitmp=int32#12,hitmp=r11,> 19) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 29) +# asm 1: eor >hitmp=int32#4,hitmp=r3,hitmp=int32#4,hitmp=r3,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#11,hiu1=r10,> 1) +# asm 1: movs >lotmp=int32#12,lotmp=r11,> 1) +# asm 1: mov >hitmp=int32#13,hitmp=r12,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,>8) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>8) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lod12=stack32#44 +# asm 2: str lod12=[sp,#172] +# copy-collector input: str r11,[sp,#172] + +# qhasm: hid12 = hiu5 +# asm 1: str hid12=stack32#45 +# asm 2: str hid12=[sp,#176] +# copy-collector input: str r12,[sp,#176] + +# qhasm: lom11 = lou0 +# asm 1: str lom11=stack32#58 +# asm 2: str lom11=[sp,#228] +# copy-collector input: str r2,[sp,#228] + +# qhasm: him11 = hiu0 +# asm 1: str him11=stack32#59 +# asm 2: str him11=[sp,#232] +# copy-collector input: str r3,[sp,#232] + +# qhasm: lotmp = (lou4 unsigned>> 6) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 19) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 29) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou1=int32#5,lou1=r4,> 6) +# asm 1: mov >hitmp=int32#12,hitmp=r11,> 19) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 29) +# asm 1: eor >hitmp=int32#10,hitmp=r9,hitmp=int32#2,hitmp=r1,hiu1=int32#2,hiu1=r1,lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,> 1) +# asm 1: movs >lotmp=int32#12,lotmp=r11,> 1) +# asm 1: mov >hitmp=int32#13,hitmp=r12,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,>8) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>8) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou1=int32#5,lou1=r4,hiu1=int32#2,hiu1=r1,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou1=int32#5,lou1=r4,hiu1=int32#2,hiu1=r1,lod13=stack32#46 +# asm 2: str lod13=[sp,#180] +# copy-collector input: str r11,[sp,#180] + +# qhasm: hid13 = hiu5 +# asm 1: str hid13=stack32#47 +# asm 2: str hid13=[sp,#184] +# copy-collector input: str r12,[sp,#184] + +# qhasm: lom12 = lou1 +# asm 1: str lom12=stack32#60 +# asm 2: str lom12=[sp,#236] +# copy-collector input: str r4,[sp,#236] + +# qhasm: him12 = hiu1 +# asm 1: str him12=stack32#61 +# asm 2: str him12=[sp,#240] +# copy-collector input: str r1,[sp,#240] + +# qhasm: lotmp = (lou0 unsigned>> 6) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 19) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 29) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#10,lou4=r9,> 6) +# asm 1: mov >hitmp=int32#12,hitmp=r11,> 19) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 29) +# asm 1: eor >hitmp=int32#3,hitmp=r2,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou0=int32#4,lou0=r3,hiu0=int32#11,hiu0=r10,lod14=stack32#48 +# asm 2: str lod14=[sp,#188] +# copy-collector input: str r5,[sp,#188] + +# qhasm: hid14 = hiu2 +# asm 1: str hid14=stack32#49 +# asm 2: str hid14=[sp,#192] +# copy-collector input: str r6,[sp,#192] + +# qhasm: carry? lotmp = (lou0 unsigned>> 1) +# asm 1: movs >lotmp=int32#12,lotmp=r11,> 1) +# asm 1: mov >hitmp=int32#13,hitmp=r12,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,>8) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>8) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#10,lou4=r9,hiu4=int32#3,hiu4=r2,lou4=int32#6,lou4=r5,hiu4=int32#3,hiu4=r2,lom13=stack32#62 +# asm 2: str lom13=[sp,#244] +# copy-collector input: str r5,[sp,#244] + +# qhasm: him13 = hiu4 +# asm 1: str him13=stack32#63 +# asm 2: str him13=[sp,#248] +# copy-collector input: str r2,[sp,#248] + +# qhasm: lotmp = (lou1 unsigned>> 6) +# asm 1: mov >lotmp=int32#7,lotmp=r6,lotmp=int32#7,lotmp=r6,> 19) +# asm 1: eor >lotmp=int32#7,lotmp=r6,lotmp=int32#7,lotmp=r6,> 29) +# asm 1: eor >lotmp=int32#7,lotmp=r6,lotmp=int32#7,lotmp=r6,lou0=int32#4,lou0=r3,> 6) +# asm 1: mov >hitmp=int32#7,hitmp=r6,> 19) +# asm 1: eor >hitmp=int32#7,hitmp=r6,hitmp=int32#7,hitmp=r6,> 29) +# asm 1: eor >hitmp=int32#5,hitmp=r4,hitmp=int32#2,hitmp=r1,hiu0=int32#2,hiu0=r1,lou1=int32#5,lou1=r4,hiu1=int32#7,hiu1=r6,lod15=stack32#50 +# asm 2: str lod15=[sp,#196] +# copy-collector input: str r7,[sp,#196] + +# qhasm: hid15 = hiu3 +# asm 1: str hid15=stack32#51 +# asm 2: str hid15=[sp,#200] +# copy-collector input: str r8,[sp,#200] + +# qhasm: carry? lotmp = (lou1 unsigned>> 1) +# asm 1: movs >lotmp=int32#10,lotmp=r9,> 1) +# asm 1: mov >hitmp=int32#11,hitmp=r10,lotmp=int32#10,lotmp=r9,>7) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,>7) +# asm 1: eor >hitmp=int32#11,hitmp=r10,>8) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,>8) +# asm 1: eor >hitmp=int32#11,hitmp=r10,hitmp=int32#11,hitmp=r10,lou0=int32#4,lou0=r3,hiu0=int32#2,hiu0=r1,lou0=int32#4,lou0=r3,hiu0=int32#2,hiu0=r1,lom14=stack32#64 +# asm 2: str lom14=[sp,#252] +# copy-collector input: str r3,[sp,#252] + +# qhasm: him14 = hiu0 +# asm 1: str him14=stack32#65 +# asm 2: str him14=[sp,#256] +# copy-collector input: str r1,[sp,#256] + +# qhasm: lotmp = (lou4 unsigned>> 6) +# asm 1: mov >lotmp=int32#2,lotmp=r1,lotmp=int32#2,lotmp=r1,> 19) +# asm 1: eor >lotmp=int32#2,lotmp=r1,lotmp=int32#2,lotmp=r1,> 29) +# asm 1: eor >lotmp=int32#2,lotmp=r1,lotmp=int32#2,lotmp=r1,lou1=int32#2,lou1=r1,> 6) +# asm 1: mov >hitmp=int32#4,hitmp=r3,> 19) +# asm 1: eor >hitmp=int32#4,hitmp=r3,hitmp=int32#4,hitmp=r3,> 29) +# asm 1: eor >hitmp=int32#4,hitmp=r3,hitmp=int32#3,hitmp=r2,hiu1=int32#3,hiu1=r2,lou0=int32#4,lou0=r3,hiu0=int32#5,hiu0=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lom8=stack32#52 +# asm 2: str lom8=[sp,#204] +# copy-collector input: str r5,[sp,#204] + +# qhasm: him8 = hiu2 +# asm 1: str him8=stack32#53 +# asm 2: str him8=[sp,#208] +# copy-collector input: str r6,[sp,#208] + +# qhasm: carry? lotmp = (lou0 unsigned>> 1) +# asm 1: movs >lotmp=int32#8,lotmp=r7,> 1) +# asm 1: mov >hitmp=int32#9,hitmp=r8,lotmp=int32#8,lotmp=r7,>7) +# asm 1: eor >lotmp=int32#8,lotmp=r7,lotmp=int32#8,lotmp=r7,>7) +# asm 1: eor >hitmp=int32#9,hitmp=r8,>8) +# asm 1: eor >lotmp=int32#8,lotmp=r7,lotmp=int32#8,lotmp=r7,>8) +# asm 1: eor >hitmp=int32#9,hitmp=r8,hitmp=int32#9,hitmp=r8,lou1=int32#2,lou1=r1,hiu1=int32#3,hiu1=r2,lou1=int32#2,lou1=r1,hiu1=int32#3,hiu1=r2,lom15=stack32#66 +# asm 2: str lom15=[sp,#260] +# copy-collector input: str r1,[sp,#260] + +# qhasm: him15 = hiu1 +# asm 1: str him15=stack32#67 +# asm 2: str him15=[sp,#264] +# copy-collector input: str r2,[sp,#264] + +# qhasm: lod8 = lou0 +# asm 1: str lod8=stack32#36 +# asm 2: str lod8=[sp,#140] +# copy-collector input: str r3,[sp,#140] + +# qhasm: hid8 = hiu0 +# asm 1: str hid8=stack32#37 +# asm 2: str hid8=[sp,#144] +# copy-collector input: str r4,[sp,#144] + +# qhasm: goto innerloop +# copy-collector output starts +strd r1,r2,[sp,#260] +strd r3,r4,[sp,#140] +# copy-collector output ends +b ._innerloop + +# qhasm: nearend: +._nearend: + +# qhasm: lou0 = lom8 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lod8=stack32#36 +# asm 2: str lod8=[sp,#140] +# copy-collector input: str r1,[sp,#140] + +# qhasm: hid8 = hiu0 +# asm 1: str hid8=stack32#37 +# asm 2: str hid8=[sp,#144] +# copy-collector input: str r2,[sp,#144] + +# qhasm: lod9 = lou1 +# asm 1: str lod9=stack32#38 +# asm 2: str lod9=[sp,#148] +# copy-collector input: str r3,[sp,#148] + +# qhasm: hid9 = hiu1 +# asm 1: str hid9=stack32#39 +# asm 2: str hid9=[sp,#152] +# copy-collector input: str r4,[sp,#152] + +# qhasm: lod10 = lou2 +# asm 1: str lod10=stack32#40 +# asm 2: str lod10=[sp,#156] +# copy-collector input: str r5,[sp,#156] + +# qhasm: hid10 = hiu2 +# asm 1: str hid10=stack32#41 +# asm 2: str hid10=[sp,#160] +# copy-collector input: str r6,[sp,#160] + +# qhasm: lod11 = lou3 +# asm 1: str lod11=stack32#42 +# asm 2: str lod11=[sp,#164] +# copy-collector input: str r7,[sp,#164] + +# qhasm: hid11 = hiu3 +# asm 1: str hid11=stack32#43 +# asm 2: str hid11=[sp,#168] +# copy-collector input: str r8,[sp,#168] + +# qhasm: lou0 = lom12 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lod12=stack32#44 +# asm 2: str lod12=[sp,#172] +# copy-collector input: str r1,[sp,#172] + +# qhasm: hid12 = hiu0 +# asm 1: str hid12=stack32#45 +# asm 2: str hid12=[sp,#176] +# copy-collector input: str r2,[sp,#176] + +# qhasm: lod13 = lou1 +# asm 1: str lod13=stack32#46 +# asm 2: str lod13=[sp,#180] +# copy-collector input: str r3,[sp,#180] + +# qhasm: hid13 = hiu1 +# asm 1: str hid13=stack32#47 +# asm 2: str hid13=[sp,#184] +# copy-collector input: str r4,[sp,#184] + +# qhasm: lod14 = lou2 +# asm 1: str lod14=stack32#48 +# asm 2: str lod14=[sp,#188] +# copy-collector input: str r5,[sp,#188] + +# qhasm: hid14 = hiu2 +# asm 1: str hid14=stack32#49 +# asm 2: str hid14=[sp,#192] +# copy-collector input: str r6,[sp,#192] + +# qhasm: lod15 = lou3 +# asm 1: str lod15=stack32#50 +# asm 2: str lod15=[sp,#196] +# copy-collector input: str r7,[sp,#196] + +# qhasm: hid15 = hiu3 +# asm 1: str hid15=stack32#51 +# asm 2: str hid15=[sp,#200] +# copy-collector input: str r8,[sp,#200] + +# qhasm: goto innerloop +# copy-collector output starts +ldr r1,[sp,#204] +ldr r2,[sp,#208] +ldr r3,[sp,#212] +ldr r4,[sp,#216] +ldr r5,[sp,#220] +ldr r6,[sp,#224] +ldr.w r7,[sp,#228] +ldr r8,[sp,#232] +strd r1,r2,[sp,#140] +strd r3,r4,[sp,#148] +strd r5,r6,[sp,#156] +strd r7,r8,[sp,#164] +ldr r1,[sp,#236] +ldr r2,[sp,#240] +ldr r3,[sp,#244] +ldr r4,[sp,#248] +ldr r5,[sp,#252] +ldr r6,[sp,#256] +ldr.w r7,[sp,#260] +ldr r8,[sp,#264] +strd r1,r2,[sp,#172] +strd r3,r4,[sp,#180] +strd r5,r6,[sp,#188] +strd r7,r8,[sp,#196] +# copy-collector output ends +b ._innerloop + +# qhasm: endinnerloop: +._endinnerloop: + +# qhasm: input_1 -= 640 +# asm 1: sub >input_1=int32#1,input_1=r0,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lom0=stack32#4 +# asm 2: str lom0=[sp,#12] +# copy-collector input: str r1,[sp,#12] + +# qhasm: him0 = hiu0 +# asm 1: str him0=stack32#5 +# asm 2: str him0=[sp,#16] +# copy-collector input: str r2,[sp,#16] + +# qhasm: lom1 = lou1 +# asm 1: str lom1=stack32#6 +# asm 2: str lom1=[sp,#20] +# copy-collector input: str r3,[sp,#20] + +# qhasm: him1 = hiu1 +# asm 1: str him1=stack32#7 +# asm 2: str him1=[sp,#24] +# copy-collector input: str r4,[sp,#24] + +# qhasm: lom2 = lou2 +# asm 1: str lom2=stack32#8 +# asm 2: str lom2=[sp,#28] +# copy-collector input: str r5,[sp,#28] + +# qhasm: him2 = hiu2 +# asm 1: str him2=stack32#9 +# asm 2: str him2=[sp,#32] +# copy-collector input: str r6,[sp,#32] + +# qhasm: lom3 = lou3 +# asm 1: str lom3=stack32#10 +# asm 2: str lom3=[sp,#36] +# copy-collector input: str r7,[sp,#36] + +# qhasm: him3 = hiu3 +# asm 1: str him3=stack32#11 +# asm 2: str him3=[sp,#40] +# copy-collector input: str r8,[sp,#40] + +# qhasm: lod0 = lou0 +# asm 1: str lod0=stack32#12 +# asm 2: str lod0=[sp,#44] +# copy-collector input: str r1,[sp,#44] + +# qhasm: hid0 = hiu0 +# asm 1: str hid0=stack32#13 +# asm 2: str hid0=[sp,#48] +# copy-collector input: str r2,[sp,#48] + +# qhasm: lod1 = lou1 +# asm 1: str lod1=stack32#14 +# asm 2: str lod1=[sp,#52] +# copy-collector input: str r3,[sp,#52] + +# qhasm: hid1 = hiu1 +# asm 1: str hid1=stack32#15 +# asm 2: str hid1=[sp,#56] +# copy-collector input: str r4,[sp,#56] + +# qhasm: lod2 = lou2 +# asm 1: str lod2=stack32#16 +# asm 2: str lod2=[sp,#60] +# copy-collector input: str r5,[sp,#60] + +# qhasm: hid2 = hiu2 +# asm 1: str hid2=stack32#17 +# asm 2: str hid2=[sp,#64] +# copy-collector input: str r6,[sp,#64] + +# qhasm: lod3 = lou3 +# asm 1: str lod3=stack32#18 +# asm 2: str lod3=[sp,#68] +# copy-collector input: str r7,[sp,#68] + +# qhasm: hid3 = hiu3 +# asm 1: str hid3=stack32#19 +# asm 2: str hid3=[sp,#72] +# copy-collector input: str r8,[sp,#72] + +# qhasm: lou0 = lod4 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lom4=stack32#20 +# asm 2: str lom4=[sp,#76] +# copy-collector input: str r1,[sp,#76] + +# qhasm: him4 = hiu0 +# asm 1: str him4=stack32#21 +# asm 2: str him4=[sp,#80] +# copy-collector input: str r2,[sp,#80] + +# qhasm: lom5 = lou1 +# asm 1: str lom5=stack32#22 +# asm 2: str lom5=[sp,#84] +# copy-collector input: str r3,[sp,#84] + +# qhasm: him5 = hiu1 +# asm 1: str him5=stack32#23 +# asm 2: str him5=[sp,#88] +# copy-collector input: str r4,[sp,#88] + +# qhasm: lom6 = lou2 +# asm 1: str lom6=stack32#24 +# asm 2: str lom6=[sp,#92] +# copy-collector input: str r5,[sp,#92] + +# qhasm: him6 = hiu2 +# asm 1: str him6=stack32#25 +# asm 2: str him6=[sp,#96] +# copy-collector input: str r6,[sp,#96] + +# qhasm: lom7 = lou3 +# asm 1: str lom7=stack32#26 +# asm 2: str lom7=[sp,#100] +# copy-collector input: str r7,[sp,#100] + +# qhasm: him7 = hiu3 +# asm 1: str him7=stack32#27 +# asm 2: str him7=[sp,#104] +# copy-collector input: str r8,[sp,#104] + +# qhasm: lod4 = lou0 +# asm 1: str lod4=stack32#28 +# asm 2: str lod4=[sp,#108] +# copy-collector input: str r1,[sp,#108] + +# qhasm: hid4 = hiu0 +# asm 1: str hid4=stack32#29 +# asm 2: str hid4=[sp,#112] +# copy-collector input: str r2,[sp,#112] + +# qhasm: lod5 = lou1 +# asm 1: str lod5=stack32#30 +# asm 2: str lod5=[sp,#116] +# copy-collector input: str r3,[sp,#116] + +# qhasm: hid5 = hiu1 +# asm 1: str hid5=stack32#31 +# asm 2: str hid5=[sp,#120] +# copy-collector input: str r4,[sp,#120] + +# qhasm: lod6 = lou2 +# asm 1: str lod6=stack32#32 +# asm 2: str lod6=[sp,#124] +# copy-collector input: str r5,[sp,#124] + +# qhasm: hid6 = hiu2 +# asm 1: str hid6=stack32#33 +# asm 2: str hid6=[sp,#128] +# copy-collector input: str r6,[sp,#128] + +# qhasm: lod7 = lou3 +# asm 1: str lod7=stack32#34 +# asm 2: str lod7=[sp,#132] +# copy-collector input: str r7,[sp,#132] + +# qhasm: hid7 = hiu3 +# asm 1: str hid7=stack32#35 +# asm 2: str hid7=[sp,#136] +# copy-collector input: str r8,[sp,#136] + +# qhasm: input_0 = o2 +# asm 1: ldr >input_0=int32#2,input_0=r1,input_0=int32#2,input_0=r1,o2=stack32#3 +# asm 2: str o2=[sp,#8] +# copy-collector input: str r1,[sp,#8] + +# qhasm: goto mainloop if !unsigned< +# copy-collector output starts +str r1,[sp,#8] +# copy-collector output ends +bhs ._mainloop + +# qhasm: endmainloop: +._endmainloop: + +# qhasm: input_1 = o0 +# asm 1: ldr >input_1=int32#1,input_1=r0,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,input_0=int32#1,input_0=r0,/CRYPTO_SHARED_NAMESPACE(inner)/' diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner32.desc b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner32.desc new file mode 100644 index 0000000000..6012ca6cd3 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m3/inner32.desc @@ -0,0 +1,87 @@ +:name:int32:input_0:input_1:input_2:input_3:i4:i5:i6: +ptr r:var/r=int32: +int32 r:var/r=int32: +:name:int64:u0:u1:u2:u3:u4:u5:u6:u7:u8:u9:u10:u11:u12:u13:u14:u15:u16: +int64 r:var/r=int64: +:name:stack64:m0:m1:m2:m3:m4:m5:m6:m7:m8:m9:m10:m11:m12:m13:m14:m15:m16:m17:m18: +stack64 r:var/r=stack64: +:name:stack32:o0:o1:o2:o3:o4:o5:o6: +stack32 r:var/r=stack32: +stackptr r:var/r=stack32: +:name:spill64:d0:d1:d2:d3:d4:d5:d6:d7:d8:d9:d10:d11:d12:d13:d14:d15:d16: +spill64 r:var/r=spill64: + +:flag:=: +:flag:unsigned>=: + +pushenter f:enter/f:>input_0=int32#1:>input_1=int32#2:>input_2=int32#3:>input_3=int32#4:asm/rpushenter #f: + +popreturn r:=:#f:jump/f:=:asm/goto #f if !unsigned!lt;: + +r = s:>r=int32:r = r=int32:#n:asm/>r = #n: +r = n simple:>r=int32:#n:asm/>r = #n simple: +r += n:r=int32:#n:asm/r=int32:r = r=int32:r = r=stack32:r = r=int32:#n:asm/r=int32:#n:>?=:asm/=? r=int32:#n:>?=:>?unsigned>=:asm/=? unsigned!lt;? r=int64:r = lor = hir=int64:r = lor = hir=stack64:r = lor = hir=int64:r = lor = hir=spill64:r = lor = hir=int64:r = mem32[r = mem32[r=int64:r = mem32[r = mem32[r=int64:r = mem32[r = mem32[r=int64:r = lor = hir=int64:r=int64:r=int64:r=int64:r=int64:r=int64:statebytes_stack=stack32#1 = statebytes_stack=o0 = in_stack=stack32#2 = in_stack=o1 = inlen=int32#2 = inlen=input_1 = inlen_stack=stack32#3 = inlen_stack=o2 = r0=int64#1 = mem32[r0=u0 = mem32[r0=int64#1 = mem32[r0=u0 = mem32[r1=int64#2 = mem32[r1=u1 = mem32[r1=int64#2 = mem32[r1=u1 = mem32[r2=int64#3 = mem32[r2=u2 = mem32[r2=int64#3 = mem32[r2=u2 = mem32[r3=int64#4 = mem32[r3=u3 = mem32[r3=int64#4 = mem32[r3=u3 = mem32[r0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = histate0=stack64#1 = lostate0=m0 = lostate0=stack64#1 = histate0=m0 = histate1=stack64#2 = lostate1=m1 = lostate1=stack64#2 = histate1=m1 = histate2=stack64#3 = lostate2=m2 = lostate2=stack64#3 = histate2=m2 = histate3=stack64#4 = lostate3=m3 = lostate3=stack64#4 = histate3=m3 = hir0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hir1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir4=int64#1 = mem32[r4=u0 = mem32[r4=int64#1 = mem32[r4=u0 = mem32[r5=int64#2 = mem32[r5=u1 = mem32[r5=int64#2 = mem32[r5=u1 = mem32[r6=int64#3 = mem32[r6=u2 = mem32[r6=int64#3 = mem32[r6=u2 = mem32[r7=int64#4 = mem32[r7=u3 = mem32[r7=int64#4 = mem32[r7=u3 = mem32[r4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = histate4=stack64#5 = lostate4=m4 = lostate4=stack64#5 = histate4=m4 = histate5=stack64#6 = lostate5=m5 = lostate5=stack64#6 = histate5=m5 = histate6=stack64#7 = lostate6=m6 = lostate6=stack64#7 = histate6=m6 = histate7=stack64#8 = lostate7=m7 = lostate7=stack64#8 = histate7=m7 = hir4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hiconstants=int32#2 = constants=input_1 = in=int32#1 = in=input_0 = w0=int64#1 = mem32[w0=u0 = mem32[w0=int64#1 = mem32[w0=u0 = mem32[w1=int64#2 = mem32[w1=u1 = mem32[w1=int64#2 = mem32[w1=u1 = mem32[w2=int64#3 = mem32[w2=u2 = mem32[w2=int64#3 = mem32[w2=u2 = mem32[w3=int64#4 = mem32[w3=u3 = mem32[w3=int64#4 = mem32[w3=u3 = mem32[w0=int64#1 = low0=u0 = low0=int64#1 = hiw0=u0 = hiw1=int64#2 = low1=u1 = low1=int64#2 = hiw1=u1 = hiw2=int64#3 = low2=u2 = low2=int64#3 = hiw2=u2 = hiw3=int64#4 = low3=u3 = low3=int64#4 = hiw3=u3 = hiw0_spill=spill64#9 = low0_spill=d8 = low0_spill=spill64#9 = hiw0_spill=d8 = hiw1_spill=spill64#10 = low1_spill=d9 = low1_spill=spill64#10 = hiw1_spill=d9 = hiw2_spill=spill64#11 = low2_spill=d10 = low2_spill=spill64#11 = hiw2_spill=d10 = hiw3_spill=spill64#12 = low3_spill=d11 = low3_spill=spill64#12 = hiw3_spill=d11 = hiw4=int64#1 = mem32[w4=u0 = mem32[w4=int64#1 = mem32[w4=u0 = mem32[w5=int64#2 = mem32[w5=u1 = mem32[w5=int64#2 = mem32[w5=u1 = mem32[w6=int64#3 = mem32[w6=u2 = mem32[w6=int64#3 = mem32[w6=u2 = mem32[w7=int64#4 = mem32[w7=u3 = mem32[w7=int64#4 = mem32[w7=u3 = mem32[w4=int64#1 = low4=u0 = low4=int64#1 = hiw4=u0 = hiw5=int64#2 = low5=u1 = low5=int64#2 = hiw5=u1 = hiw6=int64#3 = low6=u2 = low6=int64#3 = hiw6=u2 = hiw7=int64#4 = low7=u3 = low7=int64#4 = hiw7=u3 = hiw4_spill=spill64#13 = low4_spill=d12 = low4_spill=spill64#13 = hiw4_spill=d12 = hiw5_spill=spill64#14 = low5_spill=d13 = low5_spill=spill64#14 = hiw5_spill=d13 = hiw6_spill=spill64#15 = low6_spill=d14 = low6_spill=spill64#15 = hiw6_spill=d14 = hiw7_spill=spill64#16 = low7_spill=d15 = low7_spill=spill64#16 = hiw7_spill=d15 = hiw8=int64#1 = mem32[w8=u0 = mem32[w8=int64#1 = mem32[w8=u0 = mem32[w9=int64#2 = mem32[w9=u1 = mem32[w9=int64#2 = mem32[w9=u1 = mem32[w10=int64#3 = mem32[w10=u2 = mem32[w10=int64#3 = mem32[w10=u2 = mem32[w11=int64#4 = mem32[w11=u3 = mem32[w11=int64#4 = mem32[w11=u3 = mem32[w8=int64#1 = low8=u0 = low8=int64#1 = hiw8=u0 = hiw9=int64#2 = low9=u1 = low9=int64#2 = hiw9=u1 = hiw10=int64#3 = low10=u2 = low10=int64#3 = hiw10=u2 = hiw11=int64#4 = low11=u3 = low11=int64#4 = hiw11=u3 = hiw0_next=stack64#9 = low0_next=m8 = low0_next=stack64#9 = hiw0_next=m8 = hiw1_next=stack64#10 = low1_next=m9 = low1_next=stack64#10 = hiw1_next=m9 = hiw2_next=stack64#11 = low2_next=m10 = low2_next=stack64#11 = hiw2_next=m10 = hiw3_next=stack64#12 = low3_next=m11 = low3_next=stack64#12 = hiw3_next=m11 = hiw12=int64#1 = mem32[w12=u0 = mem32[w12=int64#1 = mem32[w12=u0 = mem32[w13=int64#2 = mem32[w13=u1 = mem32[w13=int64#2 = mem32[w13=u1 = mem32[w14=int64#3 = mem32[w14=u2 = mem32[w14=int64#3 = mem32[w14=u2 = mem32[w15=int64#4 = mem32[w15=u3 = mem32[w15=int64#4 = mem32[w15=u3 = mem32[w12=int64#1 = low12=u0 = low12=int64#1 = hiw12=u0 = hiw13=int64#2 = low13=u1 = low13=int64#2 = hiw13=u1 = hiw14=int64#3 = low14=u2 = low14=int64#3 = hiw14=u2 = hiw15=int64#4 = low15=u3 = low15=int64#4 = hiw15=u3 = hiw4_next=stack64#13 = low4_next=m12 = low4_next=stack64#13 = hiw4_next=m12 = hiw5_next=stack64#14 = low5_next=m13 = low5_next=stack64#14 = hiw5_next=m13 = hiw6_next=stack64#15 = low6_next=m14 = low6_next=stack64#15 = hiw6_next=m14 = hiw7_next=stack64#16 = low7_next=m15 = low7_next=stack64#16 = hiw7_next=m15 = hiin_stack=stack32#2 = in_stack=o1 = i=int32#1 = 80 simple +# asm 2: >i=input_0 = 80 simple +input_0 = 80 simple +# qhasm: i_stack = i +# asm 1: >i_stack=stack32#4 = i_stack=o3 = r3=int64#1 = lor3=u0 = lor3=int64#1 = hir3=u0 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#3 = lor5=u2 = lor5=int64#3 = hir5=u2 = hir6=int64#4 = lor6=u3 = lor6=int64#4 = hir6=u3 = hir7=int64#5 = lor7=u4 = lor7=int64#5 = hir7=u4 = hiw0=int64#6 = low0=u5 = low0=int64#6 = hiw0=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu1 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou1 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou1 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou1 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu1 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu1 unsigned>> 14) +# asm 1: hitmp ^= (lor3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir0=int64#2 = lor0=u1 = lor0=int64#2 = hir0=u1 = hir1=int64#3 = lor1=u2 = lor1=int64#3 = hir1=u2 = hir2=int64#4 = lor2=u3 = lor2=int64#4 = hir2=u3 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu1 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu1 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou1 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou1 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou1 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu1 unsigned>> 28) +# asm 1: hitmp ^= (lor7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#3 = lor5=u2 = lor5=int64#3 = hir5=u2 = hir6=int64#5 = lor6=u4 = lor6=int64#5 = hir6=u4 = hiw1=int64#6 = low1=u5 = low1=int64#6 = hiw1=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu0 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou0 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou0 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou0 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu0 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu0 unsigned>> 14) +# asm 1: hitmp ^= (lor2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir7=int64#1 = lor7=u0 = lor7=int64#1 = hir7=u0 = hir0=int64#2 = lor0=u1 = lor0=int64#2 = hir0=u1 = hir1=int64#3 = lor1=u2 = lor1=int64#3 = hir1=u2 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu0 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou0 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir3=int64#1 = lor3=u0 = lor3=int64#1 = hir3=u0 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#5 = lor5=u4 = lor5=int64#5 = hir5=u4 = hiw2=int64#6 = low2=u5 = low2=int64#6 = hiw2=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu3 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou3 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou3 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou3 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu3 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu3 unsigned>> 14) +# asm 1: hitmp ^= (lor1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir6=int64#1 = lor6=u0 = lor6=int64#1 = hir6=u0 = hir7=int64#2 = lor7=u1 = lor7=int64#2 = hir7=u1 = hir0=int64#4 = lor0=u3 = lor0=int64#4 = hir0=u3 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu0 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou0 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir2=int64#1 = lor2=u0 = lor2=int64#1 = hir2=u0 = hir3=int64#2 = lor3=u1 = lor3=int64#2 = hir3=u1 = hir4=int64#5 = lor4=u4 = lor4=int64#5 = hir4=u4 = hiw3=int64#6 = low3=u5 = low3=int64#6 = hiw3=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu2 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou2 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou2 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou2 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu2 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu2 unsigned>> 14) +# asm 1: hitmp ^= (lor0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hir5=int64#1 = lor5=u0 = lor5=int64#1 = hir5=u0 = hir6=int64#2 = lor6=u1 = lor6=int64#2 = hir6=u1 = hir7=int64#3 = lor7=u2 = lor7=int64#3 = hir7=u2 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu0 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou0 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir1=int64#1 = lor1=u0 = lor1=int64#1 = hir1=u0 = hir2=int64#2 = lor2=u1 = lor2=int64#2 = hir2=u1 = hir3=int64#5 = lor3=u4 = lor3=int64#5 = hir3=u4 = hiw4=int64#6 = low4=u5 = low4=int64#6 = hiw4=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu3 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou3 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou3 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou3 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu3 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu3 unsigned>> 14) +# asm 1: hitmp ^= (lor7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#4 = lor6=u3 = lor6=int64#4 = hir6=u3 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu0 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou0 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#5 = lor2=u4 = lor2=int64#5 = hir2=u4 = hiw5=int64#6 = low5=u5 = low5=int64#6 = hiw5=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu2 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou2 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou2 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou2 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu2 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu2 unsigned>> 14) +# asm 1: hitmp ^= (lor6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir3=int64#1 = lor3=u0 = lor3=int64#1 = hir3=u0 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#3 = lor5=u2 = lor5=int64#3 = hir5=u2 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu0 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou0 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir7=int64#1 = lor7=u0 = lor7=int64#1 = hir7=u0 = hir0=int64#2 = lor0=u1 = lor0=int64#2 = hir0=u1 = hir1=int64#5 = lor1=u4 = lor1=int64#5 = hir1=u4 = hiw6=int64#6 = low6=u5 = low6=int64#6 = hiw6=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu3 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou3 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou3 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou3 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu3 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu3 unsigned>> 14) +# asm 1: hitmp ^= (lor5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir2=int64#1 = lor2=u0 = lor2=int64#1 = hir2=u0 = hir3=int64#2 = lor3=u1 = lor3=int64#2 = hir3=u1 = hir4=int64#4 = lor4=u3 = lor4=int64#4 = hir4=u3 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu0 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou0 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir6=int64#1 = lor6=u0 = lor6=int64#1 = hir6=u0 = hir7=int64#2 = lor7=u1 = lor7=int64#2 = hir7=u1 = hir0=int64#5 = lor0=u4 = lor0=int64#5 = hir0=u4 = hiw7=int64#6 = low7=u5 = low7=int64#6 = hiw7=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu2 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou2 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou2 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou2 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu2 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu2 unsigned>> 14) +# asm 1: hitmp ^= (lor4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir1=int64#1 = lor1=u0 = lor1=int64#1 = hir1=u0 = hir2=int64#2 = lor2=u1 = lor2=int64#2 = hir2=u1 = hir3=int64#3 = lor3=u2 = lor3=int64#3 = hir3=u2 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu0 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou0 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hii=int32#1 = i=input_0 = i_stack=stack32#4 = i_stack=o3 = w8=int64#1 = low8=u0 = low8=int64#1 = hiw8=u0 = hiw9=int64#2 = low9=u1 = low9=int64#2 = hiw9=u1 = hiw6=int64#3 = low6=u2 = low6=int64#3 = hiw6=u2 = hiw1=int64#4 = low1=u3 = low1=int64#4 = hiw1=u3 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou2 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou2 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu2 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu2 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu2 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou2 unsigned>> 29) +# asm 1: hitmp ^= (hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou1 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu1 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou1 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu1 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou1 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu1 unsigned>>8) +# asm 1: hitmp ^= (low1_spill=spill64#10 = low1_spill=d9 = low1_spill=spill64#10 = hiw1_spill=d9 = hiw7=int64#4 = low7=u3 = low7=int64#4 = hiw7=u3 = hiw8_stack=stack64#16 = low8_stack=m15 = low8_stack=stack64#16 = hiw8_stack=m15 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou3 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou3 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu3 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu3 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu3 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou3 unsigned>> 29) +# asm 1: hitmp ^= (hiw10=int64#5 = low10=u4 = low10=int64#5 = hiw10=u4 = hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou4 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu4 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou4 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu4 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou4 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu4 unsigned>>8) +# asm 1: hitmp ^= (low2=int64#6 = low2=u5 = low2=int64#6 = hiw2=u5 = hiw2_spill=spill64#11 = low2_spill=d10 = low2_spill=spill64#11 = hiw2_spill=d10 = hiw1_next=stack64#10 = low1_next=m9 = low1_next=stack64#10 = hiw1_next=m9 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou0 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou0 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu0 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu0 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu0 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou0 unsigned>> 29) +# asm 1: hitmp ^= (hiw11=int64#1 = low11=u0 = low11=int64#1 = hiw11=u0 = hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou0 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu0 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou0 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu0 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou0 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu0 unsigned>>8) +# asm 1: hitmp ^= (low3=int64#6 = low3=u5 = low3=int64#6 = hiw3=u5 = hiw3_spill=spill64#12 = low3_spill=d11 = low3_spill=spill64#12 = hiw3_spill=d11 = hiw2_next=stack64#11 = low2_next=m10 = low2_next=stack64#11 = hiw2_next=m10 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou1 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou1 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu1 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu1 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu1 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou1 unsigned>> 29) +# asm 1: hitmp ^= (hiw12=int64#2 = low12=u1 = low12=int64#2 = hiw12=u1 = hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou1 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu1 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou1 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu1 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou1 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu1 unsigned>>8) +# asm 1: hitmp ^= (low4=int64#6 = low4=u5 = low4=int64#6 = hiw4=u5 = hiw4_spill=spill64#13 = low4_spill=d12 = low4_spill=spill64#13 = hiw4_spill=d12 = hiw3_next=stack64#12 = low3_next=m11 = low3_next=stack64#12 = hiw3_next=m11 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou4 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou4 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu4 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu4 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu4 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou4 unsigned>> 29) +# asm 1: hitmp ^= (hiw13=int64#5 = low13=u4 = low13=int64#5 = hiw13=u4 = hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou4 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu4 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou4 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu4 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou4 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu4 unsigned>>8) +# asm 1: hitmp ^= (low5=int64#6 = low5=u5 = low5=int64#6 = hiw5=u5 = hiw5_spill=spill64#14 = low5_spill=d13 = low5_spill=spill64#14 = hiw5_spill=d13 = hiw4_next=stack64#13 = low4_next=m12 = low4_next=stack64#13 = hiw4_next=m12 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou0 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou0 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu0 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu0 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu0 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou0 unsigned>> 29) +# asm 1: hitmp ^= (hiw14=int64#1 = low14=u0 = low14=int64#1 = hiw14=u0 = hiw6_spill=spill64#15 = low6_spill=d14 = low6_spill=spill64#15 = hiw6_spill=d14 = hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou0 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu0 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou0 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu0 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou0 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu0 unsigned>>8) +# asm 1: hitmp ^= (low5_next=stack64#14 = low5_next=m13 = low5_next=stack64#14 = hiw5_next=m13 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou1 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou1 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu1 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu1 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu1 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou1 unsigned>> 29) +# asm 1: hitmp ^= (hiw15=int64#2 = low15=u1 = low15=int64#2 = hiw15=u1 = hiw7_spill=spill64#16 = low7_spill=d15 = low7_spill=spill64#16 = hiw7_spill=d15 = hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou1 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu1 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou1 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu1 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou1 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu1 unsigned>>8) +# asm 1: hitmp ^= (low6_next=stack64#15 = low6_next=m14 = low6_next=stack64#15 = hiw6_next=m14 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou4 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou4 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu4 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu4 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu4 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou4 unsigned>> 29) +# asm 1: hitmp ^= (hiw0=int64#1 = low0=u0 = low0=int64#1 = hiw0=u0 = hiw8=int64#3 = low8=u2 = low8=int64#3 = hiw8=u2 = hiw0_next=stack64#9 = low0_next=m8 = low0_next=stack64#9 = hiw0_next=m8 = hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou0 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu0 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou0 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu0 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou0 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu0 unsigned>>8) +# asm 1: hitmp ^= (low7_next=stack64#16 = low7_next=m15 = low7_next=stack64#16 = hiw7_next=m15 = hiw0_spill=spill64#9 = low0_spill=d8 = low0_spill=spill64#9 = hiw0_spill=d8 = hiw0=int64#1 = low0=u0 = low0=int64#1 = hiw0=u0 = hiw1=int64#2 = low1=u1 = low1=int64#2 = hiw1=u1 = hiw2=int64#3 = low2=u2 = low2=int64#3 = hiw2=u2 = hiw3=int64#4 = low3=u3 = low3=int64#4 = hiw3=u3 = hiw0_spill=spill64#9 = low0_spill=d8 = low0_spill=spill64#9 = hiw0_spill=d8 = hiw1_spill=spill64#10 = low1_spill=d9 = low1_spill=spill64#10 = hiw1_spill=d9 = hiw2_spill=spill64#11 = low2_spill=d10 = low2_spill=spill64#11 = hiw2_spill=d10 = hiw3_spill=spill64#12 = low3_spill=d11 = low3_spill=spill64#12 = hiw3_spill=d11 = hiw4=int64#1 = low4=u0 = low4=int64#1 = hiw4=u0 = hiw5=int64#2 = low5=u1 = low5=int64#2 = hiw5=u1 = hiw6=int64#3 = low6=u2 = low6=int64#3 = hiw6=u2 = hiw7=int64#4 = low7=u3 = low7=int64#4 = hiw7=u3 = hiw4_spill=spill64#13 = low4_spill=d12 = low4_spill=spill64#13 = hiw4_spill=d12 = hiw5_spill=spill64#14 = low5_spill=d13 = low5_spill=spill64#14 = hiw5_spill=d13 = hiw6_spill=spill64#15 = low6_spill=d14 = low6_spill=spill64#15 = hiw6_spill=d14 = hiw7_spill=spill64#16 = low7_spill=d15 = low7_spill=spill64#16 = hiw7_spill=d15 = hir0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = histate0=stack64#1 = lostate0=m0 = lostate0=stack64#1 = histate0=m0 = histate1=stack64#2 = lostate1=m1 = lostate1=stack64#2 = histate1=m1 = histate2=stack64#3 = lostate2=m2 = lostate2=stack64#3 = histate2=m2 = histate3=stack64#4 = lostate3=m3 = lostate3=stack64#4 = histate3=m3 = hir0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hir1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = histate4=stack64#5 = lostate4=m4 = lostate4=stack64#5 = histate4=m4 = histate5=stack64#6 = lostate5=m5 = lostate5=stack64#6 = histate5=m5 = histate6=stack64#7 = lostate6=m6 = lostate6=stack64#7 = histate6=m6 = histate7=stack64#8 = lostate7=m7 = lostate7=stack64#8 = histate7=m7 = hir4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hiinlen=int32#1 = inlen=input_0 = =? inlen -= 128 +# asm 1: =? unsignedinlen_stack=stack32#3 = inlen_stack=o2 = = +goto mainloop if !unsigned< +# qhasm: endmainloop: +endmainloop: +# qhasm: statebytes = statebytes_stack +# asm 1: >statebytes=int32#2 = statebytes=input_1 = r0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = hir0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = hi/CRYPTO_SHARED_NAMESPACE(inner)/' > inner32.S + +inner32.q: inner.q inner32.top inner32.desc inner32.q.do + sh inner32.q.do > inner32.q + +inner.inc: inner.q inner.top inner.desc inner.c.do + sh inner.c.do > inner.inc diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/align b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/align new file mode 120000 index 0000000000..701f440544 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/align @@ -0,0 +1 @@ +../m3/align \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/api.h b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/api.h new file mode 120000 index 0000000000..1dfe625ff0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/api.h @@ -0,0 +1 @@ +../m3/api.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/architectures b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/architectures new file mode 120000 index 0000000000..9ccef9443d --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/architectures @@ -0,0 +1 @@ +../m3/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/constants.c b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/constants.c new file mode 120000 index 0000000000..d9f993dec8 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/constants.c @@ -0,0 +1 @@ +../m3/constants.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/copy-collector b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/copy-collector new file mode 120000 index 0000000000..f07c9ae7db --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/copy-collector @@ -0,0 +1 @@ +../m3/copy-collector \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/implementors b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/implementors new file mode 120000 index 0000000000..3476030106 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/implementors @@ -0,0 +1 @@ +../m3/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.c.do b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.c.do new file mode 120000 index 0000000000..39a00cb043 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.c.do @@ -0,0 +1 @@ +../m3/inner.c.do \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.desc b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.desc new file mode 120000 index 0000000000..fe90298386 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.desc @@ -0,0 +1 @@ +../m3/inner.desc \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.h b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.h new file mode 120000 index 0000000000..49c0a8e05d --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.h @@ -0,0 +1 @@ +../m3/inner.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.inc b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.inc new file mode 120000 index 0000000000..85735dc3f0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.inc @@ -0,0 +1 @@ +../m3/inner.inc \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.q b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.q new file mode 120000 index 0000000000..0938dd1698 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.q @@ -0,0 +1 @@ +../m3/inner.q \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.top b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.top new file mode 120000 index 0000000000..1d3ec7f428 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner.top @@ -0,0 +1 @@ +../m3/inner.top \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner32.S b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner32.S new file mode 100644 index 0000000000..863763cdac --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4inline/inner32.S @@ -0,0 +1,6879 @@ +// linker define inner + +# qhasm: int32 input_0 + +# qhasm: int32 input_1 + +# qhasm: int32 input_2 + +# qhasm: int32 input_3 + +# qhasm: stack32 input_4 + +# qhasm: stack32 input_5 + +# qhasm: stack32 input_6 + +# qhasm: stack32 input_7 + +# qhasm: int32 caller_r4 + +# qhasm: int32 caller_r5 + +# qhasm: int32 caller_r6 + +# qhasm: int32 caller_r7 + +# qhasm: int32 caller_r8 + +# qhasm: int32 caller_r9 + +# qhasm: int32 caller_r10 + +# qhasm: int32 caller_r11 + +# qhasm: int32 caller_r12 + +# qhasm: int32 caller_r14 + +# qhasm: startcode +.text +.arch armv7 +.fpu fpv4-sp-d16 +.syntax unified + +# qhasm: int32 lotmp + +# qhasm: int32 lotmp2 + +# qhasm: int32 hitmp + +# qhasm: int32 hitmp2 + +# qhasm: int32 lou0 + +# qhasm: int32 lou1 + +# qhasm: int32 lou2 + +# qhasm: int32 lou3 + +# qhasm: int32 lou4 + +# qhasm: int32 lou5 + +# qhasm: int32 hiu0 + +# qhasm: int32 hiu1 + +# qhasm: int32 hiu2 + +# qhasm: int32 hiu3 + +# qhasm: int32 hiu4 + +# qhasm: int32 hiu5 + +# qhasm: float32 hid0 + +# qhasm: float32 hid1 + +# qhasm: float32 hid2 + +# qhasm: float32 hid3 + +# qhasm: float32 hid4 + +# qhasm: float32 hid5 + +# qhasm: float32 hid6 + +# qhasm: float32 hid7 + +# qhasm: float32 hid8 + +# qhasm: float32 hid9 + +# qhasm: float32 hid10 + +# qhasm: float32 hid11 + +# qhasm: float32 hid12 + +# qhasm: float32 hid13 + +# qhasm: float32 hid14 + +# qhasm: float32 hid15 + +# qhasm: float32 lod0 + +# qhasm: float32 lod1 + +# qhasm: float32 lod2 + +# qhasm: float32 lod3 + +# qhasm: float32 lod4 + +# qhasm: float32 lod5 + +# qhasm: float32 lod6 + +# qhasm: float32 lod7 + +# qhasm: float32 lod8 + +# qhasm: float32 lod9 + +# qhasm: float32 lod10 + +# qhasm: float32 lod11 + +# qhasm: float32 lod12 + +# qhasm: float32 lod13 + +# qhasm: float32 lod14 + +# qhasm: float32 lod15 + +# qhasm: stack32 him0 + +# qhasm: stack32 him1 + +# qhasm: stack32 him2 + +# qhasm: stack32 him3 + +# qhasm: stack32 him4 + +# qhasm: stack32 him5 + +# qhasm: stack32 him6 + +# qhasm: stack32 him7 + +# qhasm: stack32 him8 + +# qhasm: stack32 him9 + +# qhasm: stack32 him10 + +# qhasm: stack32 him11 + +# qhasm: stack32 him12 + +# qhasm: stack32 him13 + +# qhasm: stack32 him14 + +# qhasm: stack32 him15 + +# qhasm: stack32 lom0 + +# qhasm: stack32 lom1 + +# qhasm: stack32 lom2 + +# qhasm: stack32 lom3 + +# qhasm: stack32 lom4 + +# qhasm: stack32 lom5 + +# qhasm: stack32 lom6 + +# qhasm: stack32 lom7 + +# qhasm: stack32 lom8 + +# qhasm: stack32 lom9 + +# qhasm: stack32 lom10 + +# qhasm: stack32 lom11 + +# qhasm: stack32 lom12 + +# qhasm: stack32 lom13 + +# qhasm: stack32 lom14 + +# qhasm: stack32 lom15 + +# qhasm: stack32 o0 + +# qhasm: stack32 o1 + +# qhasm: stack32 o2 + +# qhasm: stack32 o3 + +# qhasm: pushenter CRYPTO_SHARED_NAMESPACE(inner) +.p2align 2 +.global CRYPTO_SHARED_NAMESPACE(inner) +.type CRYPTO_SHARED_NAMESPACE(inner),%function +.thumb +.thumb_func +CRYPTO_SHARED_NAMESPACE(inner): +push {r4,r5,r6,r7,r8,r9,r10,r11,r14} +vpush {d8-d15} +sub.w sp,sp,#160 + +# qhasm: o0 = input_0 +# asm 1: str o0=stack32#1 +# asm 2: str o0=[sp,#0] +# copy-collector input: str r0,[sp,#0] + +# qhasm: o1 = input_1 +# asm 1: str o1=stack32#2 +# asm 2: str o1=[sp,#4] +# copy-collector input: str r1,[sp,#4] + +# qhasm: input_1 = input_2 - 128 +# asm 1: sub >input_1=int32#2,input_1=r1,o2=stack32#3 +# asm 2: str o2=[sp,#8] +# copy-collector input: str r1,[sp,#8] + +# qhasm: hiu0 = mem32[input_0] +# asm 1: ldr >hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#5,[hiu1=r4,[lou1=int32#6,[lou1=r5,[hiu2=int32#7,[hiu2=r6,[lou2=int32#8,[lou2=r7,[hiu3=int32#9,[hiu3=r8,[lou3=int32#10,[lou3=r9,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#6,lou1=r5,hiu1=int32#5,hiu1=r4,lou2=int32#8,lou2=r7,hiu2=int32#7,hiu2=r6,lou3=int32#10,lou3=r9,hiu3=int32#9,hiu3=r8,lom0=stack32#4 +# asm 2: str lom0=[sp,#12] +# copy-collector input: str r2,[sp,#12] + +# qhasm: him0 = hiu0 +# asm 1: str him0=stack32#5 +# asm 2: str him0=[sp,#16] +# copy-collector input: str r1,[sp,#16] + +# qhasm: lom1 = lou1 +# asm 1: str lom1=stack32#6 +# asm 2: str lom1=[sp,#20] +# copy-collector input: str r5,[sp,#20] + +# qhasm: him1 = hiu1 +# asm 1: str him1=stack32#7 +# asm 2: str him1=[sp,#24] +# copy-collector input: str r4,[sp,#24] + +# qhasm: lom2 = lou2 +# asm 1: str lom2=stack32#8 +# asm 2: str lom2=[sp,#28] +# copy-collector input: str r7,[sp,#28] + +# qhasm: him2 = hiu2 +# asm 1: str him2=stack32#9 +# asm 2: str him2=[sp,#32] +# copy-collector input: str r6,[sp,#32] + +# qhasm: lom3 = lou3 +# asm 1: str lom3=stack32#10 +# asm 2: str lom3=[sp,#36] +# copy-collector input: str r9,[sp,#36] + +# qhasm: him3 = hiu3 +# asm 1: str him3=stack32#11 +# asm 2: str him3=[sp,#40] +# copy-collector input: str r8,[sp,#40] + +# qhasm: lod0 = lou0 +# asm 1: vmov >lod0=float32#1,lod0=s0,hid0=float32#2,hid0=s1,lod1=float32#3,lod1=s2,hid1=float32#4,hid1=s3,lod2=float32#5,lod2=s4,hid2=float32#6,hid2=s5,lod3=float32#7,lod3=s6,hid3=float32#8,hid3=s7,hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#5,[hiu1=r4,[lou1=int32#6,[lou1=r5,[hiu2=int32#7,[hiu2=r6,[lou2=int32#8,[lou2=r7,[hiu3=int32#9,[hiu3=r8,[lou3=int32#1,[lou3=r0,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#6,lou1=r5,hiu1=int32#5,hiu1=r4,lou2=int32#8,lou2=r7,hiu2=int32#7,hiu2=r6,lou3=int32#1,lou3=r0,hiu3=int32#9,hiu3=r8,lom4=stack32#12 +# asm 2: str lom4=[sp,#44] +# copy-collector input: str r2,[sp,#44] + +# qhasm: him4 = hiu0 +# asm 1: str him4=stack32#13 +# asm 2: str him4=[sp,#48] +# copy-collector input: str r1,[sp,#48] + +# qhasm: lom5 = lou1 +# asm 1: str lom5=stack32#14 +# asm 2: str lom5=[sp,#52] +# copy-collector input: str r5,[sp,#52] + +# qhasm: him5 = hiu1 +# asm 1: str him5=stack32#15 +# asm 2: str him5=[sp,#56] +# copy-collector input: str r4,[sp,#56] + +# qhasm: lom6 = lou2 +# asm 1: str lom6=stack32#16 +# asm 2: str lom6=[sp,#60] +# copy-collector input: str r7,[sp,#60] + +# qhasm: him6 = hiu2 +# asm 1: str him6=stack32#17 +# asm 2: str him6=[sp,#64] +# copy-collector input: str r6,[sp,#64] + +# qhasm: lom7 = lou3 +# asm 1: str lom7=stack32#18 +# asm 2: str lom7=[sp,#68] +# copy-collector input: str r0,[sp,#68] + +# qhasm: him7 = hiu3 +# asm 1: str him7=stack32#19 +# asm 2: str him7=[sp,#72] +# copy-collector input: str r8,[sp,#72] + +# qhasm: lod4 = lou0 +# asm 1: vmov >lod4=float32#9,lod4=s8,hid4=float32#10,hid4=s9,lod5=float32#11,lod5=s10,hid5=float32#12,hid5=s11,lod6=float32#13,lod6=s12,hid6=float32#14,hid6=s13,lod7=float32#15,lod7=s14,hid7=float32#16,hid7=s15,input_1=int32#1,input_1=r0,input_0=int32#2,input_0=r1,hiu0=int32#3,[hiu0=r2,[lou0=int32#4,[lou0=r3,[hiu1=int32#5,[hiu1=r4,[lou1=int32#6,[lou1=r5,[hiu2=int32#7,[hiu2=r6,[lou2=int32#8,[lou2=r7,[hiu3=int32#9,[hiu3=r8,[lou3=int32#10,[lou3=r9,[lou0=int32#4,lou0=r3,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#5,hiu1=r4,lou2=int32#8,lou2=r7,hiu2=int32#7,hiu2=r6,lou3=int32#10,lou3=r9,hiu3=int32#9,hiu3=r8,lod8=float32#17,lod8=s16,hid8=float32#18,hid8=s17,lod9=float32#19,lod9=s18,hid9=float32#20,hid9=s19,lod10=float32#21,lod10=s20,hid10=float32#22,hid10=s21,lod11=float32#23,lod11=s22,hid11=float32#24,hid11=s23,hiu0=int32#3,[hiu0=r2,[lou0=int32#4,[lou0=r3,[hiu1=int32#5,[hiu1=r4,[lou1=int32#6,[lou1=r5,[hiu2=int32#7,[hiu2=r6,[lou2=int32#8,[lou2=r7,[hiu3=int32#9,[hiu3=r8,[lou3=int32#10,[lou3=r9,[lou0=int32#4,lou0=r3,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#5,hiu1=r4,lou2=int32#8,lou2=r7,hiu2=int32#7,hiu2=r6,lou3=int32#10,lou3=r9,hiu3=int32#9,hiu3=r8,lod12=float32#25,lod12=s24,hid12=float32#26,hid12=s25,lod13=float32#27,lod13=s26,hid13=float32#28,hid13=s27,lod14=float32#29,lod14=s28,hid14=float32#30,hid14=s29,lod15=float32#31,lod15=s30,hid15=float32#32,hid15=s31,hiu0=int32#3,[hiu0=r2,[lou0=int32#4,[lou0=r3,[hiu1=int32#5,[hiu1=r4,[lou1=int32#6,[lou1=r5,[hiu2=int32#7,[hiu2=r6,[lou2=int32#8,[lou2=r7,[hiu3=int32#9,[hiu3=r8,[lou3=int32#10,[lou3=r9,[lou0=int32#4,lou0=r3,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#5,hiu1=r4,lou2=int32#8,lou2=r7,hiu2=int32#7,hiu2=r6,lou3=int32#10,lou3=r9,hiu3=int32#9,hiu3=r8,lom8=stack32#20 +# asm 2: str lom8=[sp,#76] +# copy-collector input: str r3,[sp,#76] + +# qhasm: him8 = hiu0 +# asm 1: str him8=stack32#21 +# asm 2: str him8=[sp,#80] +# copy-collector input: str r2,[sp,#80] + +# qhasm: lom9 = lou1 +# asm 1: str lom9=stack32#22 +# asm 2: str lom9=[sp,#84] +# copy-collector input: str r5,[sp,#84] + +# qhasm: him9 = hiu1 +# asm 1: str him9=stack32#23 +# asm 2: str him9=[sp,#88] +# copy-collector input: str r4,[sp,#88] + +# qhasm: lom10 = lou2 +# asm 1: str lom10=stack32#24 +# asm 2: str lom10=[sp,#92] +# copy-collector input: str r7,[sp,#92] + +# qhasm: him10 = hiu2 +# asm 1: str him10=stack32#25 +# asm 2: str him10=[sp,#96] +# copy-collector input: str r6,[sp,#96] + +# qhasm: lom11 = lou3 +# asm 1: str lom11=stack32#26 +# asm 2: str lom11=[sp,#100] +# copy-collector input: str r9,[sp,#100] + +# qhasm: him11 = hiu3 +# asm 1: str him11=stack32#27 +# asm 2: str him11=[sp,#104] +# copy-collector input: str r8,[sp,#104] + +# qhasm: hiu0 = mem32[input_0]; input_0 += 4 +# asm 1: ldr >hiu0=int32#3,[hiu0=r2,[lou0=int32#4,[lou0=r3,[hiu1=int32#5,[hiu1=r4,[lou1=int32#6,[lou1=r5,[hiu2=int32#7,[hiu2=r6,[lou2=int32#8,[lou2=r7,[hiu3=int32#9,[hiu3=r8,[lou3=int32#10,[lou3=r9,[lou0=int32#4,lou0=r3,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#5,hiu1=r4,lou2=int32#8,lou2=r7,hiu2=int32#7,hiu2=r6,lou3=int32#10,lou3=r9,hiu3=int32#9,hiu3=r8,lom12=stack32#28 +# asm 2: str lom12=[sp,#108] +# copy-collector input: str r3,[sp,#108] + +# qhasm: him12 = hiu0 +# asm 1: str him12=stack32#29 +# asm 2: str him12=[sp,#112] +# copy-collector input: str r2,[sp,#112] + +# qhasm: lom13 = lou1 +# asm 1: str lom13=stack32#30 +# asm 2: str lom13=[sp,#116] +# copy-collector input: str r5,[sp,#116] + +# qhasm: him13 = hiu1 +# asm 1: str him13=stack32#31 +# asm 2: str him13=[sp,#120] +# copy-collector input: str r4,[sp,#120] + +# qhasm: lom14 = lou2 +# asm 1: str lom14=stack32#32 +# asm 2: str lom14=[sp,#124] +# copy-collector input: str r7,[sp,#124] + +# qhasm: him14 = hiu2 +# asm 1: str him14=stack32#33 +# asm 2: str him14=[sp,#128] +# copy-collector input: str r6,[sp,#128] + +# qhasm: lom15 = lou3 +# asm 1: str lom15=stack32#34 +# asm 2: str lom15=[sp,#132] +# copy-collector input: str r9,[sp,#132] + +# qhasm: him15 = hiu3 +# asm 1: str him15=stack32#35 +# asm 2: str him15=[sp,#136] +# copy-collector input: str r8,[sp,#136] + +# qhasm: o1 = input_0 +# asm 1: str o1=stack32#2 +# asm 2: str o1=[sp,#4] +# copy-collector input: str r1,[sp,#4] + +# qhasm: input_0 = 80 simple +# asm 1: mov >input_0=int32#2,80 +# asm 2: mov >input_0=r1,80 +# copy-collector output starts +strd r3,r2,[sp,#108] +strd r5,r4,[sp,#116] +strd r7,r6,[sp,#124] +strd r9,r8,[sp,#132] +str r1,[sp,#4] +# copy-collector output ends +mov r1,80 + +# qhasm: o3 = input_0 +# asm 1: str o3=stack32#36 +# asm 2: str o3=[sp,#140] +# copy-collector input: str r1,[sp,#140] + +# qhasm: innerloop: +# copy-collector output starts +str r1,[sp,#140] +# copy-collector output ends +._innerloop: + +# qhasm: assign 0 to lod0 + +# qhasm: assign 1 to hid0 + +# qhasm: assign 2 to lod1 + +# qhasm: assign 3 to hid1 + +# qhasm: assign 4 to lod2 + +# qhasm: assign 5 to hid2 + +# qhasm: assign 6 to lod3 + +# qhasm: assign 7 to hid3 + +# qhasm: assign 8 to lod4 + +# qhasm: assign 9 to hid4 + +# qhasm: assign 10 to lod5 + +# qhasm: assign 11 to hid5 + +# qhasm: assign 12 to lod6 + +# qhasm: assign 13 to hid6 + +# qhasm: assign 14 to lod7 + +# qhasm: assign 15 to hid7 + +# qhasm: lou0 = lod3 +# asm 1: vmov >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#10,lou4=r9,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#11,hiu4=r10,lotmp=int32#6,lotmp=r5,lotmp2=int32#4,lotmp2=r3,lotmp=int32#4,lotmp=r3,lou4=int32#4,lou4=r3,hitmp=int32#6,hitmp=r5,hitmp2=int32#5,hitmp2=r4,hitmp=int32#5,hitmp=r4,hiu4=int32#5,hiu4=r4,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lod3=float32#7,lod3=s6,hid3=float32#8,hid3=s7,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou2=int32#8,lou2=r7,hiu2=int32#9,hiu2=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,> 7) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#4,lou4=r3,> 7) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 2) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 28) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#5,hiu4=r4,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#4,lou4=r3,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#5,hiu4=r4,lod7=float32#15,lod7=s14,hid7=float32#16,hid7=s15,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#8,lou4=r7,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#9,hiu4=r8,lotmp=int32#4,lotmp=r3,lotmp2=int32#2,lotmp2=r1,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#4,hitmp=r3,hitmp2=int32#3,hitmp2=r2,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod2=float32#5,lod2=s4,hid2=float32#6,hid2=s5,lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou2=int32#10,lou2=r9,hiu2=int32#11,hiu2=r10,> 7) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#2,lou4=r1,> 7) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 2) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 28) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod6=float32#13,lod6=s12,hid6=float32#14,hid6=s13,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#8,lou4=r7,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou2=int32#4,lou2=r3,hiu2=int32#5,hiu2=r4,lod1=float32#3,lod1=s2,hid1=float32#4,hid1=s3,lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,> 7) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#2,lou4=r1,> 7) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 2) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 28) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod5=float32#11,lod5=s10,hid5=float32#12,hid5=s11,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#8,lou4=r7,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod0=float32#1,lod0=s0,hid0=float32#2,hid0=s1,lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou2=int32#10,lou2=r9,hiu2=int32#11,hiu2=r10,> 7) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#2,lou4=r1,> 7) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 2) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 28) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod4=float32#9,lod4=s8,hid4=float32#10,hid4=s9,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#8,lou4=r7,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou2=int32#4,lou2=r3,hiu2=int32#5,hiu2=r4,lod7=float32#15,lod7=s14,hid7=float32#16,hid7=s15,lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,> 7) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#2,lou4=r1,> 7) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 2) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 28) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod3=float32#7,lod3=s6,hid3=float32#8,hid3=s7,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#8,lou4=r7,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod6=float32#13,lod6=s12,hid6=float32#14,hid6=s13,lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou2=int32#10,lou2=r9,hiu2=int32#11,hiu2=r10,> 7) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#2,lou4=r1,> 7) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 2) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 28) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod2=float32#5,lod2=s4,hid2=float32#6,hid2=s5,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#8,lou4=r7,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou2=int32#4,lou2=r3,hiu2=int32#5,hiu2=r4,lod5=float32#11,lod5=s10,hid5=float32#12,hid5=s11,lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,> 7) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#2,lou4=r1,> 7) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 2) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 28) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod1=float32#3,lod1=s2,hid1=float32#4,hid1=s3,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,> 9) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 18) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 14) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#8,lou4=r7,> 9) +# asm 1: mov >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod4=float32#9,lod4=s8,hid4=float32#10,hid4=s9,lou0=int32#4,lou0=r3,hiu0=int32#5,hiu0=r4,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou2=int32#8,lou2=r7,hiu2=int32#9,hiu2=r8,> 7) +# asm 1: mov >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 2) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 28) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,lou4=int32#2,lou4=r1,> 7) +# asm 1: mov >hitmp=int32#10,hitmp=r9,hitmp=int32#10,hitmp=r9,> 2) +# asm 1: eor >hitmp=int32#10,hitmp=r9,hitmp=int32#10,hitmp=r9,> 28) +# asm 1: eor >hitmp=int32#10,hitmp=r9,hitmp=int32#10,hitmp=r9,hiu4=int32#3,hiu4=r2,lotmp=int32#10,lotmp=r9,lotmp=int32#4,lotmp=r3,lotmp2=int32#6,lotmp2=r5,lotmp=int32#4,lotmp=r3,lou4=int32#2,lou4=r1,hitmp=int32#4,hitmp=r3,hitmp=int32#4,hitmp=r3,hitmp2=int32#5,hitmp2=r4,hitmp=int32#4,hitmp=r3,hiu4=int32#3,hiu4=r2,lod0=float32#1,lod0=s0,hid0=float32#2,hid0=s1,input_0=int32#2,input_0=r1,input_0=int32#2,input_0=r1,o3=stack32#36 +# asm 2: str o3=[sp,#140] +# copy-collector input: str r1,[sp,#140] + +# qhasm: =? input_0 - 8 +# asm 1: cmp lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,> 6) +# asm 1: mov >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 19) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 29) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,lou0=int32#2,lou0=r1,> 6) +# asm 1: mov >hitmp=int32#10,hitmp=r9,> 19) +# asm 1: eor >hitmp=int32#10,hitmp=r9,hitmp=int32#10,hitmp=r9,> 29) +# asm 1: eor >hitmp=int32#10,hitmp=r9,hitmp=int32#10,hitmp=r9,hiu0=int32#3,hiu0=r2,> 1) +# asm 1: movs >lotmp=int32#10,lotmp=r9,> 1) +# asm 1: mov >hitmp=int32#11,hitmp=r10,lotmp=int32#10,lotmp=r9,>7) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,>7) +# asm 1: eor >hitmp=int32#11,hitmp=r10,>8) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,>8) +# asm 1: eor >hitmp=int32#11,hitmp=r10,hitmp=int32#11,hitmp=r10,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lod9=float32#19,lod9=s18,hid9=float32#20,hid9=s19,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lom15=stack32#34 +# asm 2: str lom15=[sp,#132] +# copy-collector input: str r1,[sp,#132] + +# qhasm: him15 = hiu0 +# asm 1: str him15=stack32#35 +# asm 2: str him15=[sp,#136] +# copy-collector input: str r2,[sp,#136] + +# qhasm: lotmp = (lou3 unsigned>> 6) +# asm 1: mov >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 19) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 29) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,lou1=int32#4,lou1=r3,> 6) +# asm 1: mov >hitmp=int32#10,hitmp=r9,> 19) +# asm 1: eor >hitmp=int32#10,hitmp=r9,hitmp=int32#10,hitmp=r9,> 29) +# asm 1: eor >hitmp=int32#10,hitmp=r9,hitmp=int32#10,hitmp=r9,hiu1=int32#5,hiu1=r4,lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,> 1) +# asm 1: movs >lotmp=int32#12,lotmp=r11,> 1) +# asm 1: mov >hitmp=int32#13,hitmp=r12,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,>8) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>8) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lod10=float32#21,lod10=s20,hid10=float32#22,hid10=s21,lom9=stack32#22 +# asm 2: str lom9=[sp,#84] +# copy-collector input: str r3,[sp,#84] + +# qhasm: him9 = hiu1 +# asm 1: str him9=stack32#23 +# asm 2: str him9=[sp,#88] +# copy-collector input: str r4,[sp,#88] + +# qhasm: lotmp = (lou0 unsigned>> 6) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 19) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 29) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#10,lou4=r9,> 6) +# asm 1: mov >hitmp=int32#12,hitmp=r11,> 19) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 29) +# asm 1: eor >hitmp=int32#2,hitmp=r1,hitmp=int32#2,hitmp=r1,hiu4=int32#2,hiu4=r1,lou0=int32#3,lou0=r2,hiu0=int32#11,hiu0=r10,> 1) +# asm 1: movs >lotmp=int32#12,lotmp=r11,> 1) +# asm 1: mov >hitmp=int32#13,hitmp=r12,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,>8) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>8) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#10,lou4=r9,hiu4=int32#2,hiu4=r1,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou4=int32#10,lou4=r9,hiu4=int32#2,hiu4=r1,lod11=float32#23,lod11=s22,hid11=float32#24,hid11=s23,lom10=stack32#24 +# asm 2: str lom10=[sp,#92] +# copy-collector input: str r9,[sp,#92] + +# qhasm: him10 = hiu4 +# asm 1: str him10=stack32#25 +# asm 2: str him10=[sp,#96] +# copy-collector input: str r1,[sp,#96] + +# qhasm: lotmp = (lou1 unsigned>> 6) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 19) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 29) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou0=int32#3,lou0=r2,> 6) +# asm 1: mov >hitmp=int32#12,hitmp=r11,> 19) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 29) +# asm 1: eor >hitmp=int32#4,hitmp=r3,hitmp=int32#4,hitmp=r3,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#11,hiu1=r10,> 1) +# asm 1: movs >lotmp=int32#12,lotmp=r11,> 1) +# asm 1: mov >hitmp=int32#13,hitmp=r12,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,>8) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>8) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lod12=float32#25,lod12=s24,hid12=float32#26,hid12=s25,lom11=stack32#26 +# asm 2: str lom11=[sp,#100] +# copy-collector input: str r2,[sp,#100] + +# qhasm: him11 = hiu0 +# asm 1: str him11=stack32#27 +# asm 2: str him11=[sp,#104] +# copy-collector input: str r3,[sp,#104] + +# qhasm: lotmp = (lou4 unsigned>> 6) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 19) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 29) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou1=int32#5,lou1=r4,> 6) +# asm 1: mov >hitmp=int32#12,hitmp=r11,> 19) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 29) +# asm 1: eor >hitmp=int32#10,hitmp=r9,hitmp=int32#2,hitmp=r1,hiu1=int32#2,hiu1=r1,lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,> 1) +# asm 1: movs >lotmp=int32#12,lotmp=r11,> 1) +# asm 1: mov >hitmp=int32#13,hitmp=r12,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,>8) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>8) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou1=int32#5,lou1=r4,hiu1=int32#2,hiu1=r1,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,lou1=int32#5,lou1=r4,hiu1=int32#2,hiu1=r1,lod13=float32#27,lod13=s26,hid13=float32#28,hid13=s27,lom12=stack32#28 +# asm 2: str lom12=[sp,#108] +# copy-collector input: str r4,[sp,#108] + +# qhasm: him12 = hiu1 +# asm 1: str him12=stack32#29 +# asm 2: str him12=[sp,#112] +# copy-collector input: str r1,[sp,#112] + +# qhasm: lotmp = (lou0 unsigned>> 6) +# asm 1: mov >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 19) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 29) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,lou4=int32#10,lou4=r9,> 6) +# asm 1: mov >hitmp=int32#12,hitmp=r11,> 19) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 29) +# asm 1: eor >hitmp=int32#3,hitmp=r2,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou0=int32#4,lou0=r3,hiu0=int32#11,hiu0=r10,lod14=float32#29,lod14=s28,hid14=float32#30,hid14=s29,> 1) +# asm 1: movs >lotmp=int32#12,lotmp=r11,> 1) +# asm 1: mov >hitmp=int32#13,hitmp=r12,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,>8) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>8) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#10,lou4=r9,hiu4=int32#3,hiu4=r2,lou4=int32#6,lou4=r5,hiu4=int32#3,hiu4=r2,lom13=stack32#30 +# asm 2: str lom13=[sp,#116] +# copy-collector input: str r5,[sp,#116] + +# qhasm: him13 = hiu4 +# asm 1: str him13=stack32#31 +# asm 2: str him13=[sp,#120] +# copy-collector input: str r2,[sp,#120] + +# qhasm: lotmp = (lou1 unsigned>> 6) +# asm 1: mov >lotmp=int32#7,lotmp=r6,lotmp=int32#7,lotmp=r6,> 19) +# asm 1: eor >lotmp=int32#7,lotmp=r6,lotmp=int32#7,lotmp=r6,> 29) +# asm 1: eor >lotmp=int32#7,lotmp=r6,lotmp=int32#7,lotmp=r6,lou0=int32#4,lou0=r3,> 6) +# asm 1: mov >hitmp=int32#7,hitmp=r6,> 19) +# asm 1: eor >hitmp=int32#7,hitmp=r6,hitmp=int32#7,hitmp=r6,> 29) +# asm 1: eor >hitmp=int32#5,hitmp=r4,hitmp=int32#2,hitmp=r1,hiu0=int32#2,hiu0=r1,lou1=int32#5,lou1=r4,hiu1=int32#7,hiu1=r6,lod15=float32#31,lod15=s30,hid15=float32#32,hid15=s31,> 1) +# asm 1: movs >lotmp=int32#10,lotmp=r9,> 1) +# asm 1: mov >hitmp=int32#11,hitmp=r10,lotmp=int32#10,lotmp=r9,>7) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,>7) +# asm 1: eor >hitmp=int32#11,hitmp=r10,>8) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,>8) +# asm 1: eor >hitmp=int32#11,hitmp=r10,hitmp=int32#11,hitmp=r10,lou0=int32#4,lou0=r3,hiu0=int32#2,hiu0=r1,lou0=int32#4,lou0=r3,hiu0=int32#2,hiu0=r1,lom14=stack32#32 +# asm 2: str lom14=[sp,#124] +# copy-collector input: str r3,[sp,#124] + +# qhasm: him14 = hiu0 +# asm 1: str him14=stack32#33 +# asm 2: str him14=[sp,#128] +# copy-collector input: str r1,[sp,#128] + +# qhasm: lotmp = (lou4 unsigned>> 6) +# asm 1: mov >lotmp=int32#2,lotmp=r1,lotmp=int32#2,lotmp=r1,> 19) +# asm 1: eor >lotmp=int32#2,lotmp=r1,lotmp=int32#2,lotmp=r1,> 29) +# asm 1: eor >lotmp=int32#2,lotmp=r1,lotmp=int32#2,lotmp=r1,lou1=int32#2,lou1=r1,> 6) +# asm 1: mov >hitmp=int32#4,hitmp=r3,> 19) +# asm 1: eor >hitmp=int32#4,hitmp=r3,hitmp=int32#4,hitmp=r3,> 29) +# asm 1: eor >hitmp=int32#4,hitmp=r3,hitmp=int32#3,hitmp=r2,hiu1=int32#3,hiu1=r2,lou0=int32#4,lou0=r3,hiu0=int32#5,hiu0=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lom8=stack32#20 +# asm 2: str lom8=[sp,#76] +# copy-collector input: str r5,[sp,#76] + +# qhasm: him8 = hiu2 +# asm 1: str him8=stack32#21 +# asm 2: str him8=[sp,#80] +# copy-collector input: str r6,[sp,#80] + +# qhasm: carry? lotmp = (lou0 unsigned>> 1) +# asm 1: movs >lotmp=int32#8,lotmp=r7,> 1) +# asm 1: mov >hitmp=int32#9,hitmp=r8,lotmp=int32#8,lotmp=r7,>7) +# asm 1: eor >lotmp=int32#8,lotmp=r7,lotmp=int32#8,lotmp=r7,>7) +# asm 1: eor >hitmp=int32#9,hitmp=r8,>8) +# asm 1: eor >lotmp=int32#8,lotmp=r7,lotmp=int32#8,lotmp=r7,>8) +# asm 1: eor >hitmp=int32#9,hitmp=r8,hitmp=int32#9,hitmp=r8,lou1=int32#2,lou1=r1,hiu1=int32#3,hiu1=r2,lou1=int32#2,lou1=r1,hiu1=int32#3,hiu1=r2,lom15=stack32#34 +# asm 2: str lom15=[sp,#132] +# copy-collector input: str r1,[sp,#132] + +# qhasm: him15 = hiu1 +# asm 1: str him15=stack32#35 +# asm 2: str him15=[sp,#136] +# copy-collector input: str r2,[sp,#136] + +# qhasm: lod8 = lou0 +# asm 1: vmov >lod8=float32#17,lod8=s16,hid8=float32#18,hid8=s17,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lod8=float32#17,lod8=s16,hid8=float32#18,hid8=s17,lod9=float32#19,lod9=s18,hid9=float32#20,hid9=s19,lod10=float32#21,lod10=s20,hid10=float32#22,hid10=s21,lod11=float32#23,lod11=s22,hid11=float32#24,hid11=s23,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lod12=float32#25,lod12=s24,hid12=float32#26,hid12=s25,lod13=float32#27,lod13=s26,hid13=float32#28,hid13=s27,lod14=float32#29,lod14=s28,hid14=float32#30,hid14=s29,lod15=float32#31,lod15=s30,hid15=float32#32,hid15=s31,input_1=int32#1,input_1=r0,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lom0=stack32#4 +# asm 2: str lom0=[sp,#12] +# copy-collector input: str r1,[sp,#12] + +# qhasm: him0 = hiu0 +# asm 1: str him0=stack32#5 +# asm 2: str him0=[sp,#16] +# copy-collector input: str r2,[sp,#16] + +# qhasm: lom1 = lou1 +# asm 1: str lom1=stack32#6 +# asm 2: str lom1=[sp,#20] +# copy-collector input: str r3,[sp,#20] + +# qhasm: him1 = hiu1 +# asm 1: str him1=stack32#7 +# asm 2: str him1=[sp,#24] +# copy-collector input: str r4,[sp,#24] + +# qhasm: lom2 = lou2 +# asm 1: str lom2=stack32#8 +# asm 2: str lom2=[sp,#28] +# copy-collector input: str r5,[sp,#28] + +# qhasm: him2 = hiu2 +# asm 1: str him2=stack32#9 +# asm 2: str him2=[sp,#32] +# copy-collector input: str r6,[sp,#32] + +# qhasm: lom3 = lou3 +# asm 1: str lom3=stack32#10 +# asm 2: str lom3=[sp,#36] +# copy-collector input: str r7,[sp,#36] + +# qhasm: him3 = hiu3 +# asm 1: str him3=stack32#11 +# asm 2: str him3=[sp,#40] +# copy-collector input: str r8,[sp,#40] + +# qhasm: lod0 = lou0 +# asm 1: vmov >lod0=float32#1,lod0=s0,hid0=float32#2,hid0=s1,lod1=float32#3,lod1=s2,hid1=float32#4,hid1=s3,lod2=float32#5,lod2=s4,hid2=float32#6,hid2=s5,lod3=float32#7,lod3=s6,hid3=float32#8,hid3=s7,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lotmp=int32#10,lotmp=r9,hitmp=int32#11,hitmp=r10,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lom4=stack32#12 +# asm 2: str lom4=[sp,#44] +# copy-collector input: str r1,[sp,#44] + +# qhasm: him4 = hiu0 +# asm 1: str him4=stack32#13 +# asm 2: str him4=[sp,#48] +# copy-collector input: str r2,[sp,#48] + +# qhasm: lom5 = lou1 +# asm 1: str lom5=stack32#14 +# asm 2: str lom5=[sp,#52] +# copy-collector input: str r3,[sp,#52] + +# qhasm: him5 = hiu1 +# asm 1: str him5=stack32#15 +# asm 2: str him5=[sp,#56] +# copy-collector input: str r4,[sp,#56] + +# qhasm: lom6 = lou2 +# asm 1: str lom6=stack32#16 +# asm 2: str lom6=[sp,#60] +# copy-collector input: str r5,[sp,#60] + +# qhasm: him6 = hiu2 +# asm 1: str him6=stack32#17 +# asm 2: str him6=[sp,#64] +# copy-collector input: str r6,[sp,#64] + +# qhasm: lom7 = lou3 +# asm 1: str lom7=stack32#18 +# asm 2: str lom7=[sp,#68] +# copy-collector input: str r7,[sp,#68] + +# qhasm: him7 = hiu3 +# asm 1: str him7=stack32#19 +# asm 2: str him7=[sp,#72] +# copy-collector input: str r8,[sp,#72] + +# qhasm: lod4 = lou0 +# asm 1: vmov >lod4=float32#9,lod4=s8,hid4=float32#10,hid4=s9,lod5=float32#11,lod5=s10,hid5=float32#12,hid5=s11,lod6=float32#13,lod6=s12,hid6=float32#14,hid6=s13,lod7=float32#15,lod7=s14,hid7=float32#16,hid7=s15,input_0=int32#2,input_0=r1,input_0=int32#2,input_0=r1,o2=stack32#3 +# asm 2: str o2=[sp,#8] +# copy-collector input: str r1,[sp,#8] + +# qhasm: goto mainloop if !unsigned< +# copy-collector output starts +str r1,[sp,#8] +# copy-collector output ends +bhs ._mainloop + +# qhasm: endmainloop: +._endmainloop: + +# qhasm: input_1 = o0 +# asm 1: ldr >input_1=int32#1,input_1=r0,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,input_0=int32#1,input_0=r0,=: + +pushenter f:enter/f:>input_0=int32#1:>input_1=int32#2:>input_2=int32#3:>input_3=int32#4:asm/pushenter #f: + +popreturn r:=:#f:jump/f:=:asm/goto #f if !unsigned!lt;: + +r = s:>r=int32:r = r=int32:#n:asm/>r = #n: +r = n simple:>r=int32:#n:asm/>r = #n simple: +r += n:r=int32:#n:asm/r=int32:r = r=int32:r = r=stack32:r = r=int32:#n:asm/r=int32:#n:>?=:asm/=? r=int32:#n:>?=:>?unsigned>=:asm/=? unsigned!lt;? r=int64:r = lor = hir=int64:r = lor = hir=stack64:r = lor = hir=int64:r = lor = hir=spill64:r = lor = hir=int64:r = mem32[r = mem32[r=int64:r = mem32[r = mem32[r=int64:r = mem32[r = mem32[r=int64:r = lor = hir=int64:r=int64:r=int64:r=int64:r=int64:r=int64:statebytes_stack=stack32#1 = statebytes_stack=o0 = in_stack=stack32#2 = in_stack=o1 = inlen=int32#2 = inlen=input_1 = inlen_stack=stack32#3 = inlen_stack=o2 = r0=int64#1 = mem32[r0=u0 = mem32[r0=int64#1 = mem32[r0=u0 = mem32[r1=int64#2 = mem32[r1=u1 = mem32[r1=int64#2 = mem32[r1=u1 = mem32[r2=int64#3 = mem32[r2=u2 = mem32[r2=int64#3 = mem32[r2=u2 = mem32[r3=int64#4 = mem32[r3=u3 = mem32[r3=int64#4 = mem32[r3=u3 = mem32[r0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = histate0=stack64#1 = lostate0=m0 = lostate0=stack64#1 = histate0=m0 = histate1=stack64#2 = lostate1=m1 = lostate1=stack64#2 = histate1=m1 = histate2=stack64#3 = lostate2=m2 = lostate2=stack64#3 = histate2=m2 = histate3=stack64#4 = lostate3=m3 = lostate3=stack64#4 = histate3=m3 = hir0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hir1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir4=int64#1 = mem32[r4=u0 = mem32[r4=int64#1 = mem32[r4=u0 = mem32[r5=int64#2 = mem32[r5=u1 = mem32[r5=int64#2 = mem32[r5=u1 = mem32[r6=int64#3 = mem32[r6=u2 = mem32[r6=int64#3 = mem32[r6=u2 = mem32[r7=int64#4 = mem32[r7=u3 = mem32[r7=int64#4 = mem32[r7=u3 = mem32[r4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = histate4=stack64#5 = lostate4=m4 = lostate4=stack64#5 = histate4=m4 = histate5=stack64#6 = lostate5=m5 = lostate5=stack64#6 = histate5=m5 = histate6=stack64#7 = lostate6=m6 = lostate6=stack64#7 = histate6=m6 = histate7=stack64#8 = lostate7=m7 = lostate7=stack64#8 = histate7=m7 = hir4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hiconstants=int32#2 = constants=input_1 = in=int32#1 = in=input_0 = w0=int64#1 = mem32[w0=u0 = mem32[w0=int64#1 = mem32[w0=u0 = mem32[w1=int64#2 = mem32[w1=u1 = mem32[w1=int64#2 = mem32[w1=u1 = mem32[w2=int64#3 = mem32[w2=u2 = mem32[w2=int64#3 = mem32[w2=u2 = mem32[w3=int64#4 = mem32[w3=u3 = mem32[w3=int64#4 = mem32[w3=u3 = mem32[w0=int64#1 = low0=u0 = low0=int64#1 = hiw0=u0 = hiw1=int64#2 = low1=u1 = low1=int64#2 = hiw1=u1 = hiw2=int64#3 = low2=u2 = low2=int64#3 = hiw2=u2 = hiw3=int64#4 = low3=u3 = low3=int64#4 = hiw3=u3 = hiw0_spill=spill64#9 = low0_spill=d8 = low0_spill=spill64#9 = hiw0_spill=d8 = hiw1_spill=spill64#10 = low1_spill=d9 = low1_spill=spill64#10 = hiw1_spill=d9 = hiw2_spill=spill64#11 = low2_spill=d10 = low2_spill=spill64#11 = hiw2_spill=d10 = hiw3_spill=spill64#12 = low3_spill=d11 = low3_spill=spill64#12 = hiw3_spill=d11 = hiw4=int64#1 = mem32[w4=u0 = mem32[w4=int64#1 = mem32[w4=u0 = mem32[w5=int64#2 = mem32[w5=u1 = mem32[w5=int64#2 = mem32[w5=u1 = mem32[w6=int64#3 = mem32[w6=u2 = mem32[w6=int64#3 = mem32[w6=u2 = mem32[w7=int64#4 = mem32[w7=u3 = mem32[w7=int64#4 = mem32[w7=u3 = mem32[w4=int64#1 = low4=u0 = low4=int64#1 = hiw4=u0 = hiw5=int64#2 = low5=u1 = low5=int64#2 = hiw5=u1 = hiw6=int64#3 = low6=u2 = low6=int64#3 = hiw6=u2 = hiw7=int64#4 = low7=u3 = low7=int64#4 = hiw7=u3 = hiw4_spill=spill64#13 = low4_spill=d12 = low4_spill=spill64#13 = hiw4_spill=d12 = hiw5_spill=spill64#14 = low5_spill=d13 = low5_spill=spill64#14 = hiw5_spill=d13 = hiw6_spill=spill64#15 = low6_spill=d14 = low6_spill=spill64#15 = hiw6_spill=d14 = hiw7_spill=spill64#16 = low7_spill=d15 = low7_spill=spill64#16 = hiw7_spill=d15 = hiw8=int64#1 = mem32[w8=u0 = mem32[w8=int64#1 = mem32[w8=u0 = mem32[w9=int64#2 = mem32[w9=u1 = mem32[w9=int64#2 = mem32[w9=u1 = mem32[w10=int64#3 = mem32[w10=u2 = mem32[w10=int64#3 = mem32[w10=u2 = mem32[w11=int64#4 = mem32[w11=u3 = mem32[w11=int64#4 = mem32[w11=u3 = mem32[w8=int64#1 = low8=u0 = low8=int64#1 = hiw8=u0 = hiw9=int64#2 = low9=u1 = low9=int64#2 = hiw9=u1 = hiw10=int64#3 = low10=u2 = low10=int64#3 = hiw10=u2 = hiw11=int64#4 = low11=u3 = low11=int64#4 = hiw11=u3 = hiw0_next=stack64#9 = low0_next=m8 = low0_next=stack64#9 = hiw0_next=m8 = hiw1_next=stack64#10 = low1_next=m9 = low1_next=stack64#10 = hiw1_next=m9 = hiw2_next=stack64#11 = low2_next=m10 = low2_next=stack64#11 = hiw2_next=m10 = hiw3_next=stack64#12 = low3_next=m11 = low3_next=stack64#12 = hiw3_next=m11 = hiw12=int64#1 = mem32[w12=u0 = mem32[w12=int64#1 = mem32[w12=u0 = mem32[w13=int64#2 = mem32[w13=u1 = mem32[w13=int64#2 = mem32[w13=u1 = mem32[w14=int64#3 = mem32[w14=u2 = mem32[w14=int64#3 = mem32[w14=u2 = mem32[w15=int64#4 = mem32[w15=u3 = mem32[w15=int64#4 = mem32[w15=u3 = mem32[w12=int64#1 = low12=u0 = low12=int64#1 = hiw12=u0 = hiw13=int64#2 = low13=u1 = low13=int64#2 = hiw13=u1 = hiw14=int64#3 = low14=u2 = low14=int64#3 = hiw14=u2 = hiw15=int64#4 = low15=u3 = low15=int64#4 = hiw15=u3 = hiw4_next=stack64#13 = low4_next=m12 = low4_next=stack64#13 = hiw4_next=m12 = hiw5_next=stack64#14 = low5_next=m13 = low5_next=stack64#14 = hiw5_next=m13 = hiw6_next=stack64#15 = low6_next=m14 = low6_next=stack64#15 = hiw6_next=m14 = hiw7_next=stack64#16 = low7_next=m15 = low7_next=stack64#16 = hiw7_next=m15 = hiin_stack=stack32#2 = in_stack=o1 = i=int32#1 = 80 simple +# asm 2: >i=input_0 = 80 simple +input_0 = 80 simple +# qhasm: i_stack = i +# asm 1: >i_stack=stack32#4 = i_stack=o3 = r3=int64#1 = lor3=u0 = lor3=int64#1 = hir3=u0 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#3 = lor5=u2 = lor5=int64#3 = hir5=u2 = hir6=int64#4 = lor6=u3 = lor6=int64#4 = hir6=u3 = hir7=int64#5 = lor7=u4 = lor7=int64#5 = hir7=u4 = hiw0=int64#6 = low0=u5 = low0=int64#6 = hiw0=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu1 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou1 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou1 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou1 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu1 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu1 unsigned>> 14) +# asm 1: hitmp ^= (lor3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir0=int64#2 = lor0=u1 = lor0=int64#2 = hir0=u1 = hir1=int64#3 = lor1=u2 = lor1=int64#3 = hir1=u2 = hir2=int64#4 = lor2=u3 = lor2=int64#4 = hir2=u3 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu1 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu1 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou1 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou1 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou1 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu1 unsigned>> 28) +# asm 1: hitmp ^= (lor7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#3 = lor5=u2 = lor5=int64#3 = hir5=u2 = hir6=int64#5 = lor6=u4 = lor6=int64#5 = hir6=u4 = hiw1=int64#6 = low1=u5 = low1=int64#6 = hiw1=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu0 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou0 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou0 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou0 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu0 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu0 unsigned>> 14) +# asm 1: hitmp ^= (lor2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir7=int64#1 = lor7=u0 = lor7=int64#1 = hir7=u0 = hir0=int64#2 = lor0=u1 = lor0=int64#2 = hir0=u1 = hir1=int64#3 = lor1=u2 = lor1=int64#3 = hir1=u2 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu0 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou0 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir3=int64#1 = lor3=u0 = lor3=int64#1 = hir3=u0 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#5 = lor5=u4 = lor5=int64#5 = hir5=u4 = hiw2=int64#6 = low2=u5 = low2=int64#6 = hiw2=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu3 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou3 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou3 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou3 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu3 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu3 unsigned>> 14) +# asm 1: hitmp ^= (lor1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir6=int64#1 = lor6=u0 = lor6=int64#1 = hir6=u0 = hir7=int64#2 = lor7=u1 = lor7=int64#2 = hir7=u1 = hir0=int64#4 = lor0=u3 = lor0=int64#4 = hir0=u3 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu0 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou0 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir2=int64#1 = lor2=u0 = lor2=int64#1 = hir2=u0 = hir3=int64#2 = lor3=u1 = lor3=int64#2 = hir3=u1 = hir4=int64#5 = lor4=u4 = lor4=int64#5 = hir4=u4 = hiw3=int64#6 = low3=u5 = low3=int64#6 = hiw3=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu2 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou2 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou2 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou2 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu2 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu2 unsigned>> 14) +# asm 1: hitmp ^= (lor0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hir5=int64#1 = lor5=u0 = lor5=int64#1 = hir5=u0 = hir6=int64#2 = lor6=u1 = lor6=int64#2 = hir6=u1 = hir7=int64#3 = lor7=u2 = lor7=int64#3 = hir7=u2 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu0 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou0 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir1=int64#1 = lor1=u0 = lor1=int64#1 = hir1=u0 = hir2=int64#2 = lor2=u1 = lor2=int64#2 = hir2=u1 = hir3=int64#5 = lor3=u4 = lor3=int64#5 = hir3=u4 = hiw4=int64#6 = low4=u5 = low4=int64#6 = hiw4=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu3 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou3 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou3 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou3 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu3 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu3 unsigned>> 14) +# asm 1: hitmp ^= (lor7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#4 = lor6=u3 = lor6=int64#4 = hir6=u3 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu0 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou0 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#5 = lor2=u4 = lor2=int64#5 = hir2=u4 = hiw5=int64#6 = low5=u5 = low5=int64#6 = hiw5=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu2 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou2 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou2 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou2 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu2 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu2 unsigned>> 14) +# asm 1: hitmp ^= (lor6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir3=int64#1 = lor3=u0 = lor3=int64#1 = hir3=u0 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#3 = lor5=u2 = lor5=int64#3 = hir5=u2 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu0 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou0 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir7=int64#1 = lor7=u0 = lor7=int64#1 = hir7=u0 = hir0=int64#2 = lor0=u1 = lor0=int64#2 = hir0=u1 = hir1=int64#5 = lor1=u4 = lor1=int64#5 = hir1=u4 = hiw6=int64#6 = low6=u5 = low6=int64#6 = hiw6=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu3 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou3 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou3 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou3 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu3 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu3 unsigned>> 14) +# asm 1: hitmp ^= (lor5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir2=int64#1 = lor2=u0 = lor2=int64#1 = hir2=u0 = hir3=int64#2 = lor3=u1 = lor3=int64#2 = hir3=u1 = hir4=int64#4 = lor4=u3 = lor4=int64#4 = hir4=u3 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu0 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou0 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir6=int64#1 = lor6=u0 = lor6=int64#1 = hir6=u0 = hir7=int64#2 = lor7=u1 = lor7=int64#2 = hir7=u1 = hir0=int64#5 = lor0=u4 = lor0=int64#5 = hir0=u4 = hiw7=int64#6 = low7=u5 = low7=int64#6 = hiw7=u5 = hi> 9) +# asm 2: lotmp = (hi> 9) +lotmp = (hiu2 unsigned>> 9) +# asm 1: lotmp ^= (lo> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou2 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou2 unsigned>> 14) +# asm 1: lotmp ^= (hi> 9) +# asm 2: hitmp = (lo> 9) +hitmp = (lou2 unsigned>> 9) +# asm 1: hitmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu2 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu2 unsigned>> 14) +# asm 1: hitmp ^= (lor4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir1=int64#1 = lor1=u0 = lor1=int64#1 = hir1=u0 = hir2=int64#2 = lor2=u1 = lor2=int64#2 = hir2=u1 = hir3=int64#3 = lor3=u2 = lor3=int64#3 = hir3=u2 = hi> 7) +# asm 2: lotmp = (hi> 7) +lotmp = (hiu0 unsigned>> 7) +# asm 1: lotmp ^= (lo> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 7) +# asm 2: hitmp = (lo> 7) +hitmp = (lou0 unsigned>> 7) +# asm 1: hitmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hii=int32#1 = i=input_0 = i_stack=stack32#4 = i_stack=o3 = w8=int64#1 = low8=u0 = low8=int64#1 = hiw8=u0 = hiw9=int64#2 = low9=u1 = low9=int64#2 = hiw9=u1 = hiw6=int64#3 = low6=u2 = low6=int64#3 = hiw6=u2 = hiw1=int64#4 = low1=u3 = low1=int64#4 = hiw1=u3 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou2 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou2 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu2 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu2 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu2 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou2 unsigned>> 29) +# asm 1: hitmp ^= (hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou1 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu1 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou1 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu1 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou1 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu1 unsigned>>8) +# asm 1: hitmp ^= (low1_spill=spill64#10 = low1_spill=d9 = low1_spill=spill64#10 = hiw1_spill=d9 = hiw7=int64#4 = low7=u3 = low7=int64#4 = hiw7=u3 = hiw8_stack=stack64#16 = low8_stack=m15 = low8_stack=stack64#16 = hiw8_stack=m15 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou3 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou3 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu3 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu3 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu3 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou3 unsigned>> 29) +# asm 1: hitmp ^= (hiw10=int64#5 = low10=u4 = low10=int64#5 = hiw10=u4 = hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou4 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu4 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou4 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu4 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou4 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu4 unsigned>>8) +# asm 1: hitmp ^= (low2=int64#6 = low2=u5 = low2=int64#6 = hiw2=u5 = hiw2_spill=spill64#11 = low2_spill=d10 = low2_spill=spill64#11 = hiw2_spill=d10 = hiw1_next=stack64#10 = low1_next=m9 = low1_next=stack64#10 = hiw1_next=m9 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou0 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou0 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu0 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu0 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu0 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou0 unsigned>> 29) +# asm 1: hitmp ^= (hiw11=int64#1 = low11=u0 = low11=int64#1 = hiw11=u0 = hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou0 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu0 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou0 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu0 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou0 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu0 unsigned>>8) +# asm 1: hitmp ^= (low3=int64#6 = low3=u5 = low3=int64#6 = hiw3=u5 = hiw3_spill=spill64#12 = low3_spill=d11 = low3_spill=spill64#12 = hiw3_spill=d11 = hiw2_next=stack64#11 = low2_next=m10 = low2_next=stack64#11 = hiw2_next=m10 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou1 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou1 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu1 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu1 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu1 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou1 unsigned>> 29) +# asm 1: hitmp ^= (hiw12=int64#2 = low12=u1 = low12=int64#2 = hiw12=u1 = hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou1 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu1 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou1 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu1 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou1 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu1 unsigned>>8) +# asm 1: hitmp ^= (low4=int64#6 = low4=u5 = low4=int64#6 = hiw4=u5 = hiw4_spill=spill64#13 = low4_spill=d12 = low4_spill=spill64#13 = hiw4_spill=d12 = hiw3_next=stack64#12 = low3_next=m11 = low3_next=stack64#12 = hiw3_next=m11 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou4 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou4 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu4 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu4 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu4 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou4 unsigned>> 29) +# asm 1: hitmp ^= (hiw13=int64#5 = low13=u4 = low13=int64#5 = hiw13=u4 = hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou4 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu4 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou4 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu4 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou4 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu4 unsigned>>8) +# asm 1: hitmp ^= (low5=int64#6 = low5=u5 = low5=int64#6 = hiw5=u5 = hiw5_spill=spill64#14 = low5_spill=d13 = low5_spill=spill64#14 = hiw5_spill=d13 = hiw4_next=stack64#13 = low4_next=m12 = low4_next=stack64#13 = hiw4_next=m12 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou0 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou0 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu0 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu0 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu0 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou0 unsigned>> 29) +# asm 1: hitmp ^= (hiw14=int64#1 = low14=u0 = low14=int64#1 = hiw14=u0 = hiw6_spill=spill64#15 = low6_spill=d14 = low6_spill=spill64#15 = hiw6_spill=d14 = hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou0 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu0 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou0 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu0 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou0 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu0 unsigned>>8) +# asm 1: hitmp ^= (low5_next=stack64#14 = low5_next=m13 = low5_next=stack64#14 = hiw5_next=m13 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou1 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou1 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu1 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu1 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu1 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou1 unsigned>> 29) +# asm 1: hitmp ^= (hiw15=int64#2 = low15=u1 = low15=int64#2 = hiw15=u1 = hiw7_spill=spill64#16 = low7_spill=d15 = low7_spill=spill64#16 = hiw7_spill=d15 = hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou1 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu1 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou1 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu1 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou1 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu1 unsigned>>8) +# asm 1: hitmp ^= (low6_next=stack64#15 = low6_next=m14 = low6_next=stack64#15 = hiw6_next=m14 = hi> 6) +# asm 2: lotmp = (lo> 6) +lotmp = (lou4 unsigned>> 6) +# asm 1: lotmp ^= (hi> 19) +# asm 2: lotmp ^= (lo> 19) +lotmp ^= (lou4 unsigned>> 19) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu4 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp = (hi> 6) +hitmp = (hiu4 unsigned>> 6) +# asm 1: hitmp ^= (hi> 19) +# asm 2: hitmp ^= (hi> 19) +hitmp ^= (hiu4 unsigned>> 19) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou4 unsigned>> 29) +# asm 1: hitmp ^= (hiw0=int64#1 = low0=u0 = low0=int64#1 = hiw0=u0 = hiw8=int64#3 = low8=u2 = low8=int64#3 = hiw8=u2 = hiw0_next=stack64#9 = low0_next=m8 = low0_next=stack64#9 = hiw0_next=m8 = hi> 1) +# asm 2: carry? lotmp = (lo> 1) +carry? lotmp = (lou0 unsigned>> 1) +# asm 1: hitmp = (carry,hi> 1) +# asm 2: hitmp = (carry,hi> 1) +hitmp = (carry,hiu0 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou0 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu0 unsigned>>7) +# asm 1: lotmp ^= (lo>8) +# asm 2: lotmp ^= (lo>8) +lotmp ^= (lou0 unsigned>>8) +# asm 1: lotmp ^= (hi>8) +# asm 2: hitmp ^= (hi>8) +hitmp ^= (hiu0 unsigned>>8) +# asm 1: hitmp ^= (low7_next=stack64#16 = low7_next=m15 = low7_next=stack64#16 = hiw7_next=m15 = hiw0_spill=spill64#9 = low0_spill=d8 = low0_spill=spill64#9 = hiw0_spill=d8 = hiw0=int64#1 = low0=u0 = low0=int64#1 = hiw0=u0 = hiw1=int64#2 = low1=u1 = low1=int64#2 = hiw1=u1 = hiw2=int64#3 = low2=u2 = low2=int64#3 = hiw2=u2 = hiw3=int64#4 = low3=u3 = low3=int64#4 = hiw3=u3 = hiw0_spill=spill64#9 = low0_spill=d8 = low0_spill=spill64#9 = hiw0_spill=d8 = hiw1_spill=spill64#10 = low1_spill=d9 = low1_spill=spill64#10 = hiw1_spill=d9 = hiw2_spill=spill64#11 = low2_spill=d10 = low2_spill=spill64#11 = hiw2_spill=d10 = hiw3_spill=spill64#12 = low3_spill=d11 = low3_spill=spill64#12 = hiw3_spill=d11 = hiw4=int64#1 = low4=u0 = low4=int64#1 = hiw4=u0 = hiw5=int64#2 = low5=u1 = low5=int64#2 = hiw5=u1 = hiw6=int64#3 = low6=u2 = low6=int64#3 = hiw6=u2 = hiw7=int64#4 = low7=u3 = low7=int64#4 = hiw7=u3 = hiw4_spill=spill64#13 = low4_spill=d12 = low4_spill=spill64#13 = hiw4_spill=d12 = hiw5_spill=spill64#14 = low5_spill=d13 = low5_spill=spill64#14 = hiw5_spill=d13 = hiw6_spill=spill64#15 = low6_spill=d14 = low6_spill=spill64#15 = hiw6_spill=d14 = hiw7_spill=spill64#16 = low7_spill=d15 = low7_spill=spill64#16 = hiw7_spill=d15 = hir0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = histate0=stack64#1 = lostate0=m0 = lostate0=stack64#1 = histate0=m0 = histate1=stack64#2 = lostate1=m1 = lostate1=stack64#2 = histate1=m1 = histate2=stack64#3 = lostate2=m2 = lostate2=stack64#3 = histate2=m2 = histate3=stack64#4 = lostate3=m3 = lostate3=stack64#4 = histate3=m3 = hir0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hir1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = histate4=stack64#5 = lostate4=m4 = lostate4=stack64#5 = histate4=m4 = histate5=stack64#6 = lostate5=m5 = lostate5=stack64#6 = histate5=m5 = histate6=stack64#7 = lostate6=m6 = lostate6=stack64#7 = histate6=m6 = histate7=stack64#8 = lostate7=m7 = lostate7=stack64#8 = histate7=m7 = hir4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hiinlen=int32#1 = inlen=input_0 = =? inlen -= 128 +# asm 1: =? unsignedinlen_stack=stack32#3 = inlen_stack=o2 = = +goto mainloop if !unsigned< +# qhasm: endmainloop: +endmainloop: +# qhasm: statebytes = statebytes_stack +# asm 1: >statebytes=int32#2 = statebytes=input_1 = r0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = hir0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = hi/CRYPTO_SHARED_NAMESPACE(inner)/' > inner32.S + +inner32.q: inner.q inner32.desc inner32.q.do inner32.top + sh inner32.q.do > inner32.q diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/README b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/README new file mode 100644 index 0000000000..8f910f7ed8 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/README @@ -0,0 +1,12 @@ +inner.q: SHA-512 source code in a new 64-bit SHA-512 DSL + +converting SHA-512 DSL -> 32-bit qhasm-arm language: +* inner32.desc: qhasm machine-description file +* inner32.top: preamble for output +* inner32.q.do: script creating output +* inner32.q: output (do not edit directly!) + +converting 32-bit qhasm-arm -> traditional ARM assembly: +* copy-collector: try to bring copies together (reduce ldr overheads; save code size) +* align: try to 4-byte align 4-byte instructions (reduce ldr overheads) +* inner32.s: output (do not edit directly!) diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/align b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/align new file mode 120000 index 0000000000..701f440544 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/align @@ -0,0 +1 @@ +../m3/align \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/api.h b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/api.h new file mode 120000 index 0000000000..1dfe625ff0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/api.h @@ -0,0 +1 @@ +../m3/api.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/architectures b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/architectures new file mode 120000 index 0000000000..9ccef9443d --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/architectures @@ -0,0 +1 @@ +../m3/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/constants.c b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/constants.c new file mode 120000 index 0000000000..d9f993dec8 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/constants.c @@ -0,0 +1 @@ +../m3/constants.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/copy-collector b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/copy-collector new file mode 120000 index 0000000000..f07c9ae7db --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/copy-collector @@ -0,0 +1 @@ +../m3/copy-collector \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/implementors b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/implementors new file mode 120000 index 0000000000..3476030106 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/implementors @@ -0,0 +1 @@ +../m3/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/inner.h b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/inner.h new file mode 120000 index 0000000000..49c0a8e05d --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/inner.h @@ -0,0 +1 @@ +../m3/inner.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/inner.q b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/inner.q new file mode 100644 index 0000000000..2f5eb4196c --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/inner.q @@ -0,0 +1,564 @@ +spill64 r0_spill +spill64 r1_spill +spill64 r2_spill +spill64 r3_spill +spill64 r4_spill +spill64 r5_spill +spill64 r6_spill +spill64 r7_spill +spill64 w0_spill +spill64 w1_spill +spill64 w2_spill +spill64 w3_spill +spill64 w4_spill +spill64 w5_spill +spill64 w6_spill +spill64 w7_spill +stack64 w8_stack +stack64 state0 +stack64 state1 +stack64 state2 +stack64 state3 +stack64 state4 +stack64 state5 +stack64 state6 +stack64 state7 +int64 r0 +int64 r1 +int64 r2 +int64 r3 +int64 r4 +int64 r5 +int64 r6 +int64 r7 +int64 w0 +int64 w1 +int64 w2 +int64 w3 +int64 w4 +int64 w5 +int64 w6 +int64 w7 +stack64 w0_next +stack64 w1_next +stack64 w2_next +stack64 w3_next +stack64 w4_next +stack64 w5_next +stack64 w6_next +stack64 w7_next +int64 w8 +int64 w9 +int64 w10 +int64 w11 +int64 w12 +int64 w13 +int64 w14 +int64 w15 +int32 i +ptr statebytes +ptr in +int32 inlen +ptr constants +stackptr in_stack +stackptr statebytes_stack +stackptr constants_stack +stack32 inlen_stack +stack32 i_stack + +pushenter inner + +statebytes_stack = input_0 +in_stack = input_1 + +inlen = input_2 - 128 +inlen_stack = inlen + +constants_stack = input_3 + +r0 = flip mem64[input_0] +r1 = flip mem64[input_0+8] +r2 = flip mem64[input_0+16] +r3 = flip mem64[input_0+24] + +r0 = reverse flip r0 +r1 = reverse flip r1 +r2 = reverse flip r2 +r3 = reverse flip r3 + +state0 = r0 +state1 = r1 +state2 = r2 +state3 = r3 + +r0_spill = r0 +r1_spill = r1 +r2_spill = r2 +r3_spill = r3 + +r4 = flip mem64[input_0+32] +r5 = flip mem64[input_0+40] +r6 = flip mem64[input_0+48] +r7 = flip mem64[input_0+56] + +r4 = reverse flip r4 +r5 = reverse flip r5 +r6 = reverse flip r6 +r7 = reverse flip r7 + +state4 = r4 +state5 = r5 +state6 = r6 +state7 = r7 + +r4_spill = r4 +r5_spill = r5 +r6_spill = r6 +r7_spill = r7 + +mainloop: + + in = in_stack + + w0 = flip mem64[in]; in += 8 + w1 = flip mem64[in]; in += 8 + w2 = flip mem64[in]; in += 8 + w3 = flip mem64[in]; in += 8 + + w0 = reverse flip w0 + w1 = reverse flip w1 + w2 = reverse flip w2 + w3 = reverse flip w3 + + w0_spill = w0 + w1_spill = w1 + w2_spill = w2 + w3_spill = w3 + + w4 = flip mem64[in]; in += 8 + w5 = flip mem64[in]; in += 8 + w6 = flip mem64[in]; in += 8 + w7 = flip mem64[in]; in += 8 + + w4 = reverse flip w4 + w5 = reverse flip w5 + w6 = reverse flip w6 + w7 = reverse flip w7 + + w4_spill = w4 + w5_spill = w5 + w6_spill = w6 + w7_spill = w7 + + w8 = flip mem64[in]; in += 8 + w9 = flip mem64[in]; in += 8 + w10 = flip mem64[in]; in += 8 + w11 = flip mem64[in]; in += 8 + + w8 = reverse flip w8 + w9 = reverse flip w9 + w10 = reverse flip w10 + w11 = reverse flip w11 + + w0_next = w8 + w1_next = w9 + w2_next = w10 + w3_next = w11 + + w12 = flip mem64[in]; in += 8 + w13 = flip mem64[in]; in += 8 + w14 = flip mem64[in]; in += 8 + w15 = flip mem64[in]; in += 8 + + w12 = reverse flip w12 + w13 = reverse flip w13 + w14 = reverse flip w14 + w15 = reverse flip w15 + + w4_next = w12 + w5_next = w13 + w6_next = w14 + w7_next = w15 + + in_stack = in + + i = 80 simple + i_stack = i + + innerloop: + + assign 0 to r0_spill + assign 1 to r1_spill + assign 2 to r2_spill + assign 3 to r3_spill + assign 4 to r4_spill + assign 5 to r5_spill + assign 6 to r6_spill + assign 7 to r7_spill + + constants = constants_stack + + r3 = r3_spill + r4 = r4_spill + r5 = r5_spill + r6 = r6_spill + r7 = r7_spill + + w0 = w0_spill + Sigma1_setup + r7 += w0 + mem64[constants] + Sigma1(r4) + Ch(r4,r5,r6); constants += 8 + r3 += r7 + r3_spill = r3 + r0 = r0_spill + r1 = r1_spill + r2 = r2_spill + Sigma0_setup + r7 += Sigma0(r0) + Maj(r0,r1,r2) + r7_spill = r7 + + r4 = r4_spill + r5 = r5_spill + r6 = r6_spill + w1 = w1_spill + Sigma1_setup + r6 += w1 + mem64[constants] + Sigma1(r3) + Ch(r3,r4,r5); constants += 8 + r2 += r6 + r2_spill = r2 + r7 = r7_spill + r0 = r0_spill + r1 = r1_spill + Sigma0_setup + r6 += Sigma0(r7) + Maj(r7,r0,r1) + r6_spill = r6 + + assign 0 to r0_spill + assign 1 to r1_spill + assign 2 to r2_spill + assign 3 to r3_spill + assign 4 to r4_spill + assign 5 to r5_spill + assign 6 to r6_spill + assign 7 to r7_spill + + r3 = r3_spill + r4 = r4_spill + r5 = r5_spill + w2 = w2_spill + Sigma1_setup + r5 += w2 + mem64[constants] + Sigma1(r2) + Ch(r2,r3,r4); constants += 8 + r1 += r5 + r1_spill = r1 + r6 = r6_spill + r7 = r7_spill + r0 = r0_spill + Sigma0_setup + r5 += Sigma0(r6) + Maj(r6,r7,r0) + r5_spill = r5 + + r2 = r2_spill + r3 = r3_spill + r4 = r4_spill + w3 = w3_spill + Sigma1_setup + r4 += w3 + mem64[constants] + Sigma1(r1) + Ch(r1,r2,r3); constants += 8 + r0 += r4 + r0_spill = r0 + r5 = r5_spill + r6 = r6_spill + r7 = r7_spill + Sigma0_setup + r4 += Sigma0(r5) + Maj(r5,r6,r7) + r4_spill = r4 + + assign 0 to r0_spill + assign 1 to r1_spill + assign 2 to r2_spill + assign 3 to r3_spill + assign 4 to r4_spill + assign 5 to r5_spill + assign 6 to r6_spill + assign 7 to r7_spill + + r1 = r1_spill + r2 = r2_spill + r3 = r3_spill + w4 = w4_spill + Sigma1_setup + r3 += w4 + mem64[constants] + Sigma1(r0) + Ch(r0,r1,r2); constants += 8 + r7 += r3 + r7_spill = r7 + r4 = r4_spill + r5 = r5_spill + r6 = r6_spill + Sigma0_setup + r3 += Sigma0(r4) + Maj(r4,r5,r6) + r3_spill = r3 + + r0 = r0_spill + r1 = r1_spill + r2 = r2_spill + w5 = w5_spill + Sigma1_setup + r2 += w5 + mem64[constants] + Sigma1(r7) + Ch(r7,r0,r1); constants += 8 + r6 += r2 + r6_spill = r6 + r3 = r3_spill + r4 = r4_spill + r5 = r5_spill + Sigma0_setup + r2 += Sigma0(r3) + Maj(r3,r4,r5) + r2_spill = r2 + + assign 0 to r0_spill + assign 1 to r1_spill + assign 2 to r2_spill + assign 3 to r3_spill + assign 4 to r4_spill + assign 5 to r5_spill + assign 6 to r6_spill + assign 7 to r7_spill + + r7 = r7_spill + r0 = r0_spill + r1 = r1_spill + w6 = w6_spill + Sigma1_setup + r1 += w6 + mem64[constants] + Sigma1(r6) + Ch(r6,r7,r0); constants += 8 + r5 += r1 + r5_spill = r5 + r2 = r2_spill + r3 = r3_spill + r4 = r4_spill + Sigma0_setup + r1 += Sigma0(r2) + Maj(r2,r3,r4) + r1_spill = r1 + + r6 = r6_spill + r7 = r7_spill + r0 = r0_spill + w7 = w7_spill + Sigma1_setup + r0 += w7 + mem64[constants] + Sigma1(r5) + Ch(r5,r6,r7); constants += 8 + r4 += r0 + r4_spill = r4 + r1 = r1_spill + r2 = r2_spill + r3 = r3_spill + Sigma0_setup + r0 += Sigma0(r1) + Maj(r1,r2,r3) + r0_spill = r0 + + constants_stack = constants + + assign 8 to w0_spill + assign 9 to w1_spill + assign 10 to w2_spill + assign 11 to w3_spill + assign 12 to w4_spill + assign 13 to w5_spill + assign 14 to w6_spill + assign 15 to w7_spill + + i = i_stack + =? i -= 8 + goto endinnerloop if = + i_stack = i + + =? i - 8 + goto nearend if = + + sigma1_setup + sigma0_setup + + w8 = w0_spill + w9 = w1_spill + w6 = w6_next + w1 = w1_next + + w8 += sigma1(w6) + w8 += sigma0(w9) + + w8 += w1 + w1_spill = w1 + + w7 = w7_next + w8_stack = w8 + + w9 += sigma1(w7) + w10 = w2_spill + w9 += sigma0(w10) + + w2 = w2_next + w9 += w2 + w2_spill = w2 + w1_next = w9 + + w10 += sigma1(w8) + w11 = w3_spill + w10 += sigma0(w11) + + w3 = w3_next + w10 += w3 + w3_spill = w3 + w2_next = w10 + + w11 += sigma1(w9) + w12 = w4_spill + w11 += sigma0(w12) + + w4 = w4_next + w11 += w4 + w4_spill = w4 + w3_next = w11 + + w12 += sigma1(w10) + w13 = w5_spill + w12 += sigma0(w13) + + w5 = w5_next + w12 += w5 + w5_spill = w5 + w4_next = w12 + + w13 += sigma1(w11) + + w14 = w6_spill + w6_spill = w6 + + w13 += sigma0(w14) + w13 += w6 + w5_next = w13 + + w14 += sigma1(w12) + + w15 = w7_spill + w7_spill = w7 + + w14 += sigma0(w15) + w14 += w7 + w6_next = w14 + + w15 += sigma1(w13) + + w0 = w0_next + w8 = w8_stack + w0_next = w8 + + w15 += sigma0(w0) + w15 += w8 + w7_next = w15 + + w0_spill = w0 + + goto innerloop + + nearend: + + w0 = w0_next + w1 = w1_next + w2 = w2_next + w3 = w3_next + + w0_spill = w0 + w1_spill = w1 + w2_spill = w2 + w3_spill = w3 + + w4 = w4_next + w5 = w5_next + w6 = w6_next + w7 = w7_next + + w4_spill = w4 + w5_spill = w5 + w6_spill = w6 + w7_spill = w7 + + goto innerloop + endinnerloop: + + constants = constants_stack + constants -= 640 + constants_stack = constants + + r0 = r0_spill + r1 = r1_spill + r2 = r2_spill + r3 = r3_spill + + r0 += state0 + r1 += state1 + r2 += state2 + r3 += state3 + + state0 = r0 + state1 = r1 + state2 = r2 + state3 = r3 + + r0_spill = r0 + r1_spill = r1 + r2_spill = r2 + r3_spill = r3 + + r4 = r4_spill + r5 = r5_spill + r6 = r6_spill + r7 = r7_spill + + r4 += state4 + r5 += state5 + r6 += state6 + r7 += state7 + + state4 = r4 + state5 = r5 + state6 = r6 + state7 = r7 + + r4_spill = r4 + r5_spill = r5 + r6_spill = r6 + r7_spill = r7 + + inlen = inlen_stack + + unsigned>=? inlen -= 128 + inlen_stack = inlen + goto mainloop if unsigned>= +endmainloop: + +statebytes = statebytes_stack + +r0 = state0 +r1 = state1 +r2 = state2 +r3 = state3 + +r0 = reverse flip r0 +r1 = reverse flip r1 +r2 = reverse flip r2 +r3 = reverse flip r3 + +mem64[statebytes] = flip r0 +mem64[statebytes+8] = flip r1 +mem64[statebytes+16] = flip r2 +mem64[statebytes+24] = flip r3 + +r4 = state4 +r5 = state5 +r6 = state6 +r7 = state7 + +r4 = reverse flip r4 +r5 = reverse flip r5 +r6 = reverse flip r6 +r7 = reverse flip r7 + +mem64[statebytes+32] = flip r4 +mem64[statebytes+40] = flip r5 +mem64[statebytes+48] = flip r6 +mem64[statebytes+56] = flip r7 + +inlen += 128 +popreturn inlen diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/inner32.S b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/inner32.S new file mode 100644 index 0000000000..9b01bf1d50 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4mult/inner32.S @@ -0,0 +1,6685 @@ +// linker define inner + +# qhasm: int32 input_0 + +# qhasm: int32 input_1 + +# qhasm: int32 input_2 + +# qhasm: int32 input_3 + +# qhasm: stack32 input_4 + +# qhasm: stack32 input_5 + +# qhasm: stack32 input_6 + +# qhasm: stack32 input_7 + +# qhasm: int32 caller_r4 + +# qhasm: int32 caller_r5 + +# qhasm: int32 caller_r6 + +# qhasm: int32 caller_r7 + +# qhasm: int32 caller_r8 + +# qhasm: int32 caller_r9 + +# qhasm: int32 caller_r10 + +# qhasm: int32 caller_r11 + +# qhasm: int32 caller_r12 + +# qhasm: int32 caller_r14 + +# qhasm: startcode +.text +.arch armv7 +.fpu fpv4-sp-d16 +.syntax unified + +# qhasm: int32 two13 + +# qhasm: int32 two23 + +# qhasm: int32 two24 + +# qhasm: int32 two25 + +# qhasm: int32 lotmp + +# qhasm: int32 lotmp2 + +# qhasm: int32 hitmp + +# qhasm: int32 hitmp2 + +# qhasm: int32 lou0 + +# qhasm: int32 lou1 + +# qhasm: int32 lou2 + +# qhasm: int32 lou3 + +# qhasm: int32 lou4 + +# qhasm: int32 lou5 + +# qhasm: int32 hiu0 + +# qhasm: int32 hiu1 + +# qhasm: int32 hiu2 + +# qhasm: int32 hiu3 + +# qhasm: int32 hiu4 + +# qhasm: int32 hiu5 + +# qhasm: float32 hid0 + +# qhasm: float32 hid1 + +# qhasm: float32 hid2 + +# qhasm: float32 hid3 + +# qhasm: float32 hid4 + +# qhasm: float32 hid5 + +# qhasm: float32 hid6 + +# qhasm: float32 hid7 + +# qhasm: float32 hid8 + +# qhasm: float32 hid9 + +# qhasm: float32 hid10 + +# qhasm: float32 hid11 + +# qhasm: float32 hid12 + +# qhasm: float32 hid13 + +# qhasm: float32 hid14 + +# qhasm: float32 hid15 + +# qhasm: float32 lod0 + +# qhasm: float32 lod1 + +# qhasm: float32 lod2 + +# qhasm: float32 lod3 + +# qhasm: float32 lod4 + +# qhasm: float32 lod5 + +# qhasm: float32 lod6 + +# qhasm: float32 lod7 + +# qhasm: float32 lod8 + +# qhasm: float32 lod9 + +# qhasm: float32 lod10 + +# qhasm: float32 lod11 + +# qhasm: float32 lod12 + +# qhasm: float32 lod13 + +# qhasm: float32 lod14 + +# qhasm: float32 lod15 + +# qhasm: stack32 him0 + +# qhasm: stack32 him1 + +# qhasm: stack32 him2 + +# qhasm: stack32 him3 + +# qhasm: stack32 him4 + +# qhasm: stack32 him5 + +# qhasm: stack32 him6 + +# qhasm: stack32 him7 + +# qhasm: stack32 him8 + +# qhasm: stack32 him9 + +# qhasm: stack32 him10 + +# qhasm: stack32 him11 + +# qhasm: stack32 him12 + +# qhasm: stack32 him13 + +# qhasm: stack32 him14 + +# qhasm: stack32 him15 + +# qhasm: stack32 lom0 + +# qhasm: stack32 lom1 + +# qhasm: stack32 lom2 + +# qhasm: stack32 lom3 + +# qhasm: stack32 lom4 + +# qhasm: stack32 lom5 + +# qhasm: stack32 lom6 + +# qhasm: stack32 lom7 + +# qhasm: stack32 lom8 + +# qhasm: stack32 lom9 + +# qhasm: stack32 lom10 + +# qhasm: stack32 lom11 + +# qhasm: stack32 lom12 + +# qhasm: stack32 lom13 + +# qhasm: stack32 lom14 + +# qhasm: stack32 lom15 + +# qhasm: stack32 o0 + +# qhasm: stack32 o1 + +# qhasm: stack32 o2 + +# qhasm: stack32 o3 + +# qhasm: stack32 o4 + +# qhasm: pushenter CRYPTO_SHARED_NAMESPACE(inner) +.p2align 2 +.global CRYPTO_SHARED_NAMESPACE(inner) +.type CRYPTO_SHARED_NAMESPACE(inner),%function +.thumb +.thumb_func +CRYPTO_SHARED_NAMESPACE(inner): +push {r4,r5,r6,r7,r8,r9,r10,r11,r14} +vpush {d8-d15} +sub.w sp,sp,#160 + +# qhasm: o0 = input_0 +# asm 1: str o0=stack32#1 +# asm 2: str o0=[sp,#0] +# copy-collector input: str r0,[sp,#0] + +# qhasm: o1 = input_1 +# asm 1: str o1=stack32#2 +# asm 2: str o1=[sp,#4] +# copy-collector input: str r1,[sp,#4] + +# qhasm: input_1 = input_2 - 128 +# asm 1: sub >input_1=int32#2,input_1=r1,o2=stack32#3 +# asm 2: str o2=[sp,#8] +# copy-collector input: str r1,[sp,#8] + +# qhasm: o3 = input_3 +# asm 1: str o3=stack32#4 +# asm 2: str o3=[sp,#12] +# copy-collector input: str r3,[sp,#12] + +# qhasm: hiu0 = mem32[input_0] +# asm 1: ldr >hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#4,[hiu1=r3,[lou1=int32#5,[lou1=r4,[hiu2=int32#6,[hiu2=r5,[lou2=int32#7,[lou2=r6,[hiu3=int32#8,[hiu3=r7,[lou3=int32#9,[lou3=r8,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#5,lou1=r4,hiu1=int32#4,hiu1=r3,lou2=int32#7,lou2=r6,hiu2=int32#6,hiu2=r5,lou3=int32#9,lou3=r8,hiu3=int32#8,hiu3=r7,lom0=stack32#5 +# asm 2: str lom0=[sp,#16] +# copy-collector input: str r2,[sp,#16] + +# qhasm: him0 = hiu0 +# asm 1: str him0=stack32#6 +# asm 2: str him0=[sp,#20] +# copy-collector input: str r1,[sp,#20] + +# qhasm: lom1 = lou1 +# asm 1: str lom1=stack32#7 +# asm 2: str lom1=[sp,#24] +# copy-collector input: str r4,[sp,#24] + +# qhasm: him1 = hiu1 +# asm 1: str him1=stack32#8 +# asm 2: str him1=[sp,#28] +# copy-collector input: str r3,[sp,#28] + +# qhasm: lom2 = lou2 +# asm 1: str lom2=stack32#9 +# asm 2: str lom2=[sp,#32] +# copy-collector input: str r6,[sp,#32] + +# qhasm: him2 = hiu2 +# asm 1: str him2=stack32#10 +# asm 2: str him2=[sp,#36] +# copy-collector input: str r5,[sp,#36] + +# qhasm: lom3 = lou3 +# asm 1: str lom3=stack32#11 +# asm 2: str lom3=[sp,#40] +# copy-collector input: str r8,[sp,#40] + +# qhasm: him3 = hiu3 +# asm 1: str him3=stack32#12 +# asm 2: str him3=[sp,#44] +# copy-collector input: str r7,[sp,#44] + +# qhasm: lod0 = lou0 +# asm 1: vmov >lod0=float32#1,lod0=s0,hid0=float32#2,hid0=s1,lod1=float32#3,lod1=s2,hid1=float32#4,hid1=s3,lod2=float32#5,lod2=s4,hid2=float32#6,hid2=s5,lod3=float32#7,lod3=s6,hid3=float32#8,hid3=s7,hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#4,[hiu1=r3,[lou1=int32#5,[lou1=r4,[hiu2=int32#6,[hiu2=r5,[lou2=int32#7,[lou2=r6,[hiu3=int32#8,[hiu3=r7,[lou3=int32#1,[lou3=r0,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#5,lou1=r4,hiu1=int32#4,hiu1=r3,lou2=int32#7,lou2=r6,hiu2=int32#6,hiu2=r5,lou3=int32#1,lou3=r0,hiu3=int32#8,hiu3=r7,lom4=stack32#13 +# asm 2: str lom4=[sp,#48] +# copy-collector input: str r2,[sp,#48] + +# qhasm: him4 = hiu0 +# asm 1: str him4=stack32#14 +# asm 2: str him4=[sp,#52] +# copy-collector input: str r1,[sp,#52] + +# qhasm: lom5 = lou1 +# asm 1: str lom5=stack32#15 +# asm 2: str lom5=[sp,#56] +# copy-collector input: str r4,[sp,#56] + +# qhasm: him5 = hiu1 +# asm 1: str him5=stack32#16 +# asm 2: str him5=[sp,#60] +# copy-collector input: str r3,[sp,#60] + +# qhasm: lom6 = lou2 +# asm 1: str lom6=stack32#17 +# asm 2: str lom6=[sp,#64] +# copy-collector input: str r6,[sp,#64] + +# qhasm: him6 = hiu2 +# asm 1: str him6=stack32#18 +# asm 2: str him6=[sp,#68] +# copy-collector input: str r5,[sp,#68] + +# qhasm: lom7 = lou3 +# asm 1: str lom7=stack32#19 +# asm 2: str lom7=[sp,#72] +# copy-collector input: str r0,[sp,#72] + +# qhasm: him7 = hiu3 +# asm 1: str him7=stack32#20 +# asm 2: str him7=[sp,#76] +# copy-collector input: str r7,[sp,#76] + +# qhasm: lod4 = lou0 +# asm 1: vmov >lod4=float32#9,lod4=s8,hid4=float32#10,hid4=s9,lod5=float32#11,lod5=s10,hid5=float32#12,hid5=s11,lod6=float32#13,lod6=s12,hid6=float32#14,hid6=s13,lod7=float32#15,lod7=s14,hid7=float32#16,hid7=s15,input_0=int32#1,input_0=r0,hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#4,[hiu1=r3,[lou1=int32#5,[lou1=r4,[hiu2=int32#6,[hiu2=r5,[lou2=int32#7,[lou2=r6,[hiu3=int32#8,[hiu3=r7,[lou3=int32#9,[lou3=r8,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#5,lou1=r4,hiu1=int32#4,hiu1=r3,lou2=int32#7,lou2=r6,hiu2=int32#6,hiu2=r5,lou3=int32#9,lou3=r8,hiu3=int32#8,hiu3=r7,lod8=float32#17,lod8=s16,hid8=float32#18,hid8=s17,lod9=float32#19,lod9=s18,hid9=float32#20,hid9=s19,lod10=float32#21,lod10=s20,hid10=float32#22,hid10=s21,lod11=float32#23,lod11=s22,hid11=float32#24,hid11=s23,hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#4,[hiu1=r3,[lou1=int32#5,[lou1=r4,[hiu2=int32#6,[hiu2=r5,[lou2=int32#7,[lou2=r6,[hiu3=int32#8,[hiu3=r7,[lou3=int32#9,[lou3=r8,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#5,lou1=r4,hiu1=int32#4,hiu1=r3,lou2=int32#7,lou2=r6,hiu2=int32#6,hiu2=r5,lou3=int32#9,lou3=r8,hiu3=int32#8,hiu3=r7,lod12=float32#25,lod12=s24,hid12=float32#26,hid12=s25,lod13=float32#27,lod13=s26,hid13=float32#28,hid13=s27,lod14=float32#29,lod14=s28,hid14=float32#30,hid14=s29,lod15=float32#31,lod15=s30,hid15=float32#32,hid15=s31,hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#4,[hiu1=r3,[lou1=int32#5,[lou1=r4,[hiu2=int32#6,[hiu2=r5,[lou2=int32#7,[lou2=r6,[hiu3=int32#8,[hiu3=r7,[lou3=int32#9,[lou3=r8,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#5,lou1=r4,hiu1=int32#4,hiu1=r3,lou2=int32#7,lou2=r6,hiu2=int32#6,hiu2=r5,lou3=int32#9,lou3=r8,hiu3=int32#8,hiu3=r7,lom8=stack32#21 +# asm 2: str lom8=[sp,#80] +# copy-collector input: str r2,[sp,#80] + +# qhasm: him8 = hiu0 +# asm 1: str him8=stack32#22 +# asm 2: str him8=[sp,#84] +# copy-collector input: str r1,[sp,#84] + +# qhasm: lom9 = lou1 +# asm 1: str lom9=stack32#23 +# asm 2: str lom9=[sp,#88] +# copy-collector input: str r4,[sp,#88] + +# qhasm: him9 = hiu1 +# asm 1: str him9=stack32#24 +# asm 2: str him9=[sp,#92] +# copy-collector input: str r3,[sp,#92] + +# qhasm: lom10 = lou2 +# asm 1: str lom10=stack32#25 +# asm 2: str lom10=[sp,#96] +# copy-collector input: str r6,[sp,#96] + +# qhasm: him10 = hiu2 +# asm 1: str him10=stack32#26 +# asm 2: str him10=[sp,#100] +# copy-collector input: str r5,[sp,#100] + +# qhasm: lom11 = lou3 +# asm 1: str lom11=stack32#27 +# asm 2: str lom11=[sp,#104] +# copy-collector input: str r8,[sp,#104] + +# qhasm: him11 = hiu3 +# asm 1: str him11=stack32#28 +# asm 2: str him11=[sp,#108] +# copy-collector input: str r7,[sp,#108] + +# qhasm: hiu0 = mem32[input_0]; input_0 += 4 +# asm 1: ldr >hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#4,[hiu1=r3,[lou1=int32#5,[lou1=r4,[hiu2=int32#6,[hiu2=r5,[lou2=int32#7,[lou2=r6,[hiu3=int32#8,[hiu3=r7,[lou3=int32#9,[lou3=r8,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#5,lou1=r4,hiu1=int32#4,hiu1=r3,lou2=int32#7,lou2=r6,hiu2=int32#6,hiu2=r5,lou3=int32#9,lou3=r8,hiu3=int32#8,hiu3=r7,lom12=stack32#29 +# asm 2: str lom12=[sp,#112] +# copy-collector input: str r2,[sp,#112] + +# qhasm: him12 = hiu0 +# asm 1: str him12=stack32#30 +# asm 2: str him12=[sp,#116] +# copy-collector input: str r1,[sp,#116] + +# qhasm: lom13 = lou1 +# asm 1: str lom13=stack32#31 +# asm 2: str lom13=[sp,#120] +# copy-collector input: str r4,[sp,#120] + +# qhasm: him13 = hiu1 +# asm 1: str him13=stack32#32 +# asm 2: str him13=[sp,#124] +# copy-collector input: str r3,[sp,#124] + +# qhasm: lom14 = lou2 +# asm 1: str lom14=stack32#33 +# asm 2: str lom14=[sp,#128] +# copy-collector input: str r6,[sp,#128] + +# qhasm: him14 = hiu2 +# asm 1: str him14=stack32#34 +# asm 2: str him14=[sp,#132] +# copy-collector input: str r5,[sp,#132] + +# qhasm: lom15 = lou3 +# asm 1: str lom15=stack32#35 +# asm 2: str lom15=[sp,#136] +# copy-collector input: str r8,[sp,#136] + +# qhasm: him15 = hiu3 +# asm 1: str him15=stack32#36 +# asm 2: str him15=[sp,#140] +# copy-collector input: str r7,[sp,#140] + +# qhasm: o1 = input_0 +# asm 1: str o1=stack32#2 +# asm 2: str o1=[sp,#4] +# copy-collector input: str r0,[sp,#4] + +# qhasm: input_0 = 80 simple +# asm 1: mov >input_0=int32#1,80 +# asm 2: mov >input_0=r0,80 +# copy-collector output starts +strd r2,r1,[sp,#112] +strd r4,r3,[sp,#120] +strd r6,r5,[sp,#128] +strd r8,r7,[sp,#136] +str r0,[sp,#4] +# copy-collector output ends +mov r0,80 + +# qhasm: o4 = input_0 +# asm 1: str o4=stack32#37 +# asm 2: str o4=[sp,#144] +# copy-collector input: str r0,[sp,#144] + +# qhasm: innerloop: +# copy-collector output starts +str r0,[sp,#144] +# copy-collector output ends +._innerloop: + +# qhasm: assign 0 to lod0 + +# qhasm: assign 1 to hid0 + +# qhasm: assign 2 to lod1 + +# qhasm: assign 3 to hid1 + +# qhasm: assign 4 to lod2 + +# qhasm: assign 5 to hid2 + +# qhasm: assign 6 to lod3 + +# qhasm: assign 7 to hid3 + +# qhasm: assign 8 to lod4 + +# qhasm: assign 9 to hid4 + +# qhasm: assign 10 to lod5 + +# qhasm: assign 11 to hid5 + +# qhasm: assign 12 to lod6 + +# qhasm: assign 13 to hid6 + +# qhasm: assign 14 to lod7 + +# qhasm: assign 15 to hid7 + +# qhasm: input_0 = o3 +# asm 1: ldr >input_0=int32#1,input_0=r0,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +ldr.w r0,[sp,#12] +vmov r1,r2,d3 +vmov r3,r4,d4 +vmov r5,r6,d5 +vmov r7,r8,d6 +vmov r9,r10,d7 +vmov r11,r12,d8 +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,lotmp=int32#6,lotmp=r5,lotmp2=int32#4,lotmp2=r3,lotmp=int32#4,lotmp=r3,lou4=int32#4,lou4=r3,hitmp=int32#6,hitmp=r5,hitmp2=int32#5,hitmp2=r4,hitmp=int32#5,hitmp=r4,hiu4=int32#5,hiu4=r4,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lod3=float32#7,lod3=s6,hid3=float32#8,hid3=s7,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou2=int32#8,lou2=r7,hiu2=int32#9,hiu2=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,two25=int32#12,0x2000000 +# asm 2: mov >two25=r11,0x2000000 +# copy-collector output starts +vmov d3,r1,r2 +vmov r5,r6,d0 +vmov r7,r8,d1 +vmov r9,r10,d2 +# copy-collector output ends +mov r11,0x2000000 + +# qhasm: hitmp lotmp = lou1 * two25 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,> 28) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#4,lou4=r3,hiu4=int32#5,hiu4=r4,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#4,lou4=r3,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#5,hiu4=r4,lod7=float32#15,lod7=s14,hid7=float32#16,hid7=s15,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +vmov d7,r3,r4 +vmov r3,r4,d4 +vmov r5,r6,d5 +vmov r7,r8,d6 +vmov r11,r12,d9 +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#4,lotmp=r3,lotmp2=int32#2,lotmp2=r1,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#4,hitmp=r3,hitmp2=int32#3,hitmp2=r2,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod2=float32#5,lod2=s4,hid2=float32#6,hid2=s5,lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou2=int32#10,lou2=r9,hiu2=int32#11,hiu2=r10,two25=int32#12,0x2000000 +# asm 2: mov >two25=r11,0x2000000 +# copy-collector output starts +vmov d2,r3,r4 +vmov r5,r6,d7 +vmov r7,r8,d0 +vmov r9,r10,d1 +# copy-collector output ends +mov r11,0x2000000 + +# qhasm: hitmp lotmp = lou0 * two25 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,> 28) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#2,lou4=r1,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod6=float32#13,lod6=s12,hid6=float32#14,hid6=s13,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +vmov d6,r1,r2 +vmov r1,r2,d3 +vmov r5,r6,d4 +vmov r7,r8,d5 +vmov r11,r12,d10 +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou2=int32#4,lou2=r3,hiu2=int32#5,hiu2=r4,lod1=float32#3,lod1=s2,hid1=float32#4,hid1=s3,lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,two25=int32#12,0x2000000 +# asm 2: mov >two25=r11,0x2000000 +# copy-collector output starts +vmov d1,r3,r4 +vmov r5,r6,d6 +vmov r7,r8,d7 +vmov r9,r10,d0 +# copy-collector output ends +mov r11,0x2000000 + +# qhasm: hitmp lotmp = lou0 * two25 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,> 28) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#2,lou4=r1,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod5=float32#11,lod5=s10,hid5=float32#12,hid5=s11,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +vmov d5,r1,r2 +vmov r1,r2,d2 +vmov r5,r6,d3 +vmov r7,r8,d4 +vmov r11,r12,d11 +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod0=float32#1,lod0=s0,hid0=float32#2,hid0=s1,lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou2=int32#10,lou2=r9,hiu2=int32#11,hiu2=r10,two25=int32#12,0x2000000 +# asm 2: mov >two25=r11,0x2000000 +# copy-collector output starts +vmov d0,r3,r4 +vmov r5,r6,d5 +vmov r7,r8,d6 +vmov r9,r10,d7 +# copy-collector output ends +mov r11,0x2000000 + +# qhasm: hitmp lotmp = lou0 * two25 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,> 28) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#2,lou4=r1,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod4=float32#9,lod4=s8,hid4=float32#10,hid4=s9,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +vmov d4,r1,r2 +vmov r1,r2,d1 +vmov r5,r6,d2 +vmov r7,r8,d3 +vmov r11,r12,d12 +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou2=int32#4,lou2=r3,hiu2=int32#5,hiu2=r4,lod7=float32#15,lod7=s14,hid7=float32#16,hid7=s15,lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,two25=int32#12,0x2000000 +# asm 2: mov >two25=r11,0x2000000 +# copy-collector output starts +vmov d7,r3,r4 +vmov r5,r6,d4 +vmov r7,r8,d5 +vmov r9,r10,d6 +# copy-collector output ends +mov r11,0x2000000 + +# qhasm: hitmp lotmp = lou0 * two25 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,> 28) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#2,lou4=r1,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod3=float32#7,lod3=s6,hid3=float32#8,hid3=s7,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +vmov d3,r1,r2 +vmov r1,r2,d0 +vmov r5,r6,d1 +vmov r7,r8,d2 +vmov r11,r12,d13 +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod6=float32#13,lod6=s12,hid6=float32#14,hid6=s13,lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou2=int32#10,lou2=r9,hiu2=int32#11,hiu2=r10,two25=int32#12,0x2000000 +# asm 2: mov >two25=r11,0x2000000 +# copy-collector output starts +vmov d6,r3,r4 +vmov r5,r6,d3 +vmov r7,r8,d4 +vmov r9,r10,d5 +# copy-collector output ends +mov r11,0x2000000 + +# qhasm: hitmp lotmp = lou0 * two25 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,> 28) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#2,lou4=r1,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod2=float32#5,lod2=s4,hid2=float32#6,hid2=s5,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +vmov d2,r1,r2 +vmov r1,r2,d7 +vmov r5,r6,d0 +vmov r7,r8,d1 +vmov r11,r12,d14 +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou2=int32#4,lou2=r3,hiu2=int32#5,hiu2=r4,lod5=float32#11,lod5=s10,hid5=float32#12,hid5=s11,lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,two25=int32#12,0x2000000 +# asm 2: mov >two25=r11,0x2000000 +# copy-collector output starts +vmov d5,r3,r4 +vmov r5,r6,d2 +vmov r7,r8,d3 +vmov r9,r10,d4 +# copy-collector output ends +mov r11,0x2000000 + +# qhasm: hitmp lotmp = lou0 * two25 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,> 28) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#2,lou4=r1,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod1=float32#3,lod1=s2,hid1=float32#4,hid1=s3,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +vmov d1,r1,r2 +vmov r1,r2,d6 +vmov r5,r6,d7 +vmov r7,r8,d0 +vmov r11,r12,d15 +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod4=float32#9,lod4=s8,hid4=float32#10,hid4=s9,lou0=int32#4,lou0=r3,hiu0=int32#5,hiu0=r4,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou2=int32#8,lou2=r7,hiu2=int32#9,hiu2=r8,two25=int32#10,0x2000000 +# asm 2: mov >two25=r9,0x2000000 +# copy-collector output starts +vmov d4,r3,r4 +vmov r3,r4,d1 +vmov r5,r6,d2 +vmov r7,r8,d3 +# copy-collector output ends +mov r9,0x2000000 + +# qhasm: hitmp lotmp = lou0 * two25 +# asm 1: umull >lotmp=int32#12,>hitmp=int32#11,lotmp=r11,>hitmp=r10,> 2) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 28) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 2) +# asm 1: eor >hitmp=int32#11,hitmp=r10,hitmp=int32#11,hitmp=r10,> 28) +# asm 1: eor >hitmp=int32#11,hitmp=r10,hitmp=int32#11,hitmp=r10,lou4=int32#2,lou4=r1,hiu4=int32#3,hiu4=r2,lotmp=int32#10,lotmp=r9,lotmp=int32#4,lotmp=r3,lotmp2=int32#6,lotmp2=r5,lotmp=int32#4,lotmp=r3,lou4=int32#2,lou4=r1,hitmp=int32#4,hitmp=r3,hitmp=int32#4,hitmp=r3,hitmp2=int32#5,hitmp2=r4,hitmp=int32#4,hitmp=r3,hiu4=int32#3,hiu4=r2,lod0=float32#1,lod0=s0,hid0=float32#2,hid0=s1,o3=stack32#4 +# asm 2: str o3=[sp,#12] +# copy-collector input: str r0,[sp,#12] + +# qhasm: assign 16 to lod8 + +# qhasm: assign 17 to hid8 + +# qhasm: assign 18 to lod9 + +# qhasm: assign 19 to hid9 + +# qhasm: assign 20 to lod10 + +# qhasm: assign 21 to hid10 + +# qhasm: assign 22 to lod11 + +# qhasm: assign 23 to hid11 + +# qhasm: assign 24 to lod12 + +# qhasm: assign 25 to hid12 + +# qhasm: assign 26 to lod13 + +# qhasm: assign 27 to hid13 + +# qhasm: assign 28 to lod14 + +# qhasm: assign 29 to hid14 + +# qhasm: assign 30 to lod15 + +# qhasm: assign 31 to hid15 + +# qhasm: input_0 = o4 +# asm 1: ldr >input_0=int32#1,input_0=r0,input_0=int32#1,input_0=r0,o4=stack32#37 +# asm 2: str o4=[sp,#144] +# copy-collector input: str r0,[sp,#144] + +# qhasm: =? input_0 - 8 +# asm 1: cmp two24=int32#1,0x1000000 +# asm 2: mov >two24=r0,0x1000000 +mov r0,0x1000000 + +# qhasm: two13 = 0x2000 simple +# asm 1: mov >two13=int32#2,0x2000 +# asm 2: mov >two13=r1,0x2000 +mov r1,0x2000 + +# qhasm: lou0 = lod8 +# asm 1: vmov >lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lotmp=int32#12,>hitmp=int32#11,lotmp=r11,>hitmp=r10,> 6) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 29) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 6) +# asm 1: eor >hitmp=int32#11,hitmp=r10,> 29) +# asm 1: eor >hitmp=int32#11,hitmp=r10,hitmp=int32#11,hitmp=r10,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lotmp=int32#12,>hitmp=int32#11,lotmp=r11,>hitmp=r10,> 1) +# asm 1: eors >lotmp=int32#12,lotmp=r11,> 1) +# asm 1: eors >hitmp=int32#11,hitmp=r10,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >hitmp=int32#11,hitmp=r10,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lod9=float32#19,lod9=s18,hid9=float32#20,hid9=s19,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lom15=stack32#35 +# asm 2: str lom15=[sp,#136] +# copy-collector input: str r2,[sp,#136] + +# qhasm: him15 = hiu0 +# asm 1: str him15=stack32#36 +# asm 2: str him15=[sp,#140] +# copy-collector input: str r3,[sp,#140] + +# qhasm: hitmp lotmp = hiu3 * two13 +# asm 1: umull >lotmp=int32#12,>hitmp=int32#11,lotmp=r11,>hitmp=r10,> 6) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 29) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 6) +# asm 1: eor >hitmp=int32#11,hitmp=r10,> 29) +# asm 1: eor >hitmp=int32#11,hitmp=r10,hitmp=int32#11,hitmp=r10,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou4=int32#11,lou4=r10,hiu4=int32#12,hiu4=r11,lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 1) +# asm 1: eors >lotmp=int32#14,lotmp=r14,> 1) +# asm 1: eors >hitmp=int32#13,hitmp=r12,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou5=int32#13,lou5=r12,hiu5=int32#14,hiu5=r14,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lod10=float32#21,lod10=s20,hid10=float32#22,hid10=s21,lom9=stack32#23 +# asm 2: str lom9=[sp,#88] +# copy-collector input: str r4,[sp,#88] + +# qhasm: him9 = hiu1 +# asm 1: str him9=stack32#24 +# asm 2: str him9=[sp,#92] +# copy-collector input: str r5,[sp,#92] + +# qhasm: hitmp lotmp = hiu0 * two13 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 6) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 29) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 6) +# asm 1: eor >hitmp=int32#13,hitmp=r12,> 29) +# asm 1: eor >hitmp=int32#3,hitmp=r2,hitmp=int32#3,hitmp=r2,lou4=int32#4,lou4=r3,hiu4=int32#3,hiu4=r2,lou0=int32#11,lou0=r10,hiu0=int32#12,hiu0=r11,lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 1) +# asm 1: eors >lotmp=int32#14,lotmp=r14,> 1) +# asm 1: eors >hitmp=int32#13,hitmp=r12,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,lou4=int32#4,lou4=r3,hiu4=int32#3,hiu4=r2,lou5=int32#13,lou5=r12,hiu5=int32#14,hiu5=r14,lou4=int32#4,lou4=r3,hiu4=int32#3,hiu4=r2,lod11=float32#23,lod11=s22,hid11=float32#24,hid11=s23,lom10=stack32#25 +# asm 2: str lom10=[sp,#96] +# copy-collector input: str r3,[sp,#96] + +# qhasm: him10 = hiu4 +# asm 1: str him10=stack32#26 +# asm 2: str him10=[sp,#100] +# copy-collector input: str r2,[sp,#100] + +# qhasm: hitmp lotmp = hiu1 * two13 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 6) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 29) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 6) +# asm 1: eor >hitmp=int32#13,hitmp=r12,> 29) +# asm 1: eor >hitmp=int32#5,hitmp=r4,hitmp=int32#5,hitmp=r4,lou0=int32#6,lou0=r5,hiu0=int32#5,hiu0=r4,lou1=int32#11,lou1=r10,hiu1=int32#12,hiu1=r11,lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 1) +# asm 1: eors >lotmp=int32#14,lotmp=r14,> 1) +# asm 1: eors >hitmp=int32#13,hitmp=r12,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,lou0=int32#6,lou0=r5,hiu0=int32#5,hiu0=r4,lou5=int32#13,lou5=r12,hiu5=int32#14,hiu5=r14,lou0=int32#6,lou0=r5,hiu0=int32#5,hiu0=r4,lod12=float32#25,lod12=s24,hid12=float32#26,hid12=s25,lom11=stack32#27 +# asm 2: str lom11=[sp,#104] +# copy-collector input: str r5,[sp,#104] + +# qhasm: him11 = hiu0 +# asm 1: str him11=stack32#28 +# asm 2: str him11=[sp,#108] +# copy-collector input: str r4,[sp,#108] + +# qhasm: hitmp lotmp = hiu4 * two13 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 6) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 29) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 6) +# asm 1: eor >hitmp=int32#13,hitmp=r12,> 29) +# asm 1: eor >hitmp=int32#4,hitmp=r3,hitmp=int32#3,hitmp=r2,lou1=int32#4,lou1=r3,hiu1=int32#3,hiu1=r2,lou4=int32#11,lou4=r10,hiu4=int32#12,hiu4=r11,lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 1) +# asm 1: eors >lotmp=int32#14,lotmp=r14,> 1) +# asm 1: eors >hitmp=int32#13,hitmp=r12,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,lou1=int32#4,lou1=r3,hiu1=int32#3,hiu1=r2,lou5=int32#13,lou5=r12,hiu5=int32#14,hiu5=r14,lou1=int32#4,lou1=r3,hiu1=int32#3,hiu1=r2,lod13=float32#27,lod13=s26,hid13=float32#28,hid13=s27,lom12=stack32#29 +# asm 2: str lom12=[sp,#112] +# copy-collector input: str r3,[sp,#112] + +# qhasm: him12 = hiu1 +# asm 1: str him12=stack32#30 +# asm 2: str him12=[sp,#116] +# copy-collector input: str r2,[sp,#116] + +# qhasm: hitmp lotmp = hiu0 * two13 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 6) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 29) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 6) +# asm 1: eor >hitmp=int32#13,hitmp=r12,> 29) +# asm 1: eor >hitmp=int32#6,hitmp=r5,hitmp=int32#5,hitmp=r4,lou4=int32#6,lou4=r5,hiu4=int32#5,hiu4=r4,lou0=int32#11,lou0=r10,hiu0=int32#12,hiu0=r11,lod14=float32#29,lod14=s28,hid14=float32#30,hid14=s29,lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 1) +# asm 1: eors >lotmp=int32#14,lotmp=r14,> 1) +# asm 1: eors >hitmp=int32#13,hitmp=r12,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,lou4=int32#6,lou4=r5,hiu4=int32#5,hiu4=r4,lou4=int32#6,lou4=r5,hiu4=int32#5,hiu4=r4,lom13=stack32#31 +# asm 2: str lom13=[sp,#120] +# copy-collector input: str r5,[sp,#120] + +# qhasm: him13 = hiu4 +# asm 1: str him13=stack32#32 +# asm 2: str him13=[sp,#124] +# copy-collector input: str r4,[sp,#124] + +# qhasm: hitmp lotmp = hiu1 * two13 +# asm 1: umull >lotmp=int32#8,>hitmp=int32#7,lotmp=r7,>hitmp=r6,> 6) +# asm 1: eor >lotmp=int32#8,lotmp=r7,lotmp=int32#8,lotmp=r7,> 29) +# asm 1: eor >lotmp=int32#8,lotmp=r7,lotmp=int32#8,lotmp=r7,> 6) +# asm 1: eor >hitmp=int32#7,hitmp=r6,> 29) +# asm 1: eor >hitmp=int32#4,hitmp=r3,hitmp=int32#3,hitmp=r2,lou0=int32#4,lou0=r3,hiu0=int32#3,hiu0=r2,lou1=int32#7,lou1=r6,hiu1=int32#8,hiu1=r7,lod15=float32#31,lod15=s30,hid15=float32#32,hid15=s31,lotmp=int32#12,>hitmp=int32#11,lotmp=r11,>hitmp=r10,> 1) +# asm 1: eors >lotmp=int32#12,lotmp=r11,> 1) +# asm 1: eors >hitmp=int32#11,hitmp=r10,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >hitmp=int32#11,hitmp=r10,lou0=int32#4,lou0=r3,hiu0=int32#3,hiu0=r2,lou0=int32#4,lou0=r3,hiu0=int32#3,hiu0=r2,lom14=stack32#33 +# asm 2: str lom14=[sp,#128] +# copy-collector input: str r3,[sp,#128] + +# qhasm: him14 = hiu0 +# asm 1: str him14=stack32#34 +# asm 2: str him14=[sp,#132] +# copy-collector input: str r2,[sp,#132] + +# qhasm: hitmp lotmp = hiu4 * two13 +# asm 1: umull >lotmp=int32#4,>hitmp=int32#3,lotmp=r3,>hitmp=r2,> 6) +# asm 1: eor >lotmp=int32#2,lotmp=r1,lotmp=int32#2,lotmp=r1,> 29) +# asm 1: eor >lotmp=int32#2,lotmp=r1,lotmp=int32#2,lotmp=r1,> 6) +# asm 1: eor >hitmp=int32#3,hitmp=r2,> 29) +# asm 1: eor >hitmp=int32#3,hitmp=r2,hitmp=int32#3,hitmp=r2,lou1=int32#2,lou1=r1,hiu1=int32#3,hiu1=r2,lou0=int32#4,lou0=r3,hiu0=int32#5,hiu0=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lom8=stack32#21 +# asm 2: str lom8=[sp,#80] +# copy-collector input: str r5,[sp,#80] + +# qhasm: him8 = hiu2 +# asm 1: str him8=stack32#22 +# asm 2: str him8=[sp,#84] +# copy-collector input: str r6,[sp,#84] + +# qhasm: hitmp lotmp = hiu0 * two24 +# asm 1: umull >lotmp=int32#9,>hitmp=int32#8,lotmp=r8,>hitmp=r7,> 1) +# asm 1: eors >lotmp=int32#1,lotmp=r0,> 1) +# asm 1: eors >hitmp=int32#8,hitmp=r7,lotmp=int32#1,lotmp=r0,>7) +# asm 1: eor >lotmp=int32#1,lotmp=r0,lotmp=int32#1,lotmp=r0,>7) +# asm 1: eor >hitmp=int32#8,hitmp=r7,lou1=int32#1,lou1=r0,hiu1=int32#2,hiu1=r1,lou1=int32#1,lou1=r0,hiu1=int32#2,hiu1=r1,lom15=stack32#35 +# asm 2: str lom15=[sp,#136] +# copy-collector input: str r0,[sp,#136] + +# qhasm: him15 = hiu1 +# asm 1: str him15=stack32#36 +# asm 2: str him15=[sp,#140] +# copy-collector input: str r1,[sp,#140] + +# qhasm: lod8 = lou0 +# asm 1: vmov >lod8=float32#17,lod8=s16,hid8=float32#18,hid8=s17,lou0=int32#1,lou0=r0,hiu0=int32#2,hiu0=r1,lou1=int32#3,lou1=r2,hiu1=int32#4,hiu1=r3,lou2=int32#5,lou2=r4,hiu2=int32#6,hiu2=r5,lou3=int32#7,lou3=r6,hiu3=int32#8,hiu3=r7,lod8=float32#17,lod8=s16,hid8=float32#18,hid8=s17,lod9=float32#19,lod9=s18,hid9=float32#20,hid9=s19,lod10=float32#21,lod10=s20,hid10=float32#22,hid10=s21,lod11=float32#23,lod11=s22,hid11=float32#24,hid11=s23,lou0=int32#1,lou0=r0,hiu0=int32#2,hiu0=r1,lou1=int32#3,lou1=r2,hiu1=int32#4,hiu1=r3,lou2=int32#5,lou2=r4,hiu2=int32#6,hiu2=r5,lou3=int32#7,lou3=r6,hiu3=int32#8,hiu3=r7,lod12=float32#25,lod12=s24,hid12=float32#26,hid12=s25,lod13=float32#27,lod13=s26,hid13=float32#28,hid13=s27,lod14=float32#29,lod14=s28,hid14=float32#30,hid14=s29,lod15=float32#31,lod15=s30,hid15=float32#32,hid15=s31,input_0=int32#1,input_0=r0,input_0=int32#1,input_0=r0,o3=stack32#4 +# asm 2: str o3=[sp,#12] +# copy-collector input: str r0,[sp,#12] + +# qhasm: lou0 = lod0 +# asm 1: vmov >lou0=int32#1,lou0=r0,hiu0=int32#2,hiu0=r1,lou1=int32#3,lou1=r2,hiu1=int32#4,hiu1=r3,lou2=int32#5,lou2=r4,hiu2=int32#6,hiu2=r5,lou3=int32#7,lou3=r6,hiu3=int32#8,hiu3=r7,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou0=int32#1,lou0=r0,hiu0=int32#2,hiu0=r1,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou1=int32#3,lou1=r2,hiu1=int32#4,hiu1=r3,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou2=int32#5,lou2=r4,hiu2=int32#6,hiu2=r5,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou3=int32#7,lou3=r6,hiu3=int32#8,hiu3=r7,lom0=stack32#5 +# asm 2: str lom0=[sp,#16] +# copy-collector input: str r0,[sp,#16] + +# qhasm: him0 = hiu0 +# asm 1: str him0=stack32#6 +# asm 2: str him0=[sp,#20] +# copy-collector input: str r1,[sp,#20] + +# qhasm: lom1 = lou1 +# asm 1: str lom1=stack32#7 +# asm 2: str lom1=[sp,#24] +# copy-collector input: str r2,[sp,#24] + +# qhasm: him1 = hiu1 +# asm 1: str him1=stack32#8 +# asm 2: str him1=[sp,#28] +# copy-collector input: str r3,[sp,#28] + +# qhasm: lom2 = lou2 +# asm 1: str lom2=stack32#9 +# asm 2: str lom2=[sp,#32] +# copy-collector input: str r4,[sp,#32] + +# qhasm: him2 = hiu2 +# asm 1: str him2=stack32#10 +# asm 2: str him2=[sp,#36] +# copy-collector input: str r5,[sp,#36] + +# qhasm: lom3 = lou3 +# asm 1: str lom3=stack32#11 +# asm 2: str lom3=[sp,#40] +# copy-collector input: str r6,[sp,#40] + +# qhasm: him3 = hiu3 +# asm 1: str him3=stack32#12 +# asm 2: str him3=[sp,#44] +# copy-collector input: str r7,[sp,#44] + +# qhasm: lod0 = lou0 +# asm 1: vmov >lod0=float32#1,lod0=s0,hid0=float32#2,hid0=s1,lod1=float32#3,lod1=s2,hid1=float32#4,hid1=s3,lod2=float32#5,lod2=s4,hid2=float32#6,hid2=s5,lod3=float32#7,lod3=s6,hid3=float32#8,hid3=s7,lou0=int32#1,lou0=r0,hiu0=int32#2,hiu0=r1,lou1=int32#3,lou1=r2,hiu1=int32#4,hiu1=r3,lou2=int32#5,lou2=r4,hiu2=int32#6,hiu2=r5,lou3=int32#7,lou3=r6,hiu3=int32#8,hiu3=r7,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou0=int32#1,lou0=r0,hiu0=int32#2,hiu0=r1,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou1=int32#3,lou1=r2,hiu1=int32#4,hiu1=r3,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou2=int32#5,lou2=r4,hiu2=int32#6,hiu2=r5,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou3=int32#7,lou3=r6,hiu3=int32#8,hiu3=r7,lom4=stack32#13 +# asm 2: str lom4=[sp,#48] +# copy-collector input: str r0,[sp,#48] + +# qhasm: him4 = hiu0 +# asm 1: str him4=stack32#14 +# asm 2: str him4=[sp,#52] +# copy-collector input: str r1,[sp,#52] + +# qhasm: lom5 = lou1 +# asm 1: str lom5=stack32#15 +# asm 2: str lom5=[sp,#56] +# copy-collector input: str r2,[sp,#56] + +# qhasm: him5 = hiu1 +# asm 1: str him5=stack32#16 +# asm 2: str him5=[sp,#60] +# copy-collector input: str r3,[sp,#60] + +# qhasm: lom6 = lou2 +# asm 1: str lom6=stack32#17 +# asm 2: str lom6=[sp,#64] +# copy-collector input: str r4,[sp,#64] + +# qhasm: him6 = hiu2 +# asm 1: str him6=stack32#18 +# asm 2: str him6=[sp,#68] +# copy-collector input: str r5,[sp,#68] + +# qhasm: lom7 = lou3 +# asm 1: str lom7=stack32#19 +# asm 2: str lom7=[sp,#72] +# copy-collector input: str r6,[sp,#72] + +# qhasm: him7 = hiu3 +# asm 1: str him7=stack32#20 +# asm 2: str him7=[sp,#76] +# copy-collector input: str r7,[sp,#76] + +# qhasm: lod4 = lou0 +# asm 1: vmov >lod4=float32#9,lod4=s8,hid4=float32#10,hid4=s9,lod5=float32#11,lod5=s10,hid5=float32#12,hid5=s11,lod6=float32#13,lod6=s12,hid6=float32#14,hid6=s13,lod7=float32#15,lod7=s14,hid7=float32#16,hid7=s15,input_0=int32#1,input_0=r0,input_0=int32#1,input_0=r0,o2=stack32#3 +# asm 2: str o2=[sp,#8] +# copy-collector input: str r0,[sp,#8] + +# qhasm: goto mainloop if !unsigned< +# copy-collector output starts +str r0,[sp,#8] +# copy-collector output ends +bhs ._mainloop + +# qhasm: endmainloop: +._endmainloop: + +# qhasm: input_1 = o0 +# asm 1: ldr >input_1=int32#2,input_1=r1,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,input_0=int32#1,input_0=r0,=: + +pushenter f:enter/f:>input_0=int32#1:>input_1=int32#2:>input_2=int32#3:>input_3=int32#4:asm/pushenter #f: + +popreturn r:=:#f:jump/f:=:asm/goto #f if !unsigned!lt;: + +r = s:>r=int32:r = r=int32:#n:asm/>r = #n: +r = n simple:>r=int32:#n:asm/>r = #n simple: +r += n:r=int32:#n:asm/r=int32:r = r=int32:r = r=stack32:r = r=int32:#n:asm/r=int32:#n:>?=:asm/=? r=int32:#n:>?=:>?unsigned>=:asm/=? unsigned!lt;? r=int64:r = lor = hir=int64:r = lor = hir=stack64:r = lor = hir=int64:r = lor = hir=spill64:r = lor = hir=int64:r = mem32[r = mem32[r=int64:r = mem32[r = mem32[r=int64:r = mem32[r = mem32[r=int64:r = lor = hir=int64:r=int64:r=int64:r=int64:r=int64:r=int64:statebytes_stack=stack32#1 = statebytes_stack=o0 = in_stack=stack32#2 = in_stack=o1 = inlen=int32#2 = inlen=input_1 = inlen_stack=stack32#3 = inlen_stack=o2 = constants_stack=stack32#4 = constants_stack=o3 = r0=int64#1 = mem32[r0=u0 = mem32[r0=int64#1 = mem32[r0=u0 = mem32[r1=int64#2 = mem32[r1=u1 = mem32[r1=int64#2 = mem32[r1=u1 = mem32[r2=int64#3 = mem32[r2=u2 = mem32[r2=int64#3 = mem32[r2=u2 = mem32[r3=int64#4 = mem32[r3=u3 = mem32[r3=int64#4 = mem32[r3=u3 = mem32[r0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = histate0=stack64#1 = lostate0=m0 = lostate0=stack64#1 = histate0=m0 = histate1=stack64#2 = lostate1=m1 = lostate1=stack64#2 = histate1=m1 = histate2=stack64#3 = lostate2=m2 = lostate2=stack64#3 = histate2=m2 = histate3=stack64#4 = lostate3=m3 = lostate3=stack64#4 = histate3=m3 = hir0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hir1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir4=int64#1 = mem32[r4=u0 = mem32[r4=int64#1 = mem32[r4=u0 = mem32[r5=int64#2 = mem32[r5=u1 = mem32[r5=int64#2 = mem32[r5=u1 = mem32[r6=int64#3 = mem32[r6=u2 = mem32[r6=int64#3 = mem32[r6=u2 = mem32[r7=int64#4 = mem32[r7=u3 = mem32[r7=int64#4 = mem32[r7=u3 = mem32[r4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = histate4=stack64#5 = lostate4=m4 = lostate4=stack64#5 = histate4=m4 = histate5=stack64#6 = lostate5=m5 = lostate5=stack64#6 = histate5=m5 = histate6=stack64#7 = lostate6=m6 = lostate6=stack64#7 = histate6=m6 = histate7=stack64#8 = lostate7=m7 = lostate7=stack64#8 = histate7=m7 = hir4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hiin=int32#1 = in=input_0 = w0=int64#1 = mem32[w0=u0 = mem32[w0=int64#1 = mem32[w0=u0 = mem32[w1=int64#2 = mem32[w1=u1 = mem32[w1=int64#2 = mem32[w1=u1 = mem32[w2=int64#3 = mem32[w2=u2 = mem32[w2=int64#3 = mem32[w2=u2 = mem32[w3=int64#4 = mem32[w3=u3 = mem32[w3=int64#4 = mem32[w3=u3 = mem32[w0=int64#1 = low0=u0 = low0=int64#1 = hiw0=u0 = hiw1=int64#2 = low1=u1 = low1=int64#2 = hiw1=u1 = hiw2=int64#3 = low2=u2 = low2=int64#3 = hiw2=u2 = hiw3=int64#4 = low3=u3 = low3=int64#4 = hiw3=u3 = hiw0_spill=spill64#9 = low0_spill=d8 = low0_spill=spill64#9 = hiw0_spill=d8 = hiw1_spill=spill64#10 = low1_spill=d9 = low1_spill=spill64#10 = hiw1_spill=d9 = hiw2_spill=spill64#11 = low2_spill=d10 = low2_spill=spill64#11 = hiw2_spill=d10 = hiw3_spill=spill64#12 = low3_spill=d11 = low3_spill=spill64#12 = hiw3_spill=d11 = hiw4=int64#1 = mem32[w4=u0 = mem32[w4=int64#1 = mem32[w4=u0 = mem32[w5=int64#2 = mem32[w5=u1 = mem32[w5=int64#2 = mem32[w5=u1 = mem32[w6=int64#3 = mem32[w6=u2 = mem32[w6=int64#3 = mem32[w6=u2 = mem32[w7=int64#4 = mem32[w7=u3 = mem32[w7=int64#4 = mem32[w7=u3 = mem32[w4=int64#1 = low4=u0 = low4=int64#1 = hiw4=u0 = hiw5=int64#2 = low5=u1 = low5=int64#2 = hiw5=u1 = hiw6=int64#3 = low6=u2 = low6=int64#3 = hiw6=u2 = hiw7=int64#4 = low7=u3 = low7=int64#4 = hiw7=u3 = hiw4_spill=spill64#13 = low4_spill=d12 = low4_spill=spill64#13 = hiw4_spill=d12 = hiw5_spill=spill64#14 = low5_spill=d13 = low5_spill=spill64#14 = hiw5_spill=d13 = hiw6_spill=spill64#15 = low6_spill=d14 = low6_spill=spill64#15 = hiw6_spill=d14 = hiw7_spill=spill64#16 = low7_spill=d15 = low7_spill=spill64#16 = hiw7_spill=d15 = hiw8=int64#1 = mem32[w8=u0 = mem32[w8=int64#1 = mem32[w8=u0 = mem32[w9=int64#2 = mem32[w9=u1 = mem32[w9=int64#2 = mem32[w9=u1 = mem32[w10=int64#3 = mem32[w10=u2 = mem32[w10=int64#3 = mem32[w10=u2 = mem32[w11=int64#4 = mem32[w11=u3 = mem32[w11=int64#4 = mem32[w11=u3 = mem32[w8=int64#1 = low8=u0 = low8=int64#1 = hiw8=u0 = hiw9=int64#2 = low9=u1 = low9=int64#2 = hiw9=u1 = hiw10=int64#3 = low10=u2 = low10=int64#3 = hiw10=u2 = hiw11=int64#4 = low11=u3 = low11=int64#4 = hiw11=u3 = hiw0_next=stack64#9 = low0_next=m8 = low0_next=stack64#9 = hiw0_next=m8 = hiw1_next=stack64#10 = low1_next=m9 = low1_next=stack64#10 = hiw1_next=m9 = hiw2_next=stack64#11 = low2_next=m10 = low2_next=stack64#11 = hiw2_next=m10 = hiw3_next=stack64#12 = low3_next=m11 = low3_next=stack64#12 = hiw3_next=m11 = hiw12=int64#1 = mem32[w12=u0 = mem32[w12=int64#1 = mem32[w12=u0 = mem32[w13=int64#2 = mem32[w13=u1 = mem32[w13=int64#2 = mem32[w13=u1 = mem32[w14=int64#3 = mem32[w14=u2 = mem32[w14=int64#3 = mem32[w14=u2 = mem32[w15=int64#4 = mem32[w15=u3 = mem32[w15=int64#4 = mem32[w15=u3 = mem32[w12=int64#1 = low12=u0 = low12=int64#1 = hiw12=u0 = hiw13=int64#2 = low13=u1 = low13=int64#2 = hiw13=u1 = hiw14=int64#3 = low14=u2 = low14=int64#3 = hiw14=u2 = hiw15=int64#4 = low15=u3 = low15=int64#4 = hiw15=u3 = hiw4_next=stack64#13 = low4_next=m12 = low4_next=stack64#13 = hiw4_next=m12 = hiw5_next=stack64#14 = low5_next=m13 = low5_next=stack64#14 = hiw5_next=m13 = hiw6_next=stack64#15 = low6_next=m14 = low6_next=stack64#15 = hiw6_next=m14 = hiw7_next=stack64#16 = low7_next=m15 = low7_next=stack64#16 = hiw7_next=m15 = hiin_stack=stack32#2 = in_stack=o1 = i=int32#1 = 80 simple +# asm 2: >i=input_0 = 80 simple +input_0 = 80 simple +# qhasm: i_stack = i +# asm 1: >i_stack=stack32#5 = i_stack=o4 = constants=int32#1 = constants=input_0 = r3=int64#1 = lor3=u0 = lor3=int64#1 = hir3=u0 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#3 = lor5=u2 = lor5=int64#3 = hir5=u2 = hir6=int64#4 = lor6=u3 = lor6=int64#4 = hir6=u3 = hir7=int64#5 = lor7=u4 = lor7=int64#5 = hir7=u4 = hiw0=int64#6 = low0=u5 = low0=int64#6 = hiw0=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou1 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou1 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu1 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu1 unsigned>> 14) +# asm 1: hitmp ^= (lor3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir0=int64#2 = lor0=u1 = lor0=int64#2 = hir0=u1 = hir1=int64#3 = lor1=u2 = lor1=int64#3 = hir1=u2 = hir2=int64#4 = lor2=u3 = lor2=int64#4 = hir2=u3 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu1 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou1 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou1 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu1 unsigned>> 28) +# asm 1: hitmp ^= (lor7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#3 = lor5=u2 = lor5=int64#3 = hir5=u2 = hir6=int64#5 = lor6=u4 = lor6=int64#5 = hir6=u4 = hiw1=int64#6 = low1=u5 = low1=int64#6 = hiw1=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou0 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou0 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu0 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu0 unsigned>> 14) +# asm 1: hitmp ^= (lor2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir7=int64#1 = lor7=u0 = lor7=int64#1 = hir7=u0 = hir0=int64#2 = lor0=u1 = lor0=int64#2 = hir0=u1 = hir1=int64#3 = lor1=u2 = lor1=int64#3 = hir1=u2 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir3=int64#1 = lor3=u0 = lor3=int64#1 = hir3=u0 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#5 = lor5=u4 = lor5=int64#5 = hir5=u4 = hiw2=int64#6 = low2=u5 = low2=int64#6 = hiw2=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou3 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou3 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu3 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu3 unsigned>> 14) +# asm 1: hitmp ^= (lor1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir6=int64#1 = lor6=u0 = lor6=int64#1 = hir6=u0 = hir7=int64#2 = lor7=u1 = lor7=int64#2 = hir7=u1 = hir0=int64#4 = lor0=u3 = lor0=int64#4 = hir0=u3 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir2=int64#1 = lor2=u0 = lor2=int64#1 = hir2=u0 = hir3=int64#2 = lor3=u1 = lor3=int64#2 = hir3=u1 = hir4=int64#5 = lor4=u4 = lor4=int64#5 = hir4=u4 = hiw3=int64#6 = low3=u5 = low3=int64#6 = hiw3=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou2 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou2 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu2 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu2 unsigned>> 14) +# asm 1: hitmp ^= (lor0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hir5=int64#1 = lor5=u0 = lor5=int64#1 = hir5=u0 = hir6=int64#2 = lor6=u1 = lor6=int64#2 = hir6=u1 = hir7=int64#3 = lor7=u2 = lor7=int64#3 = hir7=u2 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir1=int64#1 = lor1=u0 = lor1=int64#1 = hir1=u0 = hir2=int64#2 = lor2=u1 = lor2=int64#2 = hir2=u1 = hir3=int64#5 = lor3=u4 = lor3=int64#5 = hir3=u4 = hiw4=int64#6 = low4=u5 = low4=int64#6 = hiw4=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou3 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou3 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu3 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu3 unsigned>> 14) +# asm 1: hitmp ^= (lor7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#4 = lor6=u3 = lor6=int64#4 = hir6=u3 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#5 = lor2=u4 = lor2=int64#5 = hir2=u4 = hiw5=int64#6 = low5=u5 = low5=int64#6 = hiw5=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou2 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou2 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu2 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu2 unsigned>> 14) +# asm 1: hitmp ^= (lor6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir3=int64#1 = lor3=u0 = lor3=int64#1 = hir3=u0 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#3 = lor5=u2 = lor5=int64#3 = hir5=u2 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir7=int64#1 = lor7=u0 = lor7=int64#1 = hir7=u0 = hir0=int64#2 = lor0=u1 = lor0=int64#2 = hir0=u1 = hir1=int64#5 = lor1=u4 = lor1=int64#5 = hir1=u4 = hiw6=int64#6 = low6=u5 = low6=int64#6 = hiw6=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou3 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou3 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu3 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu3 unsigned>> 14) +# asm 1: hitmp ^= (lor5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir2=int64#1 = lor2=u0 = lor2=int64#1 = hir2=u0 = hir3=int64#2 = lor3=u1 = lor3=int64#2 = hir3=u1 = hir4=int64#4 = lor4=u3 = lor4=int64#4 = hir4=u3 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir6=int64#1 = lor6=u0 = lor6=int64#1 = hir6=u0 = hir7=int64#2 = lor7=u1 = lor7=int64#2 = hir7=u1 = hir0=int64#5 = lor0=u4 = lor0=int64#5 = hir0=u4 = hiw7=int64#6 = low7=u5 = low7=int64#6 = hiw7=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou2 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou2 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu2 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu2 unsigned>> 14) +# asm 1: hitmp ^= (lor4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir1=int64#1 = lor1=u0 = lor1=int64#1 = hir1=u0 = hir2=int64#2 = lor2=u1 = lor2=int64#2 = hir2=u1 = hir3=int64#3 = lor3=u2 = lor3=int64#3 = hir3=u2 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hiconstants_stack=stack32#4 = constants_stack=o3 = i=int32#1 = i=input_0 = i_stack=stack32#5 = i_stack=o4 = w8=int64#1 = low8=u0 = low8=int64#1 = hiw8=u0 = hiw9=int64#2 = low9=u1 = low9=int64#2 = hiw9=u1 = hiw6=int64#3 = low6=u2 = low6=int64#3 = hiw6=u2 = hiw1=int64#4 = low1=u3 = low1=int64#4 = hiw1=u3 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou2 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu2 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu2 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou2 unsigned>> 29) +# asm 1: hitmp ^= (hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou1 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu1 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou1 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu1 unsigned>>7) +# asm 1: carry? low1_spill=spill64#10 = low1_spill=d9 = low1_spill=spill64#10 = hiw1_spill=d9 = hiw7=int64#4 = low7=u3 = low7=int64#4 = hiw7=u3 = hiw8_stack=stack64#16 = low8_stack=m15 = low8_stack=stack64#16 = hiw8_stack=m15 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou3 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu3 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu3 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou3 unsigned>> 29) +# asm 1: hitmp ^= (hiw10=int64#5 = low10=u4 = low10=int64#5 = hiw10=u4 = hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou4 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu4 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou4 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu4 unsigned>>7) +# asm 1: carry? low2=int64#6 = low2=u5 = low2=int64#6 = hiw2=u5 = hiw2_spill=spill64#11 = low2_spill=d10 = low2_spill=spill64#11 = hiw2_spill=d10 = hiw1_next=stack64#10 = low1_next=m9 = low1_next=stack64#10 = hiw1_next=m9 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou0 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu0 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu0 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou0 unsigned>> 29) +# asm 1: hitmp ^= (hiw11=int64#1 = low11=u0 = low11=int64#1 = hiw11=u0 = hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou0 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu0 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou0 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu0 unsigned>>7) +# asm 1: carry? low3=int64#6 = low3=u5 = low3=int64#6 = hiw3=u5 = hiw3_spill=spill64#12 = low3_spill=d11 = low3_spill=spill64#12 = hiw3_spill=d11 = hiw2_next=stack64#11 = low2_next=m10 = low2_next=stack64#11 = hiw2_next=m10 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou1 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu1 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu1 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou1 unsigned>> 29) +# asm 1: hitmp ^= (hiw12=int64#2 = low12=u1 = low12=int64#2 = hiw12=u1 = hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou1 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu1 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou1 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu1 unsigned>>7) +# asm 1: carry? low4=int64#6 = low4=u5 = low4=int64#6 = hiw4=u5 = hiw4_spill=spill64#13 = low4_spill=d12 = low4_spill=spill64#13 = hiw4_spill=d12 = hiw3_next=stack64#12 = low3_next=m11 = low3_next=stack64#12 = hiw3_next=m11 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou4 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu4 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu4 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou4 unsigned>> 29) +# asm 1: hitmp ^= (hiw13=int64#5 = low13=u4 = low13=int64#5 = hiw13=u4 = hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou4 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu4 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou4 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu4 unsigned>>7) +# asm 1: carry? low5=int64#6 = low5=u5 = low5=int64#6 = hiw5=u5 = hiw5_spill=spill64#14 = low5_spill=d13 = low5_spill=spill64#14 = hiw5_spill=d13 = hiw4_next=stack64#13 = low4_next=m12 = low4_next=stack64#13 = hiw4_next=m12 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou0 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu0 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu0 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou0 unsigned>> 29) +# asm 1: hitmp ^= (hiw14=int64#1 = low14=u0 = low14=int64#1 = hiw14=u0 = hiw6_spill=spill64#15 = low6_spill=d14 = low6_spill=spill64#15 = hiw6_spill=d14 = hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou0 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu0 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou0 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu0 unsigned>>7) +# asm 1: carry? low5_next=stack64#14 = low5_next=m13 = low5_next=stack64#14 = hiw5_next=m13 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou1 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu1 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu1 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou1 unsigned>> 29) +# asm 1: hitmp ^= (hiw15=int64#2 = low15=u1 = low15=int64#2 = hiw15=u1 = hiw7_spill=spill64#16 = low7_spill=d15 = low7_spill=spill64#16 = hiw7_spill=d15 = hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou1 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu1 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou1 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu1 unsigned>>7) +# asm 1: carry? low6_next=stack64#15 = low6_next=m14 = low6_next=stack64#15 = hiw6_next=m14 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou4 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu4 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu4 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou4 unsigned>> 29) +# asm 1: hitmp ^= (hiw0=int64#1 = low0=u0 = low0=int64#1 = hiw0=u0 = hiw8=int64#3 = low8=u2 = low8=int64#3 = hiw8=u2 = hiw0_next=stack64#9 = low0_next=m8 = low0_next=stack64#9 = hiw0_next=m8 = hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou0 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu0 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou0 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu0 unsigned>>7) +# asm 1: carry? low7_next=stack64#16 = low7_next=m15 = low7_next=stack64#16 = hiw7_next=m15 = hiw0_spill=spill64#9 = low0_spill=d8 = low0_spill=spill64#9 = hiw0_spill=d8 = hiw0=int64#1 = low0=u0 = low0=int64#1 = hiw0=u0 = hiw1=int64#2 = low1=u1 = low1=int64#2 = hiw1=u1 = hiw2=int64#3 = low2=u2 = low2=int64#3 = hiw2=u2 = hiw3=int64#4 = low3=u3 = low3=int64#4 = hiw3=u3 = hiw0_spill=spill64#9 = low0_spill=d8 = low0_spill=spill64#9 = hiw0_spill=d8 = hiw1_spill=spill64#10 = low1_spill=d9 = low1_spill=spill64#10 = hiw1_spill=d9 = hiw2_spill=spill64#11 = low2_spill=d10 = low2_spill=spill64#11 = hiw2_spill=d10 = hiw3_spill=spill64#12 = low3_spill=d11 = low3_spill=spill64#12 = hiw3_spill=d11 = hiw4=int64#1 = low4=u0 = low4=int64#1 = hiw4=u0 = hiw5=int64#2 = low5=u1 = low5=int64#2 = hiw5=u1 = hiw6=int64#3 = low6=u2 = low6=int64#3 = hiw6=u2 = hiw7=int64#4 = low7=u3 = low7=int64#4 = hiw7=u3 = hiw4_spill=spill64#13 = low4_spill=d12 = low4_spill=spill64#13 = hiw4_spill=d12 = hiw5_spill=spill64#14 = low5_spill=d13 = low5_spill=spill64#14 = hiw5_spill=d13 = hiw6_spill=spill64#15 = low6_spill=d14 = low6_spill=spill64#15 = hiw6_spill=d14 = hiw7_spill=spill64#16 = low7_spill=d15 = low7_spill=spill64#16 = hiw7_spill=d15 = hiconstants=int32#1 = constants=input_0 = constants_stack=stack32#4 = constants_stack=o3 = r0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = histate0=stack64#1 = lostate0=m0 = lostate0=stack64#1 = histate0=m0 = histate1=stack64#2 = lostate1=m1 = lostate1=stack64#2 = histate1=m1 = histate2=stack64#3 = lostate2=m2 = lostate2=stack64#3 = histate2=m2 = histate3=stack64#4 = lostate3=m3 = lostate3=stack64#4 = histate3=m3 = hir0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hir1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = histate4=stack64#5 = lostate4=m4 = lostate4=stack64#5 = histate4=m4 = histate5=stack64#6 = lostate5=m5 = lostate5=stack64#6 = histate5=m5 = histate6=stack64#7 = lostate6=m6 = lostate6=stack64#7 = histate6=m6 = histate7=stack64#8 = lostate7=m7 = lostate7=stack64#8 = histate7=m7 = hir4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hiinlen=int32#1 = inlen=input_0 = =? inlen -= 128 +# asm 1: =? unsignedinlen_stack=stack32#3 = inlen_stack=o2 = = +goto mainloop if !unsigned< +# qhasm: endmainloop: +endmainloop: +# qhasm: statebytes = statebytes_stack +# asm 1: >statebytes=int32#2 = statebytes=input_1 = r0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = hir0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = hi inner32.S + +inner32.q: inner.q inner32.desc inner32.q.do inner32.top + sh inner32.q.do > inner32.q diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/align b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/align new file mode 120000 index 0000000000..701f440544 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/align @@ -0,0 +1 @@ +../m3/align \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/api.h b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/api.h new file mode 120000 index 0000000000..1dfe625ff0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/api.h @@ -0,0 +1 @@ +../m3/api.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/architectures b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/architectures new file mode 120000 index 0000000000..9ccef9443d --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/architectures @@ -0,0 +1 @@ +../m3/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/constants.c b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/constants.c new file mode 120000 index 0000000000..d9f993dec8 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/constants.c @@ -0,0 +1 @@ +../m3/constants.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/copy-collector b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/copy-collector new file mode 120000 index 0000000000..f07c9ae7db --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/copy-collector @@ -0,0 +1 @@ +../m3/copy-collector \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/implementors b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/implementors new file mode 120000 index 0000000000..3476030106 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/implementors @@ -0,0 +1 @@ +../m3/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/inner.h b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/inner.h new file mode 120000 index 0000000000..49c0a8e05d --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/inner.h @@ -0,0 +1 @@ +../m3/inner.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/inner.q b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/inner.q new file mode 120000 index 0000000000..bff2ba23be --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/inner.q @@ -0,0 +1 @@ +../m4mult/inner.q \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/inner32.S b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/inner32.S new file mode 100644 index 0000000000..09720e5db0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/inner32.S @@ -0,0 +1,6593 @@ +// linker define inner + +# qhasm: int32 input_0 + +# qhasm: int32 input_1 + +# qhasm: int32 input_2 + +# qhasm: int32 input_3 + +# qhasm: stack32 input_4 + +# qhasm: stack32 input_5 + +# qhasm: stack32 input_6 + +# qhasm: stack32 input_7 + +# qhasm: int32 caller_r4 + +# qhasm: int32 caller_r5 + +# qhasm: int32 caller_r6 + +# qhasm: int32 caller_r7 + +# qhasm: int32 caller_r8 + +# qhasm: int32 caller_r9 + +# qhasm: int32 caller_r10 + +# qhasm: int32 caller_r11 + +# qhasm: int32 caller_r12 + +# qhasm: int32 caller_r14 + +# qhasm: startcode +.text +.arch armv7 +.syntax unified + +# qhasm: int32 two13 + +# qhasm: int32 two23 + +# qhasm: int32 two24 + +# qhasm: int32 two25 + +# qhasm: int32 lotmp + +# qhasm: int32 lotmp2 + +# qhasm: int32 hitmp + +# qhasm: int32 hitmp2 + +# qhasm: int32 lou0 + +# qhasm: int32 lou1 + +# qhasm: int32 lou2 + +# qhasm: int32 lou3 + +# qhasm: int32 lou4 + +# qhasm: int32 lou5 + +# qhasm: int32 hiu0 + +# qhasm: int32 hiu1 + +# qhasm: int32 hiu2 + +# qhasm: int32 hiu3 + +# qhasm: int32 hiu4 + +# qhasm: int32 hiu5 + +# qhasm: stack32 hid0 + +# qhasm: stack32 hid1 + +# qhasm: stack32 hid2 + +# qhasm: stack32 hid3 + +# qhasm: stack32 hid4 + +# qhasm: stack32 hid5 + +# qhasm: stack32 hid6 + +# qhasm: stack32 hid7 + +# qhasm: stack32 hid8 + +# qhasm: stack32 hid9 + +# qhasm: stack32 hid10 + +# qhasm: stack32 hid11 + +# qhasm: stack32 hid12 + +# qhasm: stack32 hid13 + +# qhasm: stack32 hid14 + +# qhasm: stack32 hid15 + +# qhasm: stack32 lod0 + +# qhasm: stack32 lod1 + +# qhasm: stack32 lod2 + +# qhasm: stack32 lod3 + +# qhasm: stack32 lod4 + +# qhasm: stack32 lod5 + +# qhasm: stack32 lod6 + +# qhasm: stack32 lod7 + +# qhasm: stack32 lod8 + +# qhasm: stack32 lod9 + +# qhasm: stack32 lod10 + +# qhasm: stack32 lod11 + +# qhasm: stack32 lod12 + +# qhasm: stack32 lod13 + +# qhasm: stack32 lod14 + +# qhasm: stack32 lod15 + +# qhasm: stack32 him0 + +# qhasm: stack32 him1 + +# qhasm: stack32 him2 + +# qhasm: stack32 him3 + +# qhasm: stack32 him4 + +# qhasm: stack32 him5 + +# qhasm: stack32 him6 + +# qhasm: stack32 him7 + +# qhasm: stack32 him8 + +# qhasm: stack32 him9 + +# qhasm: stack32 him10 + +# qhasm: stack32 him11 + +# qhasm: stack32 him12 + +# qhasm: stack32 him13 + +# qhasm: stack32 him14 + +# qhasm: stack32 him15 + +# qhasm: stack32 lom0 + +# qhasm: stack32 lom1 + +# qhasm: stack32 lom2 + +# qhasm: stack32 lom3 + +# qhasm: stack32 lom4 + +# qhasm: stack32 lom5 + +# qhasm: stack32 lom6 + +# qhasm: stack32 lom7 + +# qhasm: stack32 lom8 + +# qhasm: stack32 lom9 + +# qhasm: stack32 lom10 + +# qhasm: stack32 lom11 + +# qhasm: stack32 lom12 + +# qhasm: stack32 lom13 + +# qhasm: stack32 lom14 + +# qhasm: stack32 lom15 + +# qhasm: stack32 o0 + +# qhasm: stack32 o1 + +# qhasm: stack32 o2 + +# qhasm: stack32 o3 + +# qhasm: stack32 o4 + +# qhasm: rpushenter CRYPTO_SHARED_NAMESPACE(inner) +.p2align 2 +.global CRYPTO_SHARED_NAMESPACE(inner) +.type CRYPTO_SHARED_NAMESPACE(inner),%function +.thumb +.thumb_func +CRYPTO_SHARED_NAMESPACE(inner): +push {r4,r5,r6,r7,r8,r9,r10,r11,r14} +sub.w sp,sp,#288 + +# qhasm: o0 = input_0 +# asm 1: str o0=stack32#1 +# asm 2: str o0=[sp,#0] +# copy-collector input: str r0,[sp,#0] + +# qhasm: o1 = input_1 +# asm 1: str o1=stack32#2 +# asm 2: str o1=[sp,#4] +# copy-collector input: str r1,[sp,#4] + +# qhasm: input_1 = input_2 - 128 +# asm 1: sub >input_1=int32#2,input_1=r1,o2=stack32#3 +# asm 2: str o2=[sp,#8] +# copy-collector input: str r1,[sp,#8] + +# qhasm: o3 = input_3 +# asm 1: str o3=stack32#4 +# asm 2: str o3=[sp,#12] +# copy-collector input: str r3,[sp,#12] + +# qhasm: hiu0 = mem32[input_0] +# asm 1: ldr >hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#4,[hiu1=r3,[lou1=int32#5,[lou1=r4,[hiu2=int32#6,[hiu2=r5,[lou2=int32#7,[lou2=r6,[hiu3=int32#8,[hiu3=r7,[lou3=int32#9,[lou3=r8,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#5,lou1=r4,hiu1=int32#4,hiu1=r3,lou2=int32#7,lou2=r6,hiu2=int32#6,hiu2=r5,lou3=int32#9,lou3=r8,hiu3=int32#8,hiu3=r7,lom0=stack32#5 +# asm 2: str lom0=[sp,#16] +# copy-collector input: str r2,[sp,#16] + +# qhasm: him0 = hiu0 +# asm 1: str him0=stack32#6 +# asm 2: str him0=[sp,#20] +# copy-collector input: str r1,[sp,#20] + +# qhasm: lom1 = lou1 +# asm 1: str lom1=stack32#7 +# asm 2: str lom1=[sp,#24] +# copy-collector input: str r4,[sp,#24] + +# qhasm: him1 = hiu1 +# asm 1: str him1=stack32#8 +# asm 2: str him1=[sp,#28] +# copy-collector input: str r3,[sp,#28] + +# qhasm: lom2 = lou2 +# asm 1: str lom2=stack32#9 +# asm 2: str lom2=[sp,#32] +# copy-collector input: str r6,[sp,#32] + +# qhasm: him2 = hiu2 +# asm 1: str him2=stack32#10 +# asm 2: str him2=[sp,#36] +# copy-collector input: str r5,[sp,#36] + +# qhasm: lom3 = lou3 +# asm 1: str lom3=stack32#11 +# asm 2: str lom3=[sp,#40] +# copy-collector input: str r8,[sp,#40] + +# qhasm: him3 = hiu3 +# asm 1: str him3=stack32#12 +# asm 2: str him3=[sp,#44] +# copy-collector input: str r7,[sp,#44] + +# qhasm: lod0 = lou0 +# asm 1: str lod0=stack32#13 +# asm 2: str lod0=[sp,#48] +# copy-collector input: str r2,[sp,#48] + +# qhasm: hid0 = hiu0 +# asm 1: str hid0=stack32#14 +# asm 2: str hid0=[sp,#52] +# copy-collector input: str r1,[sp,#52] + +# qhasm: lod1 = lou1 +# asm 1: str lod1=stack32#15 +# asm 2: str lod1=[sp,#56] +# copy-collector input: str r4,[sp,#56] + +# qhasm: hid1 = hiu1 +# asm 1: str hid1=stack32#16 +# asm 2: str hid1=[sp,#60] +# copy-collector input: str r3,[sp,#60] + +# qhasm: lod2 = lou2 +# asm 1: str lod2=stack32#17 +# asm 2: str lod2=[sp,#64] +# copy-collector input: str r6,[sp,#64] + +# qhasm: hid2 = hiu2 +# asm 1: str hid2=stack32#18 +# asm 2: str hid2=[sp,#68] +# copy-collector input: str r5,[sp,#68] + +# qhasm: lod3 = lou3 +# asm 1: str lod3=stack32#19 +# asm 2: str lod3=[sp,#72] +# copy-collector input: str r8,[sp,#72] + +# qhasm: hid3 = hiu3 +# asm 1: str hid3=stack32#20 +# asm 2: str hid3=[sp,#76] +# copy-collector input: str r7,[sp,#76] + +# qhasm: hiu0 = mem32[input_0+32] +# asm 1: ldr >hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#4,[hiu1=r3,[lou1=int32#5,[lou1=r4,[hiu2=int32#6,[hiu2=r5,[lou2=int32#7,[lou2=r6,[hiu3=int32#8,[hiu3=r7,[lou3=int32#1,[lou3=r0,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#5,lou1=r4,hiu1=int32#4,hiu1=r3,lou2=int32#7,lou2=r6,hiu2=int32#6,hiu2=r5,lou3=int32#1,lou3=r0,hiu3=int32#8,hiu3=r7,lom4=stack32#21 +# asm 2: str lom4=[sp,#80] +# copy-collector input: str r2,[sp,#80] + +# qhasm: him4 = hiu0 +# asm 1: str him4=stack32#22 +# asm 2: str him4=[sp,#84] +# copy-collector input: str r1,[sp,#84] + +# qhasm: lom5 = lou1 +# asm 1: str lom5=stack32#23 +# asm 2: str lom5=[sp,#88] +# copy-collector input: str r4,[sp,#88] + +# qhasm: him5 = hiu1 +# asm 1: str him5=stack32#24 +# asm 2: str him5=[sp,#92] +# copy-collector input: str r3,[sp,#92] + +# qhasm: lom6 = lou2 +# asm 1: str lom6=stack32#25 +# asm 2: str lom6=[sp,#96] +# copy-collector input: str r6,[sp,#96] + +# qhasm: him6 = hiu2 +# asm 1: str him6=stack32#26 +# asm 2: str him6=[sp,#100] +# copy-collector input: str r5,[sp,#100] + +# qhasm: lom7 = lou3 +# asm 1: str lom7=stack32#27 +# asm 2: str lom7=[sp,#104] +# copy-collector input: str r0,[sp,#104] + +# qhasm: him7 = hiu3 +# asm 1: str him7=stack32#28 +# asm 2: str him7=[sp,#108] +# copy-collector input: str r7,[sp,#108] + +# qhasm: lod4 = lou0 +# asm 1: str lod4=stack32#29 +# asm 2: str lod4=[sp,#112] +# copy-collector input: str r2,[sp,#112] + +# qhasm: hid4 = hiu0 +# asm 1: str hid4=stack32#30 +# asm 2: str hid4=[sp,#116] +# copy-collector input: str r1,[sp,#116] + +# qhasm: lod5 = lou1 +# asm 1: str lod5=stack32#31 +# asm 2: str lod5=[sp,#120] +# copy-collector input: str r4,[sp,#120] + +# qhasm: hid5 = hiu1 +# asm 1: str hid5=stack32#32 +# asm 2: str hid5=[sp,#124] +# copy-collector input: str r3,[sp,#124] + +# qhasm: lod6 = lou2 +# asm 1: str lod6=stack32#33 +# asm 2: str lod6=[sp,#128] +# copy-collector input: str r6,[sp,#128] + +# qhasm: hid6 = hiu2 +# asm 1: str hid6=stack32#34 +# asm 2: str hid6=[sp,#132] +# copy-collector input: str r5,[sp,#132] + +# qhasm: lod7 = lou3 +# asm 1: str lod7=stack32#35 +# asm 2: str lod7=[sp,#136] +# copy-collector input: str r0,[sp,#136] + +# qhasm: hid7 = hiu3 +# asm 1: str hid7=stack32#36 +# asm 2: str hid7=[sp,#140] +# copy-collector input: str r7,[sp,#140] + +# qhasm: mainloop: +# copy-collector output starts +strd r2,r1,[sp,#80] +strd r4,r3,[sp,#88] +strd r6,r5,[sp,#96] +strd r0,r7,[sp,#104] +strd r2,r1,[sp,#112] +strd r4,r3,[sp,#120] +strd r6,r5,[sp,#128] +strd r0,r7,[sp,#136] +# copy-collector output ends +._mainloop: + +# qhasm: input_0 = o1 +# asm 1: ldr >input_0=int32#1,input_0=r0,hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#4,[hiu1=r3,[lou1=int32#5,[lou1=r4,[hiu2=int32#6,[hiu2=r5,[lou2=int32#7,[lou2=r6,[hiu3=int32#8,[hiu3=r7,[lou3=int32#9,[lou3=r8,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#5,lou1=r4,hiu1=int32#4,hiu1=r3,lou2=int32#7,lou2=r6,hiu2=int32#6,hiu2=r5,lou3=int32#9,lou3=r8,hiu3=int32#8,hiu3=r7,lod8=stack32#37 +# asm 2: str lod8=[sp,#144] +# copy-collector input: str r2,[sp,#144] + +# qhasm: hid8 = hiu0 +# asm 1: str hid8=stack32#38 +# asm 2: str hid8=[sp,#148] +# copy-collector input: str r1,[sp,#148] + +# qhasm: lod9 = lou1 +# asm 1: str lod9=stack32#39 +# asm 2: str lod9=[sp,#152] +# copy-collector input: str r4,[sp,#152] + +# qhasm: hid9 = hiu1 +# asm 1: str hid9=stack32#40 +# asm 2: str hid9=[sp,#156] +# copy-collector input: str r3,[sp,#156] + +# qhasm: lod10 = lou2 +# asm 1: str lod10=stack32#41 +# asm 2: str lod10=[sp,#160] +# copy-collector input: str r6,[sp,#160] + +# qhasm: hid10 = hiu2 +# asm 1: str hid10=stack32#42 +# asm 2: str hid10=[sp,#164] +# copy-collector input: str r5,[sp,#164] + +# qhasm: lod11 = lou3 +# asm 1: str lod11=stack32#43 +# asm 2: str lod11=[sp,#168] +# copy-collector input: str r8,[sp,#168] + +# qhasm: hid11 = hiu3 +# asm 1: str hid11=stack32#44 +# asm 2: str hid11=[sp,#172] +# copy-collector input: str r7,[sp,#172] + +# qhasm: hiu0 = mem32[input_0]; input_0 += 4 +# asm 1: ldr >hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#4,[hiu1=r3,[lou1=int32#5,[lou1=r4,[hiu2=int32#6,[hiu2=r5,[lou2=int32#7,[lou2=r6,[hiu3=int32#8,[hiu3=r7,[lou3=int32#9,[lou3=r8,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#5,lou1=r4,hiu1=int32#4,hiu1=r3,lou2=int32#7,lou2=r6,hiu2=int32#6,hiu2=r5,lou3=int32#9,lou3=r8,hiu3=int32#8,hiu3=r7,lod12=stack32#45 +# asm 2: str lod12=[sp,#176] +# copy-collector input: str r2,[sp,#176] + +# qhasm: hid12 = hiu0 +# asm 1: str hid12=stack32#46 +# asm 2: str hid12=[sp,#180] +# copy-collector input: str r1,[sp,#180] + +# qhasm: lod13 = lou1 +# asm 1: str lod13=stack32#47 +# asm 2: str lod13=[sp,#184] +# copy-collector input: str r4,[sp,#184] + +# qhasm: hid13 = hiu1 +# asm 1: str hid13=stack32#48 +# asm 2: str hid13=[sp,#188] +# copy-collector input: str r3,[sp,#188] + +# qhasm: lod14 = lou2 +# asm 1: str lod14=stack32#49 +# asm 2: str lod14=[sp,#192] +# copy-collector input: str r6,[sp,#192] + +# qhasm: hid14 = hiu2 +# asm 1: str hid14=stack32#50 +# asm 2: str hid14=[sp,#196] +# copy-collector input: str r5,[sp,#196] + +# qhasm: lod15 = lou3 +# asm 1: str lod15=stack32#51 +# asm 2: str lod15=[sp,#200] +# copy-collector input: str r8,[sp,#200] + +# qhasm: hid15 = hiu3 +# asm 1: str hid15=stack32#52 +# asm 2: str hid15=[sp,#204] +# copy-collector input: str r7,[sp,#204] + +# qhasm: hiu0 = mem32[input_0]; input_0 += 4 +# asm 1: ldr >hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#4,[hiu1=r3,[lou1=int32#5,[lou1=r4,[hiu2=int32#6,[hiu2=r5,[lou2=int32#7,[lou2=r6,[hiu3=int32#8,[hiu3=r7,[lou3=int32#9,[lou3=r8,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#5,lou1=r4,hiu1=int32#4,hiu1=r3,lou2=int32#7,lou2=r6,hiu2=int32#6,hiu2=r5,lou3=int32#9,lou3=r8,hiu3=int32#8,hiu3=r7,lom8=stack32#53 +# asm 2: str lom8=[sp,#208] +# copy-collector input: str r2,[sp,#208] + +# qhasm: him8 = hiu0 +# asm 1: str him8=stack32#54 +# asm 2: str him8=[sp,#212] +# copy-collector input: str r1,[sp,#212] + +# qhasm: lom9 = lou1 +# asm 1: str lom9=stack32#55 +# asm 2: str lom9=[sp,#216] +# copy-collector input: str r4,[sp,#216] + +# qhasm: him9 = hiu1 +# asm 1: str him9=stack32#56 +# asm 2: str him9=[sp,#220] +# copy-collector input: str r3,[sp,#220] + +# qhasm: lom10 = lou2 +# asm 1: str lom10=stack32#57 +# asm 2: str lom10=[sp,#224] +# copy-collector input: str r6,[sp,#224] + +# qhasm: him10 = hiu2 +# asm 1: str him10=stack32#58 +# asm 2: str him10=[sp,#228] +# copy-collector input: str r5,[sp,#228] + +# qhasm: lom11 = lou3 +# asm 1: str lom11=stack32#59 +# asm 2: str lom11=[sp,#232] +# copy-collector input: str r8,[sp,#232] + +# qhasm: him11 = hiu3 +# asm 1: str him11=stack32#60 +# asm 2: str him11=[sp,#236] +# copy-collector input: str r7,[sp,#236] + +# qhasm: hiu0 = mem32[input_0]; input_0 += 4 +# asm 1: ldr >hiu0=int32#2,[hiu0=r1,[lou0=int32#3,[lou0=r2,[hiu1=int32#4,[hiu1=r3,[lou1=int32#5,[lou1=r4,[hiu2=int32#6,[hiu2=r5,[lou2=int32#7,[lou2=r6,[hiu3=int32#8,[hiu3=r7,[lou3=int32#9,[lou3=r8,[lou0=int32#3,lou0=r2,hiu0=int32#2,hiu0=r1,lou1=int32#5,lou1=r4,hiu1=int32#4,hiu1=r3,lou2=int32#7,lou2=r6,hiu2=int32#6,hiu2=r5,lou3=int32#9,lou3=r8,hiu3=int32#8,hiu3=r7,lom12=stack32#61 +# asm 2: str lom12=[sp,#240] +# copy-collector input: str r2,[sp,#240] + +# qhasm: him12 = hiu0 +# asm 1: str him12=stack32#62 +# asm 2: str him12=[sp,#244] +# copy-collector input: str r1,[sp,#244] + +# qhasm: lom13 = lou1 +# asm 1: str lom13=stack32#63 +# asm 2: str lom13=[sp,#248] +# copy-collector input: str r4,[sp,#248] + +# qhasm: him13 = hiu1 +# asm 1: str him13=stack32#64 +# asm 2: str him13=[sp,#252] +# copy-collector input: str r3,[sp,#252] + +# qhasm: lom14 = lou2 +# asm 1: str lom14=stack32#65 +# asm 2: str lom14=[sp,#256] +# copy-collector input: str r6,[sp,#256] + +# qhasm: him14 = hiu2 +# asm 1: str him14=stack32#66 +# asm 2: str him14=[sp,#260] +# copy-collector input: str r5,[sp,#260] + +# qhasm: lom15 = lou3 +# asm 1: str lom15=stack32#67 +# asm 2: str lom15=[sp,#264] +# copy-collector input: str r8,[sp,#264] + +# qhasm: him15 = hiu3 +# asm 1: str him15=stack32#68 +# asm 2: str him15=[sp,#268] +# copy-collector input: str r7,[sp,#268] + +# qhasm: o1 = input_0 +# asm 1: str o1=stack32#2 +# asm 2: str o1=[sp,#4] +# copy-collector input: str r0,[sp,#4] + +# qhasm: input_0 = 80 simple +# asm 1: mov >input_0=int32#1,80 +# asm 2: mov >input_0=r0,80 +# copy-collector output starts +strd r2,r1,[sp,#240] +strd r4,r3,[sp,#248] +strd r6,r5,[sp,#256] +strd r8,r7,[sp,#264] +str r0,[sp,#4] +# copy-collector output ends +mov r0,80 + +# qhasm: o4 = input_0 +# asm 1: str o4=stack32#69 +# asm 2: str o4=[sp,#272] +# copy-collector input: str r0,[sp,#272] + +# qhasm: innerloop: +# copy-collector output starts +str r0,[sp,#272] +# copy-collector output ends +._innerloop: + +# qhasm: input_0 = o3 +# asm 1: ldr >input_0=int32#1,input_0=r0,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou3=int32#8,lou3=r7,hiu3=int32#9,hiu3=r8,lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +ldr r0,[sp,#12] +ldr r1,[sp,#72] +ldr r2,[sp,#76] +ldr r3,[sp,#112] +ldr r4,[sp,#116] +ldr r5,[sp,#120] +ldr r6,[sp,#124] +ldr r7,[sp,#128] +ldr r8,[sp,#132] +ldr r9,[sp,#136] +ldr r10,[sp,#140] +ldr r11,[sp,#144] +ldr r12,[sp,#148] +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#10,lou4=r9,hiu4=int32#11,hiu4=r10,lotmp=int32#6,lotmp=r5,lotmp2=int32#4,lotmp2=r3,lotmp=int32#4,lotmp=r3,lou4=int32#4,lou4=r3,hitmp=int32#6,hitmp=r5,hitmp2=int32#5,hitmp2=r4,hitmp=int32#5,hitmp=r4,hiu4=int32#5,hiu4=r4,lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lod3=stack32#4 +# asm 2: str lod3=[sp,#12] +# copy-collector input: str r1,[sp,#12] + +# qhasm: hid3 = hiu0 +# asm 1: str hid3=stack32#19 +# asm 2: str hid3=[sp,#72] +# copy-collector input: str r2,[sp,#72] + +# qhasm: lou1 = lod0 +# asm 1: ldr >lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou2=int32#8,lou2=r7,hiu2=int32#9,hiu2=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,two25=int32#12,0x2000000 +# asm 2: mov >two25=r11,0x2000000 +# copy-collector output starts +str r1,[sp,#12] +str r2,[sp,#72] +ldr r5,[sp,#48] +ldr r6,[sp,#52] +ldr r7,[sp,#56] +ldr r8,[sp,#60] +ldr r9,[sp,#64] +ldr r10,[sp,#68] +# copy-collector output ends +mov r11,0x2000000 + +# qhasm: hitmp lotmp = lou1 * two25 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,> 28) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#4,lou4=r3,hiu4=int32#5,hiu4=r4,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#4,lou4=r3,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#5,hiu4=r4,lod7=stack32#17 +# asm 2: str lod7=[sp,#64] +# copy-collector input: str r3,[sp,#64] + +# qhasm: hid7 = hiu4 +# asm 1: str hid7=stack32#18 +# asm 2: str hid7=[sp,#68] +# copy-collector input: str r4,[sp,#68] + +# qhasm: lou1 = lod4 +# asm 1: ldr >lou1=int32#4,lou1=r3,hiu1=int32#5,hiu1=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +strd r3,r4,[sp,#64] +ldr r3,[sp,#112] +ldr r4,[sp,#116] +ldr r5,[sp,#120] +ldr r6,[sp,#124] +ldr.w r7,[sp,#128] +ldr r8,[sp,#132] +ldr r11,[sp,#152] +ldr r12,[sp,#156] +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#4,lotmp=r3,lotmp2=int32#2,lotmp2=r1,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#4,hitmp=r3,hitmp2=int32#3,hitmp2=r2,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod2=stack32#33 +# asm 2: str lod2=[sp,#128] +# copy-collector input: str r3,[sp,#128] + +# qhasm: hid2 = hiu3 +# asm 1: str hid2=stack32#34 +# asm 2: str hid2=[sp,#132] +# copy-collector input: str r4,[sp,#132] + +# qhasm: lou0 = lod7 +# asm 1: ldr >lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou2=int32#10,lou2=r9,hiu2=int32#11,hiu2=r10,two25=int32#12,0x2000000 +# asm 2: mov >two25=r11,0x2000000 +# copy-collector output starts +strd r3,r4,[sp,#128] +ldr r5,[sp,#64] +ldr r6,[sp,#68] +ldr.w r7,[sp,#48] +ldr r8,[sp,#52] +ldr r9,[sp,#56] +ldr r10,[sp,#60] +# copy-collector output ends +mov r11,0x2000000 + +# qhasm: hitmp lotmp = lou0 * two25 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,> 28) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#2,lou4=r1,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod6=stack32#15 +# asm 2: str lod6=[sp,#56] +# copy-collector input: str r1,[sp,#56] + +# qhasm: hid6 = hiu4 +# asm 1: str hid6=stack32#16 +# asm 2: str hid6=[sp,#60] +# copy-collector input: str r2,[sp,#60] + +# qhasm: lou0 = lod3 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +strd r1,r2,[sp,#56] +ldr r1,[sp,#12] +ldr r2,[sp,#72] +ldr r5,[sp,#112] +ldr r6,[sp,#116] +ldr.w r7,[sp,#120] +ldr r8,[sp,#124] +ldr r11,[sp,#160] +ldr r12,[sp,#164] +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou2=int32#4,lou2=r3,hiu2=int32#5,hiu2=r4,lod1=stack32#31 +# asm 2: str lod1=[sp,#120] +# copy-collector input: str r3,[sp,#120] + +# qhasm: hid1 = hiu2 +# asm 1: str hid1=stack32#32 +# asm 2: str hid1=[sp,#124] +# copy-collector input: str r4,[sp,#124] + +# qhasm: lou0 = lod6 +# asm 1: ldr >lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,two25=int32#12,0x2000000 +# asm 2: mov >two25=r11,0x2000000 +# copy-collector output starts +strd r3,r4,[sp,#120] +ldr r5,[sp,#56] +ldr r6,[sp,#60] +ldr.w r7,[sp,#64] +ldr r8,[sp,#68] +ldr r9,[sp,#48] +ldr r10,[sp,#52] +# copy-collector output ends +mov r11,0x2000000 + +# qhasm: hitmp lotmp = lou0 * two25 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,> 28) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#2,lou4=r1,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod5=stack32#13 +# asm 2: str lod5=[sp,#48] +# copy-collector input: str r1,[sp,#48] + +# qhasm: hid5 = hiu4 +# asm 1: str hid5=stack32#14 +# asm 2: str hid5=[sp,#52] +# copy-collector input: str r2,[sp,#52] + +# qhasm: lou0 = lod2 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +strd r1,r2,[sp,#48] +ldr r1,[sp,#128] +ldr r2,[sp,#132] +ldr r5,[sp,#12] +ldr r6,[sp,#72] +ldr.w r7,[sp,#112] +ldr r8,[sp,#116] +ldr r11,[sp,#168] +ldr r12,[sp,#172] +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod0=stack32#29 +# asm 2: str lod0=[sp,#112] +# copy-collector input: str r3,[sp,#112] + +# qhasm: hid0 = hiu3 +# asm 1: str hid0=stack32#30 +# asm 2: str hid0=[sp,#116] +# copy-collector input: str r4,[sp,#116] + +# qhasm: lou0 = lod5 +# asm 1: ldr >lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou2=int32#10,lou2=r9,hiu2=int32#11,hiu2=r10,two25=int32#12,0x2000000 +# asm 2: mov >two25=r11,0x2000000 +# copy-collector output starts +strd r3,r4,[sp,#112] +ldr r5,[sp,#48] +ldr r6,[sp,#52] +ldr.w r7,[sp,#56] +ldr r8,[sp,#60] +ldr r9,[sp,#64] +ldr r10,[sp,#68] +# copy-collector output ends +mov r11,0x2000000 + +# qhasm: hitmp lotmp = lou0 * two25 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,> 28) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#2,lou4=r1,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod4=stack32#70 +# asm 2: str lod4=[sp,#276] +# copy-collector input: str r1,[sp,#276] + +# qhasm: hid4 = hiu4 +# asm 1: str hid4=stack32#71 +# asm 2: str hid4=[sp,#280] +# copy-collector input: str r2,[sp,#280] + +# qhasm: lou0 = lod1 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +strd r1,r2,[sp,#276] +ldr r1,[sp,#120] +ldr r2,[sp,#124] +ldr r5,[sp,#128] +ldr r6,[sp,#132] +ldr.w r7,[sp,#12] +ldr r8,[sp,#72] +ldr r11,[sp,#176] +ldr r12,[sp,#180] +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou2=int32#4,lou2=r3,hiu2=int32#5,hiu2=r4,lod7=stack32#35 +# asm 2: str lod7=[sp,#136] +# copy-collector input: str r3,[sp,#136] + +# qhasm: hid7 = hiu2 +# asm 1: str hid7=stack32#36 +# asm 2: str hid7=[sp,#140] +# copy-collector input: str r4,[sp,#140] + +# qhasm: lou0 = lod4 +# asm 1: ldr >lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,two25=int32#12,0x2000000 +# asm 2: mov >two25=r11,0x2000000 +# copy-collector output starts +strd r3,r4,[sp,#136] +ldr r5,[sp,#276] +ldr r6,[sp,#280] +ldr.w r7,[sp,#48] +ldr r8,[sp,#52] +ldr r9,[sp,#56] +ldr r10,[sp,#60] +# copy-collector output ends +mov r11,0x2000000 + +# qhasm: hitmp lotmp = lou0 * two25 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,> 28) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#2,lou4=r1,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod3=stack32#19 +# asm 2: str lod3=[sp,#72] +# copy-collector input: str r1,[sp,#72] + +# qhasm: hid3 = hiu4 +# asm 1: str hid3=stack32#20 +# asm 2: str hid3=[sp,#76] +# copy-collector input: str r2,[sp,#76] + +# qhasm: lou0 = lod0 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +strd r1,r2,[sp,#72] +ldr r1,[sp,#112] +ldr r2,[sp,#116] +ldr r5,[sp,#120] +ldr r6,[sp,#124] +ldr.w r7,[sp,#128] +ldr r8,[sp,#132] +ldr r11,[sp,#184] +ldr r12,[sp,#188] +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod6=stack32#33 +# asm 2: str lod6=[sp,#128] +# copy-collector input: str r3,[sp,#128] + +# qhasm: hid6 = hiu3 +# asm 1: str hid6=stack32#34 +# asm 2: str hid6=[sp,#132] +# copy-collector input: str r4,[sp,#132] + +# qhasm: lou0 = lod3 +# asm 1: ldr >lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou2=int32#10,lou2=r9,hiu2=int32#11,hiu2=r10,two25=int32#12,0x2000000 +# asm 2: mov >two25=r11,0x2000000 +# copy-collector output starts +strd r3,r4,[sp,#128] +ldr r5,[sp,#72] +ldr r6,[sp,#76] +ldr.w r7,[sp,#276] +ldr r8,[sp,#280] +ldr r9,[sp,#48] +ldr r10,[sp,#52] +# copy-collector output ends +mov r11,0x2000000 + +# qhasm: hitmp lotmp = lou0 * two25 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,> 28) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#2,lou4=r1,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod2=stack32#17 +# asm 2: str lod2=[sp,#64] +# copy-collector input: str r1,[sp,#64] + +# qhasm: hid2 = hiu4 +# asm 1: str hid2=stack32#18 +# asm 2: str hid2=[sp,#68] +# copy-collector input: str r2,[sp,#68] + +# qhasm: lou0 = lod7 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +strd r1,r2,[sp,#64] +ldr r1,[sp,#136] +ldr r2,[sp,#140] +ldr r5,[sp,#112] +ldr r6,[sp,#116] +ldr.w r7,[sp,#120] +ldr r8,[sp,#124] +ldr r11,[sp,#192] +ldr r12,[sp,#196] +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou2=int32#4,lou2=r3,hiu2=int32#5,hiu2=r4,lod5=stack32#31 +# asm 2: str lod5=[sp,#120] +# copy-collector input: str r3,[sp,#120] + +# qhasm: hid5 = hiu2 +# asm 1: str hid5=stack32#32 +# asm 2: str hid5=[sp,#124] +# copy-collector input: str r4,[sp,#124] + +# qhasm: lou0 = lod2 +# asm 1: ldr >lou0=int32#6,lou0=r5,hiu0=int32#7,hiu0=r6,lou1=int32#8,lou1=r7,hiu1=int32#9,hiu1=r8,lou3=int32#10,lou3=r9,hiu3=int32#11,hiu3=r10,two25=int32#12,0x2000000 +# asm 2: mov >two25=r11,0x2000000 +# copy-collector output starts +strd r3,r4,[sp,#120] +ldr r5,[sp,#64] +ldr r6,[sp,#68] +ldr.w r7,[sp,#72] +ldr r8,[sp,#76] +ldr r9,[sp,#276] +ldr r10,[sp,#280] +# copy-collector output ends +mov r11,0x2000000 + +# qhasm: hitmp lotmp = lou0 * two25 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 2) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 28) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 2) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,> 28) +# asm 1: eor >hitmp=int32#13,hitmp=r12,hitmp=int32#13,hitmp=r12,lou4=int32#2,lou4=r1,hiu4=int32#3,hiu4=r2,lotmp=int32#12,lotmp=r11,lotmp=int32#6,lotmp=r5,lotmp2=int32#8,lotmp2=r7,lotmp=int32#6,lotmp=r5,lou4=int32#2,lou4=r1,hitmp=int32#6,hitmp=r5,hitmp=int32#6,hitmp=r5,hitmp2=int32#7,hitmp2=r6,hitmp=int32#6,hitmp=r5,hiu4=int32#3,hiu4=r2,lod1=stack32#15 +# asm 2: str lod1=[sp,#56] +# copy-collector input: str r1,[sp,#56] + +# qhasm: hid1 = hiu4 +# asm 1: str hid1=stack32#16 +# asm 2: str hid1=[sp,#60] +# copy-collector input: str r2,[sp,#60] + +# qhasm: lou0 = lod6 +# asm 1: ldr >lou0=int32#2,lou0=r1,hiu0=int32#3,hiu0=r2,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lou5=int32#12,lou5=r11,hiu5=int32#13,hiu5=r12,two23=int32#14,0x800000 +# asm 2: mov >two23=r14,0x800000 +# copy-collector output starts +strd r1,r2,[sp,#56] +ldr r1,[sp,#128] +ldr r2,[sp,#132] +ldr r5,[sp,#136] +ldr r6,[sp,#140] +ldr.w r7,[sp,#112] +ldr r8,[sp,#116] +ldr r11,[sp,#200] +ldr r12,[sp,#204] +# copy-collector output ends +mov r14,0x800000 + +# qhasm: carry? lou4 += lou5 +# asm 1: adds >lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#12,[lotmp=r11,[hitmp=int32#13,[hitmp=r12,[lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#13,>hitmp=int32#12,lotmp=r12,>hitmp=r11,> 18) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 14) +# asm 1: eor >lotmp=int32#13,lotmp=r12,lotmp=int32#13,lotmp=r12,> 18) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,> 14) +# asm 1: eor >hitmp=int32#12,hitmp=r11,hitmp=int32#12,hitmp=r11,lou4=int32#8,lou4=r7,hiu4=int32#9,hiu4=r8,lotmp=int32#2,lotmp=r1,lotmp2=int32#4,lotmp2=r3,lotmp=int32#2,lotmp=r1,lou4=int32#2,lou4=r1,hitmp=int32#3,hitmp=r2,hitmp2=int32#4,hitmp2=r3,hitmp=int32#3,hitmp=r2,hiu4=int32#3,hiu4=r2,lou3=int32#4,lou3=r3,hiu3=int32#5,hiu3=r4,lod4=stack32#29 +# asm 2: str lod4=[sp,#112] +# copy-collector input: str r3,[sp,#112] + +# qhasm: hid4 = hiu3 +# asm 1: str hid4=stack32#30 +# asm 2: str hid4=[sp,#116] +# copy-collector input: str r4,[sp,#116] + +# qhasm: lou0 = lod1 +# asm 1: ldr >lou0=int32#4,lou0=r3,hiu0=int32#5,hiu0=r4,lou1=int32#6,lou1=r5,hiu1=int32#7,hiu1=r6,lou2=int32#8,lou2=r7,hiu2=int32#9,hiu2=r8,two25=int32#10,0x2000000 +# asm 2: mov >two25=r9,0x2000000 +# copy-collector output starts +strd r3,r4,[sp,#112] +ldr r3,[sp,#56] +ldr r4,[sp,#60] +ldr r5,[sp,#64] +ldr r6,[sp,#68] +ldr.w r7,[sp,#72] +ldr r8,[sp,#76] +# copy-collector output ends +mov r9,0x2000000 + +# qhasm: hitmp lotmp = lou0 * two25 +# asm 1: umull >lotmp=int32#12,>hitmp=int32#11,lotmp=r11,>hitmp=r10,> 2) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 28) +# asm 1: eor >lotmp=int32#10,lotmp=r9,lotmp=int32#10,lotmp=r9,> 2) +# asm 1: eor >hitmp=int32#11,hitmp=r10,hitmp=int32#11,hitmp=r10,> 28) +# asm 1: eor >hitmp=int32#11,hitmp=r10,hitmp=int32#11,hitmp=r10,lou4=int32#2,lou4=r1,hiu4=int32#3,hiu4=r2,lotmp=int32#10,lotmp=r9,lotmp=int32#4,lotmp=r3,lotmp2=int32#6,lotmp2=r5,lotmp=int32#4,lotmp=r3,lou4=int32#2,lou4=r1,hitmp=int32#4,hitmp=r3,hitmp=int32#4,hitmp=r3,hitmp2=int32#5,hitmp2=r4,hitmp=int32#4,hitmp=r3,hiu4=int32#3,hiu4=r2,lod0=stack32#13 +# asm 2: str lod0=[sp,#48] +# copy-collector input: str r1,[sp,#48] + +# qhasm: hid0 = hiu4 +# asm 1: str hid0=stack32#14 +# asm 2: str hid0=[sp,#52] +# copy-collector input: str r2,[sp,#52] + +# qhasm: o3 = input_0 +# asm 1: str o3=stack32#4 +# asm 2: str o3=[sp,#12] +# copy-collector input: str r0,[sp,#12] + +# qhasm: input_0 = o4 +# asm 1: ldr >input_0=int32#1,input_0=r0,input_0=int32#1,input_0=r0,o4=stack32#69 +# asm 2: str o4=[sp,#272] +# copy-collector input: str r0,[sp,#272] + +# qhasm: =? input_0 - 8 +# asm 1: cmp two24=int32#1,0x1000000 +# asm 2: mov >two24=r0,0x1000000 +mov r0,0x1000000 + +# qhasm: two13 = 0x2000 simple +# asm 1: mov >two13=int32#2,0x2000 +# asm 2: mov >two13=r1,0x2000 +mov r1,0x2000 + +# qhasm: lou0 = lod8 +# asm 1: ldr >lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lotmp=int32#12,>hitmp=int32#11,lotmp=r11,>hitmp=r10,> 6) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 29) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 6) +# asm 1: eor >hitmp=int32#11,hitmp=r10,> 29) +# asm 1: eor >hitmp=int32#11,hitmp=r10,hitmp=int32#11,hitmp=r10,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lotmp=int32#12,>hitmp=int32#11,lotmp=r11,>hitmp=r10,> 1) +# asm 1: eors >lotmp=int32#12,lotmp=r11,> 1) +# asm 1: eors >hitmp=int32#11,hitmp=r10,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >hitmp=int32#11,hitmp=r10,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lod9=stack32#39 +# asm 2: str lod9=[sp,#152] +# copy-collector input: str r8,[sp,#152] + +# qhasm: hid9 = hiu3 +# asm 1: str hid9=stack32#40 +# asm 2: str hid9=[sp,#156] +# copy-collector input: str r9,[sp,#156] + +# qhasm: lou3 = lom15 +# asm 1: ldr >lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lom15=stack32#37 +# asm 2: str lom15=[sp,#144] +# copy-collector input: str r2,[sp,#144] + +# qhasm: him15 = hiu0 +# asm 1: str him15=stack32#38 +# asm 2: str him15=[sp,#148] +# copy-collector input: str r3,[sp,#148] + +# qhasm: hitmp lotmp = hiu3 * two13 +# asm 1: umull >lotmp=int32#12,>hitmp=int32#11,lotmp=r11,>hitmp=r10,> 6) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 29) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,> 6) +# asm 1: eor >hitmp=int32#11,hitmp=r10,> 29) +# asm 1: eor >hitmp=int32#11,hitmp=r10,hitmp=int32#11,hitmp=r10,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou4=int32#11,lou4=r10,hiu4=int32#12,hiu4=r11,lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 1) +# asm 1: eors >lotmp=int32#14,lotmp=r14,> 1) +# asm 1: eors >hitmp=int32#13,hitmp=r12,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou5=int32#13,lou5=r12,hiu5=int32#14,hiu5=r14,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lod10=stack32#41 +# asm 2: str lod10=[sp,#160] +# copy-collector input: str r12,[sp,#160] + +# qhasm: hid10 = hiu5 +# asm 1: str hid10=stack32#42 +# asm 2: str hid10=[sp,#164] +# copy-collector input: str r14,[sp,#164] + +# qhasm: lom9 = lou1 +# asm 1: str lom9=stack32#55 +# asm 2: str lom9=[sp,#216] +# copy-collector input: str r4,[sp,#216] + +# qhasm: him9 = hiu1 +# asm 1: str him9=stack32#56 +# asm 2: str him9=[sp,#220] +# copy-collector input: str r5,[sp,#220] + +# qhasm: hitmp lotmp = hiu0 * two13 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 6) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 29) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 6) +# asm 1: eor >hitmp=int32#13,hitmp=r12,> 29) +# asm 1: eor >hitmp=int32#3,hitmp=r2,hitmp=int32#3,hitmp=r2,lou4=int32#4,lou4=r3,hiu4=int32#3,hiu4=r2,lou0=int32#11,lou0=r10,hiu0=int32#12,hiu0=r11,lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 1) +# asm 1: eors >lotmp=int32#14,lotmp=r14,> 1) +# asm 1: eors >hitmp=int32#13,hitmp=r12,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,lou4=int32#4,lou4=r3,hiu4=int32#3,hiu4=r2,lou5=int32#13,lou5=r12,hiu5=int32#14,hiu5=r14,lou4=int32#4,lou4=r3,hiu4=int32#3,hiu4=r2,lod11=stack32#43 +# asm 2: str lod11=[sp,#168] +# copy-collector input: str r12,[sp,#168] + +# qhasm: hid11 = hiu5 +# asm 1: str hid11=stack32#44 +# asm 2: str hid11=[sp,#172] +# copy-collector input: str r14,[sp,#172] + +# qhasm: lom10 = lou4 +# asm 1: str lom10=stack32#57 +# asm 2: str lom10=[sp,#224] +# copy-collector input: str r3,[sp,#224] + +# qhasm: him10 = hiu4 +# asm 1: str him10=stack32#58 +# asm 2: str him10=[sp,#228] +# copy-collector input: str r2,[sp,#228] + +# qhasm: hitmp lotmp = hiu1 * two13 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 6) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 29) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 6) +# asm 1: eor >hitmp=int32#13,hitmp=r12,> 29) +# asm 1: eor >hitmp=int32#5,hitmp=r4,hitmp=int32#5,hitmp=r4,lou0=int32#6,lou0=r5,hiu0=int32#5,hiu0=r4,lou1=int32#11,lou1=r10,hiu1=int32#12,hiu1=r11,lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 1) +# asm 1: eors >lotmp=int32#14,lotmp=r14,> 1) +# asm 1: eors >hitmp=int32#13,hitmp=r12,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,lou0=int32#6,lou0=r5,hiu0=int32#5,hiu0=r4,lou5=int32#13,lou5=r12,hiu5=int32#14,hiu5=r14,lou0=int32#6,lou0=r5,hiu0=int32#5,hiu0=r4,lod12=stack32#45 +# asm 2: str lod12=[sp,#176] +# copy-collector input: str r12,[sp,#176] + +# qhasm: hid12 = hiu5 +# asm 1: str hid12=stack32#46 +# asm 2: str hid12=[sp,#180] +# copy-collector input: str r14,[sp,#180] + +# qhasm: lom11 = lou0 +# asm 1: str lom11=stack32#59 +# asm 2: str lom11=[sp,#232] +# copy-collector input: str r5,[sp,#232] + +# qhasm: him11 = hiu0 +# asm 1: str him11=stack32#60 +# asm 2: str him11=[sp,#236] +# copy-collector input: str r4,[sp,#236] + +# qhasm: hitmp lotmp = hiu4 * two13 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 6) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 29) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 6) +# asm 1: eor >hitmp=int32#13,hitmp=r12,> 29) +# asm 1: eor >hitmp=int32#4,hitmp=r3,hitmp=int32#3,hitmp=r2,lou1=int32#4,lou1=r3,hiu1=int32#3,hiu1=r2,lou4=int32#11,lou4=r10,hiu4=int32#12,hiu4=r11,lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 1) +# asm 1: eors >lotmp=int32#14,lotmp=r14,> 1) +# asm 1: eors >hitmp=int32#13,hitmp=r12,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,lou1=int32#4,lou1=r3,hiu1=int32#3,hiu1=r2,lou5=int32#13,lou5=r12,hiu5=int32#14,hiu5=r14,lou1=int32#4,lou1=r3,hiu1=int32#3,hiu1=r2,lod13=stack32#47 +# asm 2: str lod13=[sp,#184] +# copy-collector input: str r12,[sp,#184] + +# qhasm: hid13 = hiu5 +# asm 1: str hid13=stack32#48 +# asm 2: str hid13=[sp,#188] +# copy-collector input: str r14,[sp,#188] + +# qhasm: lom12 = lou1 +# asm 1: str lom12=stack32#61 +# asm 2: str lom12=[sp,#240] +# copy-collector input: str r3,[sp,#240] + +# qhasm: him12 = hiu1 +# asm 1: str him12=stack32#62 +# asm 2: str him12=[sp,#244] +# copy-collector input: str r2,[sp,#244] + +# qhasm: hitmp lotmp = hiu0 * two13 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 6) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 29) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,> 6) +# asm 1: eor >hitmp=int32#13,hitmp=r12,> 29) +# asm 1: eor >hitmp=int32#6,hitmp=r5,hitmp=int32#5,hitmp=r4,lou4=int32#6,lou4=r5,hiu4=int32#5,hiu4=r4,lou0=int32#11,lou0=r10,hiu0=int32#12,hiu0=r11,lod14=stack32#49 +# asm 2: str lod14=[sp,#192] +# copy-collector input: str r6,[sp,#192] + +# qhasm: hid14 = hiu2 +# asm 1: str hid14=stack32#50 +# asm 2: str hid14=[sp,#196] +# copy-collector input: str r7,[sp,#196] + +# qhasm: hitmp lotmp = hiu0 * two24 +# asm 1: umull >lotmp=int32#14,>hitmp=int32#13,lotmp=r14,>hitmp=r12,> 1) +# asm 1: eors >lotmp=int32#14,lotmp=r14,> 1) +# asm 1: eors >hitmp=int32#13,hitmp=r12,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >lotmp=int32#14,lotmp=r14,lotmp=int32#14,lotmp=r14,>7) +# asm 1: eor >hitmp=int32#13,hitmp=r12,lou4=int32#6,lou4=r5,hiu4=int32#5,hiu4=r4,lou4=int32#6,lou4=r5,hiu4=int32#5,hiu4=r4,lom13=stack32#63 +# asm 2: str lom13=[sp,#248] +# copy-collector input: str r5,[sp,#248] + +# qhasm: him13 = hiu4 +# asm 1: str him13=stack32#64 +# asm 2: str him13=[sp,#252] +# copy-collector input: str r4,[sp,#252] + +# qhasm: hitmp lotmp = hiu1 * two13 +# asm 1: umull >lotmp=int32#8,>hitmp=int32#7,lotmp=r7,>hitmp=r6,> 6) +# asm 1: eor >lotmp=int32#8,lotmp=r7,lotmp=int32#8,lotmp=r7,> 29) +# asm 1: eor >lotmp=int32#8,lotmp=r7,lotmp=int32#8,lotmp=r7,> 6) +# asm 1: eor >hitmp=int32#7,hitmp=r6,> 29) +# asm 1: eor >hitmp=int32#4,hitmp=r3,hitmp=int32#3,hitmp=r2,lou0=int32#4,lou0=r3,hiu0=int32#3,hiu0=r2,lou1=int32#7,lou1=r6,hiu1=int32#8,hiu1=r7,lod15=stack32#51 +# asm 2: str lod15=[sp,#200] +# copy-collector input: str r8,[sp,#200] + +# qhasm: hid15 = hiu3 +# asm 1: str hid15=stack32#52 +# asm 2: str hid15=[sp,#204] +# copy-collector input: str r9,[sp,#204] + +# qhasm: hitmp lotmp = hiu1 * two24 +# asm 1: umull >lotmp=int32#12,>hitmp=int32#11,lotmp=r11,>hitmp=r10,> 1) +# asm 1: eors >lotmp=int32#12,lotmp=r11,> 1) +# asm 1: eors >hitmp=int32#11,hitmp=r10,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >lotmp=int32#12,lotmp=r11,lotmp=int32#12,lotmp=r11,>7) +# asm 1: eor >hitmp=int32#11,hitmp=r10,lou0=int32#4,lou0=r3,hiu0=int32#3,hiu0=r2,lou0=int32#4,lou0=r3,hiu0=int32#3,hiu0=r2,lom14=stack32#65 +# asm 2: str lom14=[sp,#256] +# copy-collector input: str r3,[sp,#256] + +# qhasm: him14 = hiu0 +# asm 1: str him14=stack32#66 +# asm 2: str him14=[sp,#260] +# copy-collector input: str r2,[sp,#260] + +# qhasm: hitmp lotmp = hiu4 * two13 +# asm 1: umull >lotmp=int32#4,>hitmp=int32#3,lotmp=r3,>hitmp=r2,> 6) +# asm 1: eor >lotmp=int32#2,lotmp=r1,lotmp=int32#2,lotmp=r1,> 29) +# asm 1: eor >lotmp=int32#2,lotmp=r1,lotmp=int32#2,lotmp=r1,> 6) +# asm 1: eor >hitmp=int32#3,hitmp=r2,> 29) +# asm 1: eor >hitmp=int32#3,hitmp=r2,hitmp=int32#3,hitmp=r2,lou1=int32#2,lou1=r1,hiu1=int32#3,hiu1=r2,lou0=int32#4,lou0=r3,hiu0=int32#5,hiu0=r4,lou2=int32#6,lou2=r5,hiu2=int32#7,hiu2=r6,lom8=stack32#53 +# asm 2: str lom8=[sp,#208] +# copy-collector input: str r5,[sp,#208] + +# qhasm: him8 = hiu2 +# asm 1: str him8=stack32#54 +# asm 2: str him8=[sp,#212] +# copy-collector input: str r6,[sp,#212] + +# qhasm: hitmp lotmp = hiu0 * two24 +# asm 1: umull >lotmp=int32#9,>hitmp=int32#8,lotmp=r8,>hitmp=r7,> 1) +# asm 1: eors >lotmp=int32#1,lotmp=r0,> 1) +# asm 1: eors >hitmp=int32#8,hitmp=r7,lotmp=int32#1,lotmp=r0,>7) +# asm 1: eor >lotmp=int32#1,lotmp=r0,lotmp=int32#1,lotmp=r0,>7) +# asm 1: eor >hitmp=int32#8,hitmp=r7,lou1=int32#1,lou1=r0,hiu1=int32#2,hiu1=r1,lou1=int32#1,lou1=r0,hiu1=int32#2,hiu1=r1,lom15=stack32#67 +# asm 2: str lom15=[sp,#264] +# copy-collector input: str r0,[sp,#264] + +# qhasm: him15 = hiu1 +# asm 1: str him15=stack32#68 +# asm 2: str him15=[sp,#268] +# copy-collector input: str r1,[sp,#268] + +# qhasm: lod8 = lou0 +# asm 1: str lod8=stack32#37 +# asm 2: str lod8=[sp,#144] +# copy-collector input: str r3,[sp,#144] + +# qhasm: hid8 = hiu0 +# asm 1: str hid8=stack32#38 +# asm 2: str hid8=[sp,#148] +# copy-collector input: str r4,[sp,#148] + +# qhasm: goto innerloop +# copy-collector output starts +strd r0,r1,[sp,#264] +strd r3,r4,[sp,#144] +# copy-collector output ends +b ._innerloop + +# qhasm: nearend: +._nearend: + +# qhasm: lou0 = lom8 +# asm 1: ldr >lou0=int32#1,lou0=r0,hiu0=int32#2,hiu0=r1,lou1=int32#3,lou1=r2,hiu1=int32#4,hiu1=r3,lou2=int32#5,lou2=r4,hiu2=int32#6,hiu2=r5,lou3=int32#7,lou3=r6,hiu3=int32#8,hiu3=r7,lod8=stack32#37 +# asm 2: str lod8=[sp,#144] +# copy-collector input: str r0,[sp,#144] + +# qhasm: hid8 = hiu0 +# asm 1: str hid8=stack32#38 +# asm 2: str hid8=[sp,#148] +# copy-collector input: str r1,[sp,#148] + +# qhasm: lod9 = lou1 +# asm 1: str lod9=stack32#39 +# asm 2: str lod9=[sp,#152] +# copy-collector input: str r2,[sp,#152] + +# qhasm: hid9 = hiu1 +# asm 1: str hid9=stack32#40 +# asm 2: str hid9=[sp,#156] +# copy-collector input: str r3,[sp,#156] + +# qhasm: lod10 = lou2 +# asm 1: str lod10=stack32#41 +# asm 2: str lod10=[sp,#160] +# copy-collector input: str r4,[sp,#160] + +# qhasm: hid10 = hiu2 +# asm 1: str hid10=stack32#42 +# asm 2: str hid10=[sp,#164] +# copy-collector input: str r5,[sp,#164] + +# qhasm: lod11 = lou3 +# asm 1: str lod11=stack32#43 +# asm 2: str lod11=[sp,#168] +# copy-collector input: str r6,[sp,#168] + +# qhasm: hid11 = hiu3 +# asm 1: str hid11=stack32#44 +# asm 2: str hid11=[sp,#172] +# copy-collector input: str r7,[sp,#172] + +# qhasm: lou0 = lom12 +# asm 1: ldr >lou0=int32#1,lou0=r0,hiu0=int32#2,hiu0=r1,lou1=int32#3,lou1=r2,hiu1=int32#4,hiu1=r3,lou2=int32#5,lou2=r4,hiu2=int32#6,hiu2=r5,lou3=int32#7,lou3=r6,hiu3=int32#8,hiu3=r7,lod12=stack32#45 +# asm 2: str lod12=[sp,#176] +# copy-collector input: str r0,[sp,#176] + +# qhasm: hid12 = hiu0 +# asm 1: str hid12=stack32#46 +# asm 2: str hid12=[sp,#180] +# copy-collector input: str r1,[sp,#180] + +# qhasm: lod13 = lou1 +# asm 1: str lod13=stack32#47 +# asm 2: str lod13=[sp,#184] +# copy-collector input: str r2,[sp,#184] + +# qhasm: hid13 = hiu1 +# asm 1: str hid13=stack32#48 +# asm 2: str hid13=[sp,#188] +# copy-collector input: str r3,[sp,#188] + +# qhasm: lod14 = lou2 +# asm 1: str lod14=stack32#49 +# asm 2: str lod14=[sp,#192] +# copy-collector input: str r4,[sp,#192] + +# qhasm: hid14 = hiu2 +# asm 1: str hid14=stack32#50 +# asm 2: str hid14=[sp,#196] +# copy-collector input: str r5,[sp,#196] + +# qhasm: lod15 = lou3 +# asm 1: str lod15=stack32#51 +# asm 2: str lod15=[sp,#200] +# copy-collector input: str r6,[sp,#200] + +# qhasm: hid15 = hiu3 +# asm 1: str hid15=stack32#52 +# asm 2: str hid15=[sp,#204] +# copy-collector input: str r7,[sp,#204] + +# qhasm: goto innerloop +# copy-collector output starts +ldr r0,[sp,#208] +ldr r1,[sp,#212] +ldr r2,[sp,#216] +ldr r3,[sp,#220] +ldr r4,[sp,#224] +ldr r5,[sp,#228] +ldr r6,[sp,#232] +ldr r7,[sp,#236] +strd r0,r1,[sp,#144] +strd r2,r3,[sp,#152] +strd r4,r5,[sp,#160] +strd r6,r7,[sp,#168] +ldr r0,[sp,#240] +ldr r1,[sp,#244] +ldr r2,[sp,#248] +ldr r3,[sp,#252] +ldr r4,[sp,#256] +ldr r5,[sp,#260] +ldr r6,[sp,#264] +ldr r7,[sp,#268] +strd r0,r1,[sp,#176] +strd r2,r3,[sp,#184] +strd r4,r5,[sp,#192] +strd r6,r7,[sp,#200] +# copy-collector output ends +b ._innerloop + +# qhasm: endinnerloop: +._endinnerloop: + +# qhasm: input_0 = o3 +# asm 1: ldr >input_0=int32#1,input_0=r0,input_0=int32#1,input_0=r0,o3=stack32#4 +# asm 2: str o3=[sp,#12] +# copy-collector input: str r0,[sp,#12] + +# qhasm: lou0 = lod0 +# asm 1: ldr >lou0=int32#1,lou0=r0,hiu0=int32#2,hiu0=r1,lou1=int32#3,lou1=r2,hiu1=int32#4,hiu1=r3,lou2=int32#5,lou2=r4,hiu2=int32#6,hiu2=r5,lou3=int32#7,lou3=r6,hiu3=int32#8,hiu3=r7,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou0=int32#1,lou0=r0,hiu0=int32#2,hiu0=r1,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou1=int32#3,lou1=r2,hiu1=int32#4,hiu1=r3,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou2=int32#5,lou2=r4,hiu2=int32#6,hiu2=r5,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou3=int32#7,lou3=r6,hiu3=int32#8,hiu3=r7,lom0=stack32#5 +# asm 2: str lom0=[sp,#16] +# copy-collector input: str r0,[sp,#16] + +# qhasm: him0 = hiu0 +# asm 1: str him0=stack32#6 +# asm 2: str him0=[sp,#20] +# copy-collector input: str r1,[sp,#20] + +# qhasm: lom1 = lou1 +# asm 1: str lom1=stack32#7 +# asm 2: str lom1=[sp,#24] +# copy-collector input: str r2,[sp,#24] + +# qhasm: him1 = hiu1 +# asm 1: str him1=stack32#8 +# asm 2: str him1=[sp,#28] +# copy-collector input: str r3,[sp,#28] + +# qhasm: lom2 = lou2 +# asm 1: str lom2=stack32#9 +# asm 2: str lom2=[sp,#32] +# copy-collector input: str r4,[sp,#32] + +# qhasm: him2 = hiu2 +# asm 1: str him2=stack32#10 +# asm 2: str him2=[sp,#36] +# copy-collector input: str r5,[sp,#36] + +# qhasm: lom3 = lou3 +# asm 1: str lom3=stack32#11 +# asm 2: str lom3=[sp,#40] +# copy-collector input: str r6,[sp,#40] + +# qhasm: him3 = hiu3 +# asm 1: str him3=stack32#12 +# asm 2: str him3=[sp,#44] +# copy-collector input: str r7,[sp,#44] + +# qhasm: lod0 = lou0 +# asm 1: str lod0=stack32#13 +# asm 2: str lod0=[sp,#48] +# copy-collector input: str r0,[sp,#48] + +# qhasm: hid0 = hiu0 +# asm 1: str hid0=stack32#14 +# asm 2: str hid0=[sp,#52] +# copy-collector input: str r1,[sp,#52] + +# qhasm: lod1 = lou1 +# asm 1: str lod1=stack32#15 +# asm 2: str lod1=[sp,#56] +# copy-collector input: str r2,[sp,#56] + +# qhasm: hid1 = hiu1 +# asm 1: str hid1=stack32#16 +# asm 2: str hid1=[sp,#60] +# copy-collector input: str r3,[sp,#60] + +# qhasm: lod2 = lou2 +# asm 1: str lod2=stack32#17 +# asm 2: str lod2=[sp,#64] +# copy-collector input: str r4,[sp,#64] + +# qhasm: hid2 = hiu2 +# asm 1: str hid2=stack32#18 +# asm 2: str hid2=[sp,#68] +# copy-collector input: str r5,[sp,#68] + +# qhasm: lod3 = lou3 +# asm 1: str lod3=stack32#19 +# asm 2: str lod3=[sp,#72] +# copy-collector input: str r6,[sp,#72] + +# qhasm: hid3 = hiu3 +# asm 1: str hid3=stack32#20 +# asm 2: str hid3=[sp,#76] +# copy-collector input: str r7,[sp,#76] + +# qhasm: lou0 = lod4 +# asm 1: ldr >lou0=int32#1,lou0=r0,hiu0=int32#2,hiu0=r1,lou1=int32#3,lou1=r2,hiu1=int32#4,hiu1=r3,lou2=int32#5,lou2=r4,hiu2=int32#6,hiu2=r5,lou3=int32#7,lou3=r6,hiu3=int32#8,hiu3=r7,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou0=int32#1,lou0=r0,hiu0=int32#2,hiu0=r1,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou1=int32#3,lou1=r2,hiu1=int32#4,hiu1=r3,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou2=int32#5,lou2=r4,hiu2=int32#6,hiu2=r5,lotmp=int32#9,lotmp=r8,hitmp=int32#10,hitmp=r9,lou3=int32#7,lou3=r6,hiu3=int32#8,hiu3=r7,lom4=stack32#21 +# asm 2: str lom4=[sp,#80] +# copy-collector input: str r0,[sp,#80] + +# qhasm: him4 = hiu0 +# asm 1: str him4=stack32#22 +# asm 2: str him4=[sp,#84] +# copy-collector input: str r1,[sp,#84] + +# qhasm: lom5 = lou1 +# asm 1: str lom5=stack32#23 +# asm 2: str lom5=[sp,#88] +# copy-collector input: str r2,[sp,#88] + +# qhasm: him5 = hiu1 +# asm 1: str him5=stack32#24 +# asm 2: str him5=[sp,#92] +# copy-collector input: str r3,[sp,#92] + +# qhasm: lom6 = lou2 +# asm 1: str lom6=stack32#25 +# asm 2: str lom6=[sp,#96] +# copy-collector input: str r4,[sp,#96] + +# qhasm: him6 = hiu2 +# asm 1: str him6=stack32#26 +# asm 2: str him6=[sp,#100] +# copy-collector input: str r5,[sp,#100] + +# qhasm: lom7 = lou3 +# asm 1: str lom7=stack32#27 +# asm 2: str lom7=[sp,#104] +# copy-collector input: str r6,[sp,#104] + +# qhasm: him7 = hiu3 +# asm 1: str him7=stack32#28 +# asm 2: str him7=[sp,#108] +# copy-collector input: str r7,[sp,#108] + +# qhasm: lod4 = lou0 +# asm 1: str lod4=stack32#29 +# asm 2: str lod4=[sp,#112] +# copy-collector input: str r0,[sp,#112] + +# qhasm: hid4 = hiu0 +# asm 1: str hid4=stack32#30 +# asm 2: str hid4=[sp,#116] +# copy-collector input: str r1,[sp,#116] + +# qhasm: lod5 = lou1 +# asm 1: str lod5=stack32#31 +# asm 2: str lod5=[sp,#120] +# copy-collector input: str r2,[sp,#120] + +# qhasm: hid5 = hiu1 +# asm 1: str hid5=stack32#32 +# asm 2: str hid5=[sp,#124] +# copy-collector input: str r3,[sp,#124] + +# qhasm: lod6 = lou2 +# asm 1: str lod6=stack32#33 +# asm 2: str lod6=[sp,#128] +# copy-collector input: str r4,[sp,#128] + +# qhasm: hid6 = hiu2 +# asm 1: str hid6=stack32#34 +# asm 2: str hid6=[sp,#132] +# copy-collector input: str r5,[sp,#132] + +# qhasm: lod7 = lou3 +# asm 1: str lod7=stack32#35 +# asm 2: str lod7=[sp,#136] +# copy-collector input: str r6,[sp,#136] + +# qhasm: hid7 = hiu3 +# asm 1: str hid7=stack32#36 +# asm 2: str hid7=[sp,#140] +# copy-collector input: str r7,[sp,#140] + +# qhasm: input_0 = o2 +# asm 1: ldr >input_0=int32#1,input_0=r0,input_0=int32#1,input_0=r0,o2=stack32#3 +# asm 2: str o2=[sp,#8] +# copy-collector input: str r0,[sp,#8] + +# qhasm: goto mainloop if !unsigned< +# copy-collector output starts +str r0,[sp,#8] +# copy-collector output ends +bhs ._mainloop + +# qhasm: endmainloop: +._endmainloop: + +# qhasm: input_1 = o0 +# asm 1: ldr >input_1=int32#2,input_1=r1,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,lou0=int32#3,lou0=r2,hiu0=int32#4,hiu0=r3,lou1=int32#5,lou1=r4,hiu1=int32#6,hiu1=r5,lou2=int32#7,lou2=r6,hiu2=int32#8,hiu2=r7,lou3=int32#9,lou3=r8,hiu3=int32#10,hiu3=r9,input_0=int32#1,input_0=r0,/CRYPTO_SHARED_NAMESPACE(inner)/' diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/inner32.desc b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/inner32.desc new file mode 100644 index 0000000000..681144c0f3 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/m4nofpu/inner32.desc @@ -0,0 +1,93 @@ +:name:int32:input_0:input_1:input_2:input_3:i4:i5:i6: +ptr r:var/r=int32: +int32 r:var/r=int32: +:name:int64:u0:u1:u2:u3:u4:u5:u6:u7:u8:u9:u10:u11:u12:u13:u14:u15:u16: +int64 r:var/r=int64: +:name:stack64:m0:m1:m2:m3:m4:m5:m6:m7:m8:m9:m10:m11:m12:m13:m14:m15:m16:m17:m18: +stack64 r:var/r=stack64: +:name:stack32:o0:o1:o2:o3:o4:o5:o6: +stack32 r:var/r=stack32: +stackptr r:var/r=stack32: +:name:spill64:d0:d1:d2:d3:d4:d5:d6:d7:d8:d9:d10:d11:d12:d13:d14:d15:d16: +spill64 r:var/r=spill64: + +:flag:=: +:flag:unsigned>=: + +pushenter f:enter/f:>input_0=int32#1:>input_1=int32#2:>input_2=int32#3:>input_3=int32#4:asm/rpushenter #f: + +popreturn r:=:#f:jump/f:=:asm/goto #f if !unsigned!lt;: + +r = s:>r=int32:r = r=int32:#n:asm/>r = #n: +r = n simple:>r=int32:#n:asm/>r = #n simple: +r += n:r=int32:#n:asm/r=int32:r = r=int32:r = r=stack32:r = r=int32:#n:asm/r=int32:#n:>?=:asm/=? r=int32:#n:>?=:>?unsigned>=:asm/=? unsigned!lt;? r=int64:r = lor = hir=int64:r = lor = hir=stack64:r = lor = hir=int64:r = lor = hir=spill64:r = lor = hir=int64:r = mem32[r = mem32[r=int64:r = mem32[r = mem32[r=int64:r = mem32[r = mem32[r=int64:r = lor = hir=int64:r=int64:r=int64:r=int64:r=int64:r=int64:statebytes_stack=stack32#1 = statebytes_stack=o0 = in_stack=stack32#2 = in_stack=o1 = inlen=int32#2 = inlen=input_1 = inlen_stack=stack32#3 = inlen_stack=o2 = constants_stack=stack32#4 = constants_stack=o3 = r0=int64#1 = mem32[r0=u0 = mem32[r0=int64#1 = mem32[r0=u0 = mem32[r1=int64#2 = mem32[r1=u1 = mem32[r1=int64#2 = mem32[r1=u1 = mem32[r2=int64#3 = mem32[r2=u2 = mem32[r2=int64#3 = mem32[r2=u2 = mem32[r3=int64#4 = mem32[r3=u3 = mem32[r3=int64#4 = mem32[r3=u3 = mem32[r0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = histate0=stack64#1 = lostate0=m0 = lostate0=stack64#1 = histate0=m0 = histate1=stack64#2 = lostate1=m1 = lostate1=stack64#2 = histate1=m1 = histate2=stack64#3 = lostate2=m2 = lostate2=stack64#3 = histate2=m2 = histate3=stack64#4 = lostate3=m3 = lostate3=stack64#4 = histate3=m3 = hir0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hir1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir4=int64#1 = mem32[r4=u0 = mem32[r4=int64#1 = mem32[r4=u0 = mem32[r5=int64#2 = mem32[r5=u1 = mem32[r5=int64#2 = mem32[r5=u1 = mem32[r6=int64#3 = mem32[r6=u2 = mem32[r6=int64#3 = mem32[r6=u2 = mem32[r7=int64#4 = mem32[r7=u3 = mem32[r7=int64#4 = mem32[r7=u3 = mem32[r4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = histate4=stack64#5 = lostate4=m4 = lostate4=stack64#5 = histate4=m4 = histate5=stack64#6 = lostate5=m5 = lostate5=stack64#6 = histate5=m5 = histate6=stack64#7 = lostate6=m6 = lostate6=stack64#7 = histate6=m6 = histate7=stack64#8 = lostate7=m7 = lostate7=stack64#8 = histate7=m7 = hir4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hiin=int32#1 = in=input_0 = w0=int64#1 = mem32[w0=u0 = mem32[w0=int64#1 = mem32[w0=u0 = mem32[w1=int64#2 = mem32[w1=u1 = mem32[w1=int64#2 = mem32[w1=u1 = mem32[w2=int64#3 = mem32[w2=u2 = mem32[w2=int64#3 = mem32[w2=u2 = mem32[w3=int64#4 = mem32[w3=u3 = mem32[w3=int64#4 = mem32[w3=u3 = mem32[w0=int64#1 = low0=u0 = low0=int64#1 = hiw0=u0 = hiw1=int64#2 = low1=u1 = low1=int64#2 = hiw1=u1 = hiw2=int64#3 = low2=u2 = low2=int64#3 = hiw2=u2 = hiw3=int64#4 = low3=u3 = low3=int64#4 = hiw3=u3 = hiw0_spill=spill64#9 = low0_spill=d8 = low0_spill=spill64#9 = hiw0_spill=d8 = hiw1_spill=spill64#10 = low1_spill=d9 = low1_spill=spill64#10 = hiw1_spill=d9 = hiw2_spill=spill64#11 = low2_spill=d10 = low2_spill=spill64#11 = hiw2_spill=d10 = hiw3_spill=spill64#12 = low3_spill=d11 = low3_spill=spill64#12 = hiw3_spill=d11 = hiw4=int64#1 = mem32[w4=u0 = mem32[w4=int64#1 = mem32[w4=u0 = mem32[w5=int64#2 = mem32[w5=u1 = mem32[w5=int64#2 = mem32[w5=u1 = mem32[w6=int64#3 = mem32[w6=u2 = mem32[w6=int64#3 = mem32[w6=u2 = mem32[w7=int64#4 = mem32[w7=u3 = mem32[w7=int64#4 = mem32[w7=u3 = mem32[w4=int64#1 = low4=u0 = low4=int64#1 = hiw4=u0 = hiw5=int64#2 = low5=u1 = low5=int64#2 = hiw5=u1 = hiw6=int64#3 = low6=u2 = low6=int64#3 = hiw6=u2 = hiw7=int64#4 = low7=u3 = low7=int64#4 = hiw7=u3 = hiw4_spill=spill64#13 = low4_spill=d12 = low4_spill=spill64#13 = hiw4_spill=d12 = hiw5_spill=spill64#14 = low5_spill=d13 = low5_spill=spill64#14 = hiw5_spill=d13 = hiw6_spill=spill64#15 = low6_spill=d14 = low6_spill=spill64#15 = hiw6_spill=d14 = hiw7_spill=spill64#16 = low7_spill=d15 = low7_spill=spill64#16 = hiw7_spill=d15 = hiw8=int64#1 = mem32[w8=u0 = mem32[w8=int64#1 = mem32[w8=u0 = mem32[w9=int64#2 = mem32[w9=u1 = mem32[w9=int64#2 = mem32[w9=u1 = mem32[w10=int64#3 = mem32[w10=u2 = mem32[w10=int64#3 = mem32[w10=u2 = mem32[w11=int64#4 = mem32[w11=u3 = mem32[w11=int64#4 = mem32[w11=u3 = mem32[w8=int64#1 = low8=u0 = low8=int64#1 = hiw8=u0 = hiw9=int64#2 = low9=u1 = low9=int64#2 = hiw9=u1 = hiw10=int64#3 = low10=u2 = low10=int64#3 = hiw10=u2 = hiw11=int64#4 = low11=u3 = low11=int64#4 = hiw11=u3 = hiw0_next=stack64#9 = low0_next=m8 = low0_next=stack64#9 = hiw0_next=m8 = hiw1_next=stack64#10 = low1_next=m9 = low1_next=stack64#10 = hiw1_next=m9 = hiw2_next=stack64#11 = low2_next=m10 = low2_next=stack64#11 = hiw2_next=m10 = hiw3_next=stack64#12 = low3_next=m11 = low3_next=stack64#12 = hiw3_next=m11 = hiw12=int64#1 = mem32[w12=u0 = mem32[w12=int64#1 = mem32[w12=u0 = mem32[w13=int64#2 = mem32[w13=u1 = mem32[w13=int64#2 = mem32[w13=u1 = mem32[w14=int64#3 = mem32[w14=u2 = mem32[w14=int64#3 = mem32[w14=u2 = mem32[w15=int64#4 = mem32[w15=u3 = mem32[w15=int64#4 = mem32[w15=u3 = mem32[w12=int64#1 = low12=u0 = low12=int64#1 = hiw12=u0 = hiw13=int64#2 = low13=u1 = low13=int64#2 = hiw13=u1 = hiw14=int64#3 = low14=u2 = low14=int64#3 = hiw14=u2 = hiw15=int64#4 = low15=u3 = low15=int64#4 = hiw15=u3 = hiw4_next=stack64#13 = low4_next=m12 = low4_next=stack64#13 = hiw4_next=m12 = hiw5_next=stack64#14 = low5_next=m13 = low5_next=stack64#14 = hiw5_next=m13 = hiw6_next=stack64#15 = low6_next=m14 = low6_next=stack64#15 = hiw6_next=m14 = hiw7_next=stack64#16 = low7_next=m15 = low7_next=stack64#16 = hiw7_next=m15 = hiin_stack=stack32#2 = in_stack=o1 = i=int32#1 = 80 simple +# asm 2: >i=input_0 = 80 simple +input_0 = 80 simple +# qhasm: i_stack = i +# asm 1: >i_stack=stack32#5 = i_stack=o4 = constants=int32#1 = constants=input_0 = r3=int64#1 = lor3=u0 = lor3=int64#1 = hir3=u0 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#3 = lor5=u2 = lor5=int64#3 = hir5=u2 = hir6=int64#4 = lor6=u3 = lor6=int64#4 = hir6=u3 = hir7=int64#5 = lor7=u4 = lor7=int64#5 = hir7=u4 = hiw0=int64#6 = low0=u5 = low0=int64#6 = hiw0=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou1 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou1 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu1 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu1 unsigned>> 14) +# asm 1: hitmp ^= (lor3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir0=int64#2 = lor0=u1 = lor0=int64#2 = hir0=u1 = hir1=int64#3 = lor1=u2 = lor1=int64#3 = hir1=u2 = hir2=int64#4 = lor2=u3 = lor2=int64#4 = hir2=u3 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu1 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou1 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou1 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu1 unsigned>> 28) +# asm 1: hitmp ^= (lor7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#3 = lor5=u2 = lor5=int64#3 = hir5=u2 = hir6=int64#5 = lor6=u4 = lor6=int64#5 = hir6=u4 = hiw1=int64#6 = low1=u5 = low1=int64#6 = hiw1=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou0 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou0 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu0 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu0 unsigned>> 14) +# asm 1: hitmp ^= (lor2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir7=int64#1 = lor7=u0 = lor7=int64#1 = hir7=u0 = hir0=int64#2 = lor0=u1 = lor0=int64#2 = hir0=u1 = hir1=int64#3 = lor1=u2 = lor1=int64#3 = hir1=u2 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir3=int64#1 = lor3=u0 = lor3=int64#1 = hir3=u0 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#5 = lor5=u4 = lor5=int64#5 = hir5=u4 = hiw2=int64#6 = low2=u5 = low2=int64#6 = hiw2=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou3 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou3 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu3 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu3 unsigned>> 14) +# asm 1: hitmp ^= (lor1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir6=int64#1 = lor6=u0 = lor6=int64#1 = hir6=u0 = hir7=int64#2 = lor7=u1 = lor7=int64#2 = hir7=u1 = hir0=int64#4 = lor0=u3 = lor0=int64#4 = hir0=u3 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir2=int64#1 = lor2=u0 = lor2=int64#1 = hir2=u0 = hir3=int64#2 = lor3=u1 = lor3=int64#2 = hir3=u1 = hir4=int64#5 = lor4=u4 = lor4=int64#5 = hir4=u4 = hiw3=int64#6 = low3=u5 = low3=int64#6 = hiw3=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou2 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou2 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu2 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu2 unsigned>> 14) +# asm 1: hitmp ^= (lor0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hir5=int64#1 = lor5=u0 = lor5=int64#1 = hir5=u0 = hir6=int64#2 = lor6=u1 = lor6=int64#2 = hir6=u1 = hir7=int64#3 = lor7=u2 = lor7=int64#3 = hir7=u2 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir1=int64#1 = lor1=u0 = lor1=int64#1 = hir1=u0 = hir2=int64#2 = lor2=u1 = lor2=int64#2 = hir2=u1 = hir3=int64#5 = lor3=u4 = lor3=int64#5 = hir3=u4 = hiw4=int64#6 = low4=u5 = low4=int64#6 = hiw4=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou3 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou3 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu3 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu3 unsigned>> 14) +# asm 1: hitmp ^= (lor7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#4 = lor6=u3 = lor6=int64#4 = hir6=u3 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#5 = lor2=u4 = lor2=int64#5 = hir2=u4 = hiw5=int64#6 = low5=u5 = low5=int64#6 = hiw5=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou2 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou2 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu2 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu2 unsigned>> 14) +# asm 1: hitmp ^= (lor6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir3=int64#1 = lor3=u0 = lor3=int64#1 = hir3=u0 = hir4=int64#2 = lor4=u1 = lor4=int64#2 = hir4=u1 = hir5=int64#3 = lor5=u2 = lor5=int64#3 = hir5=u2 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir7=int64#1 = lor7=u0 = lor7=int64#1 = hir7=u0 = hir0=int64#2 = lor0=u1 = lor0=int64#2 = hir0=u1 = hir1=int64#5 = lor1=u4 = lor1=int64#5 = hir1=u4 = hiw6=int64#6 = low6=u5 = low6=int64#6 = hiw6=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou3 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou3 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu3 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu3 unsigned>> 14) +# asm 1: hitmp ^= (lor5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir2=int64#1 = lor2=u0 = lor2=int64#1 = hir2=u0 = hir3=int64#2 = lor3=u1 = lor3=int64#2 = hir3=u1 = hir4=int64#4 = lor4=u3 = lor4=int64#4 = hir4=u3 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir6=int64#1 = lor6=u0 = lor6=int64#1 = hir6=u0 = hir7=int64#2 = lor7=u1 = lor7=int64#2 = hir7=u1 = hir0=int64#5 = lor0=u4 = lor0=int64#5 = hir0=u4 = hiw7=int64#6 = low7=u5 = low7=int64#6 = hiw7=u5 = hi> 18) +# asm 2: lotmp ^= (lo> 18) +lotmp ^= (lou2 unsigned>> 18) +# asm 1: lotmp ^= (hi> 14) +# asm 2: lotmp ^= (lo> 14) +lotmp ^= (lou2 unsigned>> 14) +# asm 1: lotmp ^= (hi> 18) +# asm 2: hitmp ^= (hi> 18) +hitmp ^= (hiu2 unsigned>> 18) +# asm 1: hitmp ^= (lo> 14) +# asm 2: hitmp ^= (hi> 14) +hitmp ^= (hiu2 unsigned>> 14) +# asm 1: hitmp ^= (lor4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir1=int64#1 = lor1=u0 = lor1=int64#1 = hir1=u0 = hir2=int64#2 = lor2=u1 = lor2=int64#2 = hir2=u1 = hir3=int64#3 = lor3=u2 = lor3=int64#3 = hir3=u2 = hi> 2) +# asm 2: lotmp ^= (hi> 2) +lotmp ^= (hiu0 unsigned>> 2) +# asm 1: lotmp ^= (lo> 28) +# asm 2: lotmp ^= (lo> 28) +lotmp ^= (lou0 unsigned>> 28) +# asm 1: lotmp ^= (hi> 2) +# asm 2: hitmp ^= (lo> 2) +hitmp ^= (lou0 unsigned>> 2) +# asm 1: hitmp ^= (hi> 28) +# asm 2: hitmp ^= (hi> 28) +hitmp ^= (hiu0 unsigned>> 28) +# asm 1: hitmp ^= (lor0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hiconstants_stack=stack32#4 = constants_stack=o3 = i=int32#1 = i=input_0 = i_stack=stack32#5 = i_stack=o4 = w8=int64#1 = low8=u0 = low8=int64#1 = hiw8=u0 = hiw9=int64#2 = low9=u1 = low9=int64#2 = hiw9=u1 = hiw6=int64#3 = low6=u2 = low6=int64#3 = hiw6=u2 = hiw1=int64#4 = low1=u3 = low1=int64#4 = hiw1=u3 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou2 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu2 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu2 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou2 unsigned>> 29) +# asm 1: hitmp ^= (hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou1 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu1 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou1 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu1 unsigned>>7) +# asm 1: carry? low1_spill=spill64#10 = low1_spill=d9 = low1_spill=spill64#10 = hiw1_spill=d9 = hiw7=int64#4 = low7=u3 = low7=int64#4 = hiw7=u3 = hiw8_stack=stack64#16 = low8_stack=m15 = low8_stack=stack64#16 = hiw8_stack=m15 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou3 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu3 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu3 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou3 unsigned>> 29) +# asm 1: hitmp ^= (hiw10=int64#5 = low10=u4 = low10=int64#5 = hiw10=u4 = hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou4 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu4 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou4 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu4 unsigned>>7) +# asm 1: carry? low2=int64#6 = low2=u5 = low2=int64#6 = hiw2=u5 = hiw2_spill=spill64#11 = low2_spill=d10 = low2_spill=spill64#11 = hiw2_spill=d10 = hiw1_next=stack64#10 = low1_next=m9 = low1_next=stack64#10 = hiw1_next=m9 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou0 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu0 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu0 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou0 unsigned>> 29) +# asm 1: hitmp ^= (hiw11=int64#1 = low11=u0 = low11=int64#1 = hiw11=u0 = hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou0 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu0 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou0 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu0 unsigned>>7) +# asm 1: carry? low3=int64#6 = low3=u5 = low3=int64#6 = hiw3=u5 = hiw3_spill=spill64#12 = low3_spill=d11 = low3_spill=spill64#12 = hiw3_spill=d11 = hiw2_next=stack64#11 = low2_next=m10 = low2_next=stack64#11 = hiw2_next=m10 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou1 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu1 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu1 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou1 unsigned>> 29) +# asm 1: hitmp ^= (hiw12=int64#2 = low12=u1 = low12=int64#2 = hiw12=u1 = hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou1 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu1 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou1 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu1 unsigned>>7) +# asm 1: carry? low4=int64#6 = low4=u5 = low4=int64#6 = hiw4=u5 = hiw4_spill=spill64#13 = low4_spill=d12 = low4_spill=spill64#13 = hiw4_spill=d12 = hiw3_next=stack64#12 = low3_next=m11 = low3_next=stack64#12 = hiw3_next=m11 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou4 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu4 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu4 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou4 unsigned>> 29) +# asm 1: hitmp ^= (hiw13=int64#5 = low13=u4 = low13=int64#5 = hiw13=u4 = hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou4 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu4 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou4 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu4 unsigned>>7) +# asm 1: carry? low5=int64#6 = low5=u5 = low5=int64#6 = hiw5=u5 = hiw5_spill=spill64#14 = low5_spill=d13 = low5_spill=spill64#14 = hiw5_spill=d13 = hiw4_next=stack64#13 = low4_next=m12 = low4_next=stack64#13 = hiw4_next=m12 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou0 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu0 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu0 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou0 unsigned>> 29) +# asm 1: hitmp ^= (hiw14=int64#1 = low14=u0 = low14=int64#1 = hiw14=u0 = hiw6_spill=spill64#15 = low6_spill=d14 = low6_spill=spill64#15 = hiw6_spill=d14 = hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou0 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu0 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou0 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu0 unsigned>>7) +# asm 1: carry? low5_next=stack64#14 = low5_next=m13 = low5_next=stack64#14 = hiw5_next=m13 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou1 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu1 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu1 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou1 unsigned>> 29) +# asm 1: hitmp ^= (hiw15=int64#2 = low15=u1 = low15=int64#2 = hiw15=u1 = hiw7_spill=spill64#16 = low7_spill=d15 = low7_spill=spill64#16 = hiw7_spill=d15 = hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou1 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu1 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou1 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu1 unsigned>>7) +# asm 1: carry? low6_next=stack64#15 = low6_next=m14 = low6_next=stack64#15 = hiw6_next=m14 = hi> 6) +# asm 2: lotmp ^= (lo> 6) +lotmp ^= (lou4 unsigned>> 6) +# asm 1: lotmp ^= (hi> 29) +# asm 2: lotmp ^= (hi> 29) +lotmp ^= (hiu4 unsigned>> 29) +# asm 1: lotmp ^= (lo> 6) +# asm 2: hitmp ^= (hi> 6) +hitmp ^= (hiu4 unsigned>> 6) +# asm 1: hitmp ^= (lo> 29) +# asm 2: hitmp ^= (lo> 29) +hitmp ^= (lou4 unsigned>> 29) +# asm 1: hitmp ^= (hiw0=int64#1 = low0=u0 = low0=int64#1 = hiw0=u0 = hiw8=int64#3 = low8=u2 = low8=int64#3 = hiw8=u2 = hiw0_next=stack64#9 = low0_next=m8 = low0_next=stack64#9 = hiw0_next=m8 = hi> 1) +# asm 2: carry? lotmp ^= (lo> 1) +carry? lotmp ^= (lou0 unsigned>> 1) +# asm 1: hitmp ^= (carry,hi> 1) +# asm 2: hitmp ^= (carry,hi> 1) +hitmp ^= (carry,hiu0 unsigned>> 1) +# asm 1: lotmp ^= (hi>7) +# asm 2: lotmp ^= (lo>7) +lotmp ^= (lou0 unsigned>>7) +# asm 1: lotmp ^= (hi>7) +# asm 2: hitmp ^= (hi>7) +hitmp ^= (hiu0 unsigned>>7) +# asm 1: carry? low7_next=stack64#16 = low7_next=m15 = low7_next=stack64#16 = hiw7_next=m15 = hiw0_spill=spill64#9 = low0_spill=d8 = low0_spill=spill64#9 = hiw0_spill=d8 = hiw0=int64#1 = low0=u0 = low0=int64#1 = hiw0=u0 = hiw1=int64#2 = low1=u1 = low1=int64#2 = hiw1=u1 = hiw2=int64#3 = low2=u2 = low2=int64#3 = hiw2=u2 = hiw3=int64#4 = low3=u3 = low3=int64#4 = hiw3=u3 = hiw0_spill=spill64#9 = low0_spill=d8 = low0_spill=spill64#9 = hiw0_spill=d8 = hiw1_spill=spill64#10 = low1_spill=d9 = low1_spill=spill64#10 = hiw1_spill=d9 = hiw2_spill=spill64#11 = low2_spill=d10 = low2_spill=spill64#11 = hiw2_spill=d10 = hiw3_spill=spill64#12 = low3_spill=d11 = low3_spill=spill64#12 = hiw3_spill=d11 = hiw4=int64#1 = low4=u0 = low4=int64#1 = hiw4=u0 = hiw5=int64#2 = low5=u1 = low5=int64#2 = hiw5=u1 = hiw6=int64#3 = low6=u2 = low6=int64#3 = hiw6=u2 = hiw7=int64#4 = low7=u3 = low7=int64#4 = hiw7=u3 = hiw4_spill=spill64#13 = low4_spill=d12 = low4_spill=spill64#13 = hiw4_spill=d12 = hiw5_spill=spill64#14 = low5_spill=d13 = low5_spill=spill64#14 = hiw5_spill=d13 = hiw6_spill=spill64#15 = low6_spill=d14 = low6_spill=spill64#15 = hiw6_spill=d14 = hiw7_spill=spill64#16 = low7_spill=d15 = low7_spill=spill64#16 = hiw7_spill=d15 = hiconstants=int32#1 = constants=input_0 = constants_stack=stack32#4 = constants_stack=o3 = r0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = histate0=stack64#1 = lostate0=m0 = lostate0=stack64#1 = histate0=m0 = histate1=stack64#2 = lostate1=m1 = lostate1=stack64#2 = histate1=m1 = histate2=stack64#3 = lostate2=m2 = lostate2=stack64#3 = histate2=m2 = histate3=stack64#4 = lostate3=m3 = lostate3=stack64#4 = histate3=m3 = hir0_spill=spill64#1 = lor0_spill=d0 = lor0_spill=spill64#1 = hir0_spill=d0 = hir1_spill=spill64#2 = lor1_spill=d1 = lor1_spill=spill64#2 = hir1_spill=d1 = hir2_spill=spill64#3 = lor2_spill=d2 = lor2_spill=spill64#3 = hir2_spill=d2 = hir3_spill=spill64#4 = lor3_spill=d3 = lor3_spill=spill64#4 = hir3_spill=d3 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = histate4=stack64#5 = lostate4=m4 = lostate4=stack64#5 = histate4=m4 = histate5=stack64#6 = lostate5=m5 = lostate5=stack64#6 = histate5=m5 = histate6=stack64#7 = lostate6=m6 = lostate6=stack64#7 = histate6=m6 = histate7=stack64#8 = lostate7=m7 = lostate7=stack64#8 = histate7=m7 = hir4_spill=spill64#5 = lor4_spill=d4 = lor4_spill=spill64#5 = hir4_spill=d4 = hir5_spill=spill64#6 = lor5_spill=d5 = lor5_spill=spill64#6 = hir5_spill=d5 = hir6_spill=spill64#7 = lor6_spill=d6 = lor6_spill=spill64#7 = hir6_spill=d6 = hir7_spill=spill64#8 = lor7_spill=d7 = lor7_spill=spill64#8 = hir7_spill=d7 = hiinlen=int32#1 = inlen=input_0 = =? inlen -= 128 +# asm 1: =? unsignedinlen_stack=stack32#3 = inlen_stack=o2 = = +goto mainloop if !unsigned< +# qhasm: endmainloop: +endmainloop: +# qhasm: statebytes = statebytes_stack +# asm 1: >statebytes=int32#2 = statebytes=input_1 = r0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = hir0=int64#1 = lor0=u0 = lor0=int64#1 = hir0=u0 = hir1=int64#2 = lor1=u1 = lor1=int64#2 = hir1=u1 = hir2=int64#3 = lor2=u2 = lor2=int64#3 = hir2=u2 = hir3=int64#4 = lor3=u3 = lor3=int64#4 = hir3=u3 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = hir4=int64#1 = lor4=u0 = lor4=int64#1 = hir4=u0 = hir5=int64#2 = lor5=u1 = lor5=int64#2 = hir5=u1 = hir6=int64#3 = lor6=u2 = lor6=int64#3 = hir6=u2 = hir7=int64#4 = lor7=u3 = lor7=int64#4 = hir7=u3 = hi>= 8; + x[6] = u; u >>= 8; + x[5] = u; u >>= 8; + x[4] = u; u >>= 8; + x[3] = u; u >>= 8; + x[2] = u; u >>= 8; + x[1] = u; u >>= 8; + x[0] = u; +} + +#define SHR(x,c) ((x) >> (c)) +#define ROTR(x,c) (((x) >> (c)) | ((x) << (64 - (c)))) + +#define Ch(x,y,z) ((x & y) ^ (~x & z)) +#define Maj(x,y,z) ((x & y) ^ (x & z) ^ (y & z)) +#define Sigma0(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39)) +#define Sigma1(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41)) +#define sigma0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x,7)) +#define sigma1(x) (ROTR(x,19) ^ ROTR(x,61) ^ SHR(x,6)) + +#define M(w0,w14,w9,w1) w0 = sigma1(w14) + w9 + sigma0(w1) + w0; + +#define EXPAND \ + M(w0 ,w14,w9 ,w1 ) \ + M(w1 ,w15,w10,w2 ) \ + M(w2 ,w0 ,w11,w3 ) \ + M(w3 ,w1 ,w12,w4 ) \ + M(w4 ,w2 ,w13,w5 ) \ + M(w5 ,w3 ,w14,w6 ) \ + M(w6 ,w4 ,w15,w7 ) \ + M(w7 ,w5 ,w0 ,w8 ) \ + M(w8 ,w6 ,w1 ,w9 ) \ + M(w9 ,w7 ,w2 ,w10) \ + M(w10,w8 ,w3 ,w11) \ + M(w11,w9 ,w4 ,w12) \ + M(w12,w10,w5 ,w13) \ + M(w13,w11,w6 ,w14) \ + M(w14,w12,w7 ,w15) \ + M(w15,w13,w8 ,w0 ) + +#define F(w,k) \ + T1 = h + Sigma1(e) + Ch(e,f,g) + k + w; \ + T2 = Sigma0(a) + Maj(a,b,c); \ + h = g; \ + g = f; \ + f = e; \ + e = d + T1; \ + d = c; \ + c = b; \ + b = a; \ + a = T1 + T2; + +int crypto_hashblocks(unsigned char *statebytes,const unsigned char *in,long long inlen) +{ + uint64 state[8]; + uint64 a; + uint64 b; + uint64 c; + uint64 d; + uint64 e; + uint64 f; + uint64 g; + uint64 h; + uint64 T1; + uint64 T2; + + a = load_bigendian(statebytes + 0); state[0] = a; + b = load_bigendian(statebytes + 8); state[1] = b; + c = load_bigendian(statebytes + 16); state[2] = c; + d = load_bigendian(statebytes + 24); state[3] = d; + e = load_bigendian(statebytes + 32); state[4] = e; + f = load_bigendian(statebytes + 40); state[5] = f; + g = load_bigendian(statebytes + 48); state[6] = g; + h = load_bigendian(statebytes + 56); state[7] = h; + + while (inlen >= 128) { + uint64 w0 = load_bigendian(in + 0); + uint64 w1 = load_bigendian(in + 8); + uint64 w2 = load_bigendian(in + 16); + uint64 w3 = load_bigendian(in + 24); + uint64 w4 = load_bigendian(in + 32); + uint64 w5 = load_bigendian(in + 40); + uint64 w6 = load_bigendian(in + 48); + uint64 w7 = load_bigendian(in + 56); + uint64 w8 = load_bigendian(in + 64); + uint64 w9 = load_bigendian(in + 72); + uint64 w10 = load_bigendian(in + 80); + uint64 w11 = load_bigendian(in + 88); + uint64 w12 = load_bigendian(in + 96); + uint64 w13 = load_bigendian(in + 104); + uint64 w14 = load_bigendian(in + 112); + uint64 w15 = load_bigendian(in + 120); + + F(w0 ,0x428a2f98d728ae22ULL) + F(w1 ,0x7137449123ef65cdULL) + F(w2 ,0xb5c0fbcfec4d3b2fULL) + F(w3 ,0xe9b5dba58189dbbcULL) + F(w4 ,0x3956c25bf348b538ULL) + F(w5 ,0x59f111f1b605d019ULL) + F(w6 ,0x923f82a4af194f9bULL) + F(w7 ,0xab1c5ed5da6d8118ULL) + F(w8 ,0xd807aa98a3030242ULL) + F(w9 ,0x12835b0145706fbeULL) + F(w10,0x243185be4ee4b28cULL) + F(w11,0x550c7dc3d5ffb4e2ULL) + F(w12,0x72be5d74f27b896fULL) + F(w13,0x80deb1fe3b1696b1ULL) + F(w14,0x9bdc06a725c71235ULL) + F(w15,0xc19bf174cf692694ULL) + + EXPAND + + F(w0 ,0xe49b69c19ef14ad2ULL) + F(w1 ,0xefbe4786384f25e3ULL) + F(w2 ,0x0fc19dc68b8cd5b5ULL) + F(w3 ,0x240ca1cc77ac9c65ULL) + F(w4 ,0x2de92c6f592b0275ULL) + F(w5 ,0x4a7484aa6ea6e483ULL) + F(w6 ,0x5cb0a9dcbd41fbd4ULL) + F(w7 ,0x76f988da831153b5ULL) + F(w8 ,0x983e5152ee66dfabULL) + F(w9 ,0xa831c66d2db43210ULL) + F(w10,0xb00327c898fb213fULL) + F(w11,0xbf597fc7beef0ee4ULL) + F(w12,0xc6e00bf33da88fc2ULL) + F(w13,0xd5a79147930aa725ULL) + F(w14,0x06ca6351e003826fULL) + F(w15,0x142929670a0e6e70ULL) + + EXPAND + + F(w0 ,0x27b70a8546d22ffcULL) + F(w1 ,0x2e1b21385c26c926ULL) + F(w2 ,0x4d2c6dfc5ac42aedULL) + F(w3 ,0x53380d139d95b3dfULL) + F(w4 ,0x650a73548baf63deULL) + F(w5 ,0x766a0abb3c77b2a8ULL) + F(w6 ,0x81c2c92e47edaee6ULL) + F(w7 ,0x92722c851482353bULL) + F(w8 ,0xa2bfe8a14cf10364ULL) + F(w9 ,0xa81a664bbc423001ULL) + F(w10,0xc24b8b70d0f89791ULL) + F(w11,0xc76c51a30654be30ULL) + F(w12,0xd192e819d6ef5218ULL) + F(w13,0xd69906245565a910ULL) + F(w14,0xf40e35855771202aULL) + F(w15,0x106aa07032bbd1b8ULL) + + EXPAND + + F(w0 ,0x19a4c116b8d2d0c8ULL) + F(w1 ,0x1e376c085141ab53ULL) + F(w2 ,0x2748774cdf8eeb99ULL) + F(w3 ,0x34b0bcb5e19b48a8ULL) + F(w4 ,0x391c0cb3c5c95a63ULL) + F(w5 ,0x4ed8aa4ae3418acbULL) + F(w6 ,0x5b9cca4f7763e373ULL) + F(w7 ,0x682e6ff3d6b2b8a3ULL) + F(w8 ,0x748f82ee5defb2fcULL) + F(w9 ,0x78a5636f43172f60ULL) + F(w10,0x84c87814a1f0ab72ULL) + F(w11,0x8cc702081a6439ecULL) + F(w12,0x90befffa23631e28ULL) + F(w13,0xa4506cebde82bde9ULL) + F(w14,0xbef9a3f7b2c67915ULL) + F(w15,0xc67178f2e372532bULL) + + EXPAND + + F(w0 ,0xca273eceea26619cULL) + F(w1 ,0xd186b8c721c0c207ULL) + F(w2 ,0xeada7dd6cde0eb1eULL) + F(w3 ,0xf57d4f7fee6ed178ULL) + F(w4 ,0x06f067aa72176fbaULL) + F(w5 ,0x0a637dc5a2c898a6ULL) + F(w6 ,0x113f9804bef90daeULL) + F(w7 ,0x1b710b35131c471bULL) + F(w8 ,0x28db77f523047d84ULL) + F(w9 ,0x32caab7b40c72493ULL) + F(w10,0x3c9ebe0a15c9bebcULL) + F(w11,0x431d67c49c100d4cULL) + F(w12,0x4cc5d4becb3e42b6ULL) + F(w13,0x597f299cfc657e2aULL) + F(w14,0x5fcb6fab3ad6faecULL) + F(w15,0x6c44198c4a475817ULL) + + a += state[0]; + b += state[1]; + c += state[2]; + d += state[3]; + e += state[4]; + f += state[5]; + g += state[6]; + h += state[7]; + + state[0] = a; + state[1] = b; + state[2] = c; + state[3] = d; + state[4] = e; + state[5] = f; + state[6] = g; + state[7] = h; + + in += 128; + inlen -= 128; + } + + store_bigendian(statebytes + 0,state[0]); + store_bigendian(statebytes + 8,state[1]); + store_bigendian(statebytes + 16,state[2]); + store_bigendian(statebytes + 24,state[3]); + store_bigendian(statebytes + 32,state[4]); + store_bigendian(statebytes + 40,state[5]); + store_bigendian(statebytes + 48,state[6]); + store_bigendian(statebytes + 56,state[7]); + + return inlen; +} diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/ref/implementors b/lib-25519/lib25519/crypto_hashblocks/sha512/ref/implementors new file mode 120000 index 0000000000..3476030106 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/ref/implementors @@ -0,0 +1 @@ +../m3/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/api.h b/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/api.h new file mode 120000 index 0000000000..1dfe625ff0 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/api.h @@ -0,0 +1 @@ +../m3/api.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/constants.c b/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/constants.c new file mode 120000 index 0000000000..d9f993dec8 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/constants.c @@ -0,0 +1 @@ +../m3/constants.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/implementors b/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/implementors new file mode 120000 index 0000000000..3476030106 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/implementors @@ -0,0 +1 @@ +../m3/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/inner.c b/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/inner.c new file mode 100644 index 0000000000..0142bd02f2 --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/inner.c @@ -0,0 +1,160 @@ +#include "inner.h" + +#define uint64 crypto_uint64 + +static uint64 load_bigendian(const unsigned char *x) +{ + return __builtin_bswap64(*(uint64 *) x); +} + +static void store_bigendian(unsigned char *x,uint64 u) +{ + *(uint64 *) x = __builtin_bswap64(u); +} + +#define SHR(x,c) ((x) >> (c)) +#define ROTR(x,c) (((x) >> (c)) | ((x) << (64 - (c)))) +#define sigma0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x,7)) +#define sigma1(x) (ROTR(x,19) ^ ROTR(x,61) ^ SHR(x,6)) + +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) ((x & (y ^ z)) ^ (y & z)) +#define Sigma0(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39)) +#define Sigma1(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41)) + +int inner(unsigned char *statebytes,const unsigned char *in,unsigned int inlen,const uint64 *constants) +{ + uint64 state[8]; + uint64 r0,r1,r2,r3,r4,r5,r6,r7; + uint64 w0,w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11,w12,w13,w14,w15; + uint64 w0_next,w1_next,w2_next,w3_next,w4_next,w5_next,w6_next,w7_next; + int i; + + state[0] = r0 = load_bigendian(statebytes); + state[1] = r1 = load_bigendian(statebytes+8); + state[2] = r2 = load_bigendian(statebytes+16); + state[3] = r3 = load_bigendian(statebytes+24); + state[4] = r4 = load_bigendian(statebytes+32); + state[5] = r5 = load_bigendian(statebytes+40); + state[6] = r6 = load_bigendian(statebytes+48); + state[7] = r7 = load_bigendian(statebytes+56); + + do { + w0 = load_bigendian(in); + w1 = load_bigendian(in+8); + w2 = load_bigendian(in+16); + w3 = load_bigendian(in+24); + w4 = load_bigendian(in+32); + w5 = load_bigendian(in+40); + w6 = load_bigendian(in+48); + w7 = load_bigendian(in+56); + w0_next = load_bigendian(in+64); + w1_next = load_bigendian(in+72); + w2_next = load_bigendian(in+80); + w3_next = load_bigendian(in+88); + w4_next = load_bigendian(in+96); + w5_next = load_bigendian(in+104); + w6_next = load_bigendian(in+112); + w7_next = load_bigendian(in+120); + + i = 0; + + for (;;) { + r7 += w0 + constants[0] + Sigma1(r4) + Ch(r4,r5,r6); + r3 += r7; + r7 += Sigma0(r0) + Maj(r0,r1,r2); + r6 += w1 + constants[1] + Sigma1(r3) + Ch(r3,r4,r5); + r2 += r6; + r6 += Sigma0(r7) + Maj(r7,r0,r1); + r5 += w2 + constants[2] + Sigma1(r2) + Ch(r2,r3,r4); + r1 += r5; + r5 += Sigma0(r6) + Maj(r6,r7,r0); + r4 += w3 + constants[3] + Sigma1(r1) + Ch(r1,r2,r3); + r0 += r4; + r4 += Sigma0(r5) + Maj(r5,r6,r7); + r3 += w4 + constants[4] + Sigma1(r0) + Ch(r0,r1,r2); + r7 += r3; + r3 += Sigma0(r4) + Maj(r4,r5,r6); + r2 += w5 + constants[5] + Sigma1(r7) + Ch(r7,r0,r1); + r6 += r2; + r2 += Sigma0(r3) + Maj(r3,r4,r5); + r1 += w6 + constants[6] + Sigma1(r6) + Ch(r6,r7,r0); + r5 += r1; + r1 += Sigma0(r2) + Maj(r2,r3,r4); + r0 += w7 + constants[7] + Sigma1(r5) + Ch(r5,r6,r7); + r4 += r0; + r0 += Sigma0(r1) + Maj(r1,r2,r3); + + if (i == 72) break; + + if (i == 64) { + w0 = w0_next; + w1 = w1_next; + w2 = w2_next; + w3 = w3_next; + w4 = w4_next; + w5 = w5_next; + w6 = w6_next; + w7 = w7_next; + } else { + w8 = w0; + w9 = w1; + w10 = w2; + w11 = w3; + w12 = w4; + w13 = w5; + w14 = w6; + w15 = w7; + + w0 = w0_next; + w1 = w1_next; + w2 = w2_next; + w3 = w3_next; + w4 = w4_next; + w5 = w5_next; + w6 = w6_next; + w7 = w7_next; + + w8 += sigma1(w6) + w1 + sigma0(w9); + w9 += sigma1(w7) + w2 + sigma0(w10); + w10 += sigma1(w8) + w3 + sigma0(w11); + w11 += sigma1(w9) + w4 + sigma0(w12); + w12 += sigma1(w10) + w5 + sigma0(w13); + w13 += sigma1(w11) + w6 + sigma0(w14); + w14 += sigma1(w12) + w7 + sigma0(w15); + w15 += sigma1(w13) + w8 + sigma0(w0); + + w0_next = w8; + w1_next = w9; + w2_next = w10; + w3_next = w11; + w4_next = w12; + w5_next = w13; + w6_next = w14; + w7_next = w15; + } + + i += 8; + constants += 8; + } + + constants -= 72; + + r0 += state[0]; state[0] = r0; + r1 += state[1]; state[1] = r1; + r2 += state[2]; state[2] = r2; + r3 += state[3]; state[3] = r3; + r4 += state[4]; state[4] = r4; + r5 += state[5]; state[5] = r5; + r6 += state[6]; state[6] = r6; + r7 += state[7]; state[7] = r7; + + in += 128; + inlen -= 128; + } while (inlen >= 128); + + for (i = 0;i < 8;++i) + store_bigendian(statebytes+8*i,state[i]); + + return inlen; +} diff --git a/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/inner.h b/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/inner.h new file mode 120000 index 0000000000..bdb3d614bd --- /dev/null +++ b/lib-25519/lib25519/crypto_hashblocks/sha512/wflip/inner.h @@ -0,0 +1 @@ +../avx/inner.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/architectures b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/architectures new file mode 120000 index 0000000000..f92e7d6fe1 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/architectures @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519.h new file mode 100644 index 0000000000..d2a6a28c90 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519.h @@ -0,0 +1,65 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_iszero_vartime CRYPTO_NAMESPACE(fe25519_iszero_vartime) +#define fe25519_iseq_vartime CRYPTO_NAMESPACE(fe25519_iseq_vartime) +#define fe25519_cmov CRYPTO_NAMESPACE(fe25519_cmov) +#define fe25519_setint CRYPTO_NAMESPACE(fe25519_setint) +#define fe25519_neg CRYPTO_NAMESPACE(fe25519_neg) +#define fe25519_getparity CRYPTO_NAMESPACE(fe25519_getparity) +#define fe25519_add CRYPTO_NAMESPACE(fe25519_add) +#define fe25519_sub CRYPTO_NAMESPACE(fe25519_sub) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_mul121666 CRYPTO_NAMESPACE(fe25519_mul121666) +#define fe25519_square CRYPTO_SHARED_NAMESPACE(fe25519_square) +#define fe25519_nsquare CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) +#define fe25519_pow2523 CRYPTO_NAMESPACE(fe25519_pow2523) + +typedef struct +{ + unsigned long long v[5]; +} +fe25519; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_cmov(fe25519 *r, const fe25519 *x, unsigned char b); + +void fe25519_cswap(fe25519 *r, fe25519 *x, unsigned char b); + +void fe25519_setint(fe25519 *r, unsigned int v); + +void fe25519_neg(fe25519 *r, const fe25519 *x); + +unsigned char fe25519_getparity(const fe25519 *x); + +int fe25519_iszero_vartime(const fe25519 *x); + +int fe25519_iseq_vartime(const fe25519 *x, const fe25519 *y); + +void fe25519_add(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_sub(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_mul121666(fe25519 *r, const fe25519 *x); + +void fe25519_square(fe25519 *r, const fe25519 *x); + +void fe25519_nsquare(fe25519 *r, unsigned long long n); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +void fe25519_pow2523(fe25519 *r, const fe25519 *x); + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_add.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_add.c new file mode 100644 index 0000000000..b5589ebaa7 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_add.c @@ -0,0 +1,12 @@ +// linker define fe25519_add + +#include "fe25519.h" + +void fe25519_add(fe25519 *r, const fe25519 *x, const fe25519 *y) +{ + r->v[0] = x->v[0] + y->v[0]; + r->v[1] = x->v[1] + y->v[1]; + r->v[2] = x->v[2] + y->v[2]; + r->v[3] = x->v[3] + y->v[3]; + r->v[4] = x->v[4] + y->v[4]; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_freeze.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_freeze.S new file mode 100644 index 0000000000..c0ff5c2d1e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_freeze.S @@ -0,0 +1,436 @@ +// linker define fe25519_freeze +// linker use REDMASK51 + +# qhasm: int64 rp + +# qhasm: input rp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 r4 + +# qhasm: int64 t + +# qhasm: int64 loop + +# qhasm: int64 two51minus1 + +# qhasm: int64 two51minus19 + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +_CRYPTO_SHARED_NAMESPACE(fe25519_freeze): +CRYPTO_SHARED_NAMESPACE(fe25519_freeze): +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: r0 = *(uint64 *) (rp + 0) +# asm 1: movq 0(r0=int64#2 +# asm 2: movq 0(r0=%rsi +movq 0(%rdi),%rsi + +# qhasm: r1 = *(uint64 *) (rp + 8) +# asm 1: movq 8(r1=int64#3 +# asm 2: movq 8(r1=%rdx +movq 8(%rdi),%rdx + +# qhasm: r2 = *(uint64 *) (rp + 16) +# asm 1: movq 16(r2=int64#4 +# asm 2: movq 16(r2=%rcx +movq 16(%rdi),%rcx + +# qhasm: r3 = *(uint64 *) (rp + 24) +# asm 1: movq 24(r3=int64#5 +# asm 2: movq 24(r3=%r8 +movq 24(%rdi),%r8 + +# qhasm: r4 = *(uint64 *) (rp + 32) +# asm 1: movq 32(r4=int64#6 +# asm 2: movq 32(r4=%r9 +movq 32(%rdi),%r9 + +# qhasm: two51minus1 = *(uint64 *) &CRYPTO_SHARED_NAMESPACE(REDMASK51) +# asm 1: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>two51minus1=int64#7 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>two51minus1=%rax +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rax + +# qhasm: two51minus19 = two51minus1 +# asm 1: mov two51minus19=int64#8 +# asm 2: mov two51minus19=%r10 +mov %rax,%r10 + +# qhasm: two51minus19 -= 18 +# asm 1: sub $18,loop=int64#9 +# asm 2: mov $3,>loop=%r11 +mov $3,%r11 + +# qhasm: reduceloop: +._reduceloop: + +# qhasm: t = r0 +# asm 1: mov t=int64#10 +# asm 2: mov t=%r12 +mov %rsi,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,t=int64#10 +# asm 2: mov t=%r12 +mov %rdx,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,t=int64#10 +# asm 2: mov t=%r12 +mov %rcx,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,t=int64#10 +# asm 2: mov t=%r12 +mov %r8,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,t=int64#10 +# asm 2: mov t=%r12 +mov %r9,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,t=int64#10 +# asm 2: imulq $19,t=%r12 +imulq $19,%r12,%r12 + +# qhasm: r0 += t +# asm 1: add ? loop -= 1 +# asm 1: sub $1, +ja ._reduceloop + +# qhasm: t = 1 +# asm 1: mov $1,>t=int64#10 +# asm 2: mov $1,>t=%r12 +mov $1,%r12 + +# qhasm: signedcaller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c new file mode 100644 index 0000000000..0ce97bf500 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c @@ -0,0 +1,11 @@ +// linker define fe25519_getparity +// linker use fe25519_freeze + +#include "fe25519.h" + +unsigned char fe25519_getparity(const fe25519 *x) +{ + fe25519 t = *x; + fe25519_freeze(&t); + return (unsigned char)t.v[0] & 1; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_invert.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_invert.c new file mode 100644 index 0000000000..055adb4459 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_invert.c @@ -0,0 +1,14 @@ +// linker define fe25519_invert +// linker use fe25519_pack +// linker use fe25519_unpack + +#include "crypto_pow_inv25519.h" +#include "fe25519.h" + +void fe25519_invert(fe25519 *r, const fe25519 *x) +{ + unsigned char s[32]; + fe25519_pack(s,x); + crypto_pow_inv25519(s,s); + fe25519_unpack(r,s); +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_iseq.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_iseq.c new file mode 100644 index 0000000000..aab1d88c58 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_iseq.c @@ -0,0 +1,18 @@ +// linker define fe25519_iseq_vartime +// linker use fe25519_freeze + +#include "fe25519.h" + +int fe25519_iseq_vartime(const fe25519 *x, const fe25519 *y) +{ + fe25519 t1 = *x; + fe25519 t2 = *y; + fe25519_freeze(&t1); + fe25519_freeze(&t2); + if(t1.v[0] != t2.v[0]) return 0; + if(t1.v[1] != t2.v[1]) return 0; + if(t1.v[2] != t2.v[2]) return 0; + if(t1.v[3] != t2.v[3]) return 0; + if(t1.v[4] != t2.v[4]) return 0; + return 1; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_mul.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_mul.S new file mode 100644 index 0000000000..107302b739 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_mul.S @@ -0,0 +1,948 @@ +// linker define fe25519_mul +// linker use REDMASK51 + +# qhasm: int64 rp + +# qhasm: int64 xp + +# qhasm: int64 yp + +# qhasm: input rp + +# qhasm: input xp + +# qhasm: input yp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 r4 + +# qhasm: int64 c1 + +# qhasm: int64 c2 + +# qhasm: int64 c3 + +# qhasm: int64 c4 + +# qhasm: int64 c5 + +# qhasm: int64 c6 + +# qhasm: int64 c7 + +# qhasm: caller c1 + +# qhasm: caller c2 + +# qhasm: caller c3 + +# qhasm: caller c4 + +# qhasm: caller c5 + +# qhasm: caller c6 + +# qhasm: caller c7 + +# qhasm: stack64 c1_stack + +# qhasm: stack64 c2_stack + +# qhasm: stack64 c3_stack + +# qhasm: stack64 c4_stack + +# qhasm: stack64 c5_stack + +# qhasm: stack64 c6_stack + +# qhasm: stack64 c7_stack + +# qhasm: stack64 x119_stack + +# qhasm: stack64 x219_stack + +# qhasm: stack64 x319_stack + +# qhasm: stack64 x419_stack + +# qhasm: stack64 rp_stack + +# qhasm: int64 mulr01 + +# qhasm: int64 mulr11 + +# qhasm: int64 mulr21 + +# qhasm: int64 mulr31 + +# qhasm: int64 mulr41 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mult + +# qhasm: int64 mulredmask + +# qhasm: stack64 mulx219_stack + +# qhasm: stack64 mulx319_stack + +# qhasm: stack64 mulx419_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(fe25519_mul) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_mul) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_mul) +_CRYPTO_SHARED_NAMESPACE(fe25519_mul): +CRYPTO_SHARED_NAMESPACE(fe25519_mul): +mov %rsp,%r11 +and $31,%r11 +add $96,%r11 +sub %r11,%rsp + +# qhasm: c1_stack = c1 +# asm 1: movq c1_stack=stack64#1 +# asm 2: movq c1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: c2_stack = c2 +# asm 1: movq c2_stack=stack64#2 +# asm 2: movq c2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: c3_stack = c3 +# asm 1: movq c3_stack=stack64#3 +# asm 2: movq c3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: c4_stack = c4 +# asm 1: movq c4_stack=stack64#4 +# asm 2: movq c4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: c5_stack = c5 +# asm 1: movq c5_stack=stack64#5 +# asm 2: movq c5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: c6_stack = c6 +# asm 1: movq c6_stack=stack64#6 +# asm 2: movq c6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: c7_stack = c7 +# asm 1: movq c7_stack=stack64#7 +# asm 2: movq c7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: rp_stack = rp +# asm 1: movq rp_stack=stack64#8 +# asm 2: movq rp_stack=56(%rsp) +movq %rdi,56(%rsp) + +# qhasm: yp = yp +# asm 1: mov yp=int64#4 +# asm 2: mov yp=%rcx +mov %rdx,%rcx + +# qhasm: mulrax = *(uint64 *)(xp + 24) +# asm 1: movq 24(mulrax=int64#3 +# asm 2: movq 24(mulrax=%rdx +movq 24(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#9 +# asm 2: movq mulx319_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(r0=int64#5 +# asm 2: mov r0=%r8 +mov %rax,%r8 + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#6 +# asm 2: mov mulr01=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = *(uint64 *)(xp + 32) +# asm 1: movq 32(mulrax=int64#3 +# asm 2: movq 32(mulrax=%rdx +movq 32(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#10 +# asm 2: movq mulx419_stack=72(%rsp) +movq %rax,72(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(r1=int64#8 +# asm 2: mov r1=%r10 +mov %rax,%r10 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#9 +# asm 2: mov mulr11=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = *(uint64 *)(xp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(r2=int64#10 +# asm 2: mov r2=%r12 +mov %rax,%r12 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#11 +# asm 2: mov mulr21=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(xp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(r3=int64#12 +# asm 2: mov r3=%r14 +mov %rax,%r14 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#13 +# asm 2: mov mulr31=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = *(uint64 *)(xp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(r4=int64#14 +# asm 2: mov r4=%rbx +mov %rax,%rbx + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#15 +# asm 2: mov mulr41=%rbp +mov %rdx,%rbp + +# qhasm: mulrax = *(uint64 *)(xp + 8) +# asm 1: movq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(mulrax=int64#3 +# asm 2: movq 8(mulrax=%rdx +movq 8(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(mulredmask=int64#2 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rsi +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rsi + +# qhasm: mulr01 = (mulr01.r0) << 13 +# asm 1: shld $13,mulr41=int64#3 +# asm 2: imulq $19,mulr41=%rdx +imulq $19,%rbp,%rdx + +# qhasm: r0 += mulr41 +# asm 1: add mult=int64#3 +# asm 2: mov mult=%rdx +mov %r8,%rdx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,r1=int64#4 +# asm 2: mov r1=%rcx +mov %rdx,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,r2=int64#6 +# asm 2: mov r2=%r9 +mov %rdx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,r3=int64#7 +# asm 2: mov r3=%rax +mov %rdx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,r4=int64#8 +# asm 2: mov r4=%r10 +mov %rdx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#3 +# asm 2: imulq $19,mult=%rdx +imulq $19,%rdx,%rdx + +# qhasm: r0 += mult +# asm 1: add c1=int64#9 +# asm 2: movq c1=%r11 +movq 0(%rsp),%r11 + +# qhasm: c2 =c2_stack +# asm 1: movq c2=int64#10 +# asm 2: movq c2=%r12 +movq 8(%rsp),%r12 + +# qhasm: c3 =c3_stack +# asm 1: movq c3=int64#11 +# asm 2: movq c3=%r13 +movq 16(%rsp),%r13 + +# qhasm: c4 =c4_stack +# asm 1: movq c4=int64#12 +# asm 2: movq c4=%r14 +movq 24(%rsp),%r14 + +# qhasm: c5 =c5_stack +# asm 1: movq c5=int64#13 +# asm 2: movq c5=%r15 +movq 32(%rsp),%r15 + +# qhasm: c6 =c6_stack +# asm 1: movq c6=int64#14 +# asm 2: movq c6=%rbx +movq 40(%rsp),%rbx + +# qhasm: c7 =c7_stack +# asm 1: movq c7=int64#15 +# asm 2: movq c7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_neg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_neg.c new file mode 100644 index 0000000000..ffc266d927 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_neg.c @@ -0,0 +1,12 @@ +// linker define fe25519_neg +// linker use fe25519_setint +// linker use fe25519_sub + +#include "fe25519.h" + +void fe25519_neg(fe25519 *r, const fe25519 *x) +{ + fe25519 t; + fe25519_setint(&t,0); + fe25519_sub(r,&t,x); +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_nsquare.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_nsquare.S new file mode 100644 index 0000000000..19999b5f23 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_nsquare.S @@ -0,0 +1,765 @@ +// linker define fe25519_nsquare +// linker use REDMASK51 + +# qhasm: int64 rp + +# qhasm: int64 n + +# qhasm: input rp + +# qhasm: input n + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 r4 + +# qhasm: int64 c1 + +# qhasm: int64 c2 + +# qhasm: int64 c3 + +# qhasm: int64 c4 + +# qhasm: int64 c5 + +# qhasm: int64 c6 + +# qhasm: int64 c7 + +# qhasm: caller c1 + +# qhasm: caller c2 + +# qhasm: caller c3 + +# qhasm: caller c4 + +# qhasm: caller c5 + +# qhasm: caller c6 + +# qhasm: caller c7 + +# qhasm: stack64 c1_stack + +# qhasm: stack64 c2_stack + +# qhasm: stack64 c3_stack + +# qhasm: stack64 c4_stack + +# qhasm: stack64 c5_stack + +# qhasm: stack64 c6_stack + +# qhasm: stack64 c7_stack + +# qhasm: stack64 x119_stack + +# qhasm: stack64 x219_stack + +# qhasm: stack64 x319_stack + +# qhasm: stack64 x419_stack + +# qhasm: int64 squarer01 + +# qhasm: int64 squarer11 + +# qhasm: int64 squarer21 + +# qhasm: int64 squarer31 + +# qhasm: int64 squarer41 + +# qhasm: int64 squarerax + +# qhasm: int64 squarerdx + +# qhasm: int64 squaret + +# qhasm: int64 squareredmask + +# qhasm: stack64 n_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +_CRYPTO_SHARED_NAMESPACE(fe25519_nsquare): +CRYPTO_SHARED_NAMESPACE(fe25519_nsquare): +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp + +# qhasm: c1_stack = c1 +# asm 1: movq c1_stack=stack64#1 +# asm 2: movq c1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: c2_stack = c2 +# asm 1: movq c2_stack=stack64#2 +# asm 2: movq c2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: c3_stack = c3 +# asm 1: movq c3_stack=stack64#3 +# asm 2: movq c3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: c4_stack = c4 +# asm 1: movq c4_stack=stack64#4 +# asm 2: movq c4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: c5_stack = c5 +# asm 1: movq c5_stack=stack64#5 +# asm 2: movq c5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: c6_stack = c6 +# asm 1: movq c6_stack=stack64#6 +# asm 2: movq c6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: c7_stack = c7 +# asm 1: movq c7_stack=stack64#7 +# asm 2: movq c7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: loop: +._loop: + +# qhasm: squarerax = *(uint64 *)(rp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(rp + 0) +# asm 1: mulq 0(r0=int64#4 +# asm 2: mov r0=%rcx +mov %rax,%rcx + +# qhasm: squarer01 = squarerdx +# asm 1: mov squarer01=int64#5 +# asm 2: mov squarer01=%r8 +mov %rdx,%r8 + +# qhasm: squarerax = *(uint64 *)(rp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,r1=int64#6 +# asm 2: mov r1=%r9 +mov %rax,%r9 + +# qhasm: squarer11 = squarerdx +# asm 1: mov squarer11=int64#8 +# asm 2: mov squarer11=%r10 +mov %rdx,%r10 + +# qhasm: squarerax = *(uint64 *)(rp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,r2=int64#9 +# asm 2: mov r2=%r11 +mov %rax,%r11 + +# qhasm: squarer21 = squarerdx +# asm 1: mov squarer21=int64#10 +# asm 2: mov squarer21=%r12 +mov %rdx,%r12 + +# qhasm: squarerax = *(uint64 *)(rp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,r3=int64#11 +# asm 2: mov r3=%r13 +mov %rax,%r13 + +# qhasm: squarer31 = squarerdx +# asm 1: mov squarer31=int64#12 +# asm 2: mov squarer31=%r14 +mov %rdx,%r14 + +# qhasm: squarerax = *(uint64 *)(rp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,r4=int64#13 +# asm 2: mov r4=%r15 +mov %rax,%r15 + +# qhasm: squarer41 = squarerdx +# asm 1: mov squarer41=int64#14 +# asm 2: mov squarer41=%rbx +mov %rdx,%rbx + +# qhasm: squarerax = *(uint64 *)(rp + 8) +# asm 1: movq 8(squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(rp + 8) +# asm 1: mulq 8(squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#3 +# asm 2: movq 8(squarerax=%rdx +movq 8(%rdi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(rp + 32) +# asm 1: mulq 32(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(rp + 16) +# asm 1: mulq 16(squarerax=int64#3 +# asm 2: movq 16(squarerax=%rdx +movq 16(%rdi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(rp + 24) +# asm 1: mulq 24(squarerax=int64#3 +# asm 2: movq 16(squarerax=%rdx +movq 16(%rdi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(rp + 32) +# asm 1: mulq 32(squarerax=int64#3 +# asm 2: movq 24(squarerax=%rdx +movq 24(%rdi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(rp + 24) +# asm 1: mulq 24(squarerax=int64#3 +# asm 2: movq 24(squarerax=%rdx +movq 24(%rdi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(rp + 32) +# asm 1: mulq 32(squarerax=int64#3 +# asm 2: movq 32(squarerax=%rdx +movq 32(%rdi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(rp + 32) +# asm 1: mulq 32(squareredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>squareredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: squarer01 = (squarer01.r0) << 13 +# asm 1: shld $13,squarer41=int64#5 +# asm 2: imulq $19,squarer41=%r8 +imulq $19,%rbx,%r8 + +# qhasm: r0 += squarer41 +# asm 1: add squaret=int64#5 +# asm 2: mov squaret=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r1=int64#6 +# asm 2: mov r1=%r9 +mov %r8,%r9 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r2=int64#7 +# asm 2: mov r2=%rax +mov %r8,%rax + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r3=int64#8 +# asm 2: mov r3=%r10 +mov %r8,%r10 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r4=int64#9 +# asm 2: mov r4=%r11 +mov %r8,%r11 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,squaret=int64#5 +# asm 2: imulq $19,squaret=%r8 +imulq $19,%r8,%r8 + +# qhasm: r0 += squaret +# asm 1: add ? n -= 1 +# asm 1: sub $1, +jg ._loop + +# qhasm: c1 =c1_stack +# asm 1: movq c1=int64#9 +# asm 2: movq c1=%r11 +movq 0(%rsp),%r11 + +# qhasm: c2 =c2_stack +# asm 1: movq c2=int64#10 +# asm 2: movq c2=%r12 +movq 8(%rsp),%r12 + +# qhasm: c3 =c3_stack +# asm 1: movq c3=int64#11 +# asm 2: movq c3=%r13 +movq 16(%rsp),%r13 + +# qhasm: c4 =c4_stack +# asm 1: movq c4=int64#12 +# asm 2: movq c4=%r14 +movq 24(%rsp),%r14 + +# qhasm: c5 =c5_stack +# asm 1: movq c5=int64#13 +# asm 2: movq c5=%r15 +movq 32(%rsp),%r15 + +# qhasm: c6 =c6_stack +# asm 1: movq c6=int64#14 +# asm 2: movq c6=%rbx +movq 40(%rsp),%rbx + +# qhasm: c7 =c7_stack +# asm 1: movq c7=int64#15 +# asm 2: movq c7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_pack.c new file mode 100644 index 0000000000..7bb0753f1e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_pack.c @@ -0,0 +1,52 @@ +// linker define fe25519_pack +// linker use fe25519_freeze + +#include "fe25519.h" + +/* Assumes input x being reduced below 2^255 */ +void fe25519_pack(unsigned char r[32], const fe25519 *x) +{ + fe25519 t; + t = *x; + fe25519_freeze(&t); + r[0] = (unsigned char) ( t.v[0] & 0xff); + r[1] = (unsigned char) ((t.v[0] >> 8) & 0xff); + r[2] = (unsigned char) ((t.v[0] >> 16) & 0xff); + r[3] = (unsigned char) ((t.v[0] >> 24) & 0xff); + r[4] = (unsigned char) ((t.v[0] >> 32) & 0xff); + r[5] = (unsigned char) ((t.v[0] >> 40) & 0xff); + r[6] = (unsigned char) ((t.v[0] >> 48)); + + r[6] ^= (unsigned char) ((t.v[1] << 3) & 0xf8); + r[7] = (unsigned char) ((t.v[1] >> 5) & 0xff); + r[8] = (unsigned char) ((t.v[1] >> 13) & 0xff); + r[9] = (unsigned char) ((t.v[1] >> 21) & 0xff); + r[10] = (unsigned char) ((t.v[1] >> 29) & 0xff); + r[11] = (unsigned char) ((t.v[1] >> 37) & 0xff); + r[12] = (unsigned char) ((t.v[1] >> 45)); + + r[12] ^= (unsigned char) ((t.v[2] << 6) & 0xc0); + r[13] = (unsigned char) ((t.v[2] >> 2) & 0xff); + r[14] = (unsigned char) ((t.v[2] >> 10) & 0xff); + r[15] = (unsigned char) ((t.v[2] >> 18) & 0xff); + r[16] = (unsigned char) ((t.v[2] >> 26) & 0xff); + r[17] = (unsigned char) ((t.v[2] >> 34) & 0xff); + r[18] = (unsigned char) ((t.v[2] >> 42) & 0xff); + r[19] = (unsigned char) ((t.v[2] >> 50)); + + r[19] ^= (unsigned char) ((t.v[3] << 1) & 0xfe); + r[20] = (unsigned char) ((t.v[3] >> 7) & 0xff); + r[21] = (unsigned char) ((t.v[3] >> 15) & 0xff); + r[22] = (unsigned char) ((t.v[3] >> 23) & 0xff); + r[23] = (unsigned char) ((t.v[3] >> 31) & 0xff); + r[24] = (unsigned char) ((t.v[3] >> 39) & 0xff); + r[25] = (unsigned char) ((t.v[3] >> 47)); + + r[25] ^= (unsigned char) ((t.v[4] << 4) & 0xf0); + r[26] = (unsigned char) ((t.v[4] >> 4) & 0xff); + r[27] = (unsigned char) ((t.v[4] >> 12) & 0xff); + r[28] = (unsigned char) ((t.v[4] >> 20) & 0xff); + r[29] = (unsigned char) ((t.v[4] >> 28) & 0xff); + r[30] = (unsigned char) ((t.v[4] >> 36) & 0xff); + r[31] = (unsigned char) ((t.v[4] >> 44)); +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_pow2523.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_pow2523.c new file mode 100644 index 0000000000..596c1dcdac --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_pow2523.c @@ -0,0 +1,59 @@ +// linker define fe25519_pow2523 +// linker use fe25519_mul +// linker use fe25519_square +// linker use fe25519_nsquare + +#include "fe25519.h" + +void fe25519_pow2523(fe25519 *r, const fe25519 *x) +{ + fe25519 z2; + fe25519 z9; + fe25519 z11; + fe25519 z2_5_0; + fe25519 z2_10_0; + fe25519 z2_20_0; + fe25519 z2_50_0; + fe25519 z2_100_0; + fe25519 t; + + /* 2 */ fe25519_square(&z2,x); + /* 4 */ fe25519_square(&t,&z2); + /* 8 */ fe25519_square(&t,&t); + /* 9 */ fe25519_mul(&z9,&t,x); + /* 11 */ fe25519_mul(&z11,&z9,&z2); + /* 22 */ fe25519_square(&t,&z11); + /* 2^5 - 2^0 = 31 */ fe25519_mul(&z2_5_0,&t,&z9); + + /* 2^6 - 2^1 */ fe25519_square(&t,&z2_5_0); + /* 2^10 - 2^5 */ fe25519_nsquare(&t,4); + /* 2^10 - 2^0 */ fe25519_mul(&z2_10_0,&t,&z2_5_0); + + /* 2^11 - 2^1 */ fe25519_square(&t,&z2_10_0); + /* 2^20 - 2^10 */ fe25519_nsquare(&t,9); + /* 2^20 - 2^0 */ fe25519_mul(&z2_20_0,&t,&z2_10_0); + + /* 2^21 - 2^1 */ fe25519_square(&t,&z2_20_0); + /* 2^40 - 2^20 */ fe25519_nsquare(&t,19); + /* 2^40 - 2^0 */ fe25519_mul(&t,&t,&z2_20_0); + + /* 2^41 - 2^1 */ fe25519_square(&t,&t); + /* 2^50 - 2^10 */ fe25519_nsquare(&t,9); + /* 2^50 - 2^0 */ fe25519_mul(&z2_50_0,&t,&z2_10_0); + + /* 2^51 - 2^1 */ fe25519_square(&t,&z2_50_0); + /* 2^100 - 2^50 */ fe25519_nsquare(&t,49); + /* 2^100 - 2^0 */ fe25519_mul(&z2_100_0,&t,&z2_50_0); + + /* 2^101 - 2^1 */ fe25519_square(&t,&z2_100_0); + /* 2^200 - 2^100 */ fe25519_nsquare(&t,99); + /* 2^200 - 2^0 */ fe25519_mul(&t,&t,&z2_100_0); + + /* 2^201 - 2^1 */ fe25519_square(&t,&t); + /* 2^250 - 2^50 */ fe25519_nsquare(&t,49); + /* 2^250 - 2^0 */ fe25519_mul(&t,&t,&z2_50_0); + + /* 2^251 - 2^1 */ fe25519_square(&t,&t); + /* 2^252 - 2^2 */ fe25519_square(&t,&t); + /* 2^252 - 3 */ fe25519_mul(r,&t,x); +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_setint.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_setint.c new file mode 100644 index 0000000000..ca67dc7f52 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_setint.c @@ -0,0 +1,12 @@ +// linker define fe25519_setint + +#include "fe25519.h" + +void fe25519_setint(fe25519 *r, unsigned int v) +{ + r->v[0] = v; + r->v[1] = 0; + r->v[2] = 0; + r->v[3] = 0; + r->v[4] = 0; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_square.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_square.S new file mode 100644 index 0000000000..c769f3e8bf --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_square.S @@ -0,0 +1,751 @@ +// linker define fe25519_square +// linker use REDMASK51 + +# qhasm: int64 rp + +# qhasm: int64 xp + +# qhasm: input rp + +# qhasm: input xp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 r4 + +# qhasm: int64 c1 + +# qhasm: int64 c2 + +# qhasm: int64 c3 + +# qhasm: int64 c4 + +# qhasm: int64 c5 + +# qhasm: int64 c6 + +# qhasm: int64 c7 + +# qhasm: caller c1 + +# qhasm: caller c2 + +# qhasm: caller c3 + +# qhasm: caller c4 + +# qhasm: caller c5 + +# qhasm: caller c6 + +# qhasm: caller c7 + +# qhasm: stack64 c1_stack + +# qhasm: stack64 c2_stack + +# qhasm: stack64 c3_stack + +# qhasm: stack64 c4_stack + +# qhasm: stack64 c5_stack + +# qhasm: stack64 c6_stack + +# qhasm: stack64 c7_stack + +# qhasm: stack64 x119_stack + +# qhasm: stack64 x219_stack + +# qhasm: stack64 x319_stack + +# qhasm: stack64 x419_stack + +# qhasm: int64 squarer01 + +# qhasm: int64 squarer11 + +# qhasm: int64 squarer21 + +# qhasm: int64 squarer31 + +# qhasm: int64 squarer41 + +# qhasm: int64 squarerax + +# qhasm: int64 squarerdx + +# qhasm: int64 squaret + +# qhasm: int64 squareredmask + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(fe25519_square) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_square) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_square) +_CRYPTO_SHARED_NAMESPACE(fe25519_square): +CRYPTO_SHARED_NAMESPACE(fe25519_square): +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp + +# qhasm: c1_stack = c1 +# asm 1: movq c1_stack=stack64#1 +# asm 2: movq c1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: c2_stack = c2 +# asm 1: movq c2_stack=stack64#2 +# asm 2: movq c2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: c3_stack = c3 +# asm 1: movq c3_stack=stack64#3 +# asm 2: movq c3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: c4_stack = c4 +# asm 1: movq c4_stack=stack64#4 +# asm 2: movq c4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: c5_stack = c5 +# asm 1: movq c5_stack=stack64#5 +# asm 2: movq c5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: c6_stack = c6 +# asm 1: movq c6_stack=stack64#6 +# asm 2: movq c6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: c7_stack = c7 +# asm 1: movq c7_stack=stack64#7 +# asm 2: movq c7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: squarerax = *(uint64 *)(xp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 0) +# asm 1: mulq 0(r0=int64#4 +# asm 2: mov r0=%rcx +mov %rax,%rcx + +# qhasm: squarer01 = squarerdx +# asm 1: mov squarer01=int64#5 +# asm 2: mov squarer01=%r8 +mov %rdx,%r8 + +# qhasm: squarerax = *(uint64 *)(xp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,r1=int64#6 +# asm 2: mov r1=%r9 +mov %rax,%r9 + +# qhasm: squarer11 = squarerdx +# asm 1: mov squarer11=int64#8 +# asm 2: mov squarer11=%r10 +mov %rdx,%r10 + +# qhasm: squarerax = *(uint64 *)(xp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,r2=int64#9 +# asm 2: mov r2=%r11 +mov %rax,%r11 + +# qhasm: squarer21 = squarerdx +# asm 1: mov squarer21=int64#10 +# asm 2: mov squarer21=%r12 +mov %rdx,%r12 + +# qhasm: squarerax = *(uint64 *)(xp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,r3=int64#11 +# asm 2: mov r3=%r13 +mov %rax,%r13 + +# qhasm: squarer31 = squarerdx +# asm 1: mov squarer31=int64#12 +# asm 2: mov squarer31=%r14 +mov %rdx,%r14 + +# qhasm: squarerax = *(uint64 *)(xp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,r4=int64#13 +# asm 2: mov r4=%r15 +mov %rax,%r15 + +# qhasm: squarer41 = squarerdx +# asm 1: mov squarer41=int64#14 +# asm 2: mov squarer41=%rbx +mov %rdx,%rbx + +# qhasm: squarerax = *(uint64 *)(xp + 8) +# asm 1: movq 8(squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 8) +# asm 1: mulq 8(squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#3 +# asm 2: movq 8(squarerax=%rdx +movq 8(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 32) +# asm 1: mulq 32(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 16) +# asm 1: mulq 16(squarerax=int64#3 +# asm 2: movq 16(squarerax=%rdx +movq 16(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 24) +# asm 1: mulq 24(squarerax=int64#3 +# asm 2: movq 16(squarerax=%rdx +movq 16(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 32) +# asm 1: mulq 32(squarerax=int64#3 +# asm 2: movq 24(squarerax=%rdx +movq 24(%rsi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 24) +# asm 1: mulq 24(squarerax=int64#3 +# asm 2: movq 24(squarerax=%rdx +movq 24(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 32) +# asm 1: mulq 32(squarerax=int64#3 +# asm 2: movq 32(squarerax=%rdx +movq 32(%rsi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 32) +# asm 1: mulq 32(squareredmask=int64#2 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>squareredmask=%rsi +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rsi + +# qhasm: squarer01 = (squarer01.r0) << 13 +# asm 1: shld $13,squarer41=int64#3 +# asm 2: imulq $19,squarer41=%rdx +imulq $19,%rbx,%rdx + +# qhasm: r0 += squarer41 +# asm 1: add squaret=int64#3 +# asm 2: mov squaret=%rdx +mov %rcx,%rdx + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r1=int64#5 +# asm 2: mov r1=%r8 +mov %rdx,%r8 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r2=int64#6 +# asm 2: mov r2=%r9 +mov %rdx,%r9 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r3=int64#7 +# asm 2: mov r3=%rax +mov %rdx,%rax + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r4=int64#8 +# asm 2: mov r4=%r10 +mov %rdx,%r10 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,squaret=int64#3 +# asm 2: imulq $19,squaret=%rdx +imulq $19,%rdx,%rdx + +# qhasm: r0 += squaret +# asm 1: add c1=int64#9 +# asm 2: movq c1=%r11 +movq 0(%rsp),%r11 + +# qhasm: c2 =c2_stack +# asm 1: movq c2=int64#10 +# asm 2: movq c2=%r12 +movq 8(%rsp),%r12 + +# qhasm: c3 =c3_stack +# asm 1: movq c3=int64#11 +# asm 2: movq c3=%r13 +movq 16(%rsp),%r13 + +# qhasm: c4 =c4_stack +# asm 1: movq c4=int64#12 +# asm 2: movq c4=%r14 +movq 24(%rsp),%r14 + +# qhasm: c5 =c5_stack +# asm 1: movq c5=int64#13 +# asm 2: movq c5=%r15 +movq 32(%rsp),%r15 + +# qhasm: c6 =c6_stack +# asm 1: movq c6=int64#14 +# asm 2: movq c6=%rbx +movq 40(%rsp),%rbx + +# qhasm: c7 =c7_stack +# asm 1: movq c7=int64#15 +# asm 2: movq c7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_sub.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_sub.c new file mode 100644 index 0000000000..b8526cb697 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_sub.c @@ -0,0 +1,36 @@ +// linker define fe25519_sub + +#include "fe25519.h" + +void fe25519_sub(fe25519 *r, const fe25519 *x, const fe25519 *y) +{ + fe25519 yt = *y; + /* Not required for reduced input */ + + unsigned long long t; + t = yt.v[0] >> 51; + yt.v[0] &= 2251799813685247; + yt.v[1] += t; + + t = yt.v[1] >> 51; + yt.v[1] &= 2251799813685247; + yt.v[2] += t; + + t = yt.v[2] >> 51; + yt.v[2] &= 2251799813685247; + yt.v[3] += t; + + t = yt.v[3] >> 51; + yt.v[3] &= 2251799813685247; + yt.v[4] += t; + + t = yt.v[4] >> 51; + yt.v[4] &= 2251799813685247; + yt.v[0] += 19*t; + + r->v[0] = x->v[0] + 0xFFFFFFFFFFFDA - yt.v[0]; + r->v[1] = x->v[1] + 0xFFFFFFFFFFFFE - yt.v[1]; + r->v[2] = x->v[2] + 0xFFFFFFFFFFFFE - yt.v[2]; + r->v[3] = x->v[3] + 0xFFFFFFFFFFFFE - yt.v[3]; + r->v[4] = x->v[4] + 0xFFFFFFFFFFFFE - yt.v[4]; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_unpack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_unpack.c new file mode 100644 index 0000000000..cdc3cfaa97 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/fe25519_unpack.c @@ -0,0 +1,48 @@ +// linker define fe25519_unpack + +#include "fe25519.h" + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]) +{ + r->v[0] = x[0]; + r->v[0] += (unsigned long long)x[1] << 8; + r->v[0] += (unsigned long long)x[2] << 16; + r->v[0] += (unsigned long long)x[3] << 24; + r->v[0] += (unsigned long long)x[4] << 32; + r->v[0] += (unsigned long long)x[5] << 40; + r->v[0] += ((unsigned long long)x[6] & 7) << 48; + + r->v[1] = x[6] >> 3; + r->v[1] += (unsigned long long)x[7] << 5; + r->v[1] += (unsigned long long)x[8] << 13; + r->v[1] += (unsigned long long)x[9] << 21; + r->v[1] += (unsigned long long)x[10] << 29; + r->v[1] += (unsigned long long)x[11] << 37; + r->v[1] += ((unsigned long long)x[12] & 63) << 45; + + r->v[2] = x[12] >> 6; + r->v[2] += (unsigned long long)x[13] << 2; + r->v[2] += (unsigned long long)x[14] << 10; + r->v[2] += (unsigned long long)x[15] << 18; + r->v[2] += (unsigned long long)x[16] << 26; + r->v[2] += (unsigned long long)x[17] << 34; + r->v[2] += (unsigned long long)x[18] << 42; + r->v[2] += ((unsigned long long)x[19] & 1) << 50; + + r->v[3] = x[19] >> 1; + r->v[3] += (unsigned long long)x[20] << 7; + r->v[3] += (unsigned long long)x[21] << 15; + r->v[3] += (unsigned long long)x[22] << 23; + r->v[3] += (unsigned long long)x[23] << 31; + r->v[3] += (unsigned long long)x[24] << 39; + r->v[3] += ((unsigned long long)x[25] & 15) << 47; + + r->v[4] = x[25] >> 4; + r->v[4] += (unsigned long long)x[26] << 4; + r->v[4] += (unsigned long long)x[27] << 12; + r->v[4] += (unsigned long long)x[28] << 20; + r->v[4] += (unsigned long long)x[29] << 28; + r->v[4] += (unsigned long long)x[30] << 36; + r->v[4] += ((unsigned long long)x[31] & 127) << 44; +} + diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519.h new file mode 100644 index 0000000000..a265fffc55 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519.h @@ -0,0 +1,106 @@ +#ifndef GE25519_H +#define GE25519_H + +/* + * Arithmetic on the twisted Edwards curve -x^2 + y^2 = 1 + dx^2y^2 + * with d = -(121665/121666) = + * 37095705934669439343138083508754565189542113879843219016388785533085940283555 + * Base point: + * (15112221349535400772501151409588531511454012693041857206046113283949847762202,46316835694926478169428394003475163141307993866256225615783033603165251855960); + */ + +#include "fe25519.h" +#include "sc25519.h" + +#define ge25519 CRYPTO_NAMESPACE(ge25519) +#define ge25519_base CRYPTO_NAMESPACE(ge25519_base) +#define ge25519_unpackneg_vartime CRYPTO_NAMESPACE(unpackneg_vartime) +#define ge25519_pack CRYPTO_NAMESPACE(ge25519_pack) +#define ge25519_isneutral_vartime CRYPTO_NAMESPACE(isneutral_vartime) +#define ge25519_add CRYPTO_NAMESPACE(ge25519_add) +#define ge25519_double CRYPTO_NAMESPACE(ge25519_double) +#define ge25519_double_scalarmult_vartime CRYPTO_NAMESPACE(double_scalarmult_vartime) +#define ge25519_multi_scalarmult_vartime CRYPTO_NAMESPACE(ge25519_multi_scalarmult_vartime) +#define ge25519_scalarmult_base CRYPTO_NAMESPACE(ge25519_scalarmult_base) +#define ge25519_p1p1_to_p2 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2) +#define ge25519_p1p1_to_p3 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3) +#define ge25519_p1p1_to_pniels CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_pniels) +#define ge25519_add_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_add_p1p1) +#define ge25519_dbl_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1) +#define choose_t CRYPTO_SHARED_NAMESPACE(choose_t) +#define choose_t_smultq CRYPTO_NAMESPACE(choose_t_smultq) +#define ge25519_nielsadd2 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2) +#define ge25519_nielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1) +#define ge25519_pnielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1) + +#define ge25519_p3 ge25519 + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; + fe25519 t; +} ge25519; + +typedef struct +{ + fe25519 x; + fe25519 z; + fe25519 y; + fe25519 t; +} ge25519_p1p1; + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; +} ge25519_p2; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 t2d; +} ge25519_niels; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 z; + fe25519 t2d; +} ge25519_pniels; + +extern void ge25519_p1p1_to_p2(ge25519_p2 *r, const ge25519_p1p1 *p); +extern void ge25519_p1p1_to_p3(ge25519_p3 *r, const ge25519_p1p1 *p); +extern void ge25519_p1p1_to_pniels(ge25519_pniels *r, const ge25519_p1p1 *p); +extern void ge25519_add_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_p3 *q); +extern void ge25519_dbl_p1p1(ge25519_p1p1 *r, const ge25519_p2 *p); +extern void choose_t(ge25519_niels *t, unsigned long long pos, signed long long b, const ge25519_niels *base_multiples); +extern void choose_t_smultq(ge25519_pniels *t, signed long long b, const ge25519_pniels *pre); +extern void ge25519_nielsadd2(ge25519_p3 *r, const ge25519_niels *q); +extern void ge25519_nielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_niels *q); +extern void ge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_pniels *q); + +extern const ge25519 ge25519_base; + +extern int ge25519_unpackneg_vartime(ge25519 *r, const unsigned char p[32]); + +extern void ge25519_pack(unsigned char r[32], const ge25519 *p); + +extern int ge25519_isneutral_vartime(const ge25519 *p); + +extern void ge25519_add(ge25519 *r, const ge25519 *p, const ge25519 *q); + +extern void ge25519_double(ge25519 *r, const ge25519 *p); + +/* computes [s1]p1 + [s2]ge25519_base */ +extern void ge25519_double_scalarmult_vartime(ge25519 *r, const ge25519 *p1, const sc25519 *s1, const sc25519 *s2); + +extern void ge25519_multi_scalarmult_vartime(ge25519 *r, ge25519 *p, sc25519 *s, const unsigned long long npoints); + +extern void ge25519_scalarmult_base(ge25519 *r, const sc25519 *s); + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_base_slide_multiples.data b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_base_slide_multiples.data new file mode 100644 index 0000000000..b0345b6cc0 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_base_slide_multiples.data @@ -0,0 +1,96 @@ +{{{0x00003905d740913e, 0x0000ba2817d673a2, 0x00023e2827f4e67c, 0x000133d2e0c21a34, 0x00044fd2f9298f81}}, + {{0x000493c6f58c3b85, 0x0000df7181c325f7, 0x0000f50b0b3e4cb7, 0x0005329385a44c32, 0x00007cf9d3a33d4b}}, + {{0x00011205877aaa68, 0x000479955893d579, 0x00050d66309b67a0, 0x0002d42d0dbee5ee, 0x0006f117b689f0c6}}}, +{{{0x00011fe8a4fcd265, 0x0007bcb8374faacc, 0x00052f5af4ef4d4f, 0x0005314098f98d10, 0x0002ab91587555bd}}, + {{0x0005b0a84cee9730, 0x00061d10c97155e4, 0x0004059cc8096a10, 0x00047a608da8014f, 0x0007a164e1b9a80f}}, + {{0x0006933f0dd0d889, 0x00044386bb4c4295, 0x0003cb6d3162508c, 0x00026368b872a2c6, 0x0005a2826af12b9b}}}, +{{{0x000182c3a447d6ba, 0x00022964e536eff2, 0x000192821f540053, 0x0002f9f19e788e5c, 0x000154a7e73eb1b5}}, + {{0x0002bc4408a5bb33, 0x000078ebdda05442, 0x0002ffb112354123, 0x000375ee8df5862d, 0x0002945ccf146e20}}, + {{0x0003dbf1812a8285, 0x0000fa17ba3f9797, 0x0006f69cb49c3820, 0x00034d5a0db3858d, 0x00043aabe696b3bb}}}, +{{{0x00072c9aaa3221b1, 0x000267774474f74d, 0x000064b0e9b28085, 0x0003f04ef53b27c9, 0x0001d6edd5d2e531}}, + {{0x00025cd0944ea3bf, 0x00075673b81a4d63, 0x000150b925d1c0d4, 0x00013f38d9294114, 0x000461bea69283c9}}, + {{0x00036dc801b8b3a2, 0x0000e0a7d4935e30, 0x0001deb7cecc0d7d, 0x000053a94e20dd2c, 0x0007a9fbb1c6a0f9}}}, +{{{0x0006217e039d8064, 0x0006dea408337e6d, 0x00057ac112628206, 0x000647cb65e30473, 0x00049c05a51fadc9}}, + {{0x0006678aa6a8632f, 0x0005ea3788d8b365, 0x00021bd6d6994279, 0x0007ace75919e4e3, 0x00034b9ed338add7}}, + {{0x0004e8bf9045af1b, 0x000514e33a45e0d6, 0x0007533c5b8bfe0f, 0x000583557b7e14c9, 0x00073c172021b008}}}, +{{{0x00075b0249864348, 0x00052ee11070262b, 0x000237ae54fb5acd, 0x0003bfd1d03aaab5, 0x00018ab598029d5c}}, + {{0x000700848a802ade, 0x0001e04605c4e5f7, 0x0005c0d01b9767fb, 0x0007d7889f42388b, 0x0004275aae2546d8}}, + {{0x00032cc5fd6089e9, 0x000426505c949b05, 0x00046a18880c7ad2, 0x0004a4221888ccda, 0x0003dc65522b53df}}}, +{{{0x0007013b327fbf93, 0x0001336eeded6a0d, 0x0002b565a2bbf3af, 0x000253ce89591955, 0x0000267882d17602}}, + {{0x0000c222a2007f6d, 0x000356b79bdb77ee, 0x00041ee81efe12ce, 0x000120a9bd07097d, 0x000234fd7eec346f}}, + {{0x0000a119732ea378, 0x00063bf1ba8e2a6c, 0x00069f94cc90df9a, 0x000431d1779bfc48, 0x000497ba6fdaa097}}}, +{{{0x0003cd86468ccf0b, 0x00048553221ac081, 0x0006c9464b4e0a6e, 0x00075fba84180403, 0x00043b5cd4218d05}}, + {{0x0006cc0313cfeaa0, 0x0001a313848da499, 0x0007cb534219230a, 0x00039596dedefd60, 0x00061e22917f12de}}, + {{0x0002762f9bd0b516, 0x0001c6e7fbddcbb3, 0x00075909c3ace2bd, 0x00042101972d3ec9, 0x000511d61210ae4d}}}, +{{{0x000386484420de87, 0x0002d6b25db68102, 0x000650b4962873c0, 0x0004081cfd271394, 0x00071a7fe6fe2482}}, + {{0x000676ef950e9d81, 0x0001b81ae089f258, 0x00063c4922951883, 0x0002f1d54d9b3237, 0x0006d325924ddb85}}, + {{0x000182b8a5c8c854, 0x00073fcbe5406d8e, 0x0005de3430cff451, 0x000554b967ac8c41, 0x0004746c4b6559ee}}}, +{{{0x000546c864741147, 0x0003a1df99092690, 0x0001ca8cc9f4d6bb, 0x00036b7fc9cd3b03, 0x000219663497db5e}}, + {{0x00077b3c6dc69a2b, 0x0004edf13ec2fa6e, 0x0004e85ad77beac8, 0x0007dba2b28e7bda, 0x0005c9a51de34fe9}}, + {{0x0000f1cf79f10e67, 0x00043ccb0a2b7ea2, 0x00005089dfff776a, 0x0001dd84e1d38b88, 0x0004804503c60822}}}, +{{{0x000021d23a36d175, 0x0004fd3373c6476d, 0x00020e291eeed02a, 0x00062f2ecf2e7210, 0x000771e098858de4}}, + {{0x00049ed02ca37fc7, 0x000474c2b5957884, 0x0005b8388e816683, 0x0004b6c454b76be4, 0x000553398a516506}}, + {{0x0002f5d278451edf, 0x000730b133997342, 0x0006965420eb6975, 0x000308a3bfa516cf, 0x0005a5ed1d68ff5a}}}, +{{{0x0005e0c558527359, 0x0003395b73afd75c, 0x000072afa4e4b970, 0x00062214329e0f6d, 0x000019b60135fefd}}, + {{0x0005122afe150e83, 0x0004afc966bb0232, 0x0001c478833c8268, 0x00017839c3fc148f, 0x00044acb897d8bf9}}, + {{0x000068145e134b83, 0x0001e4860982c3cc, 0x000068fb5f13d799, 0x0007c9283744547e, 0x000150c49fde6ad2}}}, +{{{0x0001863c9cdca868, 0x0003770e295a1709, 0x0000d85a3720fd13, 0x0005e0ff1f71ab06, 0x00078a6d7791e05f}}, + {{0x0003f29509471138, 0x000729eeb4ca31cf, 0x00069c22b575bfbc, 0x0004910857bce212, 0x0006b2b5a075bb99}}, + {{0x0007704b47a0b976, 0x0002ae82e91aab17, 0x00050bd6429806cd, 0x00068055158fd8ea, 0x000725c7ffc4ad55}}}, +{{{0x00002bf71cd098c0, 0x00049dabcc6cd230, 0x00040a6533f905b2, 0x000573efac2eb8a4, 0x0004cd54625f855f}}, + {{0x00026715d1cf99b2, 0x0002205441a69c88, 0x000448427dcd4b54, 0x0001d191e88abdc5, 0x000794cc9277cb1f}}, + {{0x0006c426c2ac5053, 0x0005a65ece4b095e, 0x0000c44086f26bb6, 0x0007429568197885, 0x0007008357b6fcc8}}}, +{{{0x00039fbb82584a34, 0x00047a568f257a03, 0x00014d88091ead91, 0x0002145b18b1ce24, 0x00013a92a3669d6d}}, + {{0x0000672738773f01, 0x000752bf799f6171, 0x0006b4a6dae33323, 0x0007b54696ead1dc, 0x00006ef7e9851ad0}}, + {{0x0003771cc0577de5, 0x0003ca06bb8b9952, 0x00000b81c5d50390, 0x00043512340780ec, 0x0003c296ddf8a2af}}}, +{{{0x00034d2ebb1f2541, 0x0000e815b723ff9d, 0x000286b416e25443, 0x0000bdfe38d1bee8, 0x0000a892c7007477}}, + {{0x000515f9d914a713, 0x00073191ff2255d5, 0x00054f5cc2a4bdef, 0x0003dd57fc118bcf, 0x0007a99d393490c7}}, + {{0x0002ed2436bda3e8, 0x00002afd00f291ea, 0x0000be7381dea321, 0x0003e952d4b2b193, 0x000286762d28302f}}}, +{{{0x00058e2bce2ef5bd, 0x00068ce8f78c6f8a, 0x0006ee26e39261b2, 0x00033d0aa50bcf9d, 0x0007686f2a3d6f17}}, + {{0x000036093ce35b25, 0x0003b64d7552e9cf, 0x00071ee0fe0b8460, 0x00069d0660c969e5, 0x00032f1da046a9d9}}, + {{0x000512a66d597c6a, 0x0000609a70a57551, 0x000026c08a3c464c, 0x0004531fc8ee39e1, 0x000561305f8a9ad2}}}, +{{{0x0002cc28e7b0c0d5, 0x00077b60eb8a6ce4, 0x0004042985c277a6, 0x000636657b46d3eb, 0x000030a1aef2c57c}}, + {{0x0004978dec92aed1, 0x000069adae7ca201, 0x00011ee923290f55, 0x00069641898d916c, 0x00000aaec53e35d4}}, + {{0x0001f773003ad2aa, 0x000005642cc10f76, 0x00003b48f82cfca6, 0x0002403c10ee4329, 0x00020be9c1c24065}}}, +{{{0x0000e44ae2025e60, 0x0005f97b9727041c, 0x0005683472c0ecec, 0x000188882eb1ce7c, 0x00069764c545067e}}, + {{0x000387d8249673a6, 0x0005bea8dc927c2a, 0x0005bd8ed5650ef0, 0x0000ef0e3fcd40e1, 0x000750ab3361f0ac}}, + {{0x00023283a2f81037, 0x000477aff97e23d1, 0x0000b8958dbcbb68, 0x0000205b97e8add6, 0x00054f96b3fb7075}}}, +{{{0x0005afc616b11ecd, 0x00039f4aec8f22ef, 0x0003b39e1625d92e, 0x0005f85bd4508873, 0x00078e6839fbe85d}}, + {{0x0005f20429669279, 0x00008fafae4941f5, 0x00015d83c4eb7688, 0x0001cf379eca4146, 0x0003d7fe9c52bb75}}, + {{0x00032df737b8856b, 0x0000608342f14e06, 0x0003967889d74175, 0x0001211907fba550, 0x00070f268f350088}}}, +{{{0x0004112070dcf355, 0x0007dcff9c22e464, 0x00054ada60e03325, 0x00025cd98eef769a, 0x000404e56c039b8c}}, + {{0x00064583b1805f47, 0x00022c1baf832cd0, 0x000132c01bd4d717, 0x0004ecf4c3a75b8f, 0x0007c0d345cfad88}}, + {{0x00071f4b8c78338a, 0x00062cfc16bc2b23, 0x00017cf51280d9aa, 0x0003bbae5e20a95a, 0x00020d754762aaec}}}, +{{{0x0004feb135b9f543, 0x00063bd192ad93ae, 0x00044e2ea612cdf7, 0x000670f4991583ab, 0x00038b8ada8790b4}}, + {{0x0007c36fc73bb758, 0x0004a6c797734bd1, 0x0000ef248ab3950e, 0x00063154c9a53ec8, 0x0002b8f1e46f3cee}}, + {{0x00004a9cdf51f95d, 0x0005d963fbd596b8, 0x00022d9b68ace54a, 0x0004a98e8836c599, 0x000049aeb32ceba1}}}, +{{{0x00067d3c63dcfe7e, 0x000112f0adc81aee, 0x00053df04c827165, 0x0002fe5b33b430f0, 0x00051c665e0c8d62}}, + {{0x00007d0b75fc7931, 0x00016f4ce4ba754a, 0x0005ace4c03fbe49, 0x00027e0ec12a159c, 0x000795ee17530f67}}, + {{0x00025b0a52ecbd81, 0x0005dc0695fce4a9, 0x0003b928c575047d, 0x00023bf3512686e5, 0x0006cd19bf49dc54}}}, +{{{0x0007619052179ca3, 0x0000c16593f0afd0, 0x000265c4795c7428, 0x00031c40515d5442, 0x0007520f3db40b2e}}, + {{0x0006612165afc386, 0x0001171aa36203ff, 0x0002642ea820a8aa, 0x0001f3bb7b313f10, 0x0005e01b3a7429e4}}, + {{0x00050be3d39357a1, 0x0003ab33d294a7b6, 0x0004c479ba59edb3, 0x0004c30d184d326f, 0x00071092c9ccef3c}}}, +{{{0x0000523f0364918c, 0x000687f56d638a7b, 0x00020796928ad013, 0x0005d38405a54f33, 0x0000ea15b03d0257}}, + {{0x0003d8ac74051dcf, 0x00010ab6f543d0ad, 0x0005d0f3ac0fda90, 0x0005ef1d2573e5e4, 0x0004173a5bb7137a}}, + {{0x00056e31f0f9218a, 0x0005635f88e102f8, 0x0002cbc5d969a5b8, 0x000533fbc98b347a, 0x0005fc565614a4e3}}}, +{{{0x0006570dc46d7ae5, 0x00018a9f1b91e26d, 0x000436b6183f42ab, 0x000550acaa4f8198, 0x00062711c414c454}}, + {{0x0002e1e67790988e, 0x0001e38b9ae44912, 0x000648fbb4075654, 0x00028df1d840cd72, 0x0003214c7409d466}}, + {{0x0001827406651770, 0x0004d144f286c265, 0x00017488f0ee9281, 0x00019e6cdb5c760c, 0x0005bea94073ecb8}}}, +{{{0x0005bf0912c89be4, 0x00062fadcaf38c83, 0x00025ec196b3ce2c, 0x00077655ff4f017b, 0x0003aacd5c148f61}}, + {{0x0000ce63f343d2f8, 0x0001e0a87d1e368e, 0x000045edbc019eea, 0x0006979aed28d0d1, 0x0004ad0785944f1b}}, + {{0x00063b34c3318301, 0x0000e0e62d04d0b1, 0x000676a233726701, 0x00029e9a042d9769, 0x0003aff0cb1d9028}}}, +{{{0x0005c7eb3a20405e, 0x0005fdb5aad930f8, 0x0004a757e63b8c47, 0x00028e9492972456, 0x000110e7e86f4cd2}}, + {{0x0006430bf4c53505, 0x000264c3e4507244, 0x00074c9f19a39270, 0x00073f84f799bc47, 0x0002ccf9f732bd99}}, + {{0x0000d89ed603f5e4, 0x00051e1604018af8, 0x0000b8eedc4a2218, 0x00051ba98b9384d0, 0x00005c557e0b9693}}}, +{{{0x0001ce311fc97e6f, 0x0006023f3fb5db1f, 0x0007b49775e8fc98, 0x0003ad70adbf5045, 0x0006e154c178fe98}}, + {{0x0006bbb089c20eb0, 0x0006df41fb0b9eee, 0x00051087ed87e16f, 0x000102db5c9fa731, 0x000289fef0841861}}, + {{0x00016336fed69abf, 0x0004f066b929f9ec, 0x0004e9ff9e6c5b93, 0x00018c89bc4bb2ba, 0x0006afbf642a95ca}}}, +{{{0x0000de0c62f5d2c1, 0x00049601cf734fb5, 0x0006b5c38263f0f6, 0x0004623ef5b56d06, 0x0000db4b851b9503}}, + {{0x00055070f913a8cc, 0x000765619eac2bbc, 0x0003ab5225f47459, 0x00076ced14ab5b48, 0x00012c093cedb801}}, + {{0x00047f9308b8190f, 0x000414235c621f82, 0x00031f5ff41a5a76, 0x0006736773aab96d, 0x00033aa8799c6635}}}, +{{{0x0007f51ebd085cf2, 0x00012cfa67e3f5e1, 0x0001800cf1e3d46a, 0x00054337615ff0a8, 0x000233c6f29e8e21}}, + {{0x0000f588fc156cb1, 0x000363414da4f069, 0x0007296ad9b68aea, 0x0004d3711316ae43, 0x000212cd0c1c8d58}}, + {{0x0004d5107f18c781, 0x00064a4fd3a51a5e, 0x0004f4cd0448bb37, 0x000671d38543151e, 0x0001db7778911914}}}, +{{{0x000352397c6bc26f, 0x00018a7aa0227bbe, 0x0005e68cc1ea5f8b, 0x0006fe3e3a7a1d5f, 0x00031ad97ad26e2a}}, + {{0x00014769dd701ab6, 0x00028339f1b4b667, 0x0004ab214b8ae37b, 0x00025f0aefa0b0fe, 0x0007ae2ca8a017d2}}, + {{0x000017ed0920b962, 0x000187e33b53b6fd, 0x00055829907a1463, 0x000641f248e0a792, 0x0001ed1fc53a6622}}} \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_dbl_p1p1.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_dbl_p1p1.S new file mode 100644 index 0000000000..23720e8824 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_dbl_p1p1.S @@ -0,0 +1,3161 @@ +// linker define ge25519_dbl_p1p1 +// linker use REDMASK51 +// linker use 2P0 +// linker use 2P1234 +// linker use 4P0 +// linker use 4P1234 + +# qhasm: int64 rp + +# qhasm: int64 pp + +# qhasm: input rp + +# qhasm: input pp + +# qhasm: int64 a0 + +# qhasm: int64 a1 + +# qhasm: int64 a2 + +# qhasm: int64 a3 + +# qhasm: int64 a4 + +# qhasm: stack64 a0_stack + +# qhasm: stack64 a1_stack + +# qhasm: stack64 a2_stack + +# qhasm: stack64 a3_stack + +# qhasm: stack64 a4_stack + +# qhasm: int64 b0 + +# qhasm: int64 b1 + +# qhasm: int64 b2 + +# qhasm: int64 b3 + +# qhasm: int64 b4 + +# qhasm: stack64 b0_stack + +# qhasm: stack64 b1_stack + +# qhasm: stack64 b2_stack + +# qhasm: stack64 b3_stack + +# qhasm: stack64 b4_stack + +# qhasm: int64 c0 + +# qhasm: int64 c1 + +# qhasm: int64 c2 + +# qhasm: int64 c3 + +# qhasm: int64 c4 + +# qhasm: stack64 c0_stack + +# qhasm: stack64 c1_stack + +# qhasm: stack64 c2_stack + +# qhasm: stack64 c3_stack + +# qhasm: stack64 c4_stack + +# qhasm: int64 d0 + +# qhasm: int64 d1 + +# qhasm: int64 d2 + +# qhasm: int64 d3 + +# qhasm: int64 d4 + +# qhasm: stack64 d0_stack + +# qhasm: stack64 d1_stack + +# qhasm: stack64 d2_stack + +# qhasm: stack64 d3_stack + +# qhasm: stack64 d4_stack + +# qhasm: int64 e0 + +# qhasm: int64 e1 + +# qhasm: int64 e2 + +# qhasm: int64 e3 + +# qhasm: int64 e4 + +# qhasm: stack64 e0_stack + +# qhasm: stack64 e1_stack + +# qhasm: stack64 e2_stack + +# qhasm: stack64 e3_stack + +# qhasm: stack64 e4_stack + +# qhasm: int64 rx0 + +# qhasm: int64 rx1 + +# qhasm: int64 rx2 + +# qhasm: int64 rx3 + +# qhasm: int64 rx4 + +# qhasm: stack64 rx0_stack + +# qhasm: stack64 rx1_stack + +# qhasm: stack64 rx2_stack + +# qhasm: stack64 rx3_stack + +# qhasm: stack64 rx4_stack + +# qhasm: int64 ry0 + +# qhasm: int64 ry1 + +# qhasm: int64 ry2 + +# qhasm: int64 ry3 + +# qhasm: int64 ry4 + +# qhasm: int64 rz0 + +# qhasm: int64 rz1 + +# qhasm: int64 rz2 + +# qhasm: int64 rz3 + +# qhasm: int64 rz4 + +# qhasm: int64 rt0 + +# qhasm: int64 rt1 + +# qhasm: int64 rt2 + +# qhasm: int64 rt3 + +# qhasm: int64 rt4 + +# qhasm: int64 mulr01 + +# qhasm: int64 mulr11 + +# qhasm: int64 mulr21 + +# qhasm: int64 mulr31 + +# qhasm: int64 mulr41 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mult + +# qhasm: int64 mulredmask + +# qhasm: stack64 mulx219_stack + +# qhasm: stack64 mulx319_stack + +# qhasm: stack64 mulx419_stack + +# qhasm: int64 squarer01 + +# qhasm: int64 squarer11 + +# qhasm: int64 squarer21 + +# qhasm: int64 squarer31 + +# qhasm: int64 squarer41 + +# qhasm: int64 squarerax + +# qhasm: int64 squarerdx + +# qhasm: int64 squaret + +# qhasm: int64 squareredmask + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1) +.globl CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1) +_CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1): +CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1): +mov %rsp,%r11 +and $31,%r11 +add $224,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: squarerax = *(uint64 *)(pp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 0) +# asm 1: mulq 0(a0=int64#4 +# asm 2: mov a0=%rcx +mov %rax,%rcx + +# qhasm: squarer01 = squarerdx +# asm 1: mov squarer01=int64#5 +# asm 2: mov squarer01=%r8 +mov %rdx,%r8 + +# qhasm: squarerax = *(uint64 *)(pp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,a1=int64#6 +# asm 2: mov a1=%r9 +mov %rax,%r9 + +# qhasm: squarer11 = squarerdx +# asm 1: mov squarer11=int64#8 +# asm 2: mov squarer11=%r10 +mov %rdx,%r10 + +# qhasm: squarerax = *(uint64 *)(pp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,a2=int64#9 +# asm 2: mov a2=%r11 +mov %rax,%r11 + +# qhasm: squarer21 = squarerdx +# asm 1: mov squarer21=int64#10 +# asm 2: mov squarer21=%r12 +mov %rdx,%r12 + +# qhasm: squarerax = *(uint64 *)(pp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,a3=int64#11 +# asm 2: mov a3=%r13 +mov %rax,%r13 + +# qhasm: squarer31 = squarerdx +# asm 1: mov squarer31=int64#12 +# asm 2: mov squarer31=%r14 +mov %rdx,%r14 + +# qhasm: squarerax = *(uint64 *)(pp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,a4=int64#13 +# asm 2: mov a4=%r15 +mov %rax,%r15 + +# qhasm: squarer41 = squarerdx +# asm 1: mov squarer41=int64#14 +# asm 2: mov squarer41=%rbx +mov %rdx,%rbx + +# qhasm: squarerax = *(uint64 *)(pp + 8) +# asm 1: movq 8(squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 8) +# asm 1: mulq 8(squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#3 +# asm 2: movq 8(squarerax=%rdx +movq 8(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 32) +# asm 1: mulq 32(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 16) +# asm 1: mulq 16(squarerax=int64#3 +# asm 2: movq 16(squarerax=%rdx +movq 16(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 24) +# asm 1: mulq 24(squarerax=int64#3 +# asm 2: movq 16(squarerax=%rdx +movq 16(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 32) +# asm 1: mulq 32(squarerax=int64#3 +# asm 2: movq 24(squarerax=%rdx +movq 24(%rsi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 24) +# asm 1: mulq 24(squarerax=int64#3 +# asm 2: movq 24(squarerax=%rdx +movq 24(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 32) +# asm 1: mulq 32(squarerax=int64#3 +# asm 2: movq 32(squarerax=%rdx +movq 32(%rsi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 32) +# asm 1: mulq 32(squareredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>squareredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: squarer01 = (squarer01.a0) << 13 +# asm 1: shld $13,squarer41=int64#5 +# asm 2: imulq $19,squarer41=%r8 +imulq $19,%rbx,%r8 + +# qhasm: a0 += squarer41 +# asm 1: add squaret=int64#5 +# asm 2: mov squaret=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,a1=int64#6 +# asm 2: mov a1=%r9 +mov %r8,%r9 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,a2=int64#7 +# asm 2: mov a2=%rax +mov %r8,%rax + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,a3=int64#8 +# asm 2: mov a3=%r10 +mov %r8,%r10 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,a4=int64#9 +# asm 2: mov a4=%r11 +mov %r8,%r11 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,squaret=int64#5 +# asm 2: imulq $19,squaret=%r8 +imulq $19,%r8,%r8 + +# qhasm: a0 += squaret +# asm 1: add a0_stack=stack64#8 +# asm 2: movq a0_stack=56(%rsp) +movq %rcx,56(%rsp) + +# qhasm: a1_stack = a1 +# asm 1: movq a1_stack=stack64#9 +# asm 2: movq a1_stack=64(%rsp) +movq %r9,64(%rsp) + +# qhasm: a2_stack = a2 +# asm 1: movq a2_stack=stack64#10 +# asm 2: movq a2_stack=72(%rsp) +movq %rax,72(%rsp) + +# qhasm: a3_stack = a3 +# asm 1: movq a3_stack=stack64#11 +# asm 2: movq a3_stack=80(%rsp) +movq %r10,80(%rsp) + +# qhasm: a4_stack = a4 +# asm 1: movq a4_stack=stack64#12 +# asm 2: movq a4_stack=88(%rsp) +movq %r11,88(%rsp) + +# qhasm: squarerax = *(uint64 *)(pp + 40) +# asm 1: movq 40(squarerax=int64#7 +# asm 2: movq 40(squarerax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(b0=int64#4 +# asm 2: mov b0=%rcx +mov %rax,%rcx + +# qhasm: squarer01 = squarerdx +# asm 1: mov squarer01=int64#5 +# asm 2: mov squarer01=%r8 +mov %rdx,%r8 + +# qhasm: squarerax = *(uint64 *)(pp + 40) +# asm 1: movq 40(squarerax=int64#7 +# asm 2: movq 40(squarerax=%rax +movq 40(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,b1=int64#6 +# asm 2: mov b1=%r9 +mov %rax,%r9 + +# qhasm: squarer11 = squarerdx +# asm 1: mov squarer11=int64#8 +# asm 2: mov squarer11=%r10 +mov %rdx,%r10 + +# qhasm: squarerax = *(uint64 *)(pp + 40) +# asm 1: movq 40(squarerax=int64#7 +# asm 2: movq 40(squarerax=%rax +movq 40(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,b2=int64#9 +# asm 2: mov b2=%r11 +mov %rax,%r11 + +# qhasm: squarer21 = squarerdx +# asm 1: mov squarer21=int64#10 +# asm 2: mov squarer21=%r12 +mov %rdx,%r12 + +# qhasm: squarerax = *(uint64 *)(pp + 40) +# asm 1: movq 40(squarerax=int64#7 +# asm 2: movq 40(squarerax=%rax +movq 40(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,b3=int64#11 +# asm 2: mov b3=%r13 +mov %rax,%r13 + +# qhasm: squarer31 = squarerdx +# asm 1: mov squarer31=int64#12 +# asm 2: mov squarer31=%r14 +mov %rdx,%r14 + +# qhasm: squarerax = *(uint64 *)(pp + 40) +# asm 1: movq 40(squarerax=int64#7 +# asm 2: movq 40(squarerax=%rax +movq 40(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,b4=int64#13 +# asm 2: mov b4=%r15 +mov %rax,%r15 + +# qhasm: squarer41 = squarerdx +# asm 1: mov squarer41=int64#14 +# asm 2: mov squarer41=%rbx +mov %rdx,%rbx + +# qhasm: squarerax = *(uint64 *)(pp + 48) +# asm 1: movq 48(squarerax=int64#7 +# asm 2: movq 48(squarerax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(squarerax=int64#7 +# asm 2: movq 48(squarerax=%rax +movq 48(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#7 +# asm 2: movq 48(squarerax=%rax +movq 48(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#3 +# asm 2: movq 48(squarerax=%rdx +movq 48(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(squarerax=int64#7 +# asm 2: movq 56(squarerax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(squarerax=int64#3 +# asm 2: movq 56(squarerax=%rdx +movq 56(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(squarerax=int64#3 +# asm 2: movq 56(squarerax=%rdx +movq 56(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(squarerax=int64#3 +# asm 2: movq 64(squarerax=%rdx +movq 64(%rsi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(squarerax=int64#3 +# asm 2: movq 64(squarerax=%rdx +movq 64(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(squarerax=int64#3 +# asm 2: movq 72(squarerax=%rdx +movq 72(%rsi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(squareredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>squareredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: squarer01 = (squarer01.b0) << 13 +# asm 1: shld $13,squarer41=int64#5 +# asm 2: imulq $19,squarer41=%r8 +imulq $19,%rbx,%r8 + +# qhasm: b0 += squarer41 +# asm 1: add squaret=int64#5 +# asm 2: mov squaret=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,b1=int64#6 +# asm 2: mov b1=%r9 +mov %r8,%r9 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,b2=int64#7 +# asm 2: mov b2=%rax +mov %r8,%rax + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,b3=int64#8 +# asm 2: mov b3=%r10 +mov %r8,%r10 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,b4=int64#9 +# asm 2: mov b4=%r11 +mov %r8,%r11 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,squaret=int64#5 +# asm 2: imulq $19,squaret=%r8 +imulq $19,%r8,%r8 + +# qhasm: b0 += squaret +# asm 1: add b0_stack=stack64#13 +# asm 2: movq b0_stack=96(%rsp) +movq %rcx,96(%rsp) + +# qhasm: b1_stack = b1 +# asm 1: movq b1_stack=stack64#14 +# asm 2: movq b1_stack=104(%rsp) +movq %r9,104(%rsp) + +# qhasm: b2_stack = b2 +# asm 1: movq b2_stack=stack64#15 +# asm 2: movq b2_stack=112(%rsp) +movq %rax,112(%rsp) + +# qhasm: b3_stack = b3 +# asm 1: movq b3_stack=stack64#16 +# asm 2: movq b3_stack=120(%rsp) +movq %r10,120(%rsp) + +# qhasm: b4_stack = b4 +# asm 1: movq b4_stack=stack64#17 +# asm 2: movq b4_stack=128(%rsp) +movq %r11,128(%rsp) + +# qhasm: squarerax = *(uint64 *)(pp + 80) +# asm 1: movq 80(squarerax=int64#7 +# asm 2: movq 80(squarerax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 80) +# asm 1: mulq 80(c0=int64#4 +# asm 2: mov c0=%rcx +mov %rax,%rcx + +# qhasm: squarer01 = squarerdx +# asm 1: mov squarer01=int64#5 +# asm 2: mov squarer01=%r8 +mov %rdx,%r8 + +# qhasm: squarerax = *(uint64 *)(pp + 80) +# asm 1: movq 80(squarerax=int64#7 +# asm 2: movq 80(squarerax=%rax +movq 80(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,c1=int64#6 +# asm 2: mov c1=%r9 +mov %rax,%r9 + +# qhasm: squarer11 = squarerdx +# asm 1: mov squarer11=int64#8 +# asm 2: mov squarer11=%r10 +mov %rdx,%r10 + +# qhasm: squarerax = *(uint64 *)(pp + 80) +# asm 1: movq 80(squarerax=int64#7 +# asm 2: movq 80(squarerax=%rax +movq 80(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,c2=int64#9 +# asm 2: mov c2=%r11 +mov %rax,%r11 + +# qhasm: squarer21 = squarerdx +# asm 1: mov squarer21=int64#10 +# asm 2: mov squarer21=%r12 +mov %rdx,%r12 + +# qhasm: squarerax = *(uint64 *)(pp + 80) +# asm 1: movq 80(squarerax=int64#7 +# asm 2: movq 80(squarerax=%rax +movq 80(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,c3=int64#11 +# asm 2: mov c3=%r13 +mov %rax,%r13 + +# qhasm: squarer31 = squarerdx +# asm 1: mov squarer31=int64#12 +# asm 2: mov squarer31=%r14 +mov %rdx,%r14 + +# qhasm: squarerax = *(uint64 *)(pp + 80) +# asm 1: movq 80(squarerax=int64#7 +# asm 2: movq 80(squarerax=%rax +movq 80(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,c4=int64#13 +# asm 2: mov c4=%r15 +mov %rax,%r15 + +# qhasm: squarer41 = squarerdx +# asm 1: mov squarer41=int64#14 +# asm 2: mov squarer41=%rbx +mov %rdx,%rbx + +# qhasm: squarerax = *(uint64 *)(pp + 88) +# asm 1: movq 88(squarerax=int64#7 +# asm 2: movq 88(squarerax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 88) +# asm 1: mulq 88(squarerax=int64#7 +# asm 2: movq 88(squarerax=%rax +movq 88(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#7 +# asm 2: movq 88(squarerax=%rax +movq 88(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#3 +# asm 2: movq 88(squarerax=%rdx +movq 88(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 112) +# asm 1: mulq 112(squarerax=int64#7 +# asm 2: movq 96(squarerax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 96) +# asm 1: mulq 96(squarerax=int64#3 +# asm 2: movq 96(squarerax=%rdx +movq 96(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 104) +# asm 1: mulq 104(squarerax=int64#3 +# asm 2: movq 96(squarerax=%rdx +movq 96(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 112) +# asm 1: mulq 112(squarerax=int64#3 +# asm 2: movq 104(squarerax=%rdx +movq 104(%rsi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 104) +# asm 1: mulq 104(squarerax=int64#3 +# asm 2: movq 104(squarerax=%rdx +movq 104(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 112) +# asm 1: mulq 112(squarerax=int64#3 +# asm 2: movq 112(squarerax=%rdx +movq 112(%rsi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 112) +# asm 1: mulq 112(squareredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>squareredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: squarer01 = (squarer01.c0) << 13 +# asm 1: shld $13,squarer41=int64#5 +# asm 2: imulq $19,squarer41=%r8 +imulq $19,%rbx,%r8 + +# qhasm: c0 += squarer41 +# asm 1: add squaret=int64#5 +# asm 2: mov squaret=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,c1=int64#6 +# asm 2: mov c1=%r9 +mov %r8,%r9 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,c2=int64#7 +# asm 2: mov c2=%rax +mov %r8,%rax + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,c3=int64#8 +# asm 2: mov c3=%r10 +mov %r8,%r10 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,c4=int64#9 +# asm 2: mov c4=%r11 +mov %r8,%r11 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,squaret=int64#5 +# asm 2: imulq $19,squaret=%r8 +imulq $19,%r8,%r8 + +# qhasm: c0 += squaret +# asm 1: add c0_stack=stack64#18 +# asm 2: movq c0_stack=136(%rsp) +movq %rcx,136(%rsp) + +# qhasm: c1_stack = c1 +# asm 1: movq c1_stack=stack64#19 +# asm 2: movq c1_stack=144(%rsp) +movq %r9,144(%rsp) + +# qhasm: c2_stack = c2 +# asm 1: movq c2_stack=stack64#20 +# asm 2: movq c2_stack=152(%rsp) +movq %rax,152(%rsp) + +# qhasm: c3_stack = c3 +# asm 1: movq c3_stack=stack64#21 +# asm 2: movq c3_stack=160(%rsp) +movq %r10,160(%rsp) + +# qhasm: c4_stack = c4 +# asm 1: movq c4_stack=stack64#22 +# asm 2: movq c4_stack=168(%rsp) +movq %r11,168(%rsp) + +# qhasm: d0 = *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: movq CRYPTO_SHARED_NAMESPACE(2P0),>d0=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(2P0),>d0=%rdx +movq CRYPTO_SHARED_NAMESPACE(2P0)(%rip),%rdx + +# qhasm: d1 = *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P1234) +# asm 1: movq CRYPTO_SHARED_NAMESPACE(2P1234),>d1=int64#4 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(2P1234),>d1=%rcx +movq CRYPTO_SHARED_NAMESPACE(2P1234)(%rip),%rcx + +# qhasm: d2 = *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P1234) +# asm 1: movq CRYPTO_SHARED_NAMESPACE(2P1234),>d2=int64#5 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(2P1234),>d2=%r8 +movq CRYPTO_SHARED_NAMESPACE(2P1234)(%rip),%r8 + +# qhasm: d3 = *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P1234) +# asm 1: movq CRYPTO_SHARED_NAMESPACE(2P1234),>d3=int64#6 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(2P1234),>d3=%r9 +movq CRYPTO_SHARED_NAMESPACE(2P1234)(%rip),%r9 + +# qhasm: d4 = *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P1234) +# asm 1: movq CRYPTO_SHARED_NAMESPACE(2P1234),>d4=int64#7 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(2P1234),>d4=%rax +movq CRYPTO_SHARED_NAMESPACE(2P1234)(%rip),%rax + +# qhasm: e0 = d0 +# asm 1: mov e0=int64#8 +# asm 2: mov e0=%r10 +mov %rdx,%r10 + +# qhasm: e1 = d1 +# asm 1: mov e1=int64#9 +# asm 2: mov e1=%r11 +mov %rcx,%r11 + +# qhasm: e2 = d2 +# asm 1: mov e2=int64#10 +# asm 2: mov e2=%r12 +mov %r8,%r12 + +# qhasm: e3 = d3 +# asm 1: mov e3=int64#11 +# asm 2: mov e3=%r13 +mov %r9,%r13 + +# qhasm: e4 = d4 +# asm 1: mov e4=int64#12 +# asm 2: mov e4=%r14 +mov %rax,%r14 + +# qhasm: d0 -= a0_stack +# asm 1: subq d0_stack=stack64#8 +# asm 2: movq d0_stack=56(%rsp) +movq %rdx,56(%rsp) + +# qhasm: d1_stack = d1 +# asm 1: movq d1_stack=stack64#9 +# asm 2: movq d1_stack=64(%rsp) +movq %rcx,64(%rsp) + +# qhasm: d2_stack = d2 +# asm 1: movq d2_stack=stack64#10 +# asm 2: movq d2_stack=72(%rsp) +movq %r8,72(%rsp) + +# qhasm: d3_stack = d3 +# asm 1: movq d3_stack=stack64#11 +# asm 2: movq d3_stack=80(%rsp) +movq %r9,80(%rsp) + +# qhasm: d4_stack = d4 +# asm 1: movq d4_stack=stack64#12 +# asm 2: movq d4_stack=88(%rsp) +movq %rax,88(%rsp) + +# qhasm: e0_stack = e0 +# asm 1: movq e0_stack=stack64#23 +# asm 2: movq e0_stack=176(%rsp) +movq %r10,176(%rsp) + +# qhasm: e1_stack = e1 +# asm 1: movq e1_stack=stack64#24 +# asm 2: movq e1_stack=184(%rsp) +movq %r11,184(%rsp) + +# qhasm: e2_stack = e2 +# asm 1: movq e2_stack=stack64#25 +# asm 2: movq e2_stack=192(%rsp) +movq %r12,192(%rsp) + +# qhasm: e3_stack = e3 +# asm 1: movq e3_stack=stack64#26 +# asm 2: movq e3_stack=200(%rsp) +movq %r13,200(%rsp) + +# qhasm: e4_stack = e4 +# asm 1: movq e4_stack=stack64#27 +# asm 2: movq e4_stack=208(%rsp) +movq %r14,208(%rsp) + +# qhasm: rz0 = d0 +# asm 1: mov rz0=int64#8 +# asm 2: mov rz0=%r10 +mov %rdx,%r10 + +# qhasm: rz1 = d1 +# asm 1: mov rz1=int64#9 +# asm 2: mov rz1=%r11 +mov %rcx,%r11 + +# qhasm: rz2 = d2 +# asm 1: mov rz2=int64#10 +# asm 2: mov rz2=%r12 +mov %r8,%r12 + +# qhasm: rz3 = d3 +# asm 1: mov rz3=int64#11 +# asm 2: mov rz3=%r13 +mov %r9,%r13 + +# qhasm: rz4 = d4 +# asm 1: mov rz4=int64#12 +# asm 2: mov rz4=%r14 +mov %rax,%r14 + +# qhasm: rz0 += b0_stack +# asm 1: addq rx0=int64#3 +# asm 2: movq 0(rx0=%rdx +movq 0(%rsi),%rdx + +# qhasm: rx1 = *(uint64 *)(pp + 8) +# asm 1: movq 8(rx1=int64#4 +# asm 2: movq 8(rx1=%rcx +movq 8(%rsi),%rcx + +# qhasm: rx2 = *(uint64 *)(pp + 16) +# asm 1: movq 16(rx2=int64#5 +# asm 2: movq 16(rx2=%r8 +movq 16(%rsi),%r8 + +# qhasm: rx3 = *(uint64 *)(pp + 24) +# asm 1: movq 24(rx3=int64#6 +# asm 2: movq 24(rx3=%r9 +movq 24(%rsi),%r9 + +# qhasm: rx4 = *(uint64 *)(pp + 32) +# asm 1: movq 32(rx4=int64#7 +# asm 2: movq 32(rx4=%rax +movq 32(%rsi),%rax + +# qhasm: rx0 += *(uint64 *)(pp + 40) +# asm 1: addq 40(rx0_stack=stack64#13 +# asm 2: movq rx0_stack=96(%rsp) +movq %rdx,96(%rsp) + +# qhasm: rx1_stack = rx1 +# asm 1: movq rx1_stack=stack64#14 +# asm 2: movq rx1_stack=104(%rsp) +movq %rcx,104(%rsp) + +# qhasm: rx2_stack = rx2 +# asm 1: movq rx2_stack=stack64#15 +# asm 2: movq rx2_stack=112(%rsp) +movq %r8,112(%rsp) + +# qhasm: rx3_stack = rx3 +# asm 1: movq rx3_stack=stack64#16 +# asm 2: movq rx3_stack=120(%rsp) +movq %r9,120(%rsp) + +# qhasm: rx4_stack = rx4 +# asm 1: movq rx4_stack=stack64#17 +# asm 2: movq rx4_stack=128(%rsp) +movq %rax,128(%rsp) + +# qhasm: squarerax = rx0_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx0_stack +# asm 1: mulq rx0=int64#2 +# asm 2: mov rx0=%rsi +mov %rax,%rsi + +# qhasm: squarer01 = squarerdx +# asm 1: mov squarer01=int64#4 +# asm 2: mov squarer01=%rcx +mov %rdx,%rcx + +# qhasm: squarerax = rx0_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 96(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,rx1=int64#5 +# asm 2: mov rx1=%r8 +mov %rax,%r8 + +# qhasm: squarer11 = squarerdx +# asm 1: mov squarer11=int64#6 +# asm 2: mov squarer11=%r9 +mov %rdx,%r9 + +# qhasm: squarerax = rx0_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 96(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,rx2=int64#8 +# asm 2: mov rx2=%r10 +mov %rax,%r10 + +# qhasm: squarer21 = squarerdx +# asm 1: mov squarer21=int64#9 +# asm 2: mov squarer21=%r11 +mov %rdx,%r11 + +# qhasm: squarerax = rx0_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 96(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,rx3=int64#10 +# asm 2: mov rx3=%r12 +mov %rax,%r12 + +# qhasm: squarer31 = squarerdx +# asm 1: mov squarer31=int64#11 +# asm 2: mov squarer31=%r13 +mov %rdx,%r13 + +# qhasm: squarerax = rx0_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 96(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,rx4=int64#12 +# asm 2: mov rx4=%r14 +mov %rax,%r14 + +# qhasm: squarer41 = squarerdx +# asm 1: mov squarer41=int64#13 +# asm 2: mov squarer41=%r15 +mov %rdx,%r15 + +# qhasm: squarerax = rx1_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx1_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 104(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 104(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 104(%rsp),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx4_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx2_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 112(%rsp),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx3_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 112(%rsp),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx4_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 120(%rsp),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx3_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 120(%rsp),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx4_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 128(%rsp),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx4_stack +# asm 1: mulq squareredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>squareredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: squarer01 = (squarer01.rx0) << 13 +# asm 1: shld $13,squarer41=int64#4 +# asm 2: imulq $19,squarer41=%rcx +imulq $19,%r15,%rcx + +# qhasm: rx0 += squarer41 +# asm 1: add squaret=int64#4 +# asm 2: mov squaret=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,rx1=int64#5 +# asm 2: mov rx1=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,rx2=int64#6 +# asm 2: mov rx2=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,rx3=int64#7 +# asm 2: mov rx3=%rax +mov %rcx,%rax + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,rx4=int64#8 +# asm 2: mov rx4=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,squaret=int64#4 +# asm 2: imulq $19,squaret=%rcx +imulq $19,%rcx,%rcx + +# qhasm: rx0 += squaret +# asm 1: add caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_nielsadd_p1p1.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_nielsadd_p1p1.S new file mode 100644 index 0000000000..80fbfe267b --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_nielsadd_p1p1.S @@ -0,0 +1,3165 @@ +// linker define ge25519_nielsadd_p1p1 +// linker use REDMASK51 +// linker use 2P0 +// linker use 2P1234 + +# qhasm: int64 rp + +# qhasm: int64 pp + +# qhasm: int64 qp + +# qhasm: input rp + +# qhasm: input pp + +# qhasm: input qp + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 a0 + +# qhasm: int64 a1 + +# qhasm: int64 a2 + +# qhasm: int64 a3 + +# qhasm: int64 a4 + +# qhasm: stack64 a0_stack + +# qhasm: stack64 a1_stack + +# qhasm: stack64 a2_stack + +# qhasm: stack64 a3_stack + +# qhasm: stack64 a4_stack + +# qhasm: int64 b0 + +# qhasm: int64 b1 + +# qhasm: int64 b2 + +# qhasm: int64 b3 + +# qhasm: int64 b4 + +# qhasm: stack64 b0_stack + +# qhasm: stack64 b1_stack + +# qhasm: stack64 b2_stack + +# qhasm: stack64 b3_stack + +# qhasm: stack64 b4_stack + +# qhasm: int64 c0 + +# qhasm: int64 c1 + +# qhasm: int64 c2 + +# qhasm: int64 c3 + +# qhasm: int64 c4 + +# qhasm: stack64 c0_stack + +# qhasm: stack64 c1_stack + +# qhasm: stack64 c2_stack + +# qhasm: stack64 c3_stack + +# qhasm: stack64 c4_stack + +# qhasm: int64 d0 + +# qhasm: int64 d1 + +# qhasm: int64 d2 + +# qhasm: int64 d3 + +# qhasm: int64 d4 + +# qhasm: stack64 d0_stack + +# qhasm: stack64 d1_stack + +# qhasm: stack64 d2_stack + +# qhasm: stack64 d3_stack + +# qhasm: stack64 d4_stack + +# qhasm: int64 e0 + +# qhasm: int64 e1 + +# qhasm: int64 e2 + +# qhasm: int64 e3 + +# qhasm: int64 e4 + +# qhasm: stack64 e0_stack + +# qhasm: stack64 e1_stack + +# qhasm: stack64 e2_stack + +# qhasm: stack64 e3_stack + +# qhasm: stack64 e4_stack + +# qhasm: int64 f0 + +# qhasm: int64 f1 + +# qhasm: int64 f2 + +# qhasm: int64 f3 + +# qhasm: int64 f4 + +# qhasm: stack64 f0_stack + +# qhasm: stack64 f1_stack + +# qhasm: stack64 f2_stack + +# qhasm: stack64 f3_stack + +# qhasm: stack64 f4_stack + +# qhasm: int64 g0 + +# qhasm: int64 g1 + +# qhasm: int64 g2 + +# qhasm: int64 g3 + +# qhasm: int64 g4 + +# qhasm: stack64 g0_stack + +# qhasm: stack64 g1_stack + +# qhasm: stack64 g2_stack + +# qhasm: stack64 g3_stack + +# qhasm: stack64 g4_stack + +# qhasm: int64 h0 + +# qhasm: int64 h1 + +# qhasm: int64 h2 + +# qhasm: int64 h3 + +# qhasm: int64 h4 + +# qhasm: stack64 h0_stack + +# qhasm: stack64 h1_stack + +# qhasm: stack64 h2_stack + +# qhasm: stack64 h3_stack + +# qhasm: stack64 h4_stack + +# qhasm: int64 qt0 + +# qhasm: int64 qt1 + +# qhasm: int64 qt2 + +# qhasm: int64 qt3 + +# qhasm: int64 qt4 + +# qhasm: stack64 qt0_stack + +# qhasm: stack64 qt1_stack + +# qhasm: stack64 qt2_stack + +# qhasm: stack64 qt3_stack + +# qhasm: stack64 qt4_stack + +# qhasm: int64 t10 + +# qhasm: int64 t11 + +# qhasm: int64 t12 + +# qhasm: int64 t13 + +# qhasm: int64 t14 + +# qhasm: stack64 t10_stack + +# qhasm: stack64 t11_stack + +# qhasm: stack64 t12_stack + +# qhasm: stack64 t13_stack + +# qhasm: stack64 t14_stack + +# qhasm: int64 t20 + +# qhasm: int64 t21 + +# qhasm: int64 t22 + +# qhasm: int64 t23 + +# qhasm: int64 t24 + +# qhasm: stack64 t20_stack + +# qhasm: stack64 t21_stack + +# qhasm: stack64 t22_stack + +# qhasm: stack64 t23_stack + +# qhasm: stack64 t24_stack + +# qhasm: int64 rx0 + +# qhasm: int64 rx1 + +# qhasm: int64 rx2 + +# qhasm: int64 rx3 + +# qhasm: int64 rx4 + +# qhasm: int64 ry0 + +# qhasm: int64 ry1 + +# qhasm: int64 ry2 + +# qhasm: int64 ry3 + +# qhasm: int64 ry4 + +# qhasm: int64 rz0 + +# qhasm: int64 rz1 + +# qhasm: int64 rz2 + +# qhasm: int64 rz3 + +# qhasm: int64 rz4 + +# qhasm: int64 rt0 + +# qhasm: int64 rt1 + +# qhasm: int64 rt2 + +# qhasm: int64 rt3 + +# qhasm: int64 rt4 + +# qhasm: int64 mulr01 + +# qhasm: int64 mulr11 + +# qhasm: int64 mulr21 + +# qhasm: int64 mulr31 + +# qhasm: int64 mulr41 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mult + +# qhasm: int64 mulredmask + +# qhasm: stack64 mulx219_stack + +# qhasm: stack64 mulx319_stack + +# qhasm: stack64 mulx419_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1) +.globl CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1) +_CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1): +CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1): +mov %rsp,%r11 +and $31,%r11 +add $160,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: qp = qp +# asm 1: mov qp=int64#4 +# asm 2: mov qp=%rcx +mov %rdx,%rcx + +# qhasm: a0 = *(uint64 *)(pp + 40) +# asm 1: movq 40(a0=int64#3 +# asm 2: movq 40(a0=%rdx +movq 40(%rsi),%rdx + +# qhasm: a1 = *(uint64 *)(pp + 48) +# asm 1: movq 48(a1=int64#5 +# asm 2: movq 48(a1=%r8 +movq 48(%rsi),%r8 + +# qhasm: a2 = *(uint64 *)(pp + 56) +# asm 1: movq 56(a2=int64#6 +# asm 2: movq 56(a2=%r9 +movq 56(%rsi),%r9 + +# qhasm: a3 = *(uint64 *)(pp + 64) +# asm 1: movq 64(a3=int64#7 +# asm 2: movq 64(a3=%rax +movq 64(%rsi),%rax + +# qhasm: a4 = *(uint64 *)(pp + 72) +# asm 1: movq 72(a4=int64#8 +# asm 2: movq 72(a4=%r10 +movq 72(%rsi),%r10 + +# qhasm: b0 = a0 +# asm 1: mov b0=int64#9 +# asm 2: mov b0=%r11 +mov %rdx,%r11 + +# qhasm: b1 = a1 +# asm 1: mov b1=int64#10 +# asm 2: mov b1=%r12 +mov %r8,%r12 + +# qhasm: b2 = a2 +# asm 1: mov b2=int64#11 +# asm 2: mov b2=%r13 +mov %r9,%r13 + +# qhasm: b3 = a3 +# asm 1: mov b3=int64#12 +# asm 2: mov b3=%r14 +mov %rax,%r14 + +# qhasm: b4 = a4 +# asm 1: mov b4=int64#13 +# asm 2: mov b4=%r15 +mov %r10,%r15 + +# qhasm: a0 += *(uint64 *) &CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: add CRYPTO_SHARED_NAMESPACE(2P0),a0_stack=stack64#8 +# asm 2: movq a0_stack=56(%rsp) +movq %rdx,56(%rsp) + +# qhasm: a1_stack = a1 +# asm 1: movq a1_stack=stack64#9 +# asm 2: movq a1_stack=64(%rsp) +movq %r8,64(%rsp) + +# qhasm: a2_stack = a2 +# asm 1: movq a2_stack=stack64#10 +# asm 2: movq a2_stack=72(%rsp) +movq %r9,72(%rsp) + +# qhasm: a3_stack = a3 +# asm 1: movq a3_stack=stack64#11 +# asm 2: movq a3_stack=80(%rsp) +movq %rax,80(%rsp) + +# qhasm: a4_stack = a4 +# asm 1: movq a4_stack=stack64#12 +# asm 2: movq a4_stack=88(%rsp) +movq %r10,88(%rsp) + +# qhasm: b0_stack = b0 +# asm 1: movq b0_stack=stack64#13 +# asm 2: movq b0_stack=96(%rsp) +movq %r11,96(%rsp) + +# qhasm: b1_stack = b1 +# asm 1: movq b1_stack=stack64#14 +# asm 2: movq b1_stack=104(%rsp) +movq %r12,104(%rsp) + +# qhasm: b2_stack = b2 +# asm 1: movq b2_stack=stack64#15 +# asm 2: movq b2_stack=112(%rsp) +movq %r13,112(%rsp) + +# qhasm: b3_stack = b3 +# asm 1: movq b3_stack=stack64#16 +# asm 2: movq b3_stack=120(%rsp) +movq %r14,120(%rsp) + +# qhasm: b4_stack = b4 +# asm 1: movq b4_stack=stack64#17 +# asm 2: movq b4_stack=128(%rsp) +movq %r15,128(%rsp) + +# qhasm: mulrax = a3_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 80(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#18 +# asm 2: movq mulx319_stack=136(%rsp) +movq %rax,136(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(a0=int64#5 +# asm 2: mov a0=%r8 +mov %rax,%r8 + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#6 +# asm 2: mov mulr01=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = a4_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 88(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#19 +# asm 2: movq mulx419_stack=144(%rsp) +movq %rax,144(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(a1=int64#8 +# asm 2: mov a1=%r10 +mov %rax,%r10 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#9 +# asm 2: mov mulr11=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = a0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(a2=int64#10 +# asm 2: mov a2=%r12 +mov %rax,%r12 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#11 +# asm 2: mov mulr21=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = a0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(a3=int64#12 +# asm 2: mov a3=%r14 +mov %rax,%r14 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#13 +# asm 2: mov mulr31=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = a0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(a4=int64#14 +# asm 2: mov a4=%rbx +mov %rax,%rbx + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#15 +# asm 2: mov mulr41=%rbp +mov %rdx,%rbp + +# qhasm: mulrax = a1_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 64(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 72(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 72(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 88(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.a0) << 13 +# asm 1: shld $13,mulr41=int64#6 +# asm 2: imulq $19,mulr41=%r9 +imulq $19,%rbp,%r9 + +# qhasm: a0 += mulr41 +# asm 1: add mult=int64#6 +# asm 2: mov mult=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,a1=int64#7 +# asm 2: mov a1=%rax +mov %r9,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,a2=int64#8 +# asm 2: mov a2=%r10 +mov %r9,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,a3=int64#9 +# asm 2: mov a3=%r11 +mov %r9,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,a4=int64#10 +# asm 2: mov a4=%r12 +mov %r9,%r12 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#6 +# asm 2: imulq $19,mult=%r9 +imulq $19,%r9,%r9 + +# qhasm: a0 += mult +# asm 1: add a0_stack=stack64#8 +# asm 2: movq a0_stack=56(%rsp) +movq %r8,56(%rsp) + +# qhasm: a1_stack = a1 +# asm 1: movq a1_stack=stack64#9 +# asm 2: movq a1_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: a2_stack = a2 +# asm 1: movq a2_stack=stack64#10 +# asm 2: movq a2_stack=72(%rsp) +movq %r10,72(%rsp) + +# qhasm: a3_stack = a3 +# asm 1: movq a3_stack=stack64#11 +# asm 2: movq a3_stack=80(%rsp) +movq %r11,80(%rsp) + +# qhasm: a4_stack = a4 +# asm 1: movq a4_stack=stack64#12 +# asm 2: movq a4_stack=88(%rsp) +movq %r12,88(%rsp) + +# qhasm: mulrax = b3_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 120(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#18 +# asm 2: movq mulx319_stack=136(%rsp) +movq %rax,136(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(e0=int64#5 +# asm 2: mov e0=%r8 +mov %rax,%r8 + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#6 +# asm 2: mov mulr01=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = b4_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 128(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#19 +# asm 2: movq mulx419_stack=144(%rsp) +movq %rax,144(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(e1=int64#8 +# asm 2: mov e1=%r10 +mov %rax,%r10 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#9 +# asm 2: mov mulr11=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = b0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(e2=int64#10 +# asm 2: mov e2=%r12 +mov %rax,%r12 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#11 +# asm 2: mov mulr21=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = b0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(e3=int64#12 +# asm 2: mov e3=%r14 +mov %rax,%r14 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#13 +# asm 2: mov mulr31=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = b0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(e4=int64#14 +# asm 2: mov e4=%rbx +mov %rax,%rbx + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#15 +# asm 2: mov mulr41=%rbp +mov %rdx,%rbp + +# qhasm: mulrax = b1_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 104(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 112(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 112(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 128(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.e0) << 13 +# asm 1: shld $13,mulr41=int64#6 +# asm 2: imulq $19,mulr41=%r9 +imulq $19,%rbp,%r9 + +# qhasm: e0 += mulr41 +# asm 1: add mult=int64#6 +# asm 2: mov mult=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,e1=int64#7 +# asm 2: mov e1=%rax +mov %r9,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,e2=int64#8 +# asm 2: mov e2=%r10 +mov %r9,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,e3=int64#9 +# asm 2: mov e3=%r11 +mov %r9,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,e4=int64#10 +# asm 2: mov e4=%r12 +mov %r9,%r12 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#6 +# asm 2: imulq $19,mult=%r9 +imulq $19,%r9,%r9 + +# qhasm: e0 += mult +# asm 1: add h0=int64#3 +# asm 2: mov h0=%rdx +mov %r8,%rdx + +# qhasm: h1 = e1 +# asm 1: mov h1=int64#6 +# asm 2: mov h1=%r9 +mov %rax,%r9 + +# qhasm: h2 = e2 +# asm 1: mov h2=int64#11 +# asm 2: mov h2=%r13 +mov %r10,%r13 + +# qhasm: h3 = e3 +# asm 1: mov h3=int64#12 +# asm 2: mov h3=%r14 +mov %r11,%r14 + +# qhasm: h4 = e4 +# asm 1: mov h4=int64#13 +# asm 2: mov h4=%r15 +mov %r12,%r15 + +# qhasm: e0 += *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: add CRYPTO_SHARED_NAMESPACE(2P0),mulrax=int64#3 +# asm 2: movq 144(mulrax=%rdx +movq 144(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(c0=int64#5 +# asm 2: mov c0=%r8 +mov %rax,%r8 + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#6 +# asm 2: mov mulr01=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = *(uint64 *)(pp + 152) +# asm 1: movq 152(mulrax=int64#3 +# asm 2: movq 152(mulrax=%rdx +movq 152(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(c1=int64#8 +# asm 2: mov c1=%r10 +mov %rax,%r10 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#9 +# asm 2: mov mulr11=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 120) +# asm 1: movq 120(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(c2=int64#10 +# asm 2: mov c2=%r12 +mov %rax,%r12 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#11 +# asm 2: mov mulr21=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(pp + 120) +# asm 1: movq 120(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(c3=int64#12 +# asm 2: mov c3=%r14 +mov %rax,%r14 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#13 +# asm 2: mov mulr31=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = *(uint64 *)(pp + 120) +# asm 1: movq 120(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(c4=int64#14 +# asm 2: mov c4=%rbx +mov %rax,%rbx + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#15 +# asm 2: mov mulr41=%rbp +mov %rdx,%rbp + +# qhasm: mulrax = *(uint64 *)(pp + 128) +# asm 1: movq 128(mulrax=int64#7 +# asm 2: movq 128(mulrax=%rax +movq 128(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 128(mulrax=%rax +movq 128(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 128(mulrax=%rax +movq 128(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(mulrax=int64#7 +# asm 2: movq 128(mulrax=%rax +movq 128(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(mulrax=int64#3 +# asm 2: movq 128(mulrax=%rdx +movq 128(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 136(mulrax=%rax +movq 136(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 136(mulrax=%rax +movq 136(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 136(mulrax=%rax +movq 136(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(mulrax=int64#3 +# asm 2: movq 136(mulrax=%rdx +movq 136(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(mulrax=int64#3 +# asm 2: movq 136(mulrax=%rdx +movq 136(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 144(mulrax=%rax +movq 144(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 144(mulrax=%rax +movq 144(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 152(mulrax=%rax +movq 152(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.c0) << 13 +# asm 1: shld $13,mulr41=int64#4 +# asm 2: imulq $19,mulr41=%rcx +imulq $19,%rbp,%rcx + +# qhasm: c0 += mulr41 +# asm 1: add mult=int64#4 +# asm 2: mov mult=%rcx +mov %r8,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,c1=int64#6 +# asm 2: mov c1=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,c2=int64#7 +# asm 2: mov c2=%rax +mov %rcx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,c3=int64#8 +# asm 2: mov c3=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,c4=int64#9 +# asm 2: mov c4=%r11 +mov %rcx,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#4 +# asm 2: imulq $19,mult=%rcx +imulq $19,%rcx,%rcx + +# qhasm: c0 += mult +# asm 1: add c0_stack=stack64#8 +# asm 2: movq c0_stack=56(%rsp) +movq %r8,56(%rsp) + +# qhasm: f0 = *(uint64 *)(pp + 80) +# asm 1: movq 80(f0=int64#3 +# asm 2: movq 80(f0=%rdx +movq 80(%rsi),%rdx + +# qhasm: f1 = *(uint64 *)(pp + 88) +# asm 1: movq 88(f1=int64#4 +# asm 2: movq 88(f1=%rcx +movq 88(%rsi),%rcx + +# qhasm: f2 = *(uint64 *)(pp + 96) +# asm 1: movq 96(f2=int64#5 +# asm 2: movq 96(f2=%r8 +movq 96(%rsi),%r8 + +# qhasm: f3 = *(uint64 *)(pp + 104) +# asm 1: movq 104(f3=int64#10 +# asm 2: movq 104(f3=%r12 +movq 104(%rsi),%r12 + +# qhasm: f4 = *(uint64 *)(pp + 112) +# asm 1: movq 112(f4=int64#2 +# asm 2: movq 112(f4=%rsi +movq 112(%rsi),%rsi + +# qhasm: f0 += f0 +# asm 1: add g0=int64#11 +# asm 2: mov g0=%r13 +mov %rdx,%r13 + +# qhasm: g1 = f1 +# asm 1: mov g1=int64#12 +# asm 2: mov g1=%r14 +mov %rcx,%r14 + +# qhasm: g2 = f2 +# asm 1: mov g2=int64#13 +# asm 2: mov g2=%r15 +mov %r8,%r15 + +# qhasm: g3 = f3 +# asm 1: mov g3=int64#14 +# asm 2: mov g3=%rbx +mov %r12,%rbx + +# qhasm: g4 = f4 +# asm 1: mov g4=int64#15 +# asm 2: mov g4=%rbp +mov %rsi,%rbp + +# qhasm: f0 += *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: add CRYPTO_SHARED_NAMESPACE(2P0),caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_p1p1_to_p2.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_p1p1_to_p2.S new file mode 100644 index 0000000000..6e988e843f --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_p1p1_to_p2.S @@ -0,0 +1,2444 @@ +// linker define ge25519_p1p1_to_p2 +// linker use REDMASK51 + +# qhasm: int64 rp + +# qhasm: int64 pp + +# qhasm: input rp + +# qhasm: input pp + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 rx0 + +# qhasm: int64 rx1 + +# qhasm: int64 rx2 + +# qhasm: int64 rx3 + +# qhasm: int64 rx4 + +# qhasm: int64 ry0 + +# qhasm: int64 ry1 + +# qhasm: int64 ry2 + +# qhasm: int64 ry3 + +# qhasm: int64 ry4 + +# qhasm: int64 rz0 + +# qhasm: int64 rz1 + +# qhasm: int64 rz2 + +# qhasm: int64 rz3 + +# qhasm: int64 rz4 + +# qhasm: int64 mulr01 + +# qhasm: int64 mulr11 + +# qhasm: int64 mulr21 + +# qhasm: int64 mulr31 + +# qhasm: int64 mulr41 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mult + +# qhasm: int64 mulredmask + +# qhasm: stack64 mulx219_stack + +# qhasm: stack64 mulx319_stack + +# qhasm: stack64 mulx419_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2) +.globl CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2) +_CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2): +CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2): +mov %rsp,%r11 +and $31,%r11 +add $96,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: mulrax = *(uint64 *)(pp + 24) +# asm 1: movq 24(mulrax=int64#3 +# asm 2: movq 24(mulrax=%rdx +movq 24(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(rx0=int64#4 +# asm 2: mov rx0=%rcx +mov %rax,%rcx + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#5 +# asm 2: mov mulr01=%r8 +mov %rdx,%r8 + +# qhasm: mulrax = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulrax=int64#3 +# asm 2: movq 32(mulrax=%rdx +movq 32(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(rx1=int64#6 +# asm 2: mov rx1=%r9 +mov %rax,%r9 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#8 +# asm 2: mov mulr11=%r10 +mov %rdx,%r10 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(rx2=int64#9 +# asm 2: mov rx2=%r11 +mov %rax,%r11 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#10 +# asm 2: mov mulr21=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(rx3=int64#11 +# asm 2: mov rx3=%r13 +mov %rax,%r13 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#12 +# asm 2: mov mulr31=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(rx4=int64#13 +# asm 2: mov rx4=%r15 +mov %rax,%r15 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#14 +# asm 2: mov mulr41=%rbx +mov %rdx,%rbx + +# qhasm: mulrax = *(uint64 *)(pp + 8) +# asm 1: movq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#3 +# asm 2: movq 8(mulrax=%rdx +movq 8(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.rx0) << 13 +# asm 1: shld $13,mulr41=int64#5 +# asm 2: imulq $19,mulr41=%r8 +imulq $19,%rbx,%r8 + +# qhasm: rx0 += mulr41 +# asm 1: add mult=int64#5 +# asm 2: mov mult=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx1=int64#6 +# asm 2: mov rx1=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx2=int64#7 +# asm 2: mov rx2=%rax +mov %r8,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx3=int64#8 +# asm 2: mov rx3=%r10 +mov %r8,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx4=int64#9 +# asm 2: mov rx4=%r11 +mov %r8,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#5 +# asm 2: imulq $19,mult=%r8 +imulq $19,%r8,%r8 + +# qhasm: rx0 += mult +# asm 1: add mulrax=int64#3 +# asm 2: movq 104(mulrax=%rdx +movq 104(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(ry0=int64#4 +# asm 2: mov ry0=%rcx +mov %rax,%rcx + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#5 +# asm 2: mov mulr01=%r8 +mov %rdx,%r8 + +# qhasm: mulrax = *(uint64 *)(pp + 112) +# asm 1: movq 112(mulrax=int64#3 +# asm 2: movq 112(mulrax=%rdx +movq 112(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(ry1=int64#6 +# asm 2: mov ry1=%r9 +mov %rax,%r9 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#8 +# asm 2: mov mulr11=%r10 +mov %rdx,%r10 + +# qhasm: mulrax = *(uint64 *)(pp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(ry2=int64#9 +# asm 2: mov ry2=%r11 +mov %rax,%r11 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#10 +# asm 2: mov mulr21=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = *(uint64 *)(pp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(ry3=int64#11 +# asm 2: mov ry3=%r13 +mov %rax,%r13 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#12 +# asm 2: mov mulr31=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(pp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(ry4=int64#13 +# asm 2: mov ry4=%r15 +mov %rax,%r15 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#14 +# asm 2: mov mulr41=%rbx +mov %rdx,%rbx + +# qhasm: mulrax = *(uint64 *)(pp + 88) +# asm 1: movq 88(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(mulrax=int64#3 +# asm 2: movq 88(mulrax=%rdx +movq 88(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(mulrax=int64#3 +# asm 2: movq 96(mulrax=%rdx +movq 96(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(mulrax=int64#3 +# asm 2: movq 96(mulrax=%rdx +movq 96(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.ry0) << 13 +# asm 1: shld $13,mulr41=int64#5 +# asm 2: imulq $19,mulr41=%r8 +imulq $19,%rbx,%r8 + +# qhasm: ry0 += mulr41 +# asm 1: add mult=int64#5 +# asm 2: mov mult=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,ry1=int64#6 +# asm 2: mov ry1=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,ry2=int64#7 +# asm 2: mov ry2=%rax +mov %r8,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,ry3=int64#8 +# asm 2: mov ry3=%r10 +mov %r8,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,ry4=int64#9 +# asm 2: mov ry4=%r11 +mov %r8,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#5 +# asm 2: imulq $19,mult=%r8 +imulq $19,%r8,%r8 + +# qhasm: ry0 += mult +# asm 1: add mulrax=int64#3 +# asm 2: movq 64(mulrax=%rdx +movq 64(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(rz0=int64#4 +# asm 2: mov rz0=%rcx +mov %rax,%rcx + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#5 +# asm 2: mov mulr01=%r8 +mov %rdx,%r8 + +# qhasm: mulrax = *(uint64 *)(pp + 72) +# asm 1: movq 72(mulrax=int64#3 +# asm 2: movq 72(mulrax=%rdx +movq 72(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(rz1=int64#6 +# asm 2: mov rz1=%r9 +mov %rax,%r9 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#8 +# asm 2: mov mulr11=%r10 +mov %rdx,%r10 + +# qhasm: mulrax = *(uint64 *)(pp + 40) +# asm 1: movq 40(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(rz2=int64#9 +# asm 2: mov rz2=%r11 +mov %rax,%r11 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#10 +# asm 2: mov mulr21=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = *(uint64 *)(pp + 40) +# asm 1: movq 40(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(rz3=int64#11 +# asm 2: mov rz3=%r13 +mov %rax,%r13 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#12 +# asm 2: mov mulr31=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(pp + 40) +# asm 1: movq 40(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(rz4=int64#13 +# asm 2: mov rz4=%r15 +mov %rax,%r15 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#14 +# asm 2: mov mulr41=%rbx +mov %rdx,%rbx + +# qhasm: mulrax = *(uint64 *)(pp + 48) +# asm 1: movq 48(mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#3 +# asm 2: movq 48(mulrax=%rdx +movq 48(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#3 +# asm 2: movq 56(mulrax=%rdx +movq 56(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#3 +# asm 2: movq 56(mulrax=%rdx +movq 56(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulredmask=int64#2 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rsi +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rsi + +# qhasm: mulr01 = (mulr01.rz0) << 13 +# asm 1: shld $13,mulr41=int64#3 +# asm 2: imulq $19,mulr41=%rdx +imulq $19,%rbx,%rdx + +# qhasm: rz0 += mulr41 +# asm 1: add mult=int64#3 +# asm 2: mov mult=%rdx +mov %rcx,%rdx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz1=int64#5 +# asm 2: mov rz1=%r8 +mov %rdx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz2=int64#6 +# asm 2: mov rz2=%r9 +mov %rdx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz3=int64#7 +# asm 2: mov rz3=%rax +mov %rdx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz4=int64#8 +# asm 2: mov rz4=%r10 +mov %rdx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#3 +# asm 2: imulq $19,mult=%rdx +imulq $19,%rdx,%rdx + +# qhasm: rz0 += mult +# asm 1: add caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_p1p1_to_p3.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_p1p1_to_p3.S new file mode 100644 index 0000000000..3283852aff --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_p1p1_to_p3.S @@ -0,0 +1,3204 @@ +// linker define ge25519_p1p1_to_p3 +// linker use REDMASK51 + +# qhasm: int64 rp + +# qhasm: int64 pp + +# qhasm: input rp + +# qhasm: input pp + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 rx0 + +# qhasm: int64 rx1 + +# qhasm: int64 rx2 + +# qhasm: int64 rx3 + +# qhasm: int64 rx4 + +# qhasm: int64 ry0 + +# qhasm: int64 ry1 + +# qhasm: int64 ry2 + +# qhasm: int64 ry3 + +# qhasm: int64 ry4 + +# qhasm: int64 rz0 + +# qhasm: int64 rz1 + +# qhasm: int64 rz2 + +# qhasm: int64 rz3 + +# qhasm: int64 rz4 + +# qhasm: int64 rt0 + +# qhasm: int64 rt1 + +# qhasm: int64 rt2 + +# qhasm: int64 rt3 + +# qhasm: int64 rt4 + +# qhasm: int64 mulr01 + +# qhasm: int64 mulr11 + +# qhasm: int64 mulr21 + +# qhasm: int64 mulr31 + +# qhasm: int64 mulr41 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mult + +# qhasm: int64 mulredmask + +# qhasm: stack64 mulx219_stack + +# qhasm: stack64 mulx319_stack + +# qhasm: stack64 mulx419_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3) +.globl CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3) +_CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3): +CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3): +mov %rsp,%r11 +and $31,%r11 +add $96,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: mulrax = *(uint64 *)(pp + 24) +# asm 1: movq 24(mulrax=int64#3 +# asm 2: movq 24(mulrax=%rdx +movq 24(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(rx0=int64#4 +# asm 2: mov rx0=%rcx +mov %rax,%rcx + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#5 +# asm 2: mov mulr01=%r8 +mov %rdx,%r8 + +# qhasm: mulrax = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulrax=int64#3 +# asm 2: movq 32(mulrax=%rdx +movq 32(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(rx1=int64#6 +# asm 2: mov rx1=%r9 +mov %rax,%r9 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#8 +# asm 2: mov mulr11=%r10 +mov %rdx,%r10 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(rx2=int64#9 +# asm 2: mov rx2=%r11 +mov %rax,%r11 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#10 +# asm 2: mov mulr21=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(rx3=int64#11 +# asm 2: mov rx3=%r13 +mov %rax,%r13 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#12 +# asm 2: mov mulr31=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(rx4=int64#13 +# asm 2: mov rx4=%r15 +mov %rax,%r15 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#14 +# asm 2: mov mulr41=%rbx +mov %rdx,%rbx + +# qhasm: mulrax = *(uint64 *)(pp + 8) +# asm 1: movq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#3 +# asm 2: movq 8(mulrax=%rdx +movq 8(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.rx0) << 13 +# asm 1: shld $13,mulr41=int64#5 +# asm 2: imulq $19,mulr41=%r8 +imulq $19,%rbx,%r8 + +# qhasm: rx0 += mulr41 +# asm 1: add mult=int64#5 +# asm 2: mov mult=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx1=int64#6 +# asm 2: mov rx1=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx2=int64#7 +# asm 2: mov rx2=%rax +mov %r8,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx3=int64#8 +# asm 2: mov rx3=%r10 +mov %r8,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx4=int64#9 +# asm 2: mov rx4=%r11 +mov %r8,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#5 +# asm 2: imulq $19,mult=%r8 +imulq $19,%r8,%r8 + +# qhasm: rx0 += mult +# asm 1: add mulrax=int64#3 +# asm 2: movq 104(mulrax=%rdx +movq 104(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(ry0=int64#4 +# asm 2: mov ry0=%rcx +mov %rax,%rcx + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#5 +# asm 2: mov mulr01=%r8 +mov %rdx,%r8 + +# qhasm: mulrax = *(uint64 *)(pp + 112) +# asm 1: movq 112(mulrax=int64#3 +# asm 2: movq 112(mulrax=%rdx +movq 112(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(ry1=int64#6 +# asm 2: mov ry1=%r9 +mov %rax,%r9 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#8 +# asm 2: mov mulr11=%r10 +mov %rdx,%r10 + +# qhasm: mulrax = *(uint64 *)(pp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(ry2=int64#9 +# asm 2: mov ry2=%r11 +mov %rax,%r11 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#10 +# asm 2: mov mulr21=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = *(uint64 *)(pp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(ry3=int64#11 +# asm 2: mov ry3=%r13 +mov %rax,%r13 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#12 +# asm 2: mov mulr31=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(pp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(ry4=int64#13 +# asm 2: mov ry4=%r15 +mov %rax,%r15 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#14 +# asm 2: mov mulr41=%rbx +mov %rdx,%rbx + +# qhasm: mulrax = *(uint64 *)(pp + 88) +# asm 1: movq 88(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(mulrax=int64#3 +# asm 2: movq 88(mulrax=%rdx +movq 88(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(mulrax=int64#3 +# asm 2: movq 96(mulrax=%rdx +movq 96(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(mulrax=int64#3 +# asm 2: movq 96(mulrax=%rdx +movq 96(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.ry0) << 13 +# asm 1: shld $13,mulr41=int64#5 +# asm 2: imulq $19,mulr41=%r8 +imulq $19,%rbx,%r8 + +# qhasm: ry0 += mulr41 +# asm 1: add mult=int64#5 +# asm 2: mov mult=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,ry1=int64#6 +# asm 2: mov ry1=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,ry2=int64#7 +# asm 2: mov ry2=%rax +mov %r8,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,ry3=int64#8 +# asm 2: mov ry3=%r10 +mov %r8,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,ry4=int64#9 +# asm 2: mov ry4=%r11 +mov %r8,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#5 +# asm 2: imulq $19,mult=%r8 +imulq $19,%r8,%r8 + +# qhasm: ry0 += mult +# asm 1: add mulrax=int64#3 +# asm 2: movq 64(mulrax=%rdx +movq 64(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(rz0=int64#4 +# asm 2: mov rz0=%rcx +mov %rax,%rcx + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#5 +# asm 2: mov mulr01=%r8 +mov %rdx,%r8 + +# qhasm: mulrax = *(uint64 *)(pp + 72) +# asm 1: movq 72(mulrax=int64#3 +# asm 2: movq 72(mulrax=%rdx +movq 72(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(rz1=int64#6 +# asm 2: mov rz1=%r9 +mov %rax,%r9 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#8 +# asm 2: mov mulr11=%r10 +mov %rdx,%r10 + +# qhasm: mulrax = *(uint64 *)(pp + 40) +# asm 1: movq 40(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(rz2=int64#9 +# asm 2: mov rz2=%r11 +mov %rax,%r11 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#10 +# asm 2: mov mulr21=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = *(uint64 *)(pp + 40) +# asm 1: movq 40(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(rz3=int64#11 +# asm 2: mov rz3=%r13 +mov %rax,%r13 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#12 +# asm 2: mov mulr31=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(pp + 40) +# asm 1: movq 40(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(rz4=int64#13 +# asm 2: mov rz4=%r15 +mov %rax,%r15 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#14 +# asm 2: mov mulr41=%rbx +mov %rdx,%rbx + +# qhasm: mulrax = *(uint64 *)(pp + 48) +# asm 1: movq 48(mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#3 +# asm 2: movq 48(mulrax=%rdx +movq 48(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#3 +# asm 2: movq 56(mulrax=%rdx +movq 56(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#3 +# asm 2: movq 56(mulrax=%rdx +movq 56(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.rz0) << 13 +# asm 1: shld $13,mulr41=int64#5 +# asm 2: imulq $19,mulr41=%r8 +imulq $19,%rbx,%r8 + +# qhasm: rz0 += mulr41 +# asm 1: add mult=int64#5 +# asm 2: mov mult=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz1=int64#6 +# asm 2: mov rz1=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz2=int64#7 +# asm 2: mov rz2=%rax +mov %r8,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz3=int64#8 +# asm 2: mov rz3=%r10 +mov %r8,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz4=int64#9 +# asm 2: mov rz4=%r11 +mov %r8,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#5 +# asm 2: imulq $19,mult=%r8 +imulq $19,%r8,%r8 + +# qhasm: rz0 += mult +# asm 1: add mulrax=int64#3 +# asm 2: movq 24(mulrax=%rdx +movq 24(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 96) +# asm 1: mulq 96(rt0=int64#4 +# asm 2: mov rt0=%rcx +mov %rax,%rcx + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#5 +# asm 2: mov mulr01=%r8 +mov %rdx,%r8 + +# qhasm: mulrax = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulrax=int64#3 +# asm 2: movq 32(mulrax=%rdx +movq 32(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 88) +# asm 1: mulq 88(rt1=int64#6 +# asm 2: mov rt1=%r9 +mov %rax,%r9 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#8 +# asm 2: mov mulr11=%r10 +mov %rdx,%r10 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 96) +# asm 1: mulq 96(rt2=int64#9 +# asm 2: mov rt2=%r11 +mov %rax,%r11 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#10 +# asm 2: mov mulr21=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 104) +# asm 1: mulq 104(rt3=int64#11 +# asm 2: mov rt3=%r13 +mov %rax,%r13 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#12 +# asm 2: mov mulr31=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 112) +# asm 1: mulq 112(rt4=int64#13 +# asm 2: mov rt4=%r15 +mov %rax,%r15 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#14 +# asm 2: mov mulr41=%rbx +mov %rdx,%rbx + +# qhasm: mulrax = *(uint64 *)(pp + 8) +# asm 1: movq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 96) +# asm 1: mulq 96(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 104) +# asm 1: mulq 104(mulrax=int64#3 +# asm 2: movq 8(mulrax=%rdx +movq 8(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 96) +# asm 1: mulq 96(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 104) +# asm 1: mulq 104(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 104) +# asm 1: mulq 104(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 96) +# asm 1: mulq 96(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 104) +# asm 1: mulq 104(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 112) +# asm 1: mulq 112(mulredmask=int64#2 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rsi +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rsi + +# qhasm: mulr01 = (mulr01.rt0) << 13 +# asm 1: shld $13,mulr41=int64#3 +# asm 2: imulq $19,mulr41=%rdx +imulq $19,%rbx,%rdx + +# qhasm: rt0 += mulr41 +# asm 1: add mult=int64#3 +# asm 2: mov mult=%rdx +mov %rcx,%rdx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rt1=int64#5 +# asm 2: mov rt1=%r8 +mov %rdx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rt2=int64#6 +# asm 2: mov rt2=%r9 +mov %rdx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rt3=int64#7 +# asm 2: mov rt3=%rax +mov %rdx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rt4=int64#8 +# asm 2: mov rt4=%r10 +mov %rdx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#3 +# asm 2: imulq $19,mult=%rdx +imulq $19,%rdx,%rdx + +# qhasm: rt0 += mult +# asm 1: add caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_p1p1_to_pniels.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_p1p1_to_pniels.S new file mode 100644 index 0000000000..c8fd000f81 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_p1p1_to_pniels.S @@ -0,0 +1,4119 @@ +// linker define ge25519_p1p1_to_pniels +// linker use REDMASK51 +// linker use 2P0 +// linker use 2P1234 +// linker use EC2D0 +// linker use EC2D1 +// linker use EC2D2 +// linker use EC2D3 +// linker use EC2D4 + +# qhasm: int64 rp + +# qhasm: int64 pp + +# qhasm: input rp + +# qhasm: input pp + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 x0 + +# qhasm: int64 x1 + +# qhasm: int64 x2 + +# qhasm: int64 x3 + +# qhasm: int64 x4 + +# qhasm: int64 y0 + +# qhasm: int64 y1 + +# qhasm: int64 y2 + +# qhasm: int64 y3 + +# qhasm: int64 y4 + +# qhasm: int64 ysubx0 + +# qhasm: int64 ysubx1 + +# qhasm: int64 ysubx2 + +# qhasm: int64 ysubx3 + +# qhasm: int64 ysubx4 + +# qhasm: int64 xaddy0 + +# qhasm: int64 xaddy1 + +# qhasm: int64 xaddy2 + +# qhasm: int64 xaddy3 + +# qhasm: int64 xaddy4 + +# qhasm: int64 rz0 + +# qhasm: int64 rz1 + +# qhasm: int64 rz2 + +# qhasm: int64 rz3 + +# qhasm: int64 rz4 + +# qhasm: int64 t0 + +# qhasm: int64 t1 + +# qhasm: int64 t2 + +# qhasm: int64 t3 + +# qhasm: int64 t4 + +# qhasm: int64 t2d0 + +# qhasm: int64 t2d1 + +# qhasm: int64 t2d2 + +# qhasm: int64 t2d3 + +# qhasm: int64 t2d4 + +# qhasm: stack64 stackt0 + +# qhasm: stack64 stackt1 + +# qhasm: stack64 stackt2 + +# qhasm: stack64 stackt3 + +# qhasm: stack64 stackt4 + +# qhasm: stack64 stackx0 + +# qhasm: stack64 stackx1 + +# qhasm: stack64 stackx2 + +# qhasm: stack64 stackx3 + +# qhasm: stack64 stackx4 + +# qhasm: stack64 stacky1 + +# qhasm: stack64 stacky2 + +# qhasm: stack64 stacky3 + +# qhasm: stack64 stacky4 + +# qhasm: int64 mulr01 + +# qhasm: int64 mulr11 + +# qhasm: int64 mulr21 + +# qhasm: int64 mulr31 + +# qhasm: int64 mulr41 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mult + +# qhasm: int64 mulredmask + +# qhasm: stack64 mulx219_stack + +# qhasm: stack64 mulx319_stack + +# qhasm: stack64 mulx419_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_pniels) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_pniels) +.globl CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_pniels) +_CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_pniels): +CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_pniels): +mov %rsp,%r11 +and $31,%r11 +add $128,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: mulrax = *(uint64 *)(pp + 24) +# asm 1: movq 24(mulrax=int64#3 +# asm 2: movq 24(mulrax=%rdx +movq 24(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(x0=int64#4 +# asm 2: mov x0=%rcx +mov %rax,%rcx + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#5 +# asm 2: mov mulr01=%r8 +mov %rdx,%r8 + +# qhasm: mulrax = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulrax=int64#3 +# asm 2: movq 32(mulrax=%rdx +movq 32(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(x1=int64#6 +# asm 2: mov x1=%r9 +mov %rax,%r9 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#8 +# asm 2: mov mulr11=%r10 +mov %rdx,%r10 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(x2=int64#9 +# asm 2: mov x2=%r11 +mov %rax,%r11 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#10 +# asm 2: mov mulr21=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(x3=int64#11 +# asm 2: mov x3=%r13 +mov %rax,%r13 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#12 +# asm 2: mov mulr31=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(x4=int64#13 +# asm 2: mov x4=%r15 +mov %rax,%r15 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#14 +# asm 2: mov mulr41=%rbx +mov %rdx,%rbx + +# qhasm: mulrax = *(uint64 *)(pp + 8) +# asm 1: movq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#3 +# asm 2: movq 8(mulrax=%rdx +movq 8(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.x0) << 13 +# asm 1: shld $13,mulr41=int64#5 +# asm 2: imulq $19,mulr41=%r8 +imulq $19,%rbx,%r8 + +# qhasm: x0 += mulr41 +# asm 1: add mult=int64#5 +# asm 2: mov mult=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,x1=int64#6 +# asm 2: mov x1=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,x2=int64#7 +# asm 2: mov x2=%rax +mov %r8,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,x3=int64#8 +# asm 2: mov x3=%r10 +mov %r8,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,x4=int64#9 +# asm 2: mov x4=%r11 +mov %r8,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#5 +# asm 2: imulq $19,mult=%r8 +imulq $19,%r8,%r8 + +# qhasm: x0 += mult +# asm 1: add stackx0=stack64#8 +# asm 2: movq stackx0=56(%rsp) +movq %rcx,56(%rsp) + +# qhasm: stackx1 = x1 +# asm 1: movq stackx1=stack64#9 +# asm 2: movq stackx1=64(%rsp) +movq %r9,64(%rsp) + +# qhasm: stackx2 = x2 +# asm 1: movq stackx2=stack64#10 +# asm 2: movq stackx2=72(%rsp) +movq %rax,72(%rsp) + +# qhasm: stackx3 = x3 +# asm 1: movq stackx3=stack64#11 +# asm 2: movq stackx3=80(%rsp) +movq %r10,80(%rsp) + +# qhasm: stackx4 = x4 +# asm 1: movq stackx4=stack64#12 +# asm 2: movq stackx4=88(%rsp) +movq %r11,88(%rsp) + +# qhasm: mulrax = *(uint64 *)(pp + 104) +# asm 1: movq 104(mulrax=int64#3 +# asm 2: movq 104(mulrax=%rdx +movq 104(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#13 +# asm 2: movq mulx319_stack=96(%rsp) +movq %rax,96(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(y0=int64#4 +# asm 2: mov y0=%rcx +mov %rax,%rcx + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#5 +# asm 2: mov mulr01=%r8 +mov %rdx,%r8 + +# qhasm: mulrax = *(uint64 *)(pp + 112) +# asm 1: movq 112(mulrax=int64#3 +# asm 2: movq 112(mulrax=%rdx +movq 112(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#14 +# asm 2: movq mulx419_stack=104(%rsp) +movq %rax,104(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(y1=int64#6 +# asm 2: mov y1=%r9 +mov %rax,%r9 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#8 +# asm 2: mov mulr11=%r10 +mov %rdx,%r10 + +# qhasm: mulrax = *(uint64 *)(pp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(y2=int64#9 +# asm 2: mov y2=%r11 +mov %rax,%r11 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#10 +# asm 2: mov mulr21=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = *(uint64 *)(pp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(y3=int64#11 +# asm 2: mov y3=%r13 +mov %rax,%r13 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#12 +# asm 2: mov mulr31=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(pp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(y4=int64#13 +# asm 2: mov y4=%r15 +mov %rax,%r15 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#14 +# asm 2: mov mulr41=%rbx +mov %rdx,%rbx + +# qhasm: mulrax = *(uint64 *)(pp + 88) +# asm 1: movq 88(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(mulrax=int64#3 +# asm 2: movq 88(mulrax=%rdx +movq 88(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(mulrax=int64#3 +# asm 2: movq 96(mulrax=%rdx +movq 96(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(mulrax=int64#3 +# asm 2: movq 96(mulrax=%rdx +movq 96(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.y0) << 13 +# asm 1: shld $13,mulr41=int64#5 +# asm 2: imulq $19,mulr41=%r8 +imulq $19,%rbx,%r8 + +# qhasm: y0 += mulr41 +# asm 1: add mult=int64#5 +# asm 2: mov mult=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,y1=int64#6 +# asm 2: mov y1=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,y2=int64#7 +# asm 2: mov y2=%rax +mov %r8,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,y3=int64#8 +# asm 2: mov y3=%r10 +mov %r8,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,y4=int64#9 +# asm 2: mov y4=%r11 +mov %r8,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#5 +# asm 2: imulq $19,mult=%r8 +imulq $19,%r8,%r8 + +# qhasm: y0 += mult +# asm 1: add ysubx0=int64#3 +# asm 2: mov ysubx0=%rdx +mov %rcx,%rdx + +# qhasm: ysubx1 = y1 +# asm 1: mov ysubx1=int64#5 +# asm 2: mov ysubx1=%r8 +mov %r9,%r8 + +# qhasm: ysubx2 = y2 +# asm 1: mov ysubx2=int64#10 +# asm 2: mov ysubx2=%r12 +mov %rax,%r12 + +# qhasm: ysubx3 = y3 +# asm 1: mov ysubx3=int64#11 +# asm 2: mov ysubx3=%r13 +mov %r10,%r13 + +# qhasm: ysubx4 = y4 +# asm 1: mov ysubx4=int64#12 +# asm 2: mov ysubx4=%r14 +mov %r11,%r14 + +# qhasm: ysubx0 += *(uint64 *) &CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: add CRYPTO_SHARED_NAMESPACE(2P0),x0=int64#13 +# asm 2: movq x0=%r15 +movq 56(%rsp),%r15 + +# qhasm: ysubx0 -= x0 +# asm 1: sub x1=int64#13 +# asm 2: movq x1=%r15 +movq 64(%rsp),%r15 + +# qhasm: ysubx1 -= x1 +# asm 1: sub x2=int64#13 +# asm 2: movq x2=%r15 +movq 72(%rsp),%r15 + +# qhasm: ysubx2 -= x2 +# asm 1: sub x3=int64#13 +# asm 2: movq x3=%r15 +movq 80(%rsp),%r15 + +# qhasm: ysubx3 -= x3 +# asm 1: sub x4=int64#13 +# asm 2: movq x4=%r15 +movq 88(%rsp),%r15 + +# qhasm: ysubx4 -= x4 +# asm 1: sub mulrax=int64#3 +# asm 2: movq 64(mulrax=%rdx +movq 64(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(rz0=int64#4 +# asm 2: mov rz0=%rcx +mov %rax,%rcx + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#5 +# asm 2: mov mulr01=%r8 +mov %rdx,%r8 + +# qhasm: mulrax = *(uint64 *)(pp + 72) +# asm 1: movq 72(mulrax=int64#3 +# asm 2: movq 72(mulrax=%rdx +movq 72(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(rz1=int64#6 +# asm 2: mov rz1=%r9 +mov %rax,%r9 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#8 +# asm 2: mov mulr11=%r10 +mov %rdx,%r10 + +# qhasm: mulrax = *(uint64 *)(pp + 40) +# asm 1: movq 40(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(rz2=int64#9 +# asm 2: mov rz2=%r11 +mov %rax,%r11 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#10 +# asm 2: mov mulr21=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = *(uint64 *)(pp + 40) +# asm 1: movq 40(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(rz3=int64#11 +# asm 2: mov rz3=%r13 +mov %rax,%r13 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#12 +# asm 2: mov mulr31=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(pp + 40) +# asm 1: movq 40(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(rz4=int64#13 +# asm 2: mov rz4=%r15 +mov %rax,%r15 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#14 +# asm 2: mov mulr41=%rbx +mov %rdx,%rbx + +# qhasm: mulrax = *(uint64 *)(pp + 48) +# asm 1: movq 48(mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#3 +# asm 2: movq 48(mulrax=%rdx +movq 48(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#3 +# asm 2: movq 56(mulrax=%rdx +movq 56(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#3 +# asm 2: movq 56(mulrax=%rdx +movq 56(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 136) +# asm 1: mulq 136(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 144) +# asm 1: mulq 144(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 152) +# asm 1: mulq 152(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.rz0) << 13 +# asm 1: shld $13,mulr41=int64#5 +# asm 2: imulq $19,mulr41=%r8 +imulq $19,%rbx,%r8 + +# qhasm: rz0 += mulr41 +# asm 1: add mult=int64#5 +# asm 2: mov mult=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz1=int64#6 +# asm 2: mov rz1=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz2=int64#7 +# asm 2: mov rz2=%rax +mov %r8,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz3=int64#8 +# asm 2: mov rz3=%r10 +mov %r8,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz4=int64#9 +# asm 2: mov rz4=%r11 +mov %r8,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#5 +# asm 2: imulq $19,mult=%r8 +imulq $19,%r8,%r8 + +# qhasm: rz0 += mult +# asm 1: add mulrax=int64#3 +# asm 2: movq 24(mulrax=%rdx +movq 24(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 96) +# asm 1: mulq 96(t0=int64#4 +# asm 2: mov t0=%rcx +mov %rax,%rcx + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#5 +# asm 2: mov mulr01=%r8 +mov %rdx,%r8 + +# qhasm: mulrax = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulrax=int64#3 +# asm 2: movq 32(mulrax=%rdx +movq 32(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 88) +# asm 1: mulq 88(t1=int64#6 +# asm 2: mov t1=%r9 +mov %rax,%r9 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#8 +# asm 2: mov mulr11=%r10 +mov %rdx,%r10 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 96) +# asm 1: mulq 96(t2=int64#9 +# asm 2: mov t2=%r11 +mov %rax,%r11 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#10 +# asm 2: mov mulr21=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 104) +# asm 1: mulq 104(t3=int64#11 +# asm 2: mov t3=%r13 +mov %rax,%r13 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#12 +# asm 2: mov mulr31=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 112) +# asm 1: mulq 112(t4=int64#13 +# asm 2: mov t4=%r15 +mov %rax,%r15 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#14 +# asm 2: mov mulr41=%rbx +mov %rdx,%rbx + +# qhasm: mulrax = *(uint64 *)(pp + 8) +# asm 1: movq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 96) +# asm 1: mulq 96(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 104) +# asm 1: mulq 104(mulrax=int64#3 +# asm 2: movq 8(mulrax=%rdx +movq 8(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 96) +# asm 1: mulq 96(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 104) +# asm 1: mulq 104(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 104) +# asm 1: mulq 104(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 96) +# asm 1: mulq 96(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 104) +# asm 1: mulq 104(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(pp + 112) +# asm 1: mulq 112(mulredmask=int64#2 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rsi +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rsi + +# qhasm: mulr01 = (mulr01.t0) << 13 +# asm 1: shld $13,mulr41=int64#3 +# asm 2: imulq $19,mulr41=%rdx +imulq $19,%rbx,%rdx + +# qhasm: t0 += mulr41 +# asm 1: add mult=int64#3 +# asm 2: mov mult=%rdx +mov %rcx,%rdx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t1=int64#5 +# asm 2: mov t1=%r8 +mov %rdx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t2=int64#6 +# asm 2: mov t2=%r9 +mov %rdx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t3=int64#7 +# asm 2: mov t3=%rax +mov %rdx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t4=int64#8 +# asm 2: mov t4=%r10 +mov %rdx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#3 +# asm 2: imulq $19,mult=%rdx +imulq $19,%rdx,%rdx + +# qhasm: t0 += mult +# asm 1: add stackt0=stack64#8 +# asm 2: movq stackt0=56(%rsp) +movq %rcx,56(%rsp) + +# qhasm: stackt1 = t1 +# asm 1: movq stackt1=stack64#9 +# asm 2: movq stackt1=64(%rsp) +movq %r8,64(%rsp) + +# qhasm: stackt2 = t2 +# asm 1: movq stackt2=stack64#10 +# asm 2: movq stackt2=72(%rsp) +movq %r9,72(%rsp) + +# qhasm: stackt3 = t3 +# asm 1: movq stackt3=stack64#11 +# asm 2: movq stackt3=80(%rsp) +movq %rax,80(%rsp) + +# qhasm: stackt4 = t4 +# asm 1: movq stackt4=stack64#12 +# asm 2: movq stackt4=88(%rsp) +movq %r10,88(%rsp) + +# qhasm: mulrax = stackt3 +# asm 1: movq mulrax=int64#2 +# asm 2: movq mulrax=%rsi +movq 80(%rsp),%rsi + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rsi,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#13 +# asm 2: movq mulx319_stack=96(%rsp) +movq %rax,96(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D2) +mulq CRYPTO_SHARED_NAMESPACE(EC2D2)(%rip) + +# qhasm: t2d0 = mulrax +# asm 1: mov t2d0=int64#2 +# asm 2: mov t2d0=%rsi +mov %rax,%rsi + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#4 +# asm 2: mov mulr01=%rcx +mov %rdx,%rcx + +# qhasm: mulrax = stackt4 +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 88(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#14 +# asm 2: movq mulx419_stack=104(%rsp) +movq %rax,104(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D1) +mulq CRYPTO_SHARED_NAMESPACE(EC2D1)(%rip) + +# qhasm: carry? t2d0 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D0) +mulq CRYPTO_SHARED_NAMESPACE(EC2D0)(%rip) + +# qhasm: carry? t2d0 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D1) +mulq CRYPTO_SHARED_NAMESPACE(EC2D1)(%rip) + +# qhasm: t2d1 = mulrax +# asm 1: mov t2d1=int64#5 +# asm 2: mov t2d1=%r8 +mov %rax,%r8 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#6 +# asm 2: mov mulr11=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = stackt0 +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D2) +mulq CRYPTO_SHARED_NAMESPACE(EC2D2)(%rip) + +# qhasm: t2d2 = mulrax +# asm 1: mov t2d2=int64#8 +# asm 2: mov t2d2=%r10 +mov %rax,%r10 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#9 +# asm 2: mov mulr21=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = stackt0 +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D3) +mulq CRYPTO_SHARED_NAMESPACE(EC2D3)(%rip) + +# qhasm: t2d3 = mulrax +# asm 1: mov t2d3=int64#10 +# asm 2: mov t2d3=%r12 +mov %rax,%r12 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#11 +# asm 2: mov mulr31=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = stackt0 +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D4) +mulq CRYPTO_SHARED_NAMESPACE(EC2D4)(%rip) + +# qhasm: t2d4 = mulrax +# asm 1: mov t2d4=int64#12 +# asm 2: mov t2d4=%r14 +mov %rax,%r14 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#13 +# asm 2: mov mulr41=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = stackt1 +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D0) +mulq CRYPTO_SHARED_NAMESPACE(EC2D0)(%rip) + +# qhasm: carry? t2d1 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D1) +mulq CRYPTO_SHARED_NAMESPACE(EC2D1)(%rip) + +# qhasm: carry? t2d2 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D2) +mulq CRYPTO_SHARED_NAMESPACE(EC2D2)(%rip) + +# qhasm: carry? t2d3 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D3) +mulq CRYPTO_SHARED_NAMESPACE(EC2D3)(%rip) + +# qhasm: carry? t2d4 += mulrax +# asm 1: add mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 64(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D4) +mulq CRYPTO_SHARED_NAMESPACE(EC2D4)(%rip) + +# qhasm: carry? t2d0 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D0) +mulq CRYPTO_SHARED_NAMESPACE(EC2D0)(%rip) + +# qhasm: carry? t2d2 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D1) +mulq CRYPTO_SHARED_NAMESPACE(EC2D1)(%rip) + +# qhasm: carry? t2d3 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D2) +mulq CRYPTO_SHARED_NAMESPACE(EC2D2)(%rip) + +# qhasm: carry? t2d4 += mulrax +# asm 1: add mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 72(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D3) +mulq CRYPTO_SHARED_NAMESPACE(EC2D3)(%rip) + +# qhasm: carry? t2d0 += mulrax +# asm 1: add mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 72(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D4) +mulq CRYPTO_SHARED_NAMESPACE(EC2D4)(%rip) + +# qhasm: carry? t2d1 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D0) +mulq CRYPTO_SHARED_NAMESPACE(EC2D0)(%rip) + +# qhasm: carry? t2d3 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D1) +mulq CRYPTO_SHARED_NAMESPACE(EC2D1)(%rip) + +# qhasm: carry? t2d4 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D3) +mulq CRYPTO_SHARED_NAMESPACE(EC2D3)(%rip) + +# qhasm: carry? t2d1 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D4) +mulq CRYPTO_SHARED_NAMESPACE(EC2D4)(%rip) + +# qhasm: carry? t2d2 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 88(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D0) +mulq CRYPTO_SHARED_NAMESPACE(EC2D0)(%rip) + +# qhasm: carry? t2d4 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D2) +mulq CRYPTO_SHARED_NAMESPACE(EC2D2)(%rip) + +# qhasm: carry? t2d1 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D3) +mulq CRYPTO_SHARED_NAMESPACE(EC2D3)(%rip) + +# qhasm: carry? t2d2 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(EC2D4) +mulq CRYPTO_SHARED_NAMESPACE(EC2D4)(%rip) + +# qhasm: carry? t2d3 += mulrax +# asm 1: add mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.t2d0) << 13 +# asm 1: shld $13,mulr41=int64#4 +# asm 2: imulq $19,mulr41=%rcx +imulq $19,%r15,%rcx + +# qhasm: t2d0 += mulr41 +# asm 1: add mult=int64#4 +# asm 2: mov mult=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t2d1=int64#5 +# asm 2: mov t2d1=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t2d2=int64#6 +# asm 2: mov t2d2=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t2d3=int64#7 +# asm 2: mov t2d3=%rax +mov %rcx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t2d4=int64#8 +# asm 2: mov t2d4=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#4 +# asm 2: imulq $19,mult=%rcx +imulq $19,%rcx,%rcx + +# qhasm: t2d0 += mult +# asm 1: add caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_pack.c new file mode 100644 index 0000000000..0cb99bbccd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_pack.c @@ -0,0 +1,19 @@ +// linker define ge25519_pack +// linker use fe25519_invert +// linker use fe25519_mul +// linker use fe25519_pack +// linker use fe25519_getparity + +#include "fe25519.h" +#include "sc25519.h" +#include "ge25519.h" + +void ge25519_pack(unsigned char r[32], const ge25519_p3 *p) +{ + fe25519 tx, ty, zi; + fe25519_invert(&zi, &p->z); + fe25519_mul(&tx, &p->x, &zi); + fe25519_mul(&ty, &p->y, &zi); + fe25519_pack(r, &ty); + r[31] ^= fe25519_getparity(&tx) << 7; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_pnielsadd_p1p1.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_pnielsadd_p1p1.S new file mode 100644 index 0000000000..dbb8371d41 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_pnielsadd_p1p1.S @@ -0,0 +1,3795 @@ +// linker define ge25519_pnielsadd_p1p1 +// linker use REDMASK51 +// linker use 2P0 +// linker use 2P1234 + +# qhasm: int64 rp + +# qhasm: int64 pp + +# qhasm: int64 qp + +# qhasm: input rp + +# qhasm: input pp + +# qhasm: input qp + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 a0 + +# qhasm: int64 a1 + +# qhasm: int64 a2 + +# qhasm: int64 a3 + +# qhasm: int64 a4 + +# qhasm: stack64 a0_stack + +# qhasm: stack64 a1_stack + +# qhasm: stack64 a2_stack + +# qhasm: stack64 a3_stack + +# qhasm: stack64 a4_stack + +# qhasm: int64 b0 + +# qhasm: int64 b1 + +# qhasm: int64 b2 + +# qhasm: int64 b3 + +# qhasm: int64 b4 + +# qhasm: stack64 b0_stack + +# qhasm: stack64 b1_stack + +# qhasm: stack64 b2_stack + +# qhasm: stack64 b3_stack + +# qhasm: stack64 b4_stack + +# qhasm: int64 c0 + +# qhasm: int64 c1 + +# qhasm: int64 c2 + +# qhasm: int64 c3 + +# qhasm: int64 c4 + +# qhasm: stack64 c0_stack + +# qhasm: stack64 c1_stack + +# qhasm: stack64 c2_stack + +# qhasm: stack64 c3_stack + +# qhasm: stack64 c4_stack + +# qhasm: int64 d0 + +# qhasm: int64 d1 + +# qhasm: int64 d2 + +# qhasm: int64 d3 + +# qhasm: int64 d4 + +# qhasm: stack64 d0_stack + +# qhasm: stack64 d1_stack + +# qhasm: stack64 d2_stack + +# qhasm: stack64 d3_stack + +# qhasm: stack64 d4_stack + +# qhasm: int64 t10 + +# qhasm: int64 t11 + +# qhasm: int64 t12 + +# qhasm: int64 t13 + +# qhasm: int64 t14 + +# qhasm: stack64 t10_stack + +# qhasm: stack64 t11_stack + +# qhasm: stack64 t12_stack + +# qhasm: stack64 t13_stack + +# qhasm: stack64 t14_stack + +# qhasm: int64 t20 + +# qhasm: int64 t21 + +# qhasm: int64 t22 + +# qhasm: int64 t23 + +# qhasm: int64 t24 + +# qhasm: stack64 t20_stack + +# qhasm: stack64 t21_stack + +# qhasm: stack64 t22_stack + +# qhasm: stack64 t23_stack + +# qhasm: stack64 t24_stack + +# qhasm: int64 rx0 + +# qhasm: int64 rx1 + +# qhasm: int64 rx2 + +# qhasm: int64 rx3 + +# qhasm: int64 rx4 + +# qhasm: int64 ry0 + +# qhasm: int64 ry1 + +# qhasm: int64 ry2 + +# qhasm: int64 ry3 + +# qhasm: int64 ry4 + +# qhasm: int64 rz0 + +# qhasm: int64 rz1 + +# qhasm: int64 rz2 + +# qhasm: int64 rz3 + +# qhasm: int64 rz4 + +# qhasm: int64 rt0 + +# qhasm: int64 rt1 + +# qhasm: int64 rt2 + +# qhasm: int64 rt3 + +# qhasm: int64 rt4 + +# qhasm: int64 x0 + +# qhasm: int64 x1 + +# qhasm: int64 x2 + +# qhasm: int64 x3 + +# qhasm: int64 x4 + +# qhasm: int64 mulr01 + +# qhasm: int64 mulr11 + +# qhasm: int64 mulr21 + +# qhasm: int64 mulr31 + +# qhasm: int64 mulr41 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mult + +# qhasm: int64 mulredmask + +# qhasm: stack64 mulx219_stack + +# qhasm: stack64 mulx319_stack + +# qhasm: stack64 mulx419_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1) +.globl CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1) +_CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1): +CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1): +mov %rsp,%r11 +and $31,%r11 +add $160,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: qp = qp +# asm 1: mov qp=int64#4 +# asm 2: mov qp=%rcx +mov %rdx,%rcx + +# qhasm: a0 = *(uint64 *)(pp + 40) +# asm 1: movq 40(a0=int64#3 +# asm 2: movq 40(a0=%rdx +movq 40(%rsi),%rdx + +# qhasm: a1 = *(uint64 *)(pp + 48) +# asm 1: movq 48(a1=int64#5 +# asm 2: movq 48(a1=%r8 +movq 48(%rsi),%r8 + +# qhasm: a2 = *(uint64 *)(pp + 56) +# asm 1: movq 56(a2=int64#6 +# asm 2: movq 56(a2=%r9 +movq 56(%rsi),%r9 + +# qhasm: a3 = *(uint64 *)(pp + 64) +# asm 1: movq 64(a3=int64#7 +# asm 2: movq 64(a3=%rax +movq 64(%rsi),%rax + +# qhasm: a4 = *(uint64 *)(pp + 72) +# asm 1: movq 72(a4=int64#8 +# asm 2: movq 72(a4=%r10 +movq 72(%rsi),%r10 + +# qhasm: b0 = a0 +# asm 1: mov b0=int64#9 +# asm 2: mov b0=%r11 +mov %rdx,%r11 + +# qhasm: b1 = a1 +# asm 1: mov b1=int64#10 +# asm 2: mov b1=%r12 +mov %r8,%r12 + +# qhasm: b2 = a2 +# asm 1: mov b2=int64#11 +# asm 2: mov b2=%r13 +mov %r9,%r13 + +# qhasm: b3 = a3 +# asm 1: mov b3=int64#12 +# asm 2: mov b3=%r14 +mov %rax,%r14 + +# qhasm: b4 = a4 +# asm 1: mov b4=int64#13 +# asm 2: mov b4=%r15 +mov %r10,%r15 + +# qhasm: a0 += *(uint64 *) &CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: add CRYPTO_SHARED_NAMESPACE(2P0),a0_stack=stack64#8 +# asm 2: movq a0_stack=56(%rsp) +movq %rdx,56(%rsp) + +# qhasm: a1_stack = a1 +# asm 1: movq a1_stack=stack64#9 +# asm 2: movq a1_stack=64(%rsp) +movq %r8,64(%rsp) + +# qhasm: a2_stack = a2 +# asm 1: movq a2_stack=stack64#10 +# asm 2: movq a2_stack=72(%rsp) +movq %r9,72(%rsp) + +# qhasm: a3_stack = a3 +# asm 1: movq a3_stack=stack64#11 +# asm 2: movq a3_stack=80(%rsp) +movq %rax,80(%rsp) + +# qhasm: a4_stack = a4 +# asm 1: movq a4_stack=stack64#12 +# asm 2: movq a4_stack=88(%rsp) +movq %r10,88(%rsp) + +# qhasm: b0_stack = b0 +# asm 1: movq b0_stack=stack64#13 +# asm 2: movq b0_stack=96(%rsp) +movq %r11,96(%rsp) + +# qhasm: b1_stack = b1 +# asm 1: movq b1_stack=stack64#14 +# asm 2: movq b1_stack=104(%rsp) +movq %r12,104(%rsp) + +# qhasm: b2_stack = b2 +# asm 1: movq b2_stack=stack64#15 +# asm 2: movq b2_stack=112(%rsp) +movq %r13,112(%rsp) + +# qhasm: b3_stack = b3 +# asm 1: movq b3_stack=stack64#16 +# asm 2: movq b3_stack=120(%rsp) +movq %r14,120(%rsp) + +# qhasm: b4_stack = b4 +# asm 1: movq b4_stack=stack64#17 +# asm 2: movq b4_stack=128(%rsp) +movq %r15,128(%rsp) + +# qhasm: mulrax = a3_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 80(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#18 +# asm 2: movq mulx319_stack=136(%rsp) +movq %rax,136(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(a0=int64#5 +# asm 2: mov a0=%r8 +mov %rax,%r8 + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#6 +# asm 2: mov mulr01=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = a4_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 88(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#19 +# asm 2: movq mulx419_stack=144(%rsp) +movq %rax,144(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(a1=int64#8 +# asm 2: mov a1=%r10 +mov %rax,%r10 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#9 +# asm 2: mov mulr11=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = a0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(a2=int64#10 +# asm 2: mov a2=%r12 +mov %rax,%r12 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#11 +# asm 2: mov mulr21=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = a0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(a3=int64#12 +# asm 2: mov a3=%r14 +mov %rax,%r14 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#13 +# asm 2: mov mulr31=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = a0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(a4=int64#14 +# asm 2: mov a4=%rbx +mov %rax,%rbx + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#15 +# asm 2: mov mulr41=%rbp +mov %rdx,%rbp + +# qhasm: mulrax = a1_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 64(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 72(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 72(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 88(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.a0) << 13 +# asm 1: shld $13,mulr41=int64#6 +# asm 2: imulq $19,mulr41=%r9 +imulq $19,%rbp,%r9 + +# qhasm: a0 += mulr41 +# asm 1: add mult=int64#6 +# asm 2: mov mult=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,a1=int64#7 +# asm 2: mov a1=%rax +mov %r9,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,a2=int64#8 +# asm 2: mov a2=%r10 +mov %r9,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,a3=int64#9 +# asm 2: mov a3=%r11 +mov %r9,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,a4=int64#10 +# asm 2: mov a4=%r12 +mov %r9,%r12 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#6 +# asm 2: imulq $19,mult=%r9 +imulq $19,%r9,%r9 + +# qhasm: a0 += mult +# asm 1: add a0_stack=stack64#8 +# asm 2: movq a0_stack=56(%rsp) +movq %r8,56(%rsp) + +# qhasm: a1_stack = a1 +# asm 1: movq a1_stack=stack64#9 +# asm 2: movq a1_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: a2_stack = a2 +# asm 1: movq a2_stack=stack64#10 +# asm 2: movq a2_stack=72(%rsp) +movq %r10,72(%rsp) + +# qhasm: a3_stack = a3 +# asm 1: movq a3_stack=stack64#11 +# asm 2: movq a3_stack=80(%rsp) +movq %r11,80(%rsp) + +# qhasm: a4_stack = a4 +# asm 1: movq a4_stack=stack64#12 +# asm 2: movq a4_stack=88(%rsp) +movq %r12,88(%rsp) + +# qhasm: mulrax = b3_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 120(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#18 +# asm 2: movq mulx319_stack=136(%rsp) +movq %rax,136(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(rx0=int64#5 +# asm 2: mov rx0=%r8 +mov %rax,%r8 + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#6 +# asm 2: mov mulr01=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = b4_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 128(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#19 +# asm 2: movq mulx419_stack=144(%rsp) +movq %rax,144(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(rx1=int64#8 +# asm 2: mov rx1=%r10 +mov %rax,%r10 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#9 +# asm 2: mov mulr11=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = b0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(rx2=int64#10 +# asm 2: mov rx2=%r12 +mov %rax,%r12 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#11 +# asm 2: mov mulr21=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = b0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(rx3=int64#12 +# asm 2: mov rx3=%r14 +mov %rax,%r14 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#13 +# asm 2: mov mulr31=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = b0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(rx4=int64#14 +# asm 2: mov rx4=%rbx +mov %rax,%rbx + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#15 +# asm 2: mov mulr41=%rbp +mov %rdx,%rbp + +# qhasm: mulrax = b1_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 104(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 112(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 112(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 128(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.rx0) << 13 +# asm 1: shld $13,mulr41=int64#6 +# asm 2: imulq $19,mulr41=%r9 +imulq $19,%rbp,%r9 + +# qhasm: rx0 += mulr41 +# asm 1: add mult=int64#6 +# asm 2: mov mult=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx1=int64#7 +# asm 2: mov rx1=%rax +mov %r9,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx2=int64#8 +# asm 2: mov rx2=%r10 +mov %r9,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx3=int64#9 +# asm 2: mov rx3=%r11 +mov %r9,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx4=int64#10 +# asm 2: mov rx4=%r12 +mov %r9,%r12 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#6 +# asm 2: imulq $19,mult=%r9 +imulq $19,%r9,%r9 + +# qhasm: rx0 += mult +# asm 1: add ry0=int64#3 +# asm 2: mov ry0=%rdx +mov %r8,%rdx + +# qhasm: ry1 = rx1 +# asm 1: mov ry1=int64#6 +# asm 2: mov ry1=%r9 +mov %rax,%r9 + +# qhasm: ry2 = rx2 +# asm 1: mov ry2=int64#11 +# asm 2: mov ry2=%r13 +mov %r10,%r13 + +# qhasm: ry3 = rx3 +# asm 1: mov ry3=int64#12 +# asm 2: mov ry3=%r14 +mov %r11,%r14 + +# qhasm: ry4 = rx4 +# asm 1: mov ry4=int64#13 +# asm 2: mov ry4=%r15 +mov %r12,%r15 + +# qhasm: rx0 += *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: add CRYPTO_SHARED_NAMESPACE(2P0),mulrax=int64#3 +# asm 2: movq 144(mulrax=%rdx +movq 144(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 136) +# asm 1: mulq 136(c0=int64#5 +# asm 2: mov c0=%r8 +mov %rax,%r8 + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#6 +# asm 2: mov mulr01=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = *(uint64 *)(pp + 152) +# asm 1: movq 152(mulrax=int64#3 +# asm 2: movq 152(mulrax=%rdx +movq 152(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 128) +# asm 1: mulq 128(c1=int64#8 +# asm 2: mov c1=%r10 +mov %rax,%r10 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#9 +# asm 2: mov mulr11=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 120) +# asm 1: movq 120(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 136) +# asm 1: mulq 136(c2=int64#10 +# asm 2: mov c2=%r12 +mov %rax,%r12 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#11 +# asm 2: mov mulr21=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(pp + 120) +# asm 1: movq 120(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 144) +# asm 1: mulq 144(c3=int64#12 +# asm 2: mov c3=%r14 +mov %rax,%r14 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#13 +# asm 2: mov mulr31=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = *(uint64 *)(pp + 120) +# asm 1: movq 120(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 152) +# asm 1: mulq 152(c4=int64#14 +# asm 2: mov c4=%rbx +mov %rax,%rbx + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#15 +# asm 2: mov mulr41=%rbp +mov %rdx,%rbp + +# qhasm: mulrax = *(uint64 *)(pp + 128) +# asm 1: movq 128(mulrax=int64#7 +# asm 2: movq 128(mulrax=%rax +movq 128(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 128(mulrax=%rax +movq 128(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 128(mulrax=%rax +movq 128(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 136) +# asm 1: mulq 136(mulrax=int64#7 +# asm 2: movq 128(mulrax=%rax +movq 128(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 144) +# asm 1: mulq 144(mulrax=int64#3 +# asm 2: movq 128(mulrax=%rdx +movq 128(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 136(mulrax=%rax +movq 136(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 136(mulrax=%rax +movq 136(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq 136(mulrax=%rax +movq 136(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 136) +# asm 1: mulq 136(mulrax=int64#3 +# asm 2: movq 136(mulrax=%rdx +movq 136(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 144) +# asm 1: mulq 144(mulrax=int64#3 +# asm 2: movq 136(mulrax=%rdx +movq 136(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 144(mulrax=%rax +movq 144(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq 144(mulrax=%rax +movq 144(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 128) +# asm 1: mulq 128(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 144) +# asm 1: mulq 144(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 152) +# asm 1: mulq 152(mulrax=int64#7 +# asm 2: movq 152(mulrax=%rax +movq 152(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 120) +# asm 1: mulq 120(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 136) +# asm 1: mulq 136(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 144) +# asm 1: mulq 144(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 152) +# asm 1: mulq 152(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.c0) << 13 +# asm 1: shld $13,mulr41=int64#6 +# asm 2: imulq $19,mulr41=%r9 +imulq $19,%rbp,%r9 + +# qhasm: c0 += mulr41 +# asm 1: add mult=int64#6 +# asm 2: mov mult=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,c1=int64#7 +# asm 2: mov c1=%rax +mov %r9,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,c2=int64#8 +# asm 2: mov c2=%r10 +mov %r9,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,c3=int64#9 +# asm 2: mov c3=%r11 +mov %r9,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,c4=int64#10 +# asm 2: mov c4=%r12 +mov %r9,%r12 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#6 +# asm 2: imulq $19,mult=%r9 +imulq $19,%r9,%r9 + +# qhasm: c0 += mult +# asm 1: add c0_stack=stack64#8 +# asm 2: movq c0_stack=56(%rsp) +movq %r8,56(%rsp) + +# qhasm: c1_stack = c1 +# asm 1: movq c1_stack=stack64#9 +# asm 2: movq c1_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: c2_stack = c2 +# asm 1: movq c2_stack=stack64#10 +# asm 2: movq c2_stack=72(%rsp) +movq %r10,72(%rsp) + +# qhasm: c3_stack = c3 +# asm 1: movq c3_stack=stack64#11 +# asm 2: movq c3_stack=80(%rsp) +movq %r11,80(%rsp) + +# qhasm: c4_stack = c4 +# asm 1: movq c4_stack=stack64#12 +# asm 2: movq c4_stack=88(%rsp) +movq %r12,88(%rsp) + +# qhasm: mulrax = *(uint64 *)(pp + 104) +# asm 1: movq 104(mulrax=int64#3 +# asm 2: movq 104(mulrax=%rdx +movq 104(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#13 +# asm 2: movq mulx319_stack=96(%rsp) +movq %rax,96(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(rt0=int64#5 +# asm 2: mov rt0=%r8 +mov %rax,%r8 + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#6 +# asm 2: mov mulr01=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = *(uint64 *)(pp + 112) +# asm 1: movq 112(mulrax=int64#3 +# asm 2: movq 112(mulrax=%rdx +movq 112(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#14 +# asm 2: movq mulx419_stack=104(%rsp) +movq %rax,104(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(rt1=int64#8 +# asm 2: mov rt1=%r10 +mov %rax,%r10 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#9 +# asm 2: mov mulr11=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(rt2=int64#10 +# asm 2: mov rt2=%r12 +mov %rax,%r12 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#11 +# asm 2: mov mulr21=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(pp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(rt3=int64#12 +# asm 2: mov rt3=%r14 +mov %rax,%r14 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#13 +# asm 2: mov mulr31=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = *(uint64 *)(pp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(rt4=int64#14 +# asm 2: mov rt4=%rbx +mov %rax,%rbx + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#15 +# asm 2: mov mulr41=%rbp +mov %rdx,%rbp + +# qhasm: mulrax = *(uint64 *)(pp + 88) +# asm 1: movq 88(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(mulrax=int64#3 +# asm 2: movq 88(mulrax=%rdx +movq 88(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(mulrax=int64#3 +# asm 2: movq 96(mulrax=%rdx +movq 96(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(mulrax=int64#3 +# asm 2: movq 96(mulrax=%rdx +movq 96(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(mulredmask=int64#2 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rsi +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rsi + +# qhasm: mulr01 = (mulr01.rt0) << 13 +# asm 1: shld $13,mulr41=int64#3 +# asm 2: imulq $19,mulr41=%rdx +imulq $19,%rbp,%rdx + +# qhasm: rt0 += mulr41 +# asm 1: add mult=int64#3 +# asm 2: mov mult=%rdx +mov %r8,%rdx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rt1=int64#4 +# asm 2: mov rt1=%rcx +mov %rdx,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rt2=int64#6 +# asm 2: mov rt2=%r9 +mov %rdx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rt3=int64#7 +# asm 2: mov rt3=%rax +mov %rdx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rt4=int64#8 +# asm 2: mov rt4=%r10 +mov %rdx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#3 +# asm 2: imulq $19,mult=%rdx +imulq $19,%rdx,%rdx + +# qhasm: rt0 += mult +# asm 1: add rz0=int64#2 +# asm 2: mov rz0=%rsi +mov %r8,%rsi + +# qhasm: rz1 = rt1 +# asm 1: mov rz1=int64#3 +# asm 2: mov rz1=%rdx +mov %rcx,%rdx + +# qhasm: rz2 = rt2 +# asm 1: mov rz2=int64#9 +# asm 2: mov rz2=%r11 +mov %r9,%r11 + +# qhasm: rz3 = rt3 +# asm 1: mov rz3=int64#10 +# asm 2: mov rz3=%r12 +mov %rax,%r12 + +# qhasm: rz4 = rt4 +# asm 1: mov rz4=int64#11 +# asm 2: mov rz4=%r13 +mov %r10,%r13 + +# qhasm: rt0 += *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: add CRYPTO_SHARED_NAMESPACE(2P0),caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_unpackneg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_unpackneg.c new file mode 100644 index 0000000000..32f40d32d5 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/ge25519_unpackneg.c @@ -0,0 +1,78 @@ +#include "crypto_verify_32.h" +#include "fe25519.h" +#include "ge25519.h" + +/* d */ +static const fe25519 ecd = {{929955233495203, 466365720129213, 1662059464998953, 2033849074728123, 1442794654840575}}; +/* sqrt(-1) */ +static const fe25519 sqrtm1 = {{1718705420411056, 234908883556509, 2233514472574048, 2117202627021982, 765476049583133}}; +static const fe25519 zero = {{0,0,0,0,0}}; + +static const fe25519 point26_x = {{0x5acbd527f9b28,0x18aa115446b7e,0xa5d6be91593e,0x38a6d55369cf,0x6fe31a937f53b}}; +static const fe25519 point26_y = {{26,0,0,0,0}}; + +/* return 1 on success, 0 otherwise */ +int ge25519_unpackneg_vartime(ge25519_p3 *r, const unsigned char p[32]) +{ + int ok = 1; + unsigned char pcheck[32]; + fe25519 t, chk, num, den, den2, den4, den6; + unsigned char par = p[31] >> 7; + + fe25519_setint(&r->z,1); + fe25519_unpack(&r->y, p); + + fe25519_pack(pcheck,&r->y); + pcheck[31] |= par<<7; + if (crypto_verify_32(pcheck,p)) ok = 0; + + fe25519_square(&num, &r->y); /* x = y^2 */ + fe25519_mul(&den, &num, &ecd); /* den = dy^2 */ + fe25519_sub(&num, &num, &r->z); /* x = y^2-1 */ + fe25519_add(&den, &r->z, &den); /* den = dy^2+1 */ + + /* Computation of sqrt(num/den) + 1.: computation of num^((p-5)/8)*den^((7p-35)/8) = (num*den^7)^((p-5)/8) + */ + fe25519_square(&den2, &den); + fe25519_square(&den4, &den2); + fe25519_mul(&den6, &den4, &den2); + fe25519_mul(&t, &den6, &num); + fe25519_mul(&t, &t, &den); + + fe25519_pow2523(&t, &t); + /* 2. computation of r->x = t * num * den^3 + */ + fe25519_mul(&t, &t, &num); + fe25519_mul(&t, &t, &den); + fe25519_mul(&t, &t, &den); + fe25519_mul(&r->x, &t, &den); + + /* 3. Check whether sqrt computation gave correct result, multiply by sqrt(-1) if not: + */ + fe25519_square(&chk, &r->x); + fe25519_mul(&chk, &chk, &den); + if (!fe25519_iseq_vartime(&chk, &num)) + fe25519_mul(&r->x, &r->x, &sqrtm1); + + /* 4. Now we have one of the two square roots, except if input was not a square + */ + fe25519_square(&chk, &r->x); + fe25519_mul(&chk, &chk, &den); + if (!fe25519_iseq_vartime(&chk,&num)) ok = 0; + + /* 5. Choose the desired square root according to parity: + */ + if(fe25519_getparity(&r->x) != (1-par)) + fe25519_sub(&r->x,&zero,&r->x); + if (par && fe25519_iseq_vartime(&r->x,&zero)) ok = 0; + + if (!ok) { /* treat all invalid points as point26 */ + r->x = point26_x; + r->y = point26_y; + } + + fe25519_mul(&r->t, &r->x, &r->y); + + return ok; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/implementors b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/implementors new file mode 100644 index 0000000000..9b5399a38f --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/implementors @@ -0,0 +1,5 @@ +Daniel J. Bernstein +Niels Duif +Tanja Lange +lead: Peter Schwabe +Bo-Yin Yang diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/mGnP.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/mGnP.c new file mode 100644 index 0000000000..22b0c03dbc --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/mGnP.c @@ -0,0 +1,126 @@ +#include "crypto_mGnP.h" + +#include "fe25519.h" +#include "sc25519.h" +#include "ge25519.h" +#include "shared-data.h" +#include "crypto_verify_32.h" + +static const fe25519 ec2d = {{1859910466990425, 932731440258426, 1072319116312658, 1815898335770999, 633789495995903}}; + +static void setneutral(ge25519 *r) +{ + fe25519_setint(&r->x,0); + fe25519_setint(&r->y,1); + fe25519_setint(&r->z,1); + fe25519_setint(&r->t,0); +} + +static void ge25519_double_scalarmult_precompute(ge25519_pniels *pre1, const ge25519_p3 *p1, unsigned long long PRE1_SIZE) +{ + ge25519_p3 d1; + ge25519_p1p1 t; + fe25519 d; + int i; + + pre1[0] = *(ge25519_pniels *)p1; + ge25519_dbl_p1p1(&t,(ge25519_p2 *)pre1); ge25519_p1p1_to_p3(&d1, &t); + /* Convert pre[0] to projective Niels representation */ + d = pre1[0].ysubx; + fe25519_sub(&pre1[0].ysubx, &pre1[0].xaddy, &pre1[0].ysubx); + fe25519_add(&pre1[0].xaddy, &pre1[0].xaddy, &d); + fe25519_mul(&pre1[0].t2d, &pre1[0].t2d, &ec2d); + + for(i=0;i= 0;--i) { + if (slide1[i] || slide2[i]) goto firstbit; + } + + for(;i>=0;i--) + { + firstbit: + + ge25519_dbl_p1p1(&t, (ge25519_p2 *)r); + + if(slide1[i]>0) + { + ge25519_p1p1_to_p3(r, &t); + ge25519_pnielsadd_p1p1(&t, r, &pre1[slide1[i]/2]); + } + else if(slide1[i]<0) + { + ge25519_p1p1_to_p3(r, &t); + neg = pre1[-slide1[i]/2]; + d = neg.ysubx; + neg.ysubx = neg.xaddy; + neg.xaddy = d; + fe25519_neg(&neg.t2d, &neg.t2d); + ge25519_pnielsadd_p1p1(&t, r, &neg); + } + + if(slide2[i]>0) + { + ge25519_p1p1_to_p3(r, &t); + ge25519_nielsadd_p1p1(&t, r, &pre2[slide2[i]/2]); + } + else if(slide2[i]<0) + { + ge25519_p1p1_to_p3(r, &t); + nneg = pre2[-slide2[i]/2]; + d = nneg.ysubx; + nneg.ysubx = nneg.xaddy; + nneg.xaddy = d; + fe25519_neg(&nneg.t2d, &nneg.t2d); + ge25519_nielsadd_p1p1(&t, r, &nneg); + } + + ge25519_p1p1_to_p2((ge25519_p2 *)r, &t); + } +} + +void crypto_mGnP( + unsigned char *Q, + const unsigned char *m, + const unsigned char *n, + const unsigned char *P +) +{ + sc25519 m_internal; + signed char m_slide[256]; + unsigned char mcheck[32]; + sc25519 n_internal; + signed char n_slide[256]; + ge25519 P_internal; + ge25519_pniels P_multiples[P_MULTIPLES]; + ge25519_p3 result; + int ok; + + sc25519_from32bytes(&m_internal,m); + sc25519_from64bytes(&n_internal,n); + ok = ge25519_unpackneg_vartime(&P_internal,P); + + sc25519_to32bytes(mcheck,&m_internal); + if (crypto_verify_32(mcheck,m)) ok = 0; + + sc25519_slide(m_slide,&m_internal,G_WINDOWSIZE); + sc25519_slide(n_slide,&n_internal,P_WINDOWSIZE); + ge25519_double_scalarmult_precompute(P_multiples,&P_internal,P_MULTIPLES); + + ge25519_double_scalarmult_process(&result,n_slide,m_slide,P_multiples,G_multiples); + ge25519_pack(Q,&result); + Q[32] = ok; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519.h new file mode 100644 index 0000000000..0c1e93918a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519.h @@ -0,0 +1,69 @@ +#ifndef SC25519_H +#define SC25519_H + +#define sc25519 CRYPTO_NAMESPACE(sc25519) +#define shortsc25519 CRYPTO_NAMESPACE(shortsc25519) +#define sc25519_from32bytes CRYPTO_NAMESPACE(sc25519_from32bytes) +#define shortsc25519_from16bytes CRYPTO_NAMESPACE(shortsc25519_from16bytes) +#define sc25519_from64bytes CRYPTO_NAMESPACE(sc25519_from64bytes) +#define sc25519_from_shortsc CRYPTO_NAMESPACE(sc25519_from_shortsc) +#define sc25519_to32bytes CRYPTO_NAMESPACE(sc25519_to32bytes) +#define sc25519_iszero_vartime CRYPTO_NAMESPACE(sc25519_iszero_vartime) +#define sc25519_isshort_vartime CRYPTO_NAMESPACE(sc25519_isshort_vartime) +#define sc25519_lt CRYPTO_SHARED_NAMESPACE(sc25519_lt) +#define sc25519_add CRYPTO_SHARED_NAMESPACE(sc25519_add) +#define sc25519_sub_nored CRYPTO_SHARED_NAMESPACE(sc25519_sub_nored) +#define sc25519_mul CRYPTO_NAMESPACE(sc25519_mul) +#define sc25519_mul_shortsc CRYPTO_NAMESPACE(sc25519_mul_shortsc) +#define sc25519_window4 CRYPTO_NAMESPACE(sc25519_window4) +#define sc25519_window5 CRYPTO_NAMESPACE(sc25519_window5) +#define sc25519_slide CRYPTO_NAMESPACE(sc25519_slide) +#define sc25519_2interleave2 CRYPTO_NAMESPACE(sc25519_2interleave2) +#define sc25519_barrett CRYPTO_SHARED_NAMESPACE(sc25519_barrett) + +typedef struct +{ + unsigned long long v[4]; +} +sc25519; + +typedef struct +{ + unsigned long long v[2]; +} +shortsc25519; + +void sc25519_from32bytes(sc25519 *r, const unsigned char x[32]); + +void sc25519_from64bytes(sc25519 *r, const unsigned char x[64]); + +void sc25519_from_shortsc(sc25519 *r, const shortsc25519 *x); + +void sc25519_to32bytes(unsigned char r[32], const sc25519 *x); + +int sc25519_iszero_vartime(const sc25519 *x); + +int sc25519_lt(const sc25519 *x, const sc25519 *y); + +void sc25519_add(sc25519 *r, const sc25519 *x, const sc25519 *y); + +void sc25519_sub_nored(sc25519 *r, const sc25519 *x, const sc25519 *y); + +void sc25519_mul(sc25519 *r, const sc25519 *x, const sc25519 *y); + +void sc25519_mul_shortsc(sc25519 *r, const sc25519 *x, const shortsc25519 *y); + +/* Convert s into a representation of the form \sum_{i=0}^{63}r[i]2^(4*i) + * with r[i] in {-8,...,7} + */ +void sc25519_window4(signed char r[64], const sc25519 *s); + +void sc25519_window5(signed char r[51], const sc25519 *s); + +void sc25519_slide(signed char r[256], const sc25519 *s, int swindowsize); + +void sc25519_2interleave2(unsigned char r[127], const sc25519 *s1, const sc25519 *s2); + +void sc25519_barrett(sc25519 *r, unsigned long long x[8]); + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_barrett.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_barrett.S new file mode 120000 index 0000000000..26a5f8a1c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_barrett.S @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_barrett.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_from64bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_from64bytes.c new file mode 120000 index 0000000000..f6a000bcdd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_from64bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from64bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_slide.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_slide.c new file mode 100644 index 0000000000..b8cd9ba722 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_slide.c @@ -0,0 +1,51 @@ +// linker define sc25519_slide + +#include "sc25519.h" + +void sc25519_slide(signed char r[256], const sc25519 *s, int swindowsize) +{ + int i,j,k,b,m=(1<<(swindowsize-1))-1, soplen=256; + unsigned long long sv0 = s->v[0]; + unsigned long long sv1 = s->v[1]; + unsigned long long sv2 = s->v[2]; + unsigned long long sv3 = s->v[3]; + + /* first put the binary expansion into r */ + for(i=0;i<64;i++) { + r[i] = sv0 & 1; + r[i+64] = sv1 & 1; + r[i+128] = sv2 & 1; + r[i+192] = sv3 & 1; + sv0 >>= 1; + sv1 >>= 1; + sv2 >>= 1; + sv3 >>= 1; + } + + /* Making it sliding window */ + for (j = 0;j < soplen;++j) + { + if (r[j]) { + for (b = 1;b < soplen - j && b <= 6;++b) { + if (r[j] + (r[j + b] << b) <= m) + { + r[j] += r[j + b] << b; r[j + b] = 0; + } + else if (r[j] - (r[j + b] << b) >= -m) + { + r[j] -= r[j + b] << b; + for (k = j + b;k < soplen;++k) + { + if (!r[k]) { + r[k] = 1; + break; + } + r[k] = 0; + } + } + else if (r[j + b]) + break; + } + } + } +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_to32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_to32bytes.c new file mode 120000 index 0000000000..6930ca05f6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/sc25519_to32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_to32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/shared-consts.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/shared-consts.c new file mode 100644 index 0000000000..98bd6ac813 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/shared-consts.c @@ -0,0 +1,45 @@ +// linker define REDMASK51 +// linker define 121666_213 +// linker define 2P0 +// linker define 2P1234 +// linker define 4P0 +// linker define 4P1234 +// linker define MU0 +// linker define MU1 +// linker define MU2 +// linker define MU3 +// linker define MU4 +// linker define ORDER0 +// linker define ORDER1 +// linker define ORDER2 +// linker define ORDER3 +// linker define EC2D0 +// linker define EC2D1 +// linker define EC2D2 +// linker define EC2D3 +// linker define EC2D4 +// linker define _38 + +#include "crypto_uint64.h" + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(REDMASK51) = 0x0007FFFFFFFFFFFF; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(121666_213) = 996687872; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(2P0) = 0xFFFFFFFFFFFDA; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(2P1234) = 0xFFFFFFFFFFFFE; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(4P0) = 0x1FFFFFFFFFFFB4; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(4P1234) = 0x1FFFFFFFFFFFFC; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU0) = 0xED9CE5A30A2C131B; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU1) = 0x2106215D086329A7; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU2) = 0xFFFFFFFFFFFFFFEB; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU3) = 0xFFFFFFFFFFFFFFFF; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU4) = 0x000000000000000F; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER0) = 0x5812631A5CF5D3ED; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER1) = 0x14DEF9DEA2F79CD6; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER2) = 0x0000000000000000; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER3) = 0x1000000000000000; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D0) = 1859910466990425; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D1) = 932731440258426; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D2) = 1072319116312658; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D3) = 1815898335770999; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D4) = 633789495995903; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(_38) = 38; diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/shared-data.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/shared-data.c new file mode 100644 index 0000000000..bd366a074b --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/shared-data.c @@ -0,0 +1,5 @@ +#include "shared-data.h" + +const ge25519_niels G_multiples[G_MULTIPLES] = { + #include "ge25519_base_slide_multiples.data" +}; diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/shared-data.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/shared-data.h new file mode 100644 index 0000000000..7473cec8e3 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-51/shared-data.h @@ -0,0 +1,16 @@ +#ifndef shared_data_h +#define shared_data_h + +#include "ge25519.h" + +// warning: these constants are not encapsulated + +#define P_WINDOWSIZE 5 +#define P_MULTIPLES (1<<(P_WINDOWSIZE-2)) +#define G_WINDOWSIZE 7 +#define G_MULTIPLES (1<<(G_WINDOWSIZE-2)) +#define G_multiples CRYPTO_SHARED_NAMESPACE(G_multiples) + +extern const ge25519_niels G_multiples[G_MULTIPLES]; + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/architectures b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/architectures new file mode 120000 index 0000000000..f92e7d6fe1 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/architectures @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519.h new file mode 100644 index 0000000000..222e11e8d0 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519.h @@ -0,0 +1,64 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_iszero_vartime CRYPTO_NAMESPACE(fe25519_iszero_vartime) +#define fe25519_iseq_vartime CRYPTO_NAMESPACE(fe25519_iseq_vartime) +#define fe25519_cmov CRYPTO_NAMESPACE(fe25519_cmov) +#define fe25519_setint CRYPTO_NAMESPACE(fe25519_setint) +#define fe25519_neg CRYPTO_NAMESPACE(fe25519_neg) +#define fe25519_getparity CRYPTO_NAMESPACE(fe25519_getparity) +#define fe25519_add CRYPTO_SHARED_NAMESPACE(fe25519_add) +#define fe25519_sub CRYPTO_SHARED_NAMESPACE(fe25519_sub) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_mul121666 CRYPTO_NAMESPACE(fe25519_mul121666) +#define fe25519_square CRYPTO_SHARED_NAMESPACE(fe25519_square) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) +#define fe25519_pow2523 CRYPTO_NAMESPACE(fe25519_pow2523) + +typedef struct +{ + unsigned long long v[4]; +} +fe25519; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_cmov(fe25519 *r, const fe25519 *x, unsigned char b); + +void fe25519_cswap(fe25519 *r, fe25519 *x, unsigned char b); + +void fe25519_setint(fe25519 *r, unsigned int v); + +void fe25519_neg(fe25519 *r, const fe25519 *x); + +unsigned char fe25519_getparity(const fe25519 *x); + +int fe25519_iszero_vartime(const fe25519 *x); + +int fe25519_iseq_vartime(const fe25519 *x, const fe25519 *y); + +void fe25519_add(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_sub(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_mul121666(fe25519 *r, const fe25519 *x); + +void fe25519_square(fe25519 *r, const fe25519 *x); + +void fe25519_pow(fe25519 *r, const fe25519 *x, const unsigned char *e); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +void fe25519_pow2523(fe25519 *r, const fe25519 *x); + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_add.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_add.S new file mode 100644 index 0000000000..f9d0b90f46 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_add.S @@ -0,0 +1,190 @@ +// linker define fe25519_add + +# qhasm: int64 rp + +# qhasm: int64 xp + +# qhasm: int64 yp + +# qhasm: input rp + +# qhasm: input xp + +# qhasm: input yp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 addt0 + +# qhasm: int64 addt1 + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(fe25519_add) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_add) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_add) +_CRYPTO_SHARED_NAMESPACE(fe25519_add): +CRYPTO_SHARED_NAMESPACE(fe25519_add): +mov %rsp,%r11 +and $31,%r11 +add $0,%r11 +sub %r11,%rsp + +# qhasm: r0 = *(uint64 *)(xp + 0) +# asm 1: movq 0(r0=int64#4 +# asm 2: movq 0(r0=%rcx +movq 0(%rsi),%rcx + +# qhasm: r1 = *(uint64 *)(xp + 8) +# asm 1: movq 8(r1=int64#5 +# asm 2: movq 8(r1=%r8 +movq 8(%rsi),%r8 + +# qhasm: r2 = *(uint64 *)(xp + 16) +# asm 1: movq 16(r2=int64#6 +# asm 2: movq 16(r2=%r9 +movq 16(%rsi),%r9 + +# qhasm: r3 = *(uint64 *)(xp + 24) +# asm 1: movq 24(r3=int64#2 +# asm 2: movq 24(r3=%rsi +movq 24(%rsi),%rsi + +# qhasm: carry? r0 += *(uint64 *)(yp + 0) +# asm 1: addq 0(addt0=int64#3 +# asm 2: mov $0,>addt0=%rdx +mov $0,%rdx + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#7 +# asm 2: mov $38,>addt1=%rax +mov $38,%rax + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: r0 = *(uint64 *) (rp + 0) +# asm 1: movq 0(r0=int64#2 +# asm 2: movq 0(r0=%rsi +movq 0(%rdi),%rsi + +# qhasm: r1 = *(uint64 *) (rp + 8) +# asm 1: movq 8(r1=int64#3 +# asm 2: movq 8(r1=%rdx +movq 8(%rdi),%rdx + +# qhasm: r2 = *(uint64 *) (rp + 16) +# asm 1: movq 16(r2=int64#4 +# asm 2: movq 16(r2=%rcx +movq 16(%rdi),%rcx + +# qhasm: r3 = *(uint64 *) (rp + 24) +# asm 1: movq 24(r3=int64#5 +# asm 2: movq 24(r3=%r8 +movq 24(%rdi),%r8 + +# qhasm: t0 = r0 +# asm 1: mov t0=int64#6 +# asm 2: mov t0=%r9 +mov %rsi,%r9 + +# qhasm: t1 = r1 +# asm 1: mov t1=int64#7 +# asm 2: mov t1=%rax +mov %rdx,%rax + +# qhasm: t2 = r2 +# asm 1: mov t2=int64#8 +# asm 2: mov t2=%r10 +mov %rcx,%r10 + +# qhasm: t3 = r3 +# asm 1: mov t3=int64#9 +# asm 2: mov t3=%r11 +mov %r8,%r11 + +# qhasm: two63 = 1 +# asm 1: mov $1,>two63=int64#10 +# asm 2: mov $1,>two63=%r12 +mov $1,%r12 + +# qhasm: two63 <<= 63 +# asm 1: shl $63,t0=int64#6 +# asm 2: mov t0=%r9 +mov %rsi,%r9 + +# qhasm: t1 = r1 +# asm 1: mov t1=int64#7 +# asm 2: mov t1=%rax +mov %rdx,%rax + +# qhasm: t2 = r2 +# asm 1: mov t2=int64#8 +# asm 2: mov t2=%r10 +mov %rcx,%r10 + +# qhasm: t3 = r3 +# asm 1: mov t3=int64#9 +# asm 2: mov t3=%r11 +mov %r8,%r11 + +# qhasm: carry? t0 += 19 +# asm 1: add $19,caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_getparity.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_getparity.c new file mode 120000 index 0000000000..d5e8b184b4 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_getparity.c @@ -0,0 +1 @@ +../amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_invert.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_invert.c new file mode 120000 index 0000000000..06cd19180a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_iseq.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_iseq.c new file mode 100644 index 0000000000..fe6fef59c5 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_iseq.c @@ -0,0 +1,17 @@ +// linker define fe25519_iseq_vartime +// linker use fe25519_freeze + +#include "fe25519.h" + +int fe25519_iseq_vartime(const fe25519 *x, const fe25519 *y) +{ + fe25519 t1 = *x; + fe25519 t2 = *y; + fe25519_freeze(&t1); + fe25519_freeze(&t2); + if(t1.v[0] != t2.v[0]) return 0; + if(t1.v[1] != t2.v[1]) return 0; + if(t1.v[2] != t2.v[2]) return 0; + if(t1.v[3] != t2.v[3]) return 0; + return 1; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_mul.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_mul.S new file mode 100644 index 0000000000..0436da3bba --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_mul.S @@ -0,0 +1,867 @@ +// linker define fe25519_mul +// linker use 38 + +# qhasm: int64 rp + +# qhasm: int64 xp + +# qhasm: int64 yp + +# qhasm: input rp + +# qhasm: input xp + +# qhasm: input yp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 mulr4 + +# qhasm: int64 mulr5 + +# qhasm: int64 mulr6 + +# qhasm: int64 mulr7 + +# qhasm: int64 mulr8 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mulx0 + +# qhasm: int64 mulx1 + +# qhasm: int64 mulx2 + +# qhasm: int64 mulx3 + +# qhasm: int64 mulc + +# qhasm: int64 mulzero + +# qhasm: int64 muli38 + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(fe25519_mul) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_mul) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_mul) +_CRYPTO_SHARED_NAMESPACE(fe25519_mul): +CRYPTO_SHARED_NAMESPACE(fe25519_mul): +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: yp = yp +# asm 1: mov yp=int64#4 +# asm 2: mov yp=%rcx +mov %rdx,%rcx + +# qhasm: mulr4 = 0 +# asm 1: mov $0,>mulr4=int64#5 +# asm 2: mov $0,>mulr4=%r8 +mov $0,%r8 + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#6 +# asm 2: mov $0,>mulr5=%r9 +mov $0,%r9 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#8 +# asm 2: mov $0,>mulr6=%r10 +mov $0,%r10 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#9 +# asm 2: mov $0,>mulr7=%r11 +mov $0,%r11 + +# qhasm: mulx0 = *(uint64 *)(xp + 0) +# asm 1: movq 0(mulx0=int64#10 +# asm 2: movq 0(mulx0=%r12 +movq 0(%rsi),%r12 + +# qhasm: mulrax = *(uint64 *)(yp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul r0=int64#11 +# asm 2: mov r0=%r13 +mov %rax,%r13 + +# qhasm: r1 = mulrdx +# asm 1: mov r1=int64#12 +# asm 2: mov r1=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(yp + 8) +# asm 1: movq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul r2=int64#13 +# asm 2: mov $0,>r2=%r15 +mov $0,%r15 + +# qhasm: r2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul r3=int64#14 +# asm 2: mov $0,>r3=%rbx +mov $0,%rbx + +# qhasm: r3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#10 +# asm 2: movq 8(mulx1=%r12 +movq 8(%rsi),%r12 + +# qhasm: mulrax = *(uint64 *)(yp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#10 +# asm 2: movq 16(mulx2=%r12 +movq 16(%rsi),%r12 + +# qhasm: mulrax = *(uint64 *)(yp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#2 +# asm 2: movq 24(mulx3=%rsi +movq 24(%rsi),%rsi + +# qhasm: mulrax = *(uint64 *)(yp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#10 +# asm 2: mov $0,>mulc=%r12 +mov $0,%r12 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#10 +# asm 2: mov $0,>mulc=%r12 +mov $0,%r12 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#10 +# asm 2: mov $0,>mulc=%r12 +mov $0,%r12 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#2 +# asm 2: mov mulr4=%rsi +mov %rax,%rsi + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#4 +# asm 2: mov mulr5=%rcx +mov %rdx,%rcx + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r11,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#2 +# asm 2: mov $0,>mulzero=%rsi +mov $0,%rsi + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#3 +# asm 2: imulq $38,mulr8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? r0 += mulr8 +# asm 1: add mulzero=int64#2 +# asm 2: imulq $38,mulzero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: r0 += mulzero +# asm 1: add caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_neg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_neg.c new file mode 120000 index 0000000000..783c764bfa --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_neg.c @@ -0,0 +1 @@ +../amd64-51/fe25519_neg.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_pack.c new file mode 100644 index 0000000000..d6ad0170ad --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_pack.c @@ -0,0 +1,16 @@ +// linker define fe25519_pack +// linker use fe25519_freeze + +#include "fe25519.h" + +/* Assumes input x being reduced below 2^255 */ +void fe25519_pack(unsigned char r[32], const fe25519 *x) +{ + int i; + fe25519 t; + t = *x; + fe25519_freeze(&t); + /* assuming little-endian */ + for(i=0;i<32;i++) r[i] = i[(unsigned char *)&t.v]; +} + diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_pow2523.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_pow2523.c new file mode 100644 index 0000000000..3e8bdf1541 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_pow2523.c @@ -0,0 +1,59 @@ +// linker define fe25519_pow2523 +// linker use fe25519_mul +// linker use fe25519_square + +#include "fe25519.h" + +void fe25519_pow2523(fe25519 *r, const fe25519 *x) +{ + fe25519 z2; + fe25519 z9; + fe25519 z11; + fe25519 z2_5_0; + fe25519 z2_10_0; + fe25519 z2_20_0; + fe25519 z2_50_0; + fe25519 z2_100_0; + fe25519 t; + int i; + + /* 2 */ fe25519_square(&z2,x); + /* 4 */ fe25519_square(&t,&z2); + /* 8 */ fe25519_square(&t,&t); + /* 9 */ fe25519_mul(&z9,&t,x); + /* 11 */ fe25519_mul(&z11,&z9,&z2); + /* 22 */ fe25519_square(&t,&z11); + /* 2^5 - 2^0 = 31 */ fe25519_mul(&z2_5_0,&t,&z9); + + /* 2^6 - 2^1 */ fe25519_square(&t,&z2_5_0); + /* 2^10 - 2^5 */ for (i = 1;i < 5;i++) { fe25519_square(&t,&t); } + /* 2^10 - 2^0 */ fe25519_mul(&z2_10_0,&t,&z2_5_0); + + /* 2^11 - 2^1 */ fe25519_square(&t,&z2_10_0); + /* 2^20 - 2^10 */ for (i = 1;i < 10;i++) { fe25519_square(&t,&t); } + /* 2^20 - 2^0 */ fe25519_mul(&z2_20_0,&t,&z2_10_0); + + /* 2^21 - 2^1 */ fe25519_square(&t,&z2_20_0); + /* 2^40 - 2^20 */ for (i = 1;i < 20;i++) { fe25519_square(&t,&t); } + /* 2^40 - 2^0 */ fe25519_mul(&t,&t,&z2_20_0); + + /* 2^41 - 2^1 */ fe25519_square(&t,&t); + /* 2^50 - 2^10 */ for (i = 1;i < 10;i++) { fe25519_square(&t,&t); } + /* 2^50 - 2^0 */ fe25519_mul(&z2_50_0,&t,&z2_10_0); + + /* 2^51 - 2^1 */ fe25519_square(&t,&z2_50_0); + /* 2^100 - 2^50 */ for (i = 1;i < 50;i++) { fe25519_square(&t,&t); } + /* 2^100 - 2^0 */ fe25519_mul(&z2_100_0,&t,&z2_50_0); + + /* 2^101 - 2^1 */ fe25519_square(&t,&z2_100_0); + /* 2^200 - 2^100 */ for (i = 1;i < 100;i++) { fe25519_square(&t,&t); } + /* 2^200 - 2^0 */ fe25519_mul(&t,&t,&z2_100_0); + + /* 2^201 - 2^1 */ fe25519_square(&t,&t); + /* 2^250 - 2^50 */ for (i = 1;i < 50;i++) { fe25519_square(&t,&t); } + /* 2^250 - 2^0 */ fe25519_mul(&t,&t,&z2_50_0); + + /* 2^251 - 2^1 */ fe25519_square(&t,&t); + /* 2^252 - 2^2 */ fe25519_square(&t,&t); + /* 2^252 - 3 */ fe25519_mul(r,&t,x); +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_setint.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_setint.c new file mode 100644 index 0000000000..a6b46de879 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_setint.c @@ -0,0 +1,11 @@ +// linker define fe25519_setint + +#include "fe25519.h" + +void fe25519_setint(fe25519 *r, unsigned int v) +{ + r->v[0] = v; + r->v[1] = 0; + r->v[2] = 0; + r->v[3] = 0; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_square.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_square.S new file mode 100644 index 0000000000..51823b9276 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_square.S @@ -0,0 +1,641 @@ +// linker define fe25519_square +// linker use 38 + +# qhasm: int64 rp + +# qhasm: int64 xp + +# qhasm: input rp + +# qhasm: input xp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 squarer4 + +# qhasm: int64 squarer5 + +# qhasm: int64 squarer6 + +# qhasm: int64 squarer7 + +# qhasm: int64 squarer8 + +# qhasm: int64 squarerax + +# qhasm: int64 squarerdx + +# qhasm: int64 squaret1 + +# qhasm: int64 squaret2 + +# qhasm: int64 squaret3 + +# qhasm: int64 squarec + +# qhasm: int64 squarezero + +# qhasm: int64 squarei38 + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(fe25519_square) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_square) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_square) +_CRYPTO_SHARED_NAMESPACE(fe25519_square): +CRYPTO_SHARED_NAMESPACE(fe25519_square): +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#4 +# asm 2: mov $0,>squarer7=%rcx +mov $0,%rcx + +# qhasm: squarerax = *(uint64 *)(xp + 8) +# asm 1: movq 8(squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 0) +# asm 1: mulq 0(r1=int64#5 +# asm 2: mov r1=%r8 +mov %rax,%r8 + +# qhasm: r2 = squarerdx +# asm 1: mov r2=int64#6 +# asm 2: mov r2=%r9 +mov %rdx,%r9 + +# qhasm: squarerax = *(uint64 *)(xp + 16) +# asm 1: movq 16(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 8) +# asm 1: mulq 8(r3=int64#8 +# asm 2: mov r3=%r10 +mov %rax,%r10 + +# qhasm: squarer4 = squarerdx +# asm 1: mov squarer4=int64#9 +# asm 2: mov squarer4=%r11 +mov %rdx,%r11 + +# qhasm: squarerax = *(uint64 *)(xp + 24) +# asm 1: movq 24(squarerax=int64#7 +# asm 2: movq 24(squarerax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 16) +# asm 1: mulq 16(squarer5=int64#10 +# asm 2: mov squarer5=%r12 +mov %rax,%r12 + +# qhasm: squarer6 = squarerdx +# asm 1: mov squarer6=int64#11 +# asm 2: mov squarer6=%r13 +mov %rdx,%r13 + +# qhasm: squarerax = *(uint64 *)(xp + 16) +# asm 1: movq 16(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 0) +# asm 1: mulq 0(squarerax=int64#7 +# asm 2: movq 24(squarerax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 8) +# asm 1: mulq 8(squarerax=int64#7 +# asm 2: movq 24(squarerax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 0) +# asm 1: mulq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 0) +# asm 1: mulq 0(r0=int64#12 +# asm 2: mov r0=%r14 +mov %rax,%r14 + +# qhasm: squaret1 = squarerdx +# asm 1: mov squaret1=int64#13 +# asm 2: mov squaret1=%r15 +mov %rdx,%r15 + +# qhasm: squarerax = *(uint64 *)(xp + 8) +# asm 1: movq 8(squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 8) +# asm 1: mulq 8(squaret2=int64#14 +# asm 2: mov squaret2=%rbx +mov %rax,%rbx + +# qhasm: squaret3 = squarerdx +# asm 1: mov squaret3=int64#15 +# asm 2: mov squaret3=%rbp +mov %rdx,%rbp + +# qhasm: squarerax = *(uint64 *)(xp + 16) +# asm 1: movq 16(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 16) +# asm 1: mulq 16(squarerax=int64#7 +# asm 2: movq 24(squarerax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 24) +# asm 1: mulq 24(squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r11,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: squarer4 = squarerax +# asm 1: mov squarer4=int64#2 +# asm 2: mov squarer4=%rsi +mov %rax,%rsi + +# qhasm: squarerax = squarer5 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r12,%rax + +# qhasm: squarer5 = squarerdx +# asm 1: mov squarer5=int64#9 +# asm 2: mov squarer5=%r11 +mov %rdx,%r11 + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? squarer5 += squarerax +# asm 1: add squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r13,%rax + +# qhasm: squarer6 = 0 +# asm 1: mov $0,>squarer6=int64#10 +# asm 2: mov $0,>squarer6=%r12 +mov $0,%r12 + +# qhasm: squarer6 += squarerdx + carry +# asm 1: adc squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rcx,%rax + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#4 +# asm 2: mov $0,>squarer7=%rcx +mov $0,%rcx + +# qhasm: squarer7 += squarerdx + carry +# asm 1: adc squarer8=int64#7 +# asm 2: mov $0,>squarer8=%rax +mov $0,%rax + +# qhasm: squarer8 += squarerdx + carry +# asm 1: adc squarezero=int64#2 +# asm 2: mov $0,>squarezero=%rsi +mov $0,%rsi + +# qhasm: squarer8 += squarezero + carry +# asm 1: adc squarer8=int64#3 +# asm 2: imulq $38,squarer8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? r0 += squarer8 +# asm 1: add squarezero=int64#2 +# asm 2: imulq $38,squarezero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: r0 += squarezero +# asm 1: add caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_sub.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_sub.S new file mode 100644 index 0000000000..714b180d9a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/fe25519_sub.S @@ -0,0 +1,190 @@ +// linker define fe25519_sub + +# qhasm: int64 rp + +# qhasm: int64 xp + +# qhasm: int64 yp + +# qhasm: input rp + +# qhasm: input xp + +# qhasm: input yp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 subt0 + +# qhasm: int64 subt1 + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(fe25519_sub) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_sub) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_sub) +_CRYPTO_SHARED_NAMESPACE(fe25519_sub): +CRYPTO_SHARED_NAMESPACE(fe25519_sub): +mov %rsp,%r11 +and $31,%r11 +add $0,%r11 +sub %r11,%rsp + +# qhasm: r0 = *(uint64 *)(xp + 0) +# asm 1: movq 0(r0=int64#4 +# asm 2: movq 0(r0=%rcx +movq 0(%rsi),%rcx + +# qhasm: r1 = *(uint64 *)(xp + 8) +# asm 1: movq 8(r1=int64#5 +# asm 2: movq 8(r1=%r8 +movq 8(%rsi),%r8 + +# qhasm: r2 = *(uint64 *)(xp + 16) +# asm 1: movq 16(r2=int64#6 +# asm 2: movq 16(r2=%r9 +movq 16(%rsi),%r9 + +# qhasm: r3 = *(uint64 *)(xp + 24) +# asm 1: movq 24(r3=int64#2 +# asm 2: movq 24(r3=%rsi +movq 24(%rsi),%rsi + +# qhasm: carry? r0 -= *(uint64 *)(yp + 0) +# asm 1: subq 0(subt0=int64#3 +# asm 2: mov $0,>subt0=%rdx +mov $0,%rdx + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#7 +# asm 2: mov $38,>subt1=%rax +mov $38,%rax + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae v[0] = *(unsigned long long *)x; + r->v[1] = *(((unsigned long long *)x)+1); + r->v[2] = *(((unsigned long long *)x)+2); + r->v[3] = *(((unsigned long long *)x)+3); + r->v[3] &= 0x7fffffffffffffffULL; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519.h new file mode 100644 index 0000000000..4bde00e6fe --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519.h @@ -0,0 +1,94 @@ +#ifndef GE25519_H +#define GE25519_H + +#include "fe25519.h" +#include "sc25519.h" + +#define ge25519 CRYPTO_NAMESPACE(ge25519) +#define ge25519_base CRYPTO_NAMESPACE(ge25519_base) +#define ge25519_unpackneg_vartime CRYPTO_NAMESPACE(unpackneg_vartime) +#define ge25519_pack CRYPTO_NAMESPACE(ge25519_pack) +#define ge25519_isneutral_vartime CRYPTO_NAMESPACE(isneutral_vartime) +#define ge25519_add CRYPTO_NAMESPACE(ge25519_add) +#define ge25519_double CRYPTO_NAMESPACE(ge25519_double) +#define ge25519_double_scalarmult_vartime CRYPTO_NAMESPACE(double_scalarmult_vartime) +#define ge25519_multi_scalarmult_vartime CRYPTO_NAMESPACE(ge25519_multi_scalarmult_vartime) +#define ge25519_scalarmult_base CRYPTO_NAMESPACE(ge25519_scalarmult_base) +#define ge25519_p1p1_to_p2 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2) +#define ge25519_p1p1_to_p3 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3) +#define ge25519_add_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_add_p1p1) +#define ge25519_dbl_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1) +#define choose_t CRYPTO_SHARED_NAMESPACE(choose_t) +#define ge25519_nielsadd2 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2) +#define ge25519_nielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1) +#define ge25519_pnielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1) + +#define ge25519_p3 ge25519 + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; + fe25519 t; +} ge25519; + +typedef struct +{ + fe25519 x; + fe25519 z; + fe25519 y; + fe25519 t; +} ge25519_p1p1; + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; +} ge25519_p2; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 t2d; +} ge25519_niels; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 z; + fe25519 t2d; +} ge25519_pniels; + +extern void ge25519_p1p1_to_p2(ge25519_p2 *r, const ge25519_p1p1 *p); +extern void ge25519_p1p1_to_p3(ge25519_p3 *r, const ge25519_p1p1 *p); +extern void ge25519_add_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_p3 *q); +extern void ge25519_dbl_p1p1(ge25519_p1p1 *r, const ge25519_p2 *p); +extern void choose_t(ge25519_niels *t, unsigned long long pos, signed long long b, const ge25519_niels *base_multiples); +extern void ge25519_nielsadd2(ge25519_p3 *r, const ge25519_niels *q); +extern void ge25519_nielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_niels *q); +extern void ge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_pniels *q); + +extern const ge25519 ge25519_base; + +extern int ge25519_unpackneg_vartime(ge25519 *r, const unsigned char p[32]); + +extern void ge25519_pack(unsigned char r[32], const ge25519 *p); + +extern int ge25519_isneutral_vartime(const ge25519 *p); + +extern void ge25519_add(ge25519 *r, const ge25519 *p, const ge25519 *q); + +extern void ge25519_double(ge25519 *r, const ge25519 *p); + +/* computes [s1]p1 + [s2]ge25519_base */ +extern void ge25519_double_scalarmult_vartime(ge25519 *r, const ge25519 *p1, const sc25519 *s1, const sc25519 *s2); + +extern void ge25519_multi_scalarmult_vartime(ge25519 *r, ge25519 *p, sc25519 *s, const unsigned long long npoints); + +extern void ge25519_scalarmult_base(ge25519 *r, const sc25519 *s); + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_base_slide_multiples.data b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_base_slide_multiples.data new file mode 100644 index 0000000000..32a5d4747c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_base_slide_multiples.data @@ -0,0 +1,96 @@ +{{{0x9d103905d740913e, 0xfd399f05d140beb3, 0xa5c18434688f8a09, 0x44fd2f9298f81267}}, + {{0x2fbc93c6f58c3b85, 0xcf932dc6fb8c0e19, 0x270b4898643d42c2, 0x07cf9d3a33d4ba65}}, + {{0xabc91205877aaa68, 0x26d9e823ccaac49e, 0x5a1b7dcbdd43598c, 0x6f117b689f0c65a8}}}, +{{{0x56611fe8a4fcd265, 0x3bd353fde5c1ba7d, 0x8131f31a214bd6bd, 0x2ab91587555bda62}}, + {{0xaf25b0a84cee9730, 0x025a8430e8864b8a, 0xc11b50029f016732, 0x7a164e1b9a80f8f4}}, + {{0x14ae933f0dd0d889, 0x589423221c35da62, 0xd170e5458cf2db4c, 0x5a2826af12b9b4c6}}}, +{{{0x7f9182c3a447d6ba, 0xd50014d14b2729b7, 0xe33cf11cb864a087, 0x154a7e73eb1b55f3}}, + {{0xa212bc4408a5bb33, 0x8d5048c3c75eed02, 0xdd1beb0c5abfec44, 0x2945ccf146e206eb}}, + {{0xbcbbdbf1812a8285, 0x270e0807d0bdd1fc, 0xb41b670b1bbda72d, 0x43aabe696b3bb69a}}}, +{{{0xba6f2c9aaa3221b1, 0x6ca021533bba23a7, 0x9dea764f92192c3a, 0x1d6edd5d2e5317e0}}, + {{0x6b1a5cd0944ea3bf, 0x7470353ab39dc0d2, 0x71b2528228542e49, 0x461bea69283c927e}}, + {{0xf1836dc801b8b3a2, 0xb3035f47053ea49a, 0x529c41ba5877adf3, 0x7a9fbb1c6a0f90a7}}}, +{{{0xf36e217e039d8064, 0x98a081b6f520419b, 0x96cbc608e75eb044, 0x49c05a51fadc9c8f}}, + {{0x9b2e678aa6a8632f, 0xa6509e6f51bc46c5, 0xceb233c9c686f5b5, 0x34b9ed338add7f59}}, + {{0x06b4e8bf9045af1b, 0xe2ff83e8a719d22f, 0xaaf6fc2993d4cf16, 0x73c172021b008b06}}}, +{{{0x315f5b0249864348, 0x3ed6b36977088381, 0xa3a075556a8deb95, 0x18ab598029d5c77f}}, + {{0x2fbf00848a802ade, 0xe5d9fecf02302e27, 0x113e847117703406, 0x4275aae2546d8faf}}, + {{0xd82b2cc5fd6089e9, 0x031eb4a13282e4a4, 0x44311199b51a8622, 0x3dc65522b53df948}}}, +{{{0x506f013b327fbf93, 0xaefcebc99b776f6b, 0x9d12b232aaad5968, 0x0267882d176024a7}}, + {{0xbf70c222a2007f6d, 0xbf84b39ab5bcdedb, 0x537a0e12fb07ba07, 0x234fd7eec346f241}}, + {{0x5360a119732ea378, 0x2437e6b1df8dd471, 0xa2ef37f891a7e533, 0x497ba6fdaa097863}}}, +{{{0x040bcd86468ccf0b, 0xd3829ba42a9910d6, 0x7508300807b25192, 0x43b5cd4218d05ebf}}, + {{0x24cecc0313cfeaa0, 0x8648c28d189c246d, 0x2dbdbdfac1f2d4d0, 0x61e22917f12de72b}}, + {{0x5d9a762f9bd0b516, 0xeb38af4e373fdeee, 0x032e5a7d93d64270, 0x511d61210ae4d842}}}, +{{{0x081386484420de87, 0x8a1cf016b592edb4, 0x39fa4e2729942d25, 0x71a7fe6fe2482810}}, + {{0x92c676ef950e9d81, 0xa54620cdc0d7044f, 0xaa9b36646f8f1248, 0x6d325924ddb855e3}}, + {{0x6c7182b8a5c8c854, 0x33fd1479fe5f2a03, 0x72cf591883778d0c, 0x4746c4b6559eeaa9}}}, +{{{0x348546c864741147, 0x7d35aedd0efcc849, 0xff939a760672a332, 0x219663497db5e6d6}}, + {{0xd3777b3c6dc69a2b, 0xdefab2276f89f617, 0x45651cf7b53a16b5, 0x5c9a51de34fe9fb7}}, + {{0xf510f1cf79f10e67, 0xffdddaa1e658515b, 0x09c3a71710142277, 0x4804503c608223bb}}}, +{{{0x3b6821d23a36d175, 0xbbb40aa7e99b9e32, 0x5d9e5ce420838a47, 0x771e098858de4c5e}}, + {{0xc4249ed02ca37fc7, 0xa059a0e3a615acab, 0x88a96ed7c96e0e23, 0x553398a51650696d}}, + {{0x9a12f5d278451edf, 0x3ada5d7985899ccb, 0x477f4a2d9fa59508, 0x5a5ed1d68ff5a611}}}, +{{{0xbae5e0c558527359, 0x392e5c19cadb9d7e, 0x28653c1eda1cabe9, 0x019b60135fefdc44}}, + {{0x1195122afe150e83, 0xcf209a257e4b35d8, 0x7387f8291e711e20, 0x44acb897d8bf92f0}}, + {{0x1e6068145e134b83, 0xc4f5e64f24304c16, 0x506e88a8fc1a3ed7, 0x150c49fde6ad2f92}}}, +{{{0xb849863c9cdca868, 0xc83f44dbb8714ad0, 0xfe3ee3560c36168d, 0x78a6d7791e05fbc1}}, + {{0x8e7bf29509471138, 0x5d6fef394f75a651, 0x10af79c425a708ad, 0x6b2b5a075bb99922}}, + {{0x58bf704b47a0b976, 0xa601b355741748d5, 0xaa2b1fb1d542f590, 0x725c7ffc4ad55d00}}}, +{{{0x91802bf71cd098c0, 0xfe416ca4ed5e6366, 0xdf585d714902994c, 0x4cd54625f855fae7}}, + {{0xe4426715d1cf99b2, 0x7352d51102a20d34, 0x23d1157b8b12109f, 0x794cc9277cb1f3a3}}, + {{0x4af6c426c2ac5053, 0xbc9aedad32f67258, 0x2ad032f10a311021, 0x7008357b6fcc8e85}}}, +{{{0xd01b9fbb82584a34, 0x47ab6463d2b4792b, 0xb631639c48536202, 0x13a92a3669d6d428}}, + {{0x0b88672738773f01, 0xb8ccc8fa95fbccfb, 0x8d2dd5a3b9ad29b6, 0x06ef7e9851ad0f6a}}, + {{0xca93771cc0577de5, 0x7540e41e5035dc5c, 0x24680f01d802e071, 0x3c296ddf8a2af86a}}}, +{{{0xfceb4d2ebb1f2541, 0xb89510c740adb91f, 0xfc71a37dd0a1ad05, 0x0a892c700747717b}}, + {{0xaead15f9d914a713, 0xa92f7bf98c8ff912, 0xaff823179f53d730, 0x7a99d393490c77ba}}, + {{0x8f52ed2436bda3e8, 0x77a8c84157e80794, 0xa5a96563262f9ce0, 0x286762d28302f7d2}}}, +{{{0x7c558e2bce2ef5bd, 0xe4986cb46747bc63, 0x154a179f3bbb89b8, 0x7686f2a3d6f1767a}}, + {{0x4e7836093ce35b25, 0x82e1181db26baa97, 0x0cc192d3cbc7b83f, 0x32f1da046a9d9d3a}}, + {{0xaa8d12a66d597c6a, 0x8f11930304d3852b, 0x3f91dc73c209b022, 0x561305f8a9ad28a6}}}, +{{{0x6722cc28e7b0c0d5, 0x709de9bbdb075c53, 0xcaf68da7d7010a61, 0x030a1aef2c57cc6c}}, + {{0x100c978dec92aed1, 0xca43d5434d6d73e5, 0x83131b22d847ba48, 0x00aaec53e35d4d2c}}, + {{0x7bb1f773003ad2aa, 0x0b3f29802b216608, 0x7821dc86520ed23e, 0x20be9c1c24065480}}}, +{{{0x20e0e44ae2025e60, 0xb03b3b2fcbdcb938, 0x105d639cf95a0d1c, 0x69764c545067e311}}, + {{0xe15387d8249673a6, 0x5943bc2df546e493, 0x1c7f9a81c36f63b5, 0x750ab3361f0ac1de}}, + {{0x1e8a3283a2f81037, 0x6f2eda23bd7fcbf1, 0xb72fd15bac2e2563, 0x54f96b3fb7075040}}}, +{{{0x177dafc616b11ecd, 0x89764b9cfa576479, 0xb7a8a110e6ece785, 0x78e6839fbe85dbf0}}, + {{0x0fadf20429669279, 0x3adda2047d7d724a, 0x6f3d94828c5760f1, 0x3d7fe9c52bb7539e}}, + {{0x70332df737b8856b, 0x75d05d43041a178a, 0x320ff74aa0e59e22, 0x70f268f350088242}}}, +{{{0x2324112070dcf355, 0x380cc97ee7fce117, 0xb31ddeed3552b698, 0x404e56c039b8c4b9}}, + {{0x66864583b1805f47, 0xf535c5d160dd7c19, 0xe9874eb71e4cb006, 0x7c0d345cfad889d9}}, + {{0x591f1f4b8c78338a, 0xa0366ab167e0b5e1, 0x5cbc4152b45f3d44, 0x20d754762aaec777}}}, +{{{0x9d74feb135b9f543, 0x84b37df1de8c956c, 0xe9322b0757138ba9, 0x38b8ada8790b4ce1}}, + {{0x5e8fc36fc73bb758, 0xace543a5363cbb9a, 0xa9934a7d903bc922, 0x2b8f1e46f3ceec62}}, + {{0xb5c04a9cdf51f95d, 0x2b3952aecb1fdeac, 0x1d106d8b328b66da, 0x049aeb32ceba1953}}}, +{{{0xd7767d3c63dcfe7e, 0x209c594897856e40, 0xb6676861e14f7c13, 0x51c665e0c8d625fc}}, + {{0xaa507d0b75fc7931, 0x0fef924b7a6725d3, 0x1d82542b396b3930, 0x795ee17530f674fc}}, + {{0x254a5b0a52ecbd81, 0x5d411f6ee034afe7, 0xe6a24d0dcaee4a31, 0x6cd19bf49dc54477}}}, +{{{0x7e87619052179ca3, 0x571d0a060b2c9f85, 0x80a2baa88499711e, 0x7520f3db40b2e638}}, + {{0x1ffe612165afc386, 0x082a2a88b8d51b10, 0x76f6627e20990baa, 0x5e01b3a7429e43e7}}, + {{0x3db50be3d39357a1, 0x967b6cdd599e94a5, 0x1a309a64df311e6e, 0x71092c9ccef3c986}}}, +{{{0x53d8523f0364918c, 0xa2b404f43fab6b1c, 0x080b4a9e6681e5a4, 0x0ea15b03d0257ba7}}, + {{0x856bd8ac74051dcf, 0x03f6a40855b7aa1e, 0x3a4ae7cbc9743ceb, 0x4173a5bb7137abde}}, + {{0x17c56e31f0f9218a, 0x5a696e2b1afc4708, 0xf7931668f4b2f176, 0x5fc565614a4e3a67}}}, +{{{0x136e570dc46d7ae5, 0x0fd0aacc54f8dc8f, 0x59549f03310dad86, 0x62711c414c454aa1}}, + {{0x4892e1e67790988e, 0x01d5950f1c5cd722, 0xe3b0819ae5923eed, 0x3214c7409d46651b}}, + {{0x1329827406651770, 0x3ba4a0668a279436, 0xd9b6b8ec185d223c, 0x5bea94073ecb833c}}}, +{{{0x641dbf0912c89be4, 0xacf38b317d6e579c, 0xabfe9e02f697b065, 0x3aacd5c148f61eec}}, + {{0xb470ce63f343d2f8, 0x0067ba8f0543e8f1, 0x35da51a1a2117b6f, 0x4ad0785944f1bd2f}}, + {{0x858e3b34c3318301, 0xdc99c04707316826, 0x34085b2ed39da88c, 0x3aff0cb1d902853d}}}, +{{{0x87c5c7eb3a20405e, 0x8ee311efedad56c9, 0x29252e48ad29d5f9, 0x110e7e86f4cd251d}}, + {{0x9226430bf4c53505, 0x68e49c13261f2283, 0x09ef33788fd327c6, 0x2ccf9f732bd99e7f}}, + {{0x57c0d89ed603f5e4, 0x12888628f0b0200c, 0x53172709a02e3bb7, 0x05c557e0b9693a37}}}, +{{{0xd8f9ce311fc97e6f, 0x7a3f263011f9fdae, 0xe15b7ea08bed25dd, 0x6e154c178fe9875a}}, + {{0xf776bbb089c20eb0, 0x61f85bf6fa0fd85c, 0xb6b93f4e634421fb, 0x289fef0841861205}}, + {{0xcf616336fed69abf, 0x9b16e4e78335c94f, 0x13789765753a7fe7, 0x6afbf642a95ca319}}}, +{{{0x7da8de0c62f5d2c1, 0x98fc3da4b00e7b9a, 0x7deb6ada0dad70e0, 0x0db4b851b95038c4}}, + {{0x5de55070f913a8cc, 0x7d1d167b2b0cf561, 0xda2956b690ead489, 0x12c093cedb801ed9}}, + {{0xfc147f9308b8190f, 0x06969da0a11ae310, 0xcee75572dac7d7fd, 0x33aa8799c6635ce6}}}, +{{{0xaf0ff51ebd085cf2, 0x78f51a8967d33f1f, 0x6ec2bfe15060033c, 0x233c6f29e8e21a86}}, + {{0x8348f588fc156cb1, 0x6da2ba9b1a0a6d27, 0xe2262d5c87ca5ab6, 0x212cd0c1c8d589a6}}, + {{0xd2f4d5107f18c781, 0x122ecdf2527e9d28, 0xa70a862a3d3d3341, 0x1db7778911914ce3}}}, +{{{0xddf352397c6bc26f, 0x7a97e2cc53d50113, 0x7c74f43abf79a330, 0x31ad97ad26e2adfc}}, + {{0xb3394769dd701ab6, 0xe2b8ded419cf8da5, 0x15df4161fd2ac852, 0x7ae2ca8a017d24be}}, + {{0xb7e817ed0920b962, 0x1e8518cc3f19da9d, 0xe491c14f25560a64, 0x1ed1fc53a6622c83}}} \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_dbl_p1p1.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_dbl_p1p1.S new file mode 100644 index 0000000000..35e7e9ec52 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_dbl_p1p1.S @@ -0,0 +1,2977 @@ +// linker define ge25519_dbl_p1p1 +// linker use 38 + +# qhasm: int64 rp + +# qhasm: int64 pp + +# qhasm: input rp + +# qhasm: input pp + +# qhasm: int64 a0 + +# qhasm: int64 a1 + +# qhasm: int64 a2 + +# qhasm: int64 a3 + +# qhasm: stack64 a0_stack + +# qhasm: stack64 a1_stack + +# qhasm: stack64 a2_stack + +# qhasm: stack64 a3_stack + +# qhasm: int64 b0 + +# qhasm: int64 b1 + +# qhasm: int64 b2 + +# qhasm: int64 b3 + +# qhasm: stack64 b0_stack + +# qhasm: stack64 b1_stack + +# qhasm: stack64 b2_stack + +# qhasm: stack64 b3_stack + +# qhasm: int64 c0 + +# qhasm: int64 c1 + +# qhasm: int64 c2 + +# qhasm: int64 c3 + +# qhasm: stack64 c0_stack + +# qhasm: stack64 c1_stack + +# qhasm: stack64 c2_stack + +# qhasm: stack64 c3_stack + +# qhasm: int64 d0 + +# qhasm: int64 d1 + +# qhasm: int64 d2 + +# qhasm: int64 d3 + +# qhasm: stack64 d0_stack + +# qhasm: stack64 d1_stack + +# qhasm: stack64 d2_stack + +# qhasm: stack64 d3_stack + +# qhasm: int64 e0 + +# qhasm: int64 e1 + +# qhasm: int64 e2 + +# qhasm: int64 e3 + +# qhasm: stack64 e0_stack + +# qhasm: stack64 e1_stack + +# qhasm: stack64 e2_stack + +# qhasm: stack64 e3_stack + +# qhasm: int64 rx0 + +# qhasm: int64 rx1 + +# qhasm: int64 rx2 + +# qhasm: int64 rx3 + +# qhasm: stack64 rx0_stack + +# qhasm: stack64 rx1_stack + +# qhasm: stack64 rx2_stack + +# qhasm: stack64 rx3_stack + +# qhasm: int64 ry0 + +# qhasm: int64 ry1 + +# qhasm: int64 ry2 + +# qhasm: int64 ry3 + +# qhasm: int64 ry4 + +# qhasm: int64 rz0 + +# qhasm: int64 rz1 + +# qhasm: int64 rz2 + +# qhasm: int64 rz3 + +# qhasm: int64 rt0 + +# qhasm: int64 rt1 + +# qhasm: int64 rt2 + +# qhasm: int64 rt3 + +# qhasm: int64 mulr4 + +# qhasm: int64 mulr5 + +# qhasm: int64 mulr6 + +# qhasm: int64 mulr7 + +# qhasm: int64 mulr8 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mulx0 + +# qhasm: int64 mulx1 + +# qhasm: int64 mulx2 + +# qhasm: int64 mulx3 + +# qhasm: int64 mulc + +# qhasm: int64 mulzero + +# qhasm: int64 muli38 + +# qhasm: int64 squarer4 + +# qhasm: int64 squarer5 + +# qhasm: int64 squarer6 + +# qhasm: int64 squarer7 + +# qhasm: int64 squarer8 + +# qhasm: int64 squarerax + +# qhasm: int64 squarerdx + +# qhasm: int64 squaret1 + +# qhasm: int64 squaret2 + +# qhasm: int64 squaret3 + +# qhasm: int64 squarec + +# qhasm: int64 squarezero + +# qhasm: int64 squarei38 + +# qhasm: int64 addt0 + +# qhasm: int64 addt1 + +# qhasm: int64 subt0 + +# qhasm: int64 subt1 + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1) +.globl CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1) +_CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1): +CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1): +mov %rsp,%r11 +and $31,%r11 +add $192,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#4 +# asm 2: mov $0,>squarer7=%rcx +mov $0,%rcx + +# qhasm: squarerax = *(uint64 *)(pp + 8) +# asm 1: movq 8(squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 0) +# asm 1: mulq 0(a1=int64#5 +# asm 2: mov a1=%r8 +mov %rax,%r8 + +# qhasm: a2 = squarerdx +# asm 1: mov a2=int64#6 +# asm 2: mov a2=%r9 +mov %rdx,%r9 + +# qhasm: squarerax = *(uint64 *)(pp + 16) +# asm 1: movq 16(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 8) +# asm 1: mulq 8(a3=int64#8 +# asm 2: mov a3=%r10 +mov %rax,%r10 + +# qhasm: squarer4 = squarerdx +# asm 1: mov squarer4=int64#9 +# asm 2: mov squarer4=%r11 +mov %rdx,%r11 + +# qhasm: squarerax = *(uint64 *)(pp + 24) +# asm 1: movq 24(squarerax=int64#7 +# asm 2: movq 24(squarerax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 16) +# asm 1: mulq 16(squarer5=int64#10 +# asm 2: mov squarer5=%r12 +mov %rax,%r12 + +# qhasm: squarer6 = squarerdx +# asm 1: mov squarer6=int64#11 +# asm 2: mov squarer6=%r13 +mov %rdx,%r13 + +# qhasm: squarerax = *(uint64 *)(pp + 16) +# asm 1: movq 16(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 0) +# asm 1: mulq 0(squarerax=int64#7 +# asm 2: movq 24(squarerax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 8) +# asm 1: mulq 8(squarerax=int64#7 +# asm 2: movq 24(squarerax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 0) +# asm 1: mulq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 0) +# asm 1: mulq 0(a0=int64#12 +# asm 2: mov a0=%r14 +mov %rax,%r14 + +# qhasm: squaret1 = squarerdx +# asm 1: mov squaret1=int64#13 +# asm 2: mov squaret1=%r15 +mov %rdx,%r15 + +# qhasm: squarerax = *(uint64 *)(pp + 8) +# asm 1: movq 8(squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 8) +# asm 1: mulq 8(squaret2=int64#14 +# asm 2: mov squaret2=%rbx +mov %rax,%rbx + +# qhasm: squaret3 = squarerdx +# asm 1: mov squaret3=int64#15 +# asm 2: mov squaret3=%rbp +mov %rdx,%rbp + +# qhasm: squarerax = *(uint64 *)(pp + 16) +# asm 1: movq 16(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 16) +# asm 1: mulq 16(squarerax=int64#7 +# asm 2: movq 24(squarerax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 24) +# asm 1: mulq 24(squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r11,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: squarer4 = squarerax +# asm 1: mov squarer4=int64#9 +# asm 2: mov squarer4=%r11 +mov %rax,%r11 + +# qhasm: squarerax = squarer5 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r12,%rax + +# qhasm: squarer5 = squarerdx +# asm 1: mov squarer5=int64#10 +# asm 2: mov squarer5=%r12 +mov %rdx,%r12 + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? squarer5 += squarerax +# asm 1: add squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r13,%rax + +# qhasm: squarer6 = 0 +# asm 1: mov $0,>squarer6=int64#11 +# asm 2: mov $0,>squarer6=%r13 +mov $0,%r13 + +# qhasm: squarer6 += squarerdx + carry +# asm 1: adc squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rcx,%rax + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#4 +# asm 2: mov $0,>squarer7=%rcx +mov $0,%rcx + +# qhasm: squarer7 += squarerdx + carry +# asm 1: adc squarer8=int64#7 +# asm 2: mov $0,>squarer8=%rax +mov $0,%rax + +# qhasm: squarer8 += squarerdx + carry +# asm 1: adc squarezero=int64#3 +# asm 2: mov $0,>squarezero=%rdx +mov $0,%rdx + +# qhasm: squarer8 += squarezero + carry +# asm 1: adc squarer8=int64#4 +# asm 2: imulq $38,squarer8=%rcx +imulq $38,%rax,%rcx + +# qhasm: carry? a0 += squarer8 +# asm 1: add squarezero=int64#3 +# asm 2: imulq $38,squarezero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: a0 += squarezero +# asm 1: add a0_stack=stack64#8 +# asm 2: movq a0_stack=56(%rsp) +movq %r14,56(%rsp) + +# qhasm: a1_stack = a1 +# asm 1: movq a1_stack=stack64#9 +# asm 2: movq a1_stack=64(%rsp) +movq %r8,64(%rsp) + +# qhasm: a2_stack = a2 +# asm 1: movq a2_stack=stack64#10 +# asm 2: movq a2_stack=72(%rsp) +movq %r9,72(%rsp) + +# qhasm: a3_stack = a3 +# asm 1: movq a3_stack=stack64#11 +# asm 2: movq a3_stack=80(%rsp) +movq %r10,80(%rsp) + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#4 +# asm 2: mov $0,>squarer7=%rcx +mov $0,%rcx + +# qhasm: squarerax = *(uint64 *)(pp + 40) +# asm 1: movq 40(squarerax=int64#7 +# asm 2: movq 40(squarerax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 32) +# asm 1: mulq 32(b1=int64#5 +# asm 2: mov b1=%r8 +mov %rax,%r8 + +# qhasm: b2 = squarerdx +# asm 1: mov b2=int64#6 +# asm 2: mov b2=%r9 +mov %rdx,%r9 + +# qhasm: squarerax = *(uint64 *)(pp + 48) +# asm 1: movq 48(squarerax=int64#7 +# asm 2: movq 48(squarerax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(b3=int64#8 +# asm 2: mov b3=%r10 +mov %rax,%r10 + +# qhasm: squarer4 = squarerdx +# asm 1: mov squarer4=int64#9 +# asm 2: mov squarer4=%r11 +mov %rdx,%r11 + +# qhasm: squarerax = *(uint64 *)(pp + 56) +# asm 1: movq 56(squarerax=int64#7 +# asm 2: movq 56(squarerax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(squarer5=int64#10 +# asm 2: mov squarer5=%r12 +mov %rax,%r12 + +# qhasm: squarer6 = squarerdx +# asm 1: mov squarer6=int64#11 +# asm 2: mov squarer6=%r13 +mov %rdx,%r13 + +# qhasm: squarerax = *(uint64 *)(pp + 48) +# asm 1: movq 48(squarerax=int64#7 +# asm 2: movq 48(squarerax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 32) +# asm 1: mulq 32(squarerax=int64#7 +# asm 2: movq 56(squarerax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(squarerax=int64#7 +# asm 2: movq 56(squarerax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 32) +# asm 1: mulq 32(squarerax=int64#7 +# asm 2: movq 32(squarerax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 32) +# asm 1: mulq 32(b0=int64#12 +# asm 2: mov b0=%r14 +mov %rax,%r14 + +# qhasm: squaret1 = squarerdx +# asm 1: mov squaret1=int64#13 +# asm 2: mov squaret1=%r15 +mov %rdx,%r15 + +# qhasm: squarerax = *(uint64 *)(pp + 40) +# asm 1: movq 40(squarerax=int64#7 +# asm 2: movq 40(squarerax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 40) +# asm 1: mulq 40(squaret2=int64#14 +# asm 2: mov squaret2=%rbx +mov %rax,%rbx + +# qhasm: squaret3 = squarerdx +# asm 1: mov squaret3=int64#15 +# asm 2: mov squaret3=%rbp +mov %rdx,%rbp + +# qhasm: squarerax = *(uint64 *)(pp + 48) +# asm 1: movq 48(squarerax=int64#7 +# asm 2: movq 48(squarerax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 48) +# asm 1: mulq 48(squarerax=int64#7 +# asm 2: movq 56(squarerax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 56) +# asm 1: mulq 56(squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r11,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: squarer4 = squarerax +# asm 1: mov squarer4=int64#9 +# asm 2: mov squarer4=%r11 +mov %rax,%r11 + +# qhasm: squarerax = squarer5 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r12,%rax + +# qhasm: squarer5 = squarerdx +# asm 1: mov squarer5=int64#10 +# asm 2: mov squarer5=%r12 +mov %rdx,%r12 + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? squarer5 += squarerax +# asm 1: add squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r13,%rax + +# qhasm: squarer6 = 0 +# asm 1: mov $0,>squarer6=int64#11 +# asm 2: mov $0,>squarer6=%r13 +mov $0,%r13 + +# qhasm: squarer6 += squarerdx + carry +# asm 1: adc squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rcx,%rax + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#4 +# asm 2: mov $0,>squarer7=%rcx +mov $0,%rcx + +# qhasm: squarer7 += squarerdx + carry +# asm 1: adc squarer8=int64#7 +# asm 2: mov $0,>squarer8=%rax +mov $0,%rax + +# qhasm: squarer8 += squarerdx + carry +# asm 1: adc squarezero=int64#3 +# asm 2: mov $0,>squarezero=%rdx +mov $0,%rdx + +# qhasm: squarer8 += squarezero + carry +# asm 1: adc squarer8=int64#4 +# asm 2: imulq $38,squarer8=%rcx +imulq $38,%rax,%rcx + +# qhasm: carry? b0 += squarer8 +# asm 1: add squarezero=int64#3 +# asm 2: imulq $38,squarezero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: b0 += squarezero +# asm 1: add b0_stack=stack64#12 +# asm 2: movq b0_stack=88(%rsp) +movq %r14,88(%rsp) + +# qhasm: b1_stack = b1 +# asm 1: movq b1_stack=stack64#13 +# asm 2: movq b1_stack=96(%rsp) +movq %r8,96(%rsp) + +# qhasm: b2_stack = b2 +# asm 1: movq b2_stack=stack64#14 +# asm 2: movq b2_stack=104(%rsp) +movq %r9,104(%rsp) + +# qhasm: b3_stack = b3 +# asm 1: movq b3_stack=stack64#15 +# asm 2: movq b3_stack=112(%rsp) +movq %r10,112(%rsp) + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#4 +# asm 2: mov $0,>squarer7=%rcx +mov $0,%rcx + +# qhasm: squarerax = *(uint64 *)(pp + 72) +# asm 1: movq 72(squarerax=int64#7 +# asm 2: movq 72(squarerax=%rax +movq 72(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(c1=int64#5 +# asm 2: mov c1=%r8 +mov %rax,%r8 + +# qhasm: c2 = squarerdx +# asm 1: mov c2=int64#6 +# asm 2: mov c2=%r9 +mov %rdx,%r9 + +# qhasm: squarerax = *(uint64 *)(pp + 80) +# asm 1: movq 80(squarerax=int64#7 +# asm 2: movq 80(squarerax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(c3=int64#8 +# asm 2: mov c3=%r10 +mov %rax,%r10 + +# qhasm: squarer4 = squarerdx +# asm 1: mov squarer4=int64#9 +# asm 2: mov squarer4=%r11 +mov %rdx,%r11 + +# qhasm: squarerax = *(uint64 *)(pp + 88) +# asm 1: movq 88(squarerax=int64#7 +# asm 2: movq 88(squarerax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 80) +# asm 1: mulq 80(squarer5=int64#10 +# asm 2: mov squarer5=%r12 +mov %rax,%r12 + +# qhasm: squarer6 = squarerdx +# asm 1: mov squarer6=int64#11 +# asm 2: mov squarer6=%r13 +mov %rdx,%r13 + +# qhasm: squarerax = *(uint64 *)(pp + 80) +# asm 1: movq 80(squarerax=int64#7 +# asm 2: movq 80(squarerax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(squarerax=int64#7 +# asm 2: movq 88(squarerax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(squarerax=int64#7 +# asm 2: movq 88(squarerax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(squarerax=int64#7 +# asm 2: movq 64(squarerax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 64) +# asm 1: mulq 64(c0=int64#12 +# asm 2: mov c0=%r14 +mov %rax,%r14 + +# qhasm: squaret1 = squarerdx +# asm 1: mov squaret1=int64#13 +# asm 2: mov squaret1=%r15 +mov %rdx,%r15 + +# qhasm: squarerax = *(uint64 *)(pp + 72) +# asm 1: movq 72(squarerax=int64#7 +# asm 2: movq 72(squarerax=%rax +movq 72(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 72) +# asm 1: mulq 72(squaret2=int64#14 +# asm 2: mov squaret2=%rbx +mov %rax,%rbx + +# qhasm: squaret3 = squarerdx +# asm 1: mov squaret3=int64#15 +# asm 2: mov squaret3=%rbp +mov %rdx,%rbp + +# qhasm: squarerax = *(uint64 *)(pp + 80) +# asm 1: movq 80(squarerax=int64#7 +# asm 2: movq 80(squarerax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 80) +# asm 1: mulq 80(squarerax=int64#7 +# asm 2: movq 88(squarerax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(pp + 88) +# asm 1: mulq 88(squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r11,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: squarer4 = squarerax +# asm 1: mov squarer4=int64#9 +# asm 2: mov squarer4=%r11 +mov %rax,%r11 + +# qhasm: squarerax = squarer5 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r12,%rax + +# qhasm: squarer5 = squarerdx +# asm 1: mov squarer5=int64#10 +# asm 2: mov squarer5=%r12 +mov %rdx,%r12 + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? squarer5 += squarerax +# asm 1: add squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r13,%rax + +# qhasm: squarer6 = 0 +# asm 1: mov $0,>squarer6=int64#11 +# asm 2: mov $0,>squarer6=%r13 +mov $0,%r13 + +# qhasm: squarer6 += squarerdx + carry +# asm 1: adc squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rcx,%rax + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#4 +# asm 2: mov $0,>squarer7=%rcx +mov $0,%rcx + +# qhasm: squarer7 += squarerdx + carry +# asm 1: adc squarer8=int64#7 +# asm 2: mov $0,>squarer8=%rax +mov $0,%rax + +# qhasm: squarer8 += squarerdx + carry +# asm 1: adc squarezero=int64#3 +# asm 2: mov $0,>squarezero=%rdx +mov $0,%rdx + +# qhasm: squarer8 += squarezero + carry +# asm 1: adc squarer8=int64#4 +# asm 2: imulq $38,squarer8=%rcx +imulq $38,%rax,%rcx + +# qhasm: carry? c0 += squarer8 +# asm 1: add squarezero=int64#3 +# asm 2: imulq $38,squarezero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: c0 += squarezero +# asm 1: add addt0=int64#3 +# asm 2: mov $0,>addt0=%rdx +mov $0,%rdx + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#4 +# asm 2: mov $38,>addt1=%rcx +mov $38,%rcx + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae c0_stack=stack64#16 +# asm 2: movq c0_stack=120(%rsp) +movq %r14,120(%rsp) + +# qhasm: c1_stack = c1 +# asm 1: movq c1_stack=stack64#17 +# asm 2: movq c1_stack=128(%rsp) +movq %r8,128(%rsp) + +# qhasm: c2_stack = c2 +# asm 1: movq c2_stack=stack64#18 +# asm 2: movq c2_stack=136(%rsp) +movq %r9,136(%rsp) + +# qhasm: c3_stack = c3 +# asm 1: movq c3_stack=stack64#19 +# asm 2: movq c3_stack=144(%rsp) +movq %r10,144(%rsp) + +# qhasm: d0 = 0 +# asm 1: mov $0,>d0=int64#3 +# asm 2: mov $0,>d0=%rdx +mov $0,%rdx + +# qhasm: d1 = 0 +# asm 1: mov $0,>d1=int64#4 +# asm 2: mov $0,>d1=%rcx +mov $0,%rcx + +# qhasm: d2 = 0 +# asm 1: mov $0,>d2=int64#5 +# asm 2: mov $0,>d2=%r8 +mov $0,%r8 + +# qhasm: d3 = 0 +# asm 1: mov $0,>d3=int64#6 +# asm 2: mov $0,>d3=%r9 +mov $0,%r9 + +# qhasm: carry? d0 -= a0_stack +# asm 1: subq subt0=int64#7 +# asm 2: mov $0,>subt0=%rax +mov $0,%rax + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#8 +# asm 2: mov $38,>subt1=%r10 +mov $38,%r10 + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae d0_stack=stack64#8 +# asm 2: movq d0_stack=56(%rsp) +movq %rdx,56(%rsp) + +# qhasm: d1_stack = d1 +# asm 1: movq d1_stack=stack64#9 +# asm 2: movq d1_stack=64(%rsp) +movq %rcx,64(%rsp) + +# qhasm: d2_stack = d2 +# asm 1: movq d2_stack=stack64#10 +# asm 2: movq d2_stack=72(%rsp) +movq %r8,72(%rsp) + +# qhasm: d3_stack = d3 +# asm 1: movq d3_stack=stack64#11 +# asm 2: movq d3_stack=80(%rsp) +movq %r9,80(%rsp) + +# qhasm: e0 = 0 +# asm 1: mov $0,>e0=int64#7 +# asm 2: mov $0,>e0=%rax +mov $0,%rax + +# qhasm: e1 = 0 +# asm 1: mov $0,>e1=int64#8 +# asm 2: mov $0,>e1=%r10 +mov $0,%r10 + +# qhasm: e2 = 0 +# asm 1: mov $0,>e2=int64#9 +# asm 2: mov $0,>e2=%r11 +mov $0,%r11 + +# qhasm: e3 = 0 +# asm 1: mov $0,>e3=int64#10 +# asm 2: mov $0,>e3=%r12 +mov $0,%r12 + +# qhasm: carry? e0 -= b0_stack +# asm 1: subq subt0=int64#11 +# asm 2: mov $0,>subt0=%r13 +mov $0,%r13 + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#12 +# asm 2: mov $38,>subt1=%r14 +mov $38,%r14 + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae e0_stack=stack64#20 +# asm 2: movq e0_stack=152(%rsp) +movq %rax,152(%rsp) + +# qhasm: e1_stack = e1 +# asm 1: movq e1_stack=stack64#21 +# asm 2: movq e1_stack=160(%rsp) +movq %r10,160(%rsp) + +# qhasm: e2_stack = e2 +# asm 1: movq e2_stack=stack64#22 +# asm 2: movq e2_stack=168(%rsp) +movq %r11,168(%rsp) + +# qhasm: e3_stack = e3 +# asm 1: movq e3_stack=stack64#23 +# asm 2: movq e3_stack=176(%rsp) +movq %r12,176(%rsp) + +# qhasm: rz0 = d0 +# asm 1: mov rz0=int64#7 +# asm 2: mov rz0=%rax +mov %rdx,%rax + +# qhasm: rz1 = d1 +# asm 1: mov rz1=int64#8 +# asm 2: mov rz1=%r10 +mov %rcx,%r10 + +# qhasm: rz2 = d2 +# asm 1: mov rz2=int64#9 +# asm 2: mov rz2=%r11 +mov %r8,%r11 + +# qhasm: rz3 = d3 +# asm 1: mov rz3=int64#10 +# asm 2: mov rz3=%r12 +mov %r9,%r12 + +# qhasm: carry? rz0 += b0_stack +# asm 1: addq addt0=int64#11 +# asm 2: mov $0,>addt0=%r13 +mov $0,%r13 + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#12 +# asm 2: mov $38,>addt1=%r14 +mov $38,%r14 + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae subt0=int64#11 +# asm 2: mov $0,>subt0=%r13 +mov $0,%r13 + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#12 +# asm 2: mov $38,>subt1=%r14 +mov $38,%r14 + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae subt0=int64#3 +# asm 2: mov $0,>subt0=%rdx +mov $0,%rdx + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#4 +# asm 2: mov $38,>subt1=%rcx +mov $38,%rcx + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae rx0=int64#3 +# asm 2: movq 0(rx0=%rdx +movq 0(%rsi),%rdx + +# qhasm: rx1 = *(uint64 *)(pp + 8) +# asm 1: movq 8(rx1=int64#4 +# asm 2: movq 8(rx1=%rcx +movq 8(%rsi),%rcx + +# qhasm: rx2 = *(uint64 *)(pp + 16) +# asm 1: movq 16(rx2=int64#5 +# asm 2: movq 16(rx2=%r8 +movq 16(%rsi),%r8 + +# qhasm: rx3 = *(uint64 *)(pp + 24) +# asm 1: movq 24(rx3=int64#6 +# asm 2: movq 24(rx3=%r9 +movq 24(%rsi),%r9 + +# qhasm: carry? rx0 += *(uint64 *)(pp + 32) +# asm 1: addq 32(addt0=int64#2 +# asm 2: mov $0,>addt0=%rsi +mov $0,%rsi + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#7 +# asm 2: mov $38,>addt1=%rax +mov $38,%rax + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae rx0_stack=stack64#12 +# asm 2: movq rx0_stack=88(%rsp) +movq %rdx,88(%rsp) + +# qhasm: rx1_stack = rx1 +# asm 1: movq rx1_stack=stack64#13 +# asm 2: movq rx1_stack=96(%rsp) +movq %rcx,96(%rsp) + +# qhasm: rx2_stack = rx2 +# asm 1: movq rx2_stack=stack64#14 +# asm 2: movq rx2_stack=104(%rsp) +movq %r8,104(%rsp) + +# qhasm: rx3_stack = rx3 +# asm 1: movq rx3_stack=stack64#15 +# asm 2: movq rx3_stack=112(%rsp) +movq %r9,112(%rsp) + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#2 +# asm 2: mov $0,>squarer7=%rsi +mov $0,%rsi + +# qhasm: squarerax = rx1_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx0_stack +# asm 1: mulq rx1=int64#4 +# asm 2: mov rx1=%rcx +mov %rax,%rcx + +# qhasm: rx2 = squarerdx +# asm 1: mov rx2=int64#5 +# asm 2: mov rx2=%r8 +mov %rdx,%r8 + +# qhasm: squarerax = rx2_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx1_stack +# asm 1: mulq rx3=int64#6 +# asm 2: mov rx3=%r9 +mov %rax,%r9 + +# qhasm: squarer4 = squarerdx +# asm 1: mov squarer4=int64#8 +# asm 2: mov squarer4=%r10 +mov %rdx,%r10 + +# qhasm: squarerax = rx3_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx2_stack +# asm 1: mulq squarer5=int64#9 +# asm 2: mov squarer5=%r11 +mov %rax,%r11 + +# qhasm: squarer6 = squarerdx +# asm 1: mov squarer6=int64#10 +# asm 2: mov squarer6=%r12 +mov %rdx,%r12 + +# qhasm: squarerax = rx2_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx0_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx1_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx0_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 88(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx0_stack +# asm 1: mulq rx0=int64#11 +# asm 2: mov rx0=%r13 +mov %rax,%r13 + +# qhasm: squaret1 = squarerdx +# asm 1: mov squaret1=int64#12 +# asm 2: mov squaret1=%r14 +mov %rdx,%r14 + +# qhasm: squarerax = rx1_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx1_stack +# asm 1: mulq squaret2=int64#13 +# asm 2: mov squaret2=%r15 +mov %rax,%r15 + +# qhasm: squaret3 = squarerdx +# asm 1: mov squaret3=int64#14 +# asm 2: mov squaret3=%rbx +mov %rdx,%rbx + +# qhasm: squarerax = rx2_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx2_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * rx3_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r10,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: squarer4 = squarerax +# asm 1: mov squarer4=int64#8 +# asm 2: mov squarer4=%r10 +mov %rax,%r10 + +# qhasm: squarerax = squarer5 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r11,%rax + +# qhasm: squarer5 = squarerdx +# asm 1: mov squarer5=int64#9 +# asm 2: mov squarer5=%r11 +mov %rdx,%r11 + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? squarer5 += squarerax +# asm 1: add squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r12,%rax + +# qhasm: squarer6 = 0 +# asm 1: mov $0,>squarer6=int64#10 +# asm 2: mov $0,>squarer6=%r12 +mov $0,%r12 + +# qhasm: squarer6 += squarerdx + carry +# asm 1: adc squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rsi,%rax + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#2 +# asm 2: mov $0,>squarer7=%rsi +mov $0,%rsi + +# qhasm: squarer7 += squarerdx + carry +# asm 1: adc squarer8=int64#7 +# asm 2: mov $0,>squarer8=%rax +mov $0,%rax + +# qhasm: squarer8 += squarerdx + carry +# asm 1: adc squarezero=int64#2 +# asm 2: mov $0,>squarezero=%rsi +mov $0,%rsi + +# qhasm: squarer8 += squarezero + carry +# asm 1: adc squarer8=int64#3 +# asm 2: imulq $38,squarer8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? rx0 += squarer8 +# asm 1: add squarezero=int64#2 +# asm 2: imulq $38,squarezero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: rx0 += squarezero +# asm 1: add addt0=int64#2 +# asm 2: mov $0,>addt0=%rsi +mov $0,%rsi + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#3 +# asm 2: mov $38,>addt1=%rdx +mov $38,%rdx + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae addt0=int64#2 +# asm 2: mov $0,>addt0=%rsi +mov $0,%rsi + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#3 +# asm 2: mov $38,>addt1=%rdx +mov $38,%rdx + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_nielsadd_p1p1.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_nielsadd_p1p1.S new file mode 100644 index 0000000000..ef7bed2281 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_nielsadd_p1p1.S @@ -0,0 +1,3074 @@ +// linker define ge25519_nielsadd_p1p1 +// linker use 38 + +# qhasm: int64 rp + +# qhasm: int64 pp + +# qhasm: int64 qp + +# qhasm: input rp + +# qhasm: input pp + +# qhasm: input qp + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 a0 + +# qhasm: int64 a1 + +# qhasm: int64 a2 + +# qhasm: int64 a3 + +# qhasm: stack64 a0_stack + +# qhasm: stack64 a1_stack + +# qhasm: stack64 a2_stack + +# qhasm: stack64 a3_stack + +# qhasm: int64 b0 + +# qhasm: int64 b1 + +# qhasm: int64 b2 + +# qhasm: int64 b3 + +# qhasm: stack64 b0_stack + +# qhasm: stack64 b1_stack + +# qhasm: stack64 b2_stack + +# qhasm: stack64 b3_stack + +# qhasm: int64 c0 + +# qhasm: int64 c1 + +# qhasm: int64 c2 + +# qhasm: int64 c3 + +# qhasm: stack64 c0_stack + +# qhasm: stack64 c1_stack + +# qhasm: stack64 c2_stack + +# qhasm: stack64 c3_stack + +# qhasm: int64 d0 + +# qhasm: int64 d1 + +# qhasm: int64 d2 + +# qhasm: int64 d3 + +# qhasm: stack64 d0_stack + +# qhasm: stack64 d1_stack + +# qhasm: stack64 d2_stack + +# qhasm: stack64 d3_stack + +# qhasm: int64 e0 + +# qhasm: int64 e1 + +# qhasm: int64 e2 + +# qhasm: int64 e3 + +# qhasm: stack64 e0_stack + +# qhasm: stack64 e1_stack + +# qhasm: stack64 e2_stack + +# qhasm: stack64 e3_stack + +# qhasm: int64 f0 + +# qhasm: int64 f1 + +# qhasm: int64 f2 + +# qhasm: int64 f3 + +# qhasm: stack64 f0_stack + +# qhasm: stack64 f1_stack + +# qhasm: stack64 f2_stack + +# qhasm: stack64 f3_stack + +# qhasm: int64 g0 + +# qhasm: int64 g1 + +# qhasm: int64 g2 + +# qhasm: int64 g3 + +# qhasm: stack64 g0_stack + +# qhasm: stack64 g1_stack + +# qhasm: stack64 g2_stack + +# qhasm: stack64 g3_stack + +# qhasm: int64 h0 + +# qhasm: int64 h1 + +# qhasm: int64 h2 + +# qhasm: int64 h3 + +# qhasm: stack64 h0_stack + +# qhasm: stack64 h1_stack + +# qhasm: stack64 h2_stack + +# qhasm: stack64 h3_stack + +# qhasm: int64 qt0 + +# qhasm: int64 qt1 + +# qhasm: int64 qt2 + +# qhasm: int64 qt3 + +# qhasm: stack64 qt0_stack + +# qhasm: stack64 qt1_stack + +# qhasm: stack64 qt2_stack + +# qhasm: stack64 qt3_stack + +# qhasm: int64 t10 + +# qhasm: int64 t11 + +# qhasm: int64 t12 + +# qhasm: int64 t13 + +# qhasm: stack64 t10_stack + +# qhasm: stack64 t11_stack + +# qhasm: stack64 t12_stack + +# qhasm: stack64 t13_stack + +# qhasm: int64 t20 + +# qhasm: int64 t21 + +# qhasm: int64 t22 + +# qhasm: int64 t23 + +# qhasm: stack64 t20_stack + +# qhasm: stack64 t21_stack + +# qhasm: stack64 t22_stack + +# qhasm: stack64 t23_stack + +# qhasm: int64 rx0 + +# qhasm: int64 rx1 + +# qhasm: int64 rx2 + +# qhasm: int64 rx3 + +# qhasm: int64 ry0 + +# qhasm: int64 ry1 + +# qhasm: int64 ry2 + +# qhasm: int64 ry3 + +# qhasm: int64 rz0 + +# qhasm: int64 rz1 + +# qhasm: int64 rz2 + +# qhasm: int64 rz3 + +# qhasm: int64 rt0 + +# qhasm: int64 rt1 + +# qhasm: int64 rt2 + +# qhasm: int64 rt3 + +# qhasm: int64 mulr4 + +# qhasm: int64 mulr5 + +# qhasm: int64 mulr6 + +# qhasm: int64 mulr7 + +# qhasm: int64 mulr8 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mulx0 + +# qhasm: int64 mulx1 + +# qhasm: int64 mulx2 + +# qhasm: int64 mulx3 + +# qhasm: int64 mulc + +# qhasm: int64 mulzero + +# qhasm: int64 muli38 + +# qhasm: int64 addt0 + +# qhasm: int64 addt1 + +# qhasm: int64 subt0 + +# qhasm: int64 subt1 + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1) +.globl CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1) +_CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1): +CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1): +mov %rsp,%r11 +and $31,%r11 +add $128,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: qp = qp +# asm 1: mov qp=int64#4 +# asm 2: mov qp=%rcx +mov %rdx,%rcx + +# qhasm: a0 = *(uint64 *)(pp + 32) +# asm 1: movq 32(a0=int64#3 +# asm 2: movq 32(a0=%rdx +movq 32(%rsi),%rdx + +# qhasm: a1 = *(uint64 *)(pp + 40) +# asm 1: movq 40(a1=int64#5 +# asm 2: movq 40(a1=%r8 +movq 40(%rsi),%r8 + +# qhasm: a2 = *(uint64 *)(pp + 48) +# asm 1: movq 48(a2=int64#6 +# asm 2: movq 48(a2=%r9 +movq 48(%rsi),%r9 + +# qhasm: a3 = *(uint64 *)(pp + 56) +# asm 1: movq 56(a3=int64#7 +# asm 2: movq 56(a3=%rax +movq 56(%rsi),%rax + +# qhasm: b0 = a0 +# asm 1: mov b0=int64#8 +# asm 2: mov b0=%r10 +mov %rdx,%r10 + +# qhasm: b1 = a1 +# asm 1: mov b1=int64#9 +# asm 2: mov b1=%r11 +mov %r8,%r11 + +# qhasm: b2 = a2 +# asm 1: mov b2=int64#10 +# asm 2: mov b2=%r12 +mov %r9,%r12 + +# qhasm: b3 = a3 +# asm 1: mov b3=int64#11 +# asm 2: mov b3=%r13 +mov %rax,%r13 + +# qhasm: carry? a0 -= *(uint64 *) (pp + 0) +# asm 1: subq 0(subt0=int64#12 +# asm 2: mov $0,>subt0=%r14 +mov $0,%r14 + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#13 +# asm 2: mov $38,>subt1=%r15 +mov $38,%r15 + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae addt0=int64#12 +# asm 2: mov $0,>addt0=%r14 +mov $0,%r14 + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#13 +# asm 2: mov $38,>addt1=%r15 +mov $38,%r15 + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae a0_stack=stack64#8 +# asm 2: movq a0_stack=56(%rsp) +movq %rdx,56(%rsp) + +# qhasm: a1_stack = a1 +# asm 1: movq a1_stack=stack64#9 +# asm 2: movq a1_stack=64(%rsp) +movq %r8,64(%rsp) + +# qhasm: a2_stack = a2 +# asm 1: movq a2_stack=stack64#10 +# asm 2: movq a2_stack=72(%rsp) +movq %r9,72(%rsp) + +# qhasm: a3_stack = a3 +# asm 1: movq a3_stack=stack64#11 +# asm 2: movq a3_stack=80(%rsp) +movq %rax,80(%rsp) + +# qhasm: b0_stack = b0 +# asm 1: movq b0_stack=stack64#12 +# asm 2: movq b0_stack=88(%rsp) +movq %r10,88(%rsp) + +# qhasm: b1_stack = b1 +# asm 1: movq b1_stack=stack64#13 +# asm 2: movq b1_stack=96(%rsp) +movq %r11,96(%rsp) + +# qhasm: b2_stack = b2 +# asm 1: movq b2_stack=stack64#14 +# asm 2: movq b2_stack=104(%rsp) +movq %r12,104(%rsp) + +# qhasm: b3_stack = b3 +# asm 1: movq b3_stack=stack64#15 +# asm 2: movq b3_stack=112(%rsp) +movq %r13,112(%rsp) + +# qhasm: mulr4 = 0 +# asm 1: mov $0,>mulr4=int64#5 +# asm 2: mov $0,>mulr4=%r8 +mov $0,%r8 + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#6 +# asm 2: mov $0,>mulr5=%r9 +mov $0,%r9 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#8 +# asm 2: mov $0,>mulr6=%r10 +mov $0,%r10 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#9 +# asm 2: mov $0,>mulr7=%r11 +mov $0,%r11 + +# qhasm: mulx0 = a0_stack +# asm 1: movq mulx0=int64#10 +# asm 2: movq mulx0=%r12 +movq 56(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul a0=int64#11 +# asm 2: mov a0=%r13 +mov %rax,%r13 + +# qhasm: a1 = mulrdx +# asm 1: mov a1=int64#12 +# asm 2: mov a1=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(qp + 8) +# asm 1: movq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul a2=int64#13 +# asm 2: mov $0,>a2=%r15 +mov $0,%r15 + +# qhasm: a2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul a3=int64#14 +# asm 2: mov $0,>a3=%rbx +mov $0,%rbx + +# qhasm: a3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#10 +# asm 2: movq mulx1=%r12 +movq 64(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#10 +# asm 2: movq mulx2=%r12 +movq 72(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#10 +# asm 2: movq mulx3=%r12 +movq 80(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#5 +# asm 2: mov mulr4=%r8 +mov %rax,%r8 + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#6 +# asm 2: mov mulr5=%r9 +mov %rdx,%r9 + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#8 +# asm 2: mov $0,>mulr6=%r10 +mov $0,%r10 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r11,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#9 +# asm 2: mov $0,>mulr7=%r11 +mov $0,%r11 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#3 +# asm 2: mov $0,>mulzero=%rdx +mov $0,%rdx + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#5 +# asm 2: imulq $38,mulr8=%r8 +imulq $38,%rax,%r8 + +# qhasm: carry? a0 += mulr8 +# asm 1: add mulzero=int64#3 +# asm 2: imulq $38,mulzero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: a0 += mulzero +# asm 1: add a0_stack=stack64#8 +# asm 2: movq a0_stack=56(%rsp) +movq %r13,56(%rsp) + +# qhasm: a1_stack = a1 +# asm 1: movq a1_stack=stack64#9 +# asm 2: movq a1_stack=64(%rsp) +movq %r14,64(%rsp) + +# qhasm: a2_stack = a2 +# asm 1: movq a2_stack=stack64#10 +# asm 2: movq a2_stack=72(%rsp) +movq %r15,72(%rsp) + +# qhasm: a3_stack = a3 +# asm 1: movq a3_stack=stack64#11 +# asm 2: movq a3_stack=80(%rsp) +movq %rbx,80(%rsp) + +# qhasm: mulr4 = 0 +# asm 1: mov $0,>mulr4=int64#5 +# asm 2: mov $0,>mulr4=%r8 +mov $0,%r8 + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#6 +# asm 2: mov $0,>mulr5=%r9 +mov $0,%r9 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#8 +# asm 2: mov $0,>mulr6=%r10 +mov $0,%r10 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#9 +# asm 2: mov $0,>mulr7=%r11 +mov $0,%r11 + +# qhasm: mulx0 = b0_stack +# asm 1: movq mulx0=int64#10 +# asm 2: movq mulx0=%r12 +movq 88(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul e0=int64#11 +# asm 2: mov e0=%r13 +mov %rax,%r13 + +# qhasm: e1 = mulrdx +# asm 1: mov e1=int64#12 +# asm 2: mov e1=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(qp + 40) +# asm 1: movq 40(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul e2=int64#13 +# asm 2: mov $0,>e2=%r15 +mov $0,%r15 + +# qhasm: e2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul e3=int64#14 +# asm 2: mov $0,>e3=%rbx +mov $0,%rbx + +# qhasm: e3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#10 +# asm 2: movq mulx1=%r12 +movq 96(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#10 +# asm 2: movq mulx2=%r12 +movq 104(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#10 +# asm 2: movq mulx3=%r12 +movq 112(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#5 +# asm 2: mov mulr4=%r8 +mov %rax,%r8 + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#6 +# asm 2: mov mulr5=%r9 +mov %rdx,%r9 + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#8 +# asm 2: mov $0,>mulr6=%r10 +mov $0,%r10 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r11,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#9 +# asm 2: mov $0,>mulr7=%r11 +mov $0,%r11 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#3 +# asm 2: mov $0,>mulzero=%rdx +mov $0,%rdx + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#5 +# asm 2: imulq $38,mulr8=%r8 +imulq $38,%rax,%r8 + +# qhasm: carry? e0 += mulr8 +# asm 1: add mulzero=int64#3 +# asm 2: imulq $38,mulzero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: e0 += mulzero +# asm 1: add h0=int64#3 +# asm 2: mov h0=%rdx +mov %r13,%rdx + +# qhasm: h1 = e1 +# asm 1: mov h1=int64#5 +# asm 2: mov h1=%r8 +mov %r14,%r8 + +# qhasm: h2 = e2 +# asm 1: mov h2=int64#6 +# asm 2: mov h2=%r9 +mov %r15,%r9 + +# qhasm: h3 = e3 +# asm 1: mov h3=int64#7 +# asm 2: mov h3=%rax +mov %rbx,%rax + +# qhasm: carry? e0 -= a0_stack +# asm 1: subq subt0=int64#8 +# asm 2: mov $0,>subt0=%r10 +mov $0,%r10 + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#9 +# asm 2: mov $38,>subt1=%r11 +mov $38,%r11 + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae addt0=int64#8 +# asm 2: mov $0,>addt0=%r10 +mov $0,%r10 + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#9 +# asm 2: mov $38,>addt1=%r11 +mov $38,%r11 + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae mulr4=int64#5 +# asm 2: mov $0,>mulr4=%r8 +mov $0,%r8 + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#6 +# asm 2: mov $0,>mulr5=%r9 +mov $0,%r9 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#8 +# asm 2: mov $0,>mulr6=%r10 +mov $0,%r10 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#9 +# asm 2: mov $0,>mulr7=%r11 +mov $0,%r11 + +# qhasm: mulx0 = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulx0=int64#10 +# asm 2: movq 96(mulx0=%r12 +movq 96(%rsi),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul c0=int64#11 +# asm 2: mov c0=%r13 +mov %rax,%r13 + +# qhasm: c1 = mulrdx +# asm 1: mov c1=int64#12 +# asm 2: mov c1=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(qp + 72) +# asm 1: movq 72(mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul c2=int64#13 +# asm 2: mov $0,>c2=%r15 +mov $0,%r15 + +# qhasm: c2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul c3=int64#14 +# asm 2: mov $0,>c3=%rbx +mov $0,%rbx + +# qhasm: c3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#10 +# asm 2: movq 104(mulx1=%r12 +movq 104(%rsi),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#10 +# asm 2: movq 112(mulx2=%r12 +movq 112(%rsi),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#10 +# asm 2: movq 120(mulx3=%r12 +movq 120(%rsi),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#4 +# asm 2: mov mulr4=%rcx +mov %rax,%rcx + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#5 +# asm 2: mov mulr5=%r8 +mov %rdx,%r8 + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r11,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#3 +# asm 2: mov $0,>mulzero=%rdx +mov $0,%rdx + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#4 +# asm 2: imulq $38,mulr8=%rcx +imulq $38,%rax,%rcx + +# qhasm: carry? c0 += mulr8 +# asm 1: add mulzero=int64#3 +# asm 2: imulq $38,mulzero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: c0 += mulzero +# asm 1: add f0=int64#3 +# asm 2: movq 64(f0=%rdx +movq 64(%rsi),%rdx + +# qhasm: f1 = *(uint64 *)(pp + 72) +# asm 1: movq 72(f1=int64#4 +# asm 2: movq 72(f1=%rcx +movq 72(%rsi),%rcx + +# qhasm: f2 = *(uint64 *)(pp + 80) +# asm 1: movq 80(f2=int64#5 +# asm 2: movq 80(f2=%r8 +movq 80(%rsi),%r8 + +# qhasm: f3 = *(uint64 *)(pp + 88) +# asm 1: movq 88(f3=int64#2 +# asm 2: movq 88(f3=%rsi +movq 88(%rsi),%rsi + +# qhasm: carry? f0 += f0 +# asm 1: add addt0=int64#6 +# asm 2: mov $0,>addt0=%r9 +mov $0,%r9 + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#7 +# asm 2: mov $38,>addt1=%rax +mov $38,%rax + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae g0=int64#6 +# asm 2: mov g0=%r9 +mov %rdx,%r9 + +# qhasm: g1 = f1 +# asm 1: mov g1=int64#7 +# asm 2: mov g1=%rax +mov %rcx,%rax + +# qhasm: g2 = f2 +# asm 1: mov g2=int64#8 +# asm 2: mov g2=%r10 +mov %r8,%r10 + +# qhasm: g3 = f3 +# asm 1: mov g3=int64#9 +# asm 2: mov g3=%r11 +mov %rsi,%r11 + +# qhasm: carry? f0 -= c0 +# asm 1: sub subt0=int64#10 +# asm 2: mov $0,>subt0=%r12 +mov $0,%r12 + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#15 +# asm 2: mov $38,>subt1=%rbp +mov $38,%rbp + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae addt0=int64#10 +# asm 2: mov $0,>addt0=%r12 +mov $0,%r12 + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#11 +# asm 2: mov $38,>addt1=%r13 +mov $38,%r13 + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_p1p1_to_p2.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_p1p1_to_p2.S new file mode 100644 index 0000000000..d5bb0b2137 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_p1p1_to_p2.S @@ -0,0 +1,2238 @@ +// linker define ge25519_p1p1_to_p2 +// linker use 38 + +# qhasm: int64 rp + +# qhasm: int64 pp + +# qhasm: input rp + +# qhasm: input pp + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 rx0 + +# qhasm: int64 rx1 + +# qhasm: int64 rx2 + +# qhasm: int64 rx3 + +# qhasm: int64 ry0 + +# qhasm: int64 ry1 + +# qhasm: int64 ry2 + +# qhasm: int64 ry3 + +# qhasm: int64 rz0 + +# qhasm: int64 rz1 + +# qhasm: int64 rz2 + +# qhasm: int64 rz3 + +# qhasm: int64 mulr4 + +# qhasm: int64 mulr5 + +# qhasm: int64 mulr6 + +# qhasm: int64 mulr7 + +# qhasm: int64 mulr8 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mulx0 + +# qhasm: int64 mulx1 + +# qhasm: int64 mulx2 + +# qhasm: int64 mulx3 + +# qhasm: int64 mulc + +# qhasm: int64 mulzero + +# qhasm: int64 muli38 + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2) +.globl CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2) +_CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2): +CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2): +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: mulr4 = 0 +# asm 1: mov $0,>mulr4=int64#4 +# asm 2: mov $0,>mulr4=%rcx +mov $0,%rcx + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#5 +# asm 2: mov $0,>mulr5=%r8 +mov $0,%r8 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulx0 = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulx0=int64#9 +# asm 2: movq 0(mulx0=%r11 +movq 0(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rx0=int64#10 +# asm 2: mov rx0=%r12 +mov %rax,%r12 + +# qhasm: rx1 = mulrdx +# asm 1: mov rx1=int64#11 +# asm 2: mov rx1=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(pp + 104) +# asm 1: movq 104(mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rx2=int64#12 +# asm 2: mov $0,>rx2=%r14 +mov $0,%r14 + +# qhasm: rx2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rx3=int64#13 +# asm 2: mov $0,>rx3=%r15 +mov $0,%r15 + +# qhasm: rx3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#9 +# asm 2: movq 8(mulx1=%r11 +movq 8(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#9 +# asm 2: movq 16(mulx2=%r11 +movq 16(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#9 +# asm 2: movq 24(mulx3=%r11 +movq 24(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#4 +# asm 2: mov mulr4=%rcx +mov %rax,%rcx + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#5 +# asm 2: mov mulr5=%r8 +mov %rdx,%r8 + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#3 +# asm 2: mov $0,>mulzero=%rdx +mov $0,%rdx + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#4 +# asm 2: imulq $38,mulr8=%rcx +imulq $38,%rax,%rcx + +# qhasm: carry? rx0 += mulr8 +# asm 1: add mulzero=int64#3 +# asm 2: imulq $38,mulzero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: rx0 += mulzero +# asm 1: add mulr4=int64#4 +# asm 2: mov $0,>mulr4=%rcx +mov $0,%rcx + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#5 +# asm 2: mov $0,>mulr5=%r8 +mov $0,%r8 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulx0 = *(uint64 *)(pp + 64) +# asm 1: movq 64(mulx0=int64#9 +# asm 2: movq 64(mulx0=%r11 +movq 64(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul ry0=int64#10 +# asm 2: mov ry0=%r12 +mov %rax,%r12 + +# qhasm: ry1 = mulrdx +# asm 1: mov ry1=int64#11 +# asm 2: mov ry1=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(pp + 40) +# asm 1: movq 40(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul ry2=int64#12 +# asm 2: mov $0,>ry2=%r14 +mov $0,%r14 + +# qhasm: ry2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul ry3=int64#13 +# asm 2: mov $0,>ry3=%r15 +mov $0,%r15 + +# qhasm: ry3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#9 +# asm 2: movq 72(mulx1=%r11 +movq 72(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#9 +# asm 2: movq 80(mulx2=%r11 +movq 80(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#9 +# asm 2: movq 88(mulx3=%r11 +movq 88(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#4 +# asm 2: mov mulr4=%rcx +mov %rax,%rcx + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#5 +# asm 2: mov mulr5=%r8 +mov %rdx,%r8 + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#3 +# asm 2: mov $0,>mulzero=%rdx +mov $0,%rdx + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#4 +# asm 2: imulq $38,mulr8=%rcx +imulq $38,%rax,%rcx + +# qhasm: carry? ry0 += mulr8 +# asm 1: add mulzero=int64#3 +# asm 2: imulq $38,mulzero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: ry0 += mulzero +# asm 1: add mulr4=int64#4 +# asm 2: mov $0,>mulr4=%rcx +mov $0,%rcx + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#5 +# asm 2: mov $0,>mulr5=%r8 +mov $0,%r8 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulx0 = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulx0=int64#9 +# asm 2: movq 32(mulx0=%r11 +movq 32(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rz0=int64#10 +# asm 2: mov rz0=%r12 +mov %rax,%r12 + +# qhasm: rz1 = mulrdx +# asm 1: mov rz1=int64#11 +# asm 2: mov rz1=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(pp + 104) +# asm 1: movq 104(mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rz2=int64#12 +# asm 2: mov $0,>rz2=%r14 +mov $0,%r14 + +# qhasm: rz2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rz3=int64#13 +# asm 2: mov $0,>rz3=%r15 +mov $0,%r15 + +# qhasm: rz3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#9 +# asm 2: movq 40(mulx1=%r11 +movq 40(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#9 +# asm 2: movq 48(mulx2=%r11 +movq 48(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#9 +# asm 2: movq 56(mulx3=%r11 +movq 56(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#2 +# asm 2: mov mulr4=%rsi +mov %rax,%rsi + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#4 +# asm 2: mov mulr5=%rcx +mov %rdx,%rcx + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#2 +# asm 2: mov $0,>mulzero=%rsi +mov $0,%rsi + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#3 +# asm 2: imulq $38,mulr8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? rz0 += mulr8 +# asm 1: add mulzero=int64#2 +# asm 2: imulq $38,mulzero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: rz0 += mulzero +# asm 1: add caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_p1p1_to_p3.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_p1p1_to_p3.S new file mode 100644 index 0000000000..1917bb1763 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_p1p1_to_p3.S @@ -0,0 +1,2928 @@ +// linker define ge25519_p1p1_to_p3 +// linker use 38 + +# qhasm: int64 rp + +# qhasm: int64 pp + +# qhasm: input rp + +# qhasm: input pp + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 rx0 + +# qhasm: int64 rx1 + +# qhasm: int64 rx2 + +# qhasm: int64 rx3 + +# qhasm: int64 ry0 + +# qhasm: int64 ry1 + +# qhasm: int64 ry2 + +# qhasm: int64 ry3 + +# qhasm: int64 rz0 + +# qhasm: int64 rz1 + +# qhasm: int64 rz2 + +# qhasm: int64 rz3 + +# qhasm: int64 rt0 + +# qhasm: int64 rt1 + +# qhasm: int64 rt2 + +# qhasm: int64 rt3 + +# qhasm: int64 mulr4 + +# qhasm: int64 mulr5 + +# qhasm: int64 mulr6 + +# qhasm: int64 mulr7 + +# qhasm: int64 mulr8 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mulx0 + +# qhasm: int64 mulx1 + +# qhasm: int64 mulx2 + +# qhasm: int64 mulx3 + +# qhasm: int64 mulc + +# qhasm: int64 mulzero + +# qhasm: int64 muli38 + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3) +.globl CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3) +_CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3): +CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3): +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: mulr4 = 0 +# asm 1: mov $0,>mulr4=int64#4 +# asm 2: mov $0,>mulr4=%rcx +mov $0,%rcx + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#5 +# asm 2: mov $0,>mulr5=%r8 +mov $0,%r8 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulx0 = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulx0=int64#9 +# asm 2: movq 0(mulx0=%r11 +movq 0(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rx0=int64#10 +# asm 2: mov rx0=%r12 +mov %rax,%r12 + +# qhasm: rx1 = mulrdx +# asm 1: mov rx1=int64#11 +# asm 2: mov rx1=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(pp + 104) +# asm 1: movq 104(mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rx2=int64#12 +# asm 2: mov $0,>rx2=%r14 +mov $0,%r14 + +# qhasm: rx2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rx3=int64#13 +# asm 2: mov $0,>rx3=%r15 +mov $0,%r15 + +# qhasm: rx3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#9 +# asm 2: movq 8(mulx1=%r11 +movq 8(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#9 +# asm 2: movq 16(mulx2=%r11 +movq 16(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#9 +# asm 2: movq 24(mulx3=%r11 +movq 24(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#4 +# asm 2: mov mulr4=%rcx +mov %rax,%rcx + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#5 +# asm 2: mov mulr5=%r8 +mov %rdx,%r8 + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#3 +# asm 2: mov $0,>mulzero=%rdx +mov $0,%rdx + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#4 +# asm 2: imulq $38,mulr8=%rcx +imulq $38,%rax,%rcx + +# qhasm: carry? rx0 += mulr8 +# asm 1: add mulzero=int64#3 +# asm 2: imulq $38,mulzero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: rx0 += mulzero +# asm 1: add mulr4=int64#4 +# asm 2: mov $0,>mulr4=%rcx +mov $0,%rcx + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#5 +# asm 2: mov $0,>mulr5=%r8 +mov $0,%r8 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulx0 = *(uint64 *)(pp + 64) +# asm 1: movq 64(mulx0=int64#9 +# asm 2: movq 64(mulx0=%r11 +movq 64(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul ry0=int64#10 +# asm 2: mov ry0=%r12 +mov %rax,%r12 + +# qhasm: ry1 = mulrdx +# asm 1: mov ry1=int64#11 +# asm 2: mov ry1=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(pp + 40) +# asm 1: movq 40(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul ry2=int64#12 +# asm 2: mov $0,>ry2=%r14 +mov $0,%r14 + +# qhasm: ry2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul ry3=int64#13 +# asm 2: mov $0,>ry3=%r15 +mov $0,%r15 + +# qhasm: ry3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#9 +# asm 2: movq 72(mulx1=%r11 +movq 72(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#9 +# asm 2: movq 80(mulx2=%r11 +movq 80(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#9 +# asm 2: movq 88(mulx3=%r11 +movq 88(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#4 +# asm 2: mov mulr4=%rcx +mov %rax,%rcx + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#5 +# asm 2: mov mulr5=%r8 +mov %rdx,%r8 + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#3 +# asm 2: mov $0,>mulzero=%rdx +mov $0,%rdx + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#4 +# asm 2: imulq $38,mulr8=%rcx +imulq $38,%rax,%rcx + +# qhasm: carry? ry0 += mulr8 +# asm 1: add mulzero=int64#3 +# asm 2: imulq $38,mulzero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: ry0 += mulzero +# asm 1: add mulr4=int64#4 +# asm 2: mov $0,>mulr4=%rcx +mov $0,%rcx + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#5 +# asm 2: mov $0,>mulr5=%r8 +mov $0,%r8 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulx0 = *(uint64 *)(pp + 32) +# asm 1: movq 32(mulx0=int64#9 +# asm 2: movq 32(mulx0=%r11 +movq 32(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rz0=int64#10 +# asm 2: mov rz0=%r12 +mov %rax,%r12 + +# qhasm: rz1 = mulrdx +# asm 1: mov rz1=int64#11 +# asm 2: mov rz1=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(pp + 104) +# asm 1: movq 104(mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rz2=int64#12 +# asm 2: mov $0,>rz2=%r14 +mov $0,%r14 + +# qhasm: rz2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rz3=int64#13 +# asm 2: mov $0,>rz3=%r15 +mov $0,%r15 + +# qhasm: rz3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#9 +# asm 2: movq 40(mulx1=%r11 +movq 40(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#9 +# asm 2: movq 48(mulx2=%r11 +movq 48(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#9 +# asm 2: movq 56(mulx3=%r11 +movq 56(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#4 +# asm 2: mov mulr4=%rcx +mov %rax,%rcx + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#5 +# asm 2: mov mulr5=%r8 +mov %rdx,%r8 + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#3 +# asm 2: mov $0,>mulzero=%rdx +mov $0,%rdx + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#4 +# asm 2: imulq $38,mulr8=%rcx +imulq $38,%rax,%rcx + +# qhasm: carry? rz0 += mulr8 +# asm 1: add mulzero=int64#3 +# asm 2: imulq $38,mulzero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: rz0 += mulzero +# asm 1: add mulr4=int64#4 +# asm 2: mov $0,>mulr4=%rcx +mov $0,%rcx + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#5 +# asm 2: mov $0,>mulr5=%r8 +mov $0,%r8 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulx0 = *(uint64 *)(pp + 0) +# asm 1: movq 0(mulx0=int64#9 +# asm 2: movq 0(mulx0=%r11 +movq 0(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rt0=int64#10 +# asm 2: mov rt0=%r12 +mov %rax,%r12 + +# qhasm: rt1 = mulrdx +# asm 1: mov rt1=int64#11 +# asm 2: mov rt1=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(pp + 72) +# asm 1: movq 72(mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rt2=int64#12 +# asm 2: mov $0,>rt2=%r14 +mov $0,%r14 + +# qhasm: rt2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rt3=int64#13 +# asm 2: mov $0,>rt3=%r15 +mov $0,%r15 + +# qhasm: rt3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#9 +# asm 2: movq 8(mulx1=%r11 +movq 8(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#9 +# asm 2: movq 16(mulx2=%r11 +movq 16(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#9 +# asm 2: movq 24(mulx3=%r11 +movq 24(%rsi),%r11 + +# qhasm: mulrax = *(uint64 *)(pp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#2 +# asm 2: mov mulr4=%rsi +mov %rax,%rsi + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#4 +# asm 2: mov mulr5=%rcx +mov %rdx,%rcx + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#2 +# asm 2: mov $0,>mulzero=%rsi +mov $0,%rsi + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#3 +# asm 2: imulq $38,mulr8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? rt0 += mulr8 +# asm 1: add mulzero=int64#2 +# asm 2: imulq $38,mulzero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: rt0 += mulzero +# asm 1: add caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_pack.c new file mode 120000 index 0000000000..6029b816df --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_pack.c @@ -0,0 +1 @@ +../amd64-51/ge25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_pnielsadd_p1p1.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_pnielsadd_p1p1.S new file mode 100644 index 0000000000..2e28547d58 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_pnielsadd_p1p1.S @@ -0,0 +1,3664 @@ +// linker define ge25519_pnielsadd_p1p1 +// linker use 38 + +# qhasm: int64 rp + +# qhasm: int64 pp + +# qhasm: int64 qp + +# qhasm: input rp + +# qhasm: input pp + +# qhasm: input qp + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 a0 + +# qhasm: int64 a1 + +# qhasm: int64 a2 + +# qhasm: int64 a3 + +# qhasm: stack64 a0_stack + +# qhasm: stack64 a1_stack + +# qhasm: stack64 a2_stack + +# qhasm: stack64 a3_stack + +# qhasm: int64 b0 + +# qhasm: int64 b1 + +# qhasm: int64 b2 + +# qhasm: int64 b3 + +# qhasm: stack64 b0_stack + +# qhasm: stack64 b1_stack + +# qhasm: stack64 b2_stack + +# qhasm: stack64 b3_stack + +# qhasm: int64 c0 + +# qhasm: int64 c1 + +# qhasm: int64 c2 + +# qhasm: int64 c3 + +# qhasm: stack64 c0_stack + +# qhasm: stack64 c1_stack + +# qhasm: stack64 c2_stack + +# qhasm: stack64 c3_stack + +# qhasm: int64 d0 + +# qhasm: int64 d1 + +# qhasm: int64 d2 + +# qhasm: int64 d3 + +# qhasm: stack64 d0_stack + +# qhasm: stack64 d1_stack + +# qhasm: stack64 d2_stack + +# qhasm: stack64 d3_stack + +# qhasm: int64 t10 + +# qhasm: int64 t11 + +# qhasm: int64 t12 + +# qhasm: int64 t13 + +# qhasm: stack64 t10_stack + +# qhasm: stack64 t11_stack + +# qhasm: stack64 t12_stack + +# qhasm: stack64 t13_stack + +# qhasm: int64 t20 + +# qhasm: int64 t21 + +# qhasm: int64 t22 + +# qhasm: int64 t23 + +# qhasm: stack64 t20_stack + +# qhasm: stack64 t21_stack + +# qhasm: stack64 t22_stack + +# qhasm: stack64 t23_stack + +# qhasm: int64 rx0 + +# qhasm: int64 rx1 + +# qhasm: int64 rx2 + +# qhasm: int64 rx3 + +# qhasm: int64 ry0 + +# qhasm: int64 ry1 + +# qhasm: int64 ry2 + +# qhasm: int64 ry3 + +# qhasm: int64 rz0 + +# qhasm: int64 rz1 + +# qhasm: int64 rz2 + +# qhasm: int64 rz3 + +# qhasm: int64 rt0 + +# qhasm: int64 rt1 + +# qhasm: int64 rt2 + +# qhasm: int64 rt3 + +# qhasm: int64 x0 + +# qhasm: int64 x1 + +# qhasm: int64 x2 + +# qhasm: int64 x3 + +# qhasm: int64 mulr4 + +# qhasm: int64 mulr5 + +# qhasm: int64 mulr6 + +# qhasm: int64 mulr7 + +# qhasm: int64 mulr8 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mulx0 + +# qhasm: int64 mulx1 + +# qhasm: int64 mulx2 + +# qhasm: int64 mulx3 + +# qhasm: int64 mulc + +# qhasm: int64 mulzero + +# qhasm: int64 muli38 + +# qhasm: int64 addt0 + +# qhasm: int64 addt1 + +# qhasm: int64 subt0 + +# qhasm: int64 subt1 + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1) +.globl CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1) +_CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1): +CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1): +mov %rsp,%r11 +and $31,%r11 +add $128,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: qp = qp +# asm 1: mov qp=int64#4 +# asm 2: mov qp=%rcx +mov %rdx,%rcx + +# qhasm: a0 = *(uint64 *)(pp + 32) +# asm 1: movq 32(a0=int64#3 +# asm 2: movq 32(a0=%rdx +movq 32(%rsi),%rdx + +# qhasm: a1 = *(uint64 *)(pp + 40) +# asm 1: movq 40(a1=int64#5 +# asm 2: movq 40(a1=%r8 +movq 40(%rsi),%r8 + +# qhasm: a2 = *(uint64 *)(pp + 48) +# asm 1: movq 48(a2=int64#6 +# asm 2: movq 48(a2=%r9 +movq 48(%rsi),%r9 + +# qhasm: a3 = *(uint64 *)(pp + 56) +# asm 1: movq 56(a3=int64#7 +# asm 2: movq 56(a3=%rax +movq 56(%rsi),%rax + +# qhasm: b0 = a0 +# asm 1: mov b0=int64#8 +# asm 2: mov b0=%r10 +mov %rdx,%r10 + +# qhasm: b1 = a1 +# asm 1: mov b1=int64#9 +# asm 2: mov b1=%r11 +mov %r8,%r11 + +# qhasm: b2 = a2 +# asm 1: mov b2=int64#10 +# asm 2: mov b2=%r12 +mov %r9,%r12 + +# qhasm: b3 = a3 +# asm 1: mov b3=int64#11 +# asm 2: mov b3=%r13 +mov %rax,%r13 + +# qhasm: carry? a0 -= *(uint64 *)(pp + 0) +# asm 1: subq 0(subt0=int64#12 +# asm 2: mov $0,>subt0=%r14 +mov $0,%r14 + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#13 +# asm 2: mov $38,>subt1=%r15 +mov $38,%r15 + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae addt0=int64#12 +# asm 2: mov $0,>addt0=%r14 +mov $0,%r14 + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#13 +# asm 2: mov $38,>addt1=%r15 +mov $38,%r15 + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae a0_stack=stack64#8 +# asm 2: movq a0_stack=56(%rsp) +movq %rdx,56(%rsp) + +# qhasm: a1_stack = a1 +# asm 1: movq a1_stack=stack64#9 +# asm 2: movq a1_stack=64(%rsp) +movq %r8,64(%rsp) + +# qhasm: a2_stack = a2 +# asm 1: movq a2_stack=stack64#10 +# asm 2: movq a2_stack=72(%rsp) +movq %r9,72(%rsp) + +# qhasm: a3_stack = a3 +# asm 1: movq a3_stack=stack64#11 +# asm 2: movq a3_stack=80(%rsp) +movq %rax,80(%rsp) + +# qhasm: b0_stack = b0 +# asm 1: movq b0_stack=stack64#12 +# asm 2: movq b0_stack=88(%rsp) +movq %r10,88(%rsp) + +# qhasm: b1_stack = b1 +# asm 1: movq b1_stack=stack64#13 +# asm 2: movq b1_stack=96(%rsp) +movq %r11,96(%rsp) + +# qhasm: b2_stack = b2 +# asm 1: movq b2_stack=stack64#14 +# asm 2: movq b2_stack=104(%rsp) +movq %r12,104(%rsp) + +# qhasm: b3_stack = b3 +# asm 1: movq b3_stack=stack64#15 +# asm 2: movq b3_stack=112(%rsp) +movq %r13,112(%rsp) + +# qhasm: mulr4 = 0 +# asm 1: mov $0,>mulr4=int64#5 +# asm 2: mov $0,>mulr4=%r8 +mov $0,%r8 + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#6 +# asm 2: mov $0,>mulr5=%r9 +mov $0,%r9 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#8 +# asm 2: mov $0,>mulr6=%r10 +mov $0,%r10 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#9 +# asm 2: mov $0,>mulr7=%r11 +mov $0,%r11 + +# qhasm: mulx0 = a0_stack +# asm 1: movq mulx0=int64#10 +# asm 2: movq mulx0=%r12 +movq 56(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul a0=int64#11 +# asm 2: mov a0=%r13 +mov %rax,%r13 + +# qhasm: a1 = mulrdx +# asm 1: mov a1=int64#12 +# asm 2: mov a1=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(qp + 8) +# asm 1: movq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul a2=int64#13 +# asm 2: mov $0,>a2=%r15 +mov $0,%r15 + +# qhasm: a2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul a3=int64#14 +# asm 2: mov $0,>a3=%rbx +mov $0,%rbx + +# qhasm: a3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#10 +# asm 2: movq mulx1=%r12 +movq 64(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#10 +# asm 2: movq mulx2=%r12 +movq 72(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#10 +# asm 2: movq mulx3=%r12 +movq 80(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#5 +# asm 2: mov mulr4=%r8 +mov %rax,%r8 + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#6 +# asm 2: mov mulr5=%r9 +mov %rdx,%r9 + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#8 +# asm 2: mov $0,>mulr6=%r10 +mov $0,%r10 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r11,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#9 +# asm 2: mov $0,>mulr7=%r11 +mov $0,%r11 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#3 +# asm 2: mov $0,>mulzero=%rdx +mov $0,%rdx + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#5 +# asm 2: imulq $38,mulr8=%r8 +imulq $38,%rax,%r8 + +# qhasm: carry? a0 += mulr8 +# asm 1: add mulzero=int64#3 +# asm 2: imulq $38,mulzero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: a0 += mulzero +# asm 1: add a0_stack=stack64#8 +# asm 2: movq a0_stack=56(%rsp) +movq %r13,56(%rsp) + +# qhasm: a1_stack = a1 +# asm 1: movq a1_stack=stack64#9 +# asm 2: movq a1_stack=64(%rsp) +movq %r14,64(%rsp) + +# qhasm: a2_stack = a2 +# asm 1: movq a2_stack=stack64#10 +# asm 2: movq a2_stack=72(%rsp) +movq %r15,72(%rsp) + +# qhasm: a3_stack = a3 +# asm 1: movq a3_stack=stack64#11 +# asm 2: movq a3_stack=80(%rsp) +movq %rbx,80(%rsp) + +# qhasm: mulr4 = 0 +# asm 1: mov $0,>mulr4=int64#5 +# asm 2: mov $0,>mulr4=%r8 +mov $0,%r8 + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#6 +# asm 2: mov $0,>mulr5=%r9 +mov $0,%r9 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#8 +# asm 2: mov $0,>mulr6=%r10 +mov $0,%r10 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#9 +# asm 2: mov $0,>mulr7=%r11 +mov $0,%r11 + +# qhasm: mulx0 = b0_stack +# asm 1: movq mulx0=int64#10 +# asm 2: movq mulx0=%r12 +movq 88(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rx0=int64#11 +# asm 2: mov rx0=%r13 +mov %rax,%r13 + +# qhasm: rx1 = mulrdx +# asm 1: mov rx1=int64#12 +# asm 2: mov rx1=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(qp + 40) +# asm 1: movq 40(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rx2=int64#13 +# asm 2: mov $0,>rx2=%r15 +mov $0,%r15 + +# qhasm: rx2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rx3=int64#14 +# asm 2: mov $0,>rx3=%rbx +mov $0,%rbx + +# qhasm: rx3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#10 +# asm 2: movq mulx1=%r12 +movq 96(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#10 +# asm 2: movq mulx2=%r12 +movq 104(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#10 +# asm 2: movq mulx3=%r12 +movq 112(%rsp),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#5 +# asm 2: mov mulr4=%r8 +mov %rax,%r8 + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#6 +# asm 2: mov mulr5=%r9 +mov %rdx,%r9 + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#8 +# asm 2: mov $0,>mulr6=%r10 +mov $0,%r10 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r11,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#9 +# asm 2: mov $0,>mulr7=%r11 +mov $0,%r11 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#3 +# asm 2: mov $0,>mulzero=%rdx +mov $0,%rdx + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#5 +# asm 2: imulq $38,mulr8=%r8 +imulq $38,%rax,%r8 + +# qhasm: carry? rx0 += mulr8 +# asm 1: add mulzero=int64#3 +# asm 2: imulq $38,mulzero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: rx0 += mulzero +# asm 1: add ry0=int64#3 +# asm 2: mov ry0=%rdx +mov %r13,%rdx + +# qhasm: ry1 = rx1 +# asm 1: mov ry1=int64#5 +# asm 2: mov ry1=%r8 +mov %r14,%r8 + +# qhasm: ry2 = rx2 +# asm 1: mov ry2=int64#6 +# asm 2: mov ry2=%r9 +mov %r15,%r9 + +# qhasm: ry3 = rx3 +# asm 1: mov ry3=int64#7 +# asm 2: mov ry3=%rax +mov %rbx,%rax + +# qhasm: carry? ry0 += a0_stack +# asm 1: addq addt0=int64#8 +# asm 2: mov $0,>addt0=%r10 +mov $0,%r10 + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#9 +# asm 2: mov $38,>addt1=%r11 +mov $38,%r11 + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae subt0=int64#8 +# asm 2: mov $0,>subt0=%r10 +mov $0,%r10 + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#9 +# asm 2: mov $38,>subt1=%r11 +mov $38,%r11 + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae mulr4=int64#5 +# asm 2: mov $0,>mulr4=%r8 +mov $0,%r8 + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#6 +# asm 2: mov $0,>mulr5=%r9 +mov $0,%r9 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#8 +# asm 2: mov $0,>mulr6=%r10 +mov $0,%r10 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#9 +# asm 2: mov $0,>mulr7=%r11 +mov $0,%r11 + +# qhasm: mulx0 = *(uint64 *)(pp + 96) +# asm 1: movq 96(mulx0=int64#10 +# asm 2: movq 96(mulx0=%r12 +movq 96(%rsi),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul c0=int64#11 +# asm 2: mov c0=%r13 +mov %rax,%r13 + +# qhasm: c1 = mulrdx +# asm 1: mov c1=int64#12 +# asm 2: mov c1=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(qp + 104) +# asm 1: movq 104(mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul c2=int64#13 +# asm 2: mov $0,>c2=%r15 +mov $0,%r15 + +# qhasm: c2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul c3=int64#14 +# asm 2: mov $0,>c3=%rbx +mov $0,%rbx + +# qhasm: c3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#10 +# asm 2: movq 104(mulx1=%r12 +movq 104(%rsi),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#10 +# asm 2: movq 112(mulx2=%r12 +movq 112(%rsi),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#10 +# asm 2: movq 120(mulx3=%r12 +movq 120(%rsi),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 96) +# asm 1: movq 96(mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#5 +# asm 2: mov mulr4=%r8 +mov %rax,%r8 + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#6 +# asm 2: mov mulr5=%r9 +mov %rdx,%r9 + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#8 +# asm 2: mov $0,>mulr6=%r10 +mov $0,%r10 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r11,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#9 +# asm 2: mov $0,>mulr7=%r11 +mov $0,%r11 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#3 +# asm 2: mov $0,>mulzero=%rdx +mov $0,%rdx + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#5 +# asm 2: imulq $38,mulr8=%r8 +imulq $38,%rax,%r8 + +# qhasm: carry? c0 += mulr8 +# asm 1: add mulzero=int64#3 +# asm 2: imulq $38,mulzero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: c0 += mulzero +# asm 1: add c0_stack=stack64#8 +# asm 2: movq c0_stack=56(%rsp) +movq %r13,56(%rsp) + +# qhasm: c1_stack = c1 +# asm 1: movq c1_stack=stack64#9 +# asm 2: movq c1_stack=64(%rsp) +movq %r14,64(%rsp) + +# qhasm: c2_stack = c2 +# asm 1: movq c2_stack=stack64#10 +# asm 2: movq c2_stack=72(%rsp) +movq %r15,72(%rsp) + +# qhasm: c3_stack = c3 +# asm 1: movq c3_stack=stack64#11 +# asm 2: movq c3_stack=80(%rsp) +movq %rbx,80(%rsp) + +# qhasm: mulr4 = 0 +# asm 1: mov $0,>mulr4=int64#5 +# asm 2: mov $0,>mulr4=%r8 +mov $0,%r8 + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#6 +# asm 2: mov $0,>mulr5=%r9 +mov $0,%r9 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#8 +# asm 2: mov $0,>mulr6=%r10 +mov $0,%r10 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#9 +# asm 2: mov $0,>mulr7=%r11 +mov $0,%r11 + +# qhasm: mulx0 = *(uint64 *)(pp + 64) +# asm 1: movq 64(mulx0=int64#10 +# asm 2: movq 64(mulx0=%r12 +movq 64(%rsi),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rt0=int64#11 +# asm 2: mov rt0=%r13 +mov %rax,%r13 + +# qhasm: rt1 = mulrdx +# asm 1: mov rt1=int64#12 +# asm 2: mov rt1=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(qp + 72) +# asm 1: movq 72(mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rt2=int64#13 +# asm 2: mov $0,>rt2=%r15 +mov $0,%r15 + +# qhasm: rt2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rt3=int64#14 +# asm 2: mov $0,>rt3=%rbx +mov $0,%rbx + +# qhasm: rt3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#10 +# asm 2: movq 72(mulx1=%r12 +movq 72(%rsi),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#10 +# asm 2: movq 80(mulx2=%r12 +movq 80(%rsi),%r12 + +# qhasm: mulrax = *(uint64 *)(qp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#15 +# asm 2: mov $0,>mulc=%rbp +mov $0,%rbp + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#2 +# asm 2: movq 88(mulx3=%rsi +movq 88(%rsi),%rsi + +# qhasm: mulrax = *(uint64 *)(qp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#10 +# asm 2: mov $0,>mulc=%r12 +mov $0,%r12 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#10 +# asm 2: mov $0,>mulc=%r12 +mov $0,%r12 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#10 +# asm 2: mov $0,>mulc=%r12 +mov $0,%r12 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rcx),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#2 +# asm 2: mov mulr4=%rsi +mov %rax,%rsi + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#4 +# asm 2: mov mulr5=%rcx +mov %rdx,%rcx + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r11,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#2 +# asm 2: mov $0,>mulzero=%rsi +mov $0,%rsi + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#3 +# asm 2: imulq $38,mulr8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? rt0 += mulr8 +# asm 1: add mulzero=int64#2 +# asm 2: imulq $38,mulzero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: rt0 += mulzero +# asm 1: add addt0=int64#2 +# asm 2: mov $0,>addt0=%rsi +mov $0,%rsi + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#3 +# asm 2: mov $38,>addt1=%rdx +mov $38,%rdx + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae rz0=int64#2 +# asm 2: mov rz0=%rsi +mov %r13,%rsi + +# qhasm: rz1 = rt1 +# asm 1: mov rz1=int64#3 +# asm 2: mov rz1=%rdx +mov %r14,%rdx + +# qhasm: rz2 = rt2 +# asm 1: mov rz2=int64#4 +# asm 2: mov rz2=%rcx +mov %r15,%rcx + +# qhasm: rz3 = rt3 +# asm 1: mov rz3=int64#5 +# asm 2: mov rz3=%r8 +mov %rbx,%r8 + +# qhasm: carry? rz0 += c0_stack +# asm 1: addq addt0=int64#6 +# asm 2: mov $0,>addt0=%r9 +mov $0,%r9 + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#7 +# asm 2: mov $38,>addt1=%rax +mov $38,%rax + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae subt0=int64#6 +# asm 2: mov $0,>subt0=%r9 +mov $0,%r9 + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#7 +# asm 2: mov $38,>subt1=%rax +mov $38,%rax + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_unpackneg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_unpackneg.c new file mode 100644 index 0000000000..297db2f5cb --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/ge25519_unpackneg.c @@ -0,0 +1,78 @@ +#include "crypto_verify_32.h" +#include "fe25519.h" +#include "ge25519.h" + +/* d */ +static const fe25519 ecd = {{0x75EB4DCA135978A3, 0x00700A4D4141D8AB, 0x8CC740797779E898, 0x52036CEE2B6FFE73}}; +/* sqrt(-1) */ +static const fe25519 sqrtm1 = {{0xC4EE1B274A0EA0B0, 0x2F431806AD2FE478, 0x2B4D00993DFBD7A7, 0x2B8324804FC1DF0B}}; +static const fe25519 zero = {{0,0,0,0}}; + +static const fe25519 point26_x = {{0x5bf5acbd527f9b28,0xa4564f8c5508aa23,0x4daaa6d39e2975af,0x6fe31a937f53b071}}; +static const fe25519 point26_y = {{26,0,0,0}}; + +/* return 1 on success, 0 otherwise */ +int ge25519_unpackneg_vartime(ge25519_p3 *r, const unsigned char p[32]) +{ + int ok = 1; + unsigned char pcheck[32]; + fe25519 t, chk, num, den, den2, den4, den6; + unsigned char par = p[31] >> 7; + + fe25519_setint(&r->z,1); + fe25519_unpack(&r->y, p); + + fe25519_pack(pcheck,&r->y); + pcheck[31] |= par<<7; + if (crypto_verify_32(pcheck,p)) ok = 0; + + fe25519_square(&num, &r->y); /* x = y^2 */ + fe25519_mul(&den, &num, &ecd); /* den = dy^2 */ + fe25519_sub(&num, &num, &r->z); /* x = y^2-1 */ + fe25519_add(&den, &r->z, &den); /* den = dy^2+1 */ + + /* Computation of sqrt(num/den) + 1.: computation of num^((p-5)/8)*den^((7p-35)/8) = (num*den^7)^((p-5)/8) + */ + fe25519_square(&den2, &den); + fe25519_square(&den4, &den2); + fe25519_mul(&den6, &den4, &den2); + fe25519_mul(&t, &den6, &num); + fe25519_mul(&t, &t, &den); + + fe25519_pow2523(&t, &t); + /* 2. computation of r->x = t * num * den^3 + */ + fe25519_mul(&t, &t, &num); + fe25519_mul(&t, &t, &den); + fe25519_mul(&t, &t, &den); + fe25519_mul(&r->x, &t, &den); + + /* 3. Check whether sqrt computation gave correct result, multiply by sqrt(-1) if not: + */ + fe25519_square(&chk, &r->x); + fe25519_mul(&chk, &chk, &den); + if (!fe25519_iseq_vartime(&chk, &num)) + fe25519_mul(&r->x, &r->x, &sqrtm1); + + /* 4. Now we have one of the two square roots, except if input was not a square + */ + fe25519_square(&chk, &r->x); + fe25519_mul(&chk, &chk, &den); + if (!fe25519_iseq_vartime(&chk,&num)) ok = 0; + + /* 5. Choose the desired square root according to parity: + */ + if(fe25519_getparity(&r->x) != (1-par)) + fe25519_sub(&r->x,&zero,&r->x); + if (par && fe25519_iseq_vartime(&r->x,&zero)) ok = 0; + + if (!ok) { /* treat all invalid points as point26 */ + r->x = point26_x; + r->y = point26_y; + } + + fe25519_mul(&r->t, &r->x, &r->y); + + return ok; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/implementors b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/implementors new file mode 120000 index 0000000000..fabb74c663 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/implementors @@ -0,0 +1 @@ +../amd64-51/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/mGnP.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/mGnP.c new file mode 100644 index 0000000000..4c82327c25 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/mGnP.c @@ -0,0 +1,131 @@ +#include "crypto_mGnP.h" + +#include "fe25519.h" +#include "sc25519.h" +#include "ge25519.h" +#include "shared-data.h" +#include "crypto_verify_32.h" + +static const fe25519 ec2d = {{0xEBD69B9426B2F146, 0x00E0149A8283B156, 0x198E80F2EEF3D130, 0xA406D9DC56DFFCE7}}; + +static void setneutral(ge25519 *r) +{ + fe25519_setint(&r->x,0); + fe25519_setint(&r->y,1); + fe25519_setint(&r->z,1); + fe25519_setint(&r->t,0); +} + +static void ge25519_double_scalarmult_precompute(ge25519_pniels *pre1, const ge25519_p3 *p1, unsigned long long PRE1_SIZE) +{ + ge25519_p3 d1; + ge25519_p1p1 t; + fe25519 d; + int i; + + pre1[0] = *(ge25519_pniels *)p1; + ge25519_dbl_p1p1(&t,(ge25519_p2 *)pre1); ge25519_p1p1_to_p3(&d1, &t); + /* Convert pre[0] to projective Niels representation */ + d = pre1[0].ysubx; + fe25519_sub(&pre1[0].ysubx, &pre1[0].xaddy, &pre1[0].ysubx); + fe25519_add(&pre1[0].xaddy, &pre1[0].xaddy, &d); + fe25519_mul(&pre1[0].t2d, &pre1[0].t2d, &ec2d); + + for(i=0;i= 0;--i) { + if (slide1[i] || slide2[i]) goto firstbit; + } + + for(;i>=0;i--) + { + firstbit: + + ge25519_dbl_p1p1(&t, (ge25519_p2 *)r); + + if(slide1[i]>0) + { + ge25519_p1p1_to_p3(r, &t); + ge25519_pnielsadd_p1p1(&t, r, &pre1[slide1[i]/2]); + } + else if(slide1[i]<0) + { + ge25519_p1p1_to_p3(r, &t); + neg = pre1[-slide1[i]/2]; + d = neg.ysubx; + neg.ysubx = neg.xaddy; + neg.xaddy = d; + fe25519_neg(&neg.t2d, &neg.t2d); + ge25519_pnielsadd_p1p1(&t, r, &neg); + } + + if(slide2[i]>0) + { + ge25519_p1p1_to_p3(r, &t); + ge25519_nielsadd_p1p1(&t, r, &pre2[slide2[i]/2]); + } + else if(slide2[i]<0) + { + ge25519_p1p1_to_p3(r, &t); + nneg = pre2[-slide2[i]/2]; + d = nneg.ysubx; + nneg.ysubx = nneg.xaddy; + nneg.xaddy = d; + fe25519_neg(&nneg.t2d, &nneg.t2d); + ge25519_nielsadd_p1p1(&t, r, &nneg); + } + + ge25519_p1p1_to_p2((ge25519_p2 *)r, &t); + } +} + +void crypto_mGnP( + unsigned char *Q, + const unsigned char *m, + const unsigned char *n, + const unsigned char *P +) +{ + sc25519 m_internal; + signed char m_slide[256]; + unsigned char mcheck[32]; + sc25519 n_internal; + signed char n_slide[256]; + ge25519 P_internal; + ge25519_pniels P_multiples[P_MULTIPLES]; + ge25519_p3 result; + int ok; + + sc25519_from32bytes(&m_internal,m); + sc25519_from64bytes(&n_internal,n); + ok = ge25519_unpackneg_vartime(&P_internal,P); + + sc25519_to32bytes(mcheck,&m_internal); + if (crypto_verify_32(mcheck,m)) ok = 0; + + sc25519_slide(m_slide,&m_internal,G_WINDOWSIZE); + sc25519_slide(n_slide,&n_internal,P_WINDOWSIZE); + ge25519_double_scalarmult_precompute(P_multiples,&P_internal,P_MULTIPLES); + + ge25519_double_scalarmult_process(&result,n_slide,m_slide,P_multiples,G_multiples); + ge25519_pack(Q,&result); + Q[32] = ok; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_barrett.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_barrett.S new file mode 120000 index 0000000000..26a5f8a1c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_barrett.S @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_barrett.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_from64bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_from64bytes.c new file mode 120000 index 0000000000..f6a000bcdd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_from64bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from64bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_slide.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_slide.c new file mode 120000 index 0000000000..10ea12d89a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_slide.c @@ -0,0 +1 @@ +../amd64-51/sc25519_slide.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_to32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_to32bytes.c new file mode 120000 index 0000000000..6930ca05f6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/sc25519_to32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_to32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/shared-consts.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/shared-consts.c new file mode 100644 index 0000000000..4f192b882d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/shared-consts.c @@ -0,0 +1,37 @@ +// linker define 121666 +// linker define MU0 +// linker define MU1 +// linker define MU2 +// linker define MU3 +// linker define MU4 +// linker define ORDER0 +// linker define ORDER1 +// linker define ORDER2 +// linker define ORDER3 +// linker define EC2D0 +// linker define EC2D1 +// linker define EC2D2 +// linker define EC2D3 +// linker define 38 + +#include "crypto_uint64.h" + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(121666) = 121666; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU0) = 0xED9CE5A30A2C131B; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU1) = 0x2106215D086329A7; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU2) = 0xFFFFFFFFFFFFFFEB; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU3) = 0xFFFFFFFFFFFFFFFF; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU4) = 0x000000000000000F; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER0) = 0x5812631A5CF5D3ED; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER1) = 0x14DEF9DEA2F79CD6; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER2) = 0x0000000000000000; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER3) = 0x1000000000000000; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D0) = 0xEBD69B9426B2F146; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D1) = 0x00E0149A8283B156; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D2) = 0x198E80F2EEF3D130; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D3) = 0xA406D9DC56DFFCE7; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(38) = 38; diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/shared-data.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/shared-data.c new file mode 120000 index 0000000000..055c21deb2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/shared-data.c @@ -0,0 +1 @@ +../amd64-51/shared-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/shared-data.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/shared-data.h new file mode 120000 index 0000000000..0f186b9458 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-64/shared-data.h @@ -0,0 +1 @@ +../amd64-51/shared-data.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/architectures b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/consts_namespace.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/consts_namespace.h new file mode 100644 index 0000000000..2b8dcbb585 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/consts_namespace.h @@ -0,0 +1,31 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vecmask25 CRYPTO_SHARED_NAMESPACE(vecmask25) +#define vecmask26 CRYPTO_SHARED_NAMESPACE(vecmask26) +#define pmask1 CRYPTO_SHARED_NAMESPACE(pmask1) +#define pmask2 CRYPTO_SHARED_NAMESPACE(pmask2) +#define pmask3 CRYPTO_SHARED_NAMESPACE(pmask3) +#define pmask4 CRYPTO_SHARED_NAMESPACE(pmask4) +#define pmask5 CRYPTO_SHARED_NAMESPACE(pmask5) +#define pmask6 CRYPTO_SHARED_NAMESPACE(pmask6) +#define pmask7 CRYPTO_SHARED_NAMESPACE(pmask7) +#define pmask8 CRYPTO_SHARED_NAMESPACE(pmask8) +#define pmask9 CRYPTO_SHARED_NAMESPACE(pmask9) +#define pmask10 CRYPTO_SHARED_NAMESPACE(pmask10) +#define pmask11 CRYPTO_SHARED_NAMESPACE(pmask11) +#define pmask12 CRYPTO_SHARED_NAMESPACE(pmask12) +#define upmask1 CRYPTO_SHARED_NAMESPACE(upmask1) +#define upmask2 CRYPTO_SHARED_NAMESPACE(upmask2) +#define upmask3 CRYPTO_SHARED_NAMESPACE(upmask3) +#define upmask4 CRYPTO_SHARED_NAMESPACE(upmask4) +#define upmask5 CRYPTO_SHARED_NAMESPACE(upmask5) +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) +#define EC2D0 CRYPTO_SHARED_NAMESPACE(EC2D0) +#define EC2D1 CRYPTO_SHARED_NAMESPACE(EC2D1) +#define EC2D2 CRYPTO_SHARED_NAMESPACE(EC2D2) +#define EC2D3 CRYPTO_SHARED_NAMESPACE(EC2D3) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519.h new file mode 120000 index 0000000000..0751205b74 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519.h @@ -0,0 +1 @@ +../amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_add.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_add.S new file mode 120000 index 0000000000..2f72e5bb09 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_add.S @@ -0,0 +1 @@ +../amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_freeze.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_freeze.S new file mode 120000 index 0000000000..65ecfcf5ce --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_freeze.S @@ -0,0 +1 @@ +../amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_getparity.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_getparity.c new file mode 120000 index 0000000000..d5e8b184b4 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_getparity.c @@ -0,0 +1 @@ +../amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_invert.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_invert.c new file mode 120000 index 0000000000..06cd19180a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_iseq.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_iseq.c new file mode 120000 index 0000000000..3175be3915 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_iseq.c @@ -0,0 +1 @@ +../amd64-64/fe25519_iseq.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_mul.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_mul.S new file mode 120000 index 0000000000..3ab8e1cb60 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_mul.S @@ -0,0 +1 @@ +../amd64-maa4/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_nsquare.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_nsquare.S new file mode 120000 index 0000000000..ba6bfa7780 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_nsquare.S @@ -0,0 +1 @@ +../amd64-maa4/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_pack.c new file mode 120000 index 0000000000..c92109ac1d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_pow2523.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_pow2523.c new file mode 120000 index 0000000000..3eb9dd58ec --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_pow2523.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pow2523.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_setint.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_setint.c new file mode 120000 index 0000000000..6ae1104ea9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_setint.c @@ -0,0 +1 @@ +../amd64-64/fe25519_setint.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_square.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_square.S new file mode 120000 index 0000000000..0620c3b743 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_square.S @@ -0,0 +1 @@ +../amd64-maa4/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_sub.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_sub.S new file mode 120000 index 0000000000..5054d0b99e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_sub.S @@ -0,0 +1 @@ +../amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_unpack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_unpack.c new file mode 120000 index 0000000000..98bfaced87 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519.h new file mode 120000 index 0000000000..8c73f0da6c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519.h @@ -0,0 +1 @@ +../amd64-mxaa/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_base_slide_multiples.data b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_base_slide_multiples.data new file mode 120000 index 0000000000..36c9553260 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_base_slide_multiples.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_slide_multiples.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_double_scalarmult_precompute.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_double_scalarmult_precompute.S new file mode 100644 index 0000000000..52101c5fcf --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_double_scalarmult_precompute.S @@ -0,0 +1,3099 @@ +// linker define ge25519_double_scalarmult_precompute +// linker use upmask1 upmask2 upmask3 upmask4 upmask5 +// linker use pmask1 pmask2 pmask3 pmask4 pmask5 pmask6 pmask7 pmask8 pmask9 pmask10 pmask11 pmask12 +// linker use EC2D0 EC2D1 EC2D2 EC2D3 mask63 vec19 vecmask25 vecmask26 + +/* Assembly for the precomputaion phase used in double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): + + movq %rsp,%r11 + andq $-32,%rsp + subq $1120,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + decq %rdx + movq %rdx,56(%rsp) + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 32(%rsi),%r8 + movq 40(%rsi),%r9 + movq 48(%rsi),%r10 + movq 56(%rsi),%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + movq 64(%rsi),%r8 + movq 72(%rsi),%r9 + movq 80(%rsi),%r10 + movq 88(%rsi),%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsi),%r8 + movq 104(%rsi),%r9 + movq 112(%rsi),%r10 + movq 120(%rsi),%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + /* dbl p1p1 */ + + // square + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,64(%rsp) + movq %r10,72(%rsp) + movq %r12,80(%rsp) + movq %r14,88(%rsp) + + // square + movq 32(%rdi),%rbx + movq 40(%rdi),%rbp + movq 48(%rdi),%rcx + movq 56(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,96(%rsp) + movq %r10,104(%rsp) + movq %r12,112(%rsp) + movq %r14,120(%rsp) + + // square + movq 64(%rdi),%rbx + movq 72(%rdi),%rbp + movq 80(%rdi),%rcx + movq 88(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r10,136(%rsp) + movq %r12,144(%rsp) + movq %r14,152(%rsp) + + // sub + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // sub + movq $0,%r12 + movq $0,%r13 + movq $0,%r14 + movq $0,%r15 + + subq 96(%rsp),%r12 + sbbq 104(%rsp),%r13 + sbbq 112(%rsp),%r14 + sbbq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,160(%rsp) + movq %r13,168(%rsp) + movq %r14,176(%rsp) + movq %r15,184(%rsp) + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,224(%rsp) + movq %r13,232(%rsp) + movq %r14,240(%rsp) + movq %r15,248(%rsp) + + // sub + subq 96(%rsp),%r8 + sbbq 104(%rsp),%r9 + sbbq 112(%rsp),%r10 + sbbq 120(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 128(%rsp),%r12 + sbbq 136(%rsp),%r13 + sbbq 144(%rsp),%r14 + sbbq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // add + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + + addq 32(%rdi),%r8 + adcq 40(%rdi),%r9 + adcq 48(%rdi),%r10 + adcq 56(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + movq 96(%rsp),%rbx + movq 104(%rsp),%rbp + movq 112(%rsp),%rcx + movq 120(%rsp),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + addq 64(%rsp),%r8 + adcq 72(%rsp),%r10 + adcq 80(%rsp),%r12 + adcq 88(%rsp),%r14 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + addq 160(%rsp),%r8 + adcq 168(%rsp),%r10 + adcq 176(%rsp),%r12 + adcq 184(%rsp),%r14 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r10,200(%rsp) + movq %r12,208(%rsp) + movq %r14,216(%rsp) + + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + vmovdqa 224(%rsp),%ymm10 + vmovdqa 192(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 288(%rsp),%ymm8 + vmovdqa 256(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,64(%rsp) + vmovdqa %ymm11,96(%rsp) + vmovdqa %ymm12,128(%rsp) + vmovdqa %ymm13,160(%rsp) + + // Convert pre[0] to projective Niels representation + movq 0(%rdi),%rbx + movq 8(%rdi),%rcx + movq 16(%rdi),%rbp + movq 24(%rdi),%rsi + + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + // mul + movq EC2D1(%rip),%rax + mulq 120(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq EC2D2(%rip),%rax + mulq 112(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D3(%rip),%rax + mulq 104(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D2(%rip),%rax + mulq 120(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq EC2D3(%rip),%rax + mulq 112(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq EC2D3(%rip),%rax + mulq 120(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq EC2D0(%rip),%rax + mulq 120(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D1(%rip),%rax + mulq 112(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D2(%rip),%rax + mulq 104(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D3(%rip),%rax + mulq 96(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq EC2D0(%rip),%rax + mulq 96(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D0(%rip),%rax + mulq 104(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq EC2D1(%rip),%rax + mulq 96(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq EC2D0(%rip),%rax + mulq 112(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq EC2D1(%rip),%rax + mulq 104(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq EC2D2(%rip),%rax + mulq 96(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,96(%rdi) + movq %r10,104(%rdi) + movq %r12,112(%rdi) + movq %r14,120(%rdi) + + movq $0,384(%rsp) + +.L: + // pnielsadd_p1p1 + + movq 96(%rsp),%r8 + movq 104(%rsp),%r9 + movq 112(%rsp),%r10 + movq 120(%rsp),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + addq 64(%rsp),%r12 + adcq 72(%rsp),%r13 + adcq 80(%rsp),%r14 + adcq 88(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // mul + movq 328(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 336(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 344(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 336(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 344(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 344(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 320(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 328(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 336(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 344(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 320(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 320(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 328(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 320(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 328(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 336(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,320(%rsp) + movq %r10,328(%rsp) + movq %r12,336(%rsp) + movq %r14,344(%rsp) + + // mul + movq 360(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 368(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 376(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 368(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 376(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 376(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 352(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 360(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 368(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 376(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 352(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 352(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 360(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 352(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 360(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 368(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r10 + adcq 336(%rsp),%r12 + adcq 344(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r10,264(%rsp) + movq %r12,272(%rsp) + movq %r14,280(%rsp) + + // sub + subq 320(%rsp),%r9 + sbbq 328(%rsp),%r11 + sbbq 336(%rsp),%r13 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,192(%rsp) + movq %r11,200(%rsp) + movq %r13,208(%rsp) + movq %r15,216(%rsp) + + // mul + movq 168(%rsp),%rax + mulq 120(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 176(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 184(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 176(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 184(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 184(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 160(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 168(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 176(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 184(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 160(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 160(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 168(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 160(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 168(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 176(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,320(%rsp) + movq %r10,328(%rsp) + movq %r12,336(%rsp) + movq %r14,344(%rsp) + + // mul + movq 136(%rsp),%rax + mulq 88(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 144(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 152(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 144(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 152(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 152(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 128(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 136(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 144(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 152(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 128(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 128(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 136(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 128(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 136(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 144(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r10 + adcq 336(%rsp),%r12 + adcq 344(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,224(%rsp) + movq %r10,232(%rsp) + movq %r12,240(%rsp) + movq %r14,248(%rsp) + + // sub + subq 320(%rsp),%r9 + sbbq 328(%rsp),%r11 + sbbq 336(%rsp),%r13 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,288(%rsp) + movq %r11,296(%rsp) + movq %r13,304(%rsp) + movq %r15,312(%rsp) + + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + vmovdqa 224(%rsp),%ymm10 + vmovdqa 192(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 288(%rsp),%ymm8 + vmovdqa 256(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rdi) + vmovdqa %ymm11,160(%rdi) + vmovdqa %ymm12,192(%rdi) + vmovdqa %ymm13,224(%rdi) + + // Convert pre[i1] to projective Niels representation + movq 128(%rdi),%rbx + movq 136(%rdi),%rcx + movq 144(%rdi),%rbp + movq 152(%rdi),%rsi + + movq 160(%rdi),%r8 + movq 168(%rdi),%r9 + movq 176(%rdi),%r10 + movq 184(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r8,128(%rdi) + movq %r9,136(%rdi) + movq %r10,144(%rdi) + movq %r11,152(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,160(%rdi) + movq %r13,168(%rdi) + movq %r14,176(%rdi) + movq %r15,184(%rdi) + + // mul + movq EC2D1(%rip),%rax + mulq 248(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq EC2D2(%rip),%rax + mulq 240(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D3(%rip),%rax + mulq 232(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D2(%rip),%rax + mulq 248(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq EC2D3(%rip),%rax + mulq 240(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq EC2D3(%rip),%rax + mulq 248(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq EC2D0(%rip),%rax + mulq 248(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D1(%rip),%rax + mulq 240(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D2(%rip),%rax + mulq 232(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D3(%rip),%rax + mulq 224(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq EC2D0(%rip),%rax + mulq 224(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D0(%rip),%rax + mulq 232(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq EC2D1(%rip),%rax + mulq 224(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq EC2D0(%rip),%rax + mulq 240(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq EC2D1(%rip),%rax + mulq 232(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq EC2D2(%rip),%rax + mulq 224(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,224(%rdi) + movq %r10,232(%rdi) + movq %r12,240(%rdi) + movq %r14,248(%rdi) + + addq $128,%rdi + + movq 384(%rsp),%r8 + incq %r8 + movq %r8,384(%rsp) + + cmpq 56(%rsp),%r8 + + jl .L + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_double_scalarmult_process.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_double_scalarmult_process.S new file mode 100644 index 0000000000..126cd772c9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_double_scalarmult_process.S @@ -0,0 +1,6283 @@ +// linker define ge25519_double_scalarmult_process +// linker use upmask1 upmask2 upmask3 upmask4 upmask5 +// linker use pmask1 pmask2 pmask3 pmask4 pmask5 pmask6 pmask7 pmask8 pmask9 pmask10 pmask11 pmask12 +// linker use mask63 vec19 vecmask25 vecmask26 + +/* Assembly for double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): + + movq %rsp,%r11 + andq $-32,%rsp + subq $1120,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + // setneutral + movq $0,%rax + movq $1,%rbx + + movq %rax,0(%rdi) + movq %rax,8(%rdi) + movq %rax,16(%rdi) + movq %rax,24(%rdi) + + movq %rbx,32(%rdi) + movq %rax,40(%rdi) + movq %rax,48(%rdi) + movq %rax,56(%rdi) + + movq %rbx,64(%rdi) + movq %rax,72(%rdi) + movq %rax,80(%rdi) + movq %rax,88(%rdi) + + movq %rax,96(%rdi) + movq %rax,104(%rdi) + movq %rax,112(%rdi) + movq %rax,120(%rdi) + + movq $255,%rax + addq $255,%rsi + addq $255,%rdx + + movq %rdi,56(%rsp) + movq %rcx,64(%rsp) + movq %r8,72(%rsp) + +.L1: + movb 0(%rsi),%r14b + movb 0(%rdx),%r15b + + cmpb $0,%r14b + jg .L2 + + cmpb $0,%r15b + jg .L2 + + decq %rsi + decq %rdx + + decq %rax + cmpq $0,%rax + + jge .L1 + + cmpq $0,%rax + jl .L10 + +.L2: + movq %rsi,80(%rsp) + movq %rdx,88(%rsp) + movq %rax,96(%rsp) + +.L3: + /* dbl p1p1 */ + + // square + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,128(%rsp) + movq %r10,136(%rsp) + movq %r12,144(%rsp) + movq %r14,152(%rsp) + + // square + movq 32(%rdi),%rbx + movq 40(%rdi),%rbp + movq 48(%rdi),%rcx + movq 56(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,160(%rsp) + movq %r10,168(%rsp) + movq %r12,176(%rsp) + movq %r14,184(%rsp) + + // square + movq 64(%rdi),%rbx + movq 72(%rdi),%rbp + movq 80(%rdi),%rcx + movq 88(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r10,200(%rsp) + movq %r12,208(%rsp) + movq %r14,216(%rsp) + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 160(%rsp),%r8 + sbbq 168(%rsp),%r9 + sbbq 176(%rsp),%r10 + sbbq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // add + addq 160(%rsp),%r12 + adcq 168(%rsp),%r13 + adcq 176(%rsp),%r14 + adcq 184(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // sub + subq 192(%rsp),%r12 + sbbq 200(%rsp),%r13 + sbbq 208(%rsp),%r14 + sbbq 216(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + addq 32(%rdi),%rbx + adcq 40(%rdi),%rbp + adcq 48(%rdi),%rcx + adcq 56(%rdi),%rsi + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%rbx + adcq %rdx,%rbp + adcq %rdx,%rcx + adcq %rdx,%rsi + + cmovc %rax,%rdx + addq %rdx,%rbx + + // square + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + addq 128(%rsp),%r8 + adcq 136(%rsp),%r10 + adcq 144(%rsp),%r12 + adcq 152(%rsp),%r14 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // sub + subq 160(%rsp),%r8 + sbbq 168(%rsp),%r10 + sbbq 176(%rsp),%r12 + sbbq 184(%rsp),%r14 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r10 + sbbq %rdx,%r12 + sbbq %rdx,%r14 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r10,264(%rsp) + movq %r12,272(%rsp) + movq %r14,280(%rsp) + + movq 80(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,80(%rsp) + movq 64(%rsp),%rdi + + cmpb $0,%r14b + jg .L4 + jl .L5 + je .L6 + +.L4: + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $128,%r14,%r14 + addq %r14,%rdi + + /* pnielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 392(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 400(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 408(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 400(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 408(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 408(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 384(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 392(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 400(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 408(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 384(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 384(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 392(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 384(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 392(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 400(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,384(%rsp) + movq %r10,392(%rsp) + movq %r12,400(%rsp) + movq %r14,408(%rsp) + + // mul + movq 424(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 432(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 440(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 432(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 440(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 440(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 416(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 424(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 432(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 440(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 416(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 416(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 424(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 416(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 424(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 432(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r10 + adcq 400(%rsp),%r12 + adcq 408(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r10,328(%rsp) + movq %r12,336(%rsp) + movq %r14,344(%rsp) + + // sub + subq 384(%rsp),%r9 + sbbq 392(%rsp),%r11 + sbbq 400(%rsp),%r13 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,256(%rsp) + movq %r11,264(%rsp) + movq %r13,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 232(%rsp),%rax + mulq 120(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 240(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 248(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 248(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 248(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 224(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 240(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 224(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 232(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 232(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 240(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,384(%rsp) + movq %r10,392(%rsp) + movq %r12,400(%rsp) + movq %r14,408(%rsp) + + // mul + movq 200(%rsp),%rax + mulq 88(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 208(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 216(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 208(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 216(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 216(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 192(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 200(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 208(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 216(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 192(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 192(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 200(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 192(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 200(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 208(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r10 + adcq 400(%rsp),%r12 + adcq 408(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r10,296(%rsp) + movq %r12,304(%rsp) + movq %r14,312(%rsp) + + // sub + subq 384(%rsp),%r9 + sbbq 392(%rsp),%r11 + sbbq 400(%rsp),%r13 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,352(%rsp) + movq %r11,360(%rsp) + movq %r13,368(%rsp) + movq %r15,376(%rsp) + + jmp .L6 + +.L5: + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $128,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 96(%rdi),%r8 + sbbq 104(%rdi),%r9 + sbbq 112(%rdi),%r10 + sbbq 120(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,448(%rsp) + movq %r9,456(%rsp) + movq %r10,464(%rsp) + movq %r11,472(%rsp) + + /* pnielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 392(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 400(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 408(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 400(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 408(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 408(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 384(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 392(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 400(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 408(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 384(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 384(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 392(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 384(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 392(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 400(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,384(%rsp) + movq %r10,392(%rsp) + movq %r12,400(%rsp) + movq %r14,408(%rsp) + + // mul + movq 424(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 432(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 440(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 432(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 440(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 440(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 416(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 424(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 432(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 440(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 416(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 416(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 424(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 416(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 424(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 432(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r10 + adcq 400(%rsp),%r12 + adcq 408(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r10,328(%rsp) + movq %r12,336(%rsp) + movq %r14,344(%rsp) + + // sub + subq 384(%rsp),%r9 + sbbq 392(%rsp),%r11 + sbbq 400(%rsp),%r13 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,256(%rsp) + movq %r11,264(%rsp) + movq %r13,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 232(%rsp),%rax + mulq 472(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 240(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 248(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 472(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 248(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 248(%rsp),%rax + mulq 472(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 224(%rsp),%rax + mulq 472(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 240(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 224(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 232(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 232(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 240(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,384(%rsp) + movq %r10,392(%rsp) + movq %r12,400(%rsp) + movq %r14,408(%rsp) + + // mul + movq 200(%rsp),%rax + mulq 88(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 208(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 216(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 208(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 216(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 216(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 192(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 200(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 208(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 216(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 192(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 192(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 200(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 192(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 200(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 208(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r10 + adcq 400(%rsp),%r12 + adcq 408(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r10,296(%rsp) + movq %r12,304(%rsp) + movq %r14,312(%rsp) + + // sub + subq 384(%rsp),%r9 + sbbq 392(%rsp),%r11 + sbbq 400(%rsp),%r13 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,352(%rsp) + movq %r11,360(%rsp) + movq %r13,368(%rsp) + movq %r15,376(%rsp) + +.L6: + movq 88(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,88(%rsp) + movq 72(%rsp),%rdi + + cmpb $0,%r14b + jg .L7 + jl .L8 + je .L9 + +.L7: + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $96,%r14,%r14 + addq %r14,%rdi + + /* nielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 392(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 400(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 408(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 400(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 408(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 408(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 384(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 392(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 400(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 408(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 384(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 384(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 392(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 384(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 392(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 400(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,384(%rsp) + movq %r10,392(%rsp) + movq %r12,400(%rsp) + movq %r14,408(%rsp) + + // mul + movq 424(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 432(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 440(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 432(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 440(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 440(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 416(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 424(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 432(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 440(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 416(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 416(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 424(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 416(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 424(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 432(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r10 + adcq 400(%rsp),%r12 + adcq 408(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r10,328(%rsp) + movq %r12,336(%rsp) + movq %r14,344(%rsp) + + // sub + subq 384(%rsp),%r9 + sbbq 392(%rsp),%r11 + sbbq 400(%rsp),%r13 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,256(%rsp) + movq %r11,264(%rsp) + movq %r13,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 232(%rsp),%rax + mulq 88(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 240(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 248(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 248(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 248(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 224(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 240(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 224(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 232(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 232(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 240(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + movq 192(%rsp),%r9 + movq 200(%rsp),%r11 + movq 208(%rsp),%r13 + movq 216(%rsp),%r15 + + addq %r9,%r9 + adcq %r11,%r11 + adcq %r13,%r13 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r9 + adcq %rdx,%r11 + adcq %rdx,%r13 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r9 + + // sub + movq %r9,%rbx + movq %r11,%rcx + movq %r13,%rbp + movq %r15,%rsi + + subq %r8,%r9 + sbbq %r10,%r11 + sbbq %r12,%r13 + sbbq %r14,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r9 + + movq %r9,352(%rsp) + movq %r11,360(%rsp) + movq %r13,368(%rsp) + movq %r15,376(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r10 + adcq %rbp,%r12 + adcq %rsi,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r10,296(%rsp) + movq %r12,304(%rsp) + movq %r14,312(%rsp) + + jmp .L9 + +.L8: + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $96,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rdi),%r8 + sbbq 72(%rdi),%r9 + sbbq 80(%rdi),%r10 + sbbq 88(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,448(%rsp) + movq %r9,456(%rsp) + movq %r10,464(%rsp) + movq %r11,472(%rsp) + + /* nielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 392(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 400(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 408(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 400(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 408(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 408(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 384(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 392(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 400(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 408(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 384(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 384(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 392(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 384(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 392(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 400(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,384(%rsp) + movq %r10,392(%rsp) + movq %r12,400(%rsp) + movq %r14,408(%rsp) + + // mul + movq 424(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 432(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 440(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 432(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 440(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 440(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 416(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 424(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 432(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 440(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 416(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 416(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 424(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 416(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 424(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 432(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r10 + adcq 400(%rsp),%r12 + adcq 408(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r10,328(%rsp) + movq %r12,336(%rsp) + movq %r14,344(%rsp) + + // sub + subq 384(%rsp),%r9 + sbbq 392(%rsp),%r11 + sbbq 400(%rsp),%r13 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,256(%rsp) + movq %r11,264(%rsp) + movq %r13,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 232(%rsp),%rax + mulq 472(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 240(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 248(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 472(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 248(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 248(%rsp),%rax + mulq 472(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 224(%rsp),%rax + mulq 472(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 240(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 224(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 232(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 232(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 240(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + movq 192(%rsp),%r9 + movq 200(%rsp),%r11 + movq 208(%rsp),%r13 + movq 216(%rsp),%r15 + + addq %r9,%r9 + adcq %r11,%r11 + adcq %r13,%r13 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r9 + adcq %rdx,%r11 + adcq %rdx,%r13 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r9 + + // sub + movq %r9,%rbx + movq %r11,%rcx + movq %r13,%rbp + movq %r15,%rsi + + subq %r8,%r9 + sbbq %r10,%r11 + sbbq %r12,%r13 + sbbq %r14,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r9 + + movq %r9,352(%rsp) + movq %r11,360(%rsp) + movq %r13,368(%rsp) + movq %r15,376(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r10 + adcq %rbp,%r12 + adcq %rsi,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r10,296(%rsp) + movq %r12,304(%rsp) + movq %r14,312(%rsp) + +.L9: + movq 56(%rsp),%rdi + + /* p1p1 to p2 */ + + // mul + movq 264(%rsp),%rax + mulq 376(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 272(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 280(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 272(%rsp),%rax + mulq 376(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 280(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 280(%rsp),%rax + mulq 376(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 256(%rsp),%rax + mulq 376(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 264(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 272(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 280(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 256(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 256(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 264(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 256(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 264(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 272(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,0(%rdi) + movq %r10,8(%rdi) + movq %r12,16(%rdi) + movq %r14,24(%rdi) + + // mul + movq 296(%rsp),%rax + mulq 344(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 304(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 312(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 304(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 312(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 312(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 288(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 296(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 304(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 312(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 288(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 288(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 296(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 288(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 296(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 304(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,32(%rdi) + movq %r10,40(%rdi) + movq %r12,48(%rdi) + movq %r14,56(%rdi) + + // mul + movq 296(%rsp),%rax + mulq 376(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 304(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 312(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 304(%rsp),%rax + mulq 376(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 312(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 312(%rsp),%rax + mulq 376(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 288(%rsp),%rax + mulq 376(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 296(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 304(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 312(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 288(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 288(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 296(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 288(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 296(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 304(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,64(%rdi) + movq %r10,72(%rdi) + movq %r12,80(%rdi) + movq %r14,88(%rdi) + + movq 96(%rsp),%rax + decq %rax + movq %rax,96(%rsp) + + cmpq $0,%rax + + jge .L3 + +.L10: + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_pack.c new file mode 120000 index 0000000000..6029b816df --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_pack.c @@ -0,0 +1 @@ +../amd64-51/ge25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_unpackneg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_unpackneg.c new file mode 120000 index 0000000000..4b7f5c5cff --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/ge25519_unpackneg.c @@ -0,0 +1 @@ +../amd64-64/ge25519_unpackneg.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/implementors b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/implementors new file mode 120000 index 0000000000..71bd496923 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/implementors @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/mGnP.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/mGnP.c new file mode 120000 index 0000000000..3ef603262c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/mGnP.c @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/mGnP.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_barrett.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_barrett.S new file mode 120000 index 0000000000..26a5f8a1c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_barrett.S @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_barrett.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_from64bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_from64bytes.c new file mode 120000 index 0000000000..f6a000bcdd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_from64bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from64bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_slide.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_slide.c new file mode 120000 index 0000000000..10ea12d89a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_slide.c @@ -0,0 +1 @@ +../amd64-51/sc25519_slide.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_to32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_to32bytes.c new file mode 120000 index 0000000000..6930ca05f6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/sc25519_to32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_to32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/shared-consts.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/shared-consts.c new file mode 100644 index 0000000000..e15c8cb71c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/shared-consts.c @@ -0,0 +1,81 @@ +// linker define vec19 +// linker define vecmask25 +// linker define vecmask26 +// linker define pmask1 +// linker define pmask2 +// linker define pmask3 +// linker define pmask4 +// linker define pmask5 +// linker define pmask6 +// linker define pmask7 +// linker define pmask8 +// linker define pmask9 +// linker define pmask10 +// linker define pmask11 +// linker define pmask12 +// linker define upmask1 +// linker define upmask2 +// linker define upmask3 +// linker define upmask4 +// linker define upmask5 +// linker define mask63 +// linker define 121666 +// linker define MU0 +// linker define MU1 +// linker define MU2 +// linker define MU3 +// linker define MU4 +// linker define ORDER0 +// linker define ORDER1 +// linker define ORDER2 +// linker define ORDER3 +// linker define EC2D0 +// linker define EC2D1 +// linker define EC2D2 +// linker define EC2D3 +// linker define 38 + +#include "crypto_uint64.h" +#include "consts_namespace.h" + +const crypto_uint64 vec19[] = { 19,19,19,19 }; +const crypto_uint64 vecmask25[] = { 0x1FFFFFF,0x1FFFFFF,0x1FFFFFF,0x1FFFFFF }; +const crypto_uint64 vecmask26[] = { 0x3FFFFFF,0x3FFFFFF,0x3FFFFFF,0x3FFFFFF }; +const crypto_uint64 pmask1[] = { 0x0000000003FFFFFF,0x0000000003FFFFFF,0x0000000003FFFFFF,0x0000000003FFFFFF }; +const crypto_uint64 pmask2[] = { 0x0007FFFFFC000000,0x0007FFFFFC000000,0x0007FFFFFC000000,0x0007FFFFFC000000 }; +const crypto_uint64 pmask3[] = { 0xFFF8000000000000,0xFFF8000000000000,0xFFF8000000000000,0xFFF8000000000000 }; +const crypto_uint64 pmask4[] = { 0x0000000000001FFF,0x0000000000001FFF,0x0000000000001FFF,0x0000000000001FFF }; +const crypto_uint64 pmask5[] = { 0x0000003FFFFFE000,0x0000003FFFFFE000,0x0000003FFFFFE000,0x0000003FFFFFE000 }; +const crypto_uint64 pmask6[] = { 0xFFFFFFC000000000,0xFFFFFFC000000000,0xFFFFFFC000000000,0xFFFFFFC000000000 }; +const crypto_uint64 pmask7[] = { 0x0000000001FFFFFF,0x0000000001FFFFFF,0x0000000001FFFFFF,0x0000000001FFFFFF }; +const crypto_uint64 pmask8[] = { 0x0007FFFFFE000000,0x0007FFFFFE000000,0x0007FFFFFE000000,0x0007FFFFFE000000 }; +const crypto_uint64 pmask9[] = { 0xFFF8000000000000,0xFFF8000000000000,0xFFF8000000000000,0xFFF8000000000000 }; +const crypto_uint64 pmask10[] = { 0x0000000000000FFF,0x0000000000000FFF,0x0000000000000FFF,0x0000000000000FFF }; +const crypto_uint64 pmask11[] = { 0x0000003FFFFFF000,0x0000003FFFFFF000,0x0000003FFFFFF000,0x0000003FFFFFF000 }; +const crypto_uint64 pmask12[] = { 0xFFFFFFC000000000,0xFFFFFFC000000000,0xFFFFFFC000000000,0xFFFFFFC000000000 }; +const crypto_uint64 upmask1[] = { 0x0000000003FFFFFF,0x0000000003FFFFFF,0x0000000003FFFFFF,0x0000000003FFFFFF }; +const crypto_uint64 upmask2[] = { 0x0000000001FFFFFF,0x0000000001FFFFFF,0x0000000001FFFFFF,0x0000000001FFFFFF }; +const crypto_uint64 upmask3[] = { 0x0000000000001FFF,0x0000000000001FFF,0x0000000000001FFF,0x0000000000001FFF }; +const crypto_uint64 upmask4[] = { 0x0000000003FFE000,0x0000000003FFE000,0x0000000003FFE000,0x0000000003FFE000 }; +const crypto_uint64 upmask5[] = { 0x0000000001FFE000,0x0000000001FFE000,0x0000000001FFE000,0x0000000001FFE000 }; +const crypto_uint64 mask63[] = { 0x7FFFFFFFFFFFFFFF }; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(121666) = 121666; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU0) = 0xED9CE5A30A2C131B; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU1) = 0x2106215D086329A7; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU2) = 0xFFFFFFFFFFFFFFEB; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU3) = 0xFFFFFFFFFFFFFFFF; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU4) = 0x000000000000000F; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER0) = 0x5812631A5CF5D3ED; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER1) = 0x14DEF9DEA2F79CD6; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER2) = 0x0000000000000000; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER3) = 0x1000000000000000; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D0) = 0xEBD69B9426B2F146; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D1) = 0x00E0149A8283B156; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D2) = 0x198E80F2EEF3D130; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D3) = 0xA406D9DC56DFFCE7; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(38) = 38; diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/shared-data.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/shared-data.c new file mode 120000 index 0000000000..055c21deb2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/shared-data.c @@ -0,0 +1 @@ +../amd64-51/shared-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/shared-data.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/shared-data.h new file mode 120000 index 0000000000..0f186b9458 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maa4/shared-data.h @@ -0,0 +1 @@ +../amd64-51/shared-data.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/architectures b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/architectures new file mode 120000 index 0000000000..1ce61403e6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/architectures @@ -0,0 +1 @@ +../amd64-avx2-9l-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/consts_namespace.h new file mode 120000 index 0000000000..3d99ebeda8 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-10l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519.h new file mode 120000 index 0000000000..0751205b74 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519.h @@ -0,0 +1 @@ +../amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_add.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_add.S new file mode 120000 index 0000000000..2f72e5bb09 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_add.S @@ -0,0 +1 @@ +../amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..65ecfcf5ce --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_getparity.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_getparity.c new file mode 120000 index 0000000000..d5e8b184b4 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_getparity.c @@ -0,0 +1 @@ +../amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_invert.c new file mode 120000 index 0000000000..06cd19180a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_iseq.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_iseq.c new file mode 120000 index 0000000000..3175be3915 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_iseq.c @@ -0,0 +1 @@ +../amd64-64/fe25519_iseq.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_mul.S new file mode 120000 index 0000000000..e2da98a127 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..b86bc09ece --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_pack.c new file mode 120000 index 0000000000..c92109ac1d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_pow2523.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_pow2523.c new file mode 120000 index 0000000000..3eb9dd58ec --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_pow2523.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pow2523.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_setint.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_setint.c new file mode 120000 index 0000000000..6ae1104ea9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_setint.c @@ -0,0 +1 @@ +../amd64-64/fe25519_setint.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_square.S new file mode 120000 index 0000000000..c94412632c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_square.S @@ -0,0 +1 @@ +../amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_sub.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_sub.S new file mode 120000 index 0000000000..5054d0b99e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_sub.S @@ -0,0 +1 @@ +../amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..98bfaced87 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519.h new file mode 120000 index 0000000000..8c73f0da6c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519.h @@ -0,0 +1 @@ +../amd64-mxaa/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_base_slide_multiples.data b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_base_slide_multiples.data new file mode 120000 index 0000000000..36c9553260 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_base_slide_multiples.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_slide_multiples.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_double_scalarmult_precompute.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_double_scalarmult_precompute.S new file mode 100644 index 0000000000..b25164ef06 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_double_scalarmult_precompute.S @@ -0,0 +1,2591 @@ +// linker define ge25519_double_scalarmult_precompute +// linker use upmask1 upmask2 upmask3 upmask4 upmask5 +// linker use pmask1 pmask2 pmask3 pmask4 pmask5 pmask6 pmask7 pmask8 pmask9 pmask10 pmask11 pmask12 +// linker use EC2D0 EC2D1 EC2D2 EC2D3 mask63 vec19 vecmask25 vecmask26 + +/* Assembly for the precomputaion phase used in double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): + + movq %rsp,%r11 + andq $-32,%rsp + subq $1120,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + decq %rdx + movq %rdx,56(%rsp) + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 32(%rsi),%r8 + movq 40(%rsi),%r9 + movq 48(%rsi),%r10 + movq 56(%rsi),%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + movq 64(%rsi),%r8 + movq 72(%rsi),%r9 + movq 80(%rsi),%r10 + movq 88(%rsi),%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsi),%r8 + movq 104(%rsi),%r9 + movq 112(%rsi),%r10 + movq 120(%rsi),%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + /* dbl p1p1 */ + + // square + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 8(%rdi),%r9,%r10 + + mulx 16(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 8(%rdi),%rdx + xorq %r14,%r14 + + mulx 16(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 8(%rdi),%rdx + mulx 24(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 24(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 0(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 8(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 16(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 24(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // square + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 40(%rdi),%r9,%r10 + + mulx 48(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 40(%rdi),%rdx + xorq %r14,%r14 + + mulx 48(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 40(%rdi),%rdx + mulx 56(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 56(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 32(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 40(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 48(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 56(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 72(%rdi),%r9,%r10 + + mulx 80(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 72(%rdi),%rdx + xorq %r14,%r14 + + mulx 80(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 72(%rdi),%rdx + mulx 88(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 88(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 64(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 72(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 80(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 88(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // sub + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // sub + movq $0,%r12 + movq $0,%r13 + movq $0,%r14 + movq $0,%r15 + + subq 96(%rsp),%r12 + sbbq 104(%rsp),%r13 + sbbq 112(%rsp),%r14 + sbbq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,160(%rsp) + movq %r13,168(%rsp) + movq %r14,176(%rsp) + movq %r15,184(%rsp) + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,224(%rsp) + movq %r13,232(%rsp) + movq %r14,240(%rsp) + movq %r15,248(%rsp) + + // sub + subq 96(%rsp),%r8 + sbbq 104(%rsp),%r9 + sbbq 112(%rsp),%r10 + sbbq 120(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 128(%rsp),%r12 + sbbq 136(%rsp),%r13 + sbbq 144(%rsp),%r14 + sbbq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // add + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + + addq 32(%rdi),%r8 + adcq 40(%rdi),%r9 + adcq 48(%rdi),%r10 + adcq 56(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + xorq %r13,%r13 + movq 96(%rsp),%rdx + + mulx 104(%rsp),%r9,%r10 + + mulx 112(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 120(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 104(%rsp),%rdx + xorq %r14,%r14 + + mulx 112(%rsp),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 104(%rsp),%rdx + mulx 120(%rsp),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 112(%rsp),%rdx + + mulx 120(%rsp),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 96(%rsp),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 104(%rsp),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 112(%rsp),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 120(%rsp),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + addq 160(%rsp),%r8 + adcq 168(%rsp),%r9 + adcq 176(%rsp),%r10 + adcq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r9,200(%rsp) + movq %r10,208(%rsp) + movq %r11,216(%rsp) + + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + vmovdqa 224(%rsp),%ymm10 + vmovdqa 192(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 288(%rsp),%ymm8 + vmovdqa 256(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,64(%rsp) + vmovdqa %ymm11,96(%rsp) + vmovdqa %ymm12,128(%rsp) + vmovdqa %ymm13,160(%rsp) + + // Convert pre[0] to projective Niels representation + movq 0(%rdi),%rbx + movq 8(%rdi),%rcx + movq 16(%rdi),%rbp + movq 24(%rdi),%rsi + + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + // mul + xorq %r13,%r13 + movq EC2D0(%rip),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq EC2D1(%rip),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq EC2D2(%rip),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq EC2D3(%rip),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + movq $0,384(%rsp) + +.L: + // pnielsadd_p1p1 + + movq 96(%rsp),%r8 + movq 104(%rsp),%r9 + movq 112(%rsp),%r10 + movq 120(%rsp),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + addq 64(%rsp),%r12 + adcq 72(%rsp),%r13 + adcq 80(%rsp),%r14 + adcq 88(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // mul + xorq %r13,%r13 + movq 320(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 328(%rsp),%rdx + + mulx 0(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 8(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 16(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 24(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 336(%rsp),%rdx + + mulx 0(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 8(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 16(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 24(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 344(%rsp),%rdx + + mulx 0(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 8(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 16(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 24(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // mul + xorq %r13,%r13 + movq 352(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 360(%rsp),%rdx + + mulx 32(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 40(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 48(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 56(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 368(%rsp),%rdx + + mulx 32(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 40(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 48(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 56(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 376(%rsp),%rdx + + mulx 32(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 40(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 48(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 56(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r9 + adcq 336(%rsp),%r10 + adcq 344(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 320(%rsp),%r12 + sbbq 328(%rsp),%r13 + sbbq 336(%rsp),%r14 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,192(%rsp) + movq %r13,200(%rsp) + movq %r14,208(%rsp) + movq %r15,216(%rsp) + + // mul + xorq %r13,%r13 + movq 160(%rsp),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 168(%rsp),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 176(%rsp),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 184(%rsp),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // mul + xorq %r13,%r13 + movq 128(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 136(%rsp),%rdx + + mulx 64(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 72(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 80(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 88(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 144(%rsp),%rdx + + mulx 64(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 72(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 80(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 88(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 152(%rsp),%rdx + + mulx 64(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 72(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 80(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 88(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r9 + adcq 336(%rsp),%r10 + adcq 344(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,224(%rsp) + movq %r9,232(%rsp) + movq %r10,240(%rsp) + movq %r11,248(%rsp) + + // sub + subq 320(%rsp),%r12 + sbbq 328(%rsp),%r13 + sbbq 336(%rsp),%r14 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + vmovdqa 224(%rsp),%ymm10 + vmovdqa 192(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 288(%rsp),%ymm8 + vmovdqa 256(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rdi) + vmovdqa %ymm11,160(%rdi) + vmovdqa %ymm12,192(%rdi) + vmovdqa %ymm13,224(%rdi) + + // Convert pre[i1] to projective Niels representation + movq 128(%rdi),%rbx + movq 136(%rdi),%rcx + movq 144(%rdi),%rbp + movq 152(%rdi),%rsi + + movq 160(%rdi),%r8 + movq 168(%rdi),%r9 + movq 176(%rdi),%r10 + movq 184(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r8,128(%rdi) + movq %r9,136(%rdi) + movq %r10,144(%rdi) + movq %r11,152(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,160(%rdi) + movq %r13,168(%rdi) + movq %r14,176(%rdi) + movq %r15,184(%rdi) + + // mul + xorq %r13,%r13 + movq EC2D0(%rip),%rdx + + mulx 224(%rdi),%r8,%r9 + mulx 232(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 240(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 248(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq EC2D1(%rip),%rdx + + mulx 224(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 232(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 240(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 248(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq EC2D2(%rip),%rdx + + mulx 224(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 232(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 240(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 248(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq EC2D3(%rip),%rdx + + mulx 224(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 240(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 248(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,224(%rdi) + movq %r9,232(%rdi) + movq %r10,240(%rdi) + movq %r11,248(%rdi) + + addq $128,%rdi + + movq 384(%rsp),%r8 + incq %r8 + movq %r8,384(%rsp) + + cmpq 56(%rsp),%r8 + + jl .L + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_double_scalarmult_process.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_double_scalarmult_process.S new file mode 100644 index 0000000000..3445254ebd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_double_scalarmult_process.S @@ -0,0 +1,5252 @@ +// linker define ge25519_double_scalarmult_process +// linker use upmask1 upmask2 upmask3 upmask4 upmask5 +// linker use pmask1 pmask2 pmask3 pmask4 pmask5 pmask6 pmask7 pmask8 pmask9 pmask10 pmask11 pmask12 +// linker use mask63 vec19 vecmask25 vecmask26 + +/* Assembly for double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): + + movq %rsp,%r11 + andq $-32,%rsp + subq $1120,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + // setneutral + movq $0,%rax + movq $1,%rbx + + movq %rax,0(%rdi) + movq %rax,8(%rdi) + movq %rax,16(%rdi) + movq %rax,24(%rdi) + + movq %rbx,32(%rdi) + movq %rax,40(%rdi) + movq %rax,48(%rdi) + movq %rax,56(%rdi) + + movq %rbx,64(%rdi) + movq %rax,72(%rdi) + movq %rax,80(%rdi) + movq %rax,88(%rdi) + + movq %rax,96(%rdi) + movq %rax,104(%rdi) + movq %rax,112(%rdi) + movq %rax,120(%rdi) + + movq $255,%rax + addq $255,%rsi + addq $255,%rdx + + movq %rdi,56(%rsp) + movq %rcx,64(%rsp) + movq %r8,72(%rsp) + +.L1: + movb 0(%rsi),%r14b + movb 0(%rdx),%r15b + + cmpb $0,%r14b + jg .L2 + + cmpb $0,%r15b + jg .L2 + + decq %rsi + decq %rdx + + decq %rax + cmpq $0,%rax + + jge .L1 + + cmpq $0,%rax + jl .L10 + +.L2: + movq %rsi,80(%rsp) + movq %rdx,88(%rsp) + movq %rax,96(%rsp) + +.L3: + /* dbl p1p1 */ + + // square + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 8(%rdi),%r9,%r10 + + mulx 16(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 8(%rdi),%rdx + xorq %r14,%r14 + + mulx 16(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 8(%rdi),%rdx + mulx 24(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 24(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 0(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 8(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 16(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 24(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // square + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 40(%rdi),%r9,%r10 + + mulx 48(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 40(%rdi),%rdx + xorq %r14,%r14 + + mulx 48(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 40(%rdi),%rdx + mulx 56(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 56(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 32(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 40(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 48(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 56(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,160(%rsp) + movq %r9,168(%rsp) + movq %r10,176(%rsp) + movq %r11,184(%rsp) + + // square + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 72(%rdi),%r9,%r10 + + mulx 80(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 72(%rdi),%rdx + xorq %r14,%r14 + + mulx 80(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 72(%rdi),%rdx + mulx 88(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 88(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 64(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 72(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 80(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 88(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r9,200(%rsp) + movq %r10,208(%rsp) + movq %r11,216(%rsp) + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 160(%rsp),%r8 + sbbq 168(%rsp),%r9 + sbbq 176(%rsp),%r10 + sbbq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // add + addq 160(%rsp),%r12 + adcq 168(%rsp),%r13 + adcq 176(%rsp),%r14 + adcq 184(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // sub + subq 192(%rsp),%r12 + sbbq 200(%rsp),%r13 + sbbq 208(%rsp),%r14 + sbbq 216(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + addq 32(%rdi),%rbx + adcq 40(%rdi),%rbp + adcq 48(%rdi),%rcx + adcq 56(%rdi),%rsi + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%rbx + adcq %rdx,%rbp + adcq %rdx,%rcx + adcq %rdx,%rsi + + cmovc %rax,%rdx + addq %rdx,%rbx + + // square + xorq %r13,%r13 + movq %rbx,%rdx + + mulx %rbp,%r9,%r10 + + mulx %rcx,%r8,%r11 + adcx %r8,%r10 + + mulx %rsi,%r8,%r12 + adcx %r8,%r11 + adcx %r13,%r12 + + movq %rbp,%rdx + xorq %r14,%r14 + + mulx %rcx,%r8,%rdx + adcx %r8,%r11 + adox %rdx,%r12 + + movq %rbp,%rdx + mulx %rsi,%r8,%rdx + adcx %r8,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq %rcx,%rdx + + mulx %rsi,%r8,%r14 + adcx %r8,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq %rbx,%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq %rbp,%rdx + mulx %rdx,%rax,%rdx + adcx %rax,%r10 + adcx %rdx,%r11 + + movq %rcx,%rdx + mulx %rdx,%rax,%rdx + adcx %rax,%r12 + adcx %rdx,%r13 + + movq %rsi,%rdx + mulx %rdx,%rax,%rdx + adcx %rax,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + addq 128(%rsp),%r8 + adcq 136(%rsp),%r9 + adcq 144(%rsp),%r10 + adcq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // sub + subq 160(%rsp),%r8 + sbbq 168(%rsp),%r9 + sbbq 176(%rsp),%r10 + sbbq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + movq 80(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,80(%rsp) + movq 64(%rsp),%rdi + + cmpb $0,%r14b + jg .L4 + jl .L5 + je .L6 + +.L4: + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $128,%r14,%r14 + addq %r14,%rdi + + /* pnielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 384(%rsp),%r8,%r9 + mulx 392(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 400(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 408(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 416(%rsp),%r8,%r9 + mulx 424(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 432(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 440(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + xorq %r13,%r13 + movq 96(%rdi),%rdx + + mulx 224(%rsp),%r8,%r9 + mulx 232(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 240(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 248(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 104(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 112(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 120(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 192(%rsp),%r8,%r9 + mulx 200(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 208(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 216(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 72(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 88(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + jmp .L6 + +.L5: + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $128,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 96(%rdi),%r8 + sbbq 104(%rdi),%r9 + sbbq 112(%rdi),%r10 + sbbq 120(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,448(%rsp) + movq %r9,456(%rsp) + movq %r10,464(%rsp) + movq %r11,472(%rsp) + + /* pnielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 384(%rsp),%r8,%r9 + mulx 392(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 400(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 408(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 416(%rsp),%r8,%r9 + mulx 424(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 432(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 440(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + xorq %r13,%r13 + movq 224(%rsp),%rdx + + mulx 448(%rsp),%r8,%r9 + mulx 456(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 464(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 472(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 232(%rsp),%rdx + + mulx 448(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 456(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 464(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 472(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 240(%rsp),%rdx + + mulx 448(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 456(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 464(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 472(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 248(%rsp),%rdx + + mulx 448(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 456(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 464(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 472(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 192(%rsp),%r8,%r9 + mulx 200(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 208(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 216(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 72(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 88(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + +.L6: + movq 88(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,88(%rsp) + movq 72(%rsp),%rdi + + cmpb $0,%r14b + jg .L7 + jl .L8 + je .L9 + +.L7: + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $96,%r14,%r14 + addq %r14,%rdi + + /* nielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 384(%rsp),%r8,%r9 + mulx 392(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 400(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 408(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 416(%rsp),%r8,%r9 + mulx 424(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 432(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 440(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 224(%rsp),%r8,%r9 + mulx 232(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 240(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 248(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 72(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 88(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + movq 192(%rsp),%r12 + movq 200(%rsp),%r13 + movq 208(%rsp),%r14 + movq 216(%rsp),%r15 + + addq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + // sub + movq %r12,%rbx + movq %r13,%rcx + movq %r14,%rbp + movq %r15,%rsi + + subq %r8,%r12 + sbbq %r9,%r13 + sbbq %r10,%r14 + sbbq %r11,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r9 + adcq %rbp,%r10 + adcq %rsi,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + jmp .L9 + +.L8: + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $96,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rdi),%r8 + sbbq 72(%rdi),%r9 + sbbq 80(%rdi),%r10 + sbbq 88(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,448(%rsp) + movq %r9,456(%rsp) + movq %r10,464(%rsp) + movq %r11,472(%rsp) + + /* nielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 384(%rsp),%r8,%r9 + mulx 392(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 400(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 408(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 416(%rsp),%r8,%r9 + mulx 424(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 432(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 440(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + xorq %r13,%r13 + movq 448(%rsp),%rdx + + mulx 224(%rsp),%r8,%r9 + mulx 232(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 240(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 248(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 456(%rsp),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 464(%rsp),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 472(%rsp),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + movq 192(%rsp),%r12 + movq 200(%rsp),%r13 + movq 208(%rsp),%r14 + movq 216(%rsp),%r15 + + addq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + // sub + movq %r12,%rbx + movq %r13,%rcx + movq %r14,%rbp + movq %r15,%rsi + + subq %r8,%r12 + sbbq %r9,%r13 + sbbq %r10,%r14 + sbbq %r11,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r9 + adcq %rbp,%r10 + adcq %rsi,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + +.L9: + movq 56(%rsp),%rdi + + /* p1p1 to p2 */ + + // mul + xorq %r13,%r13 + movq 256(%rsp),%rdx + + mulx 352(%rsp),%r8,%r9 + mulx 360(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 368(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 376(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 264(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 272(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 280(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + // mul + xorq %r13,%r13 + movq 288(%rsp),%rdx + + mulx 320(%rsp),%r8,%r9 + mulx 328(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 336(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 344(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 296(%rsp),%rdx + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 304(%rsp),%rdx + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 312(%rsp),%rdx + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + // mul + xorq %r13,%r13 + movq 288(%rsp),%rdx + + mulx 352(%rsp),%r8,%r9 + mulx 360(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 368(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 376(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 296(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 304(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 312(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsp),%rax + decq %rax + movq %rax,96(%rsp) + + cmpq $0,%rax + + jge .L3 + +.L10: + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_pack.c new file mode 120000 index 0000000000..6029b816df --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_pack.c @@ -0,0 +1 @@ +../amd64-51/ge25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_unpackneg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_unpackneg.c new file mode 120000 index 0000000000..4b7f5c5cff --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/ge25519_unpackneg.c @@ -0,0 +1 @@ +../amd64-64/ge25519_unpackneg.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/implementors b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/implementors new file mode 120000 index 0000000000..71bd496923 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/implementors @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/mGnP.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/mGnP.c new file mode 120000 index 0000000000..3ef603262c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/mGnP.c @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/mGnP.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_barrett.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_barrett.S new file mode 120000 index 0000000000..26a5f8a1c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_barrett.S @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_barrett.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_from64bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_from64bytes.c new file mode 120000 index 0000000000..f6a000bcdd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_from64bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from64bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_slide.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_slide.c new file mode 120000 index 0000000000..10ea12d89a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_slide.c @@ -0,0 +1 @@ +../amd64-51/sc25519_slide.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_to32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_to32bytes.c new file mode 120000 index 0000000000..6930ca05f6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/sc25519_to32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_to32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/shared-consts.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/shared-consts.c new file mode 120000 index 0000000000..2b8fbdfe95 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-10l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/shared-data.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/shared-data.c new file mode 120000 index 0000000000..055c21deb2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/shared-data.c @@ -0,0 +1 @@ +../amd64-51/shared-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/shared-data.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/shared-data.h new file mode 120000 index 0000000000..0f186b9458 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-maax/shared-data.h @@ -0,0 +1 @@ +../amd64-51/shared-data.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/architectures b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/consts_namespace.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/consts_namespace.h new file mode 120000 index 0000000000..3d99ebeda8 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-10l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519.h new file mode 120000 index 0000000000..4e351b0cbb --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519.h @@ -0,0 +1 @@ +../amd64-mxaa/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_add.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_add.S new file mode 120000 index 0000000000..2f72e5bb09 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_add.S @@ -0,0 +1 @@ +../amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_freeze.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_freeze.S new file mode 120000 index 0000000000..65ecfcf5ce --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_freeze.S @@ -0,0 +1 @@ +../amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_getparity.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_getparity.c new file mode 120000 index 0000000000..d5e8b184b4 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_getparity.c @@ -0,0 +1 @@ +../amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_invert.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_invert.c new file mode 120000 index 0000000000..06cd19180a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_iseq.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_iseq.c new file mode 120000 index 0000000000..3175be3915 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_iseq.c @@ -0,0 +1 @@ +../amd64-64/fe25519_iseq.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_mul.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_mul.S new file mode 120000 index 0000000000..07a9c1c4c6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_mul.S @@ -0,0 +1 @@ +../amd64-mxaa/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_nsquare.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_nsquare.S new file mode 120000 index 0000000000..bab34ec169 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_nsquare.S @@ -0,0 +1 @@ +../amd64-mxaa/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_pack.c new file mode 120000 index 0000000000..c92109ac1d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_pow2523.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_pow2523.c new file mode 120000 index 0000000000..539e1b4cea --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_pow2523.c @@ -0,0 +1 @@ +../amd64-mxaa/fe25519_pow2523.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_setint.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_setint.c new file mode 120000 index 0000000000..6ae1104ea9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_setint.c @@ -0,0 +1 @@ +../amd64-64/fe25519_setint.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_sub.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_sub.S new file mode 120000 index 0000000000..5054d0b99e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_sub.S @@ -0,0 +1 @@ +../amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_unpack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_unpack.c new file mode 120000 index 0000000000..98bfaced87 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519.h new file mode 120000 index 0000000000..8c73f0da6c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519.h @@ -0,0 +1 @@ +../amd64-mxaa/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_base_slide_multiples.data b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_base_slide_multiples.data new file mode 120000 index 0000000000..36c9553260 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_base_slide_multiples.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_slide_multiples.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_double_scalarmult_precompute.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_double_scalarmult_precompute.S new file mode 100644 index 0000000000..45b9ecbeb7 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_double_scalarmult_precompute.S @@ -0,0 +1,2541 @@ +// linker define ge25519_double_scalarmult_precompute +// linker use upmask1 upmask2 upmask3 upmask4 upmask5 +// linker use pmask1 pmask2 pmask3 pmask4 pmask5 pmask6 pmask7 pmask8 pmask9 pmask10 pmask11 pmask12 +// linker use EC2D0 EC2D1 EC2D2 EC2D3 mask63 vec19 vecmask25 vecmask26 + +/* Assembly for the precomputaion phase used in double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): + + movq %rsp,%r11 + andq $-32,%rsp + subq $1120,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + decq %rdx + movq %rdx,56(%rsp) + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 32(%rsi),%r8 + movq 40(%rsi),%r9 + movq 48(%rsi),%r10 + movq 56(%rsi),%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + movq 64(%rsi),%r8 + movq 72(%rsi),%r9 + movq 80(%rsi),%r10 + movq 88(%rsi),%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsi),%r8 + movq 104(%rsi),%r9 + movq 112(%rsi),%r10 + movq 120(%rsi),%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + /* dbl p1p1 */ + + // square + movq 0(%rdi),%rdx + + mulx 8(%rdi),%r9,%r10 + mulx 16(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 8(%rdi),%rdx + + mulx 16(%rdi),%rax,%rbx + mulx 24(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 16(%rdi),%rdx + + mulx 24(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 0(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 8(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 16(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 24(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // square + movq 32(%rdi),%rdx + + mulx 40(%rdi),%r9,%r10 + mulx 48(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 40(%rdi),%rdx + + mulx 48(%rdi),%rax,%rbx + mulx 56(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 48(%rdi),%rdx + + mulx 56(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 32(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 40(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 48(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 56(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + movq 64(%rdi),%rdx + + mulx 72(%rdi),%r9,%r10 + mulx 80(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 72(%rdi),%rdx + + mulx 80(%rdi),%rax,%rbx + mulx 88(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 80(%rdi),%rdx + + mulx 88(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 64(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 72(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 80(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 88(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // sub + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // sub + movq $0,%r12 + movq $0,%r13 + movq $0,%r14 + movq $0,%r15 + + subq 96(%rsp),%r12 + sbbq 104(%rsp),%r13 + sbbq 112(%rsp),%r14 + sbbq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,160(%rsp) + movq %r13,168(%rsp) + movq %r14,176(%rsp) + movq %r15,184(%rsp) + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,224(%rsp) + movq %r13,232(%rsp) + movq %r14,240(%rsp) + movq %r15,248(%rsp) + + // sub + subq 96(%rsp),%r8 + sbbq 104(%rsp),%r9 + sbbq 112(%rsp),%r10 + sbbq 120(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 128(%rsp),%r12 + sbbq 136(%rsp),%r13 + sbbq 144(%rsp),%r14 + sbbq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // add + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + + addq 32(%rdi),%r8 + adcq 40(%rdi),%r9 + adcq 48(%rdi),%r10 + adcq 56(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + movq 96(%rsp),%rdx + + mulx 104(%rsp),%r9,%r10 + mulx 112(%rsp),%rcx,%r11 + addq %rcx,%r10 + + mulx 120(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 104(%rsp),%rdx + + mulx 112(%rsp),%rax,%rbx + mulx 120(%rsp),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 112(%rsp),%rdx + + mulx 120(%rsp),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 96(%rsp),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 104(%rsp),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 112(%rsp),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 120(%rsp),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + addq 160(%rsp),%r8 + adcq 168(%rsp),%r9 + adcq 176(%rsp),%r10 + adcq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r9,200(%rsp) + movq %r10,208(%rsp) + movq %r11,216(%rsp) + + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + vmovdqa 224(%rsp),%ymm10 + vmovdqa 192(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 288(%rsp),%ymm8 + vmovdqa 256(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,64(%rsp) + vmovdqa %ymm11,96(%rsp) + vmovdqa %ymm12,128(%rsp) + vmovdqa %ymm13,160(%rsp) + + // Convert pre[0] to projective Niels representation + movq 0(%rdi),%rbx + movq 8(%rdi),%rcx + movq 16(%rdi),%rbp + movq 24(%rdi),%rsi + + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + // mul + movq EC2D0(%rip),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq EC2D1(%rip),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq EC2D2(%rip),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq EC2D3(%rip),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + movq $0,384(%rsp) + +.L: + // pnielsadd_p1p1 + + movq 96(%rsp),%r8 + movq 104(%rsp),%r9 + movq 112(%rsp),%r10 + movq 120(%rsp),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + addq 64(%rsp),%r12 + adcq 72(%rsp),%r13 + adcq 80(%rsp),%r14 + adcq 88(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // mul + movq 320(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 328(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 336(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 344(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // mul + movq 352(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 360(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 368(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 376(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r9 + adcq 336(%rsp),%r10 + adcq 344(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 320(%rsp),%r12 + sbbq 328(%rsp),%r13 + sbbq 336(%rsp),%r14 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,192(%rsp) + movq %r13,200(%rsp) + movq %r14,208(%rsp) + movq %r15,216(%rsp) + + // mul + movq 160(%rsp),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 168(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 176(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 184(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // mul + movq 128(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 136(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 144(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 152(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r9 + adcq 336(%rsp),%r10 + adcq 344(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,224(%rsp) + movq %r9,232(%rsp) + movq %r10,240(%rsp) + movq %r11,248(%rsp) + + // sub + subq 320(%rsp),%r12 + sbbq 328(%rsp),%r13 + sbbq 336(%rsp),%r14 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + vmovdqa 224(%rsp),%ymm10 + vmovdqa 192(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 288(%rsp),%ymm8 + vmovdqa 256(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rdi) + vmovdqa %ymm11,160(%rdi) + vmovdqa %ymm12,192(%rdi) + vmovdqa %ymm13,224(%rdi) + + // Convert pre[i1] to projective Niels representation + movq 128(%rdi),%rbx + movq 136(%rdi),%rcx + movq 144(%rdi),%rbp + movq 152(%rdi),%rsi + + movq 160(%rdi),%r8 + movq 168(%rdi),%r9 + movq 176(%rdi),%r10 + movq 184(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r8,128(%rdi) + movq %r9,136(%rdi) + movq %r10,144(%rdi) + movq %r11,152(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,160(%rdi) + movq %r13,168(%rdi) + movq %r14,176(%rdi) + movq %r15,184(%rdi) + + // mul + movq EC2D0(%rip),%rdx + + mulx 224(%rdi),%r8,%r9 + mulx 232(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 240(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 248(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq EC2D1(%rip),%rdx + + mulx 224(%rdi),%rax,%rbx + mulx 232(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq EC2D2(%rip),%rdx + + mulx 224(%rdi),%rax,%rbx + mulx 232(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq EC2D3(%rip),%rdx + + mulx 224(%rdi),%rax,%rbx + mulx 232(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,224(%rdi) + movq %r9,232(%rdi) + movq %r10,240(%rdi) + movq %r11,248(%rdi) + + addq $128,%rdi + + movq 384(%rsp),%r8 + incq %r8 + movq %r8,384(%rsp) + + cmpq 56(%rsp),%r8 + + jl .L + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_double_scalarmult_process.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_double_scalarmult_process.S new file mode 100644 index 0000000000..f029c70ce2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_double_scalarmult_process.S @@ -0,0 +1,5147 @@ +// linker define ge25519_double_scalarmult_process +// linker use upmask1 upmask2 upmask3 upmask4 upmask5 +// linker use pmask1 pmask2 pmask3 pmask4 pmask5 pmask6 pmask7 pmask8 pmask9 pmask10 pmask11 pmask12 +// linker use mask63 vec19 vecmask25 vecmask26 + +/* Assembly for double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): + + movq %rsp,%r11 + andq $-32,%rsp + subq $1120,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + // setneutral + movq $0,%rax + movq $1,%rbx + + movq %rax,0(%rdi) + movq %rax,8(%rdi) + movq %rax,16(%rdi) + movq %rax,24(%rdi) + + movq %rbx,32(%rdi) + movq %rax,40(%rdi) + movq %rax,48(%rdi) + movq %rax,56(%rdi) + + movq %rbx,64(%rdi) + movq %rax,72(%rdi) + movq %rax,80(%rdi) + movq %rax,88(%rdi) + + movq %rax,96(%rdi) + movq %rax,104(%rdi) + movq %rax,112(%rdi) + movq %rax,120(%rdi) + + movq $255,%rax + addq $255,%rsi + addq $255,%rdx + + movq %rdi,56(%rsp) + movq %rcx,64(%rsp) + movq %r8,72(%rsp) + +.L1: + movb 0(%rsi),%r14b + movb 0(%rdx),%r15b + + cmpb $0,%r14b + jg .L2 + + cmpb $0,%r15b + jg .L2 + + decq %rsi + decq %rdx + + decq %rax + cmpq $0,%rax + + jge .L1 + + cmpq $0,%rax + jl .L10 + +.L2: + movq %rsi,80(%rsp) + movq %rdx,88(%rsp) + movq %rax,96(%rsp) + +.L3: + /* dbl p1p1 */ + + // square + movq 0(%rdi),%rdx + + mulx 8(%rdi),%r9,%r10 + mulx 16(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 8(%rdi),%rdx + + mulx 16(%rdi),%rax,%rbx + mulx 24(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 16(%rdi),%rdx + + mulx 24(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 0(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 8(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 16(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 24(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // square + movq 32(%rdi),%rdx + + mulx 40(%rdi),%r9,%r10 + mulx 48(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 40(%rdi),%rdx + + mulx 48(%rdi),%rax,%rbx + mulx 56(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 48(%rdi),%rdx + + mulx 56(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 32(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 40(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 48(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 56(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,160(%rsp) + movq %r9,168(%rsp) + movq %r10,176(%rsp) + movq %r11,184(%rsp) + + // square + movq 64(%rdi),%rdx + + mulx 72(%rdi),%r9,%r10 + mulx 80(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 72(%rdi),%rdx + + mulx 80(%rdi),%rax,%rbx + mulx 88(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 80(%rdi),%rdx + + mulx 88(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 64(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 72(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 80(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 88(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r9,200(%rsp) + movq %r10,208(%rsp) + movq %r11,216(%rsp) + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 160(%rsp),%r8 + sbbq 168(%rsp),%r9 + sbbq 176(%rsp),%r10 + sbbq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // add + addq 160(%rsp),%r12 + adcq 168(%rsp),%r13 + adcq 176(%rsp),%r14 + adcq 184(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // sub + subq 192(%rsp),%r12 + sbbq 200(%rsp),%r13 + sbbq 208(%rsp),%r14 + sbbq 216(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + addq 32(%rdi),%rbx + adcq 40(%rdi),%rbp + adcq 48(%rdi),%rcx + adcq 56(%rdi),%rsi + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%rbx + adcq %rdx,%rbp + adcq %rdx,%rcx + adcq %rdx,%rsi + + cmovc %rax,%rdx + addq %rdx,%rbx + + // square + movq %rbx,%rdx + + mulx %rbp,%r9,%r10 + mulx %rcx,%r8,%r11 + addq %r8,%r10 + + mulx %rsi,%r8,%r12 + adcq %r8,%r11 + adcq $0,%r12 + + movq %rbp,%rdx + + mulx %rcx,%rax,%r8 + mulx %rsi,%rdx,%r13 + addq %rdx,%r8 + adcq $0,%r13 + + addq %rax,%r11 + adcq %r8,%r12 + adcq $0,%r13 + + movq %rcx,%rdx + + mulx %rsi,%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq %rbx,%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq %rbp,%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq %rcx,%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq %rsi,%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + addq 128(%rsp),%r8 + adcq 136(%rsp),%r9 + adcq 144(%rsp),%r10 + adcq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // sub + subq 160(%rsp),%r8 + sbbq 168(%rsp),%r9 + sbbq 176(%rsp),%r10 + sbbq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + movq 80(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,80(%rsp) + movq 64(%rsp),%rdi + + cmpb $0,%r14b + jg .L4 + jl .L5 + je .L6 + +.L4: + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $128,%r14,%r14 + addq %r14,%rdi + + /* pnielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 384(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 392(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 400(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 408(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + movq 416(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 424(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 432(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 440(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 224(%rsp),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 232(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 248(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + movq 192(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 200(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 208(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 216(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + jmp .L6 + +.L5: + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $128,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 96(%rdi),%r8 + sbbq 104(%rdi),%r9 + sbbq 112(%rdi),%r10 + sbbq 120(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,448(%rsp) + movq %r9,456(%rsp) + movq %r10,464(%rsp) + movq %r11,472(%rsp) + + /* pnielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 384(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 392(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 400(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 408(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + movq 416(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 424(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 432(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 440(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 224(%rsp),%rdx + + mulx 448(%rsp),%r8,%r9 + mulx 456(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 464(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 472(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 232(%rsp),%rdx + + mulx 448(%rsp),%rax,%rbx + mulx 456(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 464(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 472(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rdx + + mulx 448(%rsp),%rax,%rbx + mulx 456(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 464(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 472(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 248(%rsp),%rdx + + mulx 448(%rsp),%rax,%rbx + mulx 456(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 464(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 472(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + movq 192(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 200(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 208(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 216(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + +.L6: + movq 88(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,88(%rsp) + movq 72(%rsp),%rdi + + cmpb $0,%r14b + jg .L7 + jl .L8 + je .L9 + +.L7: + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $96,%r14,%r14 + addq %r14,%rdi + + /* nielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 384(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 392(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 400(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 408(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + movq 416(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 424(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 432(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 440(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 224(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 232(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 248(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + movq 192(%rsp),%r12 + movq 200(%rsp),%r13 + movq 208(%rsp),%r14 + movq 216(%rsp),%r15 + + addq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + // sub + movq %r12,%rbx + movq %r13,%rcx + movq %r14,%rbp + movq %r15,%rsi + + subq %r8,%r12 + sbbq %r9,%r13 + sbbq %r10,%r14 + sbbq %r11,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r9 + adcq %rbp,%r10 + adcq %rsi,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + jmp .L9 + +.L8: + /* p1p1 to p3 */ + + // convert to 10x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm3 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm5 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm7 + + vpand pmask1(%rip),%ymm1,%ymm0 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $26,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm3,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm3,%ymm12 + vpsrlq $13,%ymm12,%ymm12 + + vpand pmask6(%rip),%ymm3,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm5,%ymm13 + + vpand pmask8(%rip),%ymm5,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm5,%ymm14 + vpsrlq $51,%ymm14,%ymm14 + vpand pmask10(%rip),%ymm7,%ymm9 + vpsllq $13,%ymm9,%ymm9 + vpor %ymm9,%ymm14,%ymm14 + + vpand pmask11(%rip),%ymm7,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm7,%ymm15 + vpsrlq $38,%ymm15,%ymm15 + + vmovdqa %ymm0,480(%rsp) + vmovdqa %ymm11,512(%rsp) + vmovdqa %ymm2,544(%rsp) + vmovdqa %ymm12,576(%rsp) + vmovdqa %ymm4,608(%rsp) + vmovdqa %ymm13,640(%rsp) + vmovdqa %ymm6,672(%rsp) + vmovdqa %ymm14,704(%rsp) + vmovdqa %ymm8,736(%rsp) + vmovdqa %ymm15,768(%rsp) + + // convert to 10x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $26,%ymm1,%ymm1 + + vpand pmask3(%rip),%ymm10,%ymm2 + vpsrlq $51,%ymm2,%ymm2 + vpand pmask4(%rip),%ymm11,%ymm3 + vpsllq $13,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask5(%rip),%ymm11,%ymm3 + vpsrlq $13,%ymm3,%ymm3 + + vpand pmask6(%rip),%ymm11,%ymm4 + vpsrlq $38,%ymm4,%ymm4 + + vpand pmask7(%rip),%ymm12,%ymm5 + + vpand pmask8(%rip),%ymm12,%ymm6 + vpsrlq $25,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm12,%ymm7 + vpsrlq $51,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm13,%ymm8 + vpsllq $13,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm13,%ymm8 + vpsrlq $12,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm13,%ymm9 + vpsrlq $38,%ymm9,%ymm9 + + vmovdqa %ymm0,800(%rsp) + vmovdqa %ymm1,832(%rsp) + vmovdqa %ymm2,864(%rsp) + vmovdqa %ymm3,896(%rsp) + vmovdqa %ymm4,928(%rsp) + vmovdqa %ymm5,960(%rsp) + vmovdqa %ymm6,992(%rsp) + vmovdqa %ymm7,1024(%rsp) + vmovdqa %ymm8,1056(%rsp) + vmovdqa %ymm9,1088(%rsp) + + // mul4x1 + vmovdqa 512(%rsp),%ymm11 + vmovdqa 576(%rsp),%ymm12 + vmovdqa 640(%rsp),%ymm13 + vmovdqa 704(%rsp),%ymm14 + vmovdqa 768(%rsp),%ymm15 + + vpaddq %ymm11,%ymm11,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm14,%ymm14,%ymm14 + vpaddq %ymm15,%ymm15,%ymm15 + + vpmuludq vec19(%rip),%ymm1,%ymm1 + vpmuludq vec19(%rip),%ymm2,%ymm2 + vpmuludq vec19(%rip),%ymm3,%ymm3 + vpmuludq vec19(%rip),%ymm4,%ymm4 + vpmuludq vec19(%rip),%ymm5,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 736(%rsp),%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 672(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 608(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq 544(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 768(%rsp),%ymm2,%ymm1 + vpmuludq 736(%rsp),%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 704(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 672(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 640(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 608(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 576(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 544(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 736(%rsp),%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 672(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 608(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 768(%rsp),%ymm4,%ymm3 + vpmuludq 736(%rsp),%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 704(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 672(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 640(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 608(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 736(%rsp),%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 672(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 832(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 768(%rsp),%ymm6,%ymm5 + vpmuludq 736(%rsp),%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 704(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 672(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 736(%rsp),%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 896(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 768(%rsp),%ymm8,%ymm7 + vpmuludq 736(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq 832(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 960(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vmovdqa 480(%rsp),%ymm11 + vmovdqa 512(%rsp),%ymm12 + vmovdqa 544(%rsp),%ymm13 + vmovdqa 576(%rsp),%ymm14 + vmovdqa 608(%rsp),%ymm15 + vmovdqa 640(%rsp),%ymm9 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq 928(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 864(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq 800(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq 960(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 928(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 896(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 864(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 832(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq 800(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 992(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 928(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq 864(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 1024(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 992(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 960(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 928(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 896(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 864(%rsp),%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 1056(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 992(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 928(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 928(%rsp),%ymm9,%ymm9 + vpmuludq 1088(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1056(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 1024(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 992(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 960(%rsp),%ymm15,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vmovdqa 672(%rsp),%ymm11 + vmovdqa 704(%rsp),%ymm12 + vmovdqa 736(%rsp),%ymm13 + vmovdqa 768(%rsp),%ymm14 + + vpmuludq 800(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 832(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 800(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 864(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 800(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq 896(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 864(%rsp),%ymm12,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 832(%rsp),%ymm13,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq 800(%rsp),%ymm14,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask2(%rip),%ymm1,%ymm11 + vpsllq $26,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask3(%rip),%ymm2,%ymm11 + vpsllq $51,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask4(%rip),%ymm2,%ymm11 + vpsrlq $13,%ymm11,%ymm11 + vpand upmask2(%rip),%ymm3,%ymm12 + vpsllq $13,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask1(%rip),%ymm4,%ymm12 + vpsllq $38,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask2(%rip),%ymm5,%ymm12 + vpand upmask1(%rip),%ymm6,%ymm13 + vpsllq $25,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask3(%rip),%ymm7,%ymm13 + vpsllq $51,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask5(%rip),%ymm7,%ymm13 + vpsrlq $13,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm8,%ymm14 + vpsllq $12,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask1(%rip),%ymm9,%ymm14 + vpsllq $38,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $96,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rdi),%r8 + sbbq 72(%rdi),%r9 + sbbq 80(%rdi),%r10 + sbbq 88(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,448(%rsp) + movq %r9,456(%rsp) + movq %r10,464(%rsp) + movq %r11,472(%rsp) + + /* nielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 384(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 392(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 400(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 408(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + movq 416(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 424(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 432(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 440(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 448(%rsp),%rdx + + mulx 224(%rsp),%r8,%r9 + mulx 232(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 240(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 248(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 456(%rsp),%rdx + + mulx 224(%rsp),%rax,%rbx + mulx 232(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 464(%rsp),%rdx + + mulx 224(%rsp),%rax,%rbx + mulx 232(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 472(%rsp),%rdx + + mulx 224(%rsp),%rax,%rbx + mulx 232(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + movq 192(%rsp),%r12 + movq 200(%rsp),%r13 + movq 208(%rsp),%r14 + movq 216(%rsp),%r15 + + addq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + // sub + movq %r12,%rbx + movq %r13,%rcx + movq %r14,%rbp + movq %r15,%rsi + + subq %r8,%r12 + sbbq %r9,%r13 + sbbq %r10,%r14 + sbbq %r11,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r9 + adcq %rbp,%r10 + adcq %rsi,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + +.L9: + movq 56(%rsp),%rdi + + /* p1p1 to p2 */ + + // mul + movq 256(%rsp),%rdx + + mulx 352(%rsp),%r8,%r9 + mulx 360(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 368(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 376(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 264(%rsp),%rdx + + mulx 352(%rsp),%rax,%rbx + mulx 360(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 368(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 376(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 272(%rsp),%rdx + + mulx 352(%rsp),%rax,%rbx + mulx 360(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 368(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 376(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 280(%rsp),%rdx + + mulx 352(%rsp),%rax,%rbx + mulx 360(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 368(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 376(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + // mul + movq 288(%rsp),%rdx + + mulx 320(%rsp),%r8,%r9 + mulx 328(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 336(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 344(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 296(%rsp),%rdx + + mulx 320(%rsp),%rax,%rbx + mulx 328(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 336(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 344(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 304(%rsp),%rdx + + mulx 320(%rsp),%rax,%rbx + mulx 328(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 336(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 344(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 312(%rsp),%rdx + + mulx 320(%rsp),%rax,%rbx + mulx 328(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 336(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 344(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + // mul + movq 288(%rsp),%rdx + + mulx 352(%rsp),%r8,%r9 + mulx 360(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 368(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 376(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 296(%rsp),%rdx + + mulx 352(%rsp),%rax,%rbx + mulx 360(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 368(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 376(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 304(%rsp),%rdx + + mulx 352(%rsp),%rax,%rbx + mulx 360(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 368(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 376(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 312(%rsp),%rdx + + mulx 352(%rsp),%rax,%rbx + mulx 360(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 368(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 376(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsp),%rax + decq %rax + movq %rax,96(%rsp) + + cmpq $0,%rax + + jge .L3 + +.L10: + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_pack.c new file mode 120000 index 0000000000..6029b816df --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_pack.c @@ -0,0 +1 @@ +../amd64-51/ge25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_unpackneg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_unpackneg.c new file mode 120000 index 0000000000..4b7f5c5cff --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/ge25519_unpackneg.c @@ -0,0 +1 @@ +../amd64-64/ge25519_unpackneg.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/implementors b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/implementors new file mode 120000 index 0000000000..51cdc34d4c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/implementors @@ -0,0 +1 @@ +../amd64-avx2-9l-mxaa/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/mGnP.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/mGnP.c new file mode 120000 index 0000000000..3ef603262c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/mGnP.c @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/mGnP.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_barrett.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_barrett.S new file mode 120000 index 0000000000..26a5f8a1c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_barrett.S @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_barrett.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_from64bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_from64bytes.c new file mode 120000 index 0000000000..f6a000bcdd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_from64bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from64bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_slide.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_slide.c new file mode 120000 index 0000000000..10ea12d89a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_slide.c @@ -0,0 +1 @@ +../amd64-51/sc25519_slide.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_to32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_to32bytes.c new file mode 120000 index 0000000000..6930ca05f6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/sc25519_to32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_to32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/shared-consts.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/shared-consts.c new file mode 120000 index 0000000000..2b8fbdfe95 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-10l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/shared-data.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/shared-data.c new file mode 120000 index 0000000000..055c21deb2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/shared-data.c @@ -0,0 +1 @@ +../amd64-51/shared-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/shared-data.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/shared-data.h new file mode 120000 index 0000000000..0f186b9458 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-10l-mxaa/shared-data.h @@ -0,0 +1 @@ +../amd64-51/shared-data.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/architectures b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/consts_namespace.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/consts_namespace.h new file mode 100644 index 0000000000..8bec7d0cf3 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/consts_namespace.h @@ -0,0 +1,35 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vec1216 CRYPTO_SHARED_NAMESPACE(vec1216) +#define vecmask23 CRYPTO_SHARED_NAMESPACE(vecmask23) +#define vecmask29 CRYPTO_SHARED_NAMESPACE(vecmask29) +#define pmask1 CRYPTO_SHARED_NAMESPACE(pmask1) +#define pmask2 CRYPTO_SHARED_NAMESPACE(pmask2) +#define pmask3 CRYPTO_SHARED_NAMESPACE(pmask3) +#define pmask4 CRYPTO_SHARED_NAMESPACE(pmask4) +#define pmask5 CRYPTO_SHARED_NAMESPACE(pmask5) +#define pmask6 CRYPTO_SHARED_NAMESPACE(pmask6) +#define pmask7 CRYPTO_SHARED_NAMESPACE(pmask7) +#define pmask8 CRYPTO_SHARED_NAMESPACE(pmask8) +#define pmask9 CRYPTO_SHARED_NAMESPACE(pmask9) +#define pmask10 CRYPTO_SHARED_NAMESPACE(pmask10) +#define pmask11 CRYPTO_SHARED_NAMESPACE(pmask11) +#define pmask12 CRYPTO_SHARED_NAMESPACE(pmask12) +#define upmask1 CRYPTO_SHARED_NAMESPACE(upmask1) +#define upmask2 CRYPTO_SHARED_NAMESPACE(upmask2) +#define upmask3 CRYPTO_SHARED_NAMESPACE(upmask3) +#define upmask4 CRYPTO_SHARED_NAMESPACE(upmask4) +#define upmask5 CRYPTO_SHARED_NAMESPACE(upmask5) +#define upmask6 CRYPTO_SHARED_NAMESPACE(upmask6) +#define upmask7 CRYPTO_SHARED_NAMESPACE(upmask7) +#define upmask8 CRYPTO_SHARED_NAMESPACE(upmask8) +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) +#define EC2D0 CRYPTO_SHARED_NAMESPACE(EC2D0) +#define EC2D1 CRYPTO_SHARED_NAMESPACE(EC2D1) +#define EC2D2 CRYPTO_SHARED_NAMESPACE(EC2D2) +#define EC2D3 CRYPTO_SHARED_NAMESPACE(EC2D3) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519.h new file mode 120000 index 0000000000..0751205b74 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519.h @@ -0,0 +1 @@ +../amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_add.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_add.S new file mode 120000 index 0000000000..2f72e5bb09 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_add.S @@ -0,0 +1 @@ +../amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_freeze.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_freeze.S new file mode 120000 index 0000000000..65ecfcf5ce --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_freeze.S @@ -0,0 +1 @@ +../amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_getparity.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_getparity.c new file mode 120000 index 0000000000..d5e8b184b4 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_getparity.c @@ -0,0 +1 @@ +../amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_invert.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_invert.c new file mode 120000 index 0000000000..06cd19180a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_iseq.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_iseq.c new file mode 120000 index 0000000000..3175be3915 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_iseq.c @@ -0,0 +1 @@ +../amd64-64/fe25519_iseq.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_mul.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_mul.S new file mode 120000 index 0000000000..3ab8e1cb60 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_mul.S @@ -0,0 +1 @@ +../amd64-maa4/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_nsquare.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_nsquare.S new file mode 120000 index 0000000000..ba6bfa7780 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_nsquare.S @@ -0,0 +1 @@ +../amd64-maa4/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_pack.c new file mode 120000 index 0000000000..c92109ac1d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_pow2523.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_pow2523.c new file mode 120000 index 0000000000..3eb9dd58ec --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_pow2523.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pow2523.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_setint.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_setint.c new file mode 120000 index 0000000000..6ae1104ea9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_setint.c @@ -0,0 +1 @@ +../amd64-64/fe25519_setint.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_square.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_square.S new file mode 120000 index 0000000000..0620c3b743 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_square.S @@ -0,0 +1 @@ +../amd64-maa4/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_sub.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_sub.S new file mode 120000 index 0000000000..5054d0b99e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_sub.S @@ -0,0 +1 @@ +../amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_unpack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_unpack.c new file mode 120000 index 0000000000..98bfaced87 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519.h new file mode 120000 index 0000000000..8c73f0da6c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519.h @@ -0,0 +1 @@ +../amd64-mxaa/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_base_slide_multiples.data b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_base_slide_multiples.data new file mode 120000 index 0000000000..36c9553260 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_base_slide_multiples.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_slide_multiples.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_double_scalarmult_precompute.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_double_scalarmult_precompute.S new file mode 100644 index 0000000000..9353743c6c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_double_scalarmult_precompute.S @@ -0,0 +1,3081 @@ +// linker define ge25519_double_scalarmult_precompute +// linker use upmask1 upmask2 upmask3 upmask4 upmask5 upmask6 upmask7 upmask8 +// linker use pmask1 pmask2 pmask3 pmask4 pmask5 pmask6 pmask7 pmask8 pmask9 pmask10 pmask11 pmask12 +// linker use EC2D0 EC2D1 EC2D2 EC2D3 mask63 vec1216 vecmask23 vecmask29 + +/* Assembly for the precomputaion phase used in double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): + + movq %rsp,%r11 + andq $-32,%rsp + subq $1536,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + decq %rdx + movq %rdx,56(%rsp) + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 32(%rsi),%r8 + movq 40(%rsi),%r9 + movq 48(%rsi),%r10 + movq 56(%rsi),%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + movq 64(%rsi),%r8 + movq 72(%rsi),%r9 + movq 80(%rsi),%r10 + movq 88(%rsi),%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsi),%r8 + movq 104(%rsi),%r9 + movq 112(%rsi),%r10 + movq 120(%rsi),%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + /* dbl p1p1 */ + + // square + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,64(%rsp) + movq %r10,72(%rsp) + movq %r12,80(%rsp) + movq %r14,88(%rsp) + + // square + movq 32(%rdi),%rbx + movq 40(%rdi),%rbp + movq 48(%rdi),%rcx + movq 56(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,96(%rsp) + movq %r10,104(%rsp) + movq %r12,112(%rsp) + movq %r14,120(%rsp) + + // square + movq 64(%rdi),%rbx + movq 72(%rdi),%rbp + movq 80(%rdi),%rcx + movq 88(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r10,136(%rsp) + movq %r12,144(%rsp) + movq %r14,152(%rsp) + + // sub + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // sub + movq $0,%r12 + movq $0,%r13 + movq $0,%r14 + movq $0,%r15 + + subq 96(%rsp),%r12 + sbbq 104(%rsp),%r13 + sbbq 112(%rsp),%r14 + sbbq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,160(%rsp) + movq %r13,168(%rsp) + movq %r14,176(%rsp) + movq %r15,184(%rsp) + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,224(%rsp) + movq %r13,232(%rsp) + movq %r14,240(%rsp) + movq %r15,248(%rsp) + + // sub + subq 96(%rsp),%r8 + sbbq 104(%rsp),%r9 + sbbq 112(%rsp),%r10 + sbbq 120(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 128(%rsp),%r12 + sbbq 136(%rsp),%r13 + sbbq 144(%rsp),%r14 + sbbq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // add + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + + addq 32(%rdi),%r8 + adcq 40(%rdi),%r9 + adcq 48(%rdi),%r10 + adcq 56(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + movq 96(%rsp),%rbx + movq 104(%rsp),%rbp + movq 112(%rsp),%rcx + movq 120(%rsp),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + addq 64(%rsp),%r8 + adcq 72(%rsp),%r10 + adcq 80(%rsp),%r12 + adcq 88(%rsp),%r14 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + addq 160(%rsp),%r8 + adcq 168(%rsp),%r10 + adcq 176(%rsp),%r12 + adcq 184(%rsp),%r14 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r10,200(%rsp) + movq %r12,208(%rsp) + movq %r14,216(%rsp) + + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + vmovdqa 224(%rsp),%ymm10 + vmovdqa 192(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 288(%rsp),%ymm8 + vmovdqa 256(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,64(%rsp) + vmovdqa %ymm11,96(%rsp) + vmovdqa %ymm12,128(%rsp) + vmovdqa %ymm13,160(%rsp) + + // Convert pre[0] to projective Niels representation + movq 0(%rdi),%rbx + movq 8(%rdi),%rcx + movq 16(%rdi),%rbp + movq 24(%rdi),%rsi + + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + // mul + movq EC2D1(%rip),%rax + mulq 120(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq EC2D2(%rip),%rax + mulq 112(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D3(%rip),%rax + mulq 104(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D2(%rip),%rax + mulq 120(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq EC2D3(%rip),%rax + mulq 112(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq EC2D3(%rip),%rax + mulq 120(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq EC2D0(%rip),%rax + mulq 120(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D1(%rip),%rax + mulq 112(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D2(%rip),%rax + mulq 104(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D3(%rip),%rax + mulq 96(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq EC2D0(%rip),%rax + mulq 96(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D0(%rip),%rax + mulq 104(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq EC2D1(%rip),%rax + mulq 96(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq EC2D0(%rip),%rax + mulq 112(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq EC2D1(%rip),%rax + mulq 104(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq EC2D2(%rip),%rax + mulq 96(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,96(%rdi) + movq %r10,104(%rdi) + movq %r12,112(%rdi) + movq %r14,120(%rdi) + + movq $0,384(%rsp) + +.L: + // pnielsadd_p1p1 + + movq 96(%rsp),%r8 + movq 104(%rsp),%r9 + movq 112(%rsp),%r10 + movq 120(%rsp),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + addq 64(%rsp),%r12 + adcq 72(%rsp),%r13 + adcq 80(%rsp),%r14 + adcq 88(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // mul + movq 328(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 336(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 344(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 336(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 344(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 344(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 320(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 328(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 336(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 344(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 320(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 320(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 328(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 320(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 328(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 336(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,320(%rsp) + movq %r10,328(%rsp) + movq %r12,336(%rsp) + movq %r14,344(%rsp) + + // mul + movq 360(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 368(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 376(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 368(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 376(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 376(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 352(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 360(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 368(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 376(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 352(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 352(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 360(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 352(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 360(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 368(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r10 + adcq 336(%rsp),%r12 + adcq 344(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r10,264(%rsp) + movq %r12,272(%rsp) + movq %r14,280(%rsp) + + // sub + subq 320(%rsp),%r9 + sbbq 328(%rsp),%r11 + sbbq 336(%rsp),%r13 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,192(%rsp) + movq %r11,200(%rsp) + movq %r13,208(%rsp) + movq %r15,216(%rsp) + + // mul + movq 168(%rsp),%rax + mulq 120(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 176(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 184(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 176(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 184(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 184(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 160(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 168(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 176(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 184(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 160(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 160(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 168(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 160(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 168(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 176(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,320(%rsp) + movq %r10,328(%rsp) + movq %r12,336(%rsp) + movq %r14,344(%rsp) + + // mul + movq 136(%rsp),%rax + mulq 88(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 144(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 152(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 144(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 152(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 152(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 128(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 136(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 144(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 152(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 128(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 128(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 136(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 128(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 136(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 144(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r10 + adcq 336(%rsp),%r12 + adcq 344(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,224(%rsp) + movq %r10,232(%rsp) + movq %r12,240(%rsp) + movq %r14,248(%rsp) + + // sub + subq 320(%rsp),%r9 + sbbq 328(%rsp),%r11 + sbbq 336(%rsp),%r13 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,288(%rsp) + movq %r11,296(%rsp) + movq %r13,304(%rsp) + movq %r15,312(%rsp) + + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + vmovdqa 224(%rsp),%ymm10 + vmovdqa 192(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 288(%rsp),%ymm8 + vmovdqa 256(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rdi) + vmovdqa %ymm11,160(%rdi) + vmovdqa %ymm12,192(%rdi) + vmovdqa %ymm13,224(%rdi) + + // Convert pre[i1] to projective Niels representation + movq 128(%rdi),%rbx + movq 136(%rdi),%rcx + movq 144(%rdi),%rbp + movq 152(%rdi),%rsi + + movq 160(%rdi),%r8 + movq 168(%rdi),%r9 + movq 176(%rdi),%r10 + movq 184(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r8,128(%rdi) + movq %r9,136(%rdi) + movq %r10,144(%rdi) + movq %r11,152(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,160(%rdi) + movq %r13,168(%rdi) + movq %r14,176(%rdi) + movq %r15,184(%rdi) + + // mul + movq EC2D1(%rip),%rax + mulq 248(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq EC2D2(%rip),%rax + mulq 240(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D3(%rip),%rax + mulq 232(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D2(%rip),%rax + mulq 248(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq EC2D3(%rip),%rax + mulq 240(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq EC2D3(%rip),%rax + mulq 248(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq EC2D0(%rip),%rax + mulq 248(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D1(%rip),%rax + mulq 240(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D2(%rip),%rax + mulq 232(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D3(%rip),%rax + mulq 224(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq EC2D0(%rip),%rax + mulq 224(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D0(%rip),%rax + mulq 232(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq EC2D1(%rip),%rax + mulq 224(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq EC2D0(%rip),%rax + mulq 240(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq EC2D1(%rip),%rax + mulq 232(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq EC2D2(%rip),%rax + mulq 224(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,224(%rdi) + movq %r10,232(%rdi) + movq %r12,240(%rdi) + movq %r14,248(%rdi) + + addq $128,%rdi + + movq 384(%rsp),%r8 + incq %r8 + movq %r8,384(%rsp) + + cmpq 56(%rsp),%r8 + + jl .L + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_double_scalarmult_process.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_double_scalarmult_process.S new file mode 100644 index 0000000000..d5746df14a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_double_scalarmult_process.S @@ -0,0 +1,6247 @@ +// linker define ge25519_double_scalarmult_process +// linker use upmask1 upmask2 upmask3 upmask4 upmask5 upmask6 upmask7 upmask8 +// linker use pmask1 pmask2 pmask3 pmask4 pmask5 pmask6 pmask7 pmask8 pmask9 pmask10 pmask11 pmask12 +// linker use mask63 vec1216 vecmask23 vecmask29 + +/* Assembly for double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): + + movq %rsp,%r11 + andq $-32,%rsp + subq $1536,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + // setneutral + movq $0,%rax + movq $1,%rbx + + movq %rax,0(%rdi) + movq %rax,8(%rdi) + movq %rax,16(%rdi) + movq %rax,24(%rdi) + + movq %rbx,32(%rdi) + movq %rax,40(%rdi) + movq %rax,48(%rdi) + movq %rax,56(%rdi) + + movq %rbx,64(%rdi) + movq %rax,72(%rdi) + movq %rax,80(%rdi) + movq %rax,88(%rdi) + + movq %rax,96(%rdi) + movq %rax,104(%rdi) + movq %rax,112(%rdi) + movq %rax,120(%rdi) + + movq $255,%rax + addq $255,%rsi + addq $255,%rdx + + movq %rdi,56(%rsp) + movq %rcx,64(%rsp) + movq %r8,72(%rsp) + +.L1: + movb 0(%rsi),%r14b + movb 0(%rdx),%r15b + + cmpb $0,%r14b + jg .L2 + + cmpb $0,%r15b + jg .L2 + + decq %rsi + decq %rdx + + decq %rax + cmpq $0,%rax + + jge .L1 + + cmpq $0,%rax + jl .L10 + +.L2: + movq %rsi,80(%rsp) + movq %rdx,88(%rsp) + movq %rax,96(%rsp) + +.L3: + /* dbl p1p1 */ + + // square + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,128(%rsp) + movq %r10,136(%rsp) + movq %r12,144(%rsp) + movq %r14,152(%rsp) + + // square + movq 32(%rdi),%rbx + movq 40(%rdi),%rbp + movq 48(%rdi),%rcx + movq 56(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,160(%rsp) + movq %r10,168(%rsp) + movq %r12,176(%rsp) + movq %r14,184(%rsp) + + // square + movq 64(%rdi),%rbx + movq 72(%rdi),%rbp + movq 80(%rdi),%rcx + movq 88(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r10,200(%rsp) + movq %r12,208(%rsp) + movq %r14,216(%rsp) + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 160(%rsp),%r8 + sbbq 168(%rsp),%r9 + sbbq 176(%rsp),%r10 + sbbq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // add + addq 160(%rsp),%r12 + adcq 168(%rsp),%r13 + adcq 176(%rsp),%r14 + adcq 184(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // sub + subq 192(%rsp),%r12 + sbbq 200(%rsp),%r13 + sbbq 208(%rsp),%r14 + sbbq 216(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + addq 32(%rdi),%rbx + adcq 40(%rdi),%rbp + adcq 48(%rdi),%rcx + adcq 56(%rdi),%rsi + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%rbx + adcq %rdx,%rbp + adcq %rdx,%rcx + adcq %rdx,%rsi + + cmovc %rax,%rdx + addq %rdx,%rbx + + // square + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + addq 128(%rsp),%r8 + adcq 136(%rsp),%r10 + adcq 144(%rsp),%r12 + adcq 152(%rsp),%r14 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // sub + subq 160(%rsp),%r8 + sbbq 168(%rsp),%r10 + sbbq 176(%rsp),%r12 + sbbq 184(%rsp),%r14 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r10 + sbbq %rdx,%r12 + sbbq %rdx,%r14 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r10,264(%rsp) + movq %r12,272(%rsp) + movq %r14,280(%rsp) + + movq 80(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,80(%rsp) + movq 64(%rsp),%rdi + + cmpb $0,%r14b + jg .L4 + jl .L5 + je .L6 + +.L4: + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $128,%r14,%r14 + addq %r14,%rdi + + /* pnielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 392(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 400(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 408(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 400(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 408(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 408(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 384(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 392(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 400(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 408(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 384(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 384(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 392(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 384(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 392(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 400(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,384(%rsp) + movq %r10,392(%rsp) + movq %r12,400(%rsp) + movq %r14,408(%rsp) + + // mul + movq 424(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 432(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 440(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 432(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 440(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 440(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 416(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 424(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 432(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 440(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 416(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 416(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 424(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 416(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 424(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 432(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r10 + adcq 400(%rsp),%r12 + adcq 408(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r10,328(%rsp) + movq %r12,336(%rsp) + movq %r14,344(%rsp) + + // sub + subq 384(%rsp),%r9 + sbbq 392(%rsp),%r11 + sbbq 400(%rsp),%r13 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,256(%rsp) + movq %r11,264(%rsp) + movq %r13,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 232(%rsp),%rax + mulq 120(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 240(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 248(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 248(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 248(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 224(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 240(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 224(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 232(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 232(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 240(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,384(%rsp) + movq %r10,392(%rsp) + movq %r12,400(%rsp) + movq %r14,408(%rsp) + + // mul + movq 200(%rsp),%rax + mulq 88(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 208(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 216(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 208(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 216(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 216(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 192(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 200(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 208(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 216(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 192(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 192(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 200(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 192(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 200(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 208(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r10 + adcq 400(%rsp),%r12 + adcq 408(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r10,296(%rsp) + movq %r12,304(%rsp) + movq %r14,312(%rsp) + + // sub + subq 384(%rsp),%r9 + sbbq 392(%rsp),%r11 + sbbq 400(%rsp),%r13 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,352(%rsp) + movq %r11,360(%rsp) + movq %r13,368(%rsp) + movq %r15,376(%rsp) + + jmp .L6 + +.L5: + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $128,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 96(%rdi),%r8 + sbbq 104(%rdi),%r9 + sbbq 112(%rdi),%r10 + sbbq 120(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,448(%rsp) + movq %r9,456(%rsp) + movq %r10,464(%rsp) + movq %r11,472(%rsp) + + /* pnielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 392(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 400(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 408(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 400(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 408(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 408(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 384(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 392(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 400(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 408(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 384(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 384(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 392(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 384(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 392(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 400(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,384(%rsp) + movq %r10,392(%rsp) + movq %r12,400(%rsp) + movq %r14,408(%rsp) + + // mul + movq 424(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 432(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 440(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 432(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 440(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 440(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 416(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 424(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 432(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 440(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 416(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 416(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 424(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 416(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 424(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 432(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r10 + adcq 400(%rsp),%r12 + adcq 408(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r10,328(%rsp) + movq %r12,336(%rsp) + movq %r14,344(%rsp) + + // sub + subq 384(%rsp),%r9 + sbbq 392(%rsp),%r11 + sbbq 400(%rsp),%r13 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,256(%rsp) + movq %r11,264(%rsp) + movq %r13,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 232(%rsp),%rax + mulq 472(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 240(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 248(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 472(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 248(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 248(%rsp),%rax + mulq 472(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 224(%rsp),%rax + mulq 472(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 240(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 224(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 232(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 232(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 240(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,384(%rsp) + movq %r10,392(%rsp) + movq %r12,400(%rsp) + movq %r14,408(%rsp) + + // mul + movq 200(%rsp),%rax + mulq 88(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 208(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 216(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 208(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 216(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 216(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 192(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 200(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 208(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 216(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 192(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 192(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 200(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 192(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 200(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 208(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r10 + adcq 400(%rsp),%r12 + adcq 408(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r10,296(%rsp) + movq %r12,304(%rsp) + movq %r14,312(%rsp) + + // sub + subq 384(%rsp),%r9 + sbbq 392(%rsp),%r11 + sbbq 400(%rsp),%r13 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,352(%rsp) + movq %r11,360(%rsp) + movq %r13,368(%rsp) + movq %r15,376(%rsp) + +.L6: + movq 88(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,88(%rsp) + movq 72(%rsp),%rdi + + cmpb $0,%r14b + jg .L7 + jl .L8 + je .L9 + +.L7: + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $96,%r14,%r14 + addq %r14,%rdi + + /* nielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 392(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 400(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 408(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 400(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 408(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 408(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 384(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 392(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 400(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 408(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 384(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 384(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 392(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 384(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 392(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 400(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,384(%rsp) + movq %r10,392(%rsp) + movq %r12,400(%rsp) + movq %r14,408(%rsp) + + // mul + movq 424(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 432(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 440(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 432(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 440(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 440(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 416(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 424(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 432(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 440(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 416(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 416(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 424(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 416(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 424(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 432(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r10 + adcq 400(%rsp),%r12 + adcq 408(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r10,328(%rsp) + movq %r12,336(%rsp) + movq %r14,344(%rsp) + + // sub + subq 384(%rsp),%r9 + sbbq 392(%rsp),%r11 + sbbq 400(%rsp),%r13 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,256(%rsp) + movq %r11,264(%rsp) + movq %r13,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 232(%rsp),%rax + mulq 88(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 240(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 248(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 248(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 248(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 224(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 240(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 224(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 232(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 232(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 240(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + movq 192(%rsp),%r9 + movq 200(%rsp),%r11 + movq 208(%rsp),%r13 + movq 216(%rsp),%r15 + + addq %r9,%r9 + adcq %r11,%r11 + adcq %r13,%r13 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r9 + adcq %rdx,%r11 + adcq %rdx,%r13 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r9 + + // sub + movq %r9,%rbx + movq %r11,%rcx + movq %r13,%rbp + movq %r15,%rsi + + subq %r8,%r9 + sbbq %r10,%r11 + sbbq %r12,%r13 + sbbq %r14,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r9 + + movq %r9,352(%rsp) + movq %r11,360(%rsp) + movq %r13,368(%rsp) + movq %r15,376(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r10 + adcq %rbp,%r12 + adcq %rsi,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r10,296(%rsp) + movq %r12,304(%rsp) + movq %r14,312(%rsp) + + jmp .L9 + +.L8: + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $96,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rdi),%r8 + sbbq 72(%rdi),%r9 + sbbq 80(%rdi),%r10 + sbbq 88(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,448(%rsp) + movq %r9,456(%rsp) + movq %r10,464(%rsp) + movq %r11,472(%rsp) + + /* nielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 392(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 400(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 408(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 400(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 408(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 408(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 384(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 392(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 400(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 408(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 384(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 384(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 392(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 384(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 392(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 400(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,384(%rsp) + movq %r10,392(%rsp) + movq %r12,400(%rsp) + movq %r14,408(%rsp) + + // mul + movq 424(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 432(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 440(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 432(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 440(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 440(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 416(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 424(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 432(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 440(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 416(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 416(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 424(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 416(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 424(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 432(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r10 + adcq 400(%rsp),%r12 + adcq 408(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r10,328(%rsp) + movq %r12,336(%rsp) + movq %r14,344(%rsp) + + // sub + subq 384(%rsp),%r9 + sbbq 392(%rsp),%r11 + sbbq 400(%rsp),%r13 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,256(%rsp) + movq %r11,264(%rsp) + movq %r13,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 232(%rsp),%rax + mulq 472(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 240(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 248(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 472(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 248(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 248(%rsp),%rax + mulq 472(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 224(%rsp),%rax + mulq 472(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 240(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 224(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 232(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rax + mulq 464(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 232(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 240(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + movq 192(%rsp),%r9 + movq 200(%rsp),%r11 + movq 208(%rsp),%r13 + movq 216(%rsp),%r15 + + addq %r9,%r9 + adcq %r11,%r11 + adcq %r13,%r13 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r9 + adcq %rdx,%r11 + adcq %rdx,%r13 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r9 + + // sub + movq %r9,%rbx + movq %r11,%rcx + movq %r13,%rbp + movq %r15,%rsi + + subq %r8,%r9 + sbbq %r10,%r11 + sbbq %r12,%r13 + sbbq %r14,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r9 + + movq %r9,352(%rsp) + movq %r11,360(%rsp) + movq %r13,368(%rsp) + movq %r15,376(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r10 + adcq %rbp,%r12 + adcq %rsi,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r10,296(%rsp) + movq %r12,304(%rsp) + movq %r14,312(%rsp) + +.L9: + movq 56(%rsp),%rdi + + /* p1p1 to p2 */ + + // mul + movq 264(%rsp),%rax + mulq 376(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 272(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 280(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 272(%rsp),%rax + mulq 376(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 280(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 280(%rsp),%rax + mulq 376(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 256(%rsp),%rax + mulq 376(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 264(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 272(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 280(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 256(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 256(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 264(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 256(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 264(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 272(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,0(%rdi) + movq %r10,8(%rdi) + movq %r12,16(%rdi) + movq %r14,24(%rdi) + + // mul + movq 296(%rsp),%rax + mulq 344(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 304(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 312(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 304(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 312(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 312(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 288(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 296(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 304(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 312(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 288(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 288(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 296(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 288(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 296(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 304(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,32(%rdi) + movq %r10,40(%rdi) + movq %r12,48(%rdi) + movq %r14,56(%rdi) + + // mul + movq 296(%rsp),%rax + mulq 376(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 304(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 312(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 304(%rsp),%rax + mulq 376(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 312(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 312(%rsp),%rax + mulq 376(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 288(%rsp),%rax + mulq 376(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 296(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 304(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 312(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 288(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 288(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 296(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 288(%rsp),%rax + mulq 368(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 296(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 304(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,64(%rdi) + movq %r10,72(%rdi) + movq %r12,80(%rdi) + movq %r14,88(%rdi) + + movq 96(%rsp),%rax + decq %rax + movq %rax,96(%rsp) + + cmpq $0,%rax + + jge .L3 + +.L10: + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_pack.c new file mode 120000 index 0000000000..6029b816df --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_pack.c @@ -0,0 +1 @@ +../amd64-51/ge25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_unpackneg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_unpackneg.c new file mode 120000 index 0000000000..4b7f5c5cff --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/ge25519_unpackneg.c @@ -0,0 +1 @@ +../amd64-64/ge25519_unpackneg.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/implementors b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/implementors new file mode 100644 index 0000000000..59a9b8815f --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/implementors @@ -0,0 +1,5 @@ +ge25519_double_scalarmult_precompute.S: Kaushik Nath +ge25519_double_scalarmult_process.S: Kaushik Nath +fe25519_mul.S,fe25519_square.S,fe25519_nsquare.S: Kaushik Nath +mGnP.c: Daniel J. Bernstein +other code: see amd64-64-24k diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/mGnP.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/mGnP.c new file mode 100644 index 0000000000..060bde873f --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/mGnP.c @@ -0,0 +1,39 @@ +#include "crypto_mGnP.h" + +#include "sc25519.h" +#include "ge25519.h" +#include "shared-data.h" +#include "crypto_verify_32.h" + +void crypto_mGnP( + unsigned char *Q, + const unsigned char *m, + const unsigned char *n, + const unsigned char *P +) +{ + sc25519 m_internal; + signed char m_slide[256]; + unsigned char mcheck[32]; + sc25519 n_internal; + signed char n_slide[256]; + ge25519 P_internal; + ge25519_pniels __attribute__ ((aligned(32))) P_multiples[P_MULTIPLES]; + ge25519_p3 result; + int ok; + + sc25519_from32bytes(&m_internal,m); + sc25519_from64bytes(&n_internal,n); + ok = ge25519_unpackneg_vartime(&P_internal,P); + + sc25519_to32bytes(mcheck,&m_internal); + if (crypto_verify_32(mcheck,m)) ok = 0; + + sc25519_slide(m_slide,&m_internal,G_WINDOWSIZE); + sc25519_slide(n_slide,&n_internal,P_WINDOWSIZE); + ge25519_double_scalarmult_precompute(P_multiples,&P_internal,P_MULTIPLES); + + ge25519_double_scalarmult_process(&result,n_slide,m_slide,P_multiples,G_multiples); + ge25519_pack(Q,&result); + Q[32] = ok; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_barrett.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_barrett.S new file mode 120000 index 0000000000..26a5f8a1c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_barrett.S @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_barrett.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_from64bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_from64bytes.c new file mode 120000 index 0000000000..f6a000bcdd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_from64bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from64bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_slide.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_slide.c new file mode 120000 index 0000000000..10ea12d89a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_slide.c @@ -0,0 +1 @@ +../amd64-51/sc25519_slide.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_to32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_to32bytes.c new file mode 120000 index 0000000000..6930ca05f6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/sc25519_to32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_to32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/shared-consts.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/shared-consts.c new file mode 100644 index 0000000000..35b0038e99 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/shared-consts.c @@ -0,0 +1,89 @@ +// linker define vec19 +// linker define vec1216 +// linker define vecmask23 +// linker define vecmask29 +// linker define pmask1 +// linker define pmask2 +// linker define pmask3 +// linker define pmask4 +// linker define pmask5 +// linker define pmask6 +// linker define pmask7 +// linker define pmask8 +// linker define pmask9 +// linker define pmask10 +// linker define pmask11 +// linker define pmask12 +// linker define upmask1 +// linker define upmask2 +// linker define upmask3 +// linker define upmask4 +// linker define upmask5 +// linker define upmask6 +// linker define upmask7 +// linker define upmask8 +// linker define mask63 +// linker define 121666 +// linker define MU0 +// linker define MU1 +// linker define MU2 +// linker define MU3 +// linker define MU4 +// linker define ORDER0 +// linker define ORDER1 +// linker define ORDER2 +// linker define ORDER3 +// linker define EC2D0 +// linker define EC2D1 +// linker define EC2D2 +// linker define EC2D3 +// linker define 38 + +#include "crypto_uint64.h" +#include "consts_namespace.h" + +const crypto_uint64 vec19[] = { 19,19,19,19 }; +const crypto_uint64 vec1216[] = { 1216,1216,1216,1216 }; +const crypto_uint64 vecmask23[] = { 0x7FFFFF,0x7FFFFF,0x7FFFFF,0x7FFFFF }; +const crypto_uint64 vecmask29[] = { 0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF }; +const crypto_uint64 pmask1[] = { 0x000000001FFFFFFF,0x000000001FFFFFFF,0x000000001FFFFFFF,0x000000001FFFFFFF }; +const crypto_uint64 pmask2[] = { 0x03FFFFFFE0000000,0x03FFFFFFE0000000,0x03FFFFFFE0000000,0x03FFFFFFE0000000 }; +const crypto_uint64 pmask3[] = { 0xFC00000000000000,0xFC00000000000000,0xFC00000000000000,0xFC00000000000000 }; +const crypto_uint64 pmask4[] = { 0x00000000007FFFFF,0x00000000007FFFFF,0x00000000007FFFFF,0x00000000007FFFFF }; +const crypto_uint64 pmask5[] = { 0x000FFFFFFF800000,0x000FFFFFFF800000,0x000FFFFFFF800000,0x000FFFFFFF800000 }; +const crypto_uint64 pmask6[] = { 0xFFF0000000000000,0xFFF0000000000000,0xFFF0000000000000,0xFFF0000000000000 }; +const crypto_uint64 pmask7[] = { 0x000000000001FFFF,0x000000000001FFFF,0x000000000001FFFF,0x000000000001FFFF }; +const crypto_uint64 pmask8[] = { 0x00003FFFFFFE0000,0x00003FFFFFFE0000,0x00003FFFFFFE0000,0x00003FFFFFFE0000 }; +const crypto_uint64 pmask9[] = { 0xFFFFC00000000000,0xFFFFC00000000000,0xFFFFC00000000000,0xFFFFC00000000000 }; +const crypto_uint64 pmask10[] = { 0x00000000000007FF,0x00000000000007FF,0x00000000000007FF,0x00000000000007FF }; +const crypto_uint64 pmask11[] = { 0x000000FFFFFFF800,0x000000FFFFFFF800,0x000000FFFFFFF800,0x000000FFFFFFF800 }; +const crypto_uint64 pmask12[] = { 0xFFFFFF0000000000,0xFFFFFF0000000000,0xFFFFFF0000000000,0xFFFFFF0000000000 }; +const crypto_uint64 upmask1[] = { 0x000000001FFFFFFF,0x000000001FFFFFFF,0x000000001FFFFFFF,0x000000001FFFFFFF }; +const crypto_uint64 upmask2[] = { 0x000000000000003F,0x000000000000003F,0x000000000000003F,0x000000000000003F }; +const crypto_uint64 upmask3[] = { 0x0000000000000FFF,0x0000000000000FFF,0x0000000000000FFF,0x0000000000000FFF }; +const crypto_uint64 upmask4[] = { 0x000000000003FFFF,0x000000000003FFFF,0x000000000003FFFF,0x000000000003FFFF }; +const crypto_uint64 upmask5[] = { 0x0000000000FFFFFF,0x0000000000FFFFFF,0x0000000000FFFFFF,0x0000000000FFFFFF }; +const crypto_uint64 upmask6[] = { 0x000000001FFFFFC0,0x000000001FFFFFC0,0x000000001FFFFFC0,0x000000001FFFFFC0 }; +const crypto_uint64 upmask7[] = { 0x000000001FFFF000,0x000000001FFFF000,0x000000001FFFF000,0x000000001FFFF000 }; +const crypto_uint64 upmask8[] = { 0x000000001FFC0000,0x000000001FFC0000,0x000000001FFC0000,0x000000001FFC0000 }; +const crypto_uint64 mask63[] = { 0x7FFFFFFFFFFFFFFF }; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(121666) = 121666; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU0) = 0xED9CE5A30A2C131B; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU1) = 0x2106215D086329A7; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU2) = 0xFFFFFFFFFFFFFFEB; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU3) = 0xFFFFFFFFFFFFFFFF; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU4) = 0x000000000000000F; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER0) = 0x5812631A5CF5D3ED; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER1) = 0x14DEF9DEA2F79CD6; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER2) = 0x0000000000000000; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER3) = 0x1000000000000000; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D0) = 0xEBD69B9426B2F146; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D1) = 0x00E0149A8283B156; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D2) = 0x198E80F2EEF3D130; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D3) = 0xA406D9DC56DFFCE7; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(38) = 38; diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/shared-data.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/shared-data.c new file mode 120000 index 0000000000..055c21deb2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/shared-data.c @@ -0,0 +1 @@ +../amd64-51/shared-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/shared-data.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/shared-data.h new file mode 120000 index 0000000000..0f186b9458 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maa4/shared-data.h @@ -0,0 +1 @@ +../amd64-51/shared-data.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/architectures b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/architectures new file mode 100644 index 0000000000..f70f3bca90 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/architectures @@ -0,0 +1 @@ +amd64 avx2 adx diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/consts_namespace.h new file mode 120000 index 0000000000..e812e15664 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519.h new file mode 120000 index 0000000000..0751205b74 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519.h @@ -0,0 +1 @@ +../amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_add.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_add.S new file mode 120000 index 0000000000..2f72e5bb09 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_add.S @@ -0,0 +1 @@ +../amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..65ecfcf5ce --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_getparity.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_getparity.c new file mode 120000 index 0000000000..d5e8b184b4 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_getparity.c @@ -0,0 +1 @@ +../amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_invert.c new file mode 120000 index 0000000000..06cd19180a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_iseq.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_iseq.c new file mode 120000 index 0000000000..3175be3915 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_iseq.c @@ -0,0 +1 @@ +../amd64-64/fe25519_iseq.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_mul.S new file mode 120000 index 0000000000..e2da98a127 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..b86bc09ece --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_pack.c new file mode 120000 index 0000000000..c92109ac1d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_pow2523.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_pow2523.c new file mode 120000 index 0000000000..3eb9dd58ec --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_pow2523.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pow2523.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_setint.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_setint.c new file mode 120000 index 0000000000..6ae1104ea9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_setint.c @@ -0,0 +1 @@ +../amd64-64/fe25519_setint.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_square.S new file mode 120000 index 0000000000..c94412632c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_square.S @@ -0,0 +1 @@ +../amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_sub.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_sub.S new file mode 120000 index 0000000000..5054d0b99e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_sub.S @@ -0,0 +1 @@ +../amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..98bfaced87 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519.h new file mode 120000 index 0000000000..8c73f0da6c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519.h @@ -0,0 +1 @@ +../amd64-mxaa/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_base_slide_multiples.data b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_base_slide_multiples.data new file mode 120000 index 0000000000..36c9553260 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_base_slide_multiples.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_slide_multiples.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_double_scalarmult_precompute.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_double_scalarmult_precompute.S new file mode 100644 index 0000000000..d0d45f763b --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_double_scalarmult_precompute.S @@ -0,0 +1,2573 @@ +// linker define ge25519_double_scalarmult_precompute +// linker use upmask1 upmask2 upmask3 upmask4 upmask5 upmask6 upmask7 upmask8 +// linker use pmask1 pmask2 pmask3 pmask4 pmask5 pmask6 pmask7 pmask8 pmask9 pmask10 pmask11 pmask12 +// linker use EC2D0 EC2D1 EC2D2 EC2D3 mask63 vec1216 vecmask23 vecmask29 + +/* Assembly for the precomputaion phase used in double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): + + movq %rsp,%r11 + andq $-32,%rsp + subq $1536,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + decq %rdx + movq %rdx,56(%rsp) + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 32(%rsi),%r8 + movq 40(%rsi),%r9 + movq 48(%rsi),%r10 + movq 56(%rsi),%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + movq 64(%rsi),%r8 + movq 72(%rsi),%r9 + movq 80(%rsi),%r10 + movq 88(%rsi),%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsi),%r8 + movq 104(%rsi),%r9 + movq 112(%rsi),%r10 + movq 120(%rsi),%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + /* dbl p1p1 */ + + // square + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 8(%rdi),%r9,%r10 + + mulx 16(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 8(%rdi),%rdx + xorq %r14,%r14 + + mulx 16(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 8(%rdi),%rdx + mulx 24(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 24(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 0(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 8(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 16(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 24(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // square + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 40(%rdi),%r9,%r10 + + mulx 48(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 40(%rdi),%rdx + xorq %r14,%r14 + + mulx 48(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 40(%rdi),%rdx + mulx 56(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 56(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 32(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 40(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 48(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 56(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 72(%rdi),%r9,%r10 + + mulx 80(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 72(%rdi),%rdx + xorq %r14,%r14 + + mulx 80(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 72(%rdi),%rdx + mulx 88(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 88(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 64(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 72(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 80(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 88(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // sub + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // sub + movq $0,%r12 + movq $0,%r13 + movq $0,%r14 + movq $0,%r15 + + subq 96(%rsp),%r12 + sbbq 104(%rsp),%r13 + sbbq 112(%rsp),%r14 + sbbq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,160(%rsp) + movq %r13,168(%rsp) + movq %r14,176(%rsp) + movq %r15,184(%rsp) + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,224(%rsp) + movq %r13,232(%rsp) + movq %r14,240(%rsp) + movq %r15,248(%rsp) + + // sub + subq 96(%rsp),%r8 + sbbq 104(%rsp),%r9 + sbbq 112(%rsp),%r10 + sbbq 120(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 128(%rsp),%r12 + sbbq 136(%rsp),%r13 + sbbq 144(%rsp),%r14 + sbbq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // add + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + + addq 32(%rdi),%r8 + adcq 40(%rdi),%r9 + adcq 48(%rdi),%r10 + adcq 56(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + xorq %r13,%r13 + movq 96(%rsp),%rdx + + mulx 104(%rsp),%r9,%r10 + + mulx 112(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 120(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 104(%rsp),%rdx + xorq %r14,%r14 + + mulx 112(%rsp),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 104(%rsp),%rdx + mulx 120(%rsp),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 112(%rsp),%rdx + + mulx 120(%rsp),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 96(%rsp),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 104(%rsp),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 112(%rsp),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 120(%rsp),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + addq 160(%rsp),%r8 + adcq 168(%rsp),%r9 + adcq 176(%rsp),%r10 + adcq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r9,200(%rsp) + movq %r10,208(%rsp) + movq %r11,216(%rsp) + + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + vmovdqa 224(%rsp),%ymm10 + vmovdqa 192(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 288(%rsp),%ymm8 + vmovdqa 256(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,64(%rsp) + vmovdqa %ymm11,96(%rsp) + vmovdqa %ymm12,128(%rsp) + vmovdqa %ymm13,160(%rsp) + + // Convert pre[0] to projective Niels representation + movq 0(%rdi),%rbx + movq 8(%rdi),%rcx + movq 16(%rdi),%rbp + movq 24(%rdi),%rsi + + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + // mul + xorq %r13,%r13 + movq EC2D0(%rip),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq EC2D1(%rip),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq EC2D2(%rip),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq EC2D3(%rip),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + movq $0,384(%rsp) + +.L: + // pnielsadd_p1p1 + + movq 96(%rsp),%r8 + movq 104(%rsp),%r9 + movq 112(%rsp),%r10 + movq 120(%rsp),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + addq 64(%rsp),%r12 + adcq 72(%rsp),%r13 + adcq 80(%rsp),%r14 + adcq 88(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // mul + xorq %r13,%r13 + movq 320(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 328(%rsp),%rdx + + mulx 0(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 8(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 16(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 24(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 336(%rsp),%rdx + + mulx 0(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 8(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 16(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 24(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 344(%rsp),%rdx + + mulx 0(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 8(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 16(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 24(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // mul + xorq %r13,%r13 + movq 352(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 360(%rsp),%rdx + + mulx 32(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 40(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 48(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 56(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 368(%rsp),%rdx + + mulx 32(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 40(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 48(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 56(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 376(%rsp),%rdx + + mulx 32(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 40(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 48(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 56(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r9 + adcq 336(%rsp),%r10 + adcq 344(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 320(%rsp),%r12 + sbbq 328(%rsp),%r13 + sbbq 336(%rsp),%r14 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,192(%rsp) + movq %r13,200(%rsp) + movq %r14,208(%rsp) + movq %r15,216(%rsp) + + // mul + xorq %r13,%r13 + movq 160(%rsp),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 168(%rsp),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 176(%rsp),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 184(%rsp),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // mul + xorq %r13,%r13 + movq 128(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 136(%rsp),%rdx + + mulx 64(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 72(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 80(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 88(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 144(%rsp),%rdx + + mulx 64(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 72(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 80(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 88(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 152(%rsp),%rdx + + mulx 64(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 72(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 80(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 88(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r9 + adcq 336(%rsp),%r10 + adcq 344(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,224(%rsp) + movq %r9,232(%rsp) + movq %r10,240(%rsp) + movq %r11,248(%rsp) + + // sub + subq 320(%rsp),%r12 + sbbq 328(%rsp),%r13 + sbbq 336(%rsp),%r14 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + vmovdqa 224(%rsp),%ymm10 + vmovdqa 192(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 288(%rsp),%ymm8 + vmovdqa 256(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rdi) + vmovdqa %ymm11,160(%rdi) + vmovdqa %ymm12,192(%rdi) + vmovdqa %ymm13,224(%rdi) + + // Convert pre[i1] to projective Niels representation + movq 128(%rdi),%rbx + movq 136(%rdi),%rcx + movq 144(%rdi),%rbp + movq 152(%rdi),%rsi + + movq 160(%rdi),%r8 + movq 168(%rdi),%r9 + movq 176(%rdi),%r10 + movq 184(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r8,128(%rdi) + movq %r9,136(%rdi) + movq %r10,144(%rdi) + movq %r11,152(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,160(%rdi) + movq %r13,168(%rdi) + movq %r14,176(%rdi) + movq %r15,184(%rdi) + + // mul + xorq %r13,%r13 + movq EC2D0(%rip),%rdx + + mulx 224(%rdi),%r8,%r9 + mulx 232(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 240(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 248(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq EC2D1(%rip),%rdx + + mulx 224(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 232(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 240(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 248(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq EC2D2(%rip),%rdx + + mulx 224(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 232(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 240(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 248(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq EC2D3(%rip),%rdx + + mulx 224(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 240(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 248(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,224(%rdi) + movq %r9,232(%rdi) + movq %r10,240(%rdi) + movq %r11,248(%rdi) + + addq $128,%rdi + + movq 384(%rsp),%r8 + incq %r8 + movq %r8,384(%rsp) + + cmpq 56(%rsp),%r8 + + jl .L + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_double_scalarmult_process.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_double_scalarmult_process.S new file mode 100644 index 0000000000..a23c38cacf --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_double_scalarmult_process.S @@ -0,0 +1,5216 @@ +// linker define ge25519_double_scalarmult_process +// linker use upmask1 upmask2 upmask3 upmask4 upmask5 upmask6 upmask7 upmask8 +// linker use pmask1 pmask2 pmask3 pmask4 pmask5 pmask6 pmask7 pmask8 pmask9 pmask10 pmask11 pmask12 +// linker use mask63 vec1216 vecmask23 vecmask29 + +/* Assembly for double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): + + movq %rsp,%r11 + andq $-32,%rsp + subq $1536,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + // setneutral + movq $0,%rax + movq $1,%rbx + + movq %rax,0(%rdi) + movq %rax,8(%rdi) + movq %rax,16(%rdi) + movq %rax,24(%rdi) + + movq %rbx,32(%rdi) + movq %rax,40(%rdi) + movq %rax,48(%rdi) + movq %rax,56(%rdi) + + movq %rbx,64(%rdi) + movq %rax,72(%rdi) + movq %rax,80(%rdi) + movq %rax,88(%rdi) + + movq %rax,96(%rdi) + movq %rax,104(%rdi) + movq %rax,112(%rdi) + movq %rax,120(%rdi) + + movq $255,%rax + addq $255,%rsi + addq $255,%rdx + + movq %rdi,56(%rsp) + movq %rcx,64(%rsp) + movq %r8,72(%rsp) + +.L1: + movb 0(%rsi),%r14b + movb 0(%rdx),%r15b + + cmpb $0,%r14b + jg .L2 + + cmpb $0,%r15b + jg .L2 + + decq %rsi + decq %rdx + + decq %rax + cmpq $0,%rax + + jge .L1 + + cmpq $0,%rax + jl .L10 + +.L2: + movq %rsi,80(%rsp) + movq %rdx,88(%rsp) + movq %rax,96(%rsp) + +.L3: + /* dbl p1p1 */ + + // square + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 8(%rdi),%r9,%r10 + + mulx 16(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 8(%rdi),%rdx + xorq %r14,%r14 + + mulx 16(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 8(%rdi),%rdx + mulx 24(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 24(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 0(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 8(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 16(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 24(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // square + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 40(%rdi),%r9,%r10 + + mulx 48(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 40(%rdi),%rdx + xorq %r14,%r14 + + mulx 48(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 40(%rdi),%rdx + mulx 56(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 56(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 32(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 40(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 48(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 56(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,160(%rsp) + movq %r9,168(%rsp) + movq %r10,176(%rsp) + movq %r11,184(%rsp) + + // square + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 72(%rdi),%r9,%r10 + + mulx 80(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 72(%rdi),%rdx + xorq %r14,%r14 + + mulx 80(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 72(%rdi),%rdx + mulx 88(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 88(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 64(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 72(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 80(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 88(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r9,200(%rsp) + movq %r10,208(%rsp) + movq %r11,216(%rsp) + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 160(%rsp),%r8 + sbbq 168(%rsp),%r9 + sbbq 176(%rsp),%r10 + sbbq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // add + addq 160(%rsp),%r12 + adcq 168(%rsp),%r13 + adcq 176(%rsp),%r14 + adcq 184(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // sub + subq 192(%rsp),%r12 + sbbq 200(%rsp),%r13 + sbbq 208(%rsp),%r14 + sbbq 216(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + addq 32(%rdi),%rbx + adcq 40(%rdi),%rbp + adcq 48(%rdi),%rcx + adcq 56(%rdi),%rsi + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%rbx + adcq %rdx,%rbp + adcq %rdx,%rcx + adcq %rdx,%rsi + + cmovc %rax,%rdx + addq %rdx,%rbx + + // square + xorq %r13,%r13 + movq %rbx,%rdx + + mulx %rbp,%r9,%r10 + + mulx %rcx,%r8,%r11 + adcx %r8,%r10 + + mulx %rsi,%r8,%r12 + adcx %r8,%r11 + adcx %r13,%r12 + + movq %rbp,%rdx + xorq %r14,%r14 + + mulx %rcx,%r8,%rdx + adcx %r8,%r11 + adox %rdx,%r12 + + movq %rbp,%rdx + mulx %rsi,%r8,%rdx + adcx %r8,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq %rcx,%rdx + + mulx %rsi,%r8,%r14 + adcx %r8,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq %rbx,%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq %rbp,%rdx + mulx %rdx,%rax,%rdx + adcx %rax,%r10 + adcx %rdx,%r11 + + movq %rcx,%rdx + mulx %rdx,%rax,%rdx + adcx %rax,%r12 + adcx %rdx,%r13 + + movq %rsi,%rdx + mulx %rdx,%rax,%rdx + adcx %rax,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + addq 128(%rsp),%r8 + adcq 136(%rsp),%r9 + adcq 144(%rsp),%r10 + adcq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // sub + subq 160(%rsp),%r8 + sbbq 168(%rsp),%r9 + sbbq 176(%rsp),%r10 + sbbq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + movq 80(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,80(%rsp) + movq 64(%rsp),%rdi + + cmpb $0,%r14b + jg .L4 + jl .L5 + je .L6 + +.L4: + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $128,%r14,%r14 + addq %r14,%rdi + + /* pnielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 384(%rsp),%r8,%r9 + mulx 392(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 400(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 408(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 416(%rsp),%r8,%r9 + mulx 424(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 432(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 440(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + xorq %r13,%r13 + movq 96(%rdi),%rdx + + mulx 224(%rsp),%r8,%r9 + mulx 232(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 240(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 248(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 104(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 112(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 120(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 192(%rsp),%r8,%r9 + mulx 200(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 208(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 216(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 72(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 88(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + jmp .L6 + +.L5: + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $128,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 96(%rdi),%r8 + sbbq 104(%rdi),%r9 + sbbq 112(%rdi),%r10 + sbbq 120(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,448(%rsp) + movq %r9,456(%rsp) + movq %r10,464(%rsp) + movq %r11,472(%rsp) + + /* pnielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 384(%rsp),%r8,%r9 + mulx 392(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 400(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 408(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 416(%rsp),%r8,%r9 + mulx 424(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 432(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 440(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + xorq %r13,%r13 + movq 224(%rsp),%rdx + + mulx 448(%rsp),%r8,%r9 + mulx 456(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 464(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 472(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 232(%rsp),%rdx + + mulx 448(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 456(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 464(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 472(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 240(%rsp),%rdx + + mulx 448(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 456(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 464(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 472(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 248(%rsp),%rdx + + mulx 448(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 456(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 464(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 472(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 192(%rsp),%r8,%r9 + mulx 200(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 208(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 216(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 72(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 88(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + +.L6: + movq 88(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,88(%rsp) + movq 72(%rsp),%rdi + + cmpb $0,%r14b + jg .L7 + jl .L8 + je .L9 + +.L7: + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $96,%r14,%r14 + addq %r14,%rdi + + /* nielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 384(%rsp),%r8,%r9 + mulx 392(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 400(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 408(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 416(%rsp),%r8,%r9 + mulx 424(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 432(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 440(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 224(%rsp),%r8,%r9 + mulx 232(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 240(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 248(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 72(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 88(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + movq 192(%rsp),%r12 + movq 200(%rsp),%r13 + movq 208(%rsp),%r14 + movq 216(%rsp),%r15 + + addq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + // sub + movq %r12,%rbx + movq %r13,%rcx + movq %r14,%rbp + movq %r15,%rsi + + subq %r8,%r12 + sbbq %r9,%r13 + sbbq %r10,%r14 + sbbq %r11,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r9 + adcq %rbp,%r10 + adcq %rsi,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + jmp .L9 + +.L8: + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $96,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rdi),%r8 + sbbq 72(%rdi),%r9 + sbbq 80(%rdi),%r10 + sbbq 88(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,448(%rsp) + movq %r9,456(%rsp) + movq %r10,464(%rsp) + movq %r11,472(%rsp) + + /* nielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 384(%rsp),%r8,%r9 + mulx 392(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 400(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 408(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 416(%rsp),%r8,%r9 + mulx 424(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 432(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 440(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + xorq %r13,%r13 + movq 448(%rsp),%rdx + + mulx 224(%rsp),%r8,%r9 + mulx 232(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 240(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 248(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 456(%rsp),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 464(%rsp),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 472(%rsp),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + movq 192(%rsp),%r12 + movq 200(%rsp),%r13 + movq 208(%rsp),%r14 + movq 216(%rsp),%r15 + + addq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + // sub + movq %r12,%rbx + movq %r13,%rcx + movq %r14,%rbp + movq %r15,%rsi + + subq %r8,%r12 + sbbq %r9,%r13 + sbbq %r10,%r14 + sbbq %r11,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r9 + adcq %rbp,%r10 + adcq %rsi,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + +.L9: + movq 56(%rsp),%rdi + + /* p1p1 to p2 */ + + // mul + xorq %r13,%r13 + movq 256(%rsp),%rdx + + mulx 352(%rsp),%r8,%r9 + mulx 360(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 368(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 376(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 264(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 272(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 280(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + // mul + xorq %r13,%r13 + movq 288(%rsp),%rdx + + mulx 320(%rsp),%r8,%r9 + mulx 328(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 336(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 344(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 296(%rsp),%rdx + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 304(%rsp),%rdx + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 312(%rsp),%rdx + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + // mul + xorq %r13,%r13 + movq 288(%rsp),%rdx + + mulx 352(%rsp),%r8,%r9 + mulx 360(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 368(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 376(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 296(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 304(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 312(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsp),%rax + decq %rax + movq %rax,96(%rsp) + + cmpq $0,%rax + + jge .L3 + +.L10: + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_pack.c new file mode 120000 index 0000000000..6029b816df --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_pack.c @@ -0,0 +1 @@ +../amd64-51/ge25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_unpackneg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_unpackneg.c new file mode 120000 index 0000000000..4b7f5c5cff --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/ge25519_unpackneg.c @@ -0,0 +1 @@ +../amd64-64/ge25519_unpackneg.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/implementors b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/implementors new file mode 120000 index 0000000000..71bd496923 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/implementors @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/mGnP.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/mGnP.c new file mode 120000 index 0000000000..3ef603262c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/mGnP.c @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/mGnP.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_barrett.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_barrett.S new file mode 120000 index 0000000000..26a5f8a1c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_barrett.S @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_barrett.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_from64bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_from64bytes.c new file mode 120000 index 0000000000..f6a000bcdd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_from64bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from64bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_slide.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_slide.c new file mode 120000 index 0000000000..10ea12d89a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_slide.c @@ -0,0 +1 @@ +../amd64-51/sc25519_slide.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_to32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_to32bytes.c new file mode 120000 index 0000000000..6930ca05f6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/sc25519_to32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_to32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/shared-consts.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/shared-consts.c new file mode 120000 index 0000000000..9a60b3f6a9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/shared-data.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/shared-data.c new file mode 120000 index 0000000000..055c21deb2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/shared-data.c @@ -0,0 +1 @@ +../amd64-51/shared-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/shared-data.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/shared-data.h new file mode 120000 index 0000000000..0f186b9458 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-maax/shared-data.h @@ -0,0 +1 @@ +../amd64-51/shared-data.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/architectures b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/consts_namespace.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/consts_namespace.h new file mode 120000 index 0000000000..e812e15664 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519.h new file mode 120000 index 0000000000..4e351b0cbb --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519.h @@ -0,0 +1 @@ +../amd64-mxaa/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_add.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_add.S new file mode 120000 index 0000000000..2f72e5bb09 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_add.S @@ -0,0 +1 @@ +../amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_freeze.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_freeze.S new file mode 120000 index 0000000000..65ecfcf5ce --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_freeze.S @@ -0,0 +1 @@ +../amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_getparity.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_getparity.c new file mode 120000 index 0000000000..d5e8b184b4 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_getparity.c @@ -0,0 +1 @@ +../amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_invert.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_invert.c new file mode 120000 index 0000000000..06cd19180a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_iseq.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_iseq.c new file mode 120000 index 0000000000..3175be3915 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_iseq.c @@ -0,0 +1 @@ +../amd64-64/fe25519_iseq.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_mul.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_mul.S new file mode 120000 index 0000000000..07a9c1c4c6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_mul.S @@ -0,0 +1 @@ +../amd64-mxaa/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_nsquare.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_nsquare.S new file mode 120000 index 0000000000..bab34ec169 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_nsquare.S @@ -0,0 +1 @@ +../amd64-mxaa/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_pack.c new file mode 120000 index 0000000000..c92109ac1d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_pow2523.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_pow2523.c new file mode 120000 index 0000000000..539e1b4cea --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_pow2523.c @@ -0,0 +1 @@ +../amd64-mxaa/fe25519_pow2523.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_setint.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_setint.c new file mode 120000 index 0000000000..6ae1104ea9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_setint.c @@ -0,0 +1 @@ +../amd64-64/fe25519_setint.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_sub.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_sub.S new file mode 120000 index 0000000000..5054d0b99e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_sub.S @@ -0,0 +1 @@ +../amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_unpack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_unpack.c new file mode 120000 index 0000000000..98bfaced87 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519.h new file mode 120000 index 0000000000..8c73f0da6c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519.h @@ -0,0 +1 @@ +../amd64-mxaa/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_base_slide_multiples.data b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_base_slide_multiples.data new file mode 120000 index 0000000000..36c9553260 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_base_slide_multiples.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_slide_multiples.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_double_scalarmult_precompute.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_double_scalarmult_precompute.S new file mode 100644 index 0000000000..f63de14bcf --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_double_scalarmult_precompute.S @@ -0,0 +1,2523 @@ +// linker define ge25519_double_scalarmult_precompute +// linker use upmask1 upmask2 upmask3 upmask4 upmask5 upmask6 upmask7 upmask8 +// linker use pmask1 pmask2 pmask3 pmask4 pmask5 pmask6 pmask7 pmask8 pmask9 pmask10 pmask11 pmask12 +// linker use EC2D0 EC2D1 EC2D2 EC2D3 mask63 vec1216 vecmask23 vecmask29 + +/* Assembly for the precomputaion phase used in double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): + + movq %rsp,%r11 + andq $-32,%rsp + subq $1536,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + decq %rdx + movq %rdx,56(%rsp) + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 32(%rsi),%r8 + movq 40(%rsi),%r9 + movq 48(%rsi),%r10 + movq 56(%rsi),%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + movq 64(%rsi),%r8 + movq 72(%rsi),%r9 + movq 80(%rsi),%r10 + movq 88(%rsi),%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsi),%r8 + movq 104(%rsi),%r9 + movq 112(%rsi),%r10 + movq 120(%rsi),%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + /* dbl p1p1 */ + + // square + movq 0(%rdi),%rdx + + mulx 8(%rdi),%r9,%r10 + mulx 16(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 8(%rdi),%rdx + + mulx 16(%rdi),%rax,%rbx + mulx 24(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 16(%rdi),%rdx + + mulx 24(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 0(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 8(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 16(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 24(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // square + movq 32(%rdi),%rdx + + mulx 40(%rdi),%r9,%r10 + mulx 48(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 40(%rdi),%rdx + + mulx 48(%rdi),%rax,%rbx + mulx 56(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 48(%rdi),%rdx + + mulx 56(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 32(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 40(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 48(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 56(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + movq 64(%rdi),%rdx + + mulx 72(%rdi),%r9,%r10 + mulx 80(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 72(%rdi),%rdx + + mulx 80(%rdi),%rax,%rbx + mulx 88(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 80(%rdi),%rdx + + mulx 88(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 64(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 72(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 80(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 88(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // sub + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // sub + movq $0,%r12 + movq $0,%r13 + movq $0,%r14 + movq $0,%r15 + + subq 96(%rsp),%r12 + sbbq 104(%rsp),%r13 + sbbq 112(%rsp),%r14 + sbbq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,160(%rsp) + movq %r13,168(%rsp) + movq %r14,176(%rsp) + movq %r15,184(%rsp) + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,224(%rsp) + movq %r13,232(%rsp) + movq %r14,240(%rsp) + movq %r15,248(%rsp) + + // sub + subq 96(%rsp),%r8 + sbbq 104(%rsp),%r9 + sbbq 112(%rsp),%r10 + sbbq 120(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 128(%rsp),%r12 + sbbq 136(%rsp),%r13 + sbbq 144(%rsp),%r14 + sbbq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // add + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + + addq 32(%rdi),%r8 + adcq 40(%rdi),%r9 + adcq 48(%rdi),%r10 + adcq 56(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + movq 96(%rsp),%rdx + + mulx 104(%rsp),%r9,%r10 + mulx 112(%rsp),%rcx,%r11 + addq %rcx,%r10 + + mulx 120(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 104(%rsp),%rdx + + mulx 112(%rsp),%rax,%rbx + mulx 120(%rsp),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 112(%rsp),%rdx + + mulx 120(%rsp),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 96(%rsp),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 104(%rsp),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 112(%rsp),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 120(%rsp),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + addq 160(%rsp),%r8 + adcq 168(%rsp),%r9 + adcq 176(%rsp),%r10 + adcq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r9,200(%rsp) + movq %r10,208(%rsp) + movq %r11,216(%rsp) + + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + vmovdqa 224(%rsp),%ymm10 + vmovdqa 192(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 288(%rsp),%ymm8 + vmovdqa 256(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,64(%rsp) + vmovdqa %ymm11,96(%rsp) + vmovdqa %ymm12,128(%rsp) + vmovdqa %ymm13,160(%rsp) + + // Convert pre[0] to projective Niels representation + movq 0(%rdi),%rbx + movq 8(%rdi),%rcx + movq 16(%rdi),%rbp + movq 24(%rdi),%rsi + + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + // mul + movq EC2D0(%rip),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq EC2D1(%rip),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq EC2D2(%rip),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq EC2D3(%rip),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + movq $0,384(%rsp) + +.L: + // pnielsadd_p1p1 + + movq 96(%rsp),%r8 + movq 104(%rsp),%r9 + movq 112(%rsp),%r10 + movq 120(%rsp),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + addq 64(%rsp),%r12 + adcq 72(%rsp),%r13 + adcq 80(%rsp),%r14 + adcq 88(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // mul + movq 320(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 328(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 336(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 344(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // mul + movq 352(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 360(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 368(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 376(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r9 + adcq 336(%rsp),%r10 + adcq 344(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 320(%rsp),%r12 + sbbq 328(%rsp),%r13 + sbbq 336(%rsp),%r14 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,192(%rsp) + movq %r13,200(%rsp) + movq %r14,208(%rsp) + movq %r15,216(%rsp) + + // mul + movq 160(%rsp),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 168(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 176(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 184(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // mul + movq 128(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 136(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 144(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 152(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r9 + adcq 336(%rsp),%r10 + adcq 344(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,224(%rsp) + movq %r9,232(%rsp) + movq %r10,240(%rsp) + movq %r11,248(%rsp) + + // sub + subq 320(%rsp),%r12 + sbbq 328(%rsp),%r13 + sbbq 336(%rsp),%r14 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + vmovdqa 224(%rsp),%ymm10 + vmovdqa 192(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 288(%rsp),%ymm8 + vmovdqa 256(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rdi) + vmovdqa %ymm11,160(%rdi) + vmovdqa %ymm12,192(%rdi) + vmovdqa %ymm13,224(%rdi) + + // Convert pre[i1] to projective Niels representation + movq 128(%rdi),%rbx + movq 136(%rdi),%rcx + movq 144(%rdi),%rbp + movq 152(%rdi),%rsi + + movq 160(%rdi),%r8 + movq 168(%rdi),%r9 + movq 176(%rdi),%r10 + movq 184(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r8,128(%rdi) + movq %r9,136(%rdi) + movq %r10,144(%rdi) + movq %r11,152(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,160(%rdi) + movq %r13,168(%rdi) + movq %r14,176(%rdi) + movq %r15,184(%rdi) + + // mul + movq EC2D0(%rip),%rdx + + mulx 224(%rdi),%r8,%r9 + mulx 232(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 240(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 248(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq EC2D1(%rip),%rdx + + mulx 224(%rdi),%rax,%rbx + mulx 232(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq EC2D2(%rip),%rdx + + mulx 224(%rdi),%rax,%rbx + mulx 232(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq EC2D3(%rip),%rdx + + mulx 224(%rdi),%rax,%rbx + mulx 232(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,224(%rdi) + movq %r9,232(%rdi) + movq %r10,240(%rdi) + movq %r11,248(%rdi) + + addq $128,%rdi + + movq 384(%rsp),%r8 + incq %r8 + movq %r8,384(%rsp) + + cmpq 56(%rsp),%r8 + + jl .L + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_double_scalarmult_process.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_double_scalarmult_process.S new file mode 100644 index 0000000000..407fd02ead --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_double_scalarmult_process.S @@ -0,0 +1,5111 @@ +// linker define ge25519_double_scalarmult_process +// linker use upmask1 upmask2 upmask3 upmask4 upmask5 upmask6 upmask7 upmask8 +// linker use pmask1 pmask2 pmask3 pmask4 pmask5 pmask6 pmask7 pmask8 pmask9 pmask10 pmask11 pmask12 +// linker use mask63 vec1216 vecmask23 vecmask29 + +/* Assembly for double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): + + movq %rsp,%r11 + andq $-32,%rsp + subq $1536,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + // setneutral + movq $0,%rax + movq $1,%rbx + + movq %rax,0(%rdi) + movq %rax,8(%rdi) + movq %rax,16(%rdi) + movq %rax,24(%rdi) + + movq %rbx,32(%rdi) + movq %rax,40(%rdi) + movq %rax,48(%rdi) + movq %rax,56(%rdi) + + movq %rbx,64(%rdi) + movq %rax,72(%rdi) + movq %rax,80(%rdi) + movq %rax,88(%rdi) + + movq %rax,96(%rdi) + movq %rax,104(%rdi) + movq %rax,112(%rdi) + movq %rax,120(%rdi) + + movq $255,%rax + addq $255,%rsi + addq $255,%rdx + + movq %rdi,56(%rsp) + movq %rcx,64(%rsp) + movq %r8,72(%rsp) + +.L1: + movb 0(%rsi),%r14b + movb 0(%rdx),%r15b + + cmpb $0,%r14b + jg .L2 + + cmpb $0,%r15b + jg .L2 + + decq %rsi + decq %rdx + + decq %rax + cmpq $0,%rax + + jge .L1 + + cmpq $0,%rax + jl .L10 + +.L2: + movq %rsi,80(%rsp) + movq %rdx,88(%rsp) + movq %rax,96(%rsp) + +.L3: + /* dbl p1p1 */ + + // square + movq 0(%rdi),%rdx + + mulx 8(%rdi),%r9,%r10 + mulx 16(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 8(%rdi),%rdx + + mulx 16(%rdi),%rax,%rbx + mulx 24(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 16(%rdi),%rdx + + mulx 24(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 0(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 8(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 16(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 24(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // square + movq 32(%rdi),%rdx + + mulx 40(%rdi),%r9,%r10 + mulx 48(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 40(%rdi),%rdx + + mulx 48(%rdi),%rax,%rbx + mulx 56(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 48(%rdi),%rdx + + mulx 56(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 32(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 40(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 48(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 56(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,160(%rsp) + movq %r9,168(%rsp) + movq %r10,176(%rsp) + movq %r11,184(%rsp) + + // square + movq 64(%rdi),%rdx + + mulx 72(%rdi),%r9,%r10 + mulx 80(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 72(%rdi),%rdx + + mulx 80(%rdi),%rax,%rbx + mulx 88(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 80(%rdi),%rdx + + mulx 88(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 64(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 72(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 80(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 88(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r9,200(%rsp) + movq %r10,208(%rsp) + movq %r11,216(%rsp) + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 160(%rsp),%r8 + sbbq 168(%rsp),%r9 + sbbq 176(%rsp),%r10 + sbbq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // add + addq 160(%rsp),%r12 + adcq 168(%rsp),%r13 + adcq 176(%rsp),%r14 + adcq 184(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // sub + subq 192(%rsp),%r12 + sbbq 200(%rsp),%r13 + sbbq 208(%rsp),%r14 + sbbq 216(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + addq 32(%rdi),%rbx + adcq 40(%rdi),%rbp + adcq 48(%rdi),%rcx + adcq 56(%rdi),%rsi + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%rbx + adcq %rdx,%rbp + adcq %rdx,%rcx + adcq %rdx,%rsi + + cmovc %rax,%rdx + addq %rdx,%rbx + + // square + movq %rbx,%rdx + + mulx %rbp,%r9,%r10 + mulx %rcx,%r8,%r11 + addq %r8,%r10 + + mulx %rsi,%r8,%r12 + adcq %r8,%r11 + adcq $0,%r12 + + movq %rbp,%rdx + + mulx %rcx,%rax,%r8 + mulx %rsi,%rdx,%r13 + addq %rdx,%r8 + adcq $0,%r13 + + addq %rax,%r11 + adcq %r8,%r12 + adcq $0,%r13 + + movq %rcx,%rdx + + mulx %rsi,%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq %rbx,%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq %rbp,%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq %rcx,%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq %rsi,%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + addq 128(%rsp),%r8 + adcq 136(%rsp),%r9 + adcq 144(%rsp),%r10 + adcq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // sub + subq 160(%rsp),%r8 + sbbq 168(%rsp),%r9 + sbbq 176(%rsp),%r10 + sbbq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + movq 80(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,80(%rsp) + movq 64(%rsp),%rdi + + cmpb $0,%r14b + jg .L4 + jl .L5 + je .L6 + +.L4: + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $128,%r14,%r14 + addq %r14,%rdi + + /* pnielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 384(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 392(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 400(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 408(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + movq 416(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 424(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 432(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 440(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 224(%rsp),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 232(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 248(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + movq 192(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 200(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 208(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 216(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + jmp .L6 + +.L5: + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $128,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 96(%rdi),%r8 + sbbq 104(%rdi),%r9 + sbbq 112(%rdi),%r10 + sbbq 120(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,448(%rsp) + movq %r9,456(%rsp) + movq %r10,464(%rsp) + movq %r11,472(%rsp) + + /* pnielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 384(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 392(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 400(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 408(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + movq 416(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 424(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 432(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 440(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 224(%rsp),%rdx + + mulx 448(%rsp),%r8,%r9 + mulx 456(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 464(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 472(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 232(%rsp),%rdx + + mulx 448(%rsp),%rax,%rbx + mulx 456(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 464(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 472(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rdx + + mulx 448(%rsp),%rax,%rbx + mulx 456(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 464(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 472(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 248(%rsp),%rdx + + mulx 448(%rsp),%rax,%rbx + mulx 456(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 464(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 472(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + movq 192(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 200(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 208(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 216(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + +.L6: + movq 88(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,88(%rsp) + movq 72(%rsp),%rdi + + cmpb $0,%r14b + jg .L7 + jl .L8 + je .L9 + +.L7: + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $96,%r14,%r14 + addq %r14,%rdi + + /* nielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 384(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 392(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 400(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 408(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + movq 416(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 424(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 432(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 440(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 224(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 232(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 248(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + movq 192(%rsp),%r12 + movq 200(%rsp),%r13 + movq 208(%rsp),%r14 + movq 216(%rsp),%r15 + + addq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + // sub + movq %r12,%rbx + movq %r13,%rcx + movq %r14,%rbp + movq %r15,%rsi + + subq %r8,%r12 + sbbq %r9,%r13 + sbbq %r10,%r14 + sbbq %r11,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r9 + adcq %rbp,%r10 + adcq %rsi,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + jmp .L9 + +.L8: + /* p1p1 to p3 */ + + // convert to 9x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm1 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm2 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm3 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm4 + + vpand pmask1(%rip),%ymm1,%ymm10 + + vpand pmask2(%rip),%ymm1,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm1,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm2,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm2,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm2,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm3,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm5 + + vpand pmask8(%rip),%ymm3,%ymm6 + vpsrlq $17,%ymm6,%ymm6 + + vpand pmask9(%rip),%ymm3,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm4,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm7 + + vpand pmask11(%rip),%ymm4,%ymm8 + vpsrlq $11,%ymm8,%ymm8 + + vpand pmask12(%rip),%ymm4,%ymm9 + vpsrlq $40,%ymm9,%ymm9 + + vmovdqa %ymm10,1248(%rsp) + vmovdqa %ymm11,1280(%rsp) + vmovdqa %ymm12,1312(%rsp) + vmovdqa %ymm13,1344(%rsp) + vmovdqa %ymm5,1376(%rsp) + vmovdqa %ymm6,1408(%rsp) + vmovdqa %ymm7,1440(%rsp) + vmovdqa %ymm8,1472(%rsp) + vmovdqa %ymm9,1504(%rsp) + + // convert to 9x4 form + vmovdqa 352(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + vmovdqa 352(%rsp),%ymm10 + vmovdqa 320(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm5 + vpunpckhqdq %ymm9,%ymm8,%ymm6 + vpunpcklqdq %ymm11,%ymm10,%ymm7 + vpunpckhqdq %ymm11,%ymm10,%ymm8 + + vpermq $68,%ymm7,%ymm9 + vpblendd $240,%ymm9,%ymm5,%ymm3 + vpermq $68,%ymm8,%ymm9 + vpblendd $240,%ymm9,%ymm6,%ymm4 + vpermq $238,%ymm5,%ymm9 + vpblendd $240,%ymm7,%ymm9,%ymm5 + vpermq $238,%ymm6,%ymm9 + vpblendd $240,%ymm8,%ymm9,%ymm6 + + vpand pmask1(%rip),%ymm3,%ymm10 + + vpand pmask2(%rip),%ymm3,%ymm11 + vpsrlq $29,%ymm11,%ymm11 + + vpand pmask3(%rip),%ymm3,%ymm7 + vpsrlq $58,%ymm7,%ymm7 + vpand pmask4(%rip),%ymm4,%ymm9 + vpsllq $6,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm12 + + vpand pmask5(%rip),%ymm4,%ymm13 + vpsrlq $23,%ymm13,%ymm13 + + vpand pmask6(%rip),%ymm4,%ymm7 + vpsrlq $52,%ymm7,%ymm7 + vpand pmask7(%rip),%ymm5,%ymm9 + vpsllq $12,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm0 + + vpand pmask8(%rip),%ymm5,%ymm1 + vpsrlq $17,%ymm1,%ymm1 + + vpand pmask9(%rip),%ymm5,%ymm7 + vpsrlq $46,%ymm7,%ymm7 + vpand pmask10(%rip),%ymm6,%ymm9 + vpsllq $18,%ymm9,%ymm9 + vpor %ymm9,%ymm7,%ymm2 + + vpand pmask11(%rip),%ymm6,%ymm3 + vpsrlq $11,%ymm3,%ymm3 + + vpand pmask12(%rip),%ymm6,%ymm4 + vpsrlq $40,%ymm4,%ymm4 + + vmovdqa 1376(%rsp),%ymm5 + vmovdqa 1408(%rsp),%ymm6 + vmovdqa 1440(%rsp),%ymm7 + vmovdqa 1472(%rsp),%ymm8 + vmovdqa 1504(%rsp),%ymm9 + + // mul4x1 + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,480(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,512(%rsp) + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,544(%rsp) + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,576(%rsp) + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,608(%rsp) + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,640(%rsp) + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,672(%rsp) + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,704(%rsp) + + vpmuludq %ymm9,%ymm4,%ymm15 + vmovdqa %ymm15,736(%rsp) + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq 1248(%rsp),%ymm5,%ymm5 + vpaddq 1280(%rsp),%ymm6,%ymm6 + vpaddq 1312(%rsp),%ymm7,%ymm7 + vpaddq 1344(%rsp),%ymm8,%ymm8 + + vpmuludq 1248(%rsp),%ymm10,%ymm15 + vmovdqa %ymm15,768(%rsp) + vpaddq 480(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,992(%rsp) + + vpmuludq 1280(%rsp),%ymm10,%ymm15 + vpmuludq 1248(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,800(%rsp) + vpaddq 512(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1024(%rsp) + + vpmuludq 1312(%rsp),%ymm10,%ymm15 + vpmuludq 1280(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,832(%rsp) + vpaddq 544(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1056(%rsp) + + vpmuludq 1344(%rsp),%ymm10,%ymm15 + vpmuludq 1312(%rsp),%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1248(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,864(%rsp) + vpaddq 576(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1088(%rsp) + + vpmuludq 1344(%rsp),%ymm11,%ymm15 + vpmuludq 1312(%rsp),%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq 1280(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,896(%rsp) + vpaddq 608(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1120(%rsp) + + vpmuludq 1344(%rsp),%ymm12,%ymm15 + vpmuludq 1312(%rsp),%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,928(%rsp) + vpaddq 640(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1152(%rsp) + + vpmuludq 1344(%rsp),%ymm13,%ymm15 + vmovdqa %ymm15,960(%rsp) + vpaddq 672(%rsp),%ymm15,%ymm15 + vmovdqa %ymm15,1184(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,1216(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 1216(%rsp),%ymm9 + + vpsubq 992(%rsp),%ymm9,%ymm9 + vpaddq 896(%rsp),%ymm9,%ymm9 + vpsubq 1024(%rsp),%ymm10,%ymm10 + vpaddq 928(%rsp),%ymm10,%ymm10 + vpsubq 1056(%rsp),%ymm11,%ymm11 + vpaddq 960(%rsp),%ymm11,%ymm11 + vpsubq 1088(%rsp),%ymm12,%ymm12 + vpsubq 1120(%rsp),%ymm13,%ymm13 + vpaddq 480(%rsp),%ymm13,%ymm13 + vpsubq 1152(%rsp),%ymm0,%ymm0 + vpaddq 512(%rsp),%ymm0,%ymm0 + vpsubq 1184(%rsp),%ymm1,%ymm1 + vpaddq 544(%rsp),%ymm1,%ymm1 + vpsubq 704(%rsp),%ymm2,%ymm2 + vpaddq 576(%rsp),%ymm2,%ymm2 + vpsubq 736(%rsp),%ymm3,%ymm3 + vpaddq 608(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq 768(%rsp),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq 800(%rsp),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq 832(%rsp),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq 640(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 864(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 672(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq 704(%rsp),%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq 736(%rsp),%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $23,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpaddq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpsllq $3,%ymm15,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $29,%ymm4,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm5,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm6,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm7,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm0,%ymm10 + vpand upmask1(%rip),%ymm1,%ymm11 + vpsllq $29,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + vpand upmask2(%rip),%ymm2,%ymm11 + vpsllq $58,%ymm11,%ymm11 + vpor %ymm10,%ymm11,%ymm10 + + vpand upmask6(%rip),%ymm2,%ymm11 + vpsrlq $6,%ymm11,%ymm11 + vpand upmask1(%rip),%ymm3,%ymm12 + vpsllq $23,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + vpand upmask3(%rip),%ymm4,%ymm12 + vpsllq $52,%ymm12,%ymm12 + vpor %ymm11,%ymm12,%ymm11 + + vpand upmask7(%rip),%ymm4,%ymm12 + vpsrlq $12,%ymm12,%ymm12 + vpand upmask1(%rip),%ymm5,%ymm13 + vpsllq $17,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + vpand upmask4(%rip),%ymm6,%ymm13 + vpsllq $46,%ymm13,%ymm13 + vpor %ymm12,%ymm13,%ymm12 + + vpand upmask8(%rip),%ymm6,%ymm13 + vpsrlq $18,%ymm13,%ymm13 + vpand upmask1(%rip),%ymm7,%ymm14 + vpsllq $11,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + vpand upmask5(%rip),%ymm8,%ymm14 + vpsllq $40,%ymm14,%ymm14 + vpor %ymm13,%ymm14,%ymm13 + + vpunpcklqdq %ymm11,%ymm10,%ymm2 + vpunpckhqdq %ymm11,%ymm10,%ymm3 + vpunpcklqdq %ymm13,%ymm12,%ymm4 + vpunpckhqdq %ymm13,%ymm12,%ymm5 + + vpermq $68,%ymm4,%ymm7 + vpblendd $240,%ymm7,%ymm2,%ymm10 + vpermq $68,%ymm5,%ymm7 + vpblendd $240,%ymm7,%ymm3,%ymm11 + vpermq $238,%ymm2,%ymm7 + vpblendd $240,%ymm4,%ymm7,%ymm12 + vpermq $238,%ymm3,%ymm7 + vpblendd $240,%ymm5,%ymm7,%ymm13 + + vmovdqa %ymm10,128(%rsp) + vmovdqa %ymm11,160(%rsp) + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $96,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rdi),%r8 + sbbq 72(%rdi),%r9 + sbbq 80(%rdi),%r10 + sbbq 88(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,448(%rsp) + movq %r9,456(%rsp) + movq %r10,464(%rsp) + movq %r11,472(%rsp) + + /* nielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + movq 384(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 392(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 400(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 408(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + movq 416(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 424(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 432(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 440(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + movq 448(%rsp),%rdx + + mulx 224(%rsp),%r8,%r9 + mulx 232(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 240(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 248(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 456(%rsp),%rdx + + mulx 224(%rsp),%rax,%rbx + mulx 232(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 464(%rsp),%rdx + + mulx 224(%rsp),%rax,%rbx + mulx 232(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 472(%rsp),%rdx + + mulx 224(%rsp),%rax,%rbx + mulx 232(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + movq 192(%rsp),%r12 + movq 200(%rsp),%r13 + movq 208(%rsp),%r14 + movq 216(%rsp),%r15 + + addq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + // sub + movq %r12,%rbx + movq %r13,%rcx + movq %r14,%rbp + movq %r15,%rsi + + subq %r8,%r12 + sbbq %r9,%r13 + sbbq %r10,%r14 + sbbq %r11,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r9 + adcq %rbp,%r10 + adcq %rsi,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + +.L9: + movq 56(%rsp),%rdi + + /* p1p1 to p2 */ + + // mul + movq 256(%rsp),%rdx + + mulx 352(%rsp),%r8,%r9 + mulx 360(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 368(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 376(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 264(%rsp),%rdx + + mulx 352(%rsp),%rax,%rbx + mulx 360(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 368(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 376(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 272(%rsp),%rdx + + mulx 352(%rsp),%rax,%rbx + mulx 360(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 368(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 376(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 280(%rsp),%rdx + + mulx 352(%rsp),%rax,%rbx + mulx 360(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 368(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 376(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + // mul + movq 288(%rsp),%rdx + + mulx 320(%rsp),%r8,%r9 + mulx 328(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 336(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 344(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 296(%rsp),%rdx + + mulx 320(%rsp),%rax,%rbx + mulx 328(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 336(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 344(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 304(%rsp),%rdx + + mulx 320(%rsp),%rax,%rbx + mulx 328(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 336(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 344(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 312(%rsp),%rdx + + mulx 320(%rsp),%rax,%rbx + mulx 328(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 336(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 344(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + // mul + movq 288(%rsp),%rdx + + mulx 352(%rsp),%r8,%r9 + mulx 360(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 368(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 376(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 296(%rsp),%rdx + + mulx 352(%rsp),%rax,%rbx + mulx 360(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 368(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 376(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 304(%rsp),%rdx + + mulx 352(%rsp),%rax,%rbx + mulx 360(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 368(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 376(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 312(%rsp),%rdx + + mulx 352(%rsp),%rax,%rbx + mulx 360(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 368(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 376(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsp),%rax + decq %rax + movq %rax,96(%rsp) + + cmpq $0,%rax + + jge .L3 + +.L10: + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_pack.c new file mode 120000 index 0000000000..6029b816df --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_pack.c @@ -0,0 +1 @@ +../amd64-51/ge25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_unpackneg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_unpackneg.c new file mode 120000 index 0000000000..4b7f5c5cff --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/ge25519_unpackneg.c @@ -0,0 +1 @@ +../amd64-64/ge25519_unpackneg.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/implementors b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/implementors new file mode 100644 index 0000000000..456bf4638e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/implementors @@ -0,0 +1,5 @@ +ge25519_double_scalarmult_precompute.S: Kaushik Nath +ge25519_double_scalarmult_process.S: Kaushik Nath +fe25519_mul.S,fe25519_nsquare.S: Kaushik Nath +mGnP.c: Daniel J. Bernstein +other code: see amd64-64-24k diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/mGnP.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/mGnP.c new file mode 120000 index 0000000000..3ef603262c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/mGnP.c @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/mGnP.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_barrett.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_barrett.S new file mode 120000 index 0000000000..26a5f8a1c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_barrett.S @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_barrett.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_from64bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_from64bytes.c new file mode 120000 index 0000000000..f6a000bcdd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_from64bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from64bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_slide.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_slide.c new file mode 120000 index 0000000000..10ea12d89a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_slide.c @@ -0,0 +1 @@ +../amd64-51/sc25519_slide.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_to32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_to32bytes.c new file mode 120000 index 0000000000..6930ca05f6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/sc25519_to32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_to32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/shared-consts.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/shared-consts.c new file mode 120000 index 0000000000..9a60b3f6a9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/shared-data.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/shared-data.c new file mode 120000 index 0000000000..055c21deb2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/shared-data.c @@ -0,0 +1 @@ +../amd64-51/shared-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/shared-data.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/shared-data.h new file mode 120000 index 0000000000..0f186b9458 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx2-9l-mxaa/shared-data.h @@ -0,0 +1 @@ +../amd64-51/shared-data.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/architectures b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/architectures new file mode 100644 index 0000000000..f6040de0b0 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/architectures @@ -0,0 +1 @@ +amd64 avx2 adx avx512f avx512ifma diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/consts_namespace.h new file mode 100644 index 0000000000..39cf974dc1 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/consts_namespace.h @@ -0,0 +1,30 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vec608 CRYPTO_SHARED_NAMESPACE(vec608) +#define vecmask47 CRYPTO_SHARED_NAMESPACE(vecmask47) +#define vecmask52 CRYPTO_SHARED_NAMESPACE(vecmask52) +#define pmask1 CRYPTO_SHARED_NAMESPACE(pmask1) +#define pmask2 CRYPTO_SHARED_NAMESPACE(pmask2) +#define pmask3 CRYPTO_SHARED_NAMESPACE(pmask3) +#define pmask4 CRYPTO_SHARED_NAMESPACE(pmask4) +#define pmask5 CRYPTO_SHARED_NAMESPACE(pmask5) +#define pmask6 CRYPTO_SHARED_NAMESPACE(pmask6) +#define pmask7 CRYPTO_SHARED_NAMESPACE(pmask7) +#define pmask8 CRYPTO_SHARED_NAMESPACE(pmask8) +#define upmask1 CRYPTO_SHARED_NAMESPACE(upmask1) +#define upmask2 CRYPTO_SHARED_NAMESPACE(upmask2) +#define upmask3 CRYPTO_SHARED_NAMESPACE(upmask3) +#define upmask4 CRYPTO_SHARED_NAMESPACE(upmask4) +#define upmask5 CRYPTO_SHARED_NAMESPACE(upmask5) +#define upmask6 CRYPTO_SHARED_NAMESPACE(upmask6) +#define upmask7 CRYPTO_SHARED_NAMESPACE(upmask7) +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) +#define EC2D0 CRYPTO_SHARED_NAMESPACE(EC2D0) +#define EC2D1 CRYPTO_SHARED_NAMESPACE(EC2D1) +#define EC2D2 CRYPTO_SHARED_NAMESPACE(EC2D2) +#define EC2D3 CRYPTO_SHARED_NAMESPACE(EC2D3) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519.h new file mode 120000 index 0000000000..0751205b74 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519.h @@ -0,0 +1 @@ +../amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_add.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_add.S new file mode 120000 index 0000000000..2f72e5bb09 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_add.S @@ -0,0 +1 @@ +../amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..65ecfcf5ce --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_getparity.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_getparity.c new file mode 120000 index 0000000000..d5e8b184b4 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_getparity.c @@ -0,0 +1 @@ +../amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_invert.c new file mode 120000 index 0000000000..06cd19180a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_iseq.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_iseq.c new file mode 120000 index 0000000000..3175be3915 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_iseq.c @@ -0,0 +1 @@ +../amd64-64/fe25519_iseq.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_mul.S new file mode 120000 index 0000000000..3ab8e1cb60 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../amd64-maa4/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..ba6bfa7780 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../amd64-maa4/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_pack.c new file mode 120000 index 0000000000..c92109ac1d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_pow2523.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_pow2523.c new file mode 120000 index 0000000000..3eb9dd58ec --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_pow2523.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pow2523.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_setint.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_setint.c new file mode 120000 index 0000000000..6ae1104ea9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_setint.c @@ -0,0 +1 @@ +../amd64-64/fe25519_setint.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_square.S new file mode 120000 index 0000000000..0620c3b743 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_square.S @@ -0,0 +1 @@ +../amd64-maa4/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_sub.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_sub.S new file mode 120000 index 0000000000..5054d0b99e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_sub.S @@ -0,0 +1 @@ +../amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..98bfaced87 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519.h new file mode 120000 index 0000000000..8c73f0da6c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519.h @@ -0,0 +1 @@ +../amd64-mxaa/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_base_slide_multiples.data b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_base_slide_multiples.data new file mode 120000 index 0000000000..36c9553260 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_base_slide_multiples.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_slide_multiples.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_double_scalarmult_precompute.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_double_scalarmult_precompute.S new file mode 100644 index 0000000000..f46004cd0f --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_double_scalarmult_precompute.S @@ -0,0 +1,2191 @@ +// linker define ge25519_double_scalarmult_precompute +// linker use upmask1 upmask2 upmask3 upmask4 upmask5 upmask6 upmask7 +// linker use pmask1 pmask2 pmask3 pmask4 pmask5 pmask6 pmask7 pmask8 +// linker use EC2D0 EC2D1 EC2D2 EC2D3 mask63 vec19 vec608 vecmask47 vecmask52 + +/* Assembly for the precomputaion phase used in double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): + + movq %rsp,%r11 + andq $-32,%rsp + subq $416,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + decq %rdx + movq %rdx,56(%rsp) + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 32(%rsi),%r8 + movq 40(%rsi),%r9 + movq 48(%rsi),%r10 + movq 56(%rsi),%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + movq 64(%rsi),%r8 + movq 72(%rsi),%r9 + movq 80(%rsi),%r10 + movq 88(%rsi),%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsi),%r8 + movq 104(%rsi),%r9 + movq 112(%rsi),%r10 + movq 120(%rsi),%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + /* dbl p1p1 */ + + // square + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 8(%rdi),%r9,%r10 + + mulx 16(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 8(%rdi),%rdx + xorq %r14,%r14 + + mulx 16(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 8(%rdi),%rdx + mulx 24(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 24(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 0(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 8(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 16(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 24(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // square + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 40(%rdi),%r9,%r10 + + mulx 48(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 40(%rdi),%rdx + xorq %r14,%r14 + + mulx 48(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 40(%rdi),%rdx + mulx 56(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 56(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 32(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 40(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 48(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 56(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 72(%rdi),%r9,%r10 + + mulx 80(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 72(%rdi),%rdx + xorq %r14,%r14 + + mulx 80(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 72(%rdi),%rdx + mulx 88(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 88(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 64(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 72(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 80(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 88(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // sub + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // sub + movq $0,%r12 + movq $0,%r13 + movq $0,%r14 + movq $0,%r15 + + subq 96(%rsp),%r12 + sbbq 104(%rsp),%r13 + sbbq 112(%rsp),%r14 + sbbq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,160(%rsp) + movq %r13,168(%rsp) + movq %r14,176(%rsp) + movq %r15,184(%rsp) + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,224(%rsp) + movq %r13,232(%rsp) + movq %r14,240(%rsp) + movq %r15,248(%rsp) + + // sub + subq 96(%rsp),%r8 + sbbq 104(%rsp),%r9 + sbbq 112(%rsp),%r10 + sbbq 120(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 128(%rsp),%r12 + sbbq 136(%rsp),%r13 + sbbq 144(%rsp),%r14 + sbbq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // add + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + + addq 32(%rdi),%r8 + adcq 40(%rdi),%r9 + adcq 48(%rdi),%r10 + adcq 56(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + xorq %r13,%r13 + movq 96(%rsp),%rdx + + mulx 104(%rsp),%r9,%r10 + + mulx 112(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 120(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 104(%rsp),%rdx + xorq %r14,%r14 + + mulx 112(%rsp),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 104(%rsp),%rdx + mulx 120(%rsp),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 112(%rsp),%rdx + + mulx 120(%rsp),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 96(%rsp),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 104(%rsp),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 112(%rsp),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 120(%rsp),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + addq 160(%rsp),%r8 + adcq 168(%rsp),%r9 + adcq 176(%rsp),%r10 + adcq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r9,200(%rsp) + movq %r10,208(%rsp) + movq %r11,216(%rsp) + + /* p1p1 to p3 */ + + // convert to 5x4 form + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + vmovdqa 224(%rsp),%ymm10 + vmovdqa 192(%rsp),%ymm11 + + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm5 + + vpand pmask2(%rip),%ymm10,%ymm6 + vpsrlq $52,%ymm6,%ymm6 + vpand pmask3(%rip),%ymm11,%ymm7 + vpsllq $12,%ymm7,%ymm7 + vpor %ymm7,%ymm6,%ymm6 + + vpand pmask4(%rip),%ymm11,%ymm7 + vpsrlq $40,%ymm7,%ymm7 + vpand pmask5(%rip),%ymm12,%ymm8 + vpsllq $24,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask6(%rip),%ymm12,%ymm8 + vpsrlq $28,%ymm8,%ymm8 + vpand pmask7(%rip),%ymm13,%ymm9 + vpsllq $36,%ymm9,%ymm9 + vpor %ymm9,%ymm8,%ymm8 + + vpand pmask8(%rip),%ymm13,%ymm9 + vpsrlq $16,%ymm9,%ymm9 + + // convert to 5x4 form + vmovdqa 288(%rsp),%ymm0 + vmovdqa 256(%rsp),%ymm1 + vmovdqa 288(%rsp),%ymm2 + vmovdqa 256(%rsp),%ymm3 + + vpunpcklqdq %ymm1,%ymm0,%ymm12 + vpunpckhqdq %ymm1,%ymm0,%ymm13 + vpunpcklqdq %ymm3,%ymm2,%ymm14 + vpunpckhqdq %ymm3,%ymm2,%ymm15 + + vpermq $68,%ymm14,%ymm0 + vpblendd $240,%ymm0,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm0 + vpblendd $240,%ymm0,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm0 + vpblendd $240,%ymm14,%ymm0,%ymm12 + vpermq $238,%ymm13,%ymm0 + vpblendd $240,%ymm15,%ymm0,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $52,%ymm1,%ymm1 + vpand pmask3(%rip),%ymm11,%ymm2 + vpsllq $12,%ymm2,%ymm2 + vpor %ymm2,%ymm1,%ymm1 + + vpand pmask4(%rip),%ymm11,%ymm2 + vpsrlq $40,%ymm2,%ymm2 + vpand pmask5(%rip),%ymm12,%ymm3 + vpsllq $24,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask6(%rip),%ymm12,%ymm3 + vpsrlq $28,%ymm3,%ymm3 + vpand pmask7(%rip),%ymm13,%ymm4 + vpsllq $36,%ymm4,%ymm4 + vpor %ymm4,%ymm3,%ymm3 + + vpand pmask8(%rip),%ymm13,%ymm4 + vpsrlq $16,%ymm4,%ymm4 + + // mul4x1 + vpxorq %ymm10,%ymm10,%ymm10 + vpxorq %ymm11,%ymm11,%ymm11 + vpxorq %ymm12,%ymm12,%ymm12 + vpxorq %ymm13,%ymm13,%ymm13 + vpxorq %ymm14,%ymm14,%ymm14 + vpxorq %ymm15,%ymm15,%ymm15 + vpxorq %ymm16,%ymm16,%ymm16 + vpxorq %ymm17,%ymm17,%ymm17 + vpxorq %ymm18,%ymm18,%ymm18 + vpxorq %ymm19,%ymm19,%ymm19 + + vpxorq %ymm25,%ymm25,%ymm25 + vpxorq %ymm26,%ymm26,%ymm26 + vpxorq %ymm27,%ymm27,%ymm27 + vpxorq %ymm28,%ymm28,%ymm28 + vpxorq %ymm29,%ymm29,%ymm29 + vpxorq %ymm30,%ymm30,%ymm30 + vpxorq %ymm31,%ymm31,%ymm31 + + vpmadd52luq %ymm0,%ymm5,%ymm10 + vpmadd52huq %ymm0,%ymm5,%ymm11 + + vpmadd52luq %ymm0,%ymm6,%ymm25 + vpmadd52huq %ymm0,%ymm6,%ymm12 + vpmadd52luq %ymm1,%ymm5,%ymm25 + vpmadd52huq %ymm1,%ymm5,%ymm12 + + vpaddq %ymm25,%ymm11,%ymm11 + + vpmadd52luq %ymm0,%ymm7,%ymm26 + vpmadd52huq %ymm0,%ymm7,%ymm13 + vpmadd52luq %ymm1,%ymm6,%ymm26 + vpmadd52huq %ymm1,%ymm6,%ymm13 + vpmadd52luq %ymm2,%ymm5,%ymm26 + vpmadd52huq %ymm2,%ymm5,%ymm13 + + vpaddq %ymm26,%ymm12,%ymm12 + + vpmadd52luq %ymm0,%ymm8,%ymm27 + vpmadd52huq %ymm0,%ymm8,%ymm14 + vpmadd52luq %ymm1,%ymm7,%ymm27 + vpmadd52huq %ymm1,%ymm7,%ymm14 + vpmadd52luq %ymm2,%ymm6,%ymm27 + vpmadd52huq %ymm2,%ymm6,%ymm14 + vpmadd52luq %ymm3,%ymm5,%ymm27 + vpmadd52huq %ymm3,%ymm5,%ymm14 + + vpaddq %ymm27,%ymm13,%ymm13 + + vpmadd52luq %ymm0,%ymm9,%ymm28 + vpmadd52huq %ymm0,%ymm9,%ymm15 + vpmadd52luq %ymm1,%ymm8,%ymm28 + vpmadd52huq %ymm1,%ymm8,%ymm15 + vpmadd52luq %ymm2,%ymm7,%ymm28 + vpmadd52huq %ymm2,%ymm7,%ymm15 + vpmadd52luq %ymm3,%ymm6,%ymm28 + vpmadd52huq %ymm3,%ymm6,%ymm15 + vpmadd52luq %ymm4,%ymm5,%ymm28 + vpmadd52huq %ymm4,%ymm5,%ymm15 + + vpaddq %ymm28,%ymm14,%ymm14 + + vpmadd52luq %ymm1,%ymm9,%ymm29 + vpmadd52huq %ymm1,%ymm9,%ymm16 + vpmadd52luq %ymm2,%ymm8,%ymm29 + vpmadd52huq %ymm2,%ymm8,%ymm16 + vpmadd52luq %ymm3,%ymm7,%ymm29 + vpmadd52huq %ymm3,%ymm7,%ymm16 + vpmadd52luq %ymm4,%ymm6,%ymm29 + vpmadd52huq %ymm4,%ymm6,%ymm16 + + vpaddq %ymm29,%ymm15,%ymm15 + + vpmadd52luq %ymm2,%ymm9,%ymm30 + vpmadd52huq %ymm2,%ymm9,%ymm17 + vpmadd52luq %ymm3,%ymm8,%ymm30 + vpmadd52huq %ymm3,%ymm8,%ymm17 + vpmadd52luq %ymm4,%ymm7,%ymm30 + vpmadd52huq %ymm4,%ymm7,%ymm17 + + vpaddq %ymm30,%ymm16,%ymm16 + + vpmadd52luq %ymm3,%ymm9,%ymm31 + vpmadd52huq %ymm3,%ymm9,%ymm18 + vpmadd52luq %ymm4,%ymm8,%ymm31 + vpmadd52huq %ymm4,%ymm8,%ymm18 + + vpaddq %ymm31,%ymm17,%ymm17 + + vpmadd52luq %ymm4,%ymm9,%ymm18 + vpmadd52huq %ymm4,%ymm9,%ymm19 + + vpsrlq $52,%ymm15,%ymm22 + vpaddq %ymm22,%ymm16,%ymm16 + vpandq vecmask52(%rip),%ymm15,%ymm15 + vpmadd52luq vec608(%rip),%ymm15,%ymm10 + vpmadd52huq vec608(%rip),%ymm15,%ymm11 + + vpsrlq $52,%ymm16,%ymm22 + vpaddq %ymm22,%ymm17,%ymm17 + vpandq vecmask52(%rip),%ymm16,%ymm16 + vpmadd52luq vec608(%rip),%ymm16,%ymm11 + vpmadd52huq vec608(%rip),%ymm16,%ymm12 + + vpsrlq $52,%ymm17,%ymm22 + vpaddq %ymm22,%ymm18,%ymm18 + vpandq vecmask52(%rip),%ymm17,%ymm17 + vpmadd52luq vec608(%rip),%ymm17,%ymm12 + vpmadd52huq vec608(%rip),%ymm17,%ymm13 + + vpsrlq $52,%ymm18,%ymm22 + vpaddq %ymm22,%ymm19,%ymm19 + vpandq vecmask52(%rip),%ymm18,%ymm18 + vpmadd52luq vec608(%rip),%ymm18,%ymm13 + vpmadd52huq vec608(%rip),%ymm18,%ymm14 + + vpxorq %ymm15,%ymm15,%ymm15 + vpmadd52luq vec608(%rip),%ymm19,%ymm14 + vpmadd52huq vec608(%rip),%ymm19,%ymm15 + + vpmadd52luq vec608(%rip),%ymm15,%ymm10 + + vpsrlq $52,%ymm13,%ymm22 + vpaddq %ymm22,%ymm14,%ymm14 + vpandq vecmask52(%rip),%ymm13,%ymm13 + + vpsrlq $47,%ymm14,%ymm22 + vpandq vecmask47(%rip),%ymm14,%ymm14 + vpmadd52luq vec19(%rip),%ymm22,%ymm10 + + vpsrlq $52,%ymm10,%ymm22 + vpaddq %ymm22,%ymm11,%ymm11 + vpandq vecmask52(%rip),%ymm10,%ymm10 + + vpsrlq $52,%ymm11,%ymm22 + vpaddq %ymm22,%ymm12,%ymm12 + vpandq vecmask52(%rip),%ymm11,%ymm11 + + vpsrlq $52,%ymm12,%ymm22 + vpaddq %ymm22,%ymm13,%ymm13 + vpandq vecmask52(%rip),%ymm12,%ymm12 + + vpsrlq $52,%ymm13,%ymm22 + vpaddq %ymm22,%ymm14,%ymm14 + vpandq vecmask52(%rip),%ymm13,%ymm13 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm10,%ymm0 + vpand upmask2(%rip),%ymm11,%ymm1 + vpsllq $52,%ymm1,%ymm1 + vpor %ymm1,%ymm0,%ymm0 + + vpand upmask3(%rip),%ymm11,%ymm1 + vpsrlq $12,%ymm1,%ymm1 + vpand upmask4(%rip),%ymm12,%ymm2 + vpsllq $40,%ymm2,%ymm2 + vpor %ymm2,%ymm1,%ymm1 + + vpand upmask5(%rip),%ymm12,%ymm2 + vpsrlq $24,%ymm2,%ymm2 + vpand upmask6(%rip),%ymm13,%ymm3 + vpsllq $28,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand upmask7(%rip),%ymm13,%ymm3 + vpsrlq $36,%ymm3,%ymm3 + vpand upmask1(%rip),%ymm14,%ymm4 + vpsllq $16,%ymm4,%ymm4 + vpor %ymm4,%ymm3,%ymm3 + + vpunpcklqdq %ymm1,%ymm0,%ymm12 + vpunpckhqdq %ymm1,%ymm0,%ymm13 + vpunpcklqdq %ymm3,%ymm2,%ymm14 + vpunpckhqdq %ymm3,%ymm2,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm0 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm1 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm2 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm3 + + vmovdqa %ymm0,64(%rsp) + vmovdqa %ymm1,96(%rsp) + vmovdqa %ymm2,128(%rsp) + vmovdqa %ymm3,160(%rsp) + + // Convert pre[0] to projective Niels representation + movq 0(%rdi),%rbx + movq 8(%rdi),%rcx + movq 16(%rdi),%rbp + movq 24(%rdi),%rsi + + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + // mul + xorq %r13,%r13 + movq EC2D0(%rip),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq EC2D1(%rip),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq EC2D2(%rip),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq EC2D3(%rip),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + movq $0,384(%rsp) + +.L: + // pnielsadd_p1p1 + + movq 96(%rsp),%r8 + movq 104(%rsp),%r9 + movq 112(%rsp),%r10 + movq 120(%rsp),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + addq 64(%rsp),%r12 + adcq 72(%rsp),%r13 + adcq 80(%rsp),%r14 + adcq 88(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // mul + xorq %r13,%r13 + movq 320(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 328(%rsp),%rdx + + mulx 0(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 8(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 16(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 24(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 336(%rsp),%rdx + + mulx 0(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 8(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 16(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 24(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 344(%rsp),%rdx + + mulx 0(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 8(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 16(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 24(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // mul + xorq %r13,%r13 + movq 352(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 360(%rsp),%rdx + + mulx 32(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 40(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 48(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 56(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 368(%rsp),%rdx + + mulx 32(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 40(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 48(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 56(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 376(%rsp),%rdx + + mulx 32(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 40(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 48(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 56(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r9 + adcq 336(%rsp),%r10 + adcq 344(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 320(%rsp),%r12 + sbbq 328(%rsp),%r13 + sbbq 336(%rsp),%r14 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,192(%rsp) + movq %r13,200(%rsp) + movq %r14,208(%rsp) + movq %r15,216(%rsp) + + // mul + xorq %r13,%r13 + movq 160(%rsp),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 168(%rsp),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 176(%rsp),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 184(%rsp),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // mul + xorq %r13,%r13 + movq 128(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 136(%rsp),%rdx + + mulx 64(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 72(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 80(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 88(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 144(%rsp),%rdx + + mulx 64(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 72(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 80(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 88(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 152(%rsp),%rdx + + mulx 64(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 72(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 80(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 88(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r9 + adcq 336(%rsp),%r10 + adcq 344(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,224(%rsp) + movq %r9,232(%rsp) + movq %r10,240(%rsp) + movq %r11,248(%rsp) + + // sub + subq 320(%rsp),%r12 + sbbq 328(%rsp),%r13 + sbbq 336(%rsp),%r14 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + /* p1p1 to p3 */ + + // convert to 5x4 form + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + vmovdqa 224(%rsp),%ymm10 + vmovdqa 192(%rsp),%ymm11 + + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm5 + + vpand pmask2(%rip),%ymm10,%ymm6 + vpsrlq $52,%ymm6,%ymm6 + vpand pmask3(%rip),%ymm11,%ymm7 + vpsllq $12,%ymm7,%ymm7 + vpor %ymm7,%ymm6,%ymm6 + + vpand pmask4(%rip),%ymm11,%ymm7 + vpsrlq $40,%ymm7,%ymm7 + vpand pmask5(%rip),%ymm12,%ymm8 + vpsllq $24,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask6(%rip),%ymm12,%ymm8 + vpsrlq $28,%ymm8,%ymm8 + vpand pmask7(%rip),%ymm13,%ymm9 + vpsllq $36,%ymm9,%ymm9 + vpor %ymm9,%ymm8,%ymm8 + + vpand pmask8(%rip),%ymm13,%ymm9 + vpsrlq $16,%ymm9,%ymm9 + + // convert to 5x4 form + vmovdqa 288(%rsp),%ymm0 + vmovdqa 256(%rsp),%ymm1 + vmovdqa 288(%rsp),%ymm2 + vmovdqa 256(%rsp),%ymm3 + + vpunpcklqdq %ymm1,%ymm0,%ymm12 + vpunpckhqdq %ymm1,%ymm0,%ymm13 + vpunpcklqdq %ymm3,%ymm2,%ymm14 + vpunpckhqdq %ymm3,%ymm2,%ymm15 + + vpermq $68,%ymm14,%ymm0 + vpblendd $240,%ymm0,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm0 + vpblendd $240,%ymm0,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm0 + vpblendd $240,%ymm14,%ymm0,%ymm12 + vpermq $238,%ymm13,%ymm0 + vpblendd $240,%ymm15,%ymm0,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $52,%ymm1,%ymm1 + vpand pmask3(%rip),%ymm11,%ymm2 + vpsllq $12,%ymm2,%ymm2 + vpor %ymm2,%ymm1,%ymm1 + + vpand pmask4(%rip),%ymm11,%ymm2 + vpsrlq $40,%ymm2,%ymm2 + vpand pmask5(%rip),%ymm12,%ymm3 + vpsllq $24,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask6(%rip),%ymm12,%ymm3 + vpsrlq $28,%ymm3,%ymm3 + vpand pmask7(%rip),%ymm13,%ymm4 + vpsllq $36,%ymm4,%ymm4 + vpor %ymm4,%ymm3,%ymm3 + + vpand pmask8(%rip),%ymm13,%ymm4 + vpsrlq $16,%ymm4,%ymm4 + + // mul4x1 + vpxorq %ymm10,%ymm10,%ymm10 + vpxorq %ymm11,%ymm11,%ymm11 + vpxorq %ymm12,%ymm12,%ymm12 + vpxorq %ymm13,%ymm13,%ymm13 + vpxorq %ymm14,%ymm14,%ymm14 + vpxorq %ymm15,%ymm15,%ymm15 + vpxorq %ymm16,%ymm16,%ymm16 + vpxorq %ymm17,%ymm17,%ymm17 + vpxorq %ymm18,%ymm18,%ymm18 + vpxorq %ymm19,%ymm19,%ymm19 + + vpxorq %ymm25,%ymm25,%ymm25 + vpxorq %ymm26,%ymm26,%ymm26 + vpxorq %ymm27,%ymm27,%ymm27 + vpxorq %ymm28,%ymm28,%ymm28 + vpxorq %ymm29,%ymm29,%ymm29 + vpxorq %ymm30,%ymm30,%ymm30 + vpxorq %ymm31,%ymm31,%ymm31 + + vpmadd52luq %ymm0,%ymm5,%ymm10 + vpmadd52huq %ymm0,%ymm5,%ymm11 + + vpmadd52luq %ymm0,%ymm6,%ymm25 + vpmadd52huq %ymm0,%ymm6,%ymm12 + vpmadd52luq %ymm1,%ymm5,%ymm25 + vpmadd52huq %ymm1,%ymm5,%ymm12 + + vpaddq %ymm25,%ymm11,%ymm11 + + vpmadd52luq %ymm0,%ymm7,%ymm26 + vpmadd52huq %ymm0,%ymm7,%ymm13 + vpmadd52luq %ymm1,%ymm6,%ymm26 + vpmadd52huq %ymm1,%ymm6,%ymm13 + vpmadd52luq %ymm2,%ymm5,%ymm26 + vpmadd52huq %ymm2,%ymm5,%ymm13 + + vpaddq %ymm26,%ymm12,%ymm12 + + vpmadd52luq %ymm0,%ymm8,%ymm27 + vpmadd52huq %ymm0,%ymm8,%ymm14 + vpmadd52luq %ymm1,%ymm7,%ymm27 + vpmadd52huq %ymm1,%ymm7,%ymm14 + vpmadd52luq %ymm2,%ymm6,%ymm27 + vpmadd52huq %ymm2,%ymm6,%ymm14 + vpmadd52luq %ymm3,%ymm5,%ymm27 + vpmadd52huq %ymm3,%ymm5,%ymm14 + + vpaddq %ymm27,%ymm13,%ymm13 + + vpmadd52luq %ymm0,%ymm9,%ymm28 + vpmadd52huq %ymm0,%ymm9,%ymm15 + vpmadd52luq %ymm1,%ymm8,%ymm28 + vpmadd52huq %ymm1,%ymm8,%ymm15 + vpmadd52luq %ymm2,%ymm7,%ymm28 + vpmadd52huq %ymm2,%ymm7,%ymm15 + vpmadd52luq %ymm3,%ymm6,%ymm28 + vpmadd52huq %ymm3,%ymm6,%ymm15 + vpmadd52luq %ymm4,%ymm5,%ymm28 + vpmadd52huq %ymm4,%ymm5,%ymm15 + + vpaddq %ymm28,%ymm14,%ymm14 + + vpmadd52luq %ymm1,%ymm9,%ymm29 + vpmadd52huq %ymm1,%ymm9,%ymm16 + vpmadd52luq %ymm2,%ymm8,%ymm29 + vpmadd52huq %ymm2,%ymm8,%ymm16 + vpmadd52luq %ymm3,%ymm7,%ymm29 + vpmadd52huq %ymm3,%ymm7,%ymm16 + vpmadd52luq %ymm4,%ymm6,%ymm29 + vpmadd52huq %ymm4,%ymm6,%ymm16 + + vpaddq %ymm29,%ymm15,%ymm15 + + vpmadd52luq %ymm2,%ymm9,%ymm30 + vpmadd52huq %ymm2,%ymm9,%ymm17 + vpmadd52luq %ymm3,%ymm8,%ymm30 + vpmadd52huq %ymm3,%ymm8,%ymm17 + vpmadd52luq %ymm4,%ymm7,%ymm30 + vpmadd52huq %ymm4,%ymm7,%ymm17 + + vpaddq %ymm30,%ymm16,%ymm16 + + vpmadd52luq %ymm3,%ymm9,%ymm31 + vpmadd52huq %ymm3,%ymm9,%ymm18 + vpmadd52luq %ymm4,%ymm8,%ymm31 + vpmadd52huq %ymm4,%ymm8,%ymm18 + + vpaddq %ymm31,%ymm17,%ymm17 + + vpmadd52luq %ymm4,%ymm9,%ymm18 + vpmadd52huq %ymm4,%ymm9,%ymm19 + + vpsrlq $52,%ymm15,%ymm22 + vpaddq %ymm22,%ymm16,%ymm16 + vpandq vecmask52(%rip),%ymm15,%ymm15 + vpmadd52luq vec608(%rip),%ymm15,%ymm10 + vpmadd52huq vec608(%rip),%ymm15,%ymm11 + + vpsrlq $52,%ymm16,%ymm22 + vpaddq %ymm22,%ymm17,%ymm17 + vpandq vecmask52(%rip),%ymm16,%ymm16 + vpmadd52luq vec608(%rip),%ymm16,%ymm11 + vpmadd52huq vec608(%rip),%ymm16,%ymm12 + + vpsrlq $52,%ymm17,%ymm22 + vpaddq %ymm22,%ymm18,%ymm18 + vpandq vecmask52(%rip),%ymm17,%ymm17 + vpmadd52luq vec608(%rip),%ymm17,%ymm12 + vpmadd52huq vec608(%rip),%ymm17,%ymm13 + + vpsrlq $52,%ymm18,%ymm22 + vpaddq %ymm22,%ymm19,%ymm19 + vpandq vecmask52(%rip),%ymm18,%ymm18 + vpmadd52luq vec608(%rip),%ymm18,%ymm13 + vpmadd52huq vec608(%rip),%ymm18,%ymm14 + + vpxorq %ymm15,%ymm15,%ymm15 + vpmadd52luq vec608(%rip),%ymm19,%ymm14 + vpmadd52huq vec608(%rip),%ymm19,%ymm15 + + vpmadd52luq vec608(%rip),%ymm15,%ymm10 + + vpsrlq $52,%ymm13,%ymm22 + vpaddq %ymm22,%ymm14,%ymm14 + vpandq vecmask52(%rip),%ymm13,%ymm13 + + vpsrlq $47,%ymm14,%ymm22 + vpandq vecmask47(%rip),%ymm14,%ymm14 + vpmadd52luq vec19(%rip),%ymm22,%ymm10 + + vpsrlq $52,%ymm10,%ymm22 + vpaddq %ymm22,%ymm11,%ymm11 + vpandq vecmask52(%rip),%ymm10,%ymm10 + + vpsrlq $52,%ymm11,%ymm22 + vpaddq %ymm22,%ymm12,%ymm12 + vpandq vecmask52(%rip),%ymm11,%ymm11 + + vpsrlq $52,%ymm12,%ymm22 + vpaddq %ymm22,%ymm13,%ymm13 + vpandq vecmask52(%rip),%ymm12,%ymm12 + + vpsrlq $52,%ymm13,%ymm22 + vpaddq %ymm22,%ymm14,%ymm14 + vpandq vecmask52(%rip),%ymm13,%ymm13 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm10,%ymm0 + vpand upmask2(%rip),%ymm11,%ymm1 + vpsllq $52,%ymm1,%ymm1 + vpor %ymm1,%ymm0,%ymm0 + + vpand upmask3(%rip),%ymm11,%ymm1 + vpsrlq $12,%ymm1,%ymm1 + vpand upmask4(%rip),%ymm12,%ymm2 + vpsllq $40,%ymm2,%ymm2 + vpor %ymm2,%ymm1,%ymm1 + + vpand upmask5(%rip),%ymm12,%ymm2 + vpsrlq $24,%ymm2,%ymm2 + vpand upmask6(%rip),%ymm13,%ymm3 + vpsllq $28,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand upmask7(%rip),%ymm13,%ymm3 + vpsrlq $36,%ymm3,%ymm3 + vpand upmask1(%rip),%ymm14,%ymm4 + vpsllq $16,%ymm4,%ymm4 + vpor %ymm4,%ymm3,%ymm3 + + vpunpcklqdq %ymm1,%ymm0,%ymm12 + vpunpckhqdq %ymm1,%ymm0,%ymm13 + vpunpcklqdq %ymm3,%ymm2,%ymm14 + vpunpckhqdq %ymm3,%ymm2,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm0 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm1 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm2 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm3 + + vmovdqa %ymm0,128(%rdi) + vmovdqa %ymm1,160(%rdi) + vmovdqa %ymm2,192(%rdi) + vmovdqa %ymm3,224(%rdi) + + // Convert pre[i1] to projective Niels representation + movq 128(%rdi),%rbx + movq 136(%rdi),%rcx + movq 144(%rdi),%rbp + movq 152(%rdi),%rsi + + movq 160(%rdi),%r8 + movq 168(%rdi),%r9 + movq 176(%rdi),%r10 + movq 184(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r8,128(%rdi) + movq %r9,136(%rdi) + movq %r10,144(%rdi) + movq %r11,152(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,160(%rdi) + movq %r13,168(%rdi) + movq %r14,176(%rdi) + movq %r15,184(%rdi) + + // mul + xorq %r13,%r13 + movq EC2D0(%rip),%rdx + + mulx 224(%rdi),%r8,%r9 + mulx 232(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 240(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 248(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq EC2D1(%rip),%rdx + + mulx 224(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 232(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 240(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 248(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq EC2D2(%rip),%rdx + + mulx 224(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 232(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 240(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 248(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq EC2D3(%rip),%rdx + + mulx 224(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 240(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 248(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,224(%rdi) + movq %r9,232(%rdi) + movq %r10,240(%rdi) + movq %r11,248(%rdi) + + addq $128,%rdi + + movq 384(%rsp),%r8 + incq %r8 + movq %r8,384(%rsp) + + cmpq 56(%rsp),%r8 + + jl .L + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_double_scalarmult_process.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_double_scalarmult_process.S new file mode 100644 index 0000000000..cbf324517c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_double_scalarmult_process.S @@ -0,0 +1,4448 @@ +// linker define ge25519_double_scalarmult_process +// linker use upmask1 upmask2 upmask3 upmask4 upmask5 upmask6 upmask7 +// linker use pmask1 pmask2 pmask3 pmask4 pmask5 pmask6 pmask7 pmask8 +// linker use mask63 vec19 vec608 vecmask47 vecmask52 + +/* Assembly for double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): + + movq %rsp,%r11 + andq $-32,%rsp + subq $480,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + // setneutral + movq $0,%rax + movq $1,%rbx + + movq %rax,0(%rdi) + movq %rax,8(%rdi) + movq %rax,16(%rdi) + movq %rax,24(%rdi) + + movq %rbx,32(%rdi) + movq %rax,40(%rdi) + movq %rax,48(%rdi) + movq %rax,56(%rdi) + + movq %rbx,64(%rdi) + movq %rax,72(%rdi) + movq %rax,80(%rdi) + movq %rax,88(%rdi) + + movq %rax,96(%rdi) + movq %rax,104(%rdi) + movq %rax,112(%rdi) + movq %rax,120(%rdi) + + movq $255,%rax + addq $255,%rsi + addq $255,%rdx + + movq %rdi,56(%rsp) + movq %rcx,64(%rsp) + movq %r8,72(%rsp) + +.L1: + movb 0(%rsi),%r14b + movb 0(%rdx),%r15b + + cmpb $0,%r14b + jg .L2 + + cmpb $0,%r15b + jg .L2 + + decq %rsi + decq %rdx + + decq %rax + cmpq $0,%rax + + jge .L1 + + cmpq $0,%rax + jl .L10 + +.L2: + movq %rsi,80(%rsp) + movq %rdx,88(%rsp) + movq %rax,96(%rsp) + +.L3: + /* dbl p1p1 */ + + // square + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 8(%rdi),%r9,%r10 + + mulx 16(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 8(%rdi),%rdx + xorq %r14,%r14 + + mulx 16(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 8(%rdi),%rdx + mulx 24(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 24(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 0(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 8(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 16(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 24(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // square + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 40(%rdi),%r9,%r10 + + mulx 48(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 40(%rdi),%rdx + xorq %r14,%r14 + + mulx 48(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 40(%rdi),%rdx + mulx 56(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 56(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 32(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 40(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 48(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 56(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,160(%rsp) + movq %r9,168(%rsp) + movq %r10,176(%rsp) + movq %r11,184(%rsp) + + // square + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 72(%rdi),%r9,%r10 + + mulx 80(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 72(%rdi),%rdx + xorq %r14,%r14 + + mulx 80(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 72(%rdi),%rdx + mulx 88(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 88(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 64(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 72(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 80(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 88(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r9,200(%rsp) + movq %r10,208(%rsp) + movq %r11,216(%rsp) + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 160(%rsp),%r8 + sbbq 168(%rsp),%r9 + sbbq 176(%rsp),%r10 + sbbq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // add + addq 160(%rsp),%r12 + adcq 168(%rsp),%r13 + adcq 176(%rsp),%r14 + adcq 184(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // sub + subq 192(%rsp),%r12 + sbbq 200(%rsp),%r13 + sbbq 208(%rsp),%r14 + sbbq 216(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + addq 32(%rdi),%rbx + adcq 40(%rdi),%rbp + adcq 48(%rdi),%rcx + adcq 56(%rdi),%rsi + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%rbx + adcq %rdx,%rbp + adcq %rdx,%rcx + adcq %rdx,%rsi + + cmovc %rax,%rdx + addq %rdx,%rbx + + // square + xorq %r13,%r13 + movq %rbx,%rdx + + mulx %rbp,%r9,%r10 + + mulx %rcx,%r8,%r11 + adcx %r8,%r10 + + mulx %rsi,%r8,%r12 + adcx %r8,%r11 + adcx %r13,%r12 + + movq %rbp,%rdx + xorq %r14,%r14 + + mulx %rcx,%r8,%rdx + adcx %r8,%r11 + adox %rdx,%r12 + + movq %rbp,%rdx + mulx %rsi,%r8,%rdx + adcx %r8,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq %rcx,%rdx + + mulx %rsi,%r8,%r14 + adcx %r8,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq %rbx,%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq %rbp,%rdx + mulx %rdx,%rax,%rdx + adcx %rax,%r10 + adcx %rdx,%r11 + + movq %rcx,%rdx + mulx %rdx,%rax,%rdx + adcx %rax,%r12 + adcx %rdx,%r13 + + movq %rsi,%rdx + mulx %rdx,%rax,%rdx + adcx %rax,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + addq 128(%rsp),%r8 + adcq 136(%rsp),%r9 + adcq 144(%rsp),%r10 + adcq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // sub + subq 160(%rsp),%r8 + sbbq 168(%rsp),%r9 + sbbq 176(%rsp),%r10 + sbbq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + movq 80(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,80(%rsp) + movq 64(%rsp),%rdi + + cmpb $0,%r14b + jg .L4 + jl .L5 + je .L6 + +.L4: + /* p1p1 to p3 */ + + // convert to 5x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm5 + + vpand pmask2(%rip),%ymm10,%ymm6 + vpsrlq $52,%ymm6,%ymm6 + vpand pmask3(%rip),%ymm11,%ymm7 + vpsllq $12,%ymm7,%ymm7 + vpor %ymm7,%ymm6,%ymm6 + + vpand pmask4(%rip),%ymm11,%ymm7 + vpsrlq $40,%ymm7,%ymm7 + vpand pmask5(%rip),%ymm12,%ymm8 + vpsllq $24,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask6(%rip),%ymm12,%ymm8 + vpsrlq $28,%ymm8,%ymm8 + vpand pmask7(%rip),%ymm13,%ymm9 + vpsllq $36,%ymm9,%ymm9 + vpor %ymm9,%ymm8,%ymm8 + + vpand pmask8(%rip),%ymm13,%ymm9 + vpsrlq $16,%ymm9,%ymm9 + + // convert to 5x4 form + vmovdqa 352(%rsp),%ymm0 + vmovdqa 320(%rsp),%ymm1 + vmovdqa 352(%rsp),%ymm2 + vmovdqa 320(%rsp),%ymm3 + + vpunpcklqdq %ymm1,%ymm0,%ymm12 + vpunpckhqdq %ymm1,%ymm0,%ymm13 + vpunpcklqdq %ymm3,%ymm2,%ymm14 + vpunpckhqdq %ymm3,%ymm2,%ymm15 + + vpermq $68,%ymm14,%ymm0 + vpblendd $240,%ymm0,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm0 + vpblendd $240,%ymm0,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm0 + vpblendd $240,%ymm14,%ymm0,%ymm12 + vpermq $238,%ymm13,%ymm0 + vpblendd $240,%ymm15,%ymm0,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $52,%ymm1,%ymm1 + vpand pmask3(%rip),%ymm11,%ymm2 + vpsllq $12,%ymm2,%ymm2 + vpor %ymm2,%ymm1,%ymm1 + + vpand pmask4(%rip),%ymm11,%ymm2 + vpsrlq $40,%ymm2,%ymm2 + vpand pmask5(%rip),%ymm12,%ymm3 + vpsllq $24,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask6(%rip),%ymm12,%ymm3 + vpsrlq $28,%ymm3,%ymm3 + vpand pmask7(%rip),%ymm13,%ymm4 + vpsllq $36,%ymm4,%ymm4 + vpor %ymm4,%ymm3,%ymm3 + + vpand pmask8(%rip),%ymm13,%ymm4 + vpsrlq $16,%ymm4,%ymm4 + + // mul4x1 + vpxorq %ymm10,%ymm10,%ymm10 + vpxorq %ymm11,%ymm11,%ymm11 + vpxorq %ymm12,%ymm12,%ymm12 + vpxorq %ymm13,%ymm13,%ymm13 + vpxorq %ymm14,%ymm14,%ymm14 + vpxorq %ymm15,%ymm15,%ymm15 + vpxorq %ymm16,%ymm16,%ymm16 + vpxorq %ymm17,%ymm17,%ymm17 + vpxorq %ymm18,%ymm18,%ymm18 + vpxorq %ymm19,%ymm19,%ymm19 + + vpxorq %ymm25,%ymm25,%ymm25 + vpxorq %ymm26,%ymm26,%ymm26 + vpxorq %ymm27,%ymm27,%ymm27 + vpxorq %ymm28,%ymm28,%ymm28 + vpxorq %ymm29,%ymm29,%ymm29 + vpxorq %ymm30,%ymm30,%ymm30 + vpxorq %ymm31,%ymm31,%ymm31 + + vpmadd52luq %ymm0,%ymm5,%ymm10 + vpmadd52huq %ymm0,%ymm5,%ymm11 + + vpmadd52luq %ymm0,%ymm6,%ymm25 + vpmadd52huq %ymm0,%ymm6,%ymm12 + vpmadd52luq %ymm1,%ymm5,%ymm25 + vpmadd52huq %ymm1,%ymm5,%ymm12 + + vpaddq %ymm25,%ymm11,%ymm11 + + vpmadd52luq %ymm0,%ymm7,%ymm26 + vpmadd52huq %ymm0,%ymm7,%ymm13 + vpmadd52luq %ymm1,%ymm6,%ymm26 + vpmadd52huq %ymm1,%ymm6,%ymm13 + vpmadd52luq %ymm2,%ymm5,%ymm26 + vpmadd52huq %ymm2,%ymm5,%ymm13 + + vpaddq %ymm26,%ymm12,%ymm12 + + vpmadd52luq %ymm0,%ymm8,%ymm27 + vpmadd52huq %ymm0,%ymm8,%ymm14 + vpmadd52luq %ymm1,%ymm7,%ymm27 + vpmadd52huq %ymm1,%ymm7,%ymm14 + vpmadd52luq %ymm2,%ymm6,%ymm27 + vpmadd52huq %ymm2,%ymm6,%ymm14 + vpmadd52luq %ymm3,%ymm5,%ymm27 + vpmadd52huq %ymm3,%ymm5,%ymm14 + + vpaddq %ymm27,%ymm13,%ymm13 + + vpmadd52luq %ymm0,%ymm9,%ymm28 + vpmadd52huq %ymm0,%ymm9,%ymm15 + vpmadd52luq %ymm1,%ymm8,%ymm28 + vpmadd52huq %ymm1,%ymm8,%ymm15 + vpmadd52luq %ymm2,%ymm7,%ymm28 + vpmadd52huq %ymm2,%ymm7,%ymm15 + vpmadd52luq %ymm3,%ymm6,%ymm28 + vpmadd52huq %ymm3,%ymm6,%ymm15 + vpmadd52luq %ymm4,%ymm5,%ymm28 + vpmadd52huq %ymm4,%ymm5,%ymm15 + + vpaddq %ymm28,%ymm14,%ymm14 + + vpmadd52luq %ymm1,%ymm9,%ymm29 + vpmadd52huq %ymm1,%ymm9,%ymm16 + vpmadd52luq %ymm2,%ymm8,%ymm29 + vpmadd52huq %ymm2,%ymm8,%ymm16 + vpmadd52luq %ymm3,%ymm7,%ymm29 + vpmadd52huq %ymm3,%ymm7,%ymm16 + vpmadd52luq %ymm4,%ymm6,%ymm29 + vpmadd52huq %ymm4,%ymm6,%ymm16 + + vpaddq %ymm29,%ymm15,%ymm15 + + vpmadd52luq %ymm2,%ymm9,%ymm30 + vpmadd52huq %ymm2,%ymm9,%ymm17 + vpmadd52luq %ymm3,%ymm8,%ymm30 + vpmadd52huq %ymm3,%ymm8,%ymm17 + vpmadd52luq %ymm4,%ymm7,%ymm30 + vpmadd52huq %ymm4,%ymm7,%ymm17 + + vpaddq %ymm30,%ymm16,%ymm16 + + vpmadd52luq %ymm3,%ymm9,%ymm31 + vpmadd52huq %ymm3,%ymm9,%ymm18 + vpmadd52luq %ymm4,%ymm8,%ymm31 + vpmadd52huq %ymm4,%ymm8,%ymm18 + + vpaddq %ymm31,%ymm17,%ymm17 + + vpmadd52luq %ymm4,%ymm9,%ymm18 + vpmadd52huq %ymm4,%ymm9,%ymm19 + + vpsrlq $52,%ymm15,%ymm22 + vpaddq %ymm22,%ymm16,%ymm16 + vpandq vecmask52(%rip),%ymm15,%ymm15 + vpmadd52luq vec608(%rip),%ymm15,%ymm10 + vpmadd52huq vec608(%rip),%ymm15,%ymm11 + + vpsrlq $52,%ymm16,%ymm22 + vpaddq %ymm22,%ymm17,%ymm17 + vpandq vecmask52(%rip),%ymm16,%ymm16 + vpmadd52luq vec608(%rip),%ymm16,%ymm11 + vpmadd52huq vec608(%rip),%ymm16,%ymm12 + + vpsrlq $52,%ymm17,%ymm22 + vpaddq %ymm22,%ymm18,%ymm18 + vpandq vecmask52(%rip),%ymm17,%ymm17 + vpmadd52luq vec608(%rip),%ymm17,%ymm12 + vpmadd52huq vec608(%rip),%ymm17,%ymm13 + + vpsrlq $52,%ymm18,%ymm22 + vpaddq %ymm22,%ymm19,%ymm19 + vpandq vecmask52(%rip),%ymm18,%ymm18 + vpmadd52luq vec608(%rip),%ymm18,%ymm13 + vpmadd52huq vec608(%rip),%ymm18,%ymm14 + + vpxorq %ymm15,%ymm15,%ymm15 + vpmadd52luq vec608(%rip),%ymm19,%ymm14 + vpmadd52huq vec608(%rip),%ymm19,%ymm15 + + vpmadd52luq vec608(%rip),%ymm15,%ymm10 + + vpsrlq $52,%ymm13,%ymm22 + vpaddq %ymm22,%ymm14,%ymm14 + vpandq vecmask52(%rip),%ymm13,%ymm13 + + vpsrlq $47,%ymm14,%ymm22 + vpandq vecmask47(%rip),%ymm14,%ymm14 + vpmadd52luq vec19(%rip),%ymm22,%ymm10 + + vpsrlq $52,%ymm10,%ymm22 + vpaddq %ymm22,%ymm11,%ymm11 + vpandq vecmask52(%rip),%ymm10,%ymm10 + + vpsrlq $52,%ymm11,%ymm22 + vpaddq %ymm22,%ymm12,%ymm12 + vpandq vecmask52(%rip),%ymm11,%ymm11 + + vpsrlq $52,%ymm12,%ymm22 + vpaddq %ymm22,%ymm13,%ymm13 + vpandq vecmask52(%rip),%ymm12,%ymm12 + + vpsrlq $52,%ymm13,%ymm22 + vpaddq %ymm22,%ymm14,%ymm14 + vpandq vecmask52(%rip),%ymm13,%ymm13 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm10,%ymm0 + vpand upmask2(%rip),%ymm11,%ymm1 + vpsllq $52,%ymm1,%ymm1 + vpor %ymm1,%ymm0,%ymm0 + + vpand upmask3(%rip),%ymm11,%ymm1 + vpsrlq $12,%ymm1,%ymm1 + vpand upmask4(%rip),%ymm12,%ymm2 + vpsllq $40,%ymm2,%ymm2 + vpor %ymm2,%ymm1,%ymm1 + + vpand upmask5(%rip),%ymm12,%ymm2 + vpsrlq $24,%ymm2,%ymm2 + vpand upmask6(%rip),%ymm13,%ymm3 + vpsllq $28,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand upmask7(%rip),%ymm13,%ymm3 + vpsrlq $36,%ymm3,%ymm3 + vpand upmask1(%rip),%ymm14,%ymm4 + vpsllq $16,%ymm4,%ymm4 + vpor %ymm4,%ymm3,%ymm3 + + vpunpcklqdq %ymm1,%ymm0,%ymm12 + vpunpckhqdq %ymm1,%ymm0,%ymm13 + vpunpcklqdq %ymm3,%ymm2,%ymm14 + vpunpckhqdq %ymm3,%ymm2,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm0 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm1 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm2 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm3 + + vmovdqa %ymm0,128(%rsp) + vmovdqa %ymm1,160(%rsp) + vmovdqa %ymm2,192(%rsp) + vmovdqa %ymm3,224(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $128,%r14,%r14 + addq %r14,%rdi + + /* pnielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 384(%rsp),%r8,%r9 + mulx 392(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 400(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 408(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 416(%rsp),%r8,%r9 + mulx 424(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 432(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 440(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + xorq %r13,%r13 + movq 96(%rdi),%rdx + + mulx 224(%rsp),%r8,%r9 + mulx 232(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 240(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 248(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 104(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 112(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 120(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 192(%rsp),%r8,%r9 + mulx 200(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 208(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 216(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 72(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 88(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + jmp .L6 + +.L5: + /* p1p1 to p3 */ + + // convert to 5x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm5 + + vpand pmask2(%rip),%ymm10,%ymm6 + vpsrlq $52,%ymm6,%ymm6 + vpand pmask3(%rip),%ymm11,%ymm7 + vpsllq $12,%ymm7,%ymm7 + vpor %ymm7,%ymm6,%ymm6 + + vpand pmask4(%rip),%ymm11,%ymm7 + vpsrlq $40,%ymm7,%ymm7 + vpand pmask5(%rip),%ymm12,%ymm8 + vpsllq $24,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask6(%rip),%ymm12,%ymm8 + vpsrlq $28,%ymm8,%ymm8 + vpand pmask7(%rip),%ymm13,%ymm9 + vpsllq $36,%ymm9,%ymm9 + vpor %ymm9,%ymm8,%ymm8 + + vpand pmask8(%rip),%ymm13,%ymm9 + vpsrlq $16,%ymm9,%ymm9 + + // convert to 5x4 form + vmovdqa 352(%rsp),%ymm0 + vmovdqa 320(%rsp),%ymm1 + vmovdqa 352(%rsp),%ymm2 + vmovdqa 320(%rsp),%ymm3 + + vpunpcklqdq %ymm1,%ymm0,%ymm12 + vpunpckhqdq %ymm1,%ymm0,%ymm13 + vpunpcklqdq %ymm3,%ymm2,%ymm14 + vpunpckhqdq %ymm3,%ymm2,%ymm15 + + vpermq $68,%ymm14,%ymm0 + vpblendd $240,%ymm0,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm0 + vpblendd $240,%ymm0,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm0 + vpblendd $240,%ymm14,%ymm0,%ymm12 + vpermq $238,%ymm13,%ymm0 + vpblendd $240,%ymm15,%ymm0,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $52,%ymm1,%ymm1 + vpand pmask3(%rip),%ymm11,%ymm2 + vpsllq $12,%ymm2,%ymm2 + vpor %ymm2,%ymm1,%ymm1 + + vpand pmask4(%rip),%ymm11,%ymm2 + vpsrlq $40,%ymm2,%ymm2 + vpand pmask5(%rip),%ymm12,%ymm3 + vpsllq $24,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask6(%rip),%ymm12,%ymm3 + vpsrlq $28,%ymm3,%ymm3 + vpand pmask7(%rip),%ymm13,%ymm4 + vpsllq $36,%ymm4,%ymm4 + vpor %ymm4,%ymm3,%ymm3 + + vpand pmask8(%rip),%ymm13,%ymm4 + vpsrlq $16,%ymm4,%ymm4 + + // mul4x1 + vpxorq %ymm10,%ymm10,%ymm10 + vpxorq %ymm11,%ymm11,%ymm11 + vpxorq %ymm12,%ymm12,%ymm12 + vpxorq %ymm13,%ymm13,%ymm13 + vpxorq %ymm14,%ymm14,%ymm14 + vpxorq %ymm15,%ymm15,%ymm15 + vpxorq %ymm16,%ymm16,%ymm16 + vpxorq %ymm17,%ymm17,%ymm17 + vpxorq %ymm18,%ymm18,%ymm18 + vpxorq %ymm19,%ymm19,%ymm19 + + vpxorq %ymm25,%ymm25,%ymm25 + vpxorq %ymm26,%ymm26,%ymm26 + vpxorq %ymm27,%ymm27,%ymm27 + vpxorq %ymm28,%ymm28,%ymm28 + vpxorq %ymm29,%ymm29,%ymm29 + vpxorq %ymm30,%ymm30,%ymm30 + vpxorq %ymm31,%ymm31,%ymm31 + + vpmadd52luq %ymm0,%ymm5,%ymm10 + vpmadd52huq %ymm0,%ymm5,%ymm11 + + vpmadd52luq %ymm0,%ymm6,%ymm25 + vpmadd52huq %ymm0,%ymm6,%ymm12 + vpmadd52luq %ymm1,%ymm5,%ymm25 + vpmadd52huq %ymm1,%ymm5,%ymm12 + + vpaddq %ymm25,%ymm11,%ymm11 + + vpmadd52luq %ymm0,%ymm7,%ymm26 + vpmadd52huq %ymm0,%ymm7,%ymm13 + vpmadd52luq %ymm1,%ymm6,%ymm26 + vpmadd52huq %ymm1,%ymm6,%ymm13 + vpmadd52luq %ymm2,%ymm5,%ymm26 + vpmadd52huq %ymm2,%ymm5,%ymm13 + + vpaddq %ymm26,%ymm12,%ymm12 + + vpmadd52luq %ymm0,%ymm8,%ymm27 + vpmadd52huq %ymm0,%ymm8,%ymm14 + vpmadd52luq %ymm1,%ymm7,%ymm27 + vpmadd52huq %ymm1,%ymm7,%ymm14 + vpmadd52luq %ymm2,%ymm6,%ymm27 + vpmadd52huq %ymm2,%ymm6,%ymm14 + vpmadd52luq %ymm3,%ymm5,%ymm27 + vpmadd52huq %ymm3,%ymm5,%ymm14 + + vpaddq %ymm27,%ymm13,%ymm13 + + vpmadd52luq %ymm0,%ymm9,%ymm28 + vpmadd52huq %ymm0,%ymm9,%ymm15 + vpmadd52luq %ymm1,%ymm8,%ymm28 + vpmadd52huq %ymm1,%ymm8,%ymm15 + vpmadd52luq %ymm2,%ymm7,%ymm28 + vpmadd52huq %ymm2,%ymm7,%ymm15 + vpmadd52luq %ymm3,%ymm6,%ymm28 + vpmadd52huq %ymm3,%ymm6,%ymm15 + vpmadd52luq %ymm4,%ymm5,%ymm28 + vpmadd52huq %ymm4,%ymm5,%ymm15 + + vpaddq %ymm28,%ymm14,%ymm14 + + vpmadd52luq %ymm1,%ymm9,%ymm29 + vpmadd52huq %ymm1,%ymm9,%ymm16 + vpmadd52luq %ymm2,%ymm8,%ymm29 + vpmadd52huq %ymm2,%ymm8,%ymm16 + vpmadd52luq %ymm3,%ymm7,%ymm29 + vpmadd52huq %ymm3,%ymm7,%ymm16 + vpmadd52luq %ymm4,%ymm6,%ymm29 + vpmadd52huq %ymm4,%ymm6,%ymm16 + + vpaddq %ymm29,%ymm15,%ymm15 + + vpmadd52luq %ymm2,%ymm9,%ymm30 + vpmadd52huq %ymm2,%ymm9,%ymm17 + vpmadd52luq %ymm3,%ymm8,%ymm30 + vpmadd52huq %ymm3,%ymm8,%ymm17 + vpmadd52luq %ymm4,%ymm7,%ymm30 + vpmadd52huq %ymm4,%ymm7,%ymm17 + + vpaddq %ymm30,%ymm16,%ymm16 + + vpmadd52luq %ymm3,%ymm9,%ymm31 + vpmadd52huq %ymm3,%ymm9,%ymm18 + vpmadd52luq %ymm4,%ymm8,%ymm31 + vpmadd52huq %ymm4,%ymm8,%ymm18 + + vpaddq %ymm31,%ymm17,%ymm17 + + vpmadd52luq %ymm4,%ymm9,%ymm18 + vpmadd52huq %ymm4,%ymm9,%ymm19 + + vpsrlq $52,%ymm15,%ymm22 + vpaddq %ymm22,%ymm16,%ymm16 + vpandq vecmask52(%rip),%ymm15,%ymm15 + vpmadd52luq vec608(%rip),%ymm15,%ymm10 + vpmadd52huq vec608(%rip),%ymm15,%ymm11 + + vpsrlq $52,%ymm16,%ymm22 + vpaddq %ymm22,%ymm17,%ymm17 + vpandq vecmask52(%rip),%ymm16,%ymm16 + vpmadd52luq vec608(%rip),%ymm16,%ymm11 + vpmadd52huq vec608(%rip),%ymm16,%ymm12 + + vpsrlq $52,%ymm17,%ymm22 + vpaddq %ymm22,%ymm18,%ymm18 + vpandq vecmask52(%rip),%ymm17,%ymm17 + vpmadd52luq vec608(%rip),%ymm17,%ymm12 + vpmadd52huq vec608(%rip),%ymm17,%ymm13 + + vpsrlq $52,%ymm18,%ymm22 + vpaddq %ymm22,%ymm19,%ymm19 + vpandq vecmask52(%rip),%ymm18,%ymm18 + vpmadd52luq vec608(%rip),%ymm18,%ymm13 + vpmadd52huq vec608(%rip),%ymm18,%ymm14 + + vpxorq %ymm15,%ymm15,%ymm15 + vpmadd52luq vec608(%rip),%ymm19,%ymm14 + vpmadd52huq vec608(%rip),%ymm19,%ymm15 + + vpmadd52luq vec608(%rip),%ymm15,%ymm10 + + vpsrlq $52,%ymm13,%ymm22 + vpaddq %ymm22,%ymm14,%ymm14 + vpandq vecmask52(%rip),%ymm13,%ymm13 + + vpsrlq $47,%ymm14,%ymm22 + vpandq vecmask47(%rip),%ymm14,%ymm14 + vpmadd52luq vec19(%rip),%ymm22,%ymm10 + + vpsrlq $52,%ymm10,%ymm22 + vpaddq %ymm22,%ymm11,%ymm11 + vpandq vecmask52(%rip),%ymm10,%ymm10 + + vpsrlq $52,%ymm11,%ymm22 + vpaddq %ymm22,%ymm12,%ymm12 + vpandq vecmask52(%rip),%ymm11,%ymm11 + + vpsrlq $52,%ymm12,%ymm22 + vpaddq %ymm22,%ymm13,%ymm13 + vpandq vecmask52(%rip),%ymm12,%ymm12 + + vpsrlq $52,%ymm13,%ymm22 + vpaddq %ymm22,%ymm14,%ymm14 + vpandq vecmask52(%rip),%ymm13,%ymm13 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm10,%ymm0 + vpand upmask2(%rip),%ymm11,%ymm1 + vpsllq $52,%ymm1,%ymm1 + vpor %ymm1,%ymm0,%ymm0 + + vpand upmask3(%rip),%ymm11,%ymm1 + vpsrlq $12,%ymm1,%ymm1 + vpand upmask4(%rip),%ymm12,%ymm2 + vpsllq $40,%ymm2,%ymm2 + vpor %ymm2,%ymm1,%ymm1 + + vpand upmask5(%rip),%ymm12,%ymm2 + vpsrlq $24,%ymm2,%ymm2 + vpand upmask6(%rip),%ymm13,%ymm3 + vpsllq $28,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand upmask7(%rip),%ymm13,%ymm3 + vpsrlq $36,%ymm3,%ymm3 + vpand upmask1(%rip),%ymm14,%ymm4 + vpsllq $16,%ymm4,%ymm4 + vpor %ymm4,%ymm3,%ymm3 + + vpunpcklqdq %ymm1,%ymm0,%ymm12 + vpunpckhqdq %ymm1,%ymm0,%ymm13 + vpunpcklqdq %ymm3,%ymm2,%ymm14 + vpunpckhqdq %ymm3,%ymm2,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm0 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm1 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm2 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm3 + + vmovdqa %ymm0,128(%rsp) + vmovdqa %ymm1,160(%rsp) + vmovdqa %ymm2,192(%rsp) + vmovdqa %ymm3,224(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $128,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 96(%rdi),%r8 + sbbq 104(%rdi),%r9 + sbbq 112(%rdi),%r10 + sbbq 120(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,448(%rsp) + movq %r9,456(%rsp) + movq %r10,464(%rsp) + movq %r11,472(%rsp) + + /* pnielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 384(%rsp),%r8,%r9 + mulx 392(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 400(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 408(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 416(%rsp),%r8,%r9 + mulx 424(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 432(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 440(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + xorq %r13,%r13 + movq 224(%rsp),%rdx + + mulx 448(%rsp),%r8,%r9 + mulx 456(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 464(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 472(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 232(%rsp),%rdx + + mulx 448(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 456(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 464(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 472(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 240(%rsp),%rdx + + mulx 448(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 456(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 464(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 472(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 248(%rsp),%rdx + + mulx 448(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 456(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 464(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 472(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 192(%rsp),%r8,%r9 + mulx 200(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 208(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 216(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 72(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 88(%rdi),%rdx + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + +.L6: + movq 88(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,88(%rsp) + movq 72(%rsp),%rdi + + cmpb $0,%r14b + jg .L7 + jl .L8 + je .L9 + +.L7: + /* p1p1 to p3 */ + + // convert to 5x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm5 + + vpand pmask2(%rip),%ymm10,%ymm6 + vpsrlq $52,%ymm6,%ymm6 + vpand pmask3(%rip),%ymm11,%ymm7 + vpsllq $12,%ymm7,%ymm7 + vpor %ymm7,%ymm6,%ymm6 + + vpand pmask4(%rip),%ymm11,%ymm7 + vpsrlq $40,%ymm7,%ymm7 + vpand pmask5(%rip),%ymm12,%ymm8 + vpsllq $24,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask6(%rip),%ymm12,%ymm8 + vpsrlq $28,%ymm8,%ymm8 + vpand pmask7(%rip),%ymm13,%ymm9 + vpsllq $36,%ymm9,%ymm9 + vpor %ymm9,%ymm8,%ymm8 + + vpand pmask8(%rip),%ymm13,%ymm9 + vpsrlq $16,%ymm9,%ymm9 + + // convert to 5x4 form + vmovdqa 352(%rsp),%ymm0 + vmovdqa 320(%rsp),%ymm1 + vmovdqa 352(%rsp),%ymm2 + vmovdqa 320(%rsp),%ymm3 + + vpunpcklqdq %ymm1,%ymm0,%ymm12 + vpunpckhqdq %ymm1,%ymm0,%ymm13 + vpunpcklqdq %ymm3,%ymm2,%ymm14 + vpunpckhqdq %ymm3,%ymm2,%ymm15 + + vpermq $68,%ymm14,%ymm0 + vpblendd $240,%ymm0,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm0 + vpblendd $240,%ymm0,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm0 + vpblendd $240,%ymm14,%ymm0,%ymm12 + vpermq $238,%ymm13,%ymm0 + vpblendd $240,%ymm15,%ymm0,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $52,%ymm1,%ymm1 + vpand pmask3(%rip),%ymm11,%ymm2 + vpsllq $12,%ymm2,%ymm2 + vpor %ymm2,%ymm1,%ymm1 + + vpand pmask4(%rip),%ymm11,%ymm2 + vpsrlq $40,%ymm2,%ymm2 + vpand pmask5(%rip),%ymm12,%ymm3 + vpsllq $24,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask6(%rip),%ymm12,%ymm3 + vpsrlq $28,%ymm3,%ymm3 + vpand pmask7(%rip),%ymm13,%ymm4 + vpsllq $36,%ymm4,%ymm4 + vpor %ymm4,%ymm3,%ymm3 + + vpand pmask8(%rip),%ymm13,%ymm4 + vpsrlq $16,%ymm4,%ymm4 + + // mul4x1 + vpxorq %ymm10,%ymm10,%ymm10 + vpxorq %ymm11,%ymm11,%ymm11 + vpxorq %ymm12,%ymm12,%ymm12 + vpxorq %ymm13,%ymm13,%ymm13 + vpxorq %ymm14,%ymm14,%ymm14 + vpxorq %ymm15,%ymm15,%ymm15 + vpxorq %ymm16,%ymm16,%ymm16 + vpxorq %ymm17,%ymm17,%ymm17 + vpxorq %ymm18,%ymm18,%ymm18 + vpxorq %ymm19,%ymm19,%ymm19 + + vpxorq %ymm25,%ymm25,%ymm25 + vpxorq %ymm26,%ymm26,%ymm26 + vpxorq %ymm27,%ymm27,%ymm27 + vpxorq %ymm28,%ymm28,%ymm28 + vpxorq %ymm29,%ymm29,%ymm29 + vpxorq %ymm30,%ymm30,%ymm30 + vpxorq %ymm31,%ymm31,%ymm31 + + vpmadd52luq %ymm0,%ymm5,%ymm10 + vpmadd52huq %ymm0,%ymm5,%ymm11 + + vpmadd52luq %ymm0,%ymm6,%ymm25 + vpmadd52huq %ymm0,%ymm6,%ymm12 + vpmadd52luq %ymm1,%ymm5,%ymm25 + vpmadd52huq %ymm1,%ymm5,%ymm12 + + vpaddq %ymm25,%ymm11,%ymm11 + + vpmadd52luq %ymm0,%ymm7,%ymm26 + vpmadd52huq %ymm0,%ymm7,%ymm13 + vpmadd52luq %ymm1,%ymm6,%ymm26 + vpmadd52huq %ymm1,%ymm6,%ymm13 + vpmadd52luq %ymm2,%ymm5,%ymm26 + vpmadd52huq %ymm2,%ymm5,%ymm13 + + vpaddq %ymm26,%ymm12,%ymm12 + + vpmadd52luq %ymm0,%ymm8,%ymm27 + vpmadd52huq %ymm0,%ymm8,%ymm14 + vpmadd52luq %ymm1,%ymm7,%ymm27 + vpmadd52huq %ymm1,%ymm7,%ymm14 + vpmadd52luq %ymm2,%ymm6,%ymm27 + vpmadd52huq %ymm2,%ymm6,%ymm14 + vpmadd52luq %ymm3,%ymm5,%ymm27 + vpmadd52huq %ymm3,%ymm5,%ymm14 + + vpaddq %ymm27,%ymm13,%ymm13 + + vpmadd52luq %ymm0,%ymm9,%ymm28 + vpmadd52huq %ymm0,%ymm9,%ymm15 + vpmadd52luq %ymm1,%ymm8,%ymm28 + vpmadd52huq %ymm1,%ymm8,%ymm15 + vpmadd52luq %ymm2,%ymm7,%ymm28 + vpmadd52huq %ymm2,%ymm7,%ymm15 + vpmadd52luq %ymm3,%ymm6,%ymm28 + vpmadd52huq %ymm3,%ymm6,%ymm15 + vpmadd52luq %ymm4,%ymm5,%ymm28 + vpmadd52huq %ymm4,%ymm5,%ymm15 + + vpaddq %ymm28,%ymm14,%ymm14 + + vpmadd52luq %ymm1,%ymm9,%ymm29 + vpmadd52huq %ymm1,%ymm9,%ymm16 + vpmadd52luq %ymm2,%ymm8,%ymm29 + vpmadd52huq %ymm2,%ymm8,%ymm16 + vpmadd52luq %ymm3,%ymm7,%ymm29 + vpmadd52huq %ymm3,%ymm7,%ymm16 + vpmadd52luq %ymm4,%ymm6,%ymm29 + vpmadd52huq %ymm4,%ymm6,%ymm16 + + vpaddq %ymm29,%ymm15,%ymm15 + + vpmadd52luq %ymm2,%ymm9,%ymm30 + vpmadd52huq %ymm2,%ymm9,%ymm17 + vpmadd52luq %ymm3,%ymm8,%ymm30 + vpmadd52huq %ymm3,%ymm8,%ymm17 + vpmadd52luq %ymm4,%ymm7,%ymm30 + vpmadd52huq %ymm4,%ymm7,%ymm17 + + vpaddq %ymm30,%ymm16,%ymm16 + + vpmadd52luq %ymm3,%ymm9,%ymm31 + vpmadd52huq %ymm3,%ymm9,%ymm18 + vpmadd52luq %ymm4,%ymm8,%ymm31 + vpmadd52huq %ymm4,%ymm8,%ymm18 + + vpaddq %ymm31,%ymm17,%ymm17 + + vpmadd52luq %ymm4,%ymm9,%ymm18 + vpmadd52huq %ymm4,%ymm9,%ymm19 + + vpsrlq $52,%ymm15,%ymm22 + vpaddq %ymm22,%ymm16,%ymm16 + vpandq vecmask52(%rip),%ymm15,%ymm15 + vpmadd52luq vec608(%rip),%ymm15,%ymm10 + vpmadd52huq vec608(%rip),%ymm15,%ymm11 + + vpsrlq $52,%ymm16,%ymm22 + vpaddq %ymm22,%ymm17,%ymm17 + vpandq vecmask52(%rip),%ymm16,%ymm16 + vpmadd52luq vec608(%rip),%ymm16,%ymm11 + vpmadd52huq vec608(%rip),%ymm16,%ymm12 + + vpsrlq $52,%ymm17,%ymm22 + vpaddq %ymm22,%ymm18,%ymm18 + vpandq vecmask52(%rip),%ymm17,%ymm17 + vpmadd52luq vec608(%rip),%ymm17,%ymm12 + vpmadd52huq vec608(%rip),%ymm17,%ymm13 + + vpsrlq $52,%ymm18,%ymm22 + vpaddq %ymm22,%ymm19,%ymm19 + vpandq vecmask52(%rip),%ymm18,%ymm18 + vpmadd52luq vec608(%rip),%ymm18,%ymm13 + vpmadd52huq vec608(%rip),%ymm18,%ymm14 + + vpxorq %ymm15,%ymm15,%ymm15 + vpmadd52luq vec608(%rip),%ymm19,%ymm14 + vpmadd52huq vec608(%rip),%ymm19,%ymm15 + + vpmadd52luq vec608(%rip),%ymm15,%ymm10 + + vpsrlq $52,%ymm13,%ymm22 + vpaddq %ymm22,%ymm14,%ymm14 + vpandq vecmask52(%rip),%ymm13,%ymm13 + + vpsrlq $47,%ymm14,%ymm22 + vpandq vecmask47(%rip),%ymm14,%ymm14 + vpmadd52luq vec19(%rip),%ymm22,%ymm10 + + vpsrlq $52,%ymm10,%ymm22 + vpaddq %ymm22,%ymm11,%ymm11 + vpandq vecmask52(%rip),%ymm10,%ymm10 + + vpsrlq $52,%ymm11,%ymm22 + vpaddq %ymm22,%ymm12,%ymm12 + vpandq vecmask52(%rip),%ymm11,%ymm11 + + vpsrlq $52,%ymm12,%ymm22 + vpaddq %ymm22,%ymm13,%ymm13 + vpandq vecmask52(%rip),%ymm12,%ymm12 + + vpsrlq $52,%ymm13,%ymm22 + vpaddq %ymm22,%ymm14,%ymm14 + vpandq vecmask52(%rip),%ymm13,%ymm13 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm10,%ymm0 + vpand upmask2(%rip),%ymm11,%ymm1 + vpsllq $52,%ymm1,%ymm1 + vpor %ymm1,%ymm0,%ymm0 + + vpand upmask3(%rip),%ymm11,%ymm1 + vpsrlq $12,%ymm1,%ymm1 + vpand upmask4(%rip),%ymm12,%ymm2 + vpsllq $40,%ymm2,%ymm2 + vpor %ymm2,%ymm1,%ymm1 + + vpand upmask5(%rip),%ymm12,%ymm2 + vpsrlq $24,%ymm2,%ymm2 + vpand upmask6(%rip),%ymm13,%ymm3 + vpsllq $28,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand upmask7(%rip),%ymm13,%ymm3 + vpsrlq $36,%ymm3,%ymm3 + vpand upmask1(%rip),%ymm14,%ymm4 + vpsllq $16,%ymm4,%ymm4 + vpor %ymm4,%ymm3,%ymm3 + + vpunpcklqdq %ymm1,%ymm0,%ymm12 + vpunpckhqdq %ymm1,%ymm0,%ymm13 + vpunpcklqdq %ymm3,%ymm2,%ymm14 + vpunpckhqdq %ymm3,%ymm2,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm0 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm1 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm2 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm3 + + vmovdqa %ymm0,128(%rsp) + vmovdqa %ymm1,160(%rsp) + vmovdqa %ymm2,192(%rsp) + vmovdqa %ymm3,224(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $96,%r14,%r14 + addq %r14,%rdi + + /* nielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 384(%rsp),%r8,%r9 + mulx 392(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 400(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 408(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 416(%rsp),%r8,%r9 + mulx 424(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 432(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 440(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 224(%rsp),%r8,%r9 + mulx 232(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 240(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 248(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 72(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 88(%rdi),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + movq 192(%rsp),%r12 + movq 200(%rsp),%r13 + movq 208(%rsp),%r14 + movq 216(%rsp),%r15 + + addq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + // sub + movq %r12,%rbx + movq %r13,%rcx + movq %r14,%rbp + movq %r15,%rsi + + subq %r8,%r12 + sbbq %r9,%r13 + sbbq %r10,%r14 + sbbq %r11,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r9 + adcq %rbp,%r10 + adcq %rsi,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + + jmp .L9 + +.L8: + /* p1p1 to p3 */ + + // convert to 5x4 form + vmovdqa 256(%rsp),%ymm8 + vmovdqa 288(%rsp),%ymm9 + vmovdqa 288(%rsp),%ymm10 + vmovdqa 256(%rsp),%ymm11 + + vpunpcklqdq %ymm9,%ymm8,%ymm12 + vpunpckhqdq %ymm9,%ymm8,%ymm13 + vpunpcklqdq %ymm11,%ymm10,%ymm14 + vpunpckhqdq %ymm11,%ymm10,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm12 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm5 + + vpand pmask2(%rip),%ymm10,%ymm6 + vpsrlq $52,%ymm6,%ymm6 + vpand pmask3(%rip),%ymm11,%ymm7 + vpsllq $12,%ymm7,%ymm7 + vpor %ymm7,%ymm6,%ymm6 + + vpand pmask4(%rip),%ymm11,%ymm7 + vpsrlq $40,%ymm7,%ymm7 + vpand pmask5(%rip),%ymm12,%ymm8 + vpsllq $24,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + vpand pmask6(%rip),%ymm12,%ymm8 + vpsrlq $28,%ymm8,%ymm8 + vpand pmask7(%rip),%ymm13,%ymm9 + vpsllq $36,%ymm9,%ymm9 + vpor %ymm9,%ymm8,%ymm8 + + vpand pmask8(%rip),%ymm13,%ymm9 + vpsrlq $16,%ymm9,%ymm9 + + // convert to 5x4 form + vmovdqa 352(%rsp),%ymm0 + vmovdqa 320(%rsp),%ymm1 + vmovdqa 352(%rsp),%ymm2 + vmovdqa 320(%rsp),%ymm3 + + vpunpcklqdq %ymm1,%ymm0,%ymm12 + vpunpckhqdq %ymm1,%ymm0,%ymm13 + vpunpcklqdq %ymm3,%ymm2,%ymm14 + vpunpckhqdq %ymm3,%ymm2,%ymm15 + + vpermq $68,%ymm14,%ymm0 + vpblendd $240,%ymm0,%ymm12,%ymm10 + vpermq $68,%ymm15,%ymm0 + vpblendd $240,%ymm0,%ymm13,%ymm11 + vpermq $238,%ymm12,%ymm0 + vpblendd $240,%ymm14,%ymm0,%ymm12 + vpermq $238,%ymm13,%ymm0 + vpblendd $240,%ymm15,%ymm0,%ymm13 + + vpand pmask1(%rip),%ymm10,%ymm0 + + vpand pmask2(%rip),%ymm10,%ymm1 + vpsrlq $52,%ymm1,%ymm1 + vpand pmask3(%rip),%ymm11,%ymm2 + vpsllq $12,%ymm2,%ymm2 + vpor %ymm2,%ymm1,%ymm1 + + vpand pmask4(%rip),%ymm11,%ymm2 + vpsrlq $40,%ymm2,%ymm2 + vpand pmask5(%rip),%ymm12,%ymm3 + vpsllq $24,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand pmask6(%rip),%ymm12,%ymm3 + vpsrlq $28,%ymm3,%ymm3 + vpand pmask7(%rip),%ymm13,%ymm4 + vpsllq $36,%ymm4,%ymm4 + vpor %ymm4,%ymm3,%ymm3 + + vpand pmask8(%rip),%ymm13,%ymm4 + vpsrlq $16,%ymm4,%ymm4 + + // mul4x1 + vpxorq %ymm10,%ymm10,%ymm10 + vpxorq %ymm11,%ymm11,%ymm11 + vpxorq %ymm12,%ymm12,%ymm12 + vpxorq %ymm13,%ymm13,%ymm13 + vpxorq %ymm14,%ymm14,%ymm14 + vpxorq %ymm15,%ymm15,%ymm15 + vpxorq %ymm16,%ymm16,%ymm16 + vpxorq %ymm17,%ymm17,%ymm17 + vpxorq %ymm18,%ymm18,%ymm18 + vpxorq %ymm19,%ymm19,%ymm19 + + vpxorq %ymm25,%ymm25,%ymm25 + vpxorq %ymm26,%ymm26,%ymm26 + vpxorq %ymm27,%ymm27,%ymm27 + vpxorq %ymm28,%ymm28,%ymm28 + vpxorq %ymm29,%ymm29,%ymm29 + vpxorq %ymm30,%ymm30,%ymm30 + vpxorq %ymm31,%ymm31,%ymm31 + + vpmadd52luq %ymm0,%ymm5,%ymm10 + vpmadd52huq %ymm0,%ymm5,%ymm11 + + vpmadd52luq %ymm0,%ymm6,%ymm25 + vpmadd52huq %ymm0,%ymm6,%ymm12 + vpmadd52luq %ymm1,%ymm5,%ymm25 + vpmadd52huq %ymm1,%ymm5,%ymm12 + + vpaddq %ymm25,%ymm11,%ymm11 + + vpmadd52luq %ymm0,%ymm7,%ymm26 + vpmadd52huq %ymm0,%ymm7,%ymm13 + vpmadd52luq %ymm1,%ymm6,%ymm26 + vpmadd52huq %ymm1,%ymm6,%ymm13 + vpmadd52luq %ymm2,%ymm5,%ymm26 + vpmadd52huq %ymm2,%ymm5,%ymm13 + + vpaddq %ymm26,%ymm12,%ymm12 + + vpmadd52luq %ymm0,%ymm8,%ymm27 + vpmadd52huq %ymm0,%ymm8,%ymm14 + vpmadd52luq %ymm1,%ymm7,%ymm27 + vpmadd52huq %ymm1,%ymm7,%ymm14 + vpmadd52luq %ymm2,%ymm6,%ymm27 + vpmadd52huq %ymm2,%ymm6,%ymm14 + vpmadd52luq %ymm3,%ymm5,%ymm27 + vpmadd52huq %ymm3,%ymm5,%ymm14 + + vpaddq %ymm27,%ymm13,%ymm13 + + vpmadd52luq %ymm0,%ymm9,%ymm28 + vpmadd52huq %ymm0,%ymm9,%ymm15 + vpmadd52luq %ymm1,%ymm8,%ymm28 + vpmadd52huq %ymm1,%ymm8,%ymm15 + vpmadd52luq %ymm2,%ymm7,%ymm28 + vpmadd52huq %ymm2,%ymm7,%ymm15 + vpmadd52luq %ymm3,%ymm6,%ymm28 + vpmadd52huq %ymm3,%ymm6,%ymm15 + vpmadd52luq %ymm4,%ymm5,%ymm28 + vpmadd52huq %ymm4,%ymm5,%ymm15 + + vpaddq %ymm28,%ymm14,%ymm14 + + vpmadd52luq %ymm1,%ymm9,%ymm29 + vpmadd52huq %ymm1,%ymm9,%ymm16 + vpmadd52luq %ymm2,%ymm8,%ymm29 + vpmadd52huq %ymm2,%ymm8,%ymm16 + vpmadd52luq %ymm3,%ymm7,%ymm29 + vpmadd52huq %ymm3,%ymm7,%ymm16 + vpmadd52luq %ymm4,%ymm6,%ymm29 + vpmadd52huq %ymm4,%ymm6,%ymm16 + + vpaddq %ymm29,%ymm15,%ymm15 + + vpmadd52luq %ymm2,%ymm9,%ymm30 + vpmadd52huq %ymm2,%ymm9,%ymm17 + vpmadd52luq %ymm3,%ymm8,%ymm30 + vpmadd52huq %ymm3,%ymm8,%ymm17 + vpmadd52luq %ymm4,%ymm7,%ymm30 + vpmadd52huq %ymm4,%ymm7,%ymm17 + + vpaddq %ymm30,%ymm16,%ymm16 + + vpmadd52luq %ymm3,%ymm9,%ymm31 + vpmadd52huq %ymm3,%ymm9,%ymm18 + vpmadd52luq %ymm4,%ymm8,%ymm31 + vpmadd52huq %ymm4,%ymm8,%ymm18 + + vpaddq %ymm31,%ymm17,%ymm17 + + vpmadd52luq %ymm4,%ymm9,%ymm18 + vpmadd52huq %ymm4,%ymm9,%ymm19 + + vpsrlq $52,%ymm15,%ymm22 + vpaddq %ymm22,%ymm16,%ymm16 + vpandq vecmask52(%rip),%ymm15,%ymm15 + vpmadd52luq vec608(%rip),%ymm15,%ymm10 + vpmadd52huq vec608(%rip),%ymm15,%ymm11 + + vpsrlq $52,%ymm16,%ymm22 + vpaddq %ymm22,%ymm17,%ymm17 + vpandq vecmask52(%rip),%ymm16,%ymm16 + vpmadd52luq vec608(%rip),%ymm16,%ymm11 + vpmadd52huq vec608(%rip),%ymm16,%ymm12 + + vpsrlq $52,%ymm17,%ymm22 + vpaddq %ymm22,%ymm18,%ymm18 + vpandq vecmask52(%rip),%ymm17,%ymm17 + vpmadd52luq vec608(%rip),%ymm17,%ymm12 + vpmadd52huq vec608(%rip),%ymm17,%ymm13 + + vpsrlq $52,%ymm18,%ymm22 + vpaddq %ymm22,%ymm19,%ymm19 + vpandq vecmask52(%rip),%ymm18,%ymm18 + vpmadd52luq vec608(%rip),%ymm18,%ymm13 + vpmadd52huq vec608(%rip),%ymm18,%ymm14 + + vpxorq %ymm15,%ymm15,%ymm15 + vpmadd52luq vec608(%rip),%ymm19,%ymm14 + vpmadd52huq vec608(%rip),%ymm19,%ymm15 + + vpmadd52luq vec608(%rip),%ymm15,%ymm10 + + vpsrlq $52,%ymm13,%ymm22 + vpaddq %ymm22,%ymm14,%ymm14 + vpandq vecmask52(%rip),%ymm13,%ymm13 + + vpsrlq $47,%ymm14,%ymm22 + vpandq vecmask47(%rip),%ymm14,%ymm14 + vpmadd52luq vec19(%rip),%ymm22,%ymm10 + + vpsrlq $52,%ymm10,%ymm22 + vpaddq %ymm22,%ymm11,%ymm11 + vpandq vecmask52(%rip),%ymm10,%ymm10 + + vpsrlq $52,%ymm11,%ymm22 + vpaddq %ymm22,%ymm12,%ymm12 + vpandq vecmask52(%rip),%ymm11,%ymm11 + + vpsrlq $52,%ymm12,%ymm22 + vpaddq %ymm22,%ymm13,%ymm13 + vpandq vecmask52(%rip),%ymm12,%ymm12 + + vpsrlq $52,%ymm13,%ymm22 + vpaddq %ymm22,%ymm14,%ymm14 + vpandq vecmask52(%rip),%ymm13,%ymm13 + + // get back to 4x4 form + vpand upmask1(%rip),%ymm10,%ymm0 + vpand upmask2(%rip),%ymm11,%ymm1 + vpsllq $52,%ymm1,%ymm1 + vpor %ymm1,%ymm0,%ymm0 + + vpand upmask3(%rip),%ymm11,%ymm1 + vpsrlq $12,%ymm1,%ymm1 + vpand upmask4(%rip),%ymm12,%ymm2 + vpsllq $40,%ymm2,%ymm2 + vpor %ymm2,%ymm1,%ymm1 + + vpand upmask5(%rip),%ymm12,%ymm2 + vpsrlq $24,%ymm2,%ymm2 + vpand upmask6(%rip),%ymm13,%ymm3 + vpsllq $28,%ymm3,%ymm3 + vpor %ymm3,%ymm2,%ymm2 + + vpand upmask7(%rip),%ymm13,%ymm3 + vpsrlq $36,%ymm3,%ymm3 + vpand upmask1(%rip),%ymm14,%ymm4 + vpsllq $16,%ymm4,%ymm4 + vpor %ymm4,%ymm3,%ymm3 + + vpunpcklqdq %ymm1,%ymm0,%ymm12 + vpunpckhqdq %ymm1,%ymm0,%ymm13 + vpunpcklqdq %ymm3,%ymm2,%ymm14 + vpunpckhqdq %ymm3,%ymm2,%ymm15 + + vpermq $68,%ymm14,%ymm7 + vpblendd $240,%ymm7,%ymm12,%ymm0 + vpermq $68,%ymm15,%ymm7 + vpblendd $240,%ymm7,%ymm13,%ymm1 + vpermq $238,%ymm12,%ymm7 + vpblendd $240,%ymm14,%ymm7,%ymm2 + vpermq $238,%ymm13,%ymm7 + vpblendd $240,%ymm15,%ymm7,%ymm3 + + vmovdqa %ymm0,128(%rsp) + vmovdqa %ymm1,160(%rsp) + vmovdqa %ymm2,192(%rsp) + vmovdqa %ymm3,224(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $96,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rdi),%r8 + sbbq 72(%rdi),%r9 + sbbq 80(%rdi),%r10 + sbbq 88(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,448(%rsp) + movq %r9,456(%rsp) + movq %r10,464(%rsp) + movq %r11,472(%rsp) + + /* nielsadd p1p1 */ + + movq 160(%rsp),%r8 + movq 168(%rsp),%r9 + movq 176(%rsp),%r10 + movq 184(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 128(%rsp),%r8 + sbbq 136(%rsp),%r9 + sbbq 144(%rsp),%r10 + sbbq 152(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // add + addq 128(%rsp),%r12 + adcq 136(%rsp),%r13 + adcq 144(%rsp),%r14 + adcq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,416(%rsp) + movq %r13,424(%rsp) + movq %r14,432(%rsp) + movq %r15,440(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 384(%rsp),%r8,%r9 + mulx 392(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 400(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 408(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,384(%rsp) + movq %r9,392(%rsp) + movq %r10,400(%rsp) + movq %r11,408(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 416(%rsp),%r8,%r9 + mulx 424(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 432(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 440(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 384(%rsp),%r8 + adcq 392(%rsp),%r9 + adcq 400(%rsp),%r10 + adcq 408(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // sub + subq 384(%rsp),%r12 + sbbq 392(%rsp),%r13 + sbbq 400(%rsp),%r14 + sbbq 408(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,256(%rsp) + movq %r13,264(%rsp) + movq %r14,272(%rsp) + movq %r15,280(%rsp) + + // mul + xorq %r13,%r13 + movq 448(%rsp),%rdx + + mulx 224(%rsp),%r8,%r9 + mulx 232(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 240(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 248(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 456(%rsp),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 464(%rsp),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 472(%rsp),%rdx + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 240(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 248(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + movq 192(%rsp),%r12 + movq 200(%rsp),%r13 + movq 208(%rsp),%r14 + movq 216(%rsp),%r15 + + addq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + // sub + movq %r12,%rbx + movq %r13,%rcx + movq %r14,%rbp + movq %r15,%rsi + + subq %r8,%r12 + sbbq %r9,%r13 + sbbq %r10,%r14 + sbbq %r11,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r9 + adcq %rbp,%r10 + adcq %rsi,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,288(%rsp) + movq %r9,296(%rsp) + movq %r10,304(%rsp) + movq %r11,312(%rsp) + +.L9: + movq 56(%rsp),%rdi + + /* p1p1 to p2 */ + + // mul + xorq %r13,%r13 + movq 256(%rsp),%rdx + + mulx 352(%rsp),%r8,%r9 + mulx 360(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 368(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 376(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 264(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 272(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 280(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + // mul + xorq %r13,%r13 + movq 288(%rsp),%rdx + + mulx 320(%rsp),%r8,%r9 + mulx 328(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 336(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 344(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 296(%rsp),%rdx + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 304(%rsp),%rdx + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 312(%rsp),%rdx + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + // mul + xorq %r13,%r13 + movq 288(%rsp),%rdx + + mulx 352(%rsp),%r8,%r9 + mulx 360(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 368(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 376(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 296(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 304(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 312(%rsp),%rdx + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsp),%rax + decq %rax + movq %rax,96(%rsp) + + cmpq $0,%rax + + jge .L3 + +.L10: + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_pack.c new file mode 120000 index 0000000000..6029b816df --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_pack.c @@ -0,0 +1 @@ +../amd64-51/ge25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_unpackneg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_unpackneg.c new file mode 120000 index 0000000000..4b7f5c5cff --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/ge25519_unpackneg.c @@ -0,0 +1 @@ +../amd64-64/ge25519_unpackneg.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/implementors b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/implementors new file mode 120000 index 0000000000..71bd496923 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/implementors @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/mGnP.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/mGnP.c new file mode 120000 index 0000000000..3ef603262c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/mGnP.c @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/mGnP.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_barrett.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_barrett.S new file mode 120000 index 0000000000..26a5f8a1c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_barrett.S @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_barrett.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_from64bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_from64bytes.c new file mode 120000 index 0000000000..f6a000bcdd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_from64bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from64bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_slide.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_slide.c new file mode 120000 index 0000000000..10ea12d89a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_slide.c @@ -0,0 +1 @@ +../amd64-51/sc25519_slide.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_to32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_to32bytes.c new file mode 120000 index 0000000000..6930ca05f6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/sc25519_to32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_to32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/shared-consts.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/shared-consts.c new file mode 100644 index 0000000000..379959bd6d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/shared-consts.c @@ -0,0 +1,79 @@ +// linker define vec19 +// linker define vec608 +// linker define vecmask47 +// linker define vecmask52 +// linker define pmask1 +// linker define pmask2 +// linker define pmask3 +// linker define pmask4 +// linker define pmask5 +// linker define pmask6 +// linker define pmask7 +// linker define pmask8 +// linker define upmask1 +// linker define upmask2 +// linker define upmask3 +// linker define upmask4 +// linker define upmask5 +// linker define upmask6 +// linker define upmask7 +// linker define mask63 +// linker define 121666 +// linker define MU0 +// linker define MU1 +// linker define MU2 +// linker define MU3 +// linker define MU4 +// linker define ORDER0 +// linker define ORDER1 +// linker define ORDER2 +// linker define ORDER3 +// linker define EC2D0 +// linker define EC2D1 +// linker define EC2D2 +// linker define EC2D3 +// linker define 38 + +#include "crypto_uint64.h" +#include "consts_namespace.h" + +const crypto_uint64 vec19[] = { 19,19,19,19 }; +const crypto_uint64 vec608[] = { 608,608,608,608 }; +const crypto_uint64 vecmask47[] = { 0x7FFFFFFFFFFF,0x7FFFFFFFFFFF,0x7FFFFFFFFFFF,0x7FFFFFFFFFFF }; +const crypto_uint64 vecmask52[] = { 0xFFFFFFFFFFFFF,0xFFFFFFFFFFFFF,0xFFFFFFFFFFFFF,0xFFFFFFFFFFFFF }; +const crypto_uint64 pmask1[] = { 0x000FFFFFFFFFFFFF,0x000FFFFFFFFFFFFF,0x000FFFFFFFFFFFFF,0x000FFFFFFFFFFFFF }; +const crypto_uint64 pmask2[] = { 0xFFF0000000000000,0xFFF0000000000000,0xFFF0000000000000,0xFFF0000000000000 }; +const crypto_uint64 pmask3[] = { 0x000000FFFFFFFFFF,0x000000FFFFFFFFFF,0x000000FFFFFFFFFF,0x000000FFFFFFFFFF }; +const crypto_uint64 pmask4[] = { 0xFFFFFF0000000000,0xFFFFFF0000000000,0xFFFFFF0000000000,0xFFFFFF0000000000 }; +const crypto_uint64 pmask5[] = { 0x000000000FFFFFFF,0x000000000FFFFFFF,0x000000000FFFFFFF,0x000000000FFFFFFF }; +const crypto_uint64 pmask6[] = { 0xFFFFFFFFF0000000,0xFFFFFFFFF0000000,0xFFFFFFFFF0000000,0xFFFFFFFFF0000000 }; +const crypto_uint64 pmask7[] = { 0x000000000000FFFF,0x000000000000FFFF,0x000000000000FFFF,0x000000000000FFFF }; +const crypto_uint64 pmask8[] = { 0xFFFFFFFFFFFF0000,0xFFFFFFFFFFFF0000,0xFFFFFFFFFFFF0000,0xFFFFFFFFFFFF0000 }; +const crypto_uint64 upmask1[] = { 0x000FFFFFFFFFFFFF,0x000FFFFFFFFFFFFF,0x000FFFFFFFFFFFFF,0x000FFFFFFFFFFFFF }; +const crypto_uint64 upmask2[] = { 0x0000000000000FFF,0x0000000000000FFF,0x0000000000000FFF,0x0000000000000FFF }; +const crypto_uint64 upmask3[] = { 0x000FFFFFFFFFF000,0x000FFFFFFFFFF000,0x000FFFFFFFFFF000,0x000FFFFFFFFFF000 }; +const crypto_uint64 upmask4[] = { 0x0000000000FFFFFF,0x0000000000FFFFFF,0x0000000000FFFFFF,0x0000000000FFFFFF }; +const crypto_uint64 upmask5[] = { 0x000FFFFFFF000000,0x000FFFFFFF000000,0x000FFFFFFF000000,0x000FFFFFFF000000 }; +const crypto_uint64 upmask6[] = { 0x0000000FFFFFFFFF,0x0000000FFFFFFFFF,0x0000000FFFFFFFFF,0x0000000FFFFFFFFF }; +const crypto_uint64 upmask7[] = { 0x000FFFF000000000,0x000FFFF000000000,0x000FFFF000000000,0x000FFFF000000000 }; +const crypto_uint64 mask63[] = { 0x7FFFFFFFFFFFFFFF }; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(121666) = 121666; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU0) = 0xED9CE5A30A2C131B; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU1) = 0x2106215D086329A7; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU2) = 0xFFFFFFFFFFFFFFEB; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU3) = 0xFFFFFFFFFFFFFFFF; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU4) = 0x000000000000000F; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER0) = 0x5812631A5CF5D3ED; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER1) = 0x14DEF9DEA2F79CD6; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER2) = 0x0000000000000000; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER3) = 0x1000000000000000; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D0) = 0xEBD69B9426B2F146; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D1) = 0x00E0149A8283B156; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D2) = 0x198E80F2EEF3D130; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D3) = 0xA406D9DC56DFFCE7; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(38) = 38; diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/shared-data.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/shared-data.c new file mode 120000 index 0000000000..055c21deb2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/shared-data.c @@ -0,0 +1 @@ +../amd64-51/shared-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/shared-data.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/shared-data.h new file mode 120000 index 0000000000..0f186b9458 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/shared-data.h @@ -0,0 +1 @@ +../amd64-51/shared-data.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/architectures b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/architectures new file mode 120000 index 0000000000..f92e7d6fe1 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/architectures @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519.h new file mode 100644 index 0000000000..90c3a7f1b2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519.h @@ -0,0 +1,67 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_iszero_vartime CRYPTO_NAMESPACE(fe25519_iszero_vartime) +#define fe25519_iseq_vartime CRYPTO_NAMESPACE(fe25519_iseq_vartime) +#define fe25519_cmov CRYPTO_NAMESPACE(fe25519_cmov) +#define fe25519_setint CRYPTO_NAMESPACE(fe25519_setint) +#define fe25519_neg CRYPTO_NAMESPACE(fe25519_neg) +#define fe25519_getparity CRYPTO_NAMESPACE(fe25519_getparity) +#define fe25519_add CRYPTO_SHARED_NAMESPACE(fe25519_add) +#define fe25519_sub CRYPTO_SHARED_NAMESPACE(fe25519_sub) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_mul121666 CRYPTO_NAMESPACE(fe25519_mul121666) +#define fe25519_square CRYPTO_SHARED_NAMESPACE(fe25519_square) +#define fe25519_nsquare CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) +#define fe25519_pow2523 CRYPTO_NAMESPACE(fe25519_pow2523) + +typedef struct +{ + unsigned long long v[4]; +} +fe25519; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_cmov(fe25519 *r, const fe25519 *x, unsigned char b); + +void fe25519_cswap(fe25519 *r, fe25519 *x, unsigned char b); + +void fe25519_setint(fe25519 *r, unsigned int v); + +void fe25519_neg(fe25519 *r, const fe25519 *x); + +unsigned char fe25519_getparity(const fe25519 *x); + +int fe25519_iszero_vartime(const fe25519 *x); + +int fe25519_iseq_vartime(const fe25519 *x, const fe25519 *y); + +void fe25519_add(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_sub(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_mul121666(fe25519 *r, const fe25519 *x); + +void fe25519_nsquare(fe25519 *r, const fe25519 *x, long long n); + +void fe25519_square(fe25519 *r, const fe25519 *x); + +void fe25519_pow(fe25519 *r, const fe25519 *x, const unsigned char *e); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +void fe25519_pow2523(fe25519 *r, const fe25519 *x); + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_add.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_add.S new file mode 120000 index 0000000000..2f72e5bb09 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_add.S @@ -0,0 +1 @@ +../amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_freeze.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_freeze.S new file mode 120000 index 0000000000..65ecfcf5ce --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_freeze.S @@ -0,0 +1 @@ +../amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_getparity.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_getparity.c new file mode 120000 index 0000000000..d5e8b184b4 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_getparity.c @@ -0,0 +1 @@ +../amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_invert.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_invert.c new file mode 120000 index 0000000000..06cd19180a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_iseq.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_iseq.c new file mode 120000 index 0000000000..3175be3915 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_iseq.c @@ -0,0 +1 @@ +../amd64-64/fe25519_iseq.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_mul.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_mul.S new file mode 100644 index 0000000000..d429ac5bf2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_mul.S @@ -0,0 +1,190 @@ +// linker define fe25519_mul +// linker use mask63 + +/* Assembly for field multiplication. */ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_mul) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_mul) +_CRYPTO_SHARED_NAMESPACE(fe25519_mul): +CRYPTO_SHARED_NAMESPACE(fe25519_mul): + +movq %rsp,%r11 +andq $-32,%rsp +subq $40,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) + +movq %rdx,%rcx + +movq 8(%rsi),%rax +mulq 24(%rcx) +movq %rax,%r8 +movq $0,%r9 +movq %rdx,%r10 +movq $0,%r11 + +movq 16(%rsi),%rax +mulq 16(%rcx) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 24(%rsi),%rax +mulq 8(%rcx) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 16(%rsi),%rax +mulq 24(%rcx) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +movq $0,%r13 + +movq 24(%rsi),%rax +mulq 16(%rcx) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 24(%rsi),%rax +mulq 24(%rcx) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 0(%rsi),%rax +mulq 24(%rcx) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 8(%rsi),%rax +mulq 16(%rcx) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 16(%rsi),%rax +mulq 8(%rcx) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 24(%rsi),%rax +mulq 0(%rcx) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 0(%rsi),%rax +mulq 0(%rcx) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 0(%rsi),%rax +mulq 8(%rcx) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 8(%rsi),%rax +mulq 0(%rcx) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 0(%rsi),%rax +mulq 16(%rcx) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 8(%rsi),%rax +mulq 8(%rcx) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 16(%rsi),%rax +mulq 0(%rcx) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq %r8,0(%rdi) +movq %r10,8(%rdi) +movq %r12,16(%rdi) +movq %r14,24(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_nsquare.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_nsquare.S new file mode 100644 index 0000000000..cc22572656 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_nsquare.S @@ -0,0 +1,201 @@ +// linker define fe25519_nsquare +// linker use mask63 + +/* Assembly for feedback field squaring. */ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +_CRYPTO_SHARED_NAMESPACE(fe25519_nsquare): +CRYPTO_SHARED_NAMESPACE(fe25519_nsquare): + +movq %rsp,%r11 +andq $-32,%rsp +subq $64,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) + +movq 0(%rsi),%rbx +movq 8(%rsi),%rbp +movq 16(%rsi),%rcx +movq 24(%rsi),%rsi + +movq %rdx,%rdi + +.L: + +movq %rsi,%rax +mulq %rsi +movq %rax,%r12 +movq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq %rbp,%rax +mulq %rsi +movq %rax,%r8 +movq $0,%r9 +movq %rdx,%r10 +movq $0,%r11 + +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq %rcx,%rax +mulq %rcx +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq %rcx,%rax +mulq %rsi +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + + +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq %rbx,%rax +mulq %rsi +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq %rbp,%rax +mulq %rcx +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq %rbx,%rax +mulq %rbx +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq %rbx,%rax +mulq %rbp +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq %rbx,%rax +mulq %rcx +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq %rbp,%rax +mulq %rbp +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq %r10,%rbp +addq %r9,%rbp +adcq $0,%r11 + +movq %r12,%rcx +addq %r11,%rcx +adcq $0,%r13 + +movq %r14,%rsi +addq %r13,%rsi +adcq $0,%r15 + +shld $1,%rsi,%r15 +imul $19,%r15,%rbx +andq mask63(%rip),%rsi + +addq %r8,%rbx +adcq $0,%rbp +adcq $0,%rcx +adcq $0,%rsi + +subq $1,%rdi +cmpq $0,%rdi + +jne .L + +movq 56(%rsp),%rdi + +movq %rbx,0(%rdi) +movq %rbp,8(%rdi) +movq %rcx,16(%rdi) +movq %rsi,24(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_pack.c new file mode 120000 index 0000000000..c92109ac1d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_pow2523.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_pow2523.c new file mode 120000 index 0000000000..3eb9dd58ec --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_pow2523.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pow2523.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_setint.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_setint.c new file mode 120000 index 0000000000..6ae1104ea9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_setint.c @@ -0,0 +1 @@ +../amd64-64/fe25519_setint.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_square.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_square.S new file mode 100644 index 0000000000..33d6fcf543 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_square.S @@ -0,0 +1,180 @@ +// linker define fe25519_square +// linker use mask63 + +/* Assembly for field squaring. */ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_square) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_square) +_CRYPTO_SHARED_NAMESPACE(fe25519_square): +CRYPTO_SHARED_NAMESPACE(fe25519_square): + +movq %rsp,%r11 +andq $-32,%rsp +subq $56,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) + +movq 24(%rsi),%rax +mulq 24(%rsi) +movq %rax,%r12 +movq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq 8(%rsi),%rax +mulq 24(%rsi) +movq %rax,%r8 +movq $0,%r9 +movq %rdx,%r10 +movq $0,%r11 + +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 16(%rsi),%rax +mulq 16(%rsi) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 16(%rsi),%rax +mulq 24(%rsi) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 0(%rsi),%rax +mulq 24(%rsi) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 8(%rsi),%rax +mulq 16(%rsi) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 0(%rsi),%rax +mulq 0(%rsi) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 0(%rsi),%rax +mulq 8(%rsi) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 0(%rsi),%rax +mulq 16(%rsi) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 8(%rsi),%rax +mulq 8(%rsi) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq %r8,0(%rdi) +movq %r10,8(%rdi) +movq %r12,16(%rdi) +movq %r14,24(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_sub.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_sub.S new file mode 120000 index 0000000000..5054d0b99e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_sub.S @@ -0,0 +1 @@ +../amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_unpack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_unpack.c new file mode 120000 index 0000000000..98bfaced87 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519.h new file mode 100644 index 0000000000..e594b8cc7e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519.h @@ -0,0 +1,99 @@ +#ifndef GE25519_H +#define GE25519_H + +#include "fe25519.h" +#include "sc25519.h" + +#define ge25519 CRYPTO_NAMESPACE(ge25519) +#define ge25519_base CRYPTO_NAMESPACE(ge25519_base) +#define ge25519_unpackneg_vartime CRYPTO_NAMESPACE(unpackneg_vartime) +#define ge25519_pack CRYPTO_NAMESPACE(ge25519_pack) +#define ge25519_isneutral_vartime CRYPTO_NAMESPACE(isneutral_vartime) +#define ge25519_add CRYPTO_NAMESPACE(ge25519_add) +#define ge25519_double CRYPTO_NAMESPACE(ge25519_double) +#define ge25519_double_scalarmult_vartime CRYPTO_NAMESPACE(double_scalarmult_vartime) +#define ge25519_multi_scalarmult_vartime CRYPTO_NAMESPACE(ge25519_multi_scalarmult_vartime) +#define ge25519_scalarmult_base CRYPTO_NAMESPACE(ge25519_scalarmult_base) +#define ge25519_p1p1_to_p2 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2) +#define ge25519_p1p1_to_p3 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3) +#define ge25519_add_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_add_p1p1) +#define ge25519_dbl_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1) +#define choose_t CRYPTO_SHARED_NAMESPACE(choose_t) +#define ge25519_nielsadd2 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2) +#define ge25519_nielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1) +#define ge25519_pnielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1) +#define ge25519_double_scalarmult_precompute CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) +#define ge25519_double_scalarmult_process CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + +#define ge25519_p3 ge25519 + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; + fe25519 t; +} ge25519; + +typedef struct +{ + fe25519 x; + fe25519 z; + fe25519 y; + fe25519 t; +} ge25519_p1p1; + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; +} ge25519_p2; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 t2d; +} ge25519_niels; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 z; + fe25519 t2d; +} ge25519_pniels; + +extern void ge25519_p1p1_to_p2(ge25519_p2 *r, const ge25519_p1p1 *p); +extern void ge25519_p1p1_to_p3(ge25519_p3 *r, const ge25519_p1p1 *p); +extern void ge25519_add_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_p3 *q); +extern void ge25519_dbl_p1p1(ge25519_p1p1 *r, const ge25519_p2 *p); +extern void choose_t(ge25519_niels *t, unsigned long long pos, signed long long b, const ge25519_niels *base_multiples); +extern void ge25519_nielsadd2(ge25519_p3 *r, const ge25519_niels *q); +extern void ge25519_nielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_niels *q); +extern void ge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_pniels *q); + +extern const ge25519 ge25519_base; + +extern int ge25519_unpackneg_vartime(ge25519 *r, const unsigned char p[32]); + +extern void ge25519_pack(unsigned char r[32], const ge25519 *p); + +extern int ge25519_isneutral_vartime(const ge25519 *p); + +extern void ge25519_add(ge25519 *r, const ge25519 *p, const ge25519 *q); + +extern void ge25519_double(ge25519 *r, const ge25519 *p); + +extern void ge25519_double_scalarmult_precompute(ge25519_pniels *pre1, const ge25519_p3 *p1, unsigned long long PRE1_SIZE); +extern void ge25519_double_scalarmult_process(ge25519_p3 *r, const signed char *, const signed char *, const ge25519_pniels *, const ge25519_niels *); + +/* computes [s1]p1 + [s2]ge25519_base */ +extern void ge25519_double_scalarmult_vartime(ge25519 *r, const ge25519 *p1, const sc25519 *s1, const sc25519 *s2); + +extern void ge25519_multi_scalarmult_vartime(ge25519 *r, ge25519 *p, sc25519 *s, const unsigned long long npoints); + +extern void ge25519_scalarmult_base(ge25519 *r, const sc25519 *s); + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_base_slide_multiples.data b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_base_slide_multiples.data new file mode 120000 index 0000000000..36c9553260 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_base_slide_multiples.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_slide_multiples.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_double_scalarmult_precompute.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_double_scalarmult_precompute.S new file mode 100644 index 0000000000..b9e66c7696 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_double_scalarmult_precompute.S @@ -0,0 +1,3403 @@ +// linker define ge25519_double_scalarmult_precompute +// linker use EC2D0 EC2D1 EC2D2 EC2D3 mask63 + +/* Assembly for the precomputaion phase used in double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) +#define EC2D0 CRYPTO_SHARED_NAMESPACE(EC2D0) +#define EC2D1 CRYPTO_SHARED_NAMESPACE(EC2D1) +#define EC2D2 CRYPTO_SHARED_NAMESPACE(EC2D2) +#define EC2D3 CRYPTO_SHARED_NAMESPACE(EC2D3) + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): + + movq %rsp,%r11 + andq $-32,%rsp + subq $392,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + decq %rdx + movq %rdx,56(%rsp) + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 32(%rsi),%r8 + movq 40(%rsi),%r9 + movq 48(%rsi),%r10 + movq 56(%rsi),%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + movq 64(%rsi),%r8 + movq 72(%rsi),%r9 + movq 80(%rsi),%r10 + movq 88(%rsi),%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsi),%r8 + movq 104(%rsi),%r9 + movq 112(%rsi),%r10 + movq 120(%rsi),%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + /* dbl p1p1 */ + + // square + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,64(%rsp) + movq %r10,72(%rsp) + movq %r12,80(%rsp) + movq %r14,88(%rsp) + + // square + movq 32(%rdi),%rbx + movq 40(%rdi),%rbp + movq 48(%rdi),%rcx + movq 56(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,96(%rsp) + movq %r10,104(%rsp) + movq %r12,112(%rsp) + movq %r14,120(%rsp) + + // square + movq 64(%rdi),%rbx + movq 72(%rdi),%rbp + movq 80(%rdi),%rcx + movq 88(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r10,136(%rsp) + movq %r12,144(%rsp) + movq %r14,152(%rsp) + + // sub + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // sub + movq $0,%r12 + movq $0,%r13 + movq $0,%r14 + movq $0,%r15 + + subq 96(%rsp),%r12 + sbbq 104(%rsp),%r13 + sbbq 112(%rsp),%r14 + sbbq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,160(%rsp) + movq %r13,168(%rsp) + movq %r14,176(%rsp) + movq %r15,184(%rsp) + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,224(%rsp) + movq %r13,232(%rsp) + movq %r14,240(%rsp) + movq %r15,248(%rsp) + + // sub + subq 96(%rsp),%r8 + sbbq 104(%rsp),%r9 + sbbq 112(%rsp),%r10 + sbbq 120(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 128(%rsp),%r12 + sbbq 136(%rsp),%r13 + sbbq 144(%rsp),%r14 + sbbq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // add + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + + addq 32(%rdi),%r8 + adcq 40(%rdi),%r9 + adcq 48(%rdi),%r10 + adcq 56(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + movq 96(%rsp),%rbx + movq 104(%rsp),%rbp + movq 112(%rsp),%rcx + movq 120(%rsp),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + addq 64(%rsp),%r8 + adcq 72(%rsp),%r10 + adcq 80(%rsp),%r12 + adcq 88(%rsp),%r14 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + addq 160(%rsp),%r8 + adcq 168(%rsp),%r10 + adcq 176(%rsp),%r12 + adcq 184(%rsp),%r14 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r10,200(%rsp) + movq %r12,208(%rsp) + movq %r14,216(%rsp) + + /* p1p1 to p3 */ + + // mul + movq 200(%rsp),%rax + mulq 312(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 208(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 216(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 208(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 216(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 216(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 192(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 200(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 208(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 216(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 192(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 192(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 200(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 192(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 200(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 208(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,64(%rsp) + movq %r10,72(%rsp) + movq %r12,80(%rsp) + movq %r14,88(%rsp) + + // mul + movq 232(%rsp),%rax + mulq 280(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 240(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 248(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 280(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 248(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 248(%rsp),%rax + mulq 280(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 224(%rsp),%rax + mulq 280(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 240(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 224(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 232(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 232(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 240(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,96(%rsp) + movq %r10,104(%rsp) + movq %r12,112(%rsp) + movq %r14,120(%rsp) + + // mul + movq 232(%rsp),%rax + mulq 312(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 240(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 248(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 248(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 248(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 224(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 240(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 224(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 232(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 232(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 240(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,128(%rsp) + movq %r10,136(%rsp) + movq %r12,144(%rsp) + movq %r14,152(%rsp) + + // mul + movq 200(%rsp),%rax + mulq 280(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 208(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 216(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 208(%rsp),%rax + mulq 280(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 216(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 216(%rsp),%rax + mulq 280(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 192(%rsp),%rax + mulq 280(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 200(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 208(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 216(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 192(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 192(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 200(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 192(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 200(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 208(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,160(%rsp) + movq %r10,168(%rsp) + movq %r12,176(%rsp) + movq %r14,184(%rsp) + + // Convert pre[0] to projective Niels representation + movq 0(%rdi),%rbx + movq 8(%rdi),%rcx + movq 16(%rdi),%rbp + movq 24(%rdi),%rsi + + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + // mul + movq EC2D1(%rip),%rax + mulq 120(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq EC2D2(%rip),%rax + mulq 112(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D3(%rip),%rax + mulq 104(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D2(%rip),%rax + mulq 120(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq EC2D3(%rip),%rax + mulq 112(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq EC2D3(%rip),%rax + mulq 120(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq EC2D0(%rip),%rax + mulq 120(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D1(%rip),%rax + mulq 112(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D2(%rip),%rax + mulq 104(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D3(%rip),%rax + mulq 96(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq EC2D0(%rip),%rax + mulq 96(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D0(%rip),%rax + mulq 104(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq EC2D1(%rip),%rax + mulq 96(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq EC2D0(%rip),%rax + mulq 112(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq EC2D1(%rip),%rax + mulq 104(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq EC2D2(%rip),%rax + mulq 96(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,96(%rdi) + movq %r10,104(%rdi) + movq %r12,112(%rdi) + movq %r14,120(%rdi) + + movq $0,384(%rsp) + +.L: + // pnielsadd_p1p1 + + movq 96(%rsp),%r8 + movq 104(%rsp),%r9 + movq 112(%rsp),%r10 + movq 120(%rsp),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + addq 64(%rsp),%r12 + adcq 72(%rsp),%r13 + adcq 80(%rsp),%r14 + adcq 88(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // mul + movq 328(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 336(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 344(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 336(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 344(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 344(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 320(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 328(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 336(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 344(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 320(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 320(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 328(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 320(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 328(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 336(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,320(%rsp) + movq %r10,328(%rsp) + movq %r12,336(%rsp) + movq %r14,344(%rsp) + + // mul + movq 360(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 368(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 376(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 368(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 376(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 376(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 352(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 360(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 368(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 376(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 352(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 352(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 360(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 352(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 360(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 368(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r10 + adcq 336(%rsp),%r12 + adcq 344(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r10,264(%rsp) + movq %r12,272(%rsp) + movq %r14,280(%rsp) + + // sub + subq 320(%rsp),%r9 + sbbq 328(%rsp),%r11 + sbbq 336(%rsp),%r13 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,192(%rsp) + movq %r11,200(%rsp) + movq %r13,208(%rsp) + movq %r15,216(%rsp) + + // mul + movq 168(%rsp),%rax + mulq 120(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 176(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 184(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 176(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 184(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 184(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 160(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 168(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 176(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 184(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 160(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 160(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 168(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 160(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 168(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 176(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,320(%rsp) + movq %r10,328(%rsp) + movq %r12,336(%rsp) + movq %r14,344(%rsp) + + // mul + movq 136(%rsp),%rax + mulq 88(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 144(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 152(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 144(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 152(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 152(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 128(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 136(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 144(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 152(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 128(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 128(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 136(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 128(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 136(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 144(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r10 + adcq 336(%rsp),%r12 + adcq 344(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,224(%rsp) + movq %r10,232(%rsp) + movq %r12,240(%rsp) + movq %r14,248(%rsp) + + // sub + subq 320(%rsp),%r9 + sbbq 328(%rsp),%r11 + sbbq 336(%rsp),%r13 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,288(%rsp) + movq %r11,296(%rsp) + movq %r13,304(%rsp) + movq %r15,312(%rsp) + + /* p1p1 to p3 */ + + // mul + movq 200(%rsp),%rax + mulq 312(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 208(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 216(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 208(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 216(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 216(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 192(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 200(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 208(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 216(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 192(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 192(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 200(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 192(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 200(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 208(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,128(%rdi) + movq %r10,136(%rdi) + movq %r12,144(%rdi) + movq %r14,152(%rdi) + + // mul + movq 232(%rsp),%rax + mulq 280(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 240(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 248(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 280(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 248(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 248(%rsp),%rax + mulq 280(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 224(%rsp),%rax + mulq 280(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 240(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 224(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 232(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 232(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 240(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,160(%rdi) + movq %r10,168(%rdi) + movq %r12,176(%rdi) + movq %r14,184(%rdi) + + // mul + movq 232(%rsp),%rax + mulq 312(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 240(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 248(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 248(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 248(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 224(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 240(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 224(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 232(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 232(%rsp),%rax + mulq 296(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 240(%rsp),%rax + mulq 288(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,192(%rdi) + movq %r10,200(%rdi) + movq %r12,208(%rdi) + movq %r14,216(%rdi) + + // mul + movq 200(%rsp),%rax + mulq 280(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 208(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 216(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 208(%rsp),%rax + mulq 280(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 216(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 216(%rsp),%rax + mulq 280(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 192(%rsp),%rax + mulq 280(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 200(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 208(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 216(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 192(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 192(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 200(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 192(%rsp),%rax + mulq 272(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 200(%rsp),%rax + mulq 264(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 208(%rsp),%rax + mulq 256(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,224(%rdi) + movq %r10,232(%rdi) + movq %r12,240(%rdi) + movq %r14,248(%rdi) + + // Convert pre[i1] to projective Niels representation + movq 128(%rdi),%rbx + movq 136(%rdi),%rcx + movq 144(%rdi),%rbp + movq 152(%rdi),%rsi + + movq 160(%rdi),%r8 + movq 168(%rdi),%r9 + movq 176(%rdi),%r10 + movq 184(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r8,128(%rdi) + movq %r9,136(%rdi) + movq %r10,144(%rdi) + movq %r11,152(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,160(%rdi) + movq %r13,168(%rdi) + movq %r14,176(%rdi) + movq %r15,184(%rdi) + + // mul + movq EC2D1(%rip),%rax + mulq 248(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq EC2D2(%rip),%rax + mulq 240(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D3(%rip),%rax + mulq 232(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D2(%rip),%rax + mulq 248(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq EC2D3(%rip),%rax + mulq 240(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq EC2D3(%rip),%rax + mulq 248(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq EC2D0(%rip),%rax + mulq 248(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D1(%rip),%rax + mulq 240(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D2(%rip),%rax + mulq 232(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq EC2D3(%rip),%rax + mulq 224(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq EC2D0(%rip),%rax + mulq 224(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq EC2D0(%rip),%rax + mulq 232(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq EC2D1(%rip),%rax + mulq 224(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq EC2D0(%rip),%rax + mulq 240(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq EC2D1(%rip),%rax + mulq 232(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq EC2D2(%rip),%rax + mulq 224(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,224(%rdi) + movq %r10,232(%rdi) + movq %r12,240(%rdi) + movq %r14,248(%rdi) + + addq $128,%rdi + + movq 384(%rsp),%r8 + incq %r8 + movq %r8,384(%rsp) + + cmpq 56(%rsp),%r8 + + jl .L + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_double_scalarmult_process.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_double_scalarmult_process.S new file mode 100644 index 0000000000..b8529c0518 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_double_scalarmult_process.S @@ -0,0 +1,6885 @@ +// linker define ge25519_double_scalarmult_process +// linker use mask63 + +/* Assembly for double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): + + movq %rsp,%r11 + andq $-32,%rsp + subq $464,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + // setneutral + movq $0,%rax + movq $1,%rbx + + movq %rax,0(%rdi) + movq %rax,8(%rdi) + movq %rax,16(%rdi) + movq %rax,24(%rdi) + + movq %rbx,32(%rdi) + movq %rax,40(%rdi) + movq %rax,48(%rdi) + movq %rax,56(%rdi) + + movq %rbx,64(%rdi) + movq %rax,72(%rdi) + movq %rax,80(%rdi) + movq %rax,88(%rdi) + + movq %rax,96(%rdi) + movq %rax,104(%rdi) + movq %rax,112(%rdi) + movq %rax,120(%rdi) + + movq $255,%rax + addq $255,%rsi + addq $255,%rdx + + movq %rdi,56(%rsp) + movq %rcx,64(%rsp) + movq %r8,72(%rsp) + +.L1: + movb 0(%rsi),%r14b + movb 0(%rdx),%r15b + + cmpb $0,%r14b + jg .L2 + + cmpb $0,%r15b + jg .L2 + + decq %rsi + decq %rdx + + decq %rax + cmpq $0,%rax + + jge .L1 + + cmpq $0,%rax + jl .L10 + +.L2: + movq %rsi,80(%rsp) + movq %rdx,88(%rsp) + movq %rax,96(%rsp) + +.L3: + /* dbl p1p1 */ + + // square + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,112(%rsp) + movq %r10,120(%rsp) + movq %r12,128(%rsp) + movq %r14,136(%rsp) + + // square + movq 32(%rdi),%rbx + movq 40(%rdi),%rbp + movq 48(%rdi),%rcx + movq 56(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,144(%rsp) + movq %r10,152(%rsp) + movq %r12,160(%rsp) + movq %r14,168(%rsp) + + // square + movq 64(%rdi),%rbx + movq 72(%rdi),%rbp + movq 80(%rdi),%rcx + movq 88(%rdi),%rsi + + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,176(%rsp) + movq %r10,184(%rsp) + movq %r12,192(%rsp) + movq %r14,200(%rsp) + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,112(%rsp) + movq %r9,120(%rsp) + movq %r10,128(%rsp) + movq %r11,136(%rsp) + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 144(%rsp),%r8 + sbbq 152(%rsp),%r9 + sbbq 160(%rsp),%r10 + sbbq 168(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r9,312(%rsp) + movq %r10,320(%rsp) + movq %r11,328(%rsp) + + // add + addq 144(%rsp),%r12 + adcq 152(%rsp),%r13 + adcq 160(%rsp),%r14 + adcq 168(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,272(%rsp) + movq %r13,280(%rsp) + movq %r14,288(%rsp) + movq %r15,296(%rsp) + + // sub + subq 176(%rsp),%r12 + sbbq 184(%rsp),%r13 + sbbq 192(%rsp),%r14 + sbbq 200(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,336(%rsp) + movq %r13,344(%rsp) + movq %r14,352(%rsp) + movq %r15,360(%rsp) + + // add + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + addq 32(%rdi),%rbx + adcq 40(%rdi),%rbp + adcq 48(%rdi),%rcx + adcq 56(%rdi),%rsi + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%rbx + adcq %rdx,%rbp + adcq %rdx,%rcx + adcq %rdx,%rsi + + cmovc %rax,%rdx + addq %rdx,%rbx + + // square + movq %rsi,%rax + mulq %rsi + movq %rax,%r12 + xorq %r13,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq %rbp,%rax + mulq %rsi + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rcx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rcx,%rax + mulq %rsi + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq %rbx,%rax + mulq %rsi + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq %rbp,%rax + mulq %rcx + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq %rbx,%rax + mulq %rbx + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq %rbx,%rax + mulq %rbp + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq %rbx,%rax + mulq %rcx + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq %rbp,%rax + mulq %rbp + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + imul $19,%r15,%r15 + andq mask63(%rip),%r14 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + addq 112(%rsp),%r8 + adcq 120(%rsp),%r10 + adcq 128(%rsp),%r12 + adcq 136(%rsp),%r14 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // sub + subq 144(%rsp),%r8 + sbbq 152(%rsp),%r10 + sbbq 160(%rsp),%r12 + sbbq 168(%rsp),%r14 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r10 + sbbq %rdx,%r12 + sbbq %rdx,%r14 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,240(%rsp) + movq %r10,248(%rsp) + movq %r12,256(%rsp) + movq %r14,264(%rsp) + + movq 80(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,80(%rsp) + movq 64(%rsp),%rdi + + cmpb $0,%r14b + jg .L4 + jl .L5 + je .L6 + +.L4: + /* p1p1 to p3 */ + + // mul + movq 248(%rsp),%rax + mulq 360(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 256(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 264(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 256(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 264(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 264(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 240(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 256(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 264(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 240(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 248(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 248(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 256(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,112(%rsp) + movq %r10,120(%rsp) + movq %r12,128(%rsp) + movq %r14,136(%rsp) + + // mul + movq 280(%rsp),%rax + mulq 328(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 288(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 296(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 288(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 296(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 296(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 272(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 280(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 288(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 296(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 272(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 272(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 280(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 272(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 280(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 288(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,144(%rsp) + movq %r10,152(%rsp) + movq %r12,160(%rsp) + movq %r14,168(%rsp) + + // mul + movq 280(%rsp),%rax + mulq 360(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 288(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 296(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 288(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 296(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 296(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 272(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 280(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 288(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 296(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 272(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 272(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 280(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 272(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 280(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 288(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,176(%rsp) + movq %r10,184(%rsp) + movq %r12,192(%rsp) + movq %r14,200(%rsp) + + // mul + movq 248(%rsp),%rax + mulq 328(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 256(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 264(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 256(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 264(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 264(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 240(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 256(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 264(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 240(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 248(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 248(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 256(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,208(%rsp) + movq %r10,216(%rsp) + movq %r12,224(%rsp) + movq %r14,232(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $128,%r14,%r14 + addq %r14,%rdi + + /* pnielsadd p1p1 */ + + movq 144(%rsp),%r8 + movq 152(%rsp),%r9 + movq 160(%rsp),%r10 + movq 168(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // add + addq 112(%rsp),%r12 + adcq 120(%rsp),%r13 + adcq 128(%rsp),%r14 + adcq 136(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,400(%rsp) + movq %r13,408(%rsp) + movq %r14,416(%rsp) + movq %r15,424(%rsp) + + // mul + movq 376(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 384(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 392(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 384(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 392(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 392(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 368(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 376(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 384(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 392(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 368(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 368(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 376(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 368(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 376(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 384(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,368(%rsp) + movq %r10,376(%rsp) + movq %r12,384(%rsp) + movq %r14,392(%rsp) + + // mul + movq 408(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 416(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 424(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 416(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 424(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 424(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 400(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 408(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 416(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 424(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 400(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 400(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 408(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 400(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 408(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 416(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r10 + adcq 384(%rsp),%r12 + adcq 392(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r10,312(%rsp) + movq %r12,320(%rsp) + movq %r14,328(%rsp) + + // sub + subq 368(%rsp),%r9 + sbbq 376(%rsp),%r11 + sbbq 384(%rsp),%r13 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,240(%rsp) + movq %r11,248(%rsp) + movq %r13,256(%rsp) + movq %r15,264(%rsp) + + // mul + movq 216(%rsp),%rax + mulq 120(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 224(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 232(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 232(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 232(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 208(%rsp),%rax + mulq 120(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 216(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 224(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 208(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 208(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 216(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 208(%rsp),%rax + mulq 112(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 216(%rsp),%rax + mulq 104(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 224(%rsp),%rax + mulq 96(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,368(%rsp) + movq %r10,376(%rsp) + movq %r12,384(%rsp) + movq %r14,392(%rsp) + + // mul + movq 184(%rsp),%rax + mulq 88(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 192(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 200(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 192(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 200(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 200(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 176(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 184(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 192(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 200(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 176(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 176(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 184(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 176(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 184(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 192(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r10 + adcq 384(%rsp),%r12 + adcq 392(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,272(%rsp) + movq %r10,280(%rsp) + movq %r12,288(%rsp) + movq %r14,296(%rsp) + + // sub + subq 368(%rsp),%r9 + sbbq 376(%rsp),%r11 + sbbq 384(%rsp),%r13 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,336(%rsp) + movq %r11,344(%rsp) + movq %r13,352(%rsp) + movq %r15,360(%rsp) + + jmp .L6 + +.L5: + /* p1p1 to p3 */ + + // mul + movq 248(%rsp),%rax + mulq 360(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 256(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 264(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 256(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 264(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 264(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 240(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 256(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 264(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 240(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 248(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 248(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 256(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,112(%rsp) + movq %r10,120(%rsp) + movq %r12,128(%rsp) + movq %r14,136(%rsp) + + // mul + movq 280(%rsp),%rax + mulq 328(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 288(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 296(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 288(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 296(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 296(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 272(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 280(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 288(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 296(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 272(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 272(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 280(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 272(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 280(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 288(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,144(%rsp) + movq %r10,152(%rsp) + movq %r12,160(%rsp) + movq %r14,168(%rsp) + + // mul + movq 280(%rsp),%rax + mulq 360(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 288(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 296(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 288(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 296(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 296(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 272(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 280(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 288(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 296(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 272(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 272(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 280(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 272(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 280(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 288(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,176(%rsp) + movq %r10,184(%rsp) + movq %r12,192(%rsp) + movq %r14,200(%rsp) + + // mul + movq 248(%rsp),%rax + mulq 328(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 256(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 264(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 256(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 264(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 264(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 240(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 256(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 264(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 240(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 248(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 248(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 256(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,208(%rsp) + movq %r10,216(%rsp) + movq %r12,224(%rsp) + movq %r14,232(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $128,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 96(%rdi),%r8 + sbbq 104(%rdi),%r9 + sbbq 112(%rdi),%r10 + sbbq 120(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,432(%rsp) + movq %r9,440(%rsp) + movq %r10,448(%rsp) + movq %r11,456(%rsp) + + /* pnielsadd p1p1 */ + + movq 144(%rsp),%r8 + movq 152(%rsp),%r9 + movq 160(%rsp),%r10 + movq 168(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // add + addq 112(%rsp),%r12 + adcq 120(%rsp),%r13 + adcq 128(%rsp),%r14 + adcq 136(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,400(%rsp) + movq %r13,408(%rsp) + movq %r14,416(%rsp) + movq %r15,424(%rsp) + + // mul + movq 376(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 384(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 392(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 384(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 392(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 392(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 368(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 376(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 384(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 392(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 368(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 368(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 376(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 368(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 376(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 384(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,368(%rsp) + movq %r10,376(%rsp) + movq %r12,384(%rsp) + movq %r14,392(%rsp) + + // mul + movq 408(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 416(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 424(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 416(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 424(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 424(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 400(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 408(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 416(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 424(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 400(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 400(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 408(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 400(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 408(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 416(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r10 + adcq 384(%rsp),%r12 + adcq 392(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r10,312(%rsp) + movq %r12,320(%rsp) + movq %r14,328(%rsp) + + // sub + subq 368(%rsp),%r9 + sbbq 376(%rsp),%r11 + sbbq 384(%rsp),%r13 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,240(%rsp) + movq %r11,248(%rsp) + movq %r13,256(%rsp) + movq %r15,264(%rsp) + + // mul + movq 216(%rsp),%rax + mulq 456(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 224(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 232(%rsp),%rax + mulq 440(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 232(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 232(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 208(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 216(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 224(%rsp),%rax + mulq 440(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 432(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 208(%rsp),%rax + mulq 432(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 208(%rsp),%rax + mulq 440(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 216(%rsp),%rax + mulq 432(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 208(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 216(%rsp),%rax + mulq 440(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 224(%rsp),%rax + mulq 432(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,368(%rsp) + movq %r10,376(%rsp) + movq %r12,384(%rsp) + movq %r14,392(%rsp) + + // mul + movq 184(%rsp),%rax + mulq 88(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 192(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 200(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 192(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 200(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 200(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 176(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 184(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 192(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 200(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 176(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 176(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 184(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 176(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 184(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 192(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + addq %r8,%r8 + adcq %r10,%r10 + adcq %r12,%r12 + adcq %r14,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r10 + adcq 384(%rsp),%r12 + adcq 392(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,272(%rsp) + movq %r10,280(%rsp) + movq %r12,288(%rsp) + movq %r14,296(%rsp) + + // sub + subq 368(%rsp),%r9 + sbbq 376(%rsp),%r11 + sbbq 384(%rsp),%r13 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,336(%rsp) + movq %r11,344(%rsp) + movq %r13,352(%rsp) + movq %r15,360(%rsp) + +.L6: + movq 88(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,88(%rsp) + movq 72(%rsp),%rdi + + cmpb $0,%r14b + jg .L7 + jl .L8 + je .L9 + +.L7: + /* p1p1 to p3 */ + + // mul + movq 248(%rsp),%rax + mulq 360(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 256(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 264(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 256(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 264(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 264(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 240(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 256(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 264(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 240(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 248(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 248(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 256(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,112(%rsp) + movq %r10,120(%rsp) + movq %r12,128(%rsp) + movq %r14,136(%rsp) + + // mul + movq 280(%rsp),%rax + mulq 328(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 288(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 296(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 288(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 296(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 296(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 272(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 280(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 288(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 296(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 272(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 272(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 280(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 272(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 280(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 288(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,144(%rsp) + movq %r10,152(%rsp) + movq %r12,160(%rsp) + movq %r14,168(%rsp) + + // mul + movq 280(%rsp),%rax + mulq 360(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 288(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 296(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 288(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 296(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 296(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 272(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 280(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 288(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 296(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 272(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 272(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 280(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 272(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 280(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 288(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,176(%rsp) + movq %r10,184(%rsp) + movq %r12,192(%rsp) + movq %r14,200(%rsp) + + // mul + movq 248(%rsp),%rax + mulq 328(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 256(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 264(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 256(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 264(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 264(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 240(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 256(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 264(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 240(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 248(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 248(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 256(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,208(%rsp) + movq %r10,216(%rsp) + movq %r12,224(%rsp) + movq %r14,232(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $96,%r14,%r14 + addq %r14,%rdi + + /* nielsadd p1p1 */ + + movq 144(%rsp),%r8 + movq 152(%rsp),%r9 + movq 160(%rsp),%r10 + movq 168(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // add + addq 112(%rsp),%r12 + adcq 120(%rsp),%r13 + adcq 128(%rsp),%r14 + adcq 136(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,400(%rsp) + movq %r13,408(%rsp) + movq %r14,416(%rsp) + movq %r15,424(%rsp) + + // mul + movq 376(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 384(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 392(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 384(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 392(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 392(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 368(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 376(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 384(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 392(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 368(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 368(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 376(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 368(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 376(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 384(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,368(%rsp) + movq %r10,376(%rsp) + movq %r12,384(%rsp) + movq %r14,392(%rsp) + + // mul + movq 408(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 416(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 424(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 416(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 424(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 424(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 400(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 408(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 416(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 424(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 400(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 400(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 408(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 400(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 408(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 416(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r10 + adcq 384(%rsp),%r12 + adcq 392(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r10,312(%rsp) + movq %r12,320(%rsp) + movq %r14,328(%rsp) + + // sub + subq 368(%rsp),%r9 + sbbq 376(%rsp),%r11 + sbbq 384(%rsp),%r13 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,240(%rsp) + movq %r11,248(%rsp) + movq %r13,256(%rsp) + movq %r15,264(%rsp) + + // mul + movq 216(%rsp),%rax + mulq 88(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 224(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 232(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 232(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 232(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 208(%rsp),%rax + mulq 88(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 216(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 224(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 208(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 208(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 216(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 208(%rsp),%rax + mulq 80(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 216(%rsp),%rax + mulq 72(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 224(%rsp),%rax + mulq 64(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + movq 176(%rsp),%r9 + movq 184(%rsp),%r11 + movq 192(%rsp),%r13 + movq 200(%rsp),%r15 + + addq %r9,%r9 + adcq %r11,%r11 + adcq %r13,%r13 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r9 + adcq %rdx,%r11 + adcq %rdx,%r13 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r9 + + // sub + movq %r9,%rbx + movq %r11,%rcx + movq %r13,%rbp + movq %r15,%rsi + + subq %r8,%r9 + sbbq %r10,%r11 + sbbq %r12,%r13 + sbbq %r14,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r9 + + movq %r9,336(%rsp) + movq %r11,344(%rsp) + movq %r13,352(%rsp) + movq %r15,360(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r10 + adcq %rbp,%r12 + adcq %rsi,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,272(%rsp) + movq %r10,280(%rsp) + movq %r12,288(%rsp) + movq %r14,296(%rsp) + + jmp .L9 + +.L8: + /* p1p1 to p3 */ + + // mul + movq 248(%rsp),%rax + mulq 360(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 256(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 264(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 256(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 264(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 264(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 240(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 256(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 264(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 240(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 248(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 248(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 256(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,112(%rsp) + movq %r10,120(%rsp) + movq %r12,128(%rsp) + movq %r14,136(%rsp) + + // mul + movq 280(%rsp),%rax + mulq 328(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 288(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 296(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 288(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 296(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 296(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 272(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 280(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 288(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 296(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 272(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 272(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 280(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 272(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 280(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 288(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,144(%rsp) + movq %r10,152(%rsp) + movq %r12,160(%rsp) + movq %r14,168(%rsp) + + // mul + movq 280(%rsp),%rax + mulq 360(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 288(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 296(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 288(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 296(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 296(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 272(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 280(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 288(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 296(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 272(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 272(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 280(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 272(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 280(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 288(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,176(%rsp) + movq %r10,184(%rsp) + movq %r12,192(%rsp) + movq %r14,200(%rsp) + + // mul + movq 248(%rsp),%rax + mulq 328(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 256(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 264(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 256(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 264(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 264(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 240(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 256(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 264(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 240(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 248(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 248(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 256(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,208(%rsp) + movq %r10,216(%rsp) + movq %r12,224(%rsp) + movq %r14,232(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $96,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rdi),%r8 + sbbq 72(%rdi),%r9 + sbbq 80(%rdi),%r10 + sbbq 88(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,432(%rsp) + movq %r9,440(%rsp) + movq %r10,448(%rsp) + movq %r11,456(%rsp) + + /* nielsadd p1p1 */ + + movq 144(%rsp),%r8 + movq 152(%rsp),%r9 + movq 160(%rsp),%r10 + movq 168(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // add + addq 112(%rsp),%r12 + adcq 120(%rsp),%r13 + adcq 128(%rsp),%r14 + adcq 136(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,400(%rsp) + movq %r13,408(%rsp) + movq %r14,416(%rsp) + movq %r15,424(%rsp) + + // mul + movq 376(%rsp),%rax + mulq 56(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 384(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 392(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 384(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 392(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 392(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 368(%rsp),%rax + mulq 56(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 376(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 384(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 392(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 368(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 368(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 376(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 368(%rsp),%rax + mulq 48(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 376(%rsp),%rax + mulq 40(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 384(%rsp),%rax + mulq 32(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,368(%rsp) + movq %r10,376(%rsp) + movq %r12,384(%rsp) + movq %r14,392(%rsp) + + // mul + movq 408(%rsp),%rax + mulq 24(%rdi) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 416(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 424(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 416(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 424(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 424(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 400(%rsp),%rax + mulq 24(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 408(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 416(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 424(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 400(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 400(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 408(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 400(%rsp),%rax + mulq 16(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 408(%rsp),%rax + mulq 8(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 416(%rsp),%rax + mulq 0(%rdi) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // add + movq %r8,%r9 + movq %r10,%r11 + movq %r12,%r13 + movq %r14,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r10 + adcq 384(%rsp),%r12 + adcq 392(%rsp),%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r10,312(%rsp) + movq %r12,320(%rsp) + movq %r14,328(%rsp) + + // sub + subq 368(%rsp),%r9 + sbbq 376(%rsp),%r11 + sbbq 384(%rsp),%r13 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r9,240(%rsp) + movq %r11,248(%rsp) + movq %r13,256(%rsp) + movq %r15,264(%rsp) + + // mul + movq 216(%rsp),%rax + mulq 456(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 224(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 232(%rsp),%rax + mulq 440(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 224(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 232(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 232(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 208(%rsp),%rax + mulq 456(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 216(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 224(%rsp),%rax + mulq 440(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 232(%rsp),%rax + mulq 432(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 208(%rsp),%rax + mulq 432(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 208(%rsp),%rax + mulq 440(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 216(%rsp),%rax + mulq 432(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 208(%rsp),%rax + mulq 448(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 216(%rsp),%rax + mulq 440(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 224(%rsp),%rax + mulq 432(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + // double + movq 176(%rsp),%r9 + movq 184(%rsp),%r11 + movq 192(%rsp),%r13 + movq 200(%rsp),%r15 + + addq %r9,%r9 + adcq %r11,%r11 + adcq %r13,%r13 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r9 + adcq %rdx,%r11 + adcq %rdx,%r13 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r9 + + // sub + movq %r9,%rbx + movq %r11,%rcx + movq %r13,%rbp + movq %r15,%rsi + + subq %r8,%r9 + sbbq %r10,%r11 + sbbq %r12,%r13 + sbbq %r14,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r9 + sbbq %rdx,%r11 + sbbq %rdx,%r13 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r9 + + movq %r9,336(%rsp) + movq %r11,344(%rsp) + movq %r13,352(%rsp) + movq %r15,360(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r10 + adcq %rbp,%r12 + adcq %rsi,%r14 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r10 + adcq %rdx,%r12 + adcq %rdx,%r14 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,272(%rsp) + movq %r10,280(%rsp) + movq %r12,288(%rsp) + movq %r14,296(%rsp) + +.L9: + movq 56(%rsp),%rdi + + /* p1p1 to p2 */ + + // mul + movq 248(%rsp),%rax + mulq 360(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 256(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 264(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 256(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 264(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 264(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 240(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 248(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 256(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 264(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 240(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 240(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 248(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 248(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 256(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,0(%rdi) + movq %r10,8(%rdi) + movq %r12,16(%rdi) + movq %r14,24(%rdi) + + // mul + movq 280(%rsp),%rax + mulq 328(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 288(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 296(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 288(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 296(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 296(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 272(%rsp),%rax + mulq 328(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 280(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 288(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 296(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 272(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 272(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 280(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 272(%rsp),%rax + mulq 320(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 280(%rsp),%rax + mulq 312(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 288(%rsp),%rax + mulq 304(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,32(%rdi) + movq %r10,40(%rdi) + movq %r12,48(%rdi) + movq %r14,56(%rdi) + + // mul + movq 280(%rsp),%rax + mulq 360(%rsp) + movq %rax,%r8 + xorq %r9,%r9 + movq %rdx,%r10 + xorq %r11,%r11 + + movq 288(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 296(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 288(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r10 + adcq $0,%r11 + movq %rdx,%r12 + xorq %r13,%r13 + + movq 296(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %r10 + imul $38,%r11,%r11 + movq %rax,%r10 + addq %rdx,%r11 + + movq 296(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r12 + adcq $0,%r13 + + movq $38,%rax + mulq %rdx + movq %rax,%r14 + movq %rdx,%r15 + + movq $38,%rax + mulq %r12 + imul $38,%r13,%r13 + movq %rax,%r12 + addq %rdx,%r13 + + movq 272(%rsp),%rax + mulq 360(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 280(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 288(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq 296(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r14 + adcq $0,%r15 + addq %rdx,%r8 + adcq $0,%r9 + + movq $38,%rax + mulq %r8 + imul $38,%r9,%r9 + movq %rax,%r8 + addq %rdx,%r9 + + movq 272(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r8 + adcq $0,%r9 + addq %rdx,%r10 + adcq $0,%r11 + + movq 272(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 280(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r10 + adcq $0,%r11 + addq %rdx,%r12 + adcq $0,%r13 + + movq 272(%rsp),%rax + mulq 352(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 280(%rsp),%rax + mulq 344(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + movq 288(%rsp),%rax + mulq 336(%rsp) + addq %rax,%r12 + adcq $0,%r13 + addq %rdx,%r14 + adcq $0,%r15 + + addq %r9,%r10 + adcq $0,%r11 + + addq %r11,%r12 + adcq $0,%r13 + + addq %r13,%r14 + adcq $0,%r15 + + shld $1,%r14,%r15 + andq mask63(%rip),%r14 + imul $19,%r15,%r15 + + addq %r15,%r8 + adcq $0,%r10 + adcq $0,%r12 + adcq $0,%r14 + + movq %r8,64(%rdi) + movq %r10,72(%rdi) + movq %r12,80(%rdi) + movq %r14,88(%rdi) + + movq 96(%rsp),%rax + decq %rax + movq %rax,96(%rsp) + + cmpq $0,%rax + + jge .L3 + +.L10: + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_pack.c new file mode 120000 index 0000000000..6029b816df --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_pack.c @@ -0,0 +1 @@ +../amd64-51/ge25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_unpackneg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_unpackneg.c new file mode 120000 index 0000000000..4b7f5c5cff --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/ge25519_unpackneg.c @@ -0,0 +1 @@ +../amd64-64/ge25519_unpackneg.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/implementors b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/implementors new file mode 100644 index 0000000000..d4d48bc231 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/implementors @@ -0,0 +1,5 @@ +ge25519_double_scalarmult_precompute.S: Kaushik Nath +ge25519_double_scalarmult_process.S: Kaushik Nath +fe25519_mul.S,fe25519_square.S,fe25519_nsquare.S: Kaushik Nath +mGnP.c: D. J. Bernstein +other code: see amd64-64-24k diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/mGnP.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/mGnP.c new file mode 100644 index 0000000000..4b2f0972c9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/mGnP.c @@ -0,0 +1,39 @@ +#include "crypto_mGnP.h" + +#include "sc25519.h" +#include "ge25519.h" +#include "shared-data.h" +#include "crypto_verify_32.h" + +void crypto_mGnP( + unsigned char *Q, + const unsigned char *m, + const unsigned char *n, + const unsigned char *P +) +{ + sc25519 m_internal; + signed char m_slide[256]; + unsigned char mcheck[32]; + sc25519 n_internal; + signed char n_slide[256]; + ge25519 P_internal; + ge25519_pniels P_multiples[P_MULTIPLES]; + ge25519_p3 result; + int ok; + + sc25519_from32bytes(&m_internal,m); + sc25519_from64bytes(&n_internal,n); + ok = ge25519_unpackneg_vartime(&P_internal,P); + + sc25519_to32bytes(mcheck,&m_internal); + if (crypto_verify_32(mcheck,m)) ok = 0; + + sc25519_slide(m_slide,&m_internal,G_WINDOWSIZE); + sc25519_slide(n_slide,&n_internal,P_WINDOWSIZE); + ge25519_double_scalarmult_precompute(P_multiples,&P_internal,P_MULTIPLES); + + ge25519_double_scalarmult_process(&result,n_slide,m_slide,P_multiples,G_multiples); + ge25519_pack(Q,&result); + Q[32] = ok; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_barrett.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_barrett.S new file mode 120000 index 0000000000..26a5f8a1c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_barrett.S @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_barrett.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_from64bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_from64bytes.c new file mode 120000 index 0000000000..f6a000bcdd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_from64bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from64bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_slide.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_slide.c new file mode 120000 index 0000000000..10ea12d89a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_slide.c @@ -0,0 +1 @@ +../amd64-51/sc25519_slide.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_to32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_to32bytes.c new file mode 120000 index 0000000000..6930ca05f6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/sc25519_to32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_to32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/shared-consts.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/shared-consts.c new file mode 120000 index 0000000000..e88d1f4568 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/shared-data.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/shared-data.c new file mode 120000 index 0000000000..055c21deb2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/shared-data.c @@ -0,0 +1 @@ +../amd64-51/shared-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/shared-data.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/shared-data.h new file mode 120000 index 0000000000..0f186b9458 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maa4/shared-data.h @@ -0,0 +1 @@ +../amd64-51/shared-data.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/architectures b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/architectures new file mode 100644 index 0000000000..ffc792f3c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/architectures @@ -0,0 +1 @@ +amd64 bmi2 adx diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519.h new file mode 120000 index 0000000000..0751205b74 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519.h @@ -0,0 +1 @@ +../amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_add.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_add.S new file mode 120000 index 0000000000..2f72e5bb09 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_add.S @@ -0,0 +1 @@ +../amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_freeze.S new file mode 120000 index 0000000000..65ecfcf5ce --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_getparity.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_getparity.c new file mode 120000 index 0000000000..d5e8b184b4 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_getparity.c @@ -0,0 +1 @@ +../amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_invert.c new file mode 120000 index 0000000000..06cd19180a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_iseq.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_iseq.c new file mode 120000 index 0000000000..3175be3915 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_iseq.c @@ -0,0 +1 @@ +../amd64-64/fe25519_iseq.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S new file mode 100644 index 0000000000..3eed673526 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S @@ -0,0 +1,148 @@ +// linker define fe25519_mul +// linker use mask63 + +/* Assembly for field multiplication. */ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_mul) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_mul) +_CRYPTO_SHARED_NAMESPACE(fe25519_mul): +CRYPTO_SHARED_NAMESPACE(fe25519_mul): + +movq %rsp,%r11 +andq $-32,%rsp +subq $56,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) + +movq %rdx,%rbx + +xorq %r13,%r13 +movq 0(%rbx),%rdx + +mulx 0(%rsi),%r8,%r9 +mulx 8(%rsi),%rcx,%r10 +adcx %rcx,%r9 + +mulx 16(%rsi),%rcx,%r11 +adcx %rcx,%r10 + +mulx 24(%rsi),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 8(%rbx),%rdx + +mulx 0(%rsi),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 8(%rsi),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 16(%rsi),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 24(%rsi),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 + +movq 16(%rbx),%rdx + +mulx 0(%rsi),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 8(%rsi),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 16(%rsi),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 24(%rsi),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax + +movq 24(%rbx),%rdx + +mulx 0(%rsi),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 8(%rsi),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 16(%rsi),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 24(%rsi),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S new file mode 100644 index 0000000000..7a95d8840e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S @@ -0,0 +1,147 @@ +// linker define fe25519_nsquare +// linker use mask63 + +/* Assembly for feedback field squaring. */ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +_CRYPTO_SHARED_NAMESPACE(fe25519_nsquare): +CRYPTO_SHARED_NAMESPACE(fe25519_nsquare): + +movq %rsp,%r11 +andq $-32,%rsp +subq $64,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) + +movq 0(%rsi),%rbx +movq 8(%rsi),%rbp +movq 16(%rsi),%rax +movq 24(%rsi),%rsi + +movq %rdx,%rdi + +.L: + +xorq %r13,%r13 +movq %rbx,%rdx + +mulx %rbp,%r9,%r10 + +mulx %rax,%rcx,%r11 +adcx %rcx,%r10 + +mulx %rsi,%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +movq %rbp,%rdx +xorq %r14,%r14 + +mulx %rax,%rcx,%rdx +adcx %rcx,%r11 +adox %rdx,%r12 + +movq %rbp,%rdx +mulx %rsi,%rcx,%rdx +adcx %rcx,%r12 +adox %rdx,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq %rax,%rdx + +mulx %rsi,%rcx,%r14 +adcx %rcx,%r13 +adcx %r15,%r14 + +shld $1,%r14,%r15 +shld $1,%r13,%r14 +shld $1,%r12,%r13 +shld $1,%r11,%r12 +shld $1,%r10,%r11 +shld $1,%r9,%r10 +shlq $1,%r9 + +xorq %rdx,%rdx +movq %rbx,%rdx +mulx %rdx,%r8,%rdx +adcx %rdx,%r9 + +movq %rbp,%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r10 +adcx %rdx,%r11 + +movq %rax,%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r12 +adcx %rdx,%r13 + +movq %rsi,%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r14 +adcx %rdx,%r15 + +xorq %rbx,%rbx +movq $38,%rdx + +mulx %r12,%r12,%rbp +adcx %r8,%r12 +adox %r9,%rbp + +mulx %r13,%rcx,%rax +adcx %rcx,%rbp +adox %r10,%rax + +mulx %r14,%rcx,%rsi +adcx %rcx,%rax +adox %r11,%rsi + +mulx %r15,%rcx,%r15 +adcx %rcx,%rsi +adox %rbx,%r15 +adcx %rbx,%r15 + +shld $1,%rsi,%r15 +andq mask63(%rip),%rsi + +imul $19,%r15,%rbx +addq %r12,%rbx +adcq $0,%rbp +adcq $0,%rax +adcq $0,%rsi + +subq $1,%rdi +cmpq $0,%rdi + +jne .L + +movq 56(%rsp),%rdi + +movq %rbx,0(%rdi) +movq %rbp,8(%rdi) +movq %rax,16(%rdi) +movq %rsi,24(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_pack.c new file mode 120000 index 0000000000..c92109ac1d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_pow2523.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_pow2523.c new file mode 120000 index 0000000000..3eb9dd58ec --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_pow2523.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pow2523.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_setint.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_setint.c new file mode 120000 index 0000000000..6ae1104ea9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_setint.c @@ -0,0 +1 @@ +../amd64-64/fe25519_setint.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_square.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_square.S new file mode 100644 index 0000000000..fe18303c14 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_square.S @@ -0,0 +1,130 @@ +// linker define fe25519_square +// linker use mask63 + +/* Assembly for field squaring. */ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_square) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_square) +_CRYPTO_SHARED_NAMESPACE(fe25519_square): +CRYPTO_SHARED_NAMESPACE(fe25519_square): + +movq %rsp,%r11 +andq $-32,%rsp +subq $56,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) + +xorq %r13,%r13 +movq 0(%rsi),%rdx + +mulx 8(%rsi),%r9,%r10 + +mulx 16(%rsi),%rcx,%r11 +adcx %rcx,%r10 + +mulx 24(%rsi),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +movq 8(%rsi),%rdx +xorq %r14,%r14 + +mulx 16(%rsi),%rcx,%rdx +adcx %rcx,%r11 +adox %rdx,%r12 + +movq 8(%rsi),%rdx +mulx 24(%rsi),%rcx,%rdx +adcx %rcx,%r12 +adox %rdx,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 16(%rsi),%rdx + +mulx 24(%rsi),%rcx,%r14 +adcx %rcx,%r13 +adcx %r15,%r14 + +shld $1,%r14,%r15 +shld $1,%r13,%r14 +shld $1,%r12,%r13 +shld $1,%r11,%r12 +shld $1,%r10,%r11 +shld $1,%r9,%r10 +shlq $1,%r9 + +xorq %rdx,%rdx +movq 0(%rsi),%rdx +mulx %rdx,%r8,%rdx +adcx %rdx,%r9 + +movq 8(%rsi),%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r10 +adcx %rdx,%r11 + +movq 16(%rsi),%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r12 +adcx %rdx,%r13 + +movq 24(%rsi),%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r14 +adcx %rdx,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_sub.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_sub.S new file mode 120000 index 0000000000..5054d0b99e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_sub.S @@ -0,0 +1 @@ +../amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_unpack.c new file mode 120000 index 0000000000..98bfaced87 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519.h new file mode 100644 index 0000000000..5881f0d660 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519.h @@ -0,0 +1,99 @@ +#ifndef GE25519_H +#define GE25519_H + +#include "fe25519.h" +#include "sc25519.h" + +#define ge25519 CRYPTO_NAMESPACE(ge25519) +#define ge25519_base CRYPTO_NAMESPACE(ge25519_base) +#define ge25519_unpackneg_vartime CRYPTO_NAMESPACE(unpackneg_vartime) +#define ge25519_pack CRYPTO_NAMESPACE(ge25519_pack) +#define ge25519_isneutral_vartime CRYPTO_NAMESPACE(isneutral_vartime) +#define ge25519_add CRYPTO_NAMESPACE(ge25519_add) +#define ge25519_double CRYPTO_NAMESPACE(ge25519_double) +#define ge25519_double_scalarmult_vartime CRYPTO_NAMESPACE(double_scalarmult_vartime) +#define ge25519_multi_scalarmult_vartime CRYPTO_NAMESPACE(ge25519_multi_scalarmult_vartime) +#define ge25519_scalarmult_base CRYPTO_NAMESPACE(ge25519_scalarmult_base) +#define ge25519_p1p1_to_p2 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2) +#define ge25519_p1p1_to_p3 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3) +#define ge25519_add_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_add_p1p1) +#define ge25519_dbl_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1) +#define choose_t CRYPTO_SHARED_NAMESPACE(choose_t) +#define ge25519_nielsadd2 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2) +#define ge25519_nielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1) +#define ge25519_pnielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1) +#define ge25519_double_scalarmult_precompute CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) +#define ge25519_double_scalarmult_process CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + +#define ge25519_p3 ge25519 + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; + fe25519 t; +} ge25519; + +typedef struct +{ + fe25519 x; + fe25519 z; + fe25519 y; + fe25519 t; +} ge25519_p1p1; + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; +} ge25519_p2; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 t2d; +} ge25519_niels; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 z; + fe25519 t2d; +} ge25519_pniels; + +extern void ge25519_p1p1_to_p2(ge25519_p2 *r, const ge25519_p1p1 *p); +extern void ge25519_p1p1_to_p3(ge25519_p3 *r, const ge25519_p1p1 *p); +extern void ge25519_add_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_p3 *q); +extern void ge25519_dbl_p1p1(ge25519_p1p1 *r, const ge25519_p2 *p); +extern void choose_t(ge25519_niels *t, unsigned long long pos, signed long long b, const ge25519_niels *base_multiples); +extern void ge25519_nielsadd2(ge25519_p3 *r, const ge25519_niels *q); +extern void ge25519_nielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_niels *q); +extern void ge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_pniels *q); + +extern const ge25519 ge25519_base; + +extern int ge25519_unpackneg_vartime(ge25519 *r, const unsigned char p[32]); + +extern void ge25519_pack(unsigned char r[32], const ge25519 *p); + +extern int ge25519_isneutral_vartime(const ge25519 *p); + +extern void ge25519_add(ge25519 *r, const ge25519 *p, const ge25519 *q); + +extern void ge25519_double(ge25519 *r, const ge25519 *p); + +extern void ge25519_double_scalarmult_precompute(ge25519_pniels *pre1, const ge25519_p3 *p1, unsigned long long PRE1_SIZE); +extern void ge25519_double_scalarmult_process(ge25519_p3 *r, const signed char *, const signed char *, const ge25519_pniels *, const ge25519_niels *); + +/* computes [s1]p1 + [s2]ge25519_base */ +extern int ge25519_double_scalarmult_vartime(unsigned char *Q, const unsigned char *p1, const unsigned char *s1, const unsigned char *s2); + +extern void ge25519_multi_scalarmult_vartime(ge25519 *r, ge25519 *p, sc25519 *s, const unsigned long long npoints); + +extern void ge25519_scalarmult_base(ge25519 *r, const sc25519 *s); + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_base_slide_multiples.data b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_base_slide_multiples.data new file mode 120000 index 0000000000..36c9553260 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_base_slide_multiples.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_slide_multiples.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_double_scalarmult_precompute.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_double_scalarmult_precompute.S new file mode 100644 index 0000000000..a59622307c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_double_scalarmult_precompute.S @@ -0,0 +1,2511 @@ +// linker define ge25519_double_scalarmult_precompute +// linker use EC2D0 EC2D1 EC2D2 EC2D3 mask63 + +/* Assembly for the precomputaion phase used in double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) +#define EC2D0 CRYPTO_SHARED_NAMESPACE(EC2D0) +#define EC2D1 CRYPTO_SHARED_NAMESPACE(EC2D1) +#define EC2D2 CRYPTO_SHARED_NAMESPACE(EC2D2) +#define EC2D3 CRYPTO_SHARED_NAMESPACE(EC2D3) + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): + + movq %rsp,%r11 + andq $-32,%rsp + subq $392,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + decq %rdx + movq %rdx,56(%rsp) + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 32(%rsi),%r8 + movq 40(%rsi),%r9 + movq 48(%rsi),%r10 + movq 56(%rsi),%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + movq 64(%rsi),%r8 + movq 72(%rsi),%r9 + movq 80(%rsi),%r10 + movq 88(%rsi),%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsi),%r8 + movq 104(%rsi),%r9 + movq 112(%rsi),%r10 + movq 120(%rsi),%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + /* dbl p1p1 */ + + // square + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 8(%rdi),%r9,%r10 + + mulx 16(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 8(%rdi),%rdx + xorq %r14,%r14 + + mulx 16(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 8(%rdi),%rdx + mulx 24(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 24(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 0(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 8(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 16(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 24(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // square + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 40(%rdi),%r9,%r10 + + mulx 48(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 40(%rdi),%rdx + xorq %r14,%r14 + + mulx 48(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 40(%rdi),%rdx + mulx 56(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 56(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 32(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 40(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 48(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 56(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 72(%rdi),%r9,%r10 + + mulx 80(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 72(%rdi),%rdx + xorq %r14,%r14 + + mulx 80(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 72(%rdi),%rdx + mulx 88(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 88(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 64(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 72(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 80(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 88(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // sub + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // sub + movq $0,%r12 + movq $0,%r13 + movq $0,%r14 + movq $0,%r15 + + subq 96(%rsp),%r12 + sbbq 104(%rsp),%r13 + sbbq 112(%rsp),%r14 + sbbq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,160(%rsp) + movq %r13,168(%rsp) + movq %r14,176(%rsp) + movq %r15,184(%rsp) + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,224(%rsp) + movq %r13,232(%rsp) + movq %r14,240(%rsp) + movq %r15,248(%rsp) + + // sub + subq 96(%rsp),%r8 + sbbq 104(%rsp),%r9 + sbbq 112(%rsp),%r10 + sbbq 120(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 128(%rsp),%r12 + sbbq 136(%rsp),%r13 + sbbq 144(%rsp),%r14 + sbbq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // add + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + + addq 32(%rdi),%r8 + adcq 40(%rdi),%r9 + adcq 48(%rdi),%r10 + adcq 56(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + xorq %r13,%r13 + movq 96(%rsp),%rdx + + mulx 104(%rsp),%r9,%r10 + + mulx 112(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 120(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 104(%rsp),%rdx + xorq %r14,%r14 + + mulx 112(%rsp),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 104(%rsp),%rdx + mulx 120(%rsp),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 112(%rsp),%rdx + + mulx 120(%rsp),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 96(%rsp),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 104(%rsp),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 112(%rsp),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 120(%rsp),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + addq 160(%rsp),%r8 + adcq 168(%rsp),%r9 + adcq 176(%rsp),%r10 + adcq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r9,200(%rsp) + movq %r10,208(%rsp) + movq %r11,216(%rsp) + + /* p1p1 to p3 */ + + // mul + xorq %r13,%r13 + movq 192(%rsp),%rdx + + mulx 288(%rsp),%r8,%r9 + mulx 296(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 304(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 312(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 200(%rsp),%rdx + + mulx 288(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 296(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 208(%rsp),%rdx + + mulx 288(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 296(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 216(%rsp),%rdx + + mulx 288(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 296(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // mul + xorq %r13,%r13 + movq 224(%rsp),%rdx + + mulx 256(%rsp),%r8,%r9 + mulx 264(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 272(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 280(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 232(%rsp),%rdx + + mulx 256(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 264(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 272(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 280(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 240(%rsp),%rdx + + mulx 256(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 264(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 272(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 280(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 248(%rsp),%rdx + + mulx 256(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 264(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 272(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 280(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // mul + xorq %r13,%r13 + movq 224(%rsp),%rdx + + mulx 288(%rsp),%r8,%r9 + mulx 296(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 304(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 312(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 232(%rsp),%rdx + + mulx 288(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 296(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 240(%rsp),%rdx + + mulx 288(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 296(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 248(%rsp),%rdx + + mulx 288(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 296(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // mul + xorq %r13,%r13 + movq 192(%rsp),%rdx + + mulx 256(%rsp),%r8,%r9 + mulx 264(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 272(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 280(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 200(%rsp),%rdx + + mulx 256(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 264(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 272(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 280(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 208(%rsp),%rdx + + mulx 256(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 264(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 272(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 280(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 216(%rsp),%rdx + + mulx 256(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 264(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 272(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 280(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,160(%rsp) + movq %r9,168(%rsp) + movq %r10,176(%rsp) + movq %r11,184(%rsp) + + // Convert pre[0] to projective Niels representation + movq 0(%rdi),%rbx + movq 8(%rdi),%rcx + movq 16(%rdi),%rbp + movq 24(%rdi),%rsi + + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + // mul + xorq %r13,%r13 + movq EC2D0(%rip),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq EC2D1(%rip),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq EC2D2(%rip),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq EC2D3(%rip),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + movq $0,384(%rsp) + +.L: + // pnielsadd_p1p1 + + movq 96(%rsp),%r8 + movq 104(%rsp),%r9 + movq 112(%rsp),%r10 + movq 120(%rsp),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + addq 64(%rsp),%r12 + adcq 72(%rsp),%r13 + adcq 80(%rsp),%r14 + adcq 88(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // mul + xorq %r13,%r13 + movq 320(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 328(%rsp),%rdx + + mulx 0(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 8(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 16(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 24(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 336(%rsp),%rdx + + mulx 0(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 8(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 16(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 24(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 344(%rsp),%rdx + + mulx 0(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 8(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 16(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 24(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // mul + xorq %r13,%r13 + movq 352(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 360(%rsp),%rdx + + mulx 32(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 40(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 48(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 56(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 368(%rsp),%rdx + + mulx 32(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 40(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 48(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 56(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 376(%rsp),%rdx + + mulx 32(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 40(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 48(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 56(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r9 + adcq 336(%rsp),%r10 + adcq 344(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 320(%rsp),%r12 + sbbq 328(%rsp),%r13 + sbbq 336(%rsp),%r14 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,192(%rsp) + movq %r13,200(%rsp) + movq %r14,208(%rsp) + movq %r15,216(%rsp) + + // mul + xorq %r13,%r13 + movq 160(%rsp),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 168(%rsp),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 176(%rsp),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 184(%rsp),%rdx + + mulx 96(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 104(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 112(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 120(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // mul + xorq %r13,%r13 + movq 128(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 136(%rsp),%rdx + + mulx 64(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 72(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 80(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 88(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 144(%rsp),%rdx + + mulx 64(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 72(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 80(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 88(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 152(%rsp),%rdx + + mulx 64(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 72(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 80(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 88(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r9 + adcq 336(%rsp),%r10 + adcq 344(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,224(%rsp) + movq %r9,232(%rsp) + movq %r10,240(%rsp) + movq %r11,248(%rsp) + + // sub + subq 320(%rsp),%r12 + sbbq 328(%rsp),%r13 + sbbq 336(%rsp),%r14 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + /* p1p1 to p3 */ + + // mul + xorq %r13,%r13 + movq 192(%rsp),%rdx + + mulx 288(%rsp),%r8,%r9 + mulx 296(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 304(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 312(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 200(%rsp),%rdx + + mulx 288(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 296(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 208(%rsp),%rdx + + mulx 288(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 296(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 216(%rsp),%rdx + + mulx 288(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 296(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,128(%rdi) + movq %r9,136(%rdi) + movq %r10,144(%rdi) + movq %r11,152(%rdi) + + // mul + xorq %r13,%r13 + movq 224(%rsp),%rdx + + mulx 256(%rsp),%r8,%r9 + mulx 264(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 272(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 280(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 232(%rsp),%rdx + + mulx 256(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 264(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 272(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 280(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 240(%rsp),%rdx + + mulx 256(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 264(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 272(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 280(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 248(%rsp),%rdx + + mulx 256(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 264(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 272(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 280(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,160(%rdi) + movq %r9,168(%rdi) + movq %r10,176(%rdi) + movq %r11,184(%rdi) + + // mul + xorq %r13,%r13 + movq 224(%rsp),%rdx + + mulx 288(%rsp),%r8,%r9 + mulx 296(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 304(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 312(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 232(%rsp),%rdx + + mulx 288(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 296(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 240(%rsp),%rdx + + mulx 288(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 296(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 248(%rsp),%rdx + + mulx 288(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 296(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,192(%rdi) + movq %r9,200(%rdi) + movq %r10,208(%rdi) + movq %r11,216(%rdi) + + // mul + xorq %r13,%r13 + movq 192(%rsp),%rdx + + mulx 256(%rsp),%r8,%r9 + mulx 264(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 272(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 280(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 200(%rsp),%rdx + + mulx 256(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 264(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 272(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 280(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 208(%rsp),%rdx + + mulx 256(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 264(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 272(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 280(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 216(%rsp),%rdx + + mulx 256(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 264(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 272(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 280(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,224(%rdi) + movq %r9,232(%rdi) + movq %r10,240(%rdi) + movq %r11,248(%rdi) + + // Convert pre[i1] to projective Niels representation + movq 128(%rdi),%rbx + movq 136(%rdi),%rcx + movq 144(%rdi),%rbp + movq 152(%rdi),%rsi + + movq 160(%rdi),%r8 + movq 168(%rdi),%r9 + movq 176(%rdi),%r10 + movq 184(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r8,128(%rdi) + movq %r9,136(%rdi) + movq %r10,144(%rdi) + movq %r11,152(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,160(%rdi) + movq %r13,168(%rdi) + movq %r14,176(%rdi) + movq %r15,184(%rdi) + + // mul + xorq %r13,%r13 + movq EC2D0(%rip),%rdx + + mulx 224(%rdi),%r8,%r9 + mulx 232(%rdi),%rcx,%r10 + adcx %rcx,%r9 + + mulx 240(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 248(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq EC2D1(%rip),%rdx + + mulx 224(%rdi),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 232(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 240(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 248(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq EC2D2(%rip),%rdx + + mulx 224(%rdi),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 232(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 240(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 248(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq EC2D3(%rip),%rdx + + mulx 224(%rdi),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rdi),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 240(%rdi),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 248(%rdi),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,224(%rdi) + movq %r9,232(%rdi) + movq %r10,240(%rdi) + movq %r11,248(%rdi) + + addq $128,%rdi + + movq 384(%rsp),%r8 + incq %r8 + movq %r8,384(%rsp) + + cmpq 56(%rsp),%r8 + + jl .L + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_double_scalarmult_process.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_double_scalarmult_process.S new file mode 100644 index 0000000000..86e7f7863f --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_double_scalarmult_process.S @@ -0,0 +1,5086 @@ +// linker define ge25519_double_scalarmult_process +// linker use mask63 + +/* Assembly for double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): + + movq %rsp,%r11 + andq $-32,%rsp + subq $464,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + // setint + movq $0,%rax + movq $1,%rbx + + movq %rax,0(%rdi) + movq %rax,8(%rdi) + movq %rax,16(%rdi) + movq %rax,24(%rdi) + + movq %rbx,32(%rdi) + movq %rax,40(%rdi) + movq %rax,48(%rdi) + movq %rax,56(%rdi) + + movq %rbx,64(%rdi) + movq %rax,72(%rdi) + movq %rax,80(%rdi) + movq %rax,88(%rdi) + + movq %rax,96(%rdi) + movq %rax,104(%rdi) + movq %rax,112(%rdi) + movq %rax,120(%rdi) + + movq $255,%rax + addq $255,%rsi + addq $255,%rdx + + movq %rdi,56(%rsp) + movq %rcx,64(%rsp) + movq %r8,72(%rsp) + +.L1: + movb 0(%rsi),%r14b + movb 0(%rdx),%r15b + + cmpb $0,%r14b + jg .L2 + + cmpb $0,%r15b + jg .L2 + + decq %rsi + decq %rdx + + decq %rax + cmpq $0,%rax + + jge .L1 + + cmpq $0,%rax + jl .L10 + +.L2: + movq %rsi,80(%rsp) + movq %rdx,88(%rsp) + movq %rax,96(%rsp) + +.L3: + /* dbl p1p1 */ + + // square + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 8(%rdi),%r9,%r10 + + mulx 16(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 8(%rdi),%rdx + xorq %r14,%r14 + + mulx 16(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 8(%rdi),%rdx + mulx 24(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 24(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 0(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 8(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 16(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 24(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,112(%rsp) + movq %r9,120(%rsp) + movq %r10,128(%rsp) + movq %r11,136(%rsp) + + // square + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 40(%rdi),%r9,%r10 + + mulx 48(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 40(%rdi),%rdx + xorq %r14,%r14 + + mulx 48(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 40(%rdi),%rdx + mulx 56(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 56(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 32(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 40(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 48(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 56(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,144(%rsp) + movq %r9,152(%rsp) + movq %r10,160(%rsp) + movq %r11,168(%rsp) + + // square + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 72(%rdi),%r9,%r10 + + mulx 80(%rdi),%rcx,%r11 + adcx %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + movq 72(%rdi),%rdx + xorq %r14,%r14 + + mulx 80(%rdi),%rcx,%rdx + adcx %rcx,%r11 + adox %rdx,%r12 + + movq 72(%rdi),%rdx + mulx 88(%rdi),%rcx,%rdx + adcx %rcx,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 88(%rdi),%rcx,%r14 + adcx %rcx,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq 64(%rdi),%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq 72(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r10 + adcx %rdx,%r11 + + movq 80(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r12 + adcx %rdx,%r13 + + movq 88(%rdi),%rdx + mulx %rdx,%rcx,%rdx + adcx %rcx,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,176(%rsp) + movq %r9,184(%rsp) + movq %r10,192(%rsp) + movq %r11,200(%rsp) + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,112(%rsp) + movq %r9,120(%rsp) + movq %r10,128(%rsp) + movq %r11,136(%rsp) + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 144(%rsp),%r8 + sbbq 152(%rsp),%r9 + sbbq 160(%rsp),%r10 + sbbq 168(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r9,312(%rsp) + movq %r10,320(%rsp) + movq %r11,328(%rsp) + + // add + addq 144(%rsp),%r12 + adcq 152(%rsp),%r13 + adcq 160(%rsp),%r14 + adcq 168(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,272(%rsp) + movq %r13,280(%rsp) + movq %r14,288(%rsp) + movq %r15,296(%rsp) + + // sub + subq 176(%rsp),%r12 + sbbq 184(%rsp),%r13 + sbbq 192(%rsp),%r14 + sbbq 200(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,336(%rsp) + movq %r13,344(%rsp) + movq %r14,352(%rsp) + movq %r15,360(%rsp) + + // add + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + addq 32(%rdi),%rbx + adcq 40(%rdi),%rbp + adcq 48(%rdi),%rcx + adcq 56(%rdi),%rsi + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%rbx + adcq %rdx,%rbp + adcq %rdx,%rcx + adcq %rdx,%rsi + + cmovc %rax,%rdx + addq %rdx,%rbx + + // square + xorq %r13,%r13 + movq %rbx,%rdx + + mulx %rbp,%r9,%r10 + + mulx %rcx,%r8,%r11 + adcx %r8,%r10 + + mulx %rsi,%r8,%r12 + adcx %r8,%r11 + adcx %r13,%r12 + + movq %rbp,%rdx + xorq %r14,%r14 + + mulx %rcx,%r8,%rdx + adcx %r8,%r11 + adox %rdx,%r12 + + movq %rbp,%rdx + mulx %rsi,%r8,%rdx + adcx %r8,%r12 + adox %rdx,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq %rcx,%rdx + + mulx %rsi,%r8,%r14 + adcx %r8,%r13 + adcx %r15,%r14 + + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + xorq %rdx,%rdx + movq %rbx,%rdx + mulx %rdx,%r8,%rdx + adcx %rdx,%r9 + + movq %rbp,%rdx + mulx %rdx,%rax,%rdx + adcx %rax,%r10 + adcx %rdx,%r11 + + movq %rcx,%rdx + mulx %rdx,%rax,%rdx + adcx %rax,%r12 + adcx %rdx,%r13 + + movq %rsi,%rdx + mulx %rdx,%rax,%rdx + adcx %rax,%r14 + adcx %rdx,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + addq 112(%rsp),%r8 + adcq 120(%rsp),%r9 + adcq 128(%rsp),%r10 + adcq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // sub + subq 144(%rsp),%r8 + sbbq 152(%rsp),%r9 + sbbq 160(%rsp),%r10 + sbbq 168(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,240(%rsp) + movq %r9,248(%rsp) + movq %r10,256(%rsp) + movq %r11,264(%rsp) + + movq 80(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,80(%rsp) + movq 64(%rsp),%rdi + + cmpb $0,%r14b + jg .L4 + jl .L5 + je .L6 + +.L4: + /* p1p1 to p3 */ + + // mul + xorq %r13,%r13 + movq 240(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 248(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 256(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 264(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,112(%rsp) + movq %r9,120(%rsp) + movq %r10,128(%rsp) + movq %r11,136(%rsp) + + // mul + xorq %r13,%r13 + movq 272(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 280(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 288(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 296(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,144(%rsp) + movq %r9,152(%rsp) + movq %r10,160(%rsp) + movq %r11,168(%rsp) + + // mul + xorq %r13,%r13 + movq 272(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 280(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 288(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 296(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,176(%rsp) + movq %r9,184(%rsp) + movq %r10,192(%rsp) + movq %r11,200(%rsp) + + // mul + xorq %r13,%r13 + movq 240(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 248(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 256(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 264(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,208(%rsp) + movq %r9,216(%rsp) + movq %r10,224(%rsp) + movq %r11,232(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $128,%r14,%r14 + addq %r14,%rdi + + /* pnielsadd p1p1 */ + + movq 144(%rsp),%r8 + movq 152(%rsp),%r9 + movq 160(%rsp),%r10 + movq 168(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // add + addq 112(%rsp),%r12 + adcq 120(%rsp),%r13 + adcq 128(%rsp),%r14 + adcq 136(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,400(%rsp) + movq %r13,408(%rsp) + movq %r14,416(%rsp) + movq %r15,424(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 368(%rsp),%r8,%r9 + mulx 376(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 384(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 392(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 400(%rsp),%r8,%r9 + mulx 408(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 416(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 424(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r9 + adcq 384(%rsp),%r10 + adcq 392(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r9,312(%rsp) + movq %r10,320(%rsp) + movq %r11,328(%rsp) + + // sub + subq 368(%rsp),%r12 + sbbq 376(%rsp),%r13 + sbbq 384(%rsp),%r14 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,240(%rsp) + movq %r13,248(%rsp) + movq %r14,256(%rsp) + movq %r15,264(%rsp) + + // mul + xorq %r13,%r13 + movq 96(%rdi),%rdx + + mulx 208(%rsp),%r8,%r9 + mulx 216(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 224(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 232(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 104(%rdi),%rdx + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 112(%rdi),%rdx + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 120(%rdi),%rdx + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // mul + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 176(%rsp),%r8,%r9 + mulx 184(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 192(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 200(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 72(%rdi),%rdx + + mulx 176(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 184(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 176(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 184(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 88(%rdi),%rdx + + mulx 176(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 184(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r9 + adcq 384(%rsp),%r10 + adcq 392(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,272(%rsp) + movq %r9,280(%rsp) + movq %r10,288(%rsp) + movq %r11,296(%rsp) + + // sub + subq 368(%rsp),%r12 + sbbq 376(%rsp),%r13 + sbbq 384(%rsp),%r14 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,336(%rsp) + movq %r13,344(%rsp) + movq %r14,352(%rsp) + movq %r15,360(%rsp) + + jmp .L6 + +.L5: + /* p1p1 to p3 */ + + // mul + xorq %r13,%r13 + movq 240(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 248(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 256(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 264(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,112(%rsp) + movq %r9,120(%rsp) + movq %r10,128(%rsp) + movq %r11,136(%rsp) + + // mul + xorq %r13,%r13 + movq 272(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 280(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 288(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 296(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,144(%rsp) + movq %r9,152(%rsp) + movq %r10,160(%rsp) + movq %r11,168(%rsp) + + // mul + xorq %r13,%r13 + movq 272(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 280(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 288(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 296(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,176(%rsp) + movq %r9,184(%rsp) + movq %r10,192(%rsp) + movq %r11,200(%rsp) + + // mul + xorq %r13,%r13 + movq 240(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 248(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 256(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 264(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,208(%rsp) + movq %r9,216(%rsp) + movq %r10,224(%rsp) + movq %r11,232(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $128,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 96(%rdi),%r8 + sbbq 104(%rdi),%r9 + sbbq 112(%rdi),%r10 + sbbq 120(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,432(%rsp) + movq %r9,440(%rsp) + movq %r10,448(%rsp) + movq %r11,456(%rsp) + + /* pnielsadd p1p1 */ + + movq 144(%rsp),%r8 + movq 152(%rsp),%r9 + movq 160(%rsp),%r10 + movq 168(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // add + addq 112(%rsp),%r12 + adcq 120(%rsp),%r13 + adcq 128(%rsp),%r14 + adcq 136(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,400(%rsp) + movq %r13,408(%rsp) + movq %r14,416(%rsp) + movq %r15,424(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 368(%rsp),%r8,%r9 + mulx 376(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 384(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 392(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 400(%rsp),%r8,%r9 + mulx 408(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 416(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 424(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r9 + adcq 384(%rsp),%r10 + adcq 392(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r9,312(%rsp) + movq %r10,320(%rsp) + movq %r11,328(%rsp) + + // sub + subq 368(%rsp),%r12 + sbbq 376(%rsp),%r13 + sbbq 384(%rsp),%r14 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,240(%rsp) + movq %r13,248(%rsp) + movq %r14,256(%rsp) + movq %r15,264(%rsp) + + // mul + xorq %r13,%r13 + movq 208(%rsp),%rdx + + mulx 432(%rsp),%r8,%r9 + mulx 440(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 448(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 456(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 216(%rsp),%rdx + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 448(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 456(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 224(%rsp),%rdx + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 448(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 456(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 232(%rsp),%rdx + + mulx 432(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 440(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 448(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 456(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // mul + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 176(%rsp),%r8,%r9 + mulx 184(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 192(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 200(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 72(%rdi),%rdx + + mulx 176(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 184(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 176(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 184(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 88(%rdi),%rdx + + mulx 176(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 184(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 192(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 200(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r9 + adcq 384(%rsp),%r10 + adcq 392(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,272(%rsp) + movq %r9,280(%rsp) + movq %r10,288(%rsp) + movq %r11,296(%rsp) + + // sub + subq 368(%rsp),%r12 + sbbq 376(%rsp),%r13 + sbbq 384(%rsp),%r14 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,336(%rsp) + movq %r13,344(%rsp) + movq %r14,352(%rsp) + movq %r15,360(%rsp) + +.L6: + movq 88(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,88(%rsp) + movq 72(%rsp),%rdi + + cmpb $0,%r14b + jg .L7 + jl .L8 + je .L9 + +.L7: + /* p1p1 to p3 */ + + // mul + xorq %r13,%r13 + movq 240(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 248(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 256(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 264(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,112(%rsp) + movq %r9,120(%rsp) + movq %r10,128(%rsp) + movq %r11,136(%rsp) + + // mul + xorq %r13,%r13 + movq 272(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 280(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 288(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 296(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,144(%rsp) + movq %r9,152(%rsp) + movq %r10,160(%rsp) + movq %r11,168(%rsp) + + // mul + xorq %r13,%r13 + movq 272(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 280(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 288(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 296(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,176(%rsp) + movq %r9,184(%rsp) + movq %r10,192(%rsp) + movq %r11,200(%rsp) + + // mul + xorq %r13,%r13 + movq 240(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 248(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 256(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 264(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,208(%rsp) + movq %r9,216(%rsp) + movq %r10,224(%rsp) + movq %r11,232(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $96,%r14,%r14 + addq %r14,%rdi + + /* nielsadd p1p1 */ + + movq 144(%rsp),%r8 + movq 152(%rsp),%r9 + movq 160(%rsp),%r10 + movq 168(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // add + addq 112(%rsp),%r12 + adcq 120(%rsp),%r13 + adcq 128(%rsp),%r14 + adcq 136(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,400(%rsp) + movq %r13,408(%rsp) + movq %r14,416(%rsp) + movq %r15,424(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 368(%rsp),%r8,%r9 + mulx 376(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 384(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 392(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 400(%rsp),%r8,%r9 + mulx 408(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 416(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 424(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r9 + adcq 384(%rsp),%r10 + adcq 392(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r9,312(%rsp) + movq %r10,320(%rsp) + movq %r11,328(%rsp) + + // sub + subq 368(%rsp),%r12 + sbbq 376(%rsp),%r13 + sbbq 384(%rsp),%r14 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,240(%rsp) + movq %r13,248(%rsp) + movq %r14,256(%rsp) + movq %r15,264(%rsp) + + // mul + xorq %r13,%r13 + movq 64(%rdi),%rdx + + mulx 208(%rsp),%r8,%r9 + mulx 216(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 224(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 232(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 72(%rdi),%rdx + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 80(%rdi),%rdx + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 88(%rdi),%rdx + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + movq 176(%rsp),%r12 + movq 184(%rsp),%r13 + movq 192(%rsp),%r14 + movq 200(%rsp),%r15 + + addq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + // sub + movq %r12,%rbx + movq %r13,%rcx + movq %r14,%rbp + movq %r15,%rsi + + subq %r8,%r12 + sbbq %r9,%r13 + sbbq %r10,%r14 + sbbq %r11,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r12 + + movq %r12,336(%rsp) + movq %r13,344(%rsp) + movq %r14,352(%rsp) + movq %r15,360(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r9 + adcq %rbp,%r10 + adcq %rsi,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,272(%rsp) + movq %r9,280(%rsp) + movq %r10,288(%rsp) + movq %r11,296(%rsp) + + jmp .L9 + +.L8: + /* p1p1 to p3 */ + + // mul + xorq %r13,%r13 + movq 240(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 248(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 256(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 264(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,112(%rsp) + movq %r9,120(%rsp) + movq %r10,128(%rsp) + movq %r11,136(%rsp) + + // mul + xorq %r13,%r13 + movq 272(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 280(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 288(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 296(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,144(%rsp) + movq %r9,152(%rsp) + movq %r10,160(%rsp) + movq %r11,168(%rsp) + + // mul + xorq %r13,%r13 + movq 272(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 280(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 288(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 296(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,176(%rsp) + movq %r9,184(%rsp) + movq %r10,192(%rsp) + movq %r11,200(%rsp) + + // mul + xorq %r13,%r13 + movq 240(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 248(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 256(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 264(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,208(%rsp) + movq %r9,216(%rsp) + movq %r10,224(%rsp) + movq %r11,232(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $96,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rdi),%r8 + sbbq 72(%rdi),%r9 + sbbq 80(%rdi),%r10 + sbbq 88(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,432(%rsp) + movq %r9,440(%rsp) + movq %r10,448(%rsp) + movq %r11,456(%rsp) + + /* nielsadd p1p1 */ + + movq 144(%rsp),%r8 + movq 152(%rsp),%r9 + movq 160(%rsp),%r10 + movq 168(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // add + addq 112(%rsp),%r12 + adcq 120(%rsp),%r13 + adcq 128(%rsp),%r14 + adcq 136(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,400(%rsp) + movq %r13,408(%rsp) + movq %r14,416(%rsp) + movq %r15,424(%rsp) + + // mul + xorq %r13,%r13 + movq 32(%rdi),%rdx + + mulx 368(%rsp),%r8,%r9 + mulx 376(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 384(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 392(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 40(%rdi),%rdx + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 48(%rdi),%rdx + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 56(%rdi),%rdx + + mulx 368(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 376(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 384(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 392(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // mul + xorq %r13,%r13 + movq 0(%rdi),%rdx + + mulx 400(%rsp),%r8,%r9 + mulx 408(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 416(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 424(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 8(%rdi),%rdx + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 16(%rdi),%rdx + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 24(%rdi),%rdx + + mulx 400(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 408(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 416(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 424(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r9 + adcq 384(%rsp),%r10 + adcq 392(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r9,312(%rsp) + movq %r10,320(%rsp) + movq %r11,328(%rsp) + + // sub + subq 368(%rsp),%r12 + sbbq 376(%rsp),%r13 + sbbq 384(%rsp),%r14 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,240(%rsp) + movq %r13,248(%rsp) + movq %r14,256(%rsp) + movq %r15,264(%rsp) + + // mul + xorq %r13,%r13 + movq 432(%rsp),%rdx + + mulx 208(%rsp),%r8,%r9 + mulx 216(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 224(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 232(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 440(%rsp),%rdx + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 448(%rsp),%rdx + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 456(%rsp),%rdx + + mulx 208(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 216(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 224(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 232(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + movq 176(%rsp),%r12 + movq 184(%rsp),%r13 + movq 192(%rsp),%r14 + movq 200(%rsp),%r15 + + addq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + // sub + movq %r12,%rbx + movq %r13,%rcx + movq %r14,%rbp + movq %r15,%rsi + + subq %r8,%r12 + sbbq %r9,%r13 + sbbq %r10,%r14 + sbbq %r11,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r12 + + movq %r12,336(%rsp) + movq %r13,344(%rsp) + movq %r14,352(%rsp) + movq %r15,360(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r9 + adcq %rbp,%r10 + adcq %rsi,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,272(%rsp) + movq %r9,280(%rsp) + movq %r10,288(%rsp) + movq %r11,296(%rsp) + +.L9: + movq 56(%rsp),%rdi + + /* p1p1 to p2 */ + + // mul + xorq %r13,%r13 + movq 240(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 248(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 256(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 264(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + // mul + xorq %r13,%r13 + movq 272(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 280(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 288(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 296(%rsp),%rdx + + mulx 304(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 312(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 320(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 328(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + // mul + xorq %r13,%r13 + movq 272(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + adcx %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcx %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcx %rcx,%r11 + adcx %r13,%r12 + + xorq %r14,%r14 + movq 280(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r9 + adox %rbp,%r10 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + adcx %r14,%r13 + + xorq %r15,%r15 + movq 288(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r10 + adox %rbp,%r11 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + adcx %r15,%r14 + + xorq %rax,%rax + movq 296(%rsp),%rdx + + mulx 336(%rsp),%rcx,%rbp + adcx %rcx,%r11 + adox %rbp,%r12 + + mulx 344(%rsp),%rcx,%rbp + adcx %rcx,%r12 + adox %rbp,%r13 + + mulx 352(%rsp),%rcx,%rbp + adcx %rcx,%r13 + adox %rbp,%r14 + + mulx 360(%rsp),%rcx,%rbp + adcx %rcx,%r14 + adox %rbp,%r15 + adcx %rax,%r15 + + xorq %rbp,%rbp + movq $38,%rdx + + mulx %r12,%rax,%r12 + adcx %rax,%r8 + adox %r12,%r9 + + mulx %r13,%rcx,%r13 + adcx %rcx,%r9 + adox %r13,%r10 + + mulx %r14,%rcx,%r14 + adcx %rcx,%r10 + adox %r14,%r11 + + mulx %r15,%rcx,%r15 + adcx %rcx,%r11 + adox %rbp,%r15 + adcx %rbp,%r15 + + shld $1,%r11,%r15 + andq mask63(%rip),%r11 + + imul $19,%r15,%r15 + addq %r15,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsp),%rax + decq %rax + movq %rax,96(%rsp) + + cmpq $0,%rax + + jge .L3 + +.L10: + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_pack.c new file mode 120000 index 0000000000..6029b816df --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_pack.c @@ -0,0 +1 @@ +../amd64-51/ge25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_unpackneg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_unpackneg.c new file mode 120000 index 0000000000..4b7f5c5cff --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/ge25519_unpackneg.c @@ -0,0 +1 @@ +../amd64-64/ge25519_unpackneg.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/implementors b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/implementors new file mode 120000 index 0000000000..7c9c13e712 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/implementors @@ -0,0 +1 @@ +../amd64-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/mGnP.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/mGnP.c new file mode 120000 index 0000000000..7ad91e663e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/mGnP.c @@ -0,0 +1 @@ +../amd64-maa4/mGnP.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_barrett.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_barrett.S new file mode 120000 index 0000000000..26a5f8a1c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_barrett.S @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_barrett.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_from64bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_from64bytes.c new file mode 120000 index 0000000000..f6a000bcdd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_from64bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from64bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_slide.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_slide.c new file mode 120000 index 0000000000..10ea12d89a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_slide.c @@ -0,0 +1 @@ +../amd64-51/sc25519_slide.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_to32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_to32bytes.c new file mode 120000 index 0000000000..6930ca05f6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/sc25519_to32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_to32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/shared-consts.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/shared-consts.c new file mode 120000 index 0000000000..e88d1f4568 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/shared-data.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/shared-data.c new file mode 120000 index 0000000000..055c21deb2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/shared-data.c @@ -0,0 +1 @@ +../amd64-51/shared-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/shared-data.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/shared-data.h new file mode 120000 index 0000000000..0f186b9458 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-maax/shared-data.h @@ -0,0 +1 @@ +../amd64-51/shared-data.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/architectures b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/architectures new file mode 100644 index 0000000000..149f1c35bd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/architectures @@ -0,0 +1 @@ +amd64 bmi2 diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519.h new file mode 100644 index 0000000000..8ac7c2b7e8 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519.h @@ -0,0 +1,66 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_iszero_vartime CRYPTO_NAMESPACE(fe25519_iszero_vartime) +#define fe25519_iseq_vartime CRYPTO_NAMESPACE(fe25519_iseq_vartime) +#define fe25519_cmov CRYPTO_NAMESPACE(fe25519_cmov) +#define fe25519_setint CRYPTO_NAMESPACE(fe25519_setint) +#define fe25519_neg CRYPTO_NAMESPACE(fe25519_neg) +#define fe25519_getparity CRYPTO_NAMESPACE(fe25519_getparity) +#define fe25519_add CRYPTO_SHARED_NAMESPACE(fe25519_add) +#define fe25519_sub CRYPTO_SHARED_NAMESPACE(fe25519_sub) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_mul121666 CRYPTO_NAMESPACE(fe25519_mul121666) +#define fe25519_nsquare CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) +#define fe25519_pow2523 CRYPTO_NAMESPACE(fe25519_pow2523) + +#define fe25519_square(x,y) fe25519_nsquare(x,y,1) + +typedef struct +{ + unsigned long long v[4]; +} +fe25519; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_cmov(fe25519 *r, const fe25519 *x, unsigned char b); + +void fe25519_cswap(fe25519 *r, fe25519 *x, unsigned char b); + +void fe25519_setint(fe25519 *r, unsigned int v); + +void fe25519_neg(fe25519 *r, const fe25519 *x); + +unsigned char fe25519_getparity(const fe25519 *x); + +int fe25519_iszero_vartime(const fe25519 *x); + +int fe25519_iseq_vartime(const fe25519 *x, const fe25519 *y); + +void fe25519_add(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_sub(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_mul121666(fe25519 *r, const fe25519 *x); + +void fe25519_nsquare(fe25519 *r, const fe25519 *x, long long n); + +void fe25519_pow(fe25519 *r, const fe25519 *x, const unsigned char *e); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +void fe25519_pow2523(fe25519 *r, const fe25519 *x); + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_add.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_add.S new file mode 120000 index 0000000000..2f72e5bb09 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_add.S @@ -0,0 +1 @@ +../amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_freeze.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_freeze.S new file mode 120000 index 0000000000..65ecfcf5ce --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_freeze.S @@ -0,0 +1 @@ +../amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_getparity.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_getparity.c new file mode 120000 index 0000000000..d5e8b184b4 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_getparity.c @@ -0,0 +1 @@ +../amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_invert.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_invert.c new file mode 120000 index 0000000000..06cd19180a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_iseq.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_iseq.c new file mode 120000 index 0000000000..3175be3915 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_iseq.c @@ -0,0 +1 @@ +../amd64-64/fe25519_iseq.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_mul.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_mul.S new file mode 100644 index 0000000000..8a38f51da2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_mul.S @@ -0,0 +1,144 @@ +// linker define fe25519_mul +// linker use mask63 + +/* Assembly for field multiplication. */ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_mul) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_mul) +_CRYPTO_SHARED_NAMESPACE(fe25519_mul): +CRYPTO_SHARED_NAMESPACE(fe25519_mul): + +movq %rsp,%r11 +andq $-32,%rsp +subq $64,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbp,40(%rsp) +movq %rbx,48(%rsp) +movq %rdi,56(%rsp) + +movq %rdx,%rdi + +movq 0(%rdi),%rdx + +mulx 0(%rsi),%r8,%r9 +mulx 8(%rsi),%rcx,%r10 +addq %rcx,%r9 + +mulx 16(%rsi),%rcx,%r11 +adcq %rcx,%r10 + +mulx 24(%rsi),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 8(%rdi),%rdx + +mulx 0(%rsi),%rax,%rbx +mulx 8(%rsi),%rcx,%rbp +addq %rcx,%rbx + +mulx 16(%rsi),%rcx,%r15 +adcq %rcx,%rbp + +mulx 24(%rsi),%rcx,%r13 +adcq %rcx,%r15 +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %r15,%r12 +adcq $0,%r13 + +movq 16(%rdi),%rdx + +mulx 0(%rsi),%rax,%rbx +mulx 8(%rsi),%rcx,%rbp +addq %rcx,%rbx + +mulx 16(%rsi),%rcx,%r15 +adcq %rcx,%rbp + +mulx 24(%rsi),%rcx,%r14 +adcq %rcx,%r15 +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %r15,%r13 +adcq $0,%r14 + +movq 24(%rdi),%rdx + +mulx 0(%rsi),%rax,%rbx +mulx 8(%rsi),%rcx,%rbp +addq %rcx,%rbx + +mulx 16(%rsi),%rcx,%r15 +adcq %rcx,%rbp + +mulx 24(%rsi),%rcx,%rsi +adcq %rcx,%r15 +adcq $0,%rsi + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %r15,%r14 +adcq $0,%rsi + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %rsi,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq 56(%rsp),%rdi + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbp +movq 48(%rsp),%rbx + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_nsquare.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_nsquare.S new file mode 100644 index 0000000000..5705bffaad --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_nsquare.S @@ -0,0 +1,144 @@ +// linker define fe25519_nsquare +// linker use mask63 + +/* Assembly for feedback field squaring. */ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +_CRYPTO_SHARED_NAMESPACE(fe25519_nsquare): +CRYPTO_SHARED_NAMESPACE(fe25519_nsquare): + +movq %rsp,%r11 +andq $-32,%rsp +subq $56,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbp,40(%rsp) +movq %rbx,48(%rsp) + +movq 0(%rsi),%r8 +movq 8(%rsi),%r9 +movq 16(%rsi),%r10 +movq 24(%rsi),%r11 + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +mov %rdx,%rbp + +.L: + +movq 0(%rdi),%rdx + +mulx 8(%rdi),%r9,%r10 +mulx 16(%rdi),%rcx,%r11 +addq %rcx,%r10 + +mulx 24(%rdi),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 8(%rdi),%rdx + +mulx 16(%rdi),%rax,%rbx +mulx 24(%rdi),%rcx,%r13 +addq %rcx,%rbx +adcq $0,%r13 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq $0,%r13 + +movq 16(%rdi),%rdx + +mulx 24(%rdi),%rax,%r14 + +addq %rax,%r13 +adcq $0,%r14 + +movq $0,%r15 +shld $1,%r14,%r15 +shld $1,%r13,%r14 +shld $1,%r12,%r13 +shld $1,%r11,%r12 +shld $1,%r10,%r11 +shld $1,%r9,%r10 +shlq $1,%r9 + +movq 0(%rdi),%rdx +mulx %rdx,%r8,%rax +addq %rax,%r9 + +movq 8(%rdi),%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r10 +adcq %rbx,%r11 + +movq 16(%rdi),%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r12 +adcq %rbx,%r13 + +movq 24(%rdi),%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r14 +adcq %rbx,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +subq $1,%rbp +cmpq $0,%rbp + +jne .L + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbp +movq 48(%rsp),%rbx + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_pack.c new file mode 120000 index 0000000000..c92109ac1d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_pow2523.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_pow2523.c new file mode 100644 index 0000000000..e2e13f42a6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_pow2523.c @@ -0,0 +1,59 @@ +// linker define fe25519_pow2523 +// linker use fe25519_mul +// linker use fe25519_nsquare + +#include "fe25519.h" + +void fe25519_pow2523(fe25519 *r, const fe25519 *x) +{ + fe25519 z2; + fe25519 z9; + fe25519 z11; + fe25519 z2_5_0; + fe25519 z2_10_0; + fe25519 z2_20_0; + fe25519 z2_50_0; + fe25519 z2_100_0; + fe25519 t; + int i; + + /* 2 */ fe25519_square(&z2,x); + /* 4 */ fe25519_square(&t,&z2); + /* 8 */ fe25519_square(&t,&t); + /* 9 */ fe25519_mul(&z9,&t,x); + /* 11 */ fe25519_mul(&z11,&z9,&z2); + /* 22 */ fe25519_square(&t,&z11); + /* 2^5 - 2^0 = 31 */ fe25519_mul(&z2_5_0,&t,&z9); + + /* 2^6 - 2^1 */ fe25519_square(&t,&z2_5_0); + /* 2^10 - 2^5 */ for (i = 1;i < 5;i++) { fe25519_square(&t,&t); } + /* 2^10 - 2^0 */ fe25519_mul(&z2_10_0,&t,&z2_5_0); + + /* 2^11 - 2^1 */ fe25519_square(&t,&z2_10_0); + /* 2^20 - 2^10 */ for (i = 1;i < 10;i++) { fe25519_square(&t,&t); } + /* 2^20 - 2^0 */ fe25519_mul(&z2_20_0,&t,&z2_10_0); + + /* 2^21 - 2^1 */ fe25519_square(&t,&z2_20_0); + /* 2^40 - 2^20 */ for (i = 1;i < 20;i++) { fe25519_square(&t,&t); } + /* 2^40 - 2^0 */ fe25519_mul(&t,&t,&z2_20_0); + + /* 2^41 - 2^1 */ fe25519_square(&t,&t); + /* 2^50 - 2^10 */ for (i = 1;i < 10;i++) { fe25519_square(&t,&t); } + /* 2^50 - 2^0 */ fe25519_mul(&z2_50_0,&t,&z2_10_0); + + /* 2^51 - 2^1 */ fe25519_square(&t,&z2_50_0); + /* 2^100 - 2^50 */ for (i = 1;i < 50;i++) { fe25519_square(&t,&t); } + /* 2^100 - 2^0 */ fe25519_mul(&z2_100_0,&t,&z2_50_0); + + /* 2^101 - 2^1 */ fe25519_square(&t,&z2_100_0); + /* 2^200 - 2^100 */ for (i = 1;i < 100;i++) { fe25519_square(&t,&t); } + /* 2^200 - 2^0 */ fe25519_mul(&t,&t,&z2_100_0); + + /* 2^201 - 2^1 */ fe25519_square(&t,&t); + /* 2^250 - 2^50 */ for (i = 1;i < 50;i++) { fe25519_square(&t,&t); } + /* 2^250 - 2^0 */ fe25519_mul(&t,&t,&z2_50_0); + + /* 2^251 - 2^1 */ fe25519_square(&t,&t); + /* 2^252 - 2^2 */ fe25519_square(&t,&t); + /* 2^252 - 3 */ fe25519_mul(r,&t,x); +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_setint.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_setint.c new file mode 120000 index 0000000000..6ae1104ea9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_setint.c @@ -0,0 +1 @@ +../amd64-64/fe25519_setint.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_sub.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_sub.S new file mode 120000 index 0000000000..5054d0b99e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_sub.S @@ -0,0 +1 @@ +../amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_unpack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_unpack.c new file mode 120000 index 0000000000..98bfaced87 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519.h new file mode 100644 index 0000000000..781e4c2f93 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519.h @@ -0,0 +1,99 @@ +#ifndef GE25519_H +#define GE25519_H + +#include "fe25519.h" +#include "sc25519.h" + +#define ge25519 CRYPTO_NAMESPACE(ge25519) +#define ge25519_base CRYPTO_NAMESPACE(ge25519_base) +#define ge25519_unpackneg_vartime CRYPTO_NAMESPACE(unpackneg_vartime) +#define ge25519_pack CRYPTO_NAMESPACE(ge25519_pack) +#define ge25519_isneutral_vartime CRYPTO_NAMESPACE(isneutral_vartime) +#define ge25519_add CRYPTO_NAMESPACE(ge25519_add) +#define ge25519_double CRYPTO_NAMESPACE(ge25519_double) +#define ge25519_double_scalarmult_vartime CRYPTO_NAMESPACE(double_scalarmult_vartime) +#define ge25519_multi_scalarmult_vartime CRYPTO_NAMESPACE(ge25519_multi_scalarmult_vartime) +#define ge25519_scalarmult_base CRYPTO_NAMESPACE(ge25519_scalarmult_base) +#define ge25519_p1p1_to_p2 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2) +#define ge25519_p1p1_to_p3 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3) +#define ge25519_add_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_add_p1p1) +#define ge25519_dbl_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1) +#define choose_t CRYPTO_SHARED_NAMESPACE(choose_t) +#define ge25519_nielsadd2 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2) +#define ge25519_nielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1) +#define ge25519_pnielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1) +#define ge25519_double_scalarmult_precompute CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) +#define ge25519_double_scalarmult_process CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + +#define ge25519_p3 ge25519 + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; + fe25519 t; +} ge25519; + +typedef struct +{ + fe25519 x; + fe25519 z; + fe25519 y; + fe25519 t; +} ge25519_p1p1; + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; +} ge25519_p2; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 t2d; +} ge25519_niels; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 z; + fe25519 t2d; +} ge25519_pniels; + +extern void ge25519_p1p1_to_p2(ge25519_p2 *r, const ge25519_p1p1 *p); +extern void ge25519_p1p1_to_p3(ge25519_p3 *r, const ge25519_p1p1 *p); +extern void ge25519_add_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_p3 *q); +extern void ge25519_dbl_p1p1(ge25519_p1p1 *r, const ge25519_p2 *p); +extern void choose_t(ge25519_niels *t, unsigned long long pos, signed long long b, const ge25519_niels *base_multiples); +extern void ge25519_nielsadd2(ge25519_p3 *r, const ge25519_niels *q); +extern void ge25519_nielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_niels *q); +extern void ge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_pniels *q); + +extern const ge25519 ge25519_base; + +extern int ge25519_unpackneg_vartime(ge25519 *r, const unsigned char p[32]); + +extern void ge25519_pack(unsigned char r[32], const ge25519 *p); + +extern int ge25519_isneutral_vartime(const ge25519 *p); + +extern void ge25519_add(ge25519 *r, const ge25519 *p, const ge25519 *q); + +extern void ge25519_double(ge25519 *r, const ge25519 *p); + +extern void ge25519_double_scalarmult_precompute(ge25519_pniels *pre1, const ge25519_p3 *p1, unsigned long long PRE1_SIZE); +extern void ge25519_double_scalarmult_process(ge25519_p3 *r, const signed char *, const signed char *, const ge25519_pniels *, const ge25519_niels *); + +/* computes [s1]p1 + [s2]ge25519_base */ +extern void ge25519_double_scalarmult_vartime(ge25519 *r, const ge25519 *p1, const sc25519 *s1, const sc25519 *s2); + +extern void ge25519_multi_scalarmult_vartime(ge25519 *r, ge25519 *p, sc25519 *s, const unsigned long long npoints); + +extern void ge25519_scalarmult_base(ge25519 *r, const sc25519 *s); + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_base_slide_multiples.data b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_base_slide_multiples.data new file mode 120000 index 0000000000..36c9553260 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_base_slide_multiples.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_slide_multiples.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_double_scalarmult_precompute.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_double_scalarmult_precompute.S new file mode 100644 index 0000000000..27cce9ae09 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_double_scalarmult_precompute.S @@ -0,0 +1,2421 @@ +// linker define ge25519_double_scalarmult_precompute +// linker use EC2D0 EC2D1 EC2D2 EC2D3 mask63 + +/* Assembly for the precomputaion phase used in double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) +#define EC2D0 CRYPTO_SHARED_NAMESPACE(EC2D0) +#define EC2D1 CRYPTO_SHARED_NAMESPACE(EC2D1) +#define EC2D2 CRYPTO_SHARED_NAMESPACE(EC2D2) +#define EC2D3 CRYPTO_SHARED_NAMESPACE(EC2D3) + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_precompute): + + movq %rsp,%r11 + andq $-32,%rsp + subq $392,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + decq %rdx + movq %rdx,56(%rsp) + + movq 0(%rsi),%r8 + movq 8(%rsi),%r9 + movq 16(%rsi),%r10 + movq 24(%rsi),%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + movq 32(%rsi),%r8 + movq 40(%rsi),%r9 + movq 48(%rsi),%r10 + movq 56(%rsi),%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + movq 64(%rsi),%r8 + movq 72(%rsi),%r9 + movq 80(%rsi),%r10 + movq 88(%rsi),%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsi),%r8 + movq 104(%rsi),%r9 + movq 112(%rsi),%r10 + movq 120(%rsi),%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + /* dbl p1p1 */ + + // square + movq 0(%rdi),%rdx + + mulx 8(%rdi),%r9,%r10 + mulx 16(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 8(%rdi),%rdx + + mulx 16(%rdi),%rax,%rbx + mulx 24(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 16(%rdi),%rdx + + mulx 24(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 0(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 8(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 16(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 24(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // square + movq 32(%rdi),%rdx + + mulx 40(%rdi),%r9,%r10 + mulx 48(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 40(%rdi),%rdx + + mulx 48(%rdi),%rax,%rbx + mulx 56(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 48(%rdi),%rdx + + mulx 56(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 32(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 40(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 48(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 56(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + movq 64(%rdi),%rdx + + mulx 72(%rdi),%r9,%r10 + mulx 80(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 72(%rdi),%rdx + + mulx 80(%rdi),%rax,%rbx + mulx 88(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 80(%rdi),%rdx + + mulx 88(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 64(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 72(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 80(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 88(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // sub + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // sub + movq $0,%r12 + movq $0,%r13 + movq $0,%r14 + movq $0,%r15 + + subq 96(%rsp),%r12 + sbbq 104(%rsp),%r13 + sbbq 112(%rsp),%r14 + sbbq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,160(%rsp) + movq %r13,168(%rsp) + movq %r14,176(%rsp) + movq %r15,184(%rsp) + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 96(%rsp),%r12 + adcq 104(%rsp),%r13 + adcq 112(%rsp),%r14 + adcq 120(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,224(%rsp) + movq %r13,232(%rsp) + movq %r14,240(%rsp) + movq %r15,248(%rsp) + + // sub + subq 96(%rsp),%r8 + sbbq 104(%rsp),%r9 + sbbq 112(%rsp),%r10 + sbbq 120(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 128(%rsp),%r12 + sbbq 136(%rsp),%r13 + sbbq 144(%rsp),%r14 + sbbq 152(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + // add + movq 0(%rdi),%r8 + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + + addq 32(%rdi),%r8 + adcq 40(%rdi),%r9 + adcq 48(%rdi),%r10 + adcq 56(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // square + movq 96(%rsp),%rdx + + mulx 104(%rsp),%r9,%r10 + mulx 112(%rsp),%rcx,%r11 + addq %rcx,%r10 + + mulx 120(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 104(%rsp),%rdx + + mulx 112(%rsp),%rax,%rbx + mulx 120(%rsp),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 112(%rsp),%rdx + + mulx 120(%rsp),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 96(%rsp),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 104(%rsp),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 112(%rsp),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 120(%rsp),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + addq 64(%rsp),%r8 + adcq 72(%rsp),%r9 + adcq 80(%rsp),%r10 + adcq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + addq 160(%rsp),%r8 + adcq 168(%rsp),%r9 + adcq 176(%rsp),%r10 + adcq 184(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,192(%rsp) + movq %r9,200(%rsp) + movq %r10,208(%rsp) + movq %r11,216(%rsp) + + /* p1p1 to p3 */ + + // mul + movq 192(%rsp),%rdx + + mulx 288(%rsp),%r8,%r9 + mulx 296(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 304(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 312(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 200(%rsp),%rdx + + mulx 288(%rsp),%rax,%rbx + mulx 296(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 304(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 312(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 208(%rsp),%rdx + + mulx 288(%rsp),%rax,%rbx + mulx 296(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 304(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 312(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 216(%rsp),%rdx + + mulx 288(%rsp),%rax,%rbx + mulx 296(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 304(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 312(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rsp) + movq %r9,72(%rsp) + movq %r10,80(%rsp) + movq %r11,88(%rsp) + + // mul + movq 224(%rsp),%rdx + + mulx 256(%rsp),%r8,%r9 + mulx 264(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 272(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 280(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 232(%rsp),%rdx + + mulx 256(%rsp),%rax,%rbx + mulx 264(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 272(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 280(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rdx + + mulx 256(%rsp),%rax,%rbx + mulx 264(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 272(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 280(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 248(%rsp),%rdx + + mulx 256(%rsp),%rax,%rbx + mulx 264(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 272(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 280(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rsp) + movq %r9,104(%rsp) + movq %r10,112(%rsp) + movq %r11,120(%rsp) + + // mul + movq 224(%rsp),%rdx + + mulx 288(%rsp),%r8,%r9 + mulx 296(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 304(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 312(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 232(%rsp),%rdx + + mulx 288(%rsp),%rax,%rbx + mulx 296(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 304(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 312(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rdx + + mulx 288(%rsp),%rax,%rbx + mulx 296(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 304(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 312(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 248(%rsp),%rdx + + mulx 288(%rsp),%rax,%rbx + mulx 296(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 304(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 312(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,128(%rsp) + movq %r9,136(%rsp) + movq %r10,144(%rsp) + movq %r11,152(%rsp) + + // mul + movq 192(%rsp),%rdx + + mulx 256(%rsp),%r8,%r9 + mulx 264(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 272(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 280(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 200(%rsp),%rdx + + mulx 256(%rsp),%rax,%rbx + mulx 264(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 272(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 280(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 208(%rsp),%rdx + + mulx 256(%rsp),%rax,%rbx + mulx 264(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 272(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 280(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 216(%rsp),%rdx + + mulx 256(%rsp),%rax,%rbx + mulx 264(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 272(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 280(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,160(%rsp) + movq %r9,168(%rsp) + movq %r10,176(%rsp) + movq %r11,184(%rsp) + + // Convert pre[0] to projective Niels representation + movq 0(%rdi),%rbx + movq 8(%rdi),%rcx + movq 16(%rdi),%rbp + movq 24(%rdi),%rsi + + movq 32(%rdi),%r8 + movq 40(%rdi),%r9 + movq 48(%rdi),%r10 + movq 56(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + // mul + movq EC2D0(%rip),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq EC2D1(%rip),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq EC2D2(%rip),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq EC2D3(%rip),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,96(%rdi) + movq %r9,104(%rdi) + movq %r10,112(%rdi) + movq %r11,120(%rdi) + + movq $0,384(%rsp) + +.L: + // pnielsadd_p1p1 + + movq 96(%rsp),%r8 + movq 104(%rsp),%r9 + movq 112(%rsp),%r10 + movq 120(%rsp),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq 64(%rsp),%r8 + sbbq 72(%rsp),%r9 + sbbq 80(%rsp),%r10 + sbbq 88(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + addq 64(%rsp),%r12 + adcq 72(%rsp),%r13 + adcq 80(%rsp),%r14 + adcq 88(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,352(%rsp) + movq %r13,360(%rsp) + movq %r14,368(%rsp) + movq %r15,376(%rsp) + + // mul + movq 320(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 328(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 336(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 344(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // mul + movq 352(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 360(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 368(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 376(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r9 + adcq 336(%rsp),%r10 + adcq 344(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,256(%rsp) + movq %r9,264(%rsp) + movq %r10,272(%rsp) + movq %r11,280(%rsp) + + // sub + subq 320(%rsp),%r12 + sbbq 328(%rsp),%r13 + sbbq 336(%rsp),%r14 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,192(%rsp) + movq %r13,200(%rsp) + movq %r14,208(%rsp) + movq %r15,216(%rsp) + + // mul + movq 160(%rsp),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 168(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 176(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 184(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,320(%rsp) + movq %r9,328(%rsp) + movq %r10,336(%rsp) + movq %r11,344(%rsp) + + // mul + movq 128(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 136(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 144(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 152(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 320(%rsp),%r8 + adcq 328(%rsp),%r9 + adcq 336(%rsp),%r10 + adcq 344(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,224(%rsp) + movq %r9,232(%rsp) + movq %r10,240(%rsp) + movq %r11,248(%rsp) + + // sub + subq 320(%rsp),%r12 + sbbq 328(%rsp),%r13 + sbbq 336(%rsp),%r14 + sbbq 344(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,288(%rsp) + movq %r13,296(%rsp) + movq %r14,304(%rsp) + movq %r15,312(%rsp) + + /* p1p1 to p3 */ + + // mul + movq 192(%rsp),%rdx + + mulx 288(%rsp),%r8,%r9 + mulx 296(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 304(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 312(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 200(%rsp),%rdx + + mulx 288(%rsp),%rax,%rbx + mulx 296(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 304(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 312(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 208(%rsp),%rdx + + mulx 288(%rsp),%rax,%rbx + mulx 296(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 304(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 312(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 216(%rsp),%rdx + + mulx 288(%rsp),%rax,%rbx + mulx 296(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 304(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 312(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,128(%rdi) + movq %r9,136(%rdi) + movq %r10,144(%rdi) + movq %r11,152(%rdi) + + // mul + movq 224(%rsp),%rdx + + mulx 256(%rsp),%r8,%r9 + mulx 264(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 272(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 280(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 232(%rsp),%rdx + + mulx 256(%rsp),%rax,%rbx + mulx 264(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 272(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 280(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rdx + + mulx 256(%rsp),%rax,%rbx + mulx 264(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 272(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 280(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 248(%rsp),%rdx + + mulx 256(%rsp),%rax,%rbx + mulx 264(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 272(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 280(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,160(%rdi) + movq %r9,168(%rdi) + movq %r10,176(%rdi) + movq %r11,184(%rdi) + + // mul + movq 224(%rsp),%rdx + + mulx 288(%rsp),%r8,%r9 + mulx 296(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 304(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 312(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 232(%rsp),%rdx + + mulx 288(%rsp),%rax,%rbx + mulx 296(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 304(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 312(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 240(%rsp),%rdx + + mulx 288(%rsp),%rax,%rbx + mulx 296(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 304(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 312(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 248(%rsp),%rdx + + mulx 288(%rsp),%rax,%rbx + mulx 296(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 304(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 312(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,192(%rdi) + movq %r9,200(%rdi) + movq %r10,208(%rdi) + movq %r11,216(%rdi) + + // mul + movq 192(%rsp),%rdx + + mulx 256(%rsp),%r8,%r9 + mulx 264(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 272(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 280(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 200(%rsp),%rdx + + mulx 256(%rsp),%rax,%rbx + mulx 264(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 272(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 280(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 208(%rsp),%rdx + + mulx 256(%rsp),%rax,%rbx + mulx 264(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 272(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 280(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 216(%rsp),%rdx + + mulx 256(%rsp),%rax,%rbx + mulx 264(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 272(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 280(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,224(%rdi) + movq %r9,232(%rdi) + movq %r10,240(%rdi) + movq %r11,248(%rdi) + + // Convert pre[i1] to projective Niels representation + movq 128(%rdi),%rbx + movq 136(%rdi),%rcx + movq 144(%rdi),%rbp + movq 152(%rdi),%rsi + + movq 160(%rdi),%r8 + movq 168(%rdi),%r9 + movq 176(%rdi),%r10 + movq 184(%rdi),%r11 + + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + subq %rbx,%r8 + sbbq %rcx,%r9 + sbbq %rbp,%r10 + sbbq %rsi,%r11 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r9 + + movq %r8,128(%rdi) + movq %r9,136(%rdi) + movq %r10,144(%rdi) + movq %r11,152(%rdi) + + addq %rbx,%r12 + adcq %rcx,%r13 + adcq %rbp,%r14 + adcq %rsi,%r15 + + movq $0,%rdx + movq $38,%rax + + cmovae %rdx,%rax + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,160(%rdi) + movq %r13,168(%rdi) + movq %r14,176(%rdi) + movq %r15,184(%rdi) + + // mul + movq EC2D0(%rip),%rdx + + mulx 224(%rdi),%r8,%r9 + mulx 232(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 240(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 248(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq EC2D1(%rip),%rdx + + mulx 224(%rdi),%rax,%rbx + mulx 232(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq EC2D2(%rip),%rdx + + mulx 224(%rdi),%rax,%rbx + mulx 232(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq EC2D3(%rip),%rdx + + mulx 224(%rdi),%rax,%rbx + mulx 232(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 240(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 248(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,224(%rdi) + movq %r9,232(%rdi) + movq %r10,240(%rdi) + movq %r11,248(%rdi) + + addq $128,%rdi + + movq 384(%rsp),%r8 + incq %r8 + movq %r8,384(%rsp) + + cmpq 56(%rsp),%r8 + + jl .L + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_double_scalarmult_process.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_double_scalarmult_process.S new file mode 100644 index 0000000000..a1202ef4e5 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_double_scalarmult_process.S @@ -0,0 +1,4901 @@ +// linker define ge25519_double_scalarmult_process +// linker use mask63 + +/* Assembly for double base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + .globl CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process) + +_CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): +CRYPTO_SHARED_NAMESPACE(ge25519_double_scalarmult_process): + + movq %rsp,%r11 + andq $-32,%rsp + subq $464,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + // setneutral + movq $0,%rax + movq $1,%rbx + + movq %rax,0(%rdi) + movq %rax,8(%rdi) + movq %rax,16(%rdi) + movq %rax,24(%rdi) + + movq %rbx,32(%rdi) + movq %rax,40(%rdi) + movq %rax,48(%rdi) + movq %rax,56(%rdi) + + movq %rbx,64(%rdi) + movq %rax,72(%rdi) + movq %rax,80(%rdi) + movq %rax,88(%rdi) + + movq %rax,96(%rdi) + movq %rax,104(%rdi) + movq %rax,112(%rdi) + movq %rax,120(%rdi) + + movq $255,%rax + addq $255,%rsi + addq $255,%rdx + + movq %rdi,56(%rsp) + movq %rcx,64(%rsp) + movq %r8,72(%rsp) + +.L1: + movb 0(%rsi),%r14b + movb 0(%rdx),%r15b + + cmpb $0,%r14b + jg .L2 + + cmpb $0,%r15b + jg .L2 + + decq %rsi + decq %rdx + + decq %rax + cmpq $0,%rax + + jge .L1 + + cmpq $0,%rax + jl .L10 + +.L2: + movq %rsi,80(%rsp) + movq %rdx,88(%rsp) + movq %rax,96(%rsp) + +.L3: + /* dbl p1p1 */ + + // square + movq 0(%rdi),%rdx + + mulx 8(%rdi),%r9,%r10 + mulx 16(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 8(%rdi),%rdx + + mulx 16(%rdi),%rax,%rbx + mulx 24(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 16(%rdi),%rdx + + mulx 24(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 0(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 8(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 16(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 24(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,112(%rsp) + movq %r9,120(%rsp) + movq %r10,128(%rsp) + movq %r11,136(%rsp) + + // square + movq 32(%rdi),%rdx + + mulx 40(%rdi),%r9,%r10 + mulx 48(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 40(%rdi),%rdx + + mulx 48(%rdi),%rax,%rbx + mulx 56(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 48(%rdi),%rdx + + mulx 56(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 32(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 40(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 48(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 56(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,144(%rsp) + movq %r9,152(%rsp) + movq %r10,160(%rsp) + movq %r11,168(%rsp) + + // square + movq 64(%rdi),%rdx + + mulx 72(%rdi),%r9,%r10 + mulx 80(%rdi),%rcx,%r11 + addq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 72(%rdi),%rdx + + mulx 80(%rdi),%rax,%rbx + mulx 88(%rdi),%rcx,%r13 + addq %rcx,%rbx + adcq $0,%r13 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq $0,%r13 + + movq 80(%rdi),%rdx + + mulx 88(%rdi),%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq 64(%rdi),%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq 72(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq 80(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq 88(%rdi),%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + movq $38,%rcx + cmovae %rdx,%rcx + + addq %rcx,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rcx,%rdx + addq %rdx,%r8 + + movq %r8,176(%rsp) + movq %r9,184(%rsp) + movq %r10,192(%rsp) + movq %r11,200(%rsp) + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,112(%rsp) + movq %r9,120(%rsp) + movq %r10,128(%rsp) + movq %r11,136(%rsp) + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 144(%rsp),%r8 + sbbq 152(%rsp),%r9 + sbbq 160(%rsp),%r10 + sbbq 168(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r9,312(%rsp) + movq %r10,320(%rsp) + movq %r11,328(%rsp) + + // add + addq 144(%rsp),%r12 + adcq 152(%rsp),%r13 + adcq 160(%rsp),%r14 + adcq 168(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,272(%rsp) + movq %r13,280(%rsp) + movq %r14,288(%rsp) + movq %r15,296(%rsp) + + // sub + subq 176(%rsp),%r12 + sbbq 184(%rsp),%r13 + sbbq 192(%rsp),%r14 + sbbq 200(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,336(%rsp) + movq %r13,344(%rsp) + movq %r14,352(%rsp) + movq %r15,360(%rsp) + + // add + movq 0(%rdi),%rbx + movq 8(%rdi),%rbp + movq 16(%rdi),%rcx + movq 24(%rdi),%rsi + + addq 32(%rdi),%rbx + adcq 40(%rdi),%rbp + adcq 48(%rdi),%rcx + adcq 56(%rdi),%rsi + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%rbx + adcq %rdx,%rbp + adcq %rdx,%rcx + adcq %rdx,%rsi + + cmovc %rax,%rdx + addq %rdx,%rbx + + // square + movq %rbx,%rdx + + mulx %rbp,%r9,%r10 + mulx %rcx,%r8,%r11 + addq %r8,%r10 + + mulx %rsi,%r8,%r12 + adcq %r8,%r11 + adcq $0,%r12 + + movq %rbp,%rdx + + mulx %rcx,%rax,%r8 + mulx %rsi,%rdx,%r13 + addq %rdx,%r8 + adcq $0,%r13 + + addq %rax,%r11 + adcq %r8,%r12 + adcq $0,%r13 + + movq %rcx,%rdx + + mulx %rsi,%rax,%r14 + + addq %rax,%r13 + adcq $0,%r14 + + movq $0,%r15 + shld $1,%r14,%r15 + shld $1,%r13,%r14 + shld $1,%r12,%r13 + shld $1,%r11,%r12 + shld $1,%r10,%r11 + shld $1,%r9,%r10 + shlq $1,%r9 + + movq %rbx,%rdx + mulx %rdx,%r8,%rax + addq %rax,%r9 + + movq %rbp,%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r10 + adcq %rbx,%r11 + + movq %rcx,%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r12 + adcq %rbx,%r13 + + movq %rsi,%rdx + mulx %rdx,%rax,%rbx + adcq %rax,%r14 + adcq %rbx,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + addq 112(%rsp),%r8 + adcq 120(%rsp),%r9 + adcq 128(%rsp),%r10 + adcq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // sub + subq 144(%rsp),%r8 + sbbq 152(%rsp),%r9 + sbbq 160(%rsp),%r10 + sbbq 168(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,240(%rsp) + movq %r9,248(%rsp) + movq %r10,256(%rsp) + movq %r11,264(%rsp) + + movq 80(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,80(%rsp) + movq 64(%rsp),%rdi + + cmpb $0,%r14b + jg .L4 + jl .L5 + je .L6 + +.L4: + /* p1p1 to p3 */ + + // mul + movq 240(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 248(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 256(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 264(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,112(%rsp) + movq %r9,120(%rsp) + movq %r10,128(%rsp) + movq %r11,136(%rsp) + + // mul + movq 272(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 280(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 288(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 296(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,144(%rsp) + movq %r9,152(%rsp) + movq %r10,160(%rsp) + movq %r11,168(%rsp) + + // mul + movq 272(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 280(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 288(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 296(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,176(%rsp) + movq %r9,184(%rsp) + movq %r10,192(%rsp) + movq %r11,200(%rsp) + + // mul + movq 240(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 248(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 256(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 264(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,208(%rsp) + movq %r9,216(%rsp) + movq %r10,224(%rsp) + movq %r11,232(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $128,%r14,%r14 + addq %r14,%rdi + + /* pnielsadd p1p1 */ + + movq 144(%rsp),%r8 + movq 152(%rsp),%r9 + movq 160(%rsp),%r10 + movq 168(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // add + addq 112(%rsp),%r12 + adcq 120(%rsp),%r13 + adcq 128(%rsp),%r14 + adcq 136(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,400(%rsp) + movq %r13,408(%rsp) + movq %r14,416(%rsp) + movq %r15,424(%rsp) + + // mul + movq 368(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 376(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 384(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 392(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // mul + movq 400(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 408(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 416(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 424(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r9 + adcq 384(%rsp),%r10 + adcq 392(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r9,312(%rsp) + movq %r10,320(%rsp) + movq %r11,328(%rsp) + + // sub + subq 368(%rsp),%r12 + sbbq 376(%rsp),%r13 + sbbq 384(%rsp),%r14 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,240(%rsp) + movq %r13,248(%rsp) + movq %r14,256(%rsp) + movq %r15,264(%rsp) + + // mul + movq 208(%rsp),%rdx + + mulx 96(%rdi),%r8,%r9 + mulx 104(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 112(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 120(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 216(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 232(%rsp),%rdx + + mulx 96(%rdi),%rax,%rbx + mulx 104(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 112(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 120(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // mul + movq 176(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 184(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 192(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 200(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r9 + adcq 384(%rsp),%r10 + adcq 392(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,272(%rsp) + movq %r9,280(%rsp) + movq %r10,288(%rsp) + movq %r11,296(%rsp) + + // sub + subq 368(%rsp),%r12 + sbbq 376(%rsp),%r13 + sbbq 384(%rsp),%r14 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,336(%rsp) + movq %r13,344(%rsp) + movq %r14,352(%rsp) + movq %r15,360(%rsp) + + jmp .L6 + +.L5: + /* p1p1 to p3 */ + + // mul + movq 240(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 248(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 256(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 264(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,112(%rsp) + movq %r9,120(%rsp) + movq %r10,128(%rsp) + movq %r11,136(%rsp) + + // mul + movq 272(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 280(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 288(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 296(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,144(%rsp) + movq %r9,152(%rsp) + movq %r10,160(%rsp) + movq %r11,168(%rsp) + + // mul + movq 272(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 280(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 288(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 296(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,176(%rsp) + movq %r9,184(%rsp) + movq %r10,192(%rsp) + movq %r11,200(%rsp) + + // mul + movq 240(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 248(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 256(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 264(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,208(%rsp) + movq %r9,216(%rsp) + movq %r10,224(%rsp) + movq %r11,232(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $128,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 96(%rdi),%r8 + sbbq 104(%rdi),%r9 + sbbq 112(%rdi),%r10 + sbbq 120(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,432(%rsp) + movq %r9,440(%rsp) + movq %r10,448(%rsp) + movq %r11,456(%rsp) + + /* pnielsadd p1p1 */ + + movq 144(%rsp),%r8 + movq 152(%rsp),%r9 + movq 160(%rsp),%r10 + movq 168(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // add + addq 112(%rsp),%r12 + adcq 120(%rsp),%r13 + adcq 128(%rsp),%r14 + adcq 136(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,400(%rsp) + movq %r13,408(%rsp) + movq %r14,416(%rsp) + movq %r15,424(%rsp) + + // mul + movq 368(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 376(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 384(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 392(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // mul + movq 400(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 408(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 416(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 424(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r9 + adcq 384(%rsp),%r10 + adcq 392(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r9,312(%rsp) + movq %r10,320(%rsp) + movq %r11,328(%rsp) + + // sub + subq 368(%rsp),%r12 + sbbq 376(%rsp),%r13 + sbbq 384(%rsp),%r14 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,240(%rsp) + movq %r13,248(%rsp) + movq %r14,256(%rsp) + movq %r15,264(%rsp) + + // mul + movq 208(%rsp),%rdx + + mulx 432(%rsp),%r8,%r9 + mulx 440(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 448(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 456(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 216(%rsp),%rdx + + mulx 432(%rsp),%rax,%rbx + mulx 440(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 448(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 456(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rdx + + mulx 432(%rsp),%rax,%rbx + mulx 440(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 448(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 456(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 232(%rsp),%rdx + + mulx 432(%rsp),%rax,%rbx + mulx 440(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 448(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 456(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // mul + movq 176(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 184(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 192(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 200(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + addq %r8,%r8 + adcq %r9,%r9 + adcq %r10,%r10 + adcq %r11,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r9 + adcq 384(%rsp),%r10 + adcq 392(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,272(%rsp) + movq %r9,280(%rsp) + movq %r10,288(%rsp) + movq %r11,296(%rsp) + + // sub + subq 368(%rsp),%r12 + sbbq 376(%rsp),%r13 + sbbq 384(%rsp),%r14 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,336(%rsp) + movq %r13,344(%rsp) + movq %r14,352(%rsp) + movq %r15,360(%rsp) + +.L6: + movq 88(%rsp),%rsi + movb 0(%rsi),%r14b + movb %r14b,104(%rsp) + decq %rsi + movq %rsi,88(%rsp) + movq 72(%rsp),%rdi + + cmpb $0,%r14b + jg .L7 + jl .L8 + je .L9 + +.L7: + /* p1p1 to p3 */ + + // mul + movq 240(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 248(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 256(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 264(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,112(%rsp) + movq %r9,120(%rsp) + movq %r10,128(%rsp) + movq %r11,136(%rsp) + + // mul + movq 272(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 280(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 288(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 296(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,144(%rsp) + movq %r9,152(%rsp) + movq %r10,160(%rsp) + movq %r11,168(%rsp) + + // mul + movq 272(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 280(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 288(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 296(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,176(%rsp) + movq %r9,184(%rsp) + movq %r10,192(%rsp) + movq %r11,200(%rsp) + + // mul + movq 240(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 248(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 256(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 264(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,208(%rsp) + movq %r9,216(%rsp) + movq %r10,224(%rsp) + movq %r11,232(%rsp) + + movb 104(%rsp),%r14b + shrb $1,%r14b + movzbq %r14b,%r14 + imul $96,%r14,%r14 + addq %r14,%rdi + + /* nielsadd p1p1 */ + + movq 144(%rsp),%r8 + movq 152(%rsp),%r9 + movq 160(%rsp),%r10 + movq 168(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // add + addq 112(%rsp),%r12 + adcq 120(%rsp),%r13 + adcq 128(%rsp),%r14 + adcq 136(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,400(%rsp) + movq %r13,408(%rsp) + movq %r14,416(%rsp) + movq %r15,424(%rsp) + + // mul + movq 368(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 376(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 384(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 392(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // mul + movq 400(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 408(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 416(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 424(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r9 + adcq 384(%rsp),%r10 + adcq 392(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r9,312(%rsp) + movq %r10,320(%rsp) + movq %r11,328(%rsp) + + // sub + subq 368(%rsp),%r12 + sbbq 376(%rsp),%r13 + sbbq 384(%rsp),%r14 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,240(%rsp) + movq %r13,248(%rsp) + movq %r14,256(%rsp) + movq %r15,264(%rsp) + + // mul + movq 208(%rsp),%rdx + + mulx 64(%rdi),%r8,%r9 + mulx 72(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 80(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 88(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 216(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 224(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 232(%rsp),%rdx + + mulx 64(%rdi),%rax,%rbx + mulx 72(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 80(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 88(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + movq 176(%rsp),%r12 + movq 184(%rsp),%r13 + movq 192(%rsp),%r14 + movq 200(%rsp),%r15 + + addq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + // sub + movq %r12,%rbx + movq %r13,%rcx + movq %r14,%rbp + movq %r15,%rsi + + subq %r8,%r12 + sbbq %r9,%r13 + sbbq %r10,%r14 + sbbq %r11,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r12 + + movq %r12,336(%rsp) + movq %r13,344(%rsp) + movq %r14,352(%rsp) + movq %r15,360(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r9 + adcq %rbp,%r10 + adcq %rsi,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,272(%rsp) + movq %r9,280(%rsp) + movq %r10,288(%rsp) + movq %r11,296(%rsp) + + jmp .L9 + +.L8: + /* p1p1 to p3 */ + + // mul + movq 240(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 248(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 256(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 264(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,112(%rsp) + movq %r9,120(%rsp) + movq %r10,128(%rsp) + movq %r11,136(%rsp) + + // mul + movq 272(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 280(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 288(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 296(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,144(%rsp) + movq %r9,152(%rsp) + movq %r10,160(%rsp) + movq %r11,168(%rsp) + + // mul + movq 272(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 280(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 288(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 296(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,176(%rsp) + movq %r9,184(%rsp) + movq %r10,192(%rsp) + movq %r11,200(%rsp) + + // mul + movq 240(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 248(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 256(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 264(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,208(%rsp) + movq %r9,216(%rsp) + movq %r10,224(%rsp) + movq %r11,232(%rsp) + + movb 104(%rsp),%r14b + movb $0,%r15b + subb %r14b,%r15b + shrb $1,%r15b + movzbq %r15b,%r15 + imul $96,%r15,%r15 + addq %r15,%rdi + + // neg + movq $0,%r8 + movq $0,%r9 + movq $0,%r10 + movq $0,%r11 + + subq 64(%rdi),%r8 + sbbq 72(%rdi),%r9 + sbbq 80(%rdi),%r10 + sbbq 88(%rdi),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,432(%rsp) + movq %r9,440(%rsp) + movq %r10,448(%rsp) + movq %r11,456(%rsp) + + /* nielsadd p1p1 */ + + movq 144(%rsp),%r8 + movq 152(%rsp),%r9 + movq 160(%rsp),%r10 + movq 168(%rsp),%r11 + + // copy + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + // sub + subq 112(%rsp),%r8 + sbbq 120(%rsp),%r9 + sbbq 128(%rsp),%r10 + sbbq 136(%rsp),%r11 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + subq %rax,%r8 + sbbq %rdx,%r9 + sbbq %rdx,%r10 + sbbq %rdx,%r11 + + cmovc %rax,%rdx + subq %rdx,%r8 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // add + addq 112(%rsp),%r12 + adcq 120(%rsp),%r13 + adcq 128(%rsp),%r14 + adcq 136(%rsp),%r15 + + movq $0,%rdx + movq $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + movq %r12,400(%rsp) + movq %r13,408(%rsp) + movq %r14,416(%rsp) + movq %r15,424(%rsp) + + // mul + movq 368(%rsp),%rdx + + mulx 32(%rdi),%r8,%r9 + mulx 40(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 48(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 56(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 376(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 384(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 392(%rsp),%rdx + + mulx 32(%rdi),%rax,%rbx + mulx 40(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 48(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 56(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,368(%rsp) + movq %r9,376(%rsp) + movq %r10,384(%rsp) + movq %r11,392(%rsp) + + // mul + movq 400(%rsp),%rdx + + mulx 0(%rdi),%r8,%r9 + mulx 8(%rdi),%rcx,%r10 + addq %rcx,%r9 + + mulx 16(%rdi),%rcx,%r11 + adcq %rcx,%r10 + + mulx 24(%rdi),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 408(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 416(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 424(%rsp),%rdx + + mulx 0(%rdi),%rax,%rbx + mulx 8(%rdi),%rcx,%rbp + addq %rcx,%rbx + + mulx 16(%rdi),%rcx,%rsi + adcq %rcx,%rbp + + mulx 24(%rdi),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // add + movq %r8,%r12 + movq %r9,%r13 + movq %r10,%r14 + movq %r11,%r15 + + addq 368(%rsp),%r8 + adcq 376(%rsp),%r9 + adcq 384(%rsp),%r10 + adcq 392(%rsp),%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + addq %rdx,%r8 + + movq %r8,304(%rsp) + movq %r9,312(%rsp) + movq %r10,320(%rsp) + movq %r11,328(%rsp) + + // sub + subq 368(%rsp),%r12 + sbbq 376(%rsp),%r13 + sbbq 384(%rsp),%r14 + sbbq 392(%rsp),%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + subq %rdx,%r12 + + movq %r12,240(%rsp) + movq %r13,248(%rsp) + movq %r14,256(%rsp) + movq %r15,264(%rsp) + + // mul + movq 432(%rsp),%rdx + + mulx 208(%rsp),%r8,%r9 + mulx 216(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 224(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 232(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 440(%rsp),%rdx + + mulx 208(%rsp),%rax,%rbx + mulx 216(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 224(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 232(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 448(%rsp),%rdx + + mulx 208(%rsp),%rax,%rbx + mulx 216(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 224(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 232(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 456(%rsp),%rdx + + mulx 208(%rsp),%rax,%rbx + mulx 216(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 224(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 232(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + // double + movq 176(%rsp),%r12 + movq 184(%rsp),%r13 + movq 192(%rsp),%r14 + movq 200(%rsp),%r15 + + addq %r12,%r12 + adcq %r13,%r13 + adcq %r14,%r14 + adcq %r15,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r12 + adcq %rdx,%r13 + adcq %rdx,%r14 + adcq %rdx,%r15 + + cmovc %rax,%rdx + addq %rdx,%r12 + + // sub + movq %r12,%rbx + movq %r13,%rcx + movq %r14,%rbp + movq %r15,%rsi + + subq %r8,%r12 + sbbq %r9,%r13 + sbbq %r10,%r14 + sbbq %r11,%r15 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + subq %rax,%r12 + sbbq %rdx,%r13 + sbbq %rdx,%r14 + sbbq %rdx,%r15 + + cmovc %rax,%rdx + sbbq %rdx,%r12 + + movq %r12,336(%rsp) + movq %r13,344(%rsp) + movq %r14,352(%rsp) + movq %r15,360(%rsp) + + // add + addq %rbx,%r8 + adcq %rcx,%r9 + adcq %rbp,%r10 + adcq %rsi,%r11 + + movq $0,%rdx + mov $38,%rax + cmovae %rdx,%rax + + addq %rax,%r8 + adcq %rdx,%r9 + adcq %rdx,%r10 + adcq %rdx,%r11 + + cmovc %rax,%rdx + adcq %rdx,%r8 + + movq %r8,272(%rsp) + movq %r9,280(%rsp) + movq %r10,288(%rsp) + movq %r11,296(%rsp) + +.L9: + movq 56(%rsp),%rdi + + /* p1p1 to p2 */ + + // mul + movq 240(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 248(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 256(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 264(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,0(%rdi) + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + + // mul + movq 272(%rsp),%rdx + + mulx 304(%rsp),%r8,%r9 + mulx 312(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 320(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 328(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 280(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 288(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 296(%rsp),%rdx + + mulx 304(%rsp),%rax,%rbx + mulx 312(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 320(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 328(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,32(%rdi) + movq %r9,40(%rdi) + movq %r10,48(%rdi) + movq %r11,56(%rdi) + + // mul + movq 272(%rsp),%rdx + + mulx 336(%rsp),%r8,%r9 + mulx 344(%rsp),%rcx,%r10 + addq %rcx,%r9 + + mulx 352(%rsp),%rcx,%r11 + adcq %rcx,%r10 + + mulx 360(%rsp),%rcx,%r12 + adcq %rcx,%r11 + adcq $0,%r12 + + movq 280(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r13 + adcq %rcx,%rsi + adcq $0,%r13 + + addq %rax,%r9 + adcq %rbx,%r10 + adcq %rbp,%r11 + adcq %rsi,%r12 + adcq $0,%r13 + + movq 288(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r14 + adcq %rcx,%rsi + adcq $0,%r14 + + addq %rax,%r10 + adcq %rbx,%r11 + adcq %rbp,%r12 + adcq %rsi,%r13 + adcq $0,%r14 + + movq 296(%rsp),%rdx + + mulx 336(%rsp),%rax,%rbx + mulx 344(%rsp),%rcx,%rbp + addq %rcx,%rbx + + mulx 352(%rsp),%rcx,%rsi + adcq %rcx,%rbp + + mulx 360(%rsp),%rcx,%r15 + adcq %rcx,%rsi + adcq $0,%r15 + + addq %rax,%r11 + adcq %rbx,%r12 + adcq %rbp,%r13 + adcq %rsi,%r14 + adcq $0,%r15 + + movq $38,%rdx + + mulx %r12,%r12,%rbx + mulx %r13,%r13,%rcx + addq %rbx,%r13 + + mulx %r14,%r14,%rbx + adcq %rcx,%r14 + + mulx %r15,%r15,%rcx + adcq %rbx,%r15 + adcq $0,%rcx + + addq %r12,%r8 + adcq %r13,%r9 + adcq %r14,%r10 + adcq %r15,%r11 + adcq $0,%rcx + + shld $1,%r11,%rcx + andq mask63(%rip),%r11 + + imul $19,%rcx,%rcx + addq %rcx,%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + + movq %r8,64(%rdi) + movq %r9,72(%rdi) + movq %r10,80(%rdi) + movq %r11,88(%rdi) + + movq 96(%rsp),%rax + decq %rax + movq %rax,96(%rsp) + + cmpq $0,%rax + + jge .L3 + +.L10: + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_pack.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_pack.c new file mode 120000 index 0000000000..6029b816df --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_pack.c @@ -0,0 +1 @@ +../amd64-51/ge25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_unpackneg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_unpackneg.c new file mode 120000 index 0000000000..4b7f5c5cff --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/ge25519_unpackneg.c @@ -0,0 +1 @@ +../amd64-64/ge25519_unpackneg.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/implementors b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/implementors new file mode 100644 index 0000000000..8e176c8d33 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/implementors @@ -0,0 +1,5 @@ +ge25519_double_scalarmult_precompute.S: Kaushik Nath +ge25519_double_scalarmult_process.S: Kaushik Nath +fe25519_mul.S,fe25519_nsquare.S: Kaushik Nath +mGnP.c: D. J. Bernstein +other code: see amd64-64-24k diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/mGnP.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/mGnP.c new file mode 120000 index 0000000000..7ad91e663e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/mGnP.c @@ -0,0 +1 @@ +../amd64-maa4/mGnP.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_barrett.S b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_barrett.S new file mode 120000 index 0000000000..26a5f8a1c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_barrett.S @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_barrett.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_from64bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_from64bytes.c new file mode 120000 index 0000000000..f6a000bcdd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_from64bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from64bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_slide.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_slide.c new file mode 120000 index 0000000000..10ea12d89a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_slide.c @@ -0,0 +1 @@ +../amd64-51/sc25519_slide.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_to32bytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_to32bytes.c new file mode 120000 index 0000000000..6930ca05f6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/sc25519_to32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_to32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/shared-consts.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/shared-consts.c new file mode 120000 index 0000000000..e88d1f4568 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/shared-data.c b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/shared-data.c new file mode 120000 index 0000000000..055c21deb2 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/shared-data.c @@ -0,0 +1 @@ +../amd64-51/shared-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/shared-data.h b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/shared-data.h new file mode 120000 index 0000000000..0f186b9458 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/amd64-mxaa/shared-data.h @@ -0,0 +1 @@ +../amd64-51/shared-data.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/Bi.h b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/Bi.h new file mode 100644 index 0000000000..cb6192b82e --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/Bi.h @@ -0,0 +1,10 @@ +#ifndef Bi_h +#define Bi_h + +#define Bi CRYPTO_SHARED_NAMESPACE(Bi) + +#include "ge.h" + +extern const ge_precomp Bi[8]; + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/Makefile b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/Makefile new file mode 100644 index 0000000000..9b0ba7ad45 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/Makefile @@ -0,0 +1,41 @@ +all: d.h d2.h sqrtm1.h base.h base2.h \ +ge_add.h ge_sub.h \ +ge_madd.h ge_msub.h \ +ge_p2_dbl.h \ +pow225521.h pow22523.h + +d.h: d.py + python d.py > d.h + +d2.h: d2.py + python d2.py > d2.h + +sqrtm1.h: sqrtm1.py + python sqrtm1.py > sqrtm1.h + +base.h: base.py + python base.py > base.h + +base2.h: base2.py + python base2.py > base2.h + +ge_add.h: ge_add.q q2h.sh + ./q2h.sh < ge_add.q > ge_add.h + +ge_sub.h: ge_sub.q q2h.sh + ./q2h.sh < ge_sub.q > ge_sub.h + +ge_madd.h: ge_madd.q q2h.sh + ./q2h.sh < ge_madd.q > ge_madd.h + +ge_msub.h: ge_msub.q q2h.sh + ./q2h.sh < ge_msub.q > ge_msub.h + +ge_p2_dbl.h: ge_p2_dbl.q q2h.sh + ./q2h.sh < ge_p2_dbl.q > ge_p2_dbl.h + +pow22523.h: pow22523.q q2h.sh + ./q2h.sh < pow22523.q > pow22523.h + +pow225521.h: pow225521.q q2h.sh + ./q2h.sh < pow225521.q > pow225521.h diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/README b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/README new file mode 100644 index 0000000000..0d992f0cec --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/README @@ -0,0 +1 @@ +Public domain. diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/base2.h b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/base2.h new file mode 100644 index 0000000000..8c538440ff --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/base2.h @@ -0,0 +1,40 @@ + { + { 25967493,-14356035,29566456,3660896,-12694345,4014787,27544626,-11754271,-6079156,2047605 }, + { -12545711,934262,-2722910,3049990,-727428,9406986,12720692,5043384,19500929,-15469378 }, + { -8738181,4489570,9688441,-14785194,10184609,-12363380,29287919,11864899,-24514362,-4438546 }, + }, + { + { 15636291,-9688557,24204773,-7912398,616977,-16685262,27787600,-14772189,28944400,-1550024 }, + { 16568933,4717097,-11556148,-1102322,15682896,-11807043,16354577,-11775962,7689662,11199574 }, + { 30464156,-5976125,-11779434,-15670865,23220365,15915852,7512774,10017326,-17749093,-9920357 }, + }, + { + { 10861363,11473154,27284546,1981175,-30064349,12577861,32867885,14515107,-15438304,10819380 }, + { 4708026,6336745,20377586,9066809,-11272109,6594696,-25653668,12483688,-12668491,5581306 }, + { 19563160,16186464,-29386857,4097519,10237984,-4348115,28542350,13850243,-23678021,-15815942 }, + }, + { + { 5153746,9909285,1723747,-2777874,30523605,5516873,19480852,5230134,-23952439,-15175766 }, + { -30269007,-3463509,7665486,10083793,28475525,1649722,20654025,16520125,30598449,7715701 }, + { 28881845,14381568,9657904,3680757,-20181635,7843316,-31400660,1370708,29794553,-1409300 }, + }, + { + { -22518993,-6692182,14201702,-8745502,-23510406,8844726,18474211,-1361450,-13062696,13821877 }, + { -6455177,-7839871,3374702,-4740862,-27098617,-10571707,31655028,-7212327,18853322,-14220951 }, + { 4566830,-12963868,-28974889,-12240689,-7602672,-2830569,-8514358,-10431137,2207753,-3209784 }, + }, + { + { -25154831,-4185821,29681144,7868801,-6854661,-9423865,-12437364,-663000,-31111463,-16132436 }, + { 25576264,-2703214,7349804,-11814844,16472782,9300885,3844789,15725684,171356,6466918 }, + { 23103977,13316479,9739013,-16149481,817875,-15038942,8965339,-14088058,-30714912,16193877 }, + }, + { + { -33521811,3180713,-2394130,14003687,-16903474,-16270840,17238398,4729455,-18074513,9256800 }, + { -25182317,-4174131,32336398,5036987,-21236817,11360617,22616405,9761698,-19827198,630305 }, + { -13720693,2639453,-24237460,-7406481,9494427,-5774029,-6554551,-15960994,-2449256,-14291300 }, + }, + { + { -3151181,-5046075,9282714,6866145,-31907062,-863023,-18940575,15033784,25105118,-7894876 }, + { -24326370,15950226,-31801215,-14592823,-11662737,-5090925,1573892,-2625887,2198790,-15804619 }, + { -3099351,10324967,-2241613,7453183,-5446979,-2735503,-13812022,-16236442,-32461234,-12290683 }, + }, diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/base2.py b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/base2.py new file mode 100644 index 0000000000..5e4e8739d0 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/base2.py @@ -0,0 +1,60 @@ +b = 256 +q = 2**255 - 19 +l = 2**252 + 27742317777372353535851937790883648493 + +def expmod(b,e,m): + if e == 0: return 1 + t = expmod(b,e/2,m)**2 % m + if e & 1: t = (t*b) % m + return t + +def inv(x): + return expmod(x,q-2,q) + +d = -121665 * inv(121666) +I = expmod(2,(q-1)/4,q) + +def xrecover(y): + xx = (y*y-1) * inv(d*y*y+1) + x = expmod(xx,(q+3)/8,q) + if (x*x - xx) % q != 0: x = (x*I) % q + if x % 2 != 0: x = q-x + return x + +By = 4 * inv(5) +Bx = xrecover(By) +B = [Bx % q,By % q] + +def edwards(P,Q): + x1 = P[0] + y1 = P[1] + x2 = Q[0] + y2 = Q[1] + x3 = (x1*y2+x2*y1) * inv(1+d*x1*x2*y1*y2) + y3 = (y1*y2+x1*x2) * inv(1-d*x1*x2*y1*y2) + return [x3 % q,y3 % q] + +def radix255(x): + x = x % q + if x + x > q: x -= q + x = [x,0,0,0,0,0,0,0,0,0] + bits = [26,25,26,25,26,25,26,25,26,25] + for i in range(9): + carry = (x[i] + 2**(bits[i]-1)) / 2**bits[i] + x[i] -= carry * 2**bits[i] + x[i + 1] += carry + result = "" + for i in range(9): + result = result+str(x[i])+"," + result = result+str(x[9]) + return result + +Bi = B + +for i in range(8): + print " {" + print " {",radix255(Bi[1]+Bi[0]),"}," + print " {",radix255(Bi[1]-Bi[0]),"}," + print " {",radix255(2*d*Bi[0]*Bi[1]),"}," + print " }," + Bi = edwards(B,edwards(B,Bi)) diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/d.h b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/d.h new file mode 100644 index 0000000000..e25f578350 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/d.h @@ -0,0 +1 @@ +-10913610,13857413,-15372611,6949391,114729,-8787816,-6275908,-3247719,-18696448,-12055116 diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/d.py b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/d.py new file mode 100644 index 0000000000..8995bb86a3 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/d.py @@ -0,0 +1,28 @@ +q = 2**255 - 19 + +def expmod(b,e,m): + if e == 0: return 1 + t = expmod(b,e/2,m)**2 % m + if e & 1: t = (t*b) % m + return t + +def inv(x): + return expmod(x,q-2,q) + +def radix255(x): + x = x % q + if x + x > q: x -= q + x = [x,0,0,0,0,0,0,0,0,0] + bits = [26,25,26,25,26,25,26,25,26,25] + for i in range(9): + carry = (x[i] + 2**(bits[i]-1)) / 2**bits[i] + x[i] -= carry * 2**bits[i] + x[i + 1] += carry + result = "" + for i in range(9): + result = result+str(x[i])+"," + result = result+str(x[9]) + return result + +d = -121665 * inv(121666) +print radix255(d) diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/d2.h b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/d2.h new file mode 100644 index 0000000000..01aaec7512 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/d2.h @@ -0,0 +1 @@ +-21827239,-5839606,-30745221,13898782,229458,15978800,-12551817,-6495438,29715968,9444199 diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/d2.py b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/d2.py new file mode 100644 index 0000000000..79841758be --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/d2.py @@ -0,0 +1,28 @@ +q = 2**255 - 19 + +def expmod(b,e,m): + if e == 0: return 1 + t = expmod(b,e/2,m)**2 % m + if e & 1: t = (t*b) % m + return t + +def inv(x): + return expmod(x,q-2,q) + +def radix255(x): + x = x % q + if x + x > q: x -= q + x = [x,0,0,0,0,0,0,0,0,0] + bits = [26,25,26,25,26,25,26,25,26,25] + for i in range(9): + carry = (x[i] + 2**(bits[i]-1)) / 2**bits[i] + x[i] -= carry * 2**bits[i] + x[i + 1] += carry + result = "" + for i in range(9): + result = result+str(x[i])+"," + result = result+str(x[9]) + return result + +d = -121665 * inv(121666) +print radix255(d*2) diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe.h b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe.h new file mode 100644 index 0000000000..b5e27ce2a9 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe.h @@ -0,0 +1,56 @@ +#ifndef FE_H +#define FE_H + +#include "crypto_int32.h" + +typedef crypto_int32 fe[10]; + +/* +fe means field element. +Here the field is \Z/(2^255-19). +An element t, entries t[0]...t[9], represents the integer +t[0]+2^26 t[1]+2^51 t[2]+2^77 t[3]+2^102 t[4]+...+2^230 t[9]. +Bounds on each t[i] vary depending on context. +*/ + +#define fe_frombytes CRYPTO_NAMESPACE(fe_frombytes) +#define fe_tobytes CRYPTO_NAMESPACE(fe_tobytes) +#define fe_copy CRYPTO_NAMESPACE(fe_copy) +#define fe_isnonzero CRYPTO_NAMESPACE(fe_isnonzero) +#define fe_isnegative CRYPTO_NAMESPACE(fe_isnegative) +#define fe_0 CRYPTO_NAMESPACE(fe_0) +#define fe_1 CRYPTO_NAMESPACE(fe_1) +#define fe_cswap CRYPTO_NAMESPACE(fe_cswap) +#define fe_cmov CRYPTO_NAMESPACE(fe_cmov) +#define fe_add CRYPTO_NAMESPACE(fe_add) +#define fe_sub CRYPTO_NAMESPACE(fe_sub) +#define fe_neg CRYPTO_NAMESPACE(fe_neg) +#define fe_mul CRYPTO_NAMESPACE(fe_mul) +#define fe_sq CRYPTO_NAMESPACE(fe_sq) +#define fe_sq2 CRYPTO_NAMESPACE(fe_sq2) +#define fe_mul121666 CRYPTO_NAMESPACE(fe_mul121666) +#define fe_invert CRYPTO_NAMESPACE(fe_invert) +#define fe_pow22523 CRYPTO_NAMESPACE(fe_pow22523) + +extern void fe_frombytes(fe,const unsigned char *); +extern void fe_tobytes(unsigned char *,const fe); + +extern void fe_copy(fe,const fe); +extern int fe_isnonzero(const fe); +extern int fe_isnegative(const fe); +extern void fe_0(fe); +extern void fe_1(fe); +extern void fe_cswap(fe,fe,unsigned int); +extern void fe_cmov(fe,const fe,unsigned int); + +extern void fe_add(fe,const fe,const fe); +extern void fe_sub(fe,const fe,const fe); +extern void fe_neg(fe,const fe); +extern void fe_mul(fe,const fe,const fe); +extern void fe_sq(fe,const fe); +extern void fe_sq2(fe,const fe); +extern void fe_mul121666(fe,const fe); +extern void fe_invert(fe,const fe); +extern void fe_pow22523(fe,const fe); + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_0.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_0.c new file mode 100644 index 0000000000..c2e4af98ee --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_0.c @@ -0,0 +1,21 @@ +// linker define fe_0 + +#include "fe.h" + +/* +h = 0 +*/ + +void fe_0(fe h) +{ + h[0] = 0; + h[1] = 0; + h[2] = 0; + h[3] = 0; + h[4] = 0; + h[5] = 0; + h[6] = 0; + h[7] = 0; + h[8] = 0; + h[9] = 0; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_1.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_1.c new file mode 100644 index 0000000000..78362a81c0 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_1.c @@ -0,0 +1,21 @@ +// linker define fe_1 + +#include "fe.h" + +/* +h = 1 +*/ + +void fe_1(fe h) +{ + h[0] = 1; + h[1] = 0; + h[2] = 0; + h[3] = 0; + h[4] = 0; + h[5] = 0; + h[6] = 0; + h[7] = 0; + h[8] = 0; + h[9] = 0; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_add.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_add.c new file mode 100644 index 0000000000..2144a7ebc0 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_add.c @@ -0,0 +1,59 @@ +// linker define fe_add + +#include "fe.h" + +/* +h = f + g +Can overlap h with f or g. + +Preconditions: + |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + +Postconditions: + |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +*/ + +void fe_add(fe h,const fe f,const fe g) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 g0 = g[0]; + crypto_int32 g1 = g[1]; + crypto_int32 g2 = g[2]; + crypto_int32 g3 = g[3]; + crypto_int32 g4 = g[4]; + crypto_int32 g5 = g[5]; + crypto_int32 g6 = g[6]; + crypto_int32 g7 = g[7]; + crypto_int32 g8 = g[8]; + crypto_int32 g9 = g[9]; + crypto_int32 h0 = f0 + g0; + crypto_int32 h1 = f1 + g1; + crypto_int32 h2 = f2 + g2; + crypto_int32 h3 = f3 + g3; + crypto_int32 h4 = f4 + g4; + crypto_int32 h5 = f5 + g5; + crypto_int32 h6 = f6 + g6; + crypto_int32 h7 = f7 + g7; + crypto_int32 h8 = f8 + g8; + crypto_int32 h9 = f9 + g9; + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_copy.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_copy.c new file mode 100644 index 0000000000..e4d48127ac --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_copy.c @@ -0,0 +1,31 @@ +// linker define fe_copy + +#include "fe.h" + +/* +h = f +*/ + +void fe_copy(fe h,const fe f) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + h[0] = f0; + h[1] = f1; + h[2] = f2; + h[3] = f3; + h[4] = f4; + h[5] = f5; + h[6] = f6; + h[7] = f7; + h[8] = f8; + h[9] = f9; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_frombytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_frombytes.c new file mode 100644 index 0000000000..008d379ffd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_frombytes.c @@ -0,0 +1,75 @@ +// linker define fe_frombytes + +#include "fe.h" +#include "crypto_int64.h" +#include "crypto_uint64.h" + +static crypto_uint64 load_3(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + return result; +} + +static crypto_uint64 load_4(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + result |= ((crypto_uint64) in[3]) << 24; + return result; +} + +/* +Ignores top bit of h. +*/ + +void fe_frombytes(fe h,const unsigned char *s) +{ + crypto_int64 h0 = load_4(s); + crypto_int64 h1 = load_3(s + 4) << 6; + crypto_int64 h2 = load_3(s + 7) << 5; + crypto_int64 h3 = load_3(s + 10) << 3; + crypto_int64 h4 = load_3(s + 13) << 2; + crypto_int64 h5 = load_4(s + 16); + crypto_int64 h6 = load_3(s + 20) << 7; + crypto_int64 h7 = load_3(s + 23) << 5; + crypto_int64 h8 = load_3(s + 26) << 4; + crypto_int64 h9 = (load_3(s + 29) & 8388607) << 2; + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + + carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_invert.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_invert.c new file mode 100644 index 0000000000..51012e024d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_invert.c @@ -0,0 +1,14 @@ +// linker define fe_invert +// linker use fe_tobytes +// linker use fe_frombytes + +#include "crypto_pow_inv25519.h" +#include "fe.h" + +void fe_invert(fe out,const fe z) +{ + unsigned char r[32]; + fe_tobytes(r,z); + crypto_pow_inv25519(r,r); + fe_frombytes(out,r); +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_isnegative.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_isnegative.c new file mode 100644 index 0000000000..9c077b065f --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_isnegative.c @@ -0,0 +1,19 @@ +// linker define fe_isnegative +// linker use fe_tobytes + +#include "fe.h" + +/* +return 1 if f is in {1,3,5,...,q-2} +return 0 if f is in {0,2,4,...,q-1} + +Preconditions: + |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +*/ + +int fe_isnegative(const fe f) +{ + unsigned char s[32]; + fe_tobytes(s,f); + return s[0] & 1; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_isnonzero.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_isnonzero.c new file mode 100644 index 0000000000..cefb040637 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_isnonzero.c @@ -0,0 +1,22 @@ +// linker define fe_isnonzero +// linker use fe_tobytes + +#include "fe.h" +#include "crypto_verify_32.h" + +/* +return 1 if f == 0 +return 0 if f != 0 + +Preconditions: + |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +*/ + +static const unsigned char zero[32]; + +int fe_isnonzero(const fe f) +{ + unsigned char s[32]; + fe_tobytes(s,f); + return crypto_verify_32(s,zero); +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_mul.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_mul.c new file mode 100644 index 0000000000..69949d5b22 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_mul.c @@ -0,0 +1,255 @@ +// linker define fe_mul + +#include "fe.h" +#include "crypto_int64.h" + +/* +h = f * g +Can overlap h with f or g. + +Preconditions: + |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + |g| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + +Postconditions: + |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. +*/ + +/* +Notes on implementation strategy: + +Using schoolbook multiplication. +Karatsuba would save a little in some cost models. + +Most multiplications by 2 and 19 are 32-bit precomputations; +cheaper than 64-bit postcomputations. + +There is one remaining multiplication by 19 in the carry chain; +one *19 precomputation can be merged into this, +but the resulting data flow is considerably less clean. + +There are 12 carries below. +10 of them are 2-way parallelizable and vectorizable. +Can get away with 11 carries, but then data flow is much deeper. + +With tighter constraints on inputs can squeeze carries into int32. +*/ + +void fe_mul(fe h,const fe f,const fe g) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 g0 = g[0]; + crypto_int32 g1 = g[1]; + crypto_int32 g2 = g[2]; + crypto_int32 g3 = g[3]; + crypto_int32 g4 = g[4]; + crypto_int32 g5 = g[5]; + crypto_int32 g6 = g[6]; + crypto_int32 g7 = g[7]; + crypto_int32 g8 = g[8]; + crypto_int32 g9 = g[9]; + crypto_int32 g1_19 = 19 * g1; /* 1.959375*2^29 */ + crypto_int32 g2_19 = 19 * g2; /* 1.959375*2^30; still ok */ + crypto_int32 g3_19 = 19 * g3; + crypto_int32 g4_19 = 19 * g4; + crypto_int32 g5_19 = 19 * g5; + crypto_int32 g6_19 = 19 * g6; + crypto_int32 g7_19 = 19 * g7; + crypto_int32 g8_19 = 19 * g8; + crypto_int32 g9_19 = 19 * g9; + crypto_int32 f1_2 = 2 * f1; + crypto_int32 f3_2 = 2 * f3; + crypto_int32 f5_2 = 2 * f5; + crypto_int32 f7_2 = 2 * f7; + crypto_int32 f9_2 = 2 * f9; + crypto_int64 f0g0 = f0 * (crypto_int64) g0; + crypto_int64 f0g1 = f0 * (crypto_int64) g1; + crypto_int64 f0g2 = f0 * (crypto_int64) g2; + crypto_int64 f0g3 = f0 * (crypto_int64) g3; + crypto_int64 f0g4 = f0 * (crypto_int64) g4; + crypto_int64 f0g5 = f0 * (crypto_int64) g5; + crypto_int64 f0g6 = f0 * (crypto_int64) g6; + crypto_int64 f0g7 = f0 * (crypto_int64) g7; + crypto_int64 f0g8 = f0 * (crypto_int64) g8; + crypto_int64 f0g9 = f0 * (crypto_int64) g9; + crypto_int64 f1g0 = f1 * (crypto_int64) g0; + crypto_int64 f1g1_2 = f1_2 * (crypto_int64) g1; + crypto_int64 f1g2 = f1 * (crypto_int64) g2; + crypto_int64 f1g3_2 = f1_2 * (crypto_int64) g3; + crypto_int64 f1g4 = f1 * (crypto_int64) g4; + crypto_int64 f1g5_2 = f1_2 * (crypto_int64) g5; + crypto_int64 f1g6 = f1 * (crypto_int64) g6; + crypto_int64 f1g7_2 = f1_2 * (crypto_int64) g7; + crypto_int64 f1g8 = f1 * (crypto_int64) g8; + crypto_int64 f1g9_38 = f1_2 * (crypto_int64) g9_19; + crypto_int64 f2g0 = f2 * (crypto_int64) g0; + crypto_int64 f2g1 = f2 * (crypto_int64) g1; + crypto_int64 f2g2 = f2 * (crypto_int64) g2; + crypto_int64 f2g3 = f2 * (crypto_int64) g3; + crypto_int64 f2g4 = f2 * (crypto_int64) g4; + crypto_int64 f2g5 = f2 * (crypto_int64) g5; + crypto_int64 f2g6 = f2 * (crypto_int64) g6; + crypto_int64 f2g7 = f2 * (crypto_int64) g7; + crypto_int64 f2g8_19 = f2 * (crypto_int64) g8_19; + crypto_int64 f2g9_19 = f2 * (crypto_int64) g9_19; + crypto_int64 f3g0 = f3 * (crypto_int64) g0; + crypto_int64 f3g1_2 = f3_2 * (crypto_int64) g1; + crypto_int64 f3g2 = f3 * (crypto_int64) g2; + crypto_int64 f3g3_2 = f3_2 * (crypto_int64) g3; + crypto_int64 f3g4 = f3 * (crypto_int64) g4; + crypto_int64 f3g5_2 = f3_2 * (crypto_int64) g5; + crypto_int64 f3g6 = f3 * (crypto_int64) g6; + crypto_int64 f3g7_38 = f3_2 * (crypto_int64) g7_19; + crypto_int64 f3g8_19 = f3 * (crypto_int64) g8_19; + crypto_int64 f3g9_38 = f3_2 * (crypto_int64) g9_19; + crypto_int64 f4g0 = f4 * (crypto_int64) g0; + crypto_int64 f4g1 = f4 * (crypto_int64) g1; + crypto_int64 f4g2 = f4 * (crypto_int64) g2; + crypto_int64 f4g3 = f4 * (crypto_int64) g3; + crypto_int64 f4g4 = f4 * (crypto_int64) g4; + crypto_int64 f4g5 = f4 * (crypto_int64) g5; + crypto_int64 f4g6_19 = f4 * (crypto_int64) g6_19; + crypto_int64 f4g7_19 = f4 * (crypto_int64) g7_19; + crypto_int64 f4g8_19 = f4 * (crypto_int64) g8_19; + crypto_int64 f4g9_19 = f4 * (crypto_int64) g9_19; + crypto_int64 f5g0 = f5 * (crypto_int64) g0; + crypto_int64 f5g1_2 = f5_2 * (crypto_int64) g1; + crypto_int64 f5g2 = f5 * (crypto_int64) g2; + crypto_int64 f5g3_2 = f5_2 * (crypto_int64) g3; + crypto_int64 f5g4 = f5 * (crypto_int64) g4; + crypto_int64 f5g5_38 = f5_2 * (crypto_int64) g5_19; + crypto_int64 f5g6_19 = f5 * (crypto_int64) g6_19; + crypto_int64 f5g7_38 = f5_2 * (crypto_int64) g7_19; + crypto_int64 f5g8_19 = f5 * (crypto_int64) g8_19; + crypto_int64 f5g9_38 = f5_2 * (crypto_int64) g9_19; + crypto_int64 f6g0 = f6 * (crypto_int64) g0; + crypto_int64 f6g1 = f6 * (crypto_int64) g1; + crypto_int64 f6g2 = f6 * (crypto_int64) g2; + crypto_int64 f6g3 = f6 * (crypto_int64) g3; + crypto_int64 f6g4_19 = f6 * (crypto_int64) g4_19; + crypto_int64 f6g5_19 = f6 * (crypto_int64) g5_19; + crypto_int64 f6g6_19 = f6 * (crypto_int64) g6_19; + crypto_int64 f6g7_19 = f6 * (crypto_int64) g7_19; + crypto_int64 f6g8_19 = f6 * (crypto_int64) g8_19; + crypto_int64 f6g9_19 = f6 * (crypto_int64) g9_19; + crypto_int64 f7g0 = f7 * (crypto_int64) g0; + crypto_int64 f7g1_2 = f7_2 * (crypto_int64) g1; + crypto_int64 f7g2 = f7 * (crypto_int64) g2; + crypto_int64 f7g3_38 = f7_2 * (crypto_int64) g3_19; + crypto_int64 f7g4_19 = f7 * (crypto_int64) g4_19; + crypto_int64 f7g5_38 = f7_2 * (crypto_int64) g5_19; + crypto_int64 f7g6_19 = f7 * (crypto_int64) g6_19; + crypto_int64 f7g7_38 = f7_2 * (crypto_int64) g7_19; + crypto_int64 f7g8_19 = f7 * (crypto_int64) g8_19; + crypto_int64 f7g9_38 = f7_2 * (crypto_int64) g9_19; + crypto_int64 f8g0 = f8 * (crypto_int64) g0; + crypto_int64 f8g1 = f8 * (crypto_int64) g1; + crypto_int64 f8g2_19 = f8 * (crypto_int64) g2_19; + crypto_int64 f8g3_19 = f8 * (crypto_int64) g3_19; + crypto_int64 f8g4_19 = f8 * (crypto_int64) g4_19; + crypto_int64 f8g5_19 = f8 * (crypto_int64) g5_19; + crypto_int64 f8g6_19 = f8 * (crypto_int64) g6_19; + crypto_int64 f8g7_19 = f8 * (crypto_int64) g7_19; + crypto_int64 f8g8_19 = f8 * (crypto_int64) g8_19; + crypto_int64 f8g9_19 = f8 * (crypto_int64) g9_19; + crypto_int64 f9g0 = f9 * (crypto_int64) g0; + crypto_int64 f9g1_38 = f9_2 * (crypto_int64) g1_19; + crypto_int64 f9g2_19 = f9 * (crypto_int64) g2_19; + crypto_int64 f9g3_38 = f9_2 * (crypto_int64) g3_19; + crypto_int64 f9g4_19 = f9 * (crypto_int64) g4_19; + crypto_int64 f9g5_38 = f9_2 * (crypto_int64) g5_19; + crypto_int64 f9g6_19 = f9 * (crypto_int64) g6_19; + crypto_int64 f9g7_38 = f9_2 * (crypto_int64) g7_19; + crypto_int64 f9g8_19 = f9 * (crypto_int64) g8_19; + crypto_int64 f9g9_38 = f9_2 * (crypto_int64) g9_19; + crypto_int64 h0 = f0g0+f1g9_38+f2g8_19+f3g7_38+f4g6_19+f5g5_38+f6g4_19+f7g3_38+f8g2_19+f9g1_38; + crypto_int64 h1 = f0g1+f1g0 +f2g9_19+f3g8_19+f4g7_19+f5g6_19+f6g5_19+f7g4_19+f8g3_19+f9g2_19; + crypto_int64 h2 = f0g2+f1g1_2 +f2g0 +f3g9_38+f4g8_19+f5g7_38+f6g6_19+f7g5_38+f8g4_19+f9g3_38; + crypto_int64 h3 = f0g3+f1g2 +f2g1 +f3g0 +f4g9_19+f5g8_19+f6g7_19+f7g6_19+f8g5_19+f9g4_19; + crypto_int64 h4 = f0g4+f1g3_2 +f2g2 +f3g1_2 +f4g0 +f5g9_38+f6g8_19+f7g7_38+f8g6_19+f9g5_38; + crypto_int64 h5 = f0g5+f1g4 +f2g3 +f3g2 +f4g1 +f5g0 +f6g9_19+f7g8_19+f8g7_19+f9g6_19; + crypto_int64 h6 = f0g6+f1g5_2 +f2g4 +f3g3_2 +f4g2 +f5g1_2 +f6g0 +f7g9_38+f8g8_19+f9g7_38; + crypto_int64 h7 = f0g7+f1g6 +f2g5 +f3g4 +f4g3 +f5g2 +f6g1 +f7g0 +f8g9_19+f9g8_19; + crypto_int64 h8 = f0g8+f1g7_2 +f2g6 +f3g5_2 +f4g4 +f5g3_2 +f6g2 +f7g1_2 +f8g0 +f9g9_38; + crypto_int64 h9 = f0g9+f1g8 +f2g7 +f3g6 +f4g5 +f5g4 +f6g3 +f7g2 +f8g1 +f9g0 ; + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + + /* + |h0| <= (1.65*1.65*2^52*(1+19+19+19+19)+1.65*1.65*2^50*(38+38+38+38+38)) + i.e. |h0| <= 1.4*2^60; narrower ranges for h2, h4, h6, h8 + |h1| <= (1.65*1.65*2^51*(1+1+19+19+19+19+19+19+19+19)) + i.e. |h1| <= 1.7*2^59; narrower ranges for h3, h5, h7, h9 + */ + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + /* |h0| <= 2^25 */ + /* |h4| <= 2^25 */ + /* |h1| <= 1.71*2^59 */ + /* |h5| <= 1.71*2^59 */ + + carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + /* |h1| <= 2^24; from now on fits into int32 */ + /* |h5| <= 2^24; from now on fits into int32 */ + /* |h2| <= 1.41*2^60 */ + /* |h6| <= 1.41*2^60 */ + + carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + /* |h2| <= 2^25; from now on fits into int32 unchanged */ + /* |h6| <= 2^25; from now on fits into int32 unchanged */ + /* |h3| <= 1.71*2^59 */ + /* |h7| <= 1.71*2^59 */ + + carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + /* |h3| <= 2^24; from now on fits into int32 unchanged */ + /* |h7| <= 2^24; from now on fits into int32 unchanged */ + /* |h4| <= 1.72*2^34 */ + /* |h8| <= 1.41*2^60 */ + + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + /* |h4| <= 2^25; from now on fits into int32 unchanged */ + /* |h8| <= 2^25; from now on fits into int32 unchanged */ + /* |h5| <= 1.01*2^24 */ + /* |h9| <= 1.71*2^59 */ + + carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + /* |h9| <= 2^24; from now on fits into int32 unchanged */ + /* |h0| <= 1.1*2^39 */ + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + /* |h0| <= 2^25; from now on fits into int32 unchanged */ + /* |h1| <= 1.01*2^24 */ + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_neg.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_neg.c new file mode 100644 index 0000000000..c4e12aa396 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_neg.c @@ -0,0 +1,47 @@ +// linker define fe_neg + +#include "fe.h" + +/* +h = -f + +Preconditions: + |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + +Postconditions: + |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. +*/ + +void fe_neg(fe h,const fe f) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 h0 = -f0; + crypto_int32 h1 = -f1; + crypto_int32 h2 = -f2; + crypto_int32 h3 = -f3; + crypto_int32 h4 = -f4; + crypto_int32 h5 = -f5; + crypto_int32 h6 = -f6; + crypto_int32 h7 = -f7; + crypto_int32 h8 = -f8; + crypto_int32 h9 = -f9; + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_pow22523.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_pow22523.c new file mode 100644 index 0000000000..a7a2e98e2d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_pow22523.c @@ -0,0 +1,16 @@ +// linker define fe_pow22523 +// linker use fe_sq fe_mul + +#include "fe.h" + +void fe_pow22523(fe out,const fe z) +{ + fe t0; + fe t1; + fe t2; + int i; + +#include "pow22523.h" + + return; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_sq.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_sq.c new file mode 100644 index 0000000000..bf22910010 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_sq.c @@ -0,0 +1,151 @@ +// linker define fe_sq + +#include "fe.h" +#include "crypto_int64.h" + +/* +h = f * f +Can overlap h with f. + +Preconditions: + |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + +Postconditions: + |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. +*/ + +/* +See fe_mul.c for discussion of implementation strategy. +*/ + +void fe_sq(fe h,const fe f) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 f0_2 = 2 * f0; + crypto_int32 f1_2 = 2 * f1; + crypto_int32 f2_2 = 2 * f2; + crypto_int32 f3_2 = 2 * f3; + crypto_int32 f4_2 = 2 * f4; + crypto_int32 f5_2 = 2 * f5; + crypto_int32 f6_2 = 2 * f6; + crypto_int32 f7_2 = 2 * f7; + crypto_int32 f5_38 = 38 * f5; /* 1.959375*2^30 */ + crypto_int32 f6_19 = 19 * f6; /* 1.959375*2^30 */ + crypto_int32 f7_38 = 38 * f7; /* 1.959375*2^30 */ + crypto_int32 f8_19 = 19 * f8; /* 1.959375*2^30 */ + crypto_int32 f9_38 = 38 * f9; /* 1.959375*2^30 */ + crypto_int64 f0f0 = f0 * (crypto_int64) f0; + crypto_int64 f0f1_2 = f0_2 * (crypto_int64) f1; + crypto_int64 f0f2_2 = f0_2 * (crypto_int64) f2; + crypto_int64 f0f3_2 = f0_2 * (crypto_int64) f3; + crypto_int64 f0f4_2 = f0_2 * (crypto_int64) f4; + crypto_int64 f0f5_2 = f0_2 * (crypto_int64) f5; + crypto_int64 f0f6_2 = f0_2 * (crypto_int64) f6; + crypto_int64 f0f7_2 = f0_2 * (crypto_int64) f7; + crypto_int64 f0f8_2 = f0_2 * (crypto_int64) f8; + crypto_int64 f0f9_2 = f0_2 * (crypto_int64) f9; + crypto_int64 f1f1_2 = f1_2 * (crypto_int64) f1; + crypto_int64 f1f2_2 = f1_2 * (crypto_int64) f2; + crypto_int64 f1f3_4 = f1_2 * (crypto_int64) f3_2; + crypto_int64 f1f4_2 = f1_2 * (crypto_int64) f4; + crypto_int64 f1f5_4 = f1_2 * (crypto_int64) f5_2; + crypto_int64 f1f6_2 = f1_2 * (crypto_int64) f6; + crypto_int64 f1f7_4 = f1_2 * (crypto_int64) f7_2; + crypto_int64 f1f8_2 = f1_2 * (crypto_int64) f8; + crypto_int64 f1f9_76 = f1_2 * (crypto_int64) f9_38; + crypto_int64 f2f2 = f2 * (crypto_int64) f2; + crypto_int64 f2f3_2 = f2_2 * (crypto_int64) f3; + crypto_int64 f2f4_2 = f2_2 * (crypto_int64) f4; + crypto_int64 f2f5_2 = f2_2 * (crypto_int64) f5; + crypto_int64 f2f6_2 = f2_2 * (crypto_int64) f6; + crypto_int64 f2f7_2 = f2_2 * (crypto_int64) f7; + crypto_int64 f2f8_38 = f2_2 * (crypto_int64) f8_19; + crypto_int64 f2f9_38 = f2 * (crypto_int64) f9_38; + crypto_int64 f3f3_2 = f3_2 * (crypto_int64) f3; + crypto_int64 f3f4_2 = f3_2 * (crypto_int64) f4; + crypto_int64 f3f5_4 = f3_2 * (crypto_int64) f5_2; + crypto_int64 f3f6_2 = f3_2 * (crypto_int64) f6; + crypto_int64 f3f7_76 = f3_2 * (crypto_int64) f7_38; + crypto_int64 f3f8_38 = f3_2 * (crypto_int64) f8_19; + crypto_int64 f3f9_76 = f3_2 * (crypto_int64) f9_38; + crypto_int64 f4f4 = f4 * (crypto_int64) f4; + crypto_int64 f4f5_2 = f4_2 * (crypto_int64) f5; + crypto_int64 f4f6_38 = f4_2 * (crypto_int64) f6_19; + crypto_int64 f4f7_38 = f4 * (crypto_int64) f7_38; + crypto_int64 f4f8_38 = f4_2 * (crypto_int64) f8_19; + crypto_int64 f4f9_38 = f4 * (crypto_int64) f9_38; + crypto_int64 f5f5_38 = f5 * (crypto_int64) f5_38; + crypto_int64 f5f6_38 = f5_2 * (crypto_int64) f6_19; + crypto_int64 f5f7_76 = f5_2 * (crypto_int64) f7_38; + crypto_int64 f5f8_38 = f5_2 * (crypto_int64) f8_19; + crypto_int64 f5f9_76 = f5_2 * (crypto_int64) f9_38; + crypto_int64 f6f6_19 = f6 * (crypto_int64) f6_19; + crypto_int64 f6f7_38 = f6 * (crypto_int64) f7_38; + crypto_int64 f6f8_38 = f6_2 * (crypto_int64) f8_19; + crypto_int64 f6f9_38 = f6 * (crypto_int64) f9_38; + crypto_int64 f7f7_38 = f7 * (crypto_int64) f7_38; + crypto_int64 f7f8_38 = f7_2 * (crypto_int64) f8_19; + crypto_int64 f7f9_76 = f7_2 * (crypto_int64) f9_38; + crypto_int64 f8f8_19 = f8 * (crypto_int64) f8_19; + crypto_int64 f8f9_38 = f8 * (crypto_int64) f9_38; + crypto_int64 f9f9_38 = f9 * (crypto_int64) f9_38; + crypto_int64 h0 = f0f0 +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38; + crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38; + crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19; + crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38; + crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2 +f5f9_76+f6f8_38+f7f7_38; + crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38; + crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19; + crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38; + crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4 +f9f9_38; + crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2; + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + + carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + + carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + + carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + + carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_sq2.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_sq2.c new file mode 100644 index 0000000000..7c5b7b1dfd --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_sq2.c @@ -0,0 +1,162 @@ +// linker define fe_sq2 + +#include "fe.h" +#include "crypto_int64.h" + +/* +h = 2 * f * f +Can overlap h with f. + +Preconditions: + |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. + +Postconditions: + |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. +*/ + +/* +See fe_mul.c for discussion of implementation strategy. +*/ + +void fe_sq2(fe h,const fe f) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 f0_2 = 2 * f0; + crypto_int32 f1_2 = 2 * f1; + crypto_int32 f2_2 = 2 * f2; + crypto_int32 f3_2 = 2 * f3; + crypto_int32 f4_2 = 2 * f4; + crypto_int32 f5_2 = 2 * f5; + crypto_int32 f6_2 = 2 * f6; + crypto_int32 f7_2 = 2 * f7; + crypto_int32 f5_38 = 38 * f5; /* 1.959375*2^30 */ + crypto_int32 f6_19 = 19 * f6; /* 1.959375*2^30 */ + crypto_int32 f7_38 = 38 * f7; /* 1.959375*2^30 */ + crypto_int32 f8_19 = 19 * f8; /* 1.959375*2^30 */ + crypto_int32 f9_38 = 38 * f9; /* 1.959375*2^30 */ + crypto_int64 f0f0 = f0 * (crypto_int64) f0; + crypto_int64 f0f1_2 = f0_2 * (crypto_int64) f1; + crypto_int64 f0f2_2 = f0_2 * (crypto_int64) f2; + crypto_int64 f0f3_2 = f0_2 * (crypto_int64) f3; + crypto_int64 f0f4_2 = f0_2 * (crypto_int64) f4; + crypto_int64 f0f5_2 = f0_2 * (crypto_int64) f5; + crypto_int64 f0f6_2 = f0_2 * (crypto_int64) f6; + crypto_int64 f0f7_2 = f0_2 * (crypto_int64) f7; + crypto_int64 f0f8_2 = f0_2 * (crypto_int64) f8; + crypto_int64 f0f9_2 = f0_2 * (crypto_int64) f9; + crypto_int64 f1f1_2 = f1_2 * (crypto_int64) f1; + crypto_int64 f1f2_2 = f1_2 * (crypto_int64) f2; + crypto_int64 f1f3_4 = f1_2 * (crypto_int64) f3_2; + crypto_int64 f1f4_2 = f1_2 * (crypto_int64) f4; + crypto_int64 f1f5_4 = f1_2 * (crypto_int64) f5_2; + crypto_int64 f1f6_2 = f1_2 * (crypto_int64) f6; + crypto_int64 f1f7_4 = f1_2 * (crypto_int64) f7_2; + crypto_int64 f1f8_2 = f1_2 * (crypto_int64) f8; + crypto_int64 f1f9_76 = f1_2 * (crypto_int64) f9_38; + crypto_int64 f2f2 = f2 * (crypto_int64) f2; + crypto_int64 f2f3_2 = f2_2 * (crypto_int64) f3; + crypto_int64 f2f4_2 = f2_2 * (crypto_int64) f4; + crypto_int64 f2f5_2 = f2_2 * (crypto_int64) f5; + crypto_int64 f2f6_2 = f2_2 * (crypto_int64) f6; + crypto_int64 f2f7_2 = f2_2 * (crypto_int64) f7; + crypto_int64 f2f8_38 = f2_2 * (crypto_int64) f8_19; + crypto_int64 f2f9_38 = f2 * (crypto_int64) f9_38; + crypto_int64 f3f3_2 = f3_2 * (crypto_int64) f3; + crypto_int64 f3f4_2 = f3_2 * (crypto_int64) f4; + crypto_int64 f3f5_4 = f3_2 * (crypto_int64) f5_2; + crypto_int64 f3f6_2 = f3_2 * (crypto_int64) f6; + crypto_int64 f3f7_76 = f3_2 * (crypto_int64) f7_38; + crypto_int64 f3f8_38 = f3_2 * (crypto_int64) f8_19; + crypto_int64 f3f9_76 = f3_2 * (crypto_int64) f9_38; + crypto_int64 f4f4 = f4 * (crypto_int64) f4; + crypto_int64 f4f5_2 = f4_2 * (crypto_int64) f5; + crypto_int64 f4f6_38 = f4_2 * (crypto_int64) f6_19; + crypto_int64 f4f7_38 = f4 * (crypto_int64) f7_38; + crypto_int64 f4f8_38 = f4_2 * (crypto_int64) f8_19; + crypto_int64 f4f9_38 = f4 * (crypto_int64) f9_38; + crypto_int64 f5f5_38 = f5 * (crypto_int64) f5_38; + crypto_int64 f5f6_38 = f5_2 * (crypto_int64) f6_19; + crypto_int64 f5f7_76 = f5_2 * (crypto_int64) f7_38; + crypto_int64 f5f8_38 = f5_2 * (crypto_int64) f8_19; + crypto_int64 f5f9_76 = f5_2 * (crypto_int64) f9_38; + crypto_int64 f6f6_19 = f6 * (crypto_int64) f6_19; + crypto_int64 f6f7_38 = f6 * (crypto_int64) f7_38; + crypto_int64 f6f8_38 = f6_2 * (crypto_int64) f8_19; + crypto_int64 f6f9_38 = f6 * (crypto_int64) f9_38; + crypto_int64 f7f7_38 = f7 * (crypto_int64) f7_38; + crypto_int64 f7f8_38 = f7_2 * (crypto_int64) f8_19; + crypto_int64 f7f9_76 = f7_2 * (crypto_int64) f9_38; + crypto_int64 f8f8_19 = f8 * (crypto_int64) f8_19; + crypto_int64 f8f9_38 = f8 * (crypto_int64) f9_38; + crypto_int64 f9f9_38 = f9 * (crypto_int64) f9_38; + crypto_int64 h0 = f0f0 +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38; + crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38; + crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19; + crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38; + crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2 +f5f9_76+f6f8_38+f7f7_38; + crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38; + crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19; + crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38; + crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4 +f9f9_38; + crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2; + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + + h0 += h0; + h1 += h1; + h2 += h2; + h3 += h3; + h4 += h4; + h5 += h5; + h6 += h6; + h7 += h7; + h8 += h8; + h9 += h9; + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + + carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + + carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + + carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + + carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_sub.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_sub.c new file mode 100644 index 0000000000..8fdcfc1c27 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_sub.c @@ -0,0 +1,59 @@ +// linker define fe_sub + +#include "fe.h" + +/* +h = f - g +Can overlap h with f or g. + +Preconditions: + |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + +Postconditions: + |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. +*/ + +void fe_sub(fe h,const fe f,const fe g) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 g0 = g[0]; + crypto_int32 g1 = g[1]; + crypto_int32 g2 = g[2]; + crypto_int32 g3 = g[3]; + crypto_int32 g4 = g[4]; + crypto_int32 g5 = g[5]; + crypto_int32 g6 = g[6]; + crypto_int32 g7 = g[7]; + crypto_int32 g8 = g[8]; + crypto_int32 g9 = g[9]; + crypto_int32 h0 = f0 - g0; + crypto_int32 h1 = f1 - g1; + crypto_int32 h2 = f2 - g2; + crypto_int32 h3 = f3 - g3; + crypto_int32 h4 = f4 - g4; + crypto_int32 h5 = f5 - g5; + crypto_int32 h6 = f6 - g6; + crypto_int32 h7 = f7 - g7; + crypto_int32 h8 = f8 - g8; + crypto_int32 h9 = f9 - g9; + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_tobytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_tobytes.c new file mode 100644 index 0000000000..54bb8062ce --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/fe_tobytes.c @@ -0,0 +1,121 @@ +// linker define fe_tobytes + +#include "fe.h" + +/* +Preconditions: + |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + +Write p=2^255-19; q=floor(h/p). +Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))). + +Proof: + Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4. + Also have |h-2^230 h9|<2^231 so |19 2^(-255)(h-2^230 h9)|<1/4. + + Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9). + Then 0> 25; + q = (h0 + q) >> 26; + q = (h1 + q) >> 25; + q = (h2 + q) >> 26; + q = (h3 + q) >> 25; + q = (h4 + q) >> 26; + q = (h5 + q) >> 25; + q = (h6 + q) >> 26; + q = (h7 + q) >> 25; + q = (h8 + q) >> 26; + q = (h9 + q) >> 25; + + /* Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. */ + h0 += 19 * q; + /* Goal: Output h-2^255 q, which is between 0 and 2^255-20. */ + + carry0 = h0 >> 26; h1 += carry0; h0 -= carry0 << 26; + carry1 = h1 >> 25; h2 += carry1; h1 -= carry1 << 25; + carry2 = h2 >> 26; h3 += carry2; h2 -= carry2 << 26; + carry3 = h3 >> 25; h4 += carry3; h3 -= carry3 << 25; + carry4 = h4 >> 26; h5 += carry4; h4 -= carry4 << 26; + carry5 = h5 >> 25; h6 += carry5; h5 -= carry5 << 25; + carry6 = h6 >> 26; h7 += carry6; h6 -= carry6 << 26; + carry7 = h7 >> 25; h8 += carry7; h7 -= carry7 << 25; + carry8 = h8 >> 26; h9 += carry8; h8 -= carry8 << 26; + carry9 = h9 >> 25; h9 -= carry9 << 25; + /* h10 = carry9 */ + + /* + Goal: Output h0+...+2^255 h10-2^255 q, which is between 0 and 2^255-20. + Have h0+...+2^230 h9 between 0 and 2^255-1; + evidently 2^255 h10-2^255 q = 0. + Goal: Output h0+...+2^230 h9. + */ + + s[0] = h0 >> 0; + s[1] = h0 >> 8; + s[2] = h0 >> 16; + s[3] = (h0 >> 24) | (h1 << 2); + s[4] = h1 >> 6; + s[5] = h1 >> 14; + s[6] = (h1 >> 22) | (h2 << 3); + s[7] = h2 >> 5; + s[8] = h2 >> 13; + s[9] = (h2 >> 21) | (h3 << 5); + s[10] = h3 >> 3; + s[11] = h3 >> 11; + s[12] = (h3 >> 19) | (h4 << 6); + s[13] = h4 >> 2; + s[14] = h4 >> 10; + s[15] = h4 >> 18; + s[16] = h5 >> 0; + s[17] = h5 >> 8; + s[18] = h5 >> 16; + s[19] = (h5 >> 24) | (h6 << 1); + s[20] = h6 >> 7; + s[21] = h6 >> 15; + s[22] = (h6 >> 23) | (h7 << 3); + s[23] = h7 >> 5; + s[24] = h7 >> 13; + s[25] = (h7 >> 21) | (h8 << 4); + s[26] = h8 >> 4; + s[27] = h8 >> 12; + s[28] = (h8 >> 20) | (h9 << 6); + s[29] = h9 >> 2; + s[30] = h9 >> 10; + s[31] = h9 >> 18; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge.h b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge.h new file mode 100644 index 0000000000..e9a6aad614 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge.h @@ -0,0 +1,95 @@ +#ifndef GE_H +#define GE_H + +/* +ge means group element. + +Here the group is the set of pairs (x,y) of field elements (see fe.h) +satisfying -x^2 + y^2 = 1 + d x^2y^2 +where d = -121665/121666. + +Representations: + ge_p2 (projective): (X:Y:Z) satisfying x=X/Z, y=Y/Z + ge_p3 (extended): (X:Y:Z:T) satisfying x=X/Z, y=Y/Z, XY=ZT + ge_p1p1 (completed): ((X:Z),(Y:T)) satisfying x=X/Z, y=Y/T + ge_precomp (Duif): (y+x,y-x,2dxy) +*/ + +#include "fe.h" + +typedef struct { + fe X; + fe Y; + fe Z; +} ge_p2; + +typedef struct { + fe X; + fe Y; + fe Z; + fe T; +} ge_p3; + +typedef struct { + fe X; + fe Y; + fe Z; + fe T; +} ge_p1p1; + +typedef struct { + fe yplusx; + fe yminusx; + fe xy2d; +} ge_precomp; + +typedef struct { + fe YplusX; + fe YminusX; + fe Z; + fe T2d; +} ge_cached; + +#define ge_frombytes_negate_vartime CRYPTO_NAMESPACE(ge_frombytes_negate_vartime) +#define ge_tobytes CRYPTO_NAMESPACE(ge_tobytes) +#define ge_p3_tobytes CRYPTO_NAMESPACE(ge_p3_tobytes) + +#define ge_p2_0 CRYPTO_NAMESPACE(ge_p2_0) +#define ge_p3_0 CRYPTO_NAMESPACE(ge_p3_0) +#define ge_precomp_0 CRYPTO_NAMESPACE(ge_precomp_0) +#define ge_p3_to_p2 CRYPTO_NAMESPACE(ge_p3_to_p2) +#define ge_p3_to_cached CRYPTO_NAMESPACE(ge_p3_to_cached) +#define ge_p1p1_to_p2 CRYPTO_NAMESPACE(ge_p1p1_to_p2) +#define ge_p1p1_to_p3 CRYPTO_NAMESPACE(ge_p1p1_to_p3) +#define ge_p2_dbl CRYPTO_NAMESPACE(ge_p2_dbl) +#define ge_p3_dbl CRYPTO_NAMESPACE(ge_p3_dbl) + +#define ge_madd CRYPTO_NAMESPACE(ge_madd) +#define ge_msub CRYPTO_NAMESPACE(ge_msub) +#define ge_add CRYPTO_NAMESPACE(ge_add) +#define ge_sub CRYPTO_NAMESPACE(ge_sub) +#define ge_scalarmult_base CRYPTO_NAMESPACE(ge_scalarmult_base) +#define ge_double_scalarmult_vartime CRYPTO_NAMESPACE(ge_double_scalarmult_vartime) + +extern void ge_tobytes(unsigned char *,const ge_p2 *); +extern void ge_p3_tobytes(unsigned char *,const ge_p3 *); +extern int ge_frombytes_negate_vartime(ge_p3 *,const unsigned char *); + +extern void ge_p2_0(ge_p2 *); +extern void ge_p3_0(ge_p3 *); +extern void ge_precomp_0(ge_precomp *); +extern void ge_p3_to_p2(ge_p2 *,const ge_p3 *); +extern void ge_p3_to_cached(ge_cached *,const ge_p3 *); +extern void ge_p1p1_to_p2(ge_p2 *,const ge_p1p1 *); +extern void ge_p1p1_to_p3(ge_p3 *,const ge_p1p1 *); +extern void ge_p2_dbl(ge_p1p1 *,const ge_p2 *); +extern void ge_p3_dbl(ge_p1p1 *,const ge_p3 *); + +extern void ge_madd(ge_p1p1 *,const ge_p3 *,const ge_precomp *); +extern void ge_msub(ge_p1p1 *,const ge_p3 *,const ge_precomp *); +extern void ge_add(ge_p1p1 *,const ge_p3 *,const ge_cached *); +extern void ge_sub(ge_p1p1 *,const ge_p3 *,const ge_cached *); +extern void ge_scalarmult_base(ge_p3 *,const unsigned char *); +extern void ge_double_scalarmult_vartime(ge_p2 *,const unsigned char *,const ge_p3 *,const unsigned char *); + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_add.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_add.c new file mode 100644 index 0000000000..daa5bcd1e0 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_add.c @@ -0,0 +1,14 @@ +// linker define ge_add +// linker use fe_add fe_sub fe_mul + +#include "ge.h" + +/* +r = p + q +*/ + +void ge_add(ge_p1p1 *r,const ge_p3 *p,const ge_cached *q) +{ + fe t0; +#include "ge_add.h" +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_add.h b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_add.h new file mode 100644 index 0000000000..7481f8ffbe --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_add.h @@ -0,0 +1,97 @@ + +/* qhasm: enter ge_add */ + +/* qhasm: fe X1 */ + +/* qhasm: fe Y1 */ + +/* qhasm: fe Z1 */ + +/* qhasm: fe Z2 */ + +/* qhasm: fe T1 */ + +/* qhasm: fe ZZ */ + +/* qhasm: fe YpX2 */ + +/* qhasm: fe YmX2 */ + +/* qhasm: fe T2d2 */ + +/* qhasm: fe X3 */ + +/* qhasm: fe Y3 */ + +/* qhasm: fe Z3 */ + +/* qhasm: fe T3 */ + +/* qhasm: fe YpX1 */ + +/* qhasm: fe YmX1 */ + +/* qhasm: fe A */ + +/* qhasm: fe B */ + +/* qhasm: fe C */ + +/* qhasm: fe D */ + +/* qhasm: YpX1 = Y1+X1 */ +/* asm 1: fe_add(>YpX1=fe#1,YpX1=r->X,Y,X); */ +fe_add(r->X,p->Y,p->X); + +/* qhasm: YmX1 = Y1-X1 */ +/* asm 1: fe_sub(>YmX1=fe#2,YmX1=r->Y,Y,X); */ +fe_sub(r->Y,p->Y,p->X); + +/* qhasm: A = YpX1*YpX2 */ +/* asm 1: fe_mul(>A=fe#3,A=r->Z,X,YplusX); */ +fe_mul(r->Z,r->X,q->YplusX); + +/* qhasm: B = YmX1*YmX2 */ +/* asm 1: fe_mul(>B=fe#2,B=r->Y,Y,YminusX); */ +fe_mul(r->Y,r->Y,q->YminusX); + +/* qhasm: C = T2d2*T1 */ +/* asm 1: fe_mul(>C=fe#4,C=r->T,T2d,T); */ +fe_mul(r->T,q->T2d,p->T); + +/* qhasm: ZZ = Z1*Z2 */ +/* asm 1: fe_mul(>ZZ=fe#1,ZZ=r->X,Z,Z); */ +fe_mul(r->X,p->Z,q->Z); + +/* qhasm: D = 2*ZZ */ +/* asm 1: fe_add(>D=fe#5,D=t0,X,X); */ +fe_add(t0,r->X,r->X); + +/* qhasm: X3 = A-B */ +/* asm 1: fe_sub(>X3=fe#1,X3=r->X,Z,Y); */ +fe_sub(r->X,r->Z,r->Y); + +/* qhasm: Y3 = A+B */ +/* asm 1: fe_add(>Y3=fe#2,Y3=r->Y,Z,Y); */ +fe_add(r->Y,r->Z,r->Y); + +/* qhasm: Z3 = D+C */ +/* asm 1: fe_add(>Z3=fe#3,Z3=r->Z,T); */ +fe_add(r->Z,t0,r->T); + +/* qhasm: T3 = D-C */ +/* asm 1: fe_sub(>T3=fe#4,T3=r->T,T); */ +fe_sub(r->T,t0,r->T); + +/* qhasm: return */ diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_add.q b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_add.q new file mode 100644 index 0000000000..a6572ab0f8 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_add.q @@ -0,0 +1,49 @@ +:name:fe:r->X:r->Y:r->Z:r->T:t0:t1:t2:t3:t4:t5:p->X:p->Y:p->Z:p->T:q->YplusX:q->YminusX:q->Z:q->T2d: +fe r:var/r=fe: + +enter f:enter/f:>X1=fe#11:>Y1=fe#12:>Z1=fe#13:>T1=fe#14:>YpX2=fe#15:>YmX2=fe#16:>Z2=fe#17:>T2d2=fe#18: +return:nofallthrough:h=fe:asm/fe_add(>h,h=fe:asm/fe_sub(>h,h=fe:asm/fe_mul(>h,h=fe:asm/fe_sq(>h,h=fe:asm/fe_add(>h,> 3] >> (i & 7)); + + for (i = 0;i < 256;++i) + if (r[i]) { + for (b = 1;b <= 6 && i + b < 256;++b) { + if (r[i + b]) { + if (r[i] + (r[i + b] << b) <= 15) { + r[i] += r[i + b] << b; r[i + b] = 0; + } else if (r[i] - (r[i + b] << b) >= -15) { + r[i] -= r[i + b] << b; + for (k = i + b;k < 256;++k) { + if (!r[k]) { + r[k] = 1; + break; + } + r[k] = 0; + } + } else + break; + } + } + } + +} + +/* +r = a * A + b * B +where a = a[0]+256*a[1]+...+256^31 a[31]. +and b = b[0]+256*b[1]+...+256^31 b[31]. +B is the Ed25519 base point (x,4/5) with x positive. +*/ + +void ge_double_scalarmult_vartime(ge_p2 *r,const unsigned char *a,const ge_p3 *A,const unsigned char *b) +{ + signed char aslide[256]; + signed char bslide[256]; + ge_cached Ai[8]; /* A,3A,5A,7A,9A,11A,13A,15A */ + ge_p1p1 t; + ge_p3 u; + ge_p3 A2; + int i; + + slide(aslide,a); + slide(bslide,b); + + ge_p3_to_cached(&Ai[0],A); + ge_p3_dbl(&t,A); ge_p1p1_to_p3(&A2,&t); + ge_add(&t,&A2,&Ai[0]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[1],&u); + ge_add(&t,&A2,&Ai[1]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[2],&u); + ge_add(&t,&A2,&Ai[2]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[3],&u); + ge_add(&t,&A2,&Ai[3]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[4],&u); + ge_add(&t,&A2,&Ai[4]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[5],&u); + ge_add(&t,&A2,&Ai[5]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[6],&u); + ge_add(&t,&A2,&Ai[6]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[7],&u); + + ge_p2_0(r); + + for (i = 255;i >= 0;--i) { + if (aslide[i] || bslide[i]) break; + } + + for (;i >= 0;--i) { + ge_p2_dbl(&t,r); + + if (aslide[i] > 0) { + ge_p1p1_to_p3(&u,&t); + ge_add(&t,&u,&Ai[aslide[i]/2]); + } else if (aslide[i] < 0) { + ge_p1p1_to_p3(&u,&t); + ge_sub(&t,&u,&Ai[(-aslide[i])/2]); + } + + if (bslide[i] > 0) { + ge_p1p1_to_p3(&u,&t); + ge_madd(&t,&u,&Bi[bslide[i]/2]); + } else if (bslide[i] < 0) { + ge_p1p1_to_p3(&u,&t); + ge_msub(&t,&u,&Bi[(-bslide[i])/2]); + } + + ge_p1p1_to_p2(r,&t); + } +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_frombytes.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_frombytes.c new file mode 100644 index 0000000000..924b098e4a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_frombytes.c @@ -0,0 +1,69 @@ +#include +#include "crypto_verify_32.h" +#include "ge.h" + +static const fe d = { +#include "d.h" +} ; + +static const fe sqrtm1 = { +#include "sqrtm1.h" +} ; + +#include "point26.h" + +int ge_frombytes_negate_vartime(ge_p3 *h,const unsigned char *s) +{ + unsigned char scheck[32]; + fe u; + fe v; + fe v3; + fe vxx; + fe check; + int ok = 1; + + fe_frombytes(h->Y,s); + + fe_tobytes(scheck,h->Y); + scheck[31] |= s[31] & 128; + if (crypto_verify_32(scheck,s)) ok = 0; + + fe_1(h->Z); + fe_sq(u,h->Y); + fe_mul(v,u,d); + fe_sub(u,u,h->Z); /* u = y^2-1 */ + fe_add(v,v,h->Z); /* v = dy^2+1 */ + + fe_sq(v3,v); + fe_mul(v3,v3,v); /* v3 = v^3 */ + fe_sq(h->X,v3); + fe_mul(h->X,h->X,v); + fe_mul(h->X,h->X,u); /* x = uv^7 */ + + fe_pow22523(h->X,h->X); /* x = (uv^7)^((q-5)/8) */ + fe_mul(h->X,h->X,v3); + fe_mul(h->X,h->X,u); /* x = uv^3(uv^7)^((q-5)/8) */ + + fe_sq(vxx,h->X); + fe_mul(vxx,vxx,v); + fe_sub(check,vxx,u); /* vx^2-u */ + if (fe_isnonzero(check)) { + fe_add(check,vxx,u); /* vx^2+u */ + if (fe_isnonzero(check)) ok = 0; + fe_mul(h->X,h->X,sqrtm1); + } + + if (fe_isnegative(h->X) == (s[31] >> 7)) + fe_neg(h->X,h->X); + if (!fe_isnonzero(h->X)) + if (s[31] >> 7) + ok = 0; + + if (!ok) { /* treat all invalid points as point26 */ + memcpy(h->X,point26_x,sizeof point26_x); + memcpy(h->Y,point26_y,sizeof point26_y); + } + + fe_mul(h->T,h->X,h->Y); + return ok; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_madd.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_madd.c new file mode 100644 index 0000000000..33d499c1c0 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_madd.c @@ -0,0 +1,16 @@ +// linker define ge_madd +// linker use fe_add +// linker use fe_sub +// linker use fe_mul + +#include "ge.h" + +/* +r = p + q +*/ + +void ge_madd(ge_p1p1 *r,const ge_p3 *p,const ge_precomp *q) +{ + fe t0; +#include "ge_madd.h" +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_madd.h b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_madd.h new file mode 100644 index 0000000000..ecae84952b --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_madd.h @@ -0,0 +1,88 @@ + +/* qhasm: enter ge_madd */ + +/* qhasm: fe X1 */ + +/* qhasm: fe Y1 */ + +/* qhasm: fe Z1 */ + +/* qhasm: fe T1 */ + +/* qhasm: fe ypx2 */ + +/* qhasm: fe ymx2 */ + +/* qhasm: fe xy2d2 */ + +/* qhasm: fe X3 */ + +/* qhasm: fe Y3 */ + +/* qhasm: fe Z3 */ + +/* qhasm: fe T3 */ + +/* qhasm: fe YpX1 */ + +/* qhasm: fe YmX1 */ + +/* qhasm: fe A */ + +/* qhasm: fe B */ + +/* qhasm: fe C */ + +/* qhasm: fe D */ + +/* qhasm: YpX1 = Y1+X1 */ +/* asm 1: fe_add(>YpX1=fe#1,YpX1=r->X,Y,X); */ +fe_add(r->X,p->Y,p->X); + +/* qhasm: YmX1 = Y1-X1 */ +/* asm 1: fe_sub(>YmX1=fe#2,YmX1=r->Y,Y,X); */ +fe_sub(r->Y,p->Y,p->X); + +/* qhasm: A = YpX1*ypx2 */ +/* asm 1: fe_mul(>A=fe#3,A=r->Z,X,yplusx); */ +fe_mul(r->Z,r->X,q->yplusx); + +/* qhasm: B = YmX1*ymx2 */ +/* asm 1: fe_mul(>B=fe#2,B=r->Y,Y,yminusx); */ +fe_mul(r->Y,r->Y,q->yminusx); + +/* qhasm: C = xy2d2*T1 */ +/* asm 1: fe_mul(>C=fe#4,C=r->T,xy2d,T); */ +fe_mul(r->T,q->xy2d,p->T); + +/* qhasm: D = 2*Z1 */ +/* asm 1: fe_add(>D=fe#5,D=t0,Z,Z); */ +fe_add(t0,p->Z,p->Z); + +/* qhasm: X3 = A-B */ +/* asm 1: fe_sub(>X3=fe#1,X3=r->X,Z,Y); */ +fe_sub(r->X,r->Z,r->Y); + +/* qhasm: Y3 = A+B */ +/* asm 1: fe_add(>Y3=fe#2,Y3=r->Y,Z,Y); */ +fe_add(r->Y,r->Z,r->Y); + +/* qhasm: Z3 = D+C */ +/* asm 1: fe_add(>Z3=fe#3,Z3=r->Z,T); */ +fe_add(r->Z,t0,r->T); + +/* qhasm: T3 = D-C */ +/* asm 1: fe_sub(>T3=fe#4,T3=r->T,T); */ +fe_sub(r->T,t0,r->T); + +/* qhasm: return */ diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_madd.q b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_madd.q new file mode 100644 index 0000000000..aa3db454e6 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_madd.q @@ -0,0 +1,46 @@ +:name:fe:r->X:r->Y:r->Z:r->T:t0:t1:t2:t3:t4:t5:p->X:p->Y:p->Z:p->T:q->yplusx:q->yminusx:q->xy2d: +fe r:var/r=fe: + +enter f:enter/f:>X1=fe#11:>Y1=fe#12:>Z1=fe#13:>T1=fe#14:>ypx2=fe#15:>ymx2=fe#16:>xy2d2=fe#17: +return:nofallthrough:h=fe:asm/fe_add(>h,h=fe:asm/fe_sub(>h,h=fe:asm/fe_mul(>h,h=fe:asm/fe_sq(>h,h=fe:asm/fe_add(>h,YpX1=fe#1,YpX1=r->X,Y,X); */ +fe_add(r->X,p->Y,p->X); + +/* qhasm: YmX1 = Y1-X1 */ +/* asm 1: fe_sub(>YmX1=fe#2,YmX1=r->Y,Y,X); */ +fe_sub(r->Y,p->Y,p->X); + +/* qhasm: A = YpX1*ymx2 */ +/* asm 1: fe_mul(>A=fe#3,A=r->Z,X,yminusx); */ +fe_mul(r->Z,r->X,q->yminusx); + +/* qhasm: B = YmX1*ypx2 */ +/* asm 1: fe_mul(>B=fe#2,B=r->Y,Y,yplusx); */ +fe_mul(r->Y,r->Y,q->yplusx); + +/* qhasm: C = xy2d2*T1 */ +/* asm 1: fe_mul(>C=fe#4,C=r->T,xy2d,T); */ +fe_mul(r->T,q->xy2d,p->T); + +/* qhasm: D = 2*Z1 */ +/* asm 1: fe_add(>D=fe#5,D=t0,Z,Z); */ +fe_add(t0,p->Z,p->Z); + +/* qhasm: X3 = A-B */ +/* asm 1: fe_sub(>X3=fe#1,X3=r->X,Z,Y); */ +fe_sub(r->X,r->Z,r->Y); + +/* qhasm: Y3 = A+B */ +/* asm 1: fe_add(>Y3=fe#2,Y3=r->Y,Z,Y); */ +fe_add(r->Y,r->Z,r->Y); + +/* qhasm: Z3 = D-C */ +/* asm 1: fe_sub(>Z3=fe#3,Z3=r->Z,T); */ +fe_sub(r->Z,t0,r->T); + +/* qhasm: T3 = D+C */ +/* asm 1: fe_add(>T3=fe#4,T3=r->T,T); */ +fe_add(r->T,t0,r->T); + +/* qhasm: return */ diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_msub.q b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_msub.q new file mode 100644 index 0000000000..e3cadd882d --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_msub.q @@ -0,0 +1,46 @@ +:name:fe:r->X:r->Y:r->Z:r->T:t0:t1:t2:t3:t4:t5:p->X:p->Y:p->Z:p->T:q->yplusx:q->yminusx:q->xy2d: +fe r:var/r=fe: + +enter f:enter/f:>X1=fe#11:>Y1=fe#12:>Z1=fe#13:>T1=fe#14:>ypx2=fe#15:>ymx2=fe#16:>xy2d2=fe#17: +return:nofallthrough:h=fe:asm/fe_add(>h,h=fe:asm/fe_sub(>h,h=fe:asm/fe_mul(>h,h=fe:asm/fe_sq(>h,h=fe:asm/fe_add(>h,X,p->X,p->T); + fe_mul(r->Y,p->Y,p->Z); + fe_mul(r->Z,p->Z,p->T); +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p1p1_to_p3.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p1p1_to_p3.c new file mode 100644 index 0000000000..1f8ae3d5ea --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p1p1_to_p3.c @@ -0,0 +1,16 @@ +// linker define ge_p1p1_to_p3 +// linker use fe_mul + +#include "ge.h" + +/* +r = p +*/ + +extern void ge_p1p1_to_p3(ge_p3 *r,const ge_p1p1 *p) +{ + fe_mul(r->X,p->X,p->T); + fe_mul(r->Y,p->Y,p->Z); + fe_mul(r->Z,p->Z,p->T); + fe_mul(r->T,p->X,p->Y); +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p2_0.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p2_0.c new file mode 100644 index 0000000000..b078e5b68c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p2_0.c @@ -0,0 +1,12 @@ +// linker define ge_p2_0 +// linker use fe_0 +// linker use fe_1 + +#include "ge.h" + +void ge_p2_0(ge_p2 *h) +{ + fe_0(h->X); + fe_1(h->Y); + fe_1(h->Z); +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p2_dbl.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p2_dbl.c new file mode 100644 index 0000000000..eaa43df434 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p2_dbl.c @@ -0,0 +1,17 @@ +// linker define ge_p2_dbl +// linker use fe_add +// linker use fe_sub +// linker use fe_sq +// linker use fe_sq2 + +#include "ge.h" + +/* +r = 2 * p +*/ + +void ge_p2_dbl(ge_p1p1 *r,const ge_p2 *p) +{ + fe t0; +#include "ge_p2_dbl.h" +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p2_dbl.h b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p2_dbl.h new file mode 100644 index 0000000000..128efed907 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p2_dbl.h @@ -0,0 +1,73 @@ + +/* qhasm: enter ge_p2_dbl */ + +/* qhasm: fe X1 */ + +/* qhasm: fe Y1 */ + +/* qhasm: fe Z1 */ + +/* qhasm: fe A */ + +/* qhasm: fe AA */ + +/* qhasm: fe XX */ + +/* qhasm: fe YY */ + +/* qhasm: fe B */ + +/* qhasm: fe X3 */ + +/* qhasm: fe Y3 */ + +/* qhasm: fe Z3 */ + +/* qhasm: fe T3 */ + +/* qhasm: XX=X1^2 */ +/* asm 1: fe_sq(>XX=fe#1,XX=r->X,X); */ +fe_sq(r->X,p->X); + +/* qhasm: YY=Y1^2 */ +/* asm 1: fe_sq(>YY=fe#3,YY=r->Z,Y); */ +fe_sq(r->Z,p->Y); + +/* qhasm: B=2*Z1^2 */ +/* asm 1: fe_sq2(>B=fe#4,B=r->T,Z); */ +fe_sq2(r->T,p->Z); + +/* qhasm: A=X1+Y1 */ +/* asm 1: fe_add(>A=fe#2,A=r->Y,X,Y); */ +fe_add(r->Y,p->X,p->Y); + +/* qhasm: AA=A^2 */ +/* asm 1: fe_sq(>AA=fe#5,AA=t0,Y); */ +fe_sq(t0,r->Y); + +/* qhasm: Y3=YY+XX */ +/* asm 1: fe_add(>Y3=fe#2,Y3=r->Y,Z,X); */ +fe_add(r->Y,r->Z,r->X); + +/* qhasm: Z3=YY-XX */ +/* asm 1: fe_sub(>Z3=fe#3,Z3=r->Z,Z,X); */ +fe_sub(r->Z,r->Z,r->X); + +/* qhasm: X3=AA-Y3 */ +/* asm 1: fe_sub(>X3=fe#1,X3=r->X,Y); */ +fe_sub(r->X,t0,r->Y); + +/* qhasm: T3=B-Z3 */ +/* asm 1: fe_sub(>T3=fe#4,T3=r->T,T,Z); */ +fe_sub(r->T,r->T,r->Z); + +/* qhasm: return */ diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p2_dbl.q b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p2_dbl.q new file mode 100644 index 0000000000..170d42f9a7 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p2_dbl.q @@ -0,0 +1,41 @@ +:name:fe:r->X:r->Y:r->Z:r->T:t0:t1:t2:t3:t4:t5:p->X:p->Y:p->Z: +fe r:var/r=fe: + +enter f:enter/f:>X1=fe#11:>Y1=fe#12:>Z1=fe#13: +return:nofallthrough:h=fe:asm/fe_add(>h,h=fe:asm/fe_sub(>h,h=fe:asm/fe_mul(>h,h=fe:asm/fe_sq(>h,h=fe:asm/fe_sq2(>h,h=fe:asm/fe_add(>h,YplusX,p->Y,p->X); + fe_sub(r->YminusX,p->Y,p->X); + fe_copy(r->Z,p->Z); + fe_mul(r->T2d,p->T,d2); +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p3_to_p2.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p3_to_p2.c new file mode 100644 index 0000000000..ca83a76cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_p3_to_p2.c @@ -0,0 +1,15 @@ +// linker define ge_p3_to_p2 +// linker use fe_copy + +#include "ge.h" + +/* +r = p +*/ + +void ge_p3_to_p2(ge_p2 *r,const ge_p3 *p) +{ + fe_copy(r->X,p->X); + fe_copy(r->Y,p->Y); + fe_copy(r->Z,p->Z); +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_sub.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_sub.c new file mode 100644 index 0000000000..7167d844e8 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_sub.c @@ -0,0 +1,14 @@ +// linker define ge_sub +// linker use fe_add fe_sub fe_mul + +#include "ge.h" + +/* +r = p - q +*/ + +void ge_sub(ge_p1p1 *r,const ge_p3 *p,const ge_cached *q) +{ + fe t0; +#include "ge_sub.h" +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_sub.h b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_sub.h new file mode 100644 index 0000000000..b4ef1f5dd0 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_sub.h @@ -0,0 +1,97 @@ + +/* qhasm: enter ge_sub */ + +/* qhasm: fe X1 */ + +/* qhasm: fe Y1 */ + +/* qhasm: fe Z1 */ + +/* qhasm: fe Z2 */ + +/* qhasm: fe T1 */ + +/* qhasm: fe ZZ */ + +/* qhasm: fe YpX2 */ + +/* qhasm: fe YmX2 */ + +/* qhasm: fe T2d2 */ + +/* qhasm: fe X3 */ + +/* qhasm: fe Y3 */ + +/* qhasm: fe Z3 */ + +/* qhasm: fe T3 */ + +/* qhasm: fe YpX1 */ + +/* qhasm: fe YmX1 */ + +/* qhasm: fe A */ + +/* qhasm: fe B */ + +/* qhasm: fe C */ + +/* qhasm: fe D */ + +/* qhasm: YpX1 = Y1+X1 */ +/* asm 1: fe_add(>YpX1=fe#1,YpX1=r->X,Y,X); */ +fe_add(r->X,p->Y,p->X); + +/* qhasm: YmX1 = Y1-X1 */ +/* asm 1: fe_sub(>YmX1=fe#2,YmX1=r->Y,Y,X); */ +fe_sub(r->Y,p->Y,p->X); + +/* qhasm: A = YpX1*YmX2 */ +/* asm 1: fe_mul(>A=fe#3,A=r->Z,X,YminusX); */ +fe_mul(r->Z,r->X,q->YminusX); + +/* qhasm: B = YmX1*YpX2 */ +/* asm 1: fe_mul(>B=fe#2,B=r->Y,Y,YplusX); */ +fe_mul(r->Y,r->Y,q->YplusX); + +/* qhasm: C = T2d2*T1 */ +/* asm 1: fe_mul(>C=fe#4,C=r->T,T2d,T); */ +fe_mul(r->T,q->T2d,p->T); + +/* qhasm: ZZ = Z1*Z2 */ +/* asm 1: fe_mul(>ZZ=fe#1,ZZ=r->X,Z,Z); */ +fe_mul(r->X,p->Z,q->Z); + +/* qhasm: D = 2*ZZ */ +/* asm 1: fe_add(>D=fe#5,D=t0,X,X); */ +fe_add(t0,r->X,r->X); + +/* qhasm: X3 = A-B */ +/* asm 1: fe_sub(>X3=fe#1,X3=r->X,Z,Y); */ +fe_sub(r->X,r->Z,r->Y); + +/* qhasm: Y3 = A+B */ +/* asm 1: fe_add(>Y3=fe#2,Y3=r->Y,Z,Y); */ +fe_add(r->Y,r->Z,r->Y); + +/* qhasm: Z3 = D-C */ +/* asm 1: fe_sub(>Z3=fe#3,Z3=r->Z,T); */ +fe_sub(r->Z,t0,r->T); + +/* qhasm: T3 = D+C */ +/* asm 1: fe_add(>T3=fe#4,T3=r->T,T); */ +fe_add(r->T,t0,r->T); + +/* qhasm: return */ diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_sub.q b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_sub.q new file mode 100644 index 0000000000..2779a4a201 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/ge_sub.q @@ -0,0 +1,49 @@ +:name:fe:r->X:r->Y:r->Z:r->T:t0:t1:t2:t3:t4:t5:p->X:p->Y:p->Z:p->T:q->YplusX:q->YminusX:q->Z:q->T2d: +fe r:var/r=fe: + +enter f:enter/f:>X1=fe#11:>Y1=fe#12:>Z1=fe#13:>T1=fe#14:>YpX2=fe#15:>YmX2=fe#16:>Z2=fe#17:>T2d2=fe#18: +return:nofallthrough:h=fe:asm/fe_add(>h,h=fe:asm/fe_sub(>h,h=fe:asm/fe_mul(>h,h=fe:asm/fe_sq(>h,h=fe:asm/fe_add(>h,Z); + fe_mul(x,h->X,recip); + fe_mul(y,h->Y,recip); + fe_tobytes(s,y); + s[31] ^= fe_isnegative(x) << 7; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/mGnP.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/mGnP.c new file mode 100644 index 0000000000..74a27788db --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/mGnP.c @@ -0,0 +1,33 @@ +#include +#include "ge.h" +#include "sc.h" +#include "crypto_verify_32.h" +#include "crypto_mGnP.h" + +void crypto_mGnP( + unsigned char *Q, + const unsigned char *m, + const unsigned char *n, + const unsigned char *P +) +{ + unsigned char mcopy[64]; + unsigned char ncopy[64]; + ge_p3 P_internal; + ge_p2 R; + int ok; + + ok = ge_frombytes_negate_vartime(&P_internal,P); + + memcpy(mcopy,m,32); + memset(mcopy+32,0,32); + sc_reduce(mcopy); + if (crypto_verify_32(mcopy,m)) ok = 0; + + memcpy(ncopy,n,64); + sc_reduce(ncopy); + + ge_double_scalarmult_vartime(&R,ncopy,&P_internal,mcopy); + ge_tobytes(Q,&R); + Q[32] = ok; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/point26.h b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/point26.h new file mode 100644 index 0000000000..d9d9abc8fe --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/point26.h @@ -0,0 +1,8 @@ +static const fe point26_x = { +// 50607983898373527771840756539198624626267845675402988734694858538582680771368 +-25191621,-9752747,21261183,6465605,-24028866,2717104,22243791,928181,20444475,-4223894 +} ; +static const fe point26_y = { +// 26 +26,0,0,0,0,0,0,0,0,0 +} ; diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/point26.py b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/point26.py new file mode 100644 index 0000000000..b275e780af --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/point26.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 + +q = 2**255 - 19 +l = 2**252 + 27742317777372353535851937790883648493 + +def expmod(b,e,m): + if e == 0: return 1 + t = expmod(b,e//2,m)**2 % m + if e & 1: t = (t*b) % m + return t + +def inv(x): + return expmod(x,q-2,q) + +d = -121665 * inv(121666) +I = expmod(2,(q-1)//4,q) + +def xrecover(y): + xx = (y*y-1) * inv(d*y*y+1) + x = expmod(xx,(q+3)//8,q) + if (x*x - xx) % q != 0: x = (x*I) % q + if x % 2 != 0: x = q-x + return x + +def isoncurve(P): + x,y = P + return (-x*x+y*y-1-d*x**2*y**2) % q == 0 + +By = 4 * inv(5) +Bx = xrecover(By) +B = Bx%q,By%q + +assert isoncurve(B) + +def edwards(P,Q): + x1,y1 = P + x2,y2 = Q + x3 = (x1*y2+x2*y1) * inv(1+d*x1*x2*y1*y2) + y3 = (y1*y2+x1*x2) * inv(1-d*x1*x2*y1*y2) + return x3%q,y3%q + +def scalarmult(P,e): + assert e >= 0 + if e == 0: return 0,1 + Q = scalarmult(P,e//2) + Q = edwards(Q,Q) + if e & 1: Q = edwards(P,Q) + return Q + +assert scalarmult(B,l) == (0,1) + +Cy = 26 # minimum integer >1 giving C on curve and order l +Cx = xrecover(Cy) +C = Cx%q,Cy%q +assert isoncurve(C) +assert scalarmult(C,l) == (0,1) + +# sanity checks: +# C is not a small multiple of B +# namely (0,1) or (+-...,4/5) or (+-...,-985469/985549) or ... +# and B is not a small multiple of C +# namely (0,1) or (+-...,10) or (+-...,-596219233/596219333) or ... +# and similarly for other small relations: e.g., 2B = 3C +# could do more serious discrete-log check + +def hassmallrelation(A,B): + jAyset = set() + jA = 0,1 + for j in range(1,1000): + jA = edwards(jA,A) + jAyset.add(jA[1]) + jB = 0,1 + for j in range(1,1000): + jB = edwards(jB,B) + if jB[1] in jAyset: return True + return False + +testy = 333922976373947162567639162515495974004 * inv(333933611346170188668120256727948534525) +testx = xrecover(testy) +test = testx%q,testy%q +assert hassmallrelation(test,B) +assert not hassmallrelation(C,B) + +def radix255(x): + x = x % q + if x + x > q: x -= q + x = [x,0,0,0,0,0,0,0,0,0] + bits = [26,25,26,25,26,25,26,25,26,25] + for i in range(9): + carry = (x[i] + 2**(bits[i]-1)) // 2**bits[i] + x[i] -= carry * 2**bits[i] + x[i + 1] += carry + result = "" + for i in range(9): + result = result+str(x[i])+"," + result = result+str(x[9]) + return result + +print('static const fe point26_x = {') +print('//',C[0]) +print(radix255(C[0])) +print('} ;') +print('static const fe point26_y = {') +print('//',C[1]) +print(radix255(C[1])) +print('} ;') diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/pow22523.h b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/pow22523.h new file mode 100644 index 0000000000..60ffe0d34c --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/pow22523.h @@ -0,0 +1,160 @@ + +/* qhasm: fe z1 */ + +/* qhasm: fe z2 */ + +/* qhasm: fe z8 */ + +/* qhasm: fe z9 */ + +/* qhasm: fe z11 */ + +/* qhasm: fe z22 */ + +/* qhasm: fe z_5_0 */ + +/* qhasm: fe z_10_5 */ + +/* qhasm: fe z_10_0 */ + +/* qhasm: fe z_20_10 */ + +/* qhasm: fe z_20_0 */ + +/* qhasm: fe z_40_20 */ + +/* qhasm: fe z_40_0 */ + +/* qhasm: fe z_50_10 */ + +/* qhasm: fe z_50_0 */ + +/* qhasm: fe z_100_50 */ + +/* qhasm: fe z_100_0 */ + +/* qhasm: fe z_200_100 */ + +/* qhasm: fe z_200_0 */ + +/* qhasm: fe z_250_50 */ + +/* qhasm: fe z_250_0 */ + +/* qhasm: fe z_252_2 */ + +/* qhasm: fe z_252_3 */ + +/* qhasm: enter pow22523 */ + +/* qhasm: z2 = z1^2^1 */ +/* asm 1: fe_sq(>z2=fe#1,z2=fe#1,>z2=fe#1); */ +/* asm 2: fe_sq(>z2=t0,z2=t0,>z2=t0); */ +fe_sq(t0,z); for (i = 1;i < 1;++i) fe_sq(t0,t0); + +/* qhasm: z8 = z2^2^2 */ +/* asm 1: fe_sq(>z8=fe#2,z8=fe#2,>z8=fe#2); */ +/* asm 2: fe_sq(>z8=t1,z8=t1,>z8=t1); */ +fe_sq(t1,t0); for (i = 1;i < 2;++i) fe_sq(t1,t1); + +/* qhasm: z9 = z1*z8 */ +/* asm 1: fe_mul(>z9=fe#2,z9=t1,z11=fe#1,z11=t0,z22=fe#1,z22=fe#1,>z22=fe#1); */ +/* asm 2: fe_sq(>z22=t0,z22=t0,>z22=t0); */ +fe_sq(t0,t0); for (i = 1;i < 1;++i) fe_sq(t0,t0); + +/* qhasm: z_5_0 = z9*z22 */ +/* asm 1: fe_mul(>z_5_0=fe#1,z_5_0=t0,z_10_5=fe#2,z_10_5=fe#2,>z_10_5=fe#2); */ +/* asm 2: fe_sq(>z_10_5=t1,z_10_5=t1,>z_10_5=t1); */ +fe_sq(t1,t0); for (i = 1;i < 5;++i) fe_sq(t1,t1); + +/* qhasm: z_10_0 = z_10_5*z_5_0 */ +/* asm 1: fe_mul(>z_10_0=fe#1,z_10_0=t0,z_20_10=fe#2,z_20_10=fe#2,>z_20_10=fe#2); */ +/* asm 2: fe_sq(>z_20_10=t1,z_20_10=t1,>z_20_10=t1); */ +fe_sq(t1,t0); for (i = 1;i < 10;++i) fe_sq(t1,t1); + +/* qhasm: z_20_0 = z_20_10*z_10_0 */ +/* asm 1: fe_mul(>z_20_0=fe#2,z_20_0=t1,z_40_20=fe#3,z_40_20=fe#3,>z_40_20=fe#3); */ +/* asm 2: fe_sq(>z_40_20=t2,z_40_20=t2,>z_40_20=t2); */ +fe_sq(t2,t1); for (i = 1;i < 20;++i) fe_sq(t2,t2); + +/* qhasm: z_40_0 = z_40_20*z_20_0 */ +/* asm 1: fe_mul(>z_40_0=fe#2,z_40_0=t1,z_50_10=fe#2,z_50_10=fe#2,>z_50_10=fe#2); */ +/* asm 2: fe_sq(>z_50_10=t1,z_50_10=t1,>z_50_10=t1); */ +fe_sq(t1,t1); for (i = 1;i < 10;++i) fe_sq(t1,t1); + +/* qhasm: z_50_0 = z_50_10*z_10_0 */ +/* asm 1: fe_mul(>z_50_0=fe#1,z_50_0=t0,z_100_50=fe#2,z_100_50=fe#2,>z_100_50=fe#2); */ +/* asm 2: fe_sq(>z_100_50=t1,z_100_50=t1,>z_100_50=t1); */ +fe_sq(t1,t0); for (i = 1;i < 50;++i) fe_sq(t1,t1); + +/* qhasm: z_100_0 = z_100_50*z_50_0 */ +/* asm 1: fe_mul(>z_100_0=fe#2,z_100_0=t1,z_200_100=fe#3,z_200_100=fe#3,>z_200_100=fe#3); */ +/* asm 2: fe_sq(>z_200_100=t2,z_200_100=t2,>z_200_100=t2); */ +fe_sq(t2,t1); for (i = 1;i < 100;++i) fe_sq(t2,t2); + +/* qhasm: z_200_0 = z_200_100*z_100_0 */ +/* asm 1: fe_mul(>z_200_0=fe#2,z_200_0=t1,z_250_50=fe#2,z_250_50=fe#2,>z_250_50=fe#2); */ +/* asm 2: fe_sq(>z_250_50=t1,z_250_50=t1,>z_250_50=t1); */ +fe_sq(t1,t1); for (i = 1;i < 50;++i) fe_sq(t1,t1); + +/* qhasm: z_250_0 = z_250_50*z_50_0 */ +/* asm 1: fe_mul(>z_250_0=fe#1,z_250_0=t0,z_252_2=fe#1,z_252_2=fe#1,>z_252_2=fe#1); */ +/* asm 2: fe_sq(>z_252_2=t0,z_252_2=t0,>z_252_2=t0); */ +fe_sq(t0,t0); for (i = 1;i < 2;++i) fe_sq(t0,t0); + +/* qhasm: z_252_3 = z_252_2*z1 */ +/* asm 1: fe_mul(>z_252_3=fe#12,z_252_3=out,z1=fe#11: +return:nofallthrough:h=fe:asm/fe_mul(>h,h=fe:#k:asm/fe_sq(>h,h,>h);: + +: + +fe z1 +fe z2 +fe z8 +fe z9 +fe z11 +fe z22 +fe z_5_0 +fe z_10_5 +fe z_10_0 +fe z_20_10 +fe z_20_0 +fe z_40_20 +fe z_40_0 +fe z_50_10 +fe z_50_0 +fe z_100_50 +fe z_100_0 +fe z_200_100 +fe z_200_0 +fe z_250_50 +fe z_250_0 +fe z_252_2 +fe z_252_3 + +enter pow22523 + +z2 = z1^2^1 +z8 = z2^2^2 +z9 = z1*z8 +z11 = z2*z9 +z22 = z11^2^1 +z_5_0 = z9*z22 +z_10_5 = z_5_0^2^5 +z_10_0 = z_10_5*z_5_0 +z_20_10 = z_10_0^2^10 +z_20_0 = z_20_10*z_10_0 +z_40_20 = z_20_0^2^20 +z_40_0 = z_40_20*z_20_0 +z_50_10 = z_40_0^2^10 +z_50_0 = z_50_10*z_10_0 +z_100_50 = z_50_0^2^50 +z_100_0 = z_100_50*z_50_0 +z_200_100 = z_100_0^2^100 +z_200_0 = z_200_100*z_100_0 +z_250_50 = z_200_0^2^50 +z_250_0 = z_250_50*z_50_0 +z_252_2 = z_250_0^2^2 +z_252_3 = z_252_2*z1 + +return diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/q2h.sh b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/q2h.sh new file mode 100644 index 0000000000..47ec5110e8 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/q2h.sh @@ -0,0 +1,4 @@ +#!/bin/sh +sed 's/^#.*//' \ +| qhasm-generic \ +| sed 's_//\(.*\)$_/*\1 */_' diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/sc.h b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/sc.h new file mode 100644 index 0000000000..81c8594102 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/sc.h @@ -0,0 +1,15 @@ +#ifndef SC_H +#define SC_H + +/* +The set of scalars is \Z/l +where l = 2^252 + 27742317777372353535851937790883648493. +*/ + +#define sc_reduce CRYPTO_NAMESPACE(sc_reduce) +#define sc_muladd CRYPTO_NAMESPACE(sc_muladd) + +extern void sc_reduce(unsigned char *); +extern void sc_muladd(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *); + +#endif diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/sc_reduce.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/sc_reduce.c new file mode 100644 index 0000000000..7a96cd1a91 --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/sc_reduce.c @@ -0,0 +1,277 @@ +// linker define sc_reduce + +#include "sc.h" +#include "crypto_int64.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" + +static crypto_uint64 load_3(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + return result; +} + +static crypto_uint64 load_4(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + result |= ((crypto_uint64) in[3]) << 24; + return result; +} + +/* +Input: + s[0]+256*s[1]+...+256^63*s[63] = s + +Output: + s[0]+256*s[1]+...+256^31*s[31] = s mod l + where l = 2^252 + 27742317777372353535851937790883648493. + Overwrites s in place. +*/ + +void sc_reduce(unsigned char *s) +{ + crypto_int64 s0 = 2097151 & load_3(s); + crypto_int64 s1 = 2097151 & (load_4(s + 2) >> 5); + crypto_int64 s2 = 2097151 & (load_3(s + 5) >> 2); + crypto_int64 s3 = 2097151 & (load_4(s + 7) >> 7); + crypto_int64 s4 = 2097151 & (load_4(s + 10) >> 4); + crypto_int64 s5 = 2097151 & (load_3(s + 13) >> 1); + crypto_int64 s6 = 2097151 & (load_4(s + 15) >> 6); + crypto_int64 s7 = 2097151 & (load_3(s + 18) >> 3); + crypto_int64 s8 = 2097151 & load_3(s + 21); + crypto_int64 s9 = 2097151 & (load_4(s + 23) >> 5); + crypto_int64 s10 = 2097151 & (load_3(s + 26) >> 2); + crypto_int64 s11 = 2097151 & (load_4(s + 28) >> 7); + crypto_int64 s12 = 2097151 & (load_4(s + 31) >> 4); + crypto_int64 s13 = 2097151 & (load_3(s + 34) >> 1); + crypto_int64 s14 = 2097151 & (load_4(s + 36) >> 6); + crypto_int64 s15 = 2097151 & (load_3(s + 39) >> 3); + crypto_int64 s16 = 2097151 & load_3(s + 42); + crypto_int64 s17 = 2097151 & (load_4(s + 44) >> 5); + crypto_int64 s18 = 2097151 & (load_3(s + 47) >> 2); + crypto_int64 s19 = 2097151 & (load_4(s + 49) >> 7); + crypto_int64 s20 = 2097151 & (load_4(s + 52) >> 4); + crypto_int64 s21 = 2097151 & (load_3(s + 55) >> 1); + crypto_int64 s22 = 2097151 & (load_4(s + 57) >> 6); + crypto_int64 s23 = (load_4(s + 60) >> 3); + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + crypto_int64 carry10; + crypto_int64 carry11; + crypto_int64 carry12; + crypto_int64 carry13; + crypto_int64 carry14; + crypto_int64 carry15; + crypto_int64 carry16; + + s11 += s23 * 666643; + s12 += s23 * 470296; + s13 += s23 * 654183; + s14 -= s23 * 997805; + s15 += s23 * 136657; + s16 -= s23 * 683901; + s23 = 0; + + s10 += s22 * 666643; + s11 += s22 * 470296; + s12 += s22 * 654183; + s13 -= s22 * 997805; + s14 += s22 * 136657; + s15 -= s22 * 683901; + s22 = 0; + + s9 += s21 * 666643; + s10 += s21 * 470296; + s11 += s21 * 654183; + s12 -= s21 * 997805; + s13 += s21 * 136657; + s14 -= s21 * 683901; + s21 = 0; + + s8 += s20 * 666643; + s9 += s20 * 470296; + s10 += s20 * 654183; + s11 -= s20 * 997805; + s12 += s20 * 136657; + s13 -= s20 * 683901; + s20 = 0; + + s7 += s19 * 666643; + s8 += s19 * 470296; + s9 += s19 * 654183; + s10 -= s19 * 997805; + s11 += s19 * 136657; + s12 -= s19 * 683901; + s19 = 0; + + s6 += s18 * 666643; + s7 += s18 * 470296; + s8 += s18 * 654183; + s9 -= s18 * 997805; + s10 += s18 * 136657; + s11 -= s18 * 683901; + s18 = 0; + + carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21; + carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21; + carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21; + + carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21; + carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21; + + s5 += s17 * 666643; + s6 += s17 * 470296; + s7 += s17 * 654183; + s8 -= s17 * 997805; + s9 += s17 * 136657; + s10 -= s17 * 683901; + s17 = 0; + + s4 += s16 * 666643; + s5 += s16 * 470296; + s6 += s16 * 654183; + s7 -= s16 * 997805; + s8 += s16 * 136657; + s9 -= s16 * 683901; + s16 = 0; + + s3 += s15 * 666643; + s4 += s15 * 470296; + s5 += s15 * 654183; + s6 -= s15 * 997805; + s7 += s15 * 136657; + s8 -= s15 * 683901; + s15 = 0; + + s2 += s14 * 666643; + s3 += s14 * 470296; + s4 += s14 * 654183; + s5 -= s14 * 997805; + s6 += s14 * 136657; + s7 -= s14 * 683901; + s14 = 0; + + s1 += s13 * 666643; + s2 += s13 * 470296; + s3 += s13 * 654183; + s4 -= s13 * 997805; + s5 += s13 * 136657; + s6 -= s13 * 683901; + s13 = 0; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21; + carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21; + carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21; + carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + + carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21; + carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21; + carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21; + carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21; + carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21; + carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21; + carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21; + carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21; + carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21; + carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21; + carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21; + carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21; + carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21; + carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21; + carry11 = s11 >> 21; s12 += carry11; s11 -= carry11 << 21; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21; + carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21; + carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21; + carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21; + carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21; + carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21; + carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21; + carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21; + carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21; + carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21; + carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21; + + s[0] = s0 >> 0; + s[1] = s0 >> 8; + s[2] = (s0 >> 16) | (s1 << 5); + s[3] = s1 >> 3; + s[4] = s1 >> 11; + s[5] = (s1 >> 19) | (s2 << 2); + s[6] = s2 >> 6; + s[7] = (s2 >> 14) | (s3 << 7); + s[8] = s3 >> 1; + s[9] = s3 >> 9; + s[10] = (s3 >> 17) | (s4 << 4); + s[11] = s4 >> 4; + s[12] = s4 >> 12; + s[13] = (s4 >> 20) | (s5 << 1); + s[14] = s5 >> 7; + s[15] = (s5 >> 15) | (s6 << 6); + s[16] = s6 >> 2; + s[17] = s6 >> 10; + s[18] = (s6 >> 18) | (s7 << 3); + s[19] = s7 >> 5; + s[20] = s7 >> 13; + s[21] = s8 >> 0; + s[22] = s8 >> 8; + s[23] = (s8 >> 16) | (s9 << 5); + s[24] = s9 >> 3; + s[25] = s9 >> 11; + s[26] = (s9 >> 19) | (s10 << 2); + s[27] = s10 >> 6; + s[28] = (s10 >> 14) | (s11 << 7); + s[29] = s11 >> 1; + s[30] = s11 >> 9; + s[31] = s11 >> 17; +} diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/shared-Bi.c b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/shared-Bi.c new file mode 100644 index 0000000000..9532ab9d5f --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/shared-Bi.c @@ -0,0 +1,7 @@ +// linker define Bi + +#include "Bi.h" + +const ge_precomp Bi[8] = { +#include "base2.h" +} ; diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/sqrtm1.h b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/sqrtm1.h new file mode 100644 index 0000000000..d8caa23b6a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/sqrtm1.h @@ -0,0 +1 @@ +-32595792,-7943725,9377950,3500415,12389472,-272473,-25146209,-2005654,326686,11406482 diff --git a/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/sqrtm1.py b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/sqrtm1.py new file mode 100644 index 0000000000..9a47fbc12a --- /dev/null +++ b/lib-25519/lib25519/crypto_mGnP/ed25519/ref10/sqrtm1.py @@ -0,0 +1,28 @@ +q = 2**255 - 19 + +def expmod(b,e,m): + if e == 0: return 1 + t = expmod(b,e/2,m)**2 % m + if e & 1: t = (t*b) % m + return t + +def inv(x): + return expmod(x,q-2,q) + +def radix255(x): + x = x % q + if x + x > q: x -= q + x = [x,0,0,0,0,0,0,0,0,0] + bits = [26,25,26,25,26,25,26,25,26,25] + for i in range(9): + carry = (x[i] + 2**(bits[i]-1)) / 2**bits[i] + x[i] -= carry * 2**bits[i] + x[i + 1] += carry + result = "" + for i in range(9): + result = result+str(x[i])+"," + result = result+str(x[9]) + return result + +I = expmod(2,(q-1)/4,q) +print radix255(I) diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/architectures b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/architectures new file mode 120000 index 0000000000..f92e7d6fe1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/architectures @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/choose_t.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/choose_t.S new file mode 100644 index 0000000000..3d5a5a9f41 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/choose_t.S @@ -0,0 +1,1827 @@ +// linker define choose_t +// linker use 2P0 +// linker use 2P1234 + +# qhasm: int64 tp + +# qhasm: int64 pos + +# qhasm: int64 b + +# qhasm: int64 basep + +# qhasm: input tp + +# qhasm: input pos + +# qhasm: input b + +# qhasm: input basep + +# qhasm: int64 mask + +# qhasm: int64 u + +# qhasm: int64 tysubx0 + +# qhasm: int64 tysubx1 + +# qhasm: int64 tysubx2 + +# qhasm: int64 tysubx3 + +# qhasm: int64 tysubx4 + +# qhasm: int64 txaddy0 + +# qhasm: int64 txaddy1 + +# qhasm: int64 txaddy2 + +# qhasm: int64 txaddy3 + +# qhasm: int64 txaddy4 + +# qhasm: int64 tt2d0 + +# qhasm: int64 tt2d1 + +# qhasm: int64 tt2d2 + +# qhasm: int64 tt2d3 + +# qhasm: int64 tt2d4 + +# qhasm: int64 tt0 + +# qhasm: int64 tt1 + +# qhasm: int64 tt2 + +# qhasm: int64 tt3 + +# qhasm: int64 tt4 + +# qhasm: int64 t + +# qhasm: stack64 tp_stack + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(choose_t) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(choose_t) +.globl CRYPTO_SHARED_NAMESPACE(choose_t) +_CRYPTO_SHARED_NAMESPACE(choose_t): +CRYPTO_SHARED_NAMESPACE(choose_t): +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: tp_stack = tp +# asm 1: movq tp_stack=stack64#8 +# asm 2: movq tp_stack=56(%rsp) +movq %rdi,56(%rsp) + +# qhasm: pos *= 960 +# asm 1: imulq $960,pos=int64#1 +# asm 2: imulq $960,pos=%rdi +imulq $960,%rsi,%rdi + +# qhasm: mask = b +# asm 1: mov mask=int64#2 +# asm 2: mov mask=%rsi +mov %rdx,%rsi + +# qhasm: (int64) mask >>= 7 +# asm 1: sar $7,u=int64#5 +# asm 2: mov u=%r8 +mov %rdx,%r8 + +# qhasm: u += mask +# asm 1: add tysubx0=int64#2 +# asm 2: mov $1,>tysubx0=%rsi +mov $1,%rsi + +# qhasm: tysubx1 = 0 +# asm 1: mov $0,>tysubx1=int64#6 +# asm 2: mov $0,>tysubx1=%r9 +mov $0,%r9 + +# qhasm: tysubx2 = 0 +# asm 1: mov $0,>tysubx2=int64#7 +# asm 2: mov $0,>tysubx2=%rax +mov $0,%rax + +# qhasm: tysubx3 = 0 +# asm 1: mov $0,>tysubx3=int64#8 +# asm 2: mov $0,>tysubx3=%r10 +mov $0,%r10 + +# qhasm: tysubx4 = 0 +# asm 1: mov $0,>tysubx4=int64#9 +# asm 2: mov $0,>tysubx4=%r11 +mov $0,%r11 + +# qhasm: txaddy0 = 1 +# asm 1: mov $1,>txaddy0=int64#10 +# asm 2: mov $1,>txaddy0=%r12 +mov $1,%r12 + +# qhasm: txaddy1 = 0 +# asm 1: mov $0,>txaddy1=int64#11 +# asm 2: mov $0,>txaddy1=%r13 +mov $0,%r13 + +# qhasm: txaddy2 = 0 +# asm 1: mov $0,>txaddy2=int64#12 +# asm 2: mov $0,>txaddy2=%r14 +mov $0,%r14 + +# qhasm: txaddy3 = 0 +# asm 1: mov $0,>txaddy3=int64#13 +# asm 2: mov $0,>txaddy3=%r15 +mov $0,%r15 + +# qhasm: txaddy4 = 0 +# asm 1: mov $0,>txaddy4=int64#14 +# asm 2: mov $0,>txaddy4=%rbx +mov $0,%rbx + +# qhasm: =? u - 1 +# asm 1: cmp $1,t=int64#15 +# asm 2: movq 0(t=%rbp +movq 0(%rcx,%rdi),%rbp + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 8(t=%rbp +movq 8(%rcx,%rdi),%rbp + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 16(t=%rbp +movq 16(%rcx,%rdi),%rbp + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 24(t=%rbp +movq 24(%rcx,%rdi),%rbp + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 32(t=%rbp +movq 32(%rcx,%rdi),%rbp + +# qhasm: tysubx4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 40(t=%rbp +movq 40(%rcx,%rdi),%rbp + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 48(t=%rbp +movq 48(%rcx,%rdi),%rbp + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 56(t=%rbp +movq 56(%rcx,%rdi),%rbp + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 64(t=%rbp +movq 64(%rcx,%rdi),%rbp + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 72(t=%rbp +movq 72(%rcx,%rdi),%rbp + +# qhasm: txaddy4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 120(t=%rbp +movq 120(%rcx,%rdi),%rbp + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 128(t=%rbp +movq 128(%rcx,%rdi),%rbp + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 136(t=%rbp +movq 136(%rcx,%rdi),%rbp + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 144(t=%rbp +movq 144(%rcx,%rdi),%rbp + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 152(t=%rbp +movq 152(%rcx,%rdi),%rbp + +# qhasm: tysubx4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 160(t=%rbp +movq 160(%rcx,%rdi),%rbp + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 168(t=%rbp +movq 168(%rcx,%rdi),%rbp + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 176(t=%rbp +movq 176(%rcx,%rdi),%rbp + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 184(t=%rbp +movq 184(%rcx,%rdi),%rbp + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 192(t=%rbp +movq 192(%rcx,%rdi),%rbp + +# qhasm: txaddy4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 240(t=%rbp +movq 240(%rcx,%rdi),%rbp + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 248(t=%rbp +movq 248(%rcx,%rdi),%rbp + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 256(t=%rbp +movq 256(%rcx,%rdi),%rbp + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 264(t=%rbp +movq 264(%rcx,%rdi),%rbp + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 272(t=%rbp +movq 272(%rcx,%rdi),%rbp + +# qhasm: tysubx4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 280(t=%rbp +movq 280(%rcx,%rdi),%rbp + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 288(t=%rbp +movq 288(%rcx,%rdi),%rbp + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 296(t=%rbp +movq 296(%rcx,%rdi),%rbp + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 304(t=%rbp +movq 304(%rcx,%rdi),%rbp + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 312(t=%rbp +movq 312(%rcx,%rdi),%rbp + +# qhasm: txaddy4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 360(t=%rbp +movq 360(%rcx,%rdi),%rbp + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 368(t=%rbp +movq 368(%rcx,%rdi),%rbp + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 376(t=%rbp +movq 376(%rcx,%rdi),%rbp + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 384(t=%rbp +movq 384(%rcx,%rdi),%rbp + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 392(t=%rbp +movq 392(%rcx,%rdi),%rbp + +# qhasm: tysubx4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 400(t=%rbp +movq 400(%rcx,%rdi),%rbp + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 408(t=%rbp +movq 408(%rcx,%rdi),%rbp + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 416(t=%rbp +movq 416(%rcx,%rdi),%rbp + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 424(t=%rbp +movq 424(%rcx,%rdi),%rbp + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 432(t=%rbp +movq 432(%rcx,%rdi),%rbp + +# qhasm: txaddy4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 480(t=%rbp +movq 480(%rcx,%rdi),%rbp + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 488(t=%rbp +movq 488(%rcx,%rdi),%rbp + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 496(t=%rbp +movq 496(%rcx,%rdi),%rbp + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 504(t=%rbp +movq 504(%rcx,%rdi),%rbp + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 512(t=%rbp +movq 512(%rcx,%rdi),%rbp + +# qhasm: tysubx4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 520(t=%rbp +movq 520(%rcx,%rdi),%rbp + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 528(t=%rbp +movq 528(%rcx,%rdi),%rbp + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 536(t=%rbp +movq 536(%rcx,%rdi),%rbp + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 544(t=%rbp +movq 544(%rcx,%rdi),%rbp + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 552(t=%rbp +movq 552(%rcx,%rdi),%rbp + +# qhasm: txaddy4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 600(t=%rbp +movq 600(%rcx,%rdi),%rbp + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 608(t=%rbp +movq 608(%rcx,%rdi),%rbp + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 616(t=%rbp +movq 616(%rcx,%rdi),%rbp + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 624(t=%rbp +movq 624(%rcx,%rdi),%rbp + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 632(t=%rbp +movq 632(%rcx,%rdi),%rbp + +# qhasm: tysubx4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 640(t=%rbp +movq 640(%rcx,%rdi),%rbp + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 648(t=%rbp +movq 648(%rcx,%rdi),%rbp + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 656(t=%rbp +movq 656(%rcx,%rdi),%rbp + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 664(t=%rbp +movq 664(%rcx,%rdi),%rbp + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 672(t=%rbp +movq 672(%rcx,%rdi),%rbp + +# qhasm: txaddy4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 720(t=%rbp +movq 720(%rcx,%rdi),%rbp + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 728(t=%rbp +movq 728(%rcx,%rdi),%rbp + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 736(t=%rbp +movq 736(%rcx,%rdi),%rbp + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 744(t=%rbp +movq 744(%rcx,%rdi),%rbp + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 752(t=%rbp +movq 752(%rcx,%rdi),%rbp + +# qhasm: tysubx4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 760(t=%rbp +movq 760(%rcx,%rdi),%rbp + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 768(t=%rbp +movq 768(%rcx,%rdi),%rbp + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 776(t=%rbp +movq 776(%rcx,%rdi),%rbp + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 784(t=%rbp +movq 784(%rcx,%rdi),%rbp + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 792(t=%rbp +movq 792(%rcx,%rdi),%rbp + +# qhasm: txaddy4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 840(t=%rbp +movq 840(%rcx,%rdi),%rbp + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 848(t=%rbp +movq 848(%rcx,%rdi),%rbp + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 856(t=%rbp +movq 856(%rcx,%rdi),%rbp + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 864(t=%rbp +movq 864(%rcx,%rdi),%rbp + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 872(t=%rbp +movq 872(%rcx,%rdi),%rbp + +# qhasm: tysubx4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 880(t=%rbp +movq 880(%rcx,%rdi),%rbp + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 888(t=%rbp +movq 888(%rcx,%rdi),%rbp + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 896(t=%rbp +movq 896(%rcx,%rdi),%rbp + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 904(t=%rbp +movq 904(%rcx,%rdi),%rbp + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#15 +# asm 2: movq 912(t=%rbp +movq 912(%rcx,%rdi),%rbp + +# qhasm: txaddy4 = t if = +# asm 1: cmove t=int64#15 +# asm 2: mov t=%rbp +mov %rsi,%rbp + +# qhasm: tysubx0 = txaddy0 if signed< +# asm 1: cmovl t=int64#15 +# asm 2: mov t=%rbp +mov %r9,%rbp + +# qhasm: tysubx1 = txaddy1 if signed< +# asm 1: cmovl t=int64#15 +# asm 2: mov t=%rbp +mov %rax,%rbp + +# qhasm: tysubx2 = txaddy2 if signed< +# asm 1: cmovl t=int64#15 +# asm 2: mov t=%rbp +mov %r10,%rbp + +# qhasm: tysubx3 = txaddy3 if signed< +# asm 1: cmovl t=int64#15 +# asm 2: mov t=%rbp +mov %r11,%rbp + +# qhasm: tysubx4 = txaddy4 if signed< +# asm 1: cmovl tp=int64#15 +# asm 2: movq tp=%rbp +movq 56(%rsp),%rbp + +# qhasm: *(uint64 *)(tp + 0) = tysubx0 +# asm 1: movq tt2d0=int64#2 +# asm 2: mov $0,>tt2d0=%rsi +mov $0,%rsi + +# qhasm: tt2d1 = 0 +# asm 1: mov $0,>tt2d1=int64#6 +# asm 2: mov $0,>tt2d1=%r9 +mov $0,%r9 + +# qhasm: tt2d2 = 0 +# asm 1: mov $0,>tt2d2=int64#7 +# asm 2: mov $0,>tt2d2=%rax +mov $0,%rax + +# qhasm: tt2d3 = 0 +# asm 1: mov $0,>tt2d3=int64#8 +# asm 2: mov $0,>tt2d3=%r10 +mov $0,%r10 + +# qhasm: tt2d4 = 0 +# asm 1: mov $0,>tt2d4=int64#9 +# asm 2: mov $0,>tt2d4=%r11 +mov $0,%r11 + +# qhasm: =? u - 1 +# asm 1: cmp $1,t=int64#10 +# asm 2: movq 80(t=%r12 +movq 80(%rcx,%rdi),%r12 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 88(t=%r12 +movq 88(%rcx,%rdi),%r12 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 96(t=%r12 +movq 96(%rcx,%rdi),%r12 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 104(t=%r12 +movq 104(%rcx,%rdi),%r12 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 112(t=%r12 +movq 112(%rcx,%rdi),%r12 + +# qhasm: tt2d4 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 200(t=%r12 +movq 200(%rcx,%rdi),%r12 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 208(t=%r12 +movq 208(%rcx,%rdi),%r12 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 216(t=%r12 +movq 216(%rcx,%rdi),%r12 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 224(t=%r12 +movq 224(%rcx,%rdi),%r12 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 232(t=%r12 +movq 232(%rcx,%rdi),%r12 + +# qhasm: tt2d4 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 320(t=%r12 +movq 320(%rcx,%rdi),%r12 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 328(t=%r12 +movq 328(%rcx,%rdi),%r12 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 336(t=%r12 +movq 336(%rcx,%rdi),%r12 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 344(t=%r12 +movq 344(%rcx,%rdi),%r12 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 352(t=%r12 +movq 352(%rcx,%rdi),%r12 + +# qhasm: tt2d4 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 440(t=%r12 +movq 440(%rcx,%rdi),%r12 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 448(t=%r12 +movq 448(%rcx,%rdi),%r12 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 456(t=%r12 +movq 456(%rcx,%rdi),%r12 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 464(t=%r12 +movq 464(%rcx,%rdi),%r12 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 472(t=%r12 +movq 472(%rcx,%rdi),%r12 + +# qhasm: tt2d4 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 560(t=%r12 +movq 560(%rcx,%rdi),%r12 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 568(t=%r12 +movq 568(%rcx,%rdi),%r12 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 576(t=%r12 +movq 576(%rcx,%rdi),%r12 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 584(t=%r12 +movq 584(%rcx,%rdi),%r12 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 592(t=%r12 +movq 592(%rcx,%rdi),%r12 + +# qhasm: tt2d4 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 680(t=%r12 +movq 680(%rcx,%rdi),%r12 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 688(t=%r12 +movq 688(%rcx,%rdi),%r12 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 696(t=%r12 +movq 696(%rcx,%rdi),%r12 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 704(t=%r12 +movq 704(%rcx,%rdi),%r12 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 712(t=%r12 +movq 712(%rcx,%rdi),%r12 + +# qhasm: tt2d4 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 800(t=%r12 +movq 800(%rcx,%rdi),%r12 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 808(t=%r12 +movq 808(%rcx,%rdi),%r12 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 816(t=%r12 +movq 816(%rcx,%rdi),%r12 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 824(t=%r12 +movq 824(%rcx,%rdi),%r12 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#10 +# asm 2: movq 832(t=%r12 +movq 832(%rcx,%rdi),%r12 + +# qhasm: tt2d4 = t if = +# asm 1: cmove t=int64#5 +# asm 2: movq 920(t=%r8 +movq 920(%rcx,%rdi),%r8 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#5 +# asm 2: movq 928(t=%r8 +movq 928(%rcx,%rdi),%r8 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#5 +# asm 2: movq 936(t=%r8 +movq 936(%rcx,%rdi),%r8 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#5 +# asm 2: movq 944(t=%r8 +movq 944(%rcx,%rdi),%r8 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#1 +# asm 2: movq 952(t=%rdi +movq 952(%rcx,%rdi),%rdi + +# qhasm: tt2d4 = t if = +# asm 1: cmove tt0=int64#1 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(2P0),>tt0=%rdi +movq CRYPTO_SHARED_NAMESPACE(2P0)(%rip),%rdi + +# qhasm: tt1 = *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P1234) +# asm 1: movq CRYPTO_SHARED_NAMESPACE(2P1234),>tt1=int64#4 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(2P1234),>tt1=%rcx +movq CRYPTO_SHARED_NAMESPACE(2P1234)(%rip),%rcx + +# qhasm: tt2 = *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P1234) +# asm 1: movq CRYPTO_SHARED_NAMESPACE(2P1234),>tt2=int64#5 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(2P1234),>tt2=%r8 +movq CRYPTO_SHARED_NAMESPACE(2P1234)(%rip),%r8 + +# qhasm: tt3 = *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P1234) +# asm 1: movq CRYPTO_SHARED_NAMESPACE(2P1234),>tt3=int64#10 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(2P1234),>tt3=%r12 +movq CRYPTO_SHARED_NAMESPACE(2P1234)(%rip),%r12 + +# qhasm: tt4 = *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P1234) +# asm 1: movq CRYPTO_SHARED_NAMESPACE(2P1234),>tt4=int64#11 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(2P1234),>tt4=%r13 +movq CRYPTO_SHARED_NAMESPACE(2P1234)(%rip),%r13 + +# qhasm: tt0 -= tt2d0 +# asm 1: sub caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519.h new file mode 120000 index 0000000000..871906a0c3 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_add.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_add.c new file mode 120000 index 0000000000..0da596e4a8 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_add.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_add.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_cmov.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_cmov.c new file mode 100644 index 0000000000..9da287a4df --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_cmov.c @@ -0,0 +1,33 @@ +// linker define fe25519_cmov + +#include "fe25519.h" + +void fe25519_cmov(fe25519 *f,const fe25519 *g,unsigned char b) +{ + unsigned long long f0 = f->v[0]; + unsigned long long f1 = f->v[1]; + unsigned long long f2 = f->v[2]; + unsigned long long f3 = f->v[3]; + unsigned long long f4 = f->v[4]; + unsigned long long g0 = g->v[0]; + unsigned long long g1 = g->v[1]; + unsigned long long g2 = g->v[2]; + unsigned long long g3 = g->v[3]; + unsigned long long g4 = g->v[4]; + unsigned long long x0 = f0 ^ g0; + unsigned long long x1 = f1 ^ g1; + unsigned long long x2 = f2 ^ g2; + unsigned long long x3 = f3 ^ g3; + unsigned long long x4 = f4 ^ g4; + unsigned long long mask = -(unsigned long long) b; + x0 &= mask; + x1 &= mask; + x2 &= mask; + x3 &= mask; + x4 &= mask; + f->v[0] = f0 ^ x0; + f->v[1] = f1 ^ x1; + f->v[2] = f2 ^ x2; + f->v[3] = f3 ^ x3; + f->v[4] = f4 ^ x4; +} diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_freeze.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_freeze.S new file mode 120000 index 0000000000..fd20322b9e --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_getparity.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_getparity.c new file mode 120000 index 0000000000..c23ba9ce3d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_getparity.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_invert.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_mul.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_mul.S new file mode 120000 index 0000000000..2126ab3394 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_nsquare.S new file mode 120000 index 0000000000..b2e1343850 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_pack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_pack.c new file mode 120000 index 0000000000..fe8ef76603 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_setint.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_setint.c new file mode 120000 index 0000000000..866d1c9abd --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_setint.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_setint.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_square.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_square.S new file mode 120000 index 0000000000..89efb949d4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_sub.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_sub.c new file mode 120000 index 0000000000..6bcc27fbfc --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_sub.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_sub.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_unpack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_unpack.c new file mode 120000 index 0000000000..15a19f6e1d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519.h new file mode 100644 index 0000000000..0742cc75ef --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519.h @@ -0,0 +1,109 @@ +#ifndef GE25519_H +#define GE25519_H + +/* + * Arithmetic on the twisted Edwards curve -x^2 + y^2 = 1 + dx^2y^2 + * with d = -(121665/121666) = + * 37095705934669439343138083508754565189542113879843219016388785533085940283555 + * Base point: + * (15112221349535400772501151409588531511454012693041857206046113283949847762202,46316835694926478169428394003475163141307993866256225615783033603165251855960); + */ + +#include "fe25519.h" +#include "sc25519.h" + +#define ge25519 CRYPTO_NAMESPACE(ge25519) +#define ge25519_base CRYPTO_NAMESPACE(ge25519_base) +#define ge25519_unpackneg_vartime CRYPTO_NAMESPACE(unpackneg_vartime) +#define ge25519_pack CRYPTO_NAMESPACE(pack) +#define ge25519_isneutral_vartime CRYPTO_NAMESPACE(isneutral_vartime) +#define ge25519_add CRYPTO_NAMESPACE(ge25519_add) +#define ge25519_double CRYPTO_NAMESPACE(ge25519_double) +#define ge25519_double_scalarmult_vartime CRYPTO_NAMESPACE(double_scalarmult_vartime) +#define ge25519_multi_scalarmult_vartime CRYPTO_NAMESPACE(ge25519_multi_scalarmult_vartime) +#define ge25519_scalarmult_base CRYPTO_NAMESPACE(ge25519_scalarmult_base) +#define ge25519_p1p1_to_p2 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2) +#define ge25519_p1p1_to_p3 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3) +#define ge25519_p1p1_to_pniels CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_pniels) +#define ge25519_add_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_add_p1p1) +#define ge25519_dbl_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1) +#define choose_t CRYPTO_SHARED_NAMESPACE(choose_t) +#define choose_t_smultq CRYPTO_NAMESPACE(choose_t_smultq) +#define ge25519_nielsadd2 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2) +#define ge25519_nielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1) +#define ge25519_pnielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1) +#define ge25519_base_multiples_niels CRYPTO_SHARED_NAMESPACE(ge25519_base_multiples_niels) + +#define ge25519_p3 ge25519 + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; + fe25519 t; +} ge25519; + +typedef struct +{ + fe25519 x; + fe25519 z; + fe25519 y; + fe25519 t; +} ge25519_p1p1; + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; +} ge25519_p2; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 t2d; +} ge25519_niels; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 z; + fe25519 t2d; +} ge25519_pniels; + +extern void ge25519_p1p1_to_p2(ge25519_p2 *r, const ge25519_p1p1 *p); +extern void ge25519_p1p1_to_p3(ge25519_p3 *r, const ge25519_p1p1 *p); +extern void ge25519_p1p1_to_pniels(ge25519_pniels *r, const ge25519_p1p1 *p); +extern void ge25519_add_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_p3 *q); +extern void ge25519_dbl_p1p1(ge25519_p1p1 *r, const ge25519_p2 *p); +extern void choose_t(ge25519_niels *t, unsigned long long pos, signed long long b, const ge25519_niels *base_multiples); +extern void choose_t_smultq(ge25519_pniels *t, signed long long b, const ge25519_pniels *pre); +extern void ge25519_nielsadd2(ge25519_p3 *r, const ge25519_niels *q); +extern void ge25519_nielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_niels *q); +extern void ge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_pniels *q); + +extern const ge25519 ge25519_base; + +extern int ge25519_unpackneg_vartime(ge25519 *r, const unsigned char p[32]); + +extern void ge25519_pack(unsigned char r[32], const ge25519 *p); + +extern int ge25519_isneutral_vartime(const ge25519 *p); + +extern void ge25519_add(ge25519 *r, const ge25519 *p, const ge25519 *q); + +extern void ge25519_double(ge25519 *r, const ge25519 *p); + +/* computes [s1]p1 + [s2]ge25519_base */ +extern void ge25519_double_scalarmult_vartime(ge25519 *r, const ge25519 *p1, const sc25519 *s1, const sc25519 *s2); + +extern void ge25519_multi_scalarmult_vartime(ge25519 *r, ge25519 *p, sc25519 *s, const unsigned long long npoints); + +extern void ge25519_scalarmult_base(ge25519 *r, const sc25519 *s); + +extern const ge25519_niels ge25519_base_multiples_niels[]; + +#endif diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_base_niels_smalltables.data b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_base_niels_smalltables.data new file mode 100644 index 0000000000..6f04bdf5ea --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_base_niels_smalltables.data @@ -0,0 +1,768 @@ +{{{0x00003905d740913e, 0x0000ba2817d673a2, 0x00023e2827f4e67c, 0x000133d2e0c21a34, 0x00044fd2f9298f81}}, + {{0x000493c6f58c3b85, 0x0000df7181c325f7, 0x0000f50b0b3e4cb7, 0x0005329385a44c32, 0x00007cf9d3a33d4b}}, + {{0x000515674b6fbb59, 0x00001dd454bd5b77, 0x00055f1be90784fc, 0x00066566ea4e8e64, 0x0004f0ebe1faf16e}}}, +{{{0x0001a56042b4d5a8, 0x000189cc159ed153, 0x0005b8deaa3cae04, 0x0002aaf04f11b5d8, 0x0006bb595a669c92}}, + {{0x0004e7fc933c71d7, 0x0002cf41feb6b244, 0x0007581c0a7d1a76, 0x0007172d534d32f0, 0x000590c063fa87d2}}, + {{0x00047eaadad36802, 0x0002707dc900adc6, 0x00001da09aebcd66, 0x0000dc1de55f0873, 0x00049314f0a165ed}}}, +{{{0x00011fe8a4fcd265, 0x0007bcb8374faacc, 0x00052f5af4ef4d4f, 0x0005314098f98d10, 0x0002ab91587555bd}}, + {{0x0005b0a84cee9730, 0x00061d10c97155e4, 0x0004059cc8096a10, 0x00047a608da8014f, 0x0007a164e1b9a80f}}, + {{0x000211f4f1674834, 0x0002fec5bf12b37e, 0x0005c8a93ae139ac, 0x000510ebef3783ad, 0x000549a04b963bb2}}}, +{{{0x0006050a056818bf, 0x00062acc1f5532bf, 0x00028141ccc9fa25, 0x00024d61f471e683, 0x00027933f4c7445a}}, + {{0x000351b98efc099f, 0x00068fbfa4a7050e, 0x00042a49959d971b, 0x000393e51a469efd, 0x000680e910321e58}}, + {{0x000645ece51426b0, 0x0007adb741f297e3, 0x0003e14b038caf18, 0x00060c7214ba6ac6, 0x00044f079b1b0e64}}}, +{{{0x000182c3a447d6ba, 0x00022964e536eff2, 0x000192821f540053, 0x0002f9f19e788e5c, 0x000154a7e73eb1b5}}, + {{0x0002bc4408a5bb33, 0x000078ebdda05442, 0x0002ffb112354123, 0x000375ee8df5862d, 0x0002945ccf146e20}}, + {{0x0002a179e7d003b3, 0x0001400249afd906, 0x0001b63fcd7dca74, 0x00054c3160ea5087, 0x00068b8ac5938b27}}}, +{{{0x000006b67b7d8ca4, 0x000084fa44e72933, 0x0001154ee55d6f8a, 0x0004425d842e7390, 0x00038b64c41ae417}}, + {{0x0004eeeb77157131, 0x0001201915f10741, 0x0001669cda6c9c56, 0x00045ec032db346d, 0x00051e57bb6a2cc3}}, + {{0x0005ad91689de3a4, 0x00051f1f7226f1f3, 0x00073ee6205d7c90, 0x00004f82855a994f, 0x0007865dfa21354c}}}, +{{{0x00072c9aaa3221b1, 0x000267774474f74d, 0x000064b0e9b28085, 0x0003f04ef53b27c9, 0x0001d6edd5d2e531}}, + {{0x00025cd0944ea3bf, 0x00075673b81a4d63, 0x000150b925d1c0d4, 0x00013f38d9294114, 0x000461bea69283c9}}, + {{0x00028aacab0fda36, 0x000287a6a939042f, 0x0006add5a294a319, 0x00061b9be82dc589, 0x000233cef623a2cb}}}, +{{{0x00075dedf39234d9, 0x00001c36ab1f3c54, 0x0000f08fee58f5da, 0x0000e19613a0d637, 0x0003a9024a1320e0}}, + {{0x0007596604dd3e8f, 0x0006fc510e058b36, 0x0003670c8db2cc0d, 0x000297d899ce332f, 0x0000915e76061bce}}, + {{0x0005e835a834a37e, 0x00034d130afd5bef, 0x00059ecc9a2f8673, 0x0002e11608c29b38, 0x000589eb3d9dbefd}}}, +{{{0x0003635449aa515e, 0x0003e178d0475dab, 0x00050b4712a19712, 0x0002dcc2860ff4ad, 0x00030d76d6f03d31}}, + {{0x0004dd0e632f9c1d, 0x0002ced12622a5d9, 0x00018de9614742da, 0x00079ca96fdbb5d4, 0x0006dd37d49a00ee}}, + {{0x000444172106e4c7, 0x00001251afed2d88, 0x000534fc9bed4f5a, 0x0005d85a39cf5234, 0x00010c697112e864}}}, +{{{0x0003c4277dbe5fde, 0x0005a335afd44c92, 0x0000c1164099753e, 0x00070487006fe423, 0x00025e61cabed66f}}, + {{0x00062aa08358c805, 0x00046f440848e194, 0x000447b771a8f52b, 0x000377ba3269d31d, 0x00003bf9baf55080}}, + {{0x0003e128cc586604, 0x0005968b2e8fc7e2, 0x000049a3d5bd61cf, 0x000116505b1ef6e6, 0x000566d78634586e}}}, +{{{0x0007a49f9cc10834, 0x0002b513788a22c6, 0x0005ff4b6ef2395b, 0x0002ec8e5af607bf, 0x00033975bca5ecc3}}, + {{0x00054285c65a2fd0, 0x00055e62ccf87420, 0x00046bb961b19044, 0x0001153405712039, 0x00014fba5f34793b}}, + {{0x000746166985f7d4, 0x00009939000ae79a, 0x0005844c7964f97a, 0x00013617e1f95b3d, 0x00014829cea83fc5}}}, +{{{0x00037b8497dd95c2, 0x00061549d6b4ffe8, 0x000217a22db1d138, 0x0000b9cf062eb09e, 0x0002fd9c71e5f758}}, + {{0x00070b2f4e71ecb8, 0x000728148efc643c, 0x0000753e03995b76, 0x0005bf5fb2ab6767, 0x00005fc3bc4535d7}}, + {{0x0000b3ae52afdedd, 0x00019da76619e497, 0x0006fa0654d2558e, 0x00078219d25e41d4, 0x000373767475c651}}}, +{{{0x000299fd40d1add9, 0x0005f2de9a04e5f7, 0x0007c0eebacc1c59, 0x0004cca1b1f8290a, 0x0001fbea56c3b18f}}, + {{0x000095cb14246590, 0x000002d82aa6ac68, 0x000442f183bc4851, 0x0006464f1c0a0644, 0x0006bf5905730907}}, + {{0x000778f1e1415b8a, 0x0006f75874efc1f4, 0x00028a694019027f, 0x00052b37a96bdc4d, 0x00002521cf67a635}}}, +{{{0x0007ee0b0a9d5294, 0x000381fbeb4cca27, 0x0007841f3a3e639d, 0x000676ea30c3445f, 0x0003fa00a7e71382}}, + {{0x00046720772f5ee4, 0x000632c0f359d622, 0x0002b2092ba3e252, 0x000662257c112680, 0x000001753d9f7cd6}}, + {{0x0001232d963ddb34, 0x00035692e70b078d, 0x000247ca14777a1f, 0x0006db556be8fcd0, 0x00012b5fe2fa048e}}}, +{{{0x0000fbc496fce34d, 0x000575be6b7dae3e, 0x0004a31585cee609, 0x000037e9023930ff, 0x000749b76f96fb12}}, + {{0x00037c26ad6f1e92, 0x00046a0971227be5, 0x0004722f0d2d9b4c, 0x0003dc46204ee03a, 0x0006f7e93c20796c}}, + {{0x0002f604aea6ae05, 0x000637dc939323eb, 0x0003fdad9b048d47, 0x0000a8b0d4045af7, 0x0000fcec10f01e02}}}, +{{{0x000558a649fe1e44, 0x00044635aeefcc89, 0x0001ff434887f2ba, 0x0000f981220e2d44, 0x0004901aa7183c51}}, + {{0x0002d29dc4244e45, 0x0006927b1bc147be, 0x0000308534ac0839, 0x0004853664033f41, 0x000413779166feab}}, + {{0x0001b7548c1af8f0, 0x0007848c53368116, 0x00001b64e7383de9, 0x000109fbb0587c8f, 0x00041bb887b726d1}}}, +{{{0x00007d44744346be, 0x000282b6a564a81d, 0x0004ed80f875236b, 0x0006fbbe1d450c50, 0x0004eb728c12fcdb}}, + {{0x00034c597c6691ae, 0x0007a150b6990fc4, 0x00052beb9d922274, 0x00070eed7164861a, 0x0000a871e070c6a9}}, + {{0x0001b5994bbc8989, 0x00074b7ba84c0660, 0x00075678f1cdaeb8, 0x00023206b0d6f10c, 0x0003ee7300f2685d}}}, +{{{0x000255e49e7dd6b7, 0x00038c2163d59eba, 0x0003861f2a005845, 0x0002e11e4ccbaec9, 0x0001381576297912}}, + {{0x00027947841e7518, 0x00032c7388dae87f, 0x000414add3971be9, 0x00001850832f0ef1, 0x0007d47c6a2cfb89}}, + {{0x0002d0148ef0d6e0, 0x0003522a8de787fb, 0x0002ee055e74f9d2, 0x00064038f6310813, 0x000148cf58d34c9e}}}, +{{{0x000492f67934f027, 0x0007ded0815528d4, 0x00058461511a6612, 0x0005ea2e50de1544, 0x0003ff2fa1ebd5db}}, + {{0x00072f7d9ae4756d, 0x0007711e690ffc4a, 0x000582a2355b0d16, 0x0000dccfe885b6b4, 0x000278febad4eaea}}, + {{0x0002681f8c933966, 0x0003840521931635, 0x000674f14a308652, 0x0003bd9c88a94890, 0x0004104dd02fe9c6}}}, +{{{0x0002bf5e1124422a, 0x000673146756ae56, 0x00014ad99a87e830, 0x0001eaca65b080fd, 0x0002c863b00afaf5}}, + {{0x00014e06db096ab8, 0x0001219c89e6b024, 0x000278abd486a2db, 0x000240b292609520, 0x0000165b5a48efca}}, + {{0x0000a474a0846a76, 0x000099a5ef981e32, 0x0002a8ae3c4bbfe6, 0x00045c34af14832c, 0x000591b67d9bffec}}}, +{{{0x00070d1c80b49bfa, 0x0003d57e7d914625, 0x0003c0722165e545, 0x0005e5b93819e04f, 0x0003de02ec7ca8f7}}, + {{0x0001b3719f18b55d, 0x000754318c83d337, 0x00027c17b7919797, 0x000145b084089b61, 0x000489b4f8670301}}, + {{0x0002102d3aeb92ef, 0x00068c22d50c3a46, 0x00042ea89385894e, 0x00075f9ebf55f38c, 0x00049f5fbba496cb}}}, +{{{0x00049a108a5bcfd4, 0x0006178c8e7d6612, 0x0001f03473710375, 0x00073a49614a6098, 0x0005604a86dcbfa6}}, + {{0x0005628c1e9c572e, 0x000598b108e822ab, 0x00055d8fae29361a, 0x0000adc8d1a97b28, 0x00006a1a6c288675}}, + {{0x0000d1d47c1764b6, 0x00001c08316a2e51, 0x0002b3db45c95045, 0x0001634f818d300c, 0x00020989e89fe274}}}, +{{{0x000777fd3a2dcc7f, 0x000594a9fb124932, 0x00001f8e80ca15f0, 0x000714d13cec3269, 0x0000403ed1d0ca67}}, + {{0x0004278b85eaec2e, 0x0000ef59657be2ce, 0x00072fd169588770, 0x0002e9b205260b30, 0x000730b9950f7059}}, + {{0x00032d35874ec552, 0x0001f3048df1b929, 0x000300d73b179b23, 0x0006e67be5a37d0b, 0x0005bd7454308303}}}, +{{{0x0002d19528b24cc2, 0x0004ac66b8302ff3, 0x000701c8d9fdad51, 0x0006c1b35c5b3727, 0x000133a78007380a}}, + {{0x0004932115e7792a, 0x000457b9bbb930b8, 0x00068f5d8b193226, 0x0004164e8f1ed456, 0x0005bb7db123067f}}, + {{0x0001f467c6ca62be, 0x0002c4232a5dc12c, 0x0007551dc013b087, 0x0000690c11b03bcd, 0x000740dca6d58f0e}}}, +{{{0x0000ee0752cfce4e, 0x000660dd8116fbe9, 0x00055167130fffeb, 0x0001c682b885955c, 0x000161d25fa963ea}}, + {{0x00028c570478433c, 0x0001d8502873a463, 0x0007641e7eded49c, 0x0001ecedd54cf571, 0x0002c03f5256c2b0}}, + {{0x000718757b53a47d, 0x000619e18b0f2f21, 0x0005fbdfe4c1ec04, 0x0005d798c81ebb92, 0x000699468bdbd96b}}}, +{{{0x00072f46f4dafecf, 0x0002948ffadef7a3, 0x00011ecdfdf3bc04, 0x0003c2e98ffeed25, 0x000525219a473905}}, + {{0x00053de66aa91948, 0x000045f81a599b1b, 0x0003f7a8bd214193, 0x00071d4da412331a, 0x000293e1c4e6c4a2}}, + {{0x0006134b925112e1, 0x0006bb942bb406ed, 0x000070c445c0dde2, 0x000411d822c4d7a3, 0x0005b605c447f032}}}, +{{{0x0005805920c47c89, 0x0001924771f9972c, 0x00038bbddf9fc040, 0x0001f7000092b281, 0x00024a76dcea8aeb}}, + {{0x0001fec6f0e7f04c, 0x0003cebc692c477d, 0x000077986a19a95e, 0x0006eaaaa1778b0f, 0x0002f12fef4cc5ab}}, + {{0x000522b2dfc0c740, 0x0007e8193480e148, 0x00033fd9a04341b9, 0x0003c863678a20bc, 0x0005e607b2518a43}}}, +{{{0x00031d8f6cdf1818, 0x0001f86c4b144b16, 0x00039875b8d73e9d, 0x0002fbf0d9ffa7b3, 0x0005067acab6ccdd}}, + {{0x0004431ca596cf14, 0x000015da7c801405, 0x00003c9b6f8f10b5, 0x0000346922934017, 0x000201f33139e457}}, + {{0x00027f6b08039d51, 0x0004802f8000dfaa, 0x00009692a062c525, 0x0001baea91075817, 0x000397cba8862460}}}, +{{{0x00013093f05959b2, 0x0001bd352f2ec618, 0x000075789b88ea86, 0x00061d1117ea48b9, 0x0002339d320766e6}}, + {{0x0005c3fbc81379e7, 0x00041bbc255e2f02, 0x0006a3f756998650, 0x0001297fd4e07c42, 0x000771b4022c1e1c}}, + {{0x0005d986513a2fa7, 0x00063f3a99e11b0f, 0x00028a0ecfd6b26d, 0x00053b6835e18d8f, 0x000331a189219971}}}, +{{{0x00066f45fb4f80c6, 0x0003cc38eeb9fea2, 0x000107647270db1f, 0x000710f1ea740dc8, 0x00031167c6b83bdf}}, + {{0x00012f3a9d7572af, 0x00010d00e953c4ca, 0x000603df116f2f8a, 0x00033dc276e0e088, 0x0001ac9619ff649a}}, + {{0x00033842524b1068, 0x00077dd39d30fe45, 0x000189432141a0d0, 0x000088fe4eb8c225, 0x000612436341f08b}}}, +{{{0x000541db874e898d, 0x00062d80fb841b33, 0x00003e6ef027fa97, 0x0007a03c9e9633e8, 0x00046ebe2309e5ef}}, + {{0x000349e31a2d2638, 0x0000137a7fa6b16c, 0x000681ae92777edc, 0x000222bfc5f8dc51, 0x0001522aa3178d90}}, + {{0x00002f5369614938, 0x000356e5ada20587, 0x00011bc89f6bf902, 0x000036746419c8db, 0x00045fe70f505243}}}, +{{{0x000075a6960c0b8c, 0x0006dde1c5e41b49, 0x00042e3f516da341, 0x00016a03fda8e79e, 0x000428d1623a0e39}}, + {{0x00024920c8951491, 0x000107ec61944c5e, 0x00072752e017c01f, 0x000122b7dda2e97a, 0x00016619f6db57a2}}, + {{0x00074a4401a308fd, 0x00006ed4b9558109, 0x000746f1f6a08867, 0x0004636f5c6f2321, 0x0001d81592d60bd3}}}, +{{{0x00068756a60dac5f, 0x00055d757b8aec26, 0x0003383df45f80bd, 0x0006783f8c9f96a6, 0x00020234a7789ecd}}, + {{0x0005b69f7b85c5e8, 0x00017a2d175650ec, 0x0004cc3e6dbfc19e, 0x00073e1d3873be0e, 0x0003a5f6d51b0af8}}, + {{0x00020db67178b252, 0x00073aa3da2c0eda, 0x00079045c01c70d3, 0x0001b37b15251059, 0x0007cd682353cffe}}}, +{{{0x0001a45bd887fab6, 0x00065748076dc17c, 0x0005b98000aa11a8, 0x0004a1ecc9080974, 0x0002838c8863bdc0}}, + {{0x0005cd6068acf4f3, 0x0003079afc7a74cc, 0x00058097650b64b4, 0x00047fabac9c4e99, 0x0003ef0253b2b2cd}}, + {{0x0003b0cf4a465030, 0x000022b8aef57a2d, 0x0002ad0677e925ad, 0x0004094167d7457a, 0x00021dcb8a606a82}}}, +{{{0x000004468c9d9fc8, 0x0005da8554796b8c, 0x0003b8be70950025, 0x0006d5892da6a609, 0x0000bc3d08194a31}}, + {{0x000500fabe7731ba, 0x0007cc53c3113351, 0x0007cf65fe080d81, 0x0003c5d966011ba1, 0x0005d840dbf6c6f6}}, + {{0x0006380d309fe18b, 0x0004d73c2cb8ee0d, 0x0006b882adbac0b6, 0x00036eabdddd4cbe, 0x0003a4276232ac19}}}, +{{{0x0002432c8a7084fa, 0x00047bf73ca8a968, 0x0001639176262867, 0x0005e8df4f8010ce, 0x0001ff177cea16de}}, + {{0x0000c172db447ecb, 0x0003f8c505b7a77f, 0x0006a857f97f3f10, 0x0004fcc0567fe03a, 0x0000770c9e824e1a}}, + {{0x0001d99a45b5b5fd, 0x000523674f2499ec, 0x0000f8fa26182613, 0x00058f7398048c98, 0x00039f264fd41500}}}, +{{{0x00053417dbe7e29c, 0x00054573827394f5, 0x000565eea6f650dd, 0x00042050748dc749, 0x0001712d73468889}}, + {{0x00034aabfe097be1, 0x00043bfc03253a33, 0x00029bc7fe91b7f3, 0x0000a761e4844a16, 0x00065c621272c35f}}, + {{0x000389f8ce3193dd, 0x0002d424b8177ce5, 0x000073fa0d3440cd, 0x000139020cd49e97, 0x00022f9800ab19ce}}}, +{{{0x0002368a3e9ef8cb, 0x000454aa08e2ac0b, 0x000490923f8fa700, 0x000372aa9ea4582f, 0x00013f416cd64762}}, + {{0x00029fdd9a6efdac, 0x0007c694a9282840, 0x0006f7cdeee44b3a, 0x00055a3207b25cc3, 0x0004171a4d38598c}}, + {{0x000758aa99c94c8c, 0x0005f6001700ff44, 0x0007694e488c01bd, 0x0000d5fde948eed6, 0x000508214fa574bd}}}, +{{{0x000269153ed6fe4b, 0x00072a23aef89840, 0x000052be5299699c, 0x0003a5e5ef132316, 0x00022f960ec6faba}}, + {{0x000215bb53d003d6, 0x0001179e792ca8c3, 0x0001a0e96ac840a2, 0x00022393e2bb3ab6, 0x0003a7758a4c86cb}}, + {{0x000111f693ae5076, 0x0003e3bfaa94ca90, 0x000445799476b887, 0x00024a0912464879, 0x0005d9fd15f8de7f}}}, +{{{0x000408d36d63727f, 0x0005faf8f6a66062, 0x0002bb892da8de6b, 0x000769d4f0c7e2e6, 0x000332f35914f8fb}}, + {{0x00044d2aeed7521e, 0x00050865d2c2a7e4, 0x0002705b5238ea40, 0x00046c70b25d3b97, 0x0003bc187fa47eb9}}, + {{0x00070115ea86c20c, 0x00016d88da24ada8, 0x0001980622662adf, 0x000501ebbc195a9d, 0x000450d81ce906fb}}}, +{{{0x0003b6a1a6205275, 0x0002e82791d06dcf, 0x00023d72caa93c87, 0x0005f0b7ab68aaf4, 0x0002de25d4ba6345}}, + {{0x0004d8961cae743f, 0x0006bdc38c7dba0e, 0x0007d3b4a7e1b463, 0x0000844bdee2adf3, 0x0004cbad279663ab}}, + {{0x00019024a0d71fcd, 0x00015f65115f101a, 0x0004e99067149708, 0x000119d8d1cba5af, 0x0007d7fbcefe2007}}}, +{{{0x00071e6a266b2801, 0x00009aae73e2df5d, 0x00040dd8b219b1a3, 0x000546fb4517de0d, 0x0005975435e87b75}}, + {{0x00045dc5f3c29094, 0x0003455220b579af, 0x000070c1631e068a, 0x00026bc0630e9b21, 0x0004f9cd196dcd8d}}, + {{0x000297d86a7b3768, 0x0004835a2f4c6332, 0x000070305f434160, 0x000183dd014e56ae, 0x0007ccdd084387a0}}}, +{{{0x0006422c6d260417, 0x000212904817bb94, 0x0005a319deb854f5, 0x0007a9d4e060da7d, 0x000428bd0ed61d0c}}, + {{0x000484186760cc93, 0x0007435665533361, 0x00002f686336b801, 0x0005225446f64331, 0x0003593ca848190c}}, + {{0x0003189a5e849aa7, 0x0006acbb1f59b242, 0x0007f6ef4753630c, 0x0001f346292a2da9, 0x00027398308da2d6}}}, +{{{0x00038d28435ed413, 0x0004064f19992858, 0x0007680fbef543cd, 0x0001aadd83d58d3c, 0x000269597aebe8c3}}, + {{0x00010e4c0a702453, 0x0004daafa37bd734, 0x00049f6bdc3e8961, 0x0001feffdcecdae6, 0x000572c2945492c3}}, + {{0x0007c745d6cd30be, 0x00027c7755df78ef, 0x0001776833937fa3, 0x0005405116441855, 0x0007f985498c05bc}}}, +{{{0x0001ce889f0be117, 0x00036f6a94510709, 0x0007f248720016b4, 0x0001821ed1e1cf91, 0x00076c2ec470a31f}}, + {{0x000615520fbf6363, 0x0000b9e9bf74da6a, 0x0004fe8308201169, 0x000173f76127de43, 0x00030f2653cd69b1}}, + {{0x0000c938aac10c85, 0x00041b64ed797141, 0x0001beb1c1185e6d, 0x0001ed5490600f07, 0x0002f1273f159647}}}, +{{{0x0001fc7c8ae01e11, 0x0002094d5573e8e7, 0x0005ca3cbbf549d2, 0x0004f920ecc54143, 0x0005d9e572ad85b6}}, + {{0x00008bd755a70bc0, 0x00049e3a885ce609, 0x00016585881b5ad6, 0x0003c27568d34f5e, 0x00038ac1997edc5f}}, + {{0x0006b517a751b13b, 0x0000cfd370b180cc, 0x0005377925d1f41a, 0x00034e56566008a2, 0x00022dfcd9cbfe9e}}}, +{{{0x0003d2e0c30d0cd9, 0x0003f597686671bb, 0x0000aa587eb63999, 0x0000e3c7b592c619, 0x0006b2916c05448c}}, + {{0x000459b4103be0a1, 0x00059a4b3f2d2add, 0x0007d734c8bb8eeb, 0x0002393cbe594a09, 0x0000fe9877824cde}}, + {{0x000334d10aba913b, 0x000045cdb581cfdb, 0x0005e3e0553a8f36, 0x00050bb3041effb2, 0x0004c303f307ff00}}}, +{{{0x00023bd617b28c85, 0x0006e72ee77d5a61, 0x0001a972ff174dde, 0x0003e2636373c60f, 0x0000d61b8f78b2ab}}, + {{0x000403580dd94500, 0x00048df77d92653f, 0x00038a9fe3b349ea, 0x0000ea89850aafe1, 0x000416b151ab706a}}, + {{0x0000d7efe9c136b0, 0x0001ab1c89640ad5, 0x00055f82aef41f97, 0x00046957f317ed0d, 0x000191a2af74277e}}}, +{{{0x0006f74bc53c1431, 0x0001c40e5dbbd9c2, 0x0006c8fb9cae5c97, 0x0004845c5ce1b7da, 0x0007e2e0e450b5cc}}, + {{0x00062b434f460efb, 0x000294c6c0fad3fc, 0x00068368937b4c0f, 0x0005c9f82910875b, 0x000237e7dbe00545}}, + {{0x000575ed6701b430, 0x0004d3e17fa20026, 0x000791fc888c4253, 0x0002f1ba99078ac1, 0x00071afa699b1115}}}, +{{{0x00066f9b3953b61d, 0x000555f4283cccb9, 0x0007dd67fb1960e7, 0x00014707a1affed4, 0x000021142e9c2b1c}}, + {{0x00023c1c473b50d6, 0x0003e7671de21d48, 0x000326fa5547a1e8, 0x00050e4dc25fafd9, 0x00000731fbc78f89}}, + {{0x0000c71848f81880, 0x00044bd9d8233c86, 0x0006e8578efe5830, 0x0004045b6d7041b5, 0x0004c4d6f3347e15}}}, +{{{0x0007eccfc17d1fc9, 0x0004ca280782831e, 0x0007b8337db1d7d6, 0x0005116def3895fb, 0x000193fddaaa7e47}}, + {{0x0004ddfc988f1970, 0x0004f6173ea365e1, 0x000645daf9ae4588, 0x0007d43763db623b, 0x00038bf9500a88f9}}, + {{0x0002c93c37e8876f, 0x0003431a28c583fa, 0x00049049da8bd879, 0x0004b4a8407ac11c, 0x0006a6fb99ebf0d4}}}, +{{{0x0006c1bb560855eb, 0x00071f127e13ad48, 0x0005c6b304905aec, 0x0003756b8e889bc7, 0x00075f76914a3189}}, + {{0x000122b5b6e423c6, 0x00021e50dff1ddd6, 0x00073d76324e75c0, 0x000588485495418e, 0x000136fda9f42c5e}}, + {{0x0004dfb1a305bdd1, 0x0003b3ff05811f29, 0x0006ed62283cd92e, 0x00065d1543ec52e1, 0x000022183510be8d}}}, +{{{0x000766385ead2d14, 0x0000194f8b06095e, 0x00008478f6823b62, 0x0006018689d37308, 0x0006a071ce17b806}}, + {{0x0002710143307a7f, 0x0003d88fb48bf3ab, 0x000249eb4ec18f7a, 0x000136115dff295f, 0x0001387c441fd404}}, + {{0x0003c3d187978af8, 0x0007afe1c88276ba, 0x00051df281c8ad68, 0x00064906bda4245d, 0x0003171b26aaf1ed}}}, +{{{0x0007319097564ca8, 0x0001844ebc233525, 0x00021d4543fdeee1, 0x0001ad27aaff1bd2, 0x000221fd4873cf08}}, + {{0x0005b7d8b28a47d1, 0x0002c2ee149e34c1, 0x000776f5629afc53, 0x0001f4ea50fc49a9, 0x0006c514a6334424}}, + {{0x0002204f3a156341, 0x000537414065a464, 0x00043c0c3bedcf83, 0x0005557e706ea620, 0x00048daa596fb924}}}, +{{{0x00028e665ca59cc7, 0x000165c715940dd9, 0x0000785f3aa11c95, 0x00057b98d7e38469, 0x000676dd6fccad84}}, + {{0x00061d5dc84c9793, 0x00047de83040c29e, 0x000189deb26507e7, 0x0004d4e6fadc479a, 0x00058c837fa0e8a7}}, + {{0x0001688596fc9058, 0x00066f6ad403619f, 0x0004d759a87772ef, 0x0007856e6173bea4, 0x0001c4f73f2c6a57}}}, +{{{0x00024fbd305fa0bb, 0x00040a98cc75a1cf, 0x00078ce1220a7533, 0x0006217a10e1c197, 0x000795ac80d1bf64}}, + {{0x0006706efc7c3484, 0x0006987839ec366d, 0x0000731f95cf7f26, 0x0003ae758ebce4bc, 0x00070459adb7daf6}}, + {{0x0001db4991b42bb3, 0x000469605b994372, 0x000631e3715c9a58, 0x0007e9cfefcf728f, 0x0005fe162848ce21}}}, +{{{0x0001214fe194961a, 0x0000e1ae39a9e9cb, 0x000543c8b526f9f7, 0x000119498067e91d, 0x0004789d446fc917}}, + {{0x0001852d5d7cb208, 0x00060d0fbe5ce50f, 0x0005a1e246e37b75, 0x00051aee05ffd590, 0x0002b44c043677da}}, + {{0x000487ab074eb78e, 0x0001d33b5e8ce343, 0x00013e419feb1b46, 0x0002721f565de6a4, 0x00060c52eef2bb9a}}}, +{{{0x000589bc3bfd8bf1, 0x0006f93e6aa3416b, 0x0004c0a3d6c1ae48, 0x00055587260b586a, 0x00010bc9c312ccfc}}, + {{0x0003c5c27cae6d11, 0x00036a9491956e05, 0x000124bac9131da6, 0x0003b6f7de202b5d, 0x00070d77248d9b66}}, + {{0x0002e84b3ec2a05b, 0x00069da2f03c1551, 0x00023a174661a67b, 0x000209bca289f238, 0x00063755bd3a976f}}}, +{{{0x0007a03e2ad10853, 0x000213dcc6ad36ab, 0x0001a6e240d5bdd6, 0x0007c24ffcf8fedf, 0x0000d8cc1c48bc16}}, + {{0x0007101897f1acb7, 0x0003d82cb77b07b8, 0x000684083d7769f5, 0x00052b28472dce07, 0x0002763751737c52}}, + {{0x000402d36eb419a9, 0x0007cef68c14a052, 0x0000f1255bc2d139, 0x000373e7d431186a, 0x00070c2dd8a7ad16}}}, +{{{0x000194509f6fec0e, 0x000528d8ca31acac, 0x0007826d73b8b9fa, 0x00024acb99e0f9b3, 0x0002e0fac6363948}}, + {{0x0004967db8ed7e13, 0x00015aeed02f523a, 0x0006149591d094bc, 0x000672f204c17006, 0x00032b8613816a53}}, + {{0x0007f7bee448cd64, 0x0004e10f10da0f3c, 0x0003936cb9ab20e9, 0x0007a0fc4fea6cd0, 0x0004179215c735a4}}}, +{{{0x000094e7d7dced2a, 0x000068fa738e118e, 0x00041b640a5fee2b, 0x0006bb709df019d4, 0x000700344a30cd99}}, + {{0x000633b9286bcd34, 0x0006cab3badb9c95, 0x00074e387edfbdfa, 0x00014313c58a0fd9, 0x00031fa85662241c}}, + {{0x00026c422e3622f4, 0x0000f3066a05b5f0, 0x0004e2448f0480a6, 0x000244cde0dbf095, 0x00024bb2312a9952}}}, +{{{0x0000ed1732de67c3, 0x000308c369291635, 0x00033ef348f2d250, 0x000004475ea1a1bb, 0x0000fee3e871e188}}, + {{0x00000c2af5f85c6b, 0x0000609f4cf2883f, 0x0006e86eb5a1ca13, 0x00068b44a2efccd1, 0x0000d1d2af9ffeb5}}, + {{0x00028aa132621edf, 0x00042b244caf353b, 0x00066b064cc2e08a, 0x0006bb20020cbdd3, 0x00016acd79718531}}}, +{{{0x000772af2d9b1d3d, 0x0006d486448b4e5b, 0x0002ce58dd8d18a8, 0x0001849f67503c8b, 0x000123e0ef6b9302}}, + {{0x0001c6c57887b6ad, 0x0005abf21fd7592b, 0x00050bd41253867a, 0x0003800b71273151, 0x000164ed34b18161}}, + {{0x0006d94c192fe69a, 0x0005475222a2690f, 0x000693789d86b8b3, 0x0001f5c3bdfb69dc, 0x00078da0fc61073f}}}, +{{{0x00015d28e52bc66a, 0x00030e1e0351cb7e, 0x00030a2f74b11f8c, 0x00039d120cd7de03, 0x0002d25deeb256b1}}, + {{0x000780f1680c3a94, 0x0002a35d3cfcd453, 0x000005e5cdc7ddf8, 0x0006ee888078ac24, 0x000054aa4b316b38}}, + {{0x0000468d19267cb8, 0x00038cdca9b5fbf9, 0x0001bbb05c2ca1e2, 0x0003b015758e9533, 0x000134610a6ab7da}}}, +{{{0x00038ec78df6b0fe, 0x00013caebea36a22, 0x0005ebc6e54e5f6a, 0x00032804903d0eb8, 0x0002102fdba2b20d}}, + {{0x000265e777d1f515, 0x0000f1f54c1e39a5, 0x0002f01b95522646, 0x0004fdd8db9dde6d, 0x000654878cba97cc}}, + {{0x0006e405055ce6a1, 0x0005024a35a532d3, 0x0001f69054daf29d, 0x00015d1d0d7a8bd5, 0x0000ad725db29ecb}}}, +{{{0x000267b1834e2457, 0x0006ae19c378bb88, 0x0007457b5ed9d512, 0x0003280d783d05fb, 0x0004aefcffb71a03}}, + {{0x0007bc0c9b056f85, 0x00051cfebffaffd8, 0x00044abbe94df549, 0x0007ecbbd7e33121, 0x0004f675f5302399}}, + {{0x000536360415171e, 0x0002313309077865, 0x000251444334afbc, 0x0002b0c3853756e8, 0x0000bccbb72a2a86}}}, +{{{0x0006962feab1a9c8, 0x0006aca28fb9a30b, 0x00056db7ca1b9f98, 0x00039f58497018dd, 0x0004024f0ab59d6b}}, + {{0x00055e4c50fe1296, 0x00005fdd13efc30d, 0x0001c0c6c380e5ee, 0x0003e11de3fb62a8, 0x0006678fd69108f3}}, + {{0x0006fa31636863c2, 0x00010ae5a67e42b0, 0x00027abbf01fda31, 0x000380a7b9e64fbc, 0x0002d42e2108ead4}}}, +{{{0x0005131594dfd29b, 0x0003a627e98d52fe, 0x0001154041855661, 0x00019175d09f8384, 0x000676b2608b8d2d}}, + {{0x00017b0d0f537593, 0x00016263c0c9842e, 0x0004ab827e4539a4, 0x0006370ddb43d73a, 0x000420bf3a79b423}}, + {{0x0000ba651c5b2b47, 0x0005862363701027, 0x0000c4d6c219c6db, 0x0000f03dff8658de, 0x000745d2ffa9c0cf}}}, +{{{0x00025a1e2bc9c8bd, 0x000104c8f3b037ea, 0x000405576fa96c98, 0x0002e86a88e3876f, 0x0001ae23ceb960cf}}, + {{0x0006df5721d34e6a, 0x0004f32f767a0c06, 0x0001d5abeac76e20, 0x00041ce9e104e1e4, 0x00006e15be54c1dc}}, + {{0x00025d871932994a, 0x0006b9d63b560b6e, 0x0002df2814c8d472, 0x0000fbbee20aa4ed, 0x00058ded861278ec}}}, +{{{0x00073793f266c55c, 0x0000b988a9c93b02, 0x00009b0ea32325db, 0x00037cae71c17c5e, 0x0002ff39de85485f}}, + {{0x00035ba8b6c2c9a8, 0x0001dea58b3185bf, 0x0004b455cd23bbbe, 0x0005ec19c04883f8, 0x00008ba696b531d5}}, + {{0x00053eeec3efc57a, 0x0002fa9fe9022efd, 0x000699c72c138154, 0x00072a751ebd1ff8, 0x000120633b4947cf}}}, +{{{0x0004987891610042, 0x00079d9d7f5d0172, 0x0003c293013b9ec4, 0x0000c2b85f39caca, 0x00035d30a99b4d59}}, + {{0x000531474912100a, 0x0005afcdf7c0d057, 0x0007a9e71b788ded, 0x0005ef708f3b0c88, 0x00007433be3cb393}}, + {{0x000144c05ce997f4, 0x0004960b8a347fef, 0x0001da11f15d74f7, 0x00054fac19c0fead, 0x0002d873ede7af6d}}}, +{{{0x0002316443373409, 0x0005de95503b22af, 0x000699201beae2df, 0x0003db5849ff737a, 0x0002e773654707fa}}, + {{0x000202e14e5df981, 0x0002ea02bc3eb54c, 0x00038875b2883564, 0x0001298c513ae9dd, 0x0000543618a01600}}, + {{0x0002bdf4974c23c1, 0x0004b3b9c8d261bd, 0x00026ae8b2a9bc28, 0x0003068210165c51, 0x0004b1443362d079}}}, +{{{0x0004b7c7b66e1f7a, 0x0004bea185efd998, 0x0004fabc711055f8, 0x0001fb9f7836fe38, 0x000582f446752da6}}, + {{0x000454e91c529ccb, 0x00024c98c6bf72cf, 0x0000486594c3d89a, 0x0007ae13a3d7fa3c, 0x00017038418eaf66}}, + {{0x00017bd320324ce4, 0x00051489117898c6, 0x0001684d92a0410b, 0x0006e4d90f78c5a7, 0x0000c2a1c4bcda28}}}, +{{{0x0005c7d06f1f0447, 0x0007db70f80b3a49, 0x0006cb4a3ec89a78, 0x00043be8ad81397d, 0x0007c558bd1c6f64}}, + {{0x0004814869bd6945, 0x0007b7c391a45db8, 0x00057316ac35b641, 0x000641e31de9096a, 0x0005a6a9b30a314d}}, + {{0x00041524d396463d, 0x0001586b449e1a1d, 0x0002f17e904aed8a, 0x0007e1d2861d3c8e, 0x0000404a5ca0afba}}}, +{{{0x000740070aa743d6, 0x00016b64cbdd1183, 0x00023f4b7b32eb43, 0x000319aba58235b3, 0x00046395bfdcadd9}}, + {{0x00049e1b2a416fd1, 0x00051c6a0b316c57, 0x000575a59ed71bdc, 0x00074c021a1fec1e, 0x00039527516e7f8e}}, + {{0x0007db2d1a5d9a9c, 0x00079a200b85422f, 0x000355bfaa71dd16, 0x00000b77ea5f78aa, 0x00076579a29e822d}}}, +{{{0x00068e7e49c02a17, 0x00045795346fe8b6, 0x000089306c8f3546, 0x0006d89f6b2f88f6, 0x00043a384dc9e05b}}, + {{0x0004b51352b434f2, 0x0001327bd01c2667, 0x000434d73b60c8a1, 0x0003e0daa89443ba, 0x00002c514bb2a277}}, + {{0x0003d5da8bf1b645, 0x0007ded6a96a6d09, 0x0006c3494fee2f4d, 0x00002c989c8b6bd4, 0x0001160920961548}}}, +{{{0x0005166929dacfaa, 0x000190826b31f689, 0x0004f55567694a7d, 0x000705f4f7b1e522, 0x000351e125bc5698}}, + {{0x00005616369b4dcd, 0x0004ecab86ac6f47, 0x0003c60085d700b2, 0x0000213ee10dfcea, 0x0002f637d7491e6e}}, + {{0x00049b461af67bbe, 0x00075915712c3a96, 0x00069a67ef580c0d, 0x00054d38ef70cffc, 0x0007f182d06e7ce2}}}, +{{{0x00048e64ab0168ec, 0x0002a2bdb8a86f4f, 0x0007343b6b2d6929, 0x0001d804aa8ce9a3, 0x00067d4ac8c343e9}}, + {{0x00054b728e217522, 0x00069a90971b0128, 0x00051a40f2a963a3, 0x00010be9ac12a6bf, 0x00044acc043241c5}}, + {{0x00056bbb4f7a5777, 0x00029230627c238f, 0x0005ad1a122cd7fb, 0x0000dea56e50e364, 0x000556d1c8312ad7}}}, +{{{0x000740e30c8d3982, 0x0007c2b47f4682fd, 0x0005cd91b8c7dc1c, 0x00077fa790f9e583, 0x000746c6c6d1d824}}, + {{0x00006756b11be821, 0x000462147e7bb03e, 0x00026519743ebfe0, 0x000782fc59682ab5, 0x000097abe38cc8c7}}, + {{0x0001c9877ea52da4, 0x0002b37b83a86189, 0x000733af49310da5, 0x00025e81161c04fb, 0x000577e14a34bee8}}}, +{{{0x000268ac61a73b0a, 0x000206f234bebe1c, 0x0005b403a7cbebe8, 0x0007a160f09f4135, 0x00060fa7ee96fd78}}, + {{0x0006cebebd4dd72b, 0x000340c1e442329f, 0x00032347ffd1a93f, 0x00014a89252cbbe0, 0x000705304b8fb009}}, + {{0x00051d354d296ec6, 0x0007cbf5a63b16c7, 0x0002f50bb3cf0c14, 0x0001feb385cac65a, 0x00021398e0ca1635}}}, +{{{0x0005058a382b33f3, 0x000175a91816913e, 0x0004f6cdb96b8ae8, 0x00017347c9da81d2, 0x0005aa3ed9d95a23}}, + {{0x0000aaf9b4b75601, 0x00026b91b5ae44f3, 0x0006de808d7ab1c8, 0x0006a769675530b0, 0x0001bbfb284e98f7}}, + {{0x000777e9c7d96561, 0x00028e58f006ccac, 0x000541bbbb2cac49, 0x0003e63282994cec, 0x0004a07e14e5e895}}}, +{{{0x000412cb980df999, 0x0005e78dd8ee29dc, 0x000171dff68c575d, 0x0002015dd2f6ef49, 0x0003f0bac391d313}}, + {{0x000358cdc477a49b, 0x0003cc88fe02e481, 0x000721aab7f4e36b, 0x0000408cc9469953, 0x00050af7aed84afa}}, + {{0x0007de0115f65be5, 0x0004242c21364dc9, 0x0006b75b64a66098, 0x0000033c0102c085, 0x0001921a316baebd}}}, +{{{0x00022f7edfb870fc, 0x000569eed677b128, 0x00030937dcb0a5af, 0x000758039c78ea1b, 0x0006458df41e273a}}, + {{0x0002ad9ad9f3c18b, 0x0005ec1638339aeb, 0x0005703b6559a83b, 0x0003fa9f4d05d612, 0x0007b049deca062c}}, + {{0x0003e37a35444483, 0x000661fdb7d27b99, 0x000317761dd621e4, 0x0007323c30026189, 0x0006093dccbc2950}}}, +{{{0x00039a8585e0706d, 0x0003167ce72663fe, 0x00063d14ecdb4297, 0x0004be21dcf970b8, 0x00057d1ea084827a}}, + {{0x0006eebe6084034b, 0x0006cf01f70a8d7b, 0x0000b41a54c6670a, 0x0006c84b99bb55db, 0x0006e3180c98b647}}, + {{0x0002b6e7a128b071, 0x0005b27511755dcf, 0x00008584c2930565, 0x00068c7bda6f4159, 0x000363e999ddd97b}}}, +{{{0x000043c135ee1fc4, 0x0002a11c9919f2d5, 0x0006334cc25dbacd, 0x000295da17b400da, 0x00048ee9b78693a0}}, + {{0x000048dce24baec6, 0x0002b75795ec05e3, 0x0003bfa4c5da6dc9, 0x0001aac8659e371e, 0x000231f979bc6f9b}}, + {{0x0001de4bcc2af3c6, 0x00061fc411a3eb86, 0x00053ed19ac12ec0, 0x000209dbc6b804e0, 0x000079bfa9b08792}}}, +{{{0x00003a51da300df4, 0x000467b52b561c72, 0x0004d5920210e590, 0x0000ca769e789685, 0x000038c77f684817}}, + {{0x0001ed80a2d54245, 0x00070efec72a5e79, 0x00042151d42a822d, 0x0001b5ebb6d631e8, 0x0001ef4fb1594706}}, + {{0x00065ee65b167bec, 0x000052da19b850a9, 0x0000408665656429, 0x0007ab39596f9a4c, 0x000575ee92a4a0bf}}}, +{{{0x000080908a182fcf, 0x0000532913b7ba98, 0x0003dccf78c385c3, 0x00068002dd5eaba9, 0x00043d4e7112cd3f}}, + {{0x0006bc450aa4d801, 0x0004f4a6773b0ba8, 0x0006241b0b0ebc48, 0x00040d9c4f1d9315, 0x000200a1e7e382f5}}, + {{0x0005b967eaf93ac5, 0x000360acca580a31, 0x0001c65fd5c6f262, 0x00071c7f15c2ecab, 0x000050eca52651e4}}}, +{{{0x00031ade453f0c9c, 0x0003dfee07737868, 0x000611ecf7a7d411, 0x0002637e6cbd64f6, 0x0004b0ee6c21c58f}}, + {{0x0004397660e668ea, 0x0007c2a75692f2f5, 0x0003b29e7e6c66ef, 0x00072ba658bcda9a, 0x0006151c09fa131a}}, + {{0x00055c0dfdf05d96, 0x000405569dcf475e, 0x00005c5c277498bb, 0x00018588d95dc389, 0x0001fef24fa800f0}}}, +{{{0x000653fb1aa73196, 0x000607faec8306fa, 0x0004e85ec83e5254, 0x00009f56900584fd, 0x000544d49292fc86}}, + {{0x0002aff530976b86, 0x0000d85a48c0845a, 0x000796eb963642e0, 0x00060bee50c4b626, 0x00028005fe6c8340}}, + {{0x0007ba9f34528688, 0x000284a20fb42d5d, 0x0003652cd9706ffe, 0x0006fd7baddde6b3, 0x00072e472930f316}}}, +{{{0x0005208c9781084f, 0x00016468a1dc24d2, 0x0007bf780ac540a8, 0x0001a67eced75301, 0x0005a9d2e8c2733a}}, + {{0x0003f635d32a7627, 0x0000cbecacde00fe, 0x0003411141eaa936, 0x00021c1e42f3cb94, 0x0001fee7f000fe06}}, + {{0x000305da03dbf7e5, 0x0001228699b7aeca, 0x00012a23b2936bc9, 0x0002a1bda56ae6e9, 0x00000f94051ee040}}}, +{{{0x00056b23c3d330b2, 0x00037608e360d1a6, 0x00010ae0f3c8722e, 0x000086d9b618b637, 0x00007d79c7e8beab}}, + {{0x000793bb07af9753, 0x0001e7b6ecd4fafd, 0x00002c7b1560fb43, 0x0002296734cc5fb7, 0x00047b7ffd25dd40}}, + {{0x0003fb9cbc08dd12, 0x00075c3dd85370ff, 0x00047f06fe2819ac, 0x0005db06ab9215ed, 0x0001c3520a35ea64}}}, +{{{0x000253a6bccba34a, 0x000427070433701a, 0x00020b8e58f9870e, 0x000337c861db00cc, 0x0001c3d05775d0ee}}, + {{0x00006f40216bc059, 0x0003a2579b0fd9b5, 0x00071c26407eec8c, 0x00072ada4ab54f0b, 0x00038750c3b66d12}}, + {{0x0006f1409422e51a, 0x0007856bbece2d25, 0x00013380a72f031c, 0x00043e1080a7f3ba, 0x0000621e2c7d3304}}}, +{{{0x000060cc8259838d, 0x000038d3f35b95f3, 0x00056078c243a923, 0x0002de3293241bb2, 0x0000007d6097bd3a}}, + {{0x00061796b0dbf0f3, 0x00073c2f9c32d6f5, 0x0006aa8ed1537ebe, 0x00074e92c91838f4, 0x0005d8e589ca1002}}, + {{0x00071d950842a94b, 0x00046b11e5c7d817, 0x0005478bbecb4f0d, 0x0007c3054b0a1c5d, 0x0001583d7783c1cb}}}, +{{{0x0006a2ef5da27ae1, 0x00028aace02e9d9d, 0x00002459e965f0e8, 0x0007b864d3150933, 0x000252a5f2e81ed8}}, + {{0x00034704cc9d28c7, 0x0003dee598b1f200, 0x00016e1c98746d9e, 0x0004050b7095afdf, 0x0004958064e83c55}}, + {{0x000094265066e80d, 0x0000a60f918d61a5, 0x0000444bf7f30fde, 0x0001c40da9ed3c06, 0x000079c170bd843b}}}, +{{{0x0006ece464fa6fff, 0x0003cc40bca460a0, 0x0006e3a90afb8d0c, 0x0005801abca11228, 0x0006dec05e34ac9f}}, + {{0x0006cd50c0d5d056, 0x0005b7606ae779ba, 0x00070fbd226bdda1, 0x0005661e53391ff9, 0x0006768c0d7317b8}}, + {{0x000625e5f155c1b3, 0x0004f32f6f723296, 0x0005ac980105efce, 0x00017a61165eee36, 0x00051445e14ddcd5}}}, +{{{0x00002b4b3b144951, 0x0005688977966aea, 0x00018e176e399ffd, 0x0002e45c5eb4938b, 0x00013186f31e3929}}, + {{0x000147ab2bbea455, 0x0001f240f2253126, 0x0000c3de9e314e89, 0x00021ea5a4fca45f, 0x00012e990086e4fd}}, + {{0x000496b37fdfbb2e, 0x0003c2439d5f3e21, 0x00016e60fe7e6a4d, 0x0004d7ef889b621d, 0x00077b2e3f05d3e9}}}, +{{{0x0007a9c59c2ec4de, 0x0007e9f09e79652d, 0x0006a3e422f22d86, 0x0002ae8e3b836c8b, 0x00063b795fc7ad32}}, + {{0x0000639c12ddb0a4, 0x0006180490cd7ab3, 0x0003f3918297467c, 0x00074568be1781ac, 0x00007a195152e095}}, + {{0x00068f02389e5fc8, 0x000059f1bc877506, 0x000504990e410cec, 0x00009bd7d0feaee2, 0x0003e8fe83d032f0}}}, +{{{0x000315b90570a294, 0x00060ce108a925f1, 0x0006eff61253c909, 0x000003ef0e2d70b0, 0x00075ba3b797fac4}}, + {{0x00004c8de8efd13c, 0x0001c67c06e6210e, 0x000183378f7f146a, 0x00064352ceaed289, 0x00022d60899a6258}}, + {{0x0001dbc070cdd196, 0x00016d8fb1534c47, 0x000500498183fa2a, 0x00072f59c423de75, 0x0000904d07b87779}}}, +{{{0x00061fd4ddba919c, 0x0007d8e991b55699, 0x00061b31473cc76c, 0x0007039631e631d6, 0x00043e2143fbc1dd}}, + {{0x00022d6648f940b9, 0x000197a5a1873e86, 0x000207e4c41a54bc, 0x0005360b3b4bd6d0, 0x0006240aacebaf72}}, + {{0x0004749c5ba295a0, 0x00037946fa4b5f06, 0x000724c5ab5a51f1, 0x00065633789dd3f3, 0x00056bdaf238db40}}}, +{{{0x0002b9e3f53533eb, 0x0002add727a806c5, 0x00056955c8ce15a3, 0x00018c4f070a290e, 0x0001d24a86d83741}}, + {{0x0000d36cc19d3bb2, 0x0006ec4470d72262, 0x0006853d7018a9ae, 0x0003aa3e4dc2c8eb, 0x00003aa31507e1e5}}, + {{0x00047648ffd4ce1f, 0x00060a9591839e9d, 0x000424d5f38117ab, 0x00042cc46912c10e, 0x00043b261dc9aeb4}}}, +{{{0x00031e1988bb79bb, 0x0007b82f46b3bcab, 0x0000f7a8ce827b41, 0x0005e15816177130, 0x000326055cf5b276}}, + {{0x00013d8b6c951364, 0x0004c0017e8f632a, 0x00053e559e53f9c4, 0x0004b20146886eea, 0x00002b4d5e242940}}, + {{0x000155cb28d18df2, 0x0000c30d9ca11694, 0x0002090e27ab3119, 0x000208624e7a49b6, 0x00027a6c809ae5d3}}}, +{{{0x0006ebcd1f0db188, 0x00074ceb4b7d1174, 0x0007d56168df4f5c, 0x0000bf79176fd18a, 0x0002cb67174ff60a}}, + {{0x0004270ac43d6954, 0x0002ed4cd95659a5, 0x00075c0db37528f9, 0x0002ccbcfd2c9234, 0x000221503603d8c2}}, + {{0x0006cdf9390be1d0, 0x00008e519c7e2b3d, 0x000253c3d2a50881, 0x00021b41448e333d, 0x0007b1df4b73890f}}}, +{{{0x0002f2e0b3b2a224, 0x0000c56aa22c1c92, 0x0005fdec39f1b278, 0x0004c90af5c7f106, 0x00061fcef2658fc5}}, + {{0x0006221807f8f58c, 0x0003fa92813a8be5, 0x0006da98c38d5572, 0x00001ed95554468f, 0x00068698245d352e}}, + {{0x00015d852a18187a, 0x000270dbb59afb76, 0x0007db120bcf92ab, 0x0000e7a25d714087, 0x00046cf4c473daf0}}}, +{{{0x000525ed9ec4e5f9, 0x000022d20660684c, 0x0007972b70397b68, 0x0007a03958d3f965, 0x00029387bcd14eb5}}, + {{0x00046ea7f1498140, 0x00070725690a8427, 0x0000a73ae9f079fb, 0x0002dd924461c62b, 0x0001065aae50d8cc}}, + {{0x00044525df200d57, 0x0002d7f94ce94385, 0x00060d00c170ecb7, 0x00038b0503f3d8f0, 0x00069a198e64f1ce}}}, +{{{0x0002b2e0d91a78bc, 0x0003990a12ccf20c, 0x000141c2e11f2622, 0x0000dfcefaa53320, 0x0007369e6a92493a}}, + {{0x00014434dcc5caed, 0x0002c7909f667c20, 0x00061a839d1fb576, 0x0004f23800cabb76, 0x00025b2697bd267f}}, + {{0x00073ffb13986864, 0x0003282bb8f713ac, 0x00049ced78f297ef, 0x0006697027661def, 0x0001420683db54e4}}}, +{{{0x0000bd1e249dd197, 0x00000bcb1820568f, 0x0002eab1718830d4, 0x000396fd816997e6, 0x00060b63bebf508a}}, + {{0x0006bb6fc1cc5ad0, 0x000532c8d591669d, 0x0001af794da86c33, 0x0000e0e9d86d24d3, 0x00031e83b4161d08}}, + {{0x0000c7129e062b4f, 0x0001e526415b12fd, 0x000461a0fd27923d, 0x00018badf670a5b7, 0x00055cf1eb62d550}}}, +{{{0x0001101065c23d58, 0x0005aa1290338b0f, 0x0003157e9e2e7421, 0x0000ea712017d489, 0x000669a656457089}}, + {{0x0006b5e37df58c52, 0x0003bcf33986c60e, 0x00044fb8835ceae7, 0x000099dec18e71a4, 0x0001a56fbaa62ba0}}, + {{0x00066b505c9dc9ec, 0x000774ef86e35287, 0x0004d1d944c0955e, 0x00052e4c39d72b20, 0x00013c4836799c58}}}, +{{{0x00025d465ab3e1b9, 0x0000f8fe27ec2847, 0x0002d6e6dbf04f06, 0x0003038cfc1b3276, 0x00066f80c93a637b}}, + {{0x0004fb6a5d8bd080, 0x00058ae34908589b, 0x0003954d977baf13, 0x000413ea597441dc, 0x00050bdc87dc8e5b}}, + {{0x000537836edfe111, 0x0002be02357b2c0d, 0x0006dcee58c8d4f8, 0x0002d732581d6192, 0x0001dd56444725fd}}}, +{{{0x00047ff83362127d, 0x00008e39af82b1f4, 0x000488322ef27dab, 0x0001973738a2a1a4, 0x0000e645912219f7}}, + {{0x0007e60008bac89a, 0x00023d5c387c1852, 0x00079e5df1f533a8, 0x0002e6f9f1c5f0cf, 0x0003a3a450f63a30}}, + {{0x00072f31d8394627, 0x00007bd294a200f1, 0x000665be00e274c6, 0x00043de8f1b6368b, 0x000318c8d9393a9a}}}, +{{{0x00045d032afffe19, 0x00012fe49b6cde4e, 0x00021663bc327cf1, 0x00018a5e4c69f1dd, 0x000224c7c679a1d5}}, + {{0x00069e29ab1dd398, 0x00030685b3c76bac, 0x000565cf37f24859, 0x00057b2ac28efef9, 0x000509a41c325950}}, + {{0x00006edca6f925e9, 0x00068c8363e677b8, 0x00060cfa25e4fbcf, 0x0001c4c17609404e, 0x00005bff02328a11}}}, +{{{0x0002137023cae00b, 0x00015a3599eb26c6, 0x0000687221512b3c, 0x000253cb3a0824e9, 0x000780b8cc3fa2a4}}, + {{0x0001a0dd0dc512e4, 0x00010894bf5fcd10, 0x00052949013f9c37, 0x0001f50fba4735c7, 0x000576277cdee01a}}, + {{0x00038abc234f305f, 0x0007a280bbc103de, 0x000398a836695dfe, 0x0003d0af41528a1a, 0x0005ff418726271b}}}, +{{{0x0006080c1789db9d, 0x0004be7cef1ea731, 0x0002f40d769d8080, 0x00035f7d4c44a603, 0x000106a03dc25a96}}, + {{0x000347e813b69540, 0x00076864c21c3cbb, 0x0001e049dbcd74a8, 0x0005b4d60f93749c, 0x00029d4db8ca0a0c}}, + {{0x00050aaf333353d0, 0x0004b59a613cbb35, 0x000223dfc0e19a76, 0x00077d1e2bb2c564, 0x0004ab38a51052cb}}}, +{{{0x00042b256768d593, 0x0002e88459427b4f, 0x00002b3876630701, 0x00034878d405eae5, 0x00029cdd1adc088a}}, + {{0x0007d1ef5fddc09c, 0x0007beeaebb9dad9, 0x000058d30ba0acfb, 0x0005cd92eab5ae90, 0x0003041c6bb04ed2}}, + {{0x0002f2f9d956e148, 0x0006b3e6ad65c1fe, 0x0005b00972b79e5d, 0x00053d8d234c5daf, 0x000104bbd6814049}}}, +{{{0x0000fd3168f1ed67, 0x0001bb0de7784a3e, 0x00034bcb78b20477, 0x0000a4a26e2e2182, 0x0005be8cc57092a7}}, + {{0x00059a5fd67ff163, 0x0003a998ead0352b, 0x000083c95fa4af9a, 0x0006fadbfc01266f, 0x000204f2a20fb072}}, + {{0x00043b3d30ebb079, 0x000357aca5c61902, 0x0005b570c5d62455, 0x00030fb29e1e18c7, 0x0002570fb17c2791}}}, +{{{0x0002367f2cb61575, 0x0006c39ac04d87df, 0x0006d4958bd7e5bd, 0x000566f4638a1532, 0x0003dcb65ea53030}}, + {{0x0006a9550bb8245a, 0x000511f20a1a2325, 0x00029324d7239bee, 0x0003343cc37516c4, 0x000241c5f91de018}}, + {{0x0000172940de6caa, 0x0006045b2e67451b, 0x00056c07463efcb3, 0x0000728b6bfe6e91, 0x00008420edd5fcdf}}}, +{{{0x000720ab8362fa4a, 0x00029c4347cdd9bf, 0x0000e798ad5f8463, 0x0004fef18bcb0bfe, 0x0000d9a53efbc176}}, + {{0x0000c34e04f410ce, 0x000344edc0d0a06b, 0x0006e45486d84d6d, 0x00044e2ecb3863f5, 0x00004d654f321db8}}, + {{0x0005c116ddbdb5d5, 0x0006d1b4bba5abcf, 0x0004d28a48a5537a, 0x00056b8e5b040b99, 0x0004a7a4f2618991}}}, +{{{0x000718025fb15f95, 0x00068d6b8371fe94, 0x0003804448f7d97c, 0x00042466fe784280, 0x00011b50c4cddd31}}, + {{0x0003b291af372a4b, 0x00060e3028fe4498, 0x0002267bca4f6a09, 0x000719eec242b243, 0x0004a96314223e0e}}, + {{0x0000274408a4ffd6, 0x0007d382aedb34dd, 0x00040acfc9ce385d, 0x000628bb99a45b1e, 0x0004f4bce4dce6bc}}}, +{{{0x0007ce5ae2242584, 0x0002d25eb153d4e3, 0x0003a8f3d09ba9c9, 0x0000f3690d04eb8e, 0x00073fcdd14b71c0}}, + {{0x0002616ec49d0b6f, 0x0001f95d8462e61c, 0x0001ad3e9b9159c6, 0x00079ba475a04df9, 0x0003042cee561595}}, + {{0x00067079449bac41, 0x0005b79c4621484f, 0x00061069f2156b8d, 0x0000eb26573b10af, 0x000389e740c9a9ce}}}, +{{{0x0004b3ae34dcb9ce, 0x00047c691a15ac9f, 0x000318e06e5d400c, 0x0003c422d9f83eb1, 0x00061545379465a6}}, + {{0x000578f6570eac28, 0x000644f2339c3937, 0x00066e47b7956c2c, 0x00034832fe1f55d0, 0x00025c425e5d6263}}, + {{0x000606a6f1d7de6e, 0x0004f1c0c46107e7, 0x000229b1dcfbe5d8, 0x0003acc60a7b1327, 0x0006539a08915484}}}, +{{{0x00021f74c3d2f773, 0x000024b88d08bd3a, 0x0006e678cf054151, 0x00043631272e747c, 0x00011c5e4aac5cd1}}, + {{0x0004dbd414bb4a19, 0x0007930849f1dbb8, 0x000329c5a466caf0, 0x0006c824544feb9b, 0x0000f65320ef019b}}, + {{0x0006d1b1cafde0c6, 0x000462c76a303a90, 0x0003ca4e693cff9b, 0x0003952cd45786fd, 0x0004cabc7bdec330}}}, +{{{0x00069624089c0a2e, 0x0000075fc8e70473, 0x00013e84ab1d2313, 0x0002c10bedf6953b, 0x000639b93f0321c8}}, + {{0x0007788f3f78d289, 0x0005942809b3f811, 0x0005973277f8c29c, 0x000010f93bc5fe67, 0x0007ee498165acb2}}, + {{0x000508e39111a1c3, 0x000290120e912f7a, 0x0001cbf464acae43, 0x00015373e9576157, 0x0000edf493c85b60}}}, +{{{0x00048158599b5a68, 0x0001fd75bc41d5d9, 0x0002d9fc1fa95d3c, 0x0007da27f20eba11, 0x000403b92e3019d4}}, + {{0x0007c4d284764113, 0x0007fefebf06acec, 0x00039afb7a824100, 0x0001b48e47e7fd65, 0x00004c00c54d1dfa}}, + {{0x00022f818b465cf8, 0x000342901dff09b8, 0x00031f595dc683cd, 0x00037a57745fd682, 0x000355bb12ab2617}}}, +{{{0x000664cc7493bbf4, 0x00033d94761874e3, 0x0000179e1796f613, 0x0001890535e2867d, 0x0000f9b8132182ec}}, + {{0x0001dac75a8c7318, 0x0003b679d5423460, 0x0006b8fcb7b6400e, 0x0006c73783be5f9d, 0x0007518eaf8e052a}}, + {{0x000059c41b7f6c32, 0x00079e8706531491, 0x0006c747643cb582, 0x0002e20c0ad494e4, 0x00047c3871bbb175}}}, +{{{0x0004539771ec4f48, 0x0007b9318badca28, 0x00070f19afe016c5, 0x0004ee7bb1608d23, 0x00000b89b8576469}}, + {{0x00065d50c85066b0, 0x0006167453361f7c, 0x00006ba3818bb312, 0x0006aff29baa7522, 0x00008fea02ce8d48}}, + {{0x0005dd7668deead0, 0x0004096d0ba47049, 0x0006275997219114, 0x00029bda8a67e6ae, 0x000473829a74f75d}}}, +{{{0x0002da754679c418, 0x0003164c31be105a, 0x00011fac2b98ef5f, 0x00035a1aaf779256, 0x0002078684c4833c}}, + {{0x0001533aad3902c9, 0x0001dde06b11e47b, 0x000784bed1930b77, 0x0001c80a92b9c867, 0x0006c668b4d44e4d}}, + {{0x0000cf217a78820c, 0x00065024e7d2e769, 0x00023bb5efdda82a, 0x00019fd4b632d3c6, 0x0007411a6054f8a4}}}, +{{{0x00059d32b99dc86d, 0x0006ac075e22a9ac, 0x00030b9220113371, 0x00027fd9a638966e, 0x0007c136574fb813}}, + {{0x0002e53d18b175b4, 0x00033e7254204af3, 0x0003bcd7d5a1c4c5, 0x0004c7c22af65d0f, 0x0001ec9a872458c3}}, + {{0x0006a4d400a2509b, 0x000041791056971c, 0x000655d5866e075c, 0x0002302bf3e64df8, 0x0003add88a5c7cd6}}}, +{{{0x00015770b635dcf2, 0x00059ecd83f79571, 0x0002db461c0b7fbd, 0x00073a42a981345f, 0x000249929fccc879}}, + {{0x000298d459393046, 0x00030bfecb3d90b8, 0x0003d9b8ea3df8d6, 0x0003900e96511579, 0x00061ba1131a406a}}, + {{0x0000a0f116959029, 0x0005974fd7b1347a, 0x0001e0cc1c08edad, 0x000673bdf8ad1f13, 0x0005620310cbbd8e}}}, +{{{0x000193434934d643, 0x0000d4a2445eaa51, 0x0007d0708ae76fe0, 0x00039847b6c3c7e1, 0x00037676a2a4d9d9}}, + {{0x0006b5f477e285d6, 0x0004ed91ec326cc8, 0x0006d6537503a3fd, 0x000626d3763988d5, 0x0007ec846f3658ce}}, + {{0x00068f3f1da22ec7, 0x0006ed8039a2736b, 0x0002627ee04c3c75, 0x0006ea90a647e7d1, 0x0006daaf723399b9}}}, +{{{0x00027562eb3dbe47, 0x000291d7b4170be7, 0x0005d1ca67dfa8e1, 0x0002a88061f298a2, 0x0001304e9e71627d}}, + {{0x000304bfacad8ea2, 0x000502917d108b07, 0x000043176ca6dd0f, 0x0005d5158f2c1d84, 0x0002b5449e58eb3b}}, + {{0x000014d26adc9cfe, 0x0007f1691ba16f13, 0x0005e71828f06eac, 0x000349ed07f0fffc, 0x0004468de2d7c2dd}}}, +{{{0x0003355e9419469e, 0x0001847bb8ea8a37, 0x0001fe6588cf9b71, 0x0006b1c9d2db6b22, 0x0006cce7c6ffb44b}}, + {{0x0002d8c6f86307ce, 0x0006286ba1850973, 0x0005e9dcb08444d4, 0x0001a96a543362b2, 0x0005da6427e63247}}, + {{0x0004c688deac22ca, 0x0006f775c3ff0352, 0x000565603ee419bb, 0x0006544456c61c46, 0x00058f29abfe79f2}}}, +{{{0x0006cfab8de73e68, 0x0003e6efced4bd21, 0x0000056609500dbe, 0x00071b7824ad85df, 0x000577629c4a7f41}}, + {{0x000264bf710ecdf6, 0x000708c58527896b, 0x00042ceae6c53394, 0x0004381b21e82b6a, 0x0006af93724185b4}}, + {{0x0000024509c6a888, 0x0002696ab12e6644, 0x0000cca27f4b80d8, 0x0000c7c1f11b119e, 0x000701f25bb0caec}}}, +{{{0x0000b0f8e4616ced, 0x0001d3c4b50fb875, 0x0002f29673dc0198, 0x0005f4b0f1830ffa, 0x0002e0c92bfbdc40}}, + {{0x0000f6d97cbec113, 0x0004ce97fb7c93a3, 0x000139835a11281b, 0x000728907ada9156, 0x000720a5bc050955}}, + {{0x000709439b805a35, 0x0006ec48557f8187, 0x00008a4d1ba13a2c, 0x000076348a0bf9ae, 0x0000e9b9cbb144ef}}}, +{{{0x0002d48ffb5720ad, 0x00057b7f21a1df77, 0x0005550effba0645, 0x0005ec6a4098a931, 0x000221104eb3f337}}, + {{0x00069bd55db1beee, 0x0006e14e47f731bd, 0x0001a35e47270eac, 0x00066f225478df8e, 0x000366d44191cfd3}}, + {{0x00041743f2bc8c14, 0x000796b0ad8773c7, 0x00029fee5cbb689b, 0x000122665c178734, 0x0004167a4e6bc593}}}, +{{{0x00039d2876f62700, 0x000001cecd1d6c87, 0x0007f01a11747675, 0x0002350da5a18190, 0x0007938bb7e22552}}, + {{0x00062665f8ce8fee, 0x00029d101ac59857, 0x0004d93bbba59ffc, 0x00017b7897373f17, 0x00034b33370cb7ed}}, + {{0x000591ee8681d6cc, 0x00039db0b4ea79b8, 0x000202220f380842, 0x0002f276ba42e0ac, 0x0001176fc6e2dfe6}}}, +{{{0x00076cd05b9c619b, 0x00069654b0901695, 0x0007a53710b77f27, 0x00079a1ea7d28175, 0x00008fc3a4c677d5}}, + {{0x0000e28949770eb8, 0x0005559e88147b72, 0x00035e1e6e63ef30, 0x00035b109aa7ff6f, 0x0001f6a3e54f2690}}, + {{0x0004c199d30734ea, 0x0006c622cb9acc14, 0x0005660a55030216, 0x000068f1199f11fb, 0x0004f2fad0116b90}}}, +{{{0x0006b24194ae4e54, 0x0002230afded8897, 0x00023412617d5071, 0x0003d5d30f35969b, 0x000445484a4972ef}}, + {{0x0004d91db73bb638, 0x00055f82538112c5, 0x0006d85a279815de, 0x000740b7b0cd9cf9, 0x0003451995f2944e}}, + {{0x0002fcd09fea7d7c, 0x000296126b9ed22a, 0x0004a171012a05b2, 0x0001db92c74d5523, 0x00010b89ca604289}}}, +{{{0x000147499718289c, 0x0000a48a67e4c7ab, 0x00030fbc544bafe3, 0x0000c701315fe58a, 0x00020b878d577b75}}, + {{0x000141be5a45f06e, 0x0005adb38becaea7, 0x0003fd46db41f2bb, 0x0006d488bbb5ce39, 0x00017d2d1d9ef0d4}}, + {{0x0002af18073f3e6a, 0x00033aea420d24fe, 0x000298008bf4ff94, 0x0003539171db961e, 0x00072214f63cc65c}}}, +{{{0x00037f405307a693, 0x0002e5e66cf2b69c, 0x0005d84266ae9c53, 0x0005e4eb7de853b9, 0x0005fdf48c58171c}}, + {{0x0005b7b9f43b29c9, 0x000149ea31eea3b3, 0x0004be7713581609, 0x0002d87960395e98, 0x0001f24ac855a154}}, + {{0x000608328e9505aa, 0x00022182841dc49a, 0x0003ec96891d2307, 0x0002f363fff22e03, 0x00000ba739e2ae39}}}, +{{{0x000698de5c8790d6, 0x000268b8545beb25, 0x0006d2648b96fedf, 0x00047988ad1db07c, 0x00003283a3e67ad7}}, + {{0x000426f5ea88bb26, 0x00033092e77f75c8, 0x0001a53940d819e7, 0x0001132e4f818613, 0x00072297de7d518d}}, + {{0x00041dc7be0cb939, 0x0001b16c66100904, 0x0000a24c20cbc66d, 0x0004a2e9efe48681, 0x00005e1296846271}}}, +{{{0x0002eeb32d9c495a, 0x00079e25772f9750, 0x0006d747833bbf23, 0x0006cdd816d5d749, 0x00039c00c9c13698}}, + {{0x0007bbc8242c4550, 0x00059a06103b35b7, 0x0007237e4af32033, 0x000726421ab3537a, 0x00078cf25d38258c}}, + {{0x00066b8e31489d68, 0x000573857e10e2b5, 0x00013be816aa1472, 0x00041964d3ad4bf8, 0x000006b52076b3ff}}}, +{{{0x0000cfe19d95781c, 0x000312cc621c453c, 0x000145ace6da077c, 0x0000912bef9ce9b8, 0x0004d57e3443bc76}}, + {{0x00037e16b9ce082d, 0x0001882f57853eb9, 0x0007d29eacd01fc5, 0x0002e76a59b5e715, 0x0007de2e9561a9f7}}, + {{0x0000d4f4b6a55ecb, 0x0007ebb0bb733bce, 0x0007ba6a05200549, 0x0004f6ede4e22069, 0x0006b2a90af1a602}}}, +{{{0x0003f4fc9ae61e97, 0x0003bc07ebfa2d24, 0x0003b744b55cd4a0, 0x00072553b25721f3, 0x0005fd8f4e9d12d3}}, + {{0x0003f3245bb2d80a, 0x0000e5f720f36efd, 0x0003b9cccf60c06d, 0x000084e323f37926, 0x000465812c8276c2}}, + {{0x0003beb22a1062d9, 0x0006a7063b82c9a8, 0x0000a5a35dc197ed, 0x0003c80c06a53def, 0x00005b32c2b1cb16}}}, +{{{0x00005eccd24da8fd, 0x000580bbfdf07918, 0x0007e73586873c6a, 0x00074ceddf77f93e, 0x0003b5556a37b471}}, + {{0x0004a42c7ad58195, 0x0005c8667e799eff, 0x00002e5e74c850a1, 0x0003f0db614e869a, 0x00031771a4856730}}, + {{0x0000c524e14dd482, 0x000283457496c656, 0x0000ad6bcfb6cd45, 0x000375d1e8b02414, 0x0004fc079d27a733}}}, +{{{0x000138b089bf2f7f, 0x0004a05bfd34ea39, 0x000203914c925ef5, 0x0007497fffe04e3c, 0x000124567cecaf98}}, + {{0x00048b440c86c50d, 0x000139929cca3b86, 0x0000f8f2e44cdf2f, 0x00068432117ba6b2, 0x000241170c2bae3c}}, + {{0x0001ab860ac473b4, 0x0005c0227c86a7ff, 0x00071b12bfc24477, 0x000006a573a83075, 0x0003f8612966c870}}}, +{{{0x00020cc9782a0dde, 0x00065d4e3070aab3, 0x0007bc8e31547736, 0x00009ebfb1432d98, 0x000504aa77679736}}, + {{0x0000fcfa36048d13, 0x00066e7133bbb383, 0x00064b42a8a45676, 0x0004ea6e4f9a85cf, 0x00026f57eee878a1}}, + {{0x00032cd55687efb1, 0x0004448f5e2f6195, 0x000568919d460345, 0x000034c2e0ad1a27, 0x0004041943d9dba3}}}, +{{{0x0000eeba43ebcc96, 0x000384dd5395f878, 0x0001df331a35d272, 0x000207ecfd4af70e, 0x0001420a1d976843}}, + {{0x00017743a26caadd, 0x00048c9156f9c964, 0x0007ef278d1e9ad0, 0x00000ce58ea7bd01, 0x00012d931429800d}}, + {{0x00067799d337594f, 0x00001647548f6018, 0x00057fce5578f145, 0x000009220c142a71, 0x0001b4f92314359a}}}, +{{{0x0004109d89150951, 0x000225bd2d2d47cb, 0x00057cc080e73bea, 0x0006d71075721fcb, 0x000239b572a7f132}}, + {{0x00073030a49866b1, 0x0002442be90b2679, 0x00077bd3d8947dcf, 0x0001fb55c1552028, 0x0005ff191d56f9a2}}, + {{0x0006d433ac2d9068, 0x00072bf930a47033, 0x00064facf4a20ead, 0x000365f7a2b9402a, 0x000020c526a758f3}}}, +{{{0x000034f89ed8dbbc, 0x00073b8f948d8ef3, 0x000786c1d323caab, 0x00043bd4a9266e51, 0x00002aacc4615313}}, + {{0x0001ef59f042cc89, 0x0003b1c24976dd26, 0x00031d665cb16272, 0x00028656e470c557, 0x000452cfe0a5602c}}, + {{0x0000f7a0647877df, 0x0004e1cc0f93f0d4, 0x0007ec4726ef1190, 0x0003bdd58bf512f8, 0x0004cfb7d7b304b8}}}, +{{{0x00043d6cb89b75fe, 0x0003338d5b900e56, 0x00038d327d531a53, 0x0001b25c61d51b9f, 0x00014b4622b39075}}, + {{0x000699c29789ef12, 0x00063beae321bc50, 0x000325c340adbb35, 0x000562e1a1e42bf6, 0x0005b1d4cbc434d3}}, + {{0x00032615cc0a9f26, 0x00057711b99cb6df, 0x0005a69c14e93c38, 0x0006e88980a4c599, 0x0002f98f71258592}}}, +{{{0x0004a74cb50f9e56, 0x000531d1c2640192, 0x0000c03d9d6c7fd2, 0x00057ccd156610c1, 0x0003a6ae249d806a}}, + {{0x0002ae444f54a701, 0x000615397afbc5c2, 0x00060d7783f3f8fb, 0x0002aa675fc486ba, 0x0001d8062e9e7614}}, + {{0x0002da85a9907c5a, 0x0006b23721ec4caf, 0x0004d2d3a4683aa2, 0x0007f9c6870efdef, 0x000298b8ce8aef25}}}, +{{{0x00027953eff70cb2, 0x00054f22ae0ec552, 0x00029f3da92e2724, 0x000242ca0c22bd18, 0x00034b8a8404d5ce}}, + {{0x000272ea0a2165de, 0x00068179ef3ed06f, 0x0004e2b9c0feac1e, 0x0003ee290b1b63bb, 0x0006ba6271803a7d}}, + {{0x0006ecb583693335, 0x0003ec76bfdfb84d, 0x0002c895cf56a04f, 0x0006355149d54d52, 0x00071d62bdd465e1}}}, +{{{0x0003cc28d378df80, 0x00072141f4968ca6, 0x000407696bdb6d0d, 0x0005d271b22ffcfb, 0x00074d5f317f3172}}, + {{0x0005b5dab1f75ef5, 0x0001e2d60cbeb9a5, 0x000527c2175dfe57, 0x00059e8a2b8ff51f, 0x0001c333621262b2}}, + {{0x0007e55467d9ca81, 0x0006a5653186f50d, 0x0006b188ece62df1, 0x0004c66d36844971, 0x0004aebcc4547e9d}}}, +{{{0x0000071b276d01c9, 0x0000b0d8918e025e, 0x00075beea79ee2eb, 0x0003c92984094db8, 0x0005d88fbf95a3db}}, + {{0x00008d9e7354b610, 0x00026b750b6dc168, 0x000162881e01acc9, 0x0007966df31d01a5, 0x000173bd9ddc9a1d}}, + {{0x00000f1efe5872df, 0x0005da872318256a, 0x00059ceb81635960, 0x00018cf37693c764, 0x00006e1cd13b19ea}}}, +{{{0x0000ad516f166f23, 0x000263f56d57c81a, 0x00013422384638ca, 0x0001331ff1af0a50, 0x0003080603526e16}}, + {{0x0003af629e5b0353, 0x000204f1a088e8e5, 0x00010efc9ceea82e, 0x000589863c2fa34b, 0x0007f3a6a1a8d837}}, + {{0x000644395d3d800b, 0x0002b9203dbedefc, 0x0004b18ce656a355, 0x00003f3466bc182c, 0x00030d0fded2e513}}}, +{{{0x00014d1af21233b3, 0x0001de1989b39c0b, 0x00052669dc6f6f9e, 0x00043434b28c3fc7, 0x0000a9214202c099}}, + {{0x0004971e68b84750, 0x00052ccc9779f396, 0x0003e904ae8255c8, 0x0004ecae46f39339, 0x0004615084351c58}}, + {{0x000019c0aeb9a02e, 0x0001a2c06995d792, 0x000664cbb1571c44, 0x0006ff0736fa80b2, 0x0003bca0d2895ca5}}}, +{{{0x000031bc3c5d62a4, 0x0007d9fe0f4c081e, 0x00043ed51467f22c, 0x0001e6cc0c1ed109, 0x0005631deddae8f1}}, + {{0x00008eb69ecc01bf, 0x0005b4c8912df38d, 0x0005ea7f8bc2f20e, 0x000120e516caafaf, 0x0004ea8b4038df28}}, + {{0x0005460af1cad202, 0x0000b4919dd0655d, 0x0007c4697d18c14c, 0x000231c890bba2a4, 0x00024ce0930542ca}}}, +{{{0x000090f5fd06c106, 0x0006abb1021e43fd, 0x000232bcfad711a0, 0x0003a5c13c047f37, 0x00041d4e3c28a06d}}, + {{0x0007a155fdf30b85, 0x0001c6c6e5d487f9, 0x00024be1134bdc5a, 0x0001405970326f32, 0x000549928a7324f4}}, + {{0x000632a763ee1a2e, 0x0006fa4bffbd5e4d, 0x0005fd35a6ba4792, 0x0007b55e1de99de8, 0x000491b66dec0dcf}}}, +{{{0x0005b13dc7ea32a7, 0x00018fc2db73131e, 0x0007e3651f8f57e3, 0x00025656055fa965, 0x00008f338d0c85ee}}, + {{0x00004a8ed0da64a1, 0x0005ecfc45096ebe, 0x0005edee93b488b2, 0x0005b3c11a51bc8f, 0x0004cf6b8b0b7018}}, + {{0x0003a821991a73bd, 0x00003be6418f5870, 0x0001ddc18eac9ef0, 0x00054ce09e998dc2, 0x000530d4a82eb078}}}, +{{{0x00043630e1f94825, 0x0004d1956a6b4009, 0x000213fe2df8b5e0, 0x00005ce3a41191e6, 0x00065ea753f10177}}, + {{0x000173456c9abf9e, 0x0007892015100dad, 0x00033ee14095fecb, 0x0006ad95d67a0964, 0x0000db3e7e00cbfb}}, + {{0x0006fc3ee2096363, 0x0007ec36b96d67ac, 0x000510ec6a0758b1, 0x0000ed87df022109, 0x00002a4ec1921e1a}}}, +{{{0x0006259a3b24b8a2, 0x000188b5f4170b9c, 0x000681c0dee15deb, 0x0004dfe665f37445, 0x0003d143c5112780}}, + {{0x00006162f1cf795f, 0x000324ddcafe5eb9, 0x000018d5e0463218, 0x0007e78b9092428e, 0x00036d12b5dec067}}, + {{0x0005279179154557, 0x00039f8f0741424d, 0x00045e6eb357923d, 0x00042c9b5edb746f, 0x0002ef517885ba82}}}, +{{{0x0007974e8c58aedc, 0x0007757e083488c6, 0x000601c62ae7bc8b, 0x00045370c2ecab74, 0x0002f1b78fab143a}}, + {{0x0006bffb305b2f51, 0x0005b112b2d712dd, 0x00035774974fe4e2, 0x00004af87a96e3a3, 0x00057968290bb3a0}}, + {{0x0002b8430a20e101, 0x0001a49e1d88fee3, 0x00038bbb47ce4d96, 0x0001f0e7ba84d437, 0x0007dc43e35dc2aa}}}, +{{{0x00066665887dd9c3, 0x000629760a6ab0b2, 0x000481e6c7243e6c, 0x000097e37046fc77, 0x0007ef72016758cc}}, + {{0x00002a5c273e9718, 0x00032bc9dfb28b4f, 0x00048df4f8d5db1a, 0x00054c87976c028f, 0x000044fb81d82d50}}, + {{0x000718c5a907e3d9, 0x0003b9c98c6b383b, 0x000006ed255eccdc, 0x0006976538229a59, 0x0007f79823f9c30d}}}, +{{{0x0004d239a3b513e8, 0x00029723f51b1066, 0x000642f4cf04d9c3, 0x0004da095aa09b7a, 0x0000a4e0373d784d}}, + {{0x00041ff068f587ba, 0x0001c00a191bcd53, 0x0007b56f9c209e25, 0x0003781e5fccaabe, 0x00064a9b0431c06d}}, + {{0x0003d6a15b7d2919, 0x00041aa75046a5d6, 0x000691751ec2d3da, 0x00023638ab6721c4, 0x000071a7d0ace183}}}, +{{{0x00072daac887ba0b, 0x0000b7f4ac5dda60, 0x0003bdda2c0498a4, 0x00074e67aa180160, 0x0002c3bcc7146ea7}}, + {{0x0004355220e14431, 0x0000e1362a283981, 0x0002757cd8359654, 0x0002e9cd7ab10d90, 0x0007c69bcf761775}}, + {{0x0000d7eb04e8295f, 0x0004a5ea1e6fa0fe, 0x00045e635c436c60, 0x00028ef4a8d4d18b, 0x0006f5a9a7322aca}}}, +{{{0x0001000c2f41c6c5, 0x0000219fdf737174, 0x000314727f127de7, 0x0007e5277d23b81e, 0x000494e21a2e147a}}, + {{0x0001d4eba3d944be, 0x0000100f15f3dce5, 0x00061a700e367825, 0x0005922292ab3d23, 0x00002ab9680ee8d3}}, + {{0x00048a85dde50d9a, 0x0001c1f734493df4, 0x00047bdb64866889, 0x00059a7d048f8eec, 0x0006b5d76cbea46b}}}, +{{{0x0007556cec0cd994, 0x0005eb9a03b7510a, 0x00050ad1dd91cb71, 0x0001aa5780b48a47, 0x0000ae333f685277}}, + {{0x000141171e782522, 0x0006806d26da7c1f, 0x0003f31d1bc79ab9, 0x00009f20459f5168, 0x00016fb869c03dd3}}, + {{0x0006199733b60962, 0x00069b157c266511, 0x00064740f893f1ca, 0x00003aa408fbf684, 0x0003f81e38b8f70d}}}, +{{{0x00010fcc7ed9affe, 0x0004248cb0e96ff2, 0x0004311c115172e2, 0x0004c9d41cbf6925, 0x00050510fc104f50}}, + {{0x00037f355f17c824, 0x00007ae85334815b, 0x0007e3abddd2e48f, 0x00061eeabe1f45e5, 0x0000ad3e2d34cded}}, + {{0x00040fc5336e249d, 0x0003386639fb2de1, 0x0007bbf871d17b78, 0x00075f796b7e8004, 0x000127c158bf0fa1}}}, +{{{0x00017c422e9879a2, 0x00028a5946c8fec3, 0x00053ab32e912b77, 0x0007b44da09fe0a5, 0x000354ef87d07ef4}}, + {{0x00028fc4ae51b974, 0x00026e89bfd2dbd4, 0x0004e122a07665cf, 0x0007cab1203405c3, 0x0004ed82479d167d}}, + {{0x0003b52260c5d975, 0x00079d6836171fdc, 0x0007d994f140d4bb, 0x0001b6c404561854, 0x000302d92d205392}}}, +{{{0x0003c1a2bca4283d, 0x00023430c7bb2f02, 0x0001a3ea1bb58bc2, 0x0007265763de5c61, 0x00010e5d3b76f1ca}}, + {{0x00046fb6e4e0f177, 0x00053497ad5265b7, 0x0001ebdba01386fc, 0x0000302f0cb36a3c, 0x0000edc5f5eb426d}}, + {{0x0003bfd653da8e67, 0x000584953ec82a8a, 0x00055e288fa7707b, 0x0005395fc3931d81, 0x00045b46c51361cb}}}, +{{{0x00002abf314f7fa1, 0x000391d19e8a1528, 0x0006a2fa13895fc7, 0x00009d8eddeaa591, 0x0002177bfa36dcb7}}, + {{0x00054ddd8a7fe3e4, 0x0002cecc41c619d3, 0x00043a6562ac4d91, 0x0004efa5aca7bdd9, 0x0005c1c0aef32122}}, + {{0x00001bbcfa79db8f, 0x0003d84beb3666e1, 0x00020c921d812204, 0x0002dd843d3b32ce, 0x0004ae619387d8ab}}}, +{{{0x0003f6aa5344a32e, 0x00069683680f11bb, 0x00004c3581f623aa, 0x000701af5875cba5, 0x0001a00d91b17bf3}}, + {{0x00017e44985bfb83, 0x00054e32c626cc22, 0x000096412ff38118, 0x0006b241d61a246a, 0x00075685abe5ba43}}, + {{0x00060933eb61f2b2, 0x0005193fe92a4dd2, 0x0003d995a550f43e, 0x0003556fb93a883d, 0x000135529b623b0e}}}, +{{{0x0000dbd7add1d518, 0x000119f823e2231e, 0x000451d66e5e7de2, 0x000500c39970f838, 0x00079b5b81a65ca3}}, + {{0x000716bce22e83fe, 0x00033d0130b83eb8, 0x0000952abad0afac, 0x000309f64ed31b8a, 0x0005972ea051590a}}, + {{0x0004ac20dc8f7811, 0x00029589a9f501fa, 0x0004d810d26a6b4a, 0x0005ede00d96b259, 0x0004f7e9c95905f3}}}, +{{{0x00074bbc5781302e, 0x00073135bb81ec4c, 0x0007ef671b61483c, 0x0007264614ccd729, 0x00031993ad92e638}}, + {{0x0000443d355299fe, 0x00039b7d7d5aee39, 0x000692519a2f34ec, 0x0006e4404924cf78, 0x0001942eec4a144a}}, + {{0x00045319ae234992, 0x0002219d47d24fb5, 0x0004f04488b06cf6, 0x00053aaa9e724a12, 0x0002a0a65314ef9c}}}, +{{{0x0007937ff7f927c2, 0x0000c2fa14c6a5b6, 0x000556bddb6dd07c, 0x0006f6acc179d108, 0x0004cf6e218647c2}}, + {{0x00061acd3c1c793a, 0x00058b46b78779e6, 0x0003369aacbe7af2, 0x000509b0743074d4, 0x000055dc39b6dea1}}, + {{0x0001227cc28d5bb6, 0x00078ee9bff57623, 0x00028cb2241f893a, 0x00025b541e3c6772, 0x000121a307710aa2}}}, +{{{0x00035d5e9f034a97, 0x000126069785bc9b, 0x0005474ec7854ff0, 0x000296a302a348ca, 0x000333fc76c7a40e}}, + {{0x0001713ec77483c9, 0x0006f70572d5facb, 0x00025ef34e22ff81, 0x00054d944f141188, 0x000527bb94a6ced3}}, + {{0x0005992a995b482e, 0x00078dc707002ac7, 0x0005936394d01741, 0x0004fba4281aef17, 0x0006b89069b20a7a}}}, +{{{0x0002a0416270220d, 0x00075f248b69d025, 0x0001cbbc16656a27, 0x0005b9ffd6e26728, 0x00023bc2103aa73e}}, + {{0x0002fa8cb5c7db77, 0x000718e6982aa810, 0x00039e95f81a1a1b, 0x0005e794f3646cfb, 0x0000473d308a7639}}, + {{0x0006792603589e05, 0x000248db9892595d, 0x000006a53cad2d08, 0x00020d0150f7ba73, 0x000102f73bfde043}}}, +{{{0x0000b9ab7f5745c6, 0x0005caf0f8d21d63, 0x0007debea408ea2b, 0x00009edb93896d16, 0x00036597d25ea5c0}}, + {{0x0004dae0b5511c9a, 0x0005257fffe0d456, 0x00054108d1eb2180, 0x000096cc0f9baefa, 0x0003f6bd725da4ea}}, + {{0x00058d7b106058ac, 0x0003cdf8d20bee69, 0x00000a4cb765015e, 0x00036832337c7cc9, 0x0007b7ecc19da60d}}}, +{{{0x0002373c695c690d, 0x0004c0c8520dcf18, 0x000384af4b7494b9, 0x0004ab4a8ea22225, 0x0004235ad7601743}}, + {{0x00064a51a77cfa9b, 0x00029cf470ca0db5, 0x0004b60b6e0898d9, 0x00055d04ddffe6c7, 0x00003bedc661bf5c}}, + {{0x0000cb0d078975f5, 0x000292313e530c4b, 0x00038dbb9124a509, 0x000350d0655a11f1, 0x0000e7ce2b0cdf06}}}, +{{{0x0004643ac48c85a3, 0x0006878c2735b892, 0x0003a53523f4d877, 0x0003a504ed8bee9d, 0x000666e0a5d8fb46}}, + {{0x0006fedfd94b70f9, 0x0002383f9745bfd4, 0x0004beae27c4c301, 0x00075aa4416a3f3f, 0x000615256138aece}}, + {{0x0003f64e4870cb0d, 0x00061548b16d6557, 0x0007a261773596f3, 0x0007724d5f275d3a, 0x0007f0bc810d514d}}}, +{{{0x00006ba426f4136f, 0x0003cafc0606b720, 0x000518f0a2359cda, 0x0005fae5e46feca7, 0x0000d1f8dbcf8eed}}, + {{0x00049dad737213a0, 0x000745dee5d31075, 0x0007b1a55e7fdbe2, 0x0005ba988f176ea1, 0x0001d3a907ddec5a}}, + {{0x000693313ed081dc, 0x0005b0a366901742, 0x00040c872ca4ca7e, 0x0006f18094009e01, 0x00000011b44a31bf}}}, +{{{0x0007a06c3fc66c0c, 0x0001c9bac1ba47fb, 0x00023935c575038e, 0x0003f0bd71c59c13, 0x0003ac48d916e835}}, + {{0x00061f696a0aa75c, 0x00038b0a57ad42ca, 0x0001e59ab706fdc9, 0x00001308d46ebfcd, 0x00063d988a2d2851}}, + {{0x00020753afbd232e, 0x00071fbb1ed06002, 0x00039cae47a4af3a, 0x0000337c0b34d9c2, 0x00033fad52b2368a}}}, +{{{0x000649c6c5e41e16, 0x00060667eee6aa80, 0x0004179d182be190, 0x000653d9567e6979, 0x00016c0f429a256d}}, + {{0x0004c8d0c422cfe8, 0x000760b4275971a5, 0x0003da95bc1cad3d, 0x0000f151ff5b7376, 0x0003cc355ccb90a7}}, + {{0x00069443903e9131, 0x00016f4ac6f9dd36, 0x0002ea4912e29253, 0x0002b4643e68d25d, 0x000631eaf426bae7}}}, +{{{0x00010410da66fe9f, 0x00024d82dcb4d67d, 0x0003e6fe0e17752d, 0x0004dade1ecbb08f, 0x0005599648b1ea91}}, + {{0x000175b9a3700de8, 0x00077c5f00aa48fb, 0x0003917785ca0317, 0x00005aa9b2c79399, 0x000431f2c7f665f8}}, + {{0x00026344858f7b19, 0x0005f43d4a295ac0, 0x000242a75c52acd4, 0x0005934480220d10, 0x0007b04715f91253}}}, +{{{0x0005bd28acf6ae43, 0x00016fab8f56907d, 0x0007acb11218d5f2, 0x00041fe02023b4db, 0x00059b37bf5c2f65}}, + {{0x0006c280c4e6bac6, 0x0003ada3b361766e, 0x00042fe5125c3b4f, 0x000111d84d4aac22, 0x00048d0acfa57cde}}, + {{0x000726e47dabe671, 0x0002ec45e746f6c1, 0x0006580e53c74686, 0x0005eda104673f74, 0x00016234191336d3}}}, +{{{0x000499def6267ff6, 0x00076e858108773c, 0x000693cac5ddcb29, 0x00000311d00a9ff4, 0x0002cdfdfecd5d05}}, + {{0x00019cd61ff38640, 0x000060c6c4b41ba9, 0x00075cf70ca7366f, 0x000118a8f16c011e, 0x0004a25707a203b9}}, + {{0x0007668a53f6ed6a, 0x000303ba2e142556, 0x0003880584c10909, 0x0004fe20000a261d, 0x0005721896d248e4}}}, +{{{0x00065517fd181bae, 0x0003e5772c76816d, 0x000019189640898a, 0x0001ed2a84de7499, 0x000578edd74f63c1}}, + {{0x00055091a1d0da4e, 0x0004f6bfc7c1050b, 0x00064e4ecd2ea9be, 0x00007eb1f28bbe70, 0x00003c935afc4b03}}, + {{0x000276c6492b0c3d, 0x00009bfc40bf932e, 0x000588e8f11f330b, 0x0003d16e694dc26e, 0x0003ec2ab590288c}}}, +{{{0x0000d27be4d87bb9, 0x00056c27235db434, 0x00072e6e0ea62d37, 0x0005674cd06ee839, 0x0002dd5c25a200fc}}, + {{0x00013a09ae32d1cb, 0x0003e81eb85ab4e4, 0x00007aaca43cae1f, 0x00062f05d7526374, 0x0000e1bf66c6adba}}, + {{0x0003d5e9792c887e, 0x000319724dabbc55, 0x0002b97c78680800, 0x0007afdfdd34e6dd, 0x000730548b35ae88}}}, +{{{0x000551a3cba8b8ee, 0x0003b6422be2d886, 0x000630e1419689bc, 0x0004653b07a7a955, 0x0003043443b411db}}, + {{0x0003094ba1d6e334, 0x0006e126a7e3300b, 0x000089c0aefcfbc5, 0x0002eea11f836583, 0x000585a2277d8784}}, + {{0x00025f8233d48962, 0x0006bd8f04aff431, 0x0004f907fd9a6312, 0x00040fd3c737d29b, 0x0007656278950ef9}}}, +{{{0x0003cf59d51fc8c0, 0x0007a0a0d6de4718, 0x00055c3a3e6fb74b, 0x000353135f884fd5, 0x0003f4160a8c1b84}}, + {{0x000073a3ea86cf9d, 0x0006e0e2abfb9c2e, 0x00060e2a38ea33ee, 0x00030b2429f3fe18, 0x00028bbf484b613f}}, + {{0x00012f5c6f136c7c, 0x0000fedba237de4c, 0x000779bccebfab44, 0x0003aea93f4d6909, 0x0001e79cb358188f}}}, +{{{0x000436c3eef7e3f1, 0x0007ffd3c21f0026, 0x0003e77bf20a2da9, 0x000418bffc8472de, 0x00065d7951b3a3b3}}, + {{0x000153d8f5e08181, 0x00008533bbdb2efd, 0x0001149796129431, 0x00017a6e36168643, 0x000478ab52d39d1f}}, + {{0x0006a4d39252d159, 0x000790e35900ecd4, 0x00030725bf977786, 0x00010a5c1635a053, 0x00016d87a411a212}}}, +{{{0x00057e5a42066215, 0x0001a18b44983677, 0x0003e652de1e6f8f, 0x0006532be02ed8eb, 0x00028f87c8165f38}}, + {{0x0004d5e2d54e0583, 0x0002e5d7b33f5f74, 0x0003a5de3f887ebf, 0x0006ef24bd6139b7, 0x0001f990b577a5a6}}, + {{0x00044ead1be8f7d6, 0x0005759d4f31f466, 0x0000378149f47943, 0x00069f3be32b4f29, 0x00045882fe1534d6}}}, +{{{0x0001345d757983d6, 0x000222f54234cccd, 0x0001784a3d8adbb4, 0x00036ebeee8c2bcc, 0x000688fe5b8f626f}}, + {{0x00049929943c6fe4, 0x0004347072545b15, 0x0003226bced7e7c5, 0x00003a134ced89df, 0x0007dcf843ce405f}}, + {{0x0000d6484a4732c0, 0x0007b94ac6532d92, 0x0005771b8754850f, 0x00048dd9df1461c8, 0x0006739687e73271}}}, +{{{0x00002014385675a6, 0x0006155fb53d1def, 0x00037ea32e89927c, 0x000059a668f5a82e, 0x00046115aba1d4dc}}, + {{0x0005cc9dc80c1ac0, 0x000683671486d4cd, 0x00076f5f1a5e8173, 0x0006d5d3f5f9df4a, 0x0007da0b8f68d7e7}}, + {{0x00071953c3b5da76, 0x0006642233d37a81, 0x0002c9658076b1bd, 0x0005a581e63010ff, 0x0005a5f887e83674}}}, +{{{0x000301cf70a13d11, 0x0002a6a1ba1891ec, 0x0002f291fb3f3ae0, 0x00021a7b814bea52, 0x0003669b656e44d1}}, + {{0x000628d3a0a643b9, 0x00001cd8640c93d2, 0x0000b7b0cad70f2c, 0x0003864da98144be, 0x00043e37ae2d5d1c}}, + {{0x00063f06eda6e133, 0x000233342758070f, 0x000098e0459cc075, 0x0004df5ead6c7c1b, 0x0006a21e6cd4fd5e}}}, +{{{0x0006170a3046e65f, 0x0005401a46a49e38, 0x00020add5561c4a8, 0x0007abb4edde9e46, 0x000586bf9f1a195f}}, + {{0x000129126699b2e3, 0x0000ee11a2603de8, 0x00060ac2f5c74c21, 0x00059b192a196808, 0x00045371b07001e8}}, + {{0x0003088d5ef8790b, 0x00038c2126fcb4db, 0x000685bae149e3c3, 0x0000bcd601a4e930, 0x0000eafb03790e52}}}, +{{{0x000555c13748042f, 0x0004d041754232c0, 0x000521b430866907, 0x0003308e40fb9c39, 0x000309acc675a02c}}, + {{0x0000805e0f75ae1d, 0x000464cc59860a28, 0x000248e5b7b00bef, 0x0005d99675ef8f75, 0x00044ae3344c5435}}, + {{0x000289b9bba543ee, 0x0003ab592e28539e, 0x00064d82abcdd83a, 0x0003c78ec172e327, 0x00062d5221b7f946}}}, +{{{0x0004299c18d0936d, 0x0005914183418a49, 0x00052a18c721aed5, 0x0002b151ba82976d, 0x0005c0efde4bc754}}, + {{0x0005d4263af77a3c, 0x00023fdd2289aeb0, 0x0007dc64f77eb9ec, 0x00001bd28338402c, 0x00014f29a5383922}}, + {{0x00017edc25b2d7f5, 0x00037336a6081bee, 0x0007b5318887e5c3, 0x00049f6d491a5be1, 0x0005e72365c7bee0}}}, +{{{0x0003fc074571217f, 0x0003a0d29b2b6aeb, 0x00006478ccdde59d, 0x00055e4d051bddfa, 0x00077f1104c47b4e}}, + {{0x000339062f08b33e, 0x0004bbf3e657cfb2, 0x00067af7f56e5967, 0x0004dbd67f9ed68f, 0x00070b20555cb734}}, + {{0x000113c555112c4c, 0x0007535103f9b7ca, 0x000140ed1d9a2108, 0x00002522333bc2af, 0x0000e34398f4a064}}}, +{{{0x000522d93ecebde8, 0x000024f045e0f6cf, 0x00016db63426cfa1, 0x0001b93a1fd30fd8, 0x0005e5405368a362}}, + {{0x00030b093e4b1928, 0x0001ce7e7ec80312, 0x0004e575bdf78f84, 0x00061f7a190bed39, 0x0006f8aded6ca379}}, + {{0x0000123dfdb7b29a, 0x0004344356523c68, 0x00079a527921ee5f, 0x00074bfccb3e817e, 0x000780de72ec8d3d}}}, +{{{0x00028545089ae7bc, 0x0001e38fe9a0c15c, 0x00012046e0e2377b, 0x0006721c560aa885, 0x0000eb28bf671928}}, + {{0x0007eaf300f42772, 0x0005455188354ce3, 0x0004dcca4a3dcbac, 0x0003d314d0bfebcb, 0x0001defc6ad32b58}}, + {{0x0003be1aef5195a7, 0x0006f22f62bdb5eb, 0x00039768b8523049, 0x00043394c8fbfdbd, 0x000467d201bf8dd2}}}, +{{{0x0006919a74ef4fad, 0x00059ed4611452bf, 0x000691ec04ea09ef, 0x0003cbcb2700e984, 0x00071c43c4f5ba3c}}, + {{0x0006f4bd567ae7a9, 0x00065ac89317b783, 0x00007d3b20fd8932, 0x000000f208326916, 0x0002ef9c5a5ba384}}, + {{0x00056df6fa9e74cd, 0x00079c95e4cf56df, 0x0007be643bc609e2, 0x000149c12ad9e878, 0x0005a758ca390c5f}}}, +{{{0x00072710d9462495, 0x00025aafaa007456, 0x0002d21f28eaa31b, 0x00017671ea005fd0, 0x0002dbae244b3eb7}}, + {{0x0000918b1d61dc94, 0x0000d350260cd19c, 0x0007a2ab4e37b4d9, 0x00021fea735414d7, 0x0000a738027f639d}}, + {{0x00074a2f57ffe1cc, 0x0001bc3073087301, 0x0007ec57f4019c34, 0x00034e082e1fa524, 0x0002698ca635126a}}}, +{{{0x0005318832b0ba78, 0x0006f24b9ff17cec, 0x0000a47f30e060c7, 0x00058384540dc8d0, 0x0001fb43dcc49cae}}, + {{0x0005702f5e3dd90e, 0x00031c9a4a70c5c7, 0x000136a5aa78fc24, 0x0001992f3b9f7b01, 0x0003c004b0c4afa3}}, + {{0x000146ac06f4b82b, 0x0004b500d89e7355, 0x0003351e1c728a12, 0x00010b9f69932fe3, 0x0006b43fd01cd1fd}}}, +{{{0x00075d4b4697c544, 0x00011be1fff7f8f4, 0x000119e16857f7e1, 0x00038a14345cf5d5, 0x0005a68d7105b52f}}, + {{0x000742583e760ef3, 0x00073dc1573216b8, 0x0004ae48fdd7714a, 0x0004f85f8a13e103, 0x00073420b2d6ff0d}}, + {{0x0004f6cb9e851e06, 0x000278c4471895e5, 0x0007efcdce3d64e4, 0x00064f6d455c4b4c, 0x0003db5632fea34b}}}, +{{{0x0006ee2bf75dd9d8, 0x0006c72ceb34be8d, 0x000679c9cc345ec7, 0x0007898df96898a4, 0x00004321adf49d75}}, + {{0x000190b1829825d5, 0x0000e7d3513225c9, 0x0001c12be3b7abae, 0x00058777781e9ca6, 0x00059197ea495df2}}, + {{0x00016019e4e55aae, 0x00074fc5f25d209c, 0x0004566a939ded0d, 0x00066063e716e0b7, 0x00045eafdc1f4d70}}}, +{{{0x000401858045d72b, 0x000459e5e0ca2d30, 0x000488b719308bea, 0x00056f4a0d1b32b5, 0x0005a5eebc80362d}}, + {{0x00064624cfccb1ed, 0x000257ab8072b6c1, 0x0000120725676f0a, 0x0004a018d04e8eee, 0x0003f73ceea5d56d}}, + {{0x0007bfd10a4e8dc6, 0x0007c899366736f4, 0x00055ebbeaf95c01, 0x00046db060903f8a, 0x0002605889126621}}}, +{{{0x000704a68360ff04, 0x0003cecc3cde8b3e, 0x00021cd5470f64ff, 0x0006abc18d953989, 0x00054ad0c2e4e615}}, + {{0x00018e3cc676e542, 0x00026079d995a990, 0x00004a7c217908b2, 0x0001dc7603e6655a, 0x0000dedfa10b2444}}, + {{0x000367d5b82b522a, 0x0000d3f4b83d7dc7, 0x0003067f4cdbc58d, 0x00020452da697937, 0x00062ecb2baa77a9}}}, +{{{0x0005795261152b3d, 0x0007a1dbbafa3cbd, 0x0005ad31c52588d5, 0x00045f3a4164685c, 0x0002e59f919a966d}}, + {{0x00072836afb62874, 0x0000af3c2094b240, 0x0000c285297f357a, 0x0007cc2d5680d6e3, 0x00061913d5075663}}, + {{0x00062d361a3231da, 0x00065284004e01b8, 0x000656533be91d60, 0x0006ae016c00a89f, 0x0003ddbc2a131c05}}}, +{{{0x00040ff9ce5ec54b, 0x00057185e261b35b, 0x0003e254540e70a9, 0x0001b5814003e3f8, 0x00078968314ac04b}}, + {{0x000257a22796bb14, 0x0006f360fb443e75, 0x000680e47220eaea, 0x0002fcf2a5f10c18, 0x0005ee7fb38d8320}}, + {{0x0005fdcb41446a8e, 0x0005286926ff2a71, 0x0000f231e296b3f6, 0x000684a357c84693, 0x00061d0633c9bca0}}}, +{{{0x00044935ffdb2566, 0x00012f016d176c6e, 0x0004fbb00f16f5ae, 0x0003fab78d99402a, 0x0006e965fd847aed}}, + {{0x000328bcf8fc73df, 0x0003b4de06ff95b4, 0x00030aa427ba11a5, 0x0005ee31bfda6d9c, 0x0005b23ac2df8067}}, + {{0x0002b953ee80527b, 0x00055f5bcdb1b35a, 0x00043a0b3fa23c66, 0x00076e07388b820a, 0x00079b9bbb9dd95d}}}, +{{{0x000355406a3126c2, 0x00050d1918727d76, 0x0006e5ea0b498e0e, 0x0000a3b6063214f2, 0x0005065f158c9fd2}}, + {{0x00017dae8e9f7374, 0x000719f76102da33, 0x0005117c2a80ca8b, 0x00041a66b65d0936, 0x0001ba811460accb}}, + {{0x000169fb0c429954, 0x00059aedd9ecee10, 0x00039916eb851802, 0x00057917555cc538, 0x0003981f39e58a4f}}}, +{{{0x00038a7559230a93, 0x00052c1cde8ba31f, 0x0002a4f2d4745a3d, 0x00007e9d42d4a28a, 0x00038dc083705acd}}, + {{0x0005dfa56de66fde, 0x0000058809075908, 0x0006d3d8cb854a94, 0x0005b2f4e970b1e3, 0x00030f4452edcbc1}}, + {{0x00052782c5759740, 0x00053f3397d990ad, 0x0003a939c7e84d15, 0x000234c4227e39e0, 0x000632d9a1a593f2}}}, +{{{0x00036b15b807cba6, 0x0003f78a9e1afed7, 0x0000a59c2c608f1f, 0x00052bdd8ecb81b7, 0x0000b24f48847ed4}}, + {{0x0001fd11ed0c84a7, 0x000021b3ed2757e1, 0x00073e1de58fc1c6, 0x0005d110c84616ab, 0x0003a5a7df28af64}}, + {{0x0002d4be511beac7, 0x0006bda4d99e5b9b, 0x00017e6996914e01, 0x0007b1f0ce7fcf80, 0x00034fcf74475481}}}, +{{{0x0007e04c789767ca, 0x0001671b28cfb832, 0x0007e57ea2e1c537, 0x0001fbaaef444141, 0x0003d3bdc164dfa6}}, + {{0x00031dab78cfaa98, 0x0004e3216e5e54b7, 0x000249823973b689, 0x0002584984e48885, 0x0000119a3042fb37}}, + {{0x0002d89ce8c2177d, 0x0006cd12ba182cf4, 0x00020a8ac19a7697, 0x000539fab2cc72d9, 0x00056c088f1ede20}}}, +{{{0x00053d1110a86e17, 0x0006416eb65f466d, 0x00041ca6235fce20, 0x0005c3fc8a99bb12, 0x00009674c6b99108}}, + {{0x00035fac24f38f02, 0x0007d75c6197ab03, 0x00033e4bc2a42fa7, 0x0001c7cd10b48145, 0x000038b7ea483590}}, + {{0x0006f82199316ff8, 0x00005d54f1a9f3e9, 0x0003bcc5d0bd274a, 0x0005b284b8d2d5ad, 0x0006e5e31025969e}}}, +{{{0x000462f587e593fb, 0x0003d94ba7ce362d, 0x000330f9b52667b7, 0x0005d45a48e0f00a, 0x00008f5114789a8d}}, + {{0x0004fb0e63066222, 0x000130f59747e660, 0x000041868fecd41a, 0x0003105e8c923bc6, 0x0003058ad43d1838}}, + {{0x00040ffde57663d0, 0x00071445d4c20647, 0x0002653e68170f7c, 0x00064cdee3c55ed6, 0x00026549fa4efe3d}}}, +{{{0x00055a461e6bf9d6, 0x00078eeef4b02e83, 0x0001d34f648c16cf, 0x00007fea2aba5132, 0x0001926e1dc6401e}}, + {{0x00068549af3f666e, 0x00009e2941d4bb68, 0x0002e8311f5dff3c, 0x0006429ef91ffbd2, 0x0003a10dfe132ce3}}, + {{0x00074e8aea17cea0, 0x0000c743f83fbc0f, 0x0007cb03c4bf5455, 0x00068a8ba9917e98, 0x0001fa1d01d861e5}}}, +{{{0x000055947d599832, 0x000346fe2aa41990, 0x0000164c8079195b, 0x000799ccfb7bba27, 0x000773563bc6a75c}}, + {{0x0004ac00d1df94ab, 0x0003ba2101bd271b, 0x0007578988b9c4af, 0x0000f2bf89f49f7e, 0x00073fced18ee9a0}}, + {{0x0001e90863139cb3, 0x0004f8b407d9a0d6, 0x00058e24ca924f69, 0x0007a246bbe76456, 0x0001f426b701b864}}}, +{{{0x0001264c41911c01, 0x000702f44584bdf9, 0x00043c511fc68ede, 0x0000482c3aed35f9, 0x0004e1af5271d31b}}, + {{0x000635c891a12552, 0x00026aebd38ede2f, 0x00066dc8faddae05, 0x00021c7d41a03786, 0x0000b76bb1b3fa7e}}, + {{0x0000c1f97f92939b, 0x00017a88956dc117, 0x0006ee005ef99dc7, 0x0004aa9172b231cc, 0x0007b6dd61eb772a}}}, +{{{0x0005c1e850f33d92, 0x0001ec119ab9f6f5, 0x0007f16f6de663e9, 0x0007a7d6cb16dec6, 0x000703e9bceaf1d2}}, + {{0x0000abf9ab01d2c7, 0x0003880287630ae6, 0x00032eca045beddb, 0x00057f43365f32d0, 0x00053fa9b659bff6}}, + {{0x0004c8e994885455, 0x0004ccb5da9cad82, 0x0003596bc610e975, 0x0007a80c0ddb9f5e, 0x000398d93e5c4c61}}}, +{{{0x0003d16733e248f3, 0x0000e2b7e14be389, 0x00042c0ddaf6784a, 0x000589ea1fc67850, 0x00053b09b5ddf191}}, + {{0x00077c60d2e7e3f2, 0x0004061051763870, 0x00067bc4e0ecd2aa, 0x0002bb941f1373b9, 0x000699c9c9002c30}}, + {{0x0006a7235946f1cc, 0x0006b99cbb2fbe60, 0x0006d3a5d6485c62, 0x0004839466e923c0, 0x00051caf30c6fcdd}}}, +{{{0x0003a7427674e00a, 0x0006142f4f7e74c1, 0x0004cc93318c3a15, 0x0006d51bac2b1ee7, 0x0005504aa292383f}}, + {{0x0002f99a18ac54c7, 0x000398a39661ee6f, 0x000384331e40cde3, 0x0004cd15c4de19a6, 0x00012ae29c189f8e}}, + {{0x0006c0cb1f0d01cf, 0x000187469ef5d533, 0x00027138883747bf, 0x0002f52ae53a90e8, 0x0005fd14fe958eba}}}, +{{{0x00042ddf2845ab2c, 0x0006214ffd3276bb, 0x00000b8d181a5246, 0x000268a6d579eb20, 0x000093ff26e58647}}, + {{0x0002fe5ebf93cb8e, 0x000226da8acbe788, 0x00010883a2fb7ea1, 0x000094707842cf44, 0x0007dd73f960725d}}, + {{0x000524fe68059829, 0x00065b75e47cb621, 0x00015eb0a5d5cc19, 0x00005209b3929d5a, 0x0002f59bcbc86b47}}}, +{{{0x00047d429917135f, 0x0003eacfa07af070, 0x0001deab46b46e44, 0x0007a53f3ba46cdf, 0x0005458b42e2e51a}}, + {{0x0001d560b691c301, 0x0007f5bafce3ce08, 0x0004cd561614806c, 0x0004588b6170b188, 0x0002aa55e3d01082}}, + {{0x000192e60c07444f, 0x0005ae8843a21daa, 0x0006d721910b1538, 0x0003321a95a6417e, 0x00013e9004a8a768}}}, +{{{0x00058845832fcedb, 0x000135cd7f0c6e73, 0x00053ffbdfe8e35b, 0x00022f195e06e55b, 0x00073937e8814bce}}, + {{0x000600c9193b877f, 0x00021c1b8a0d7765, 0x000379927fb38ea2, 0x00070d7679dbe01b, 0x0005f46040898de9}}, + {{0x00037116297bf48d, 0x00045a9e0d069720, 0x00025af71aa744ec, 0x00041af0cb8aaba3, 0x0002cf8a4e891d5e}}}, +{{{0x0003fd8707110f67, 0x00026f8716a92db2, 0x0001cdaa1b753027, 0x000504be58b52661, 0x0002049bd6e58252}}, + {{0x0005487e17d06ba2, 0x0003872a032d6596, 0x00065e28c09348e0, 0x00027b6bb2ce40c2, 0x0007a6f7f2891d6a}}, + {{0x0001fd8d6a9aef49, 0x0007cb67b7216fa1, 0x00067aff53c3b982, 0x00020ea610da9628, 0x0006011aadfc5459}}}, +{{{0x0007926dcf95f83c, 0x00042e25120e2bec, 0x00063de96df1fa15, 0x0004f06b50f3f9cc, 0x0006fc5cc1b0b62f}}, + {{0x0006d0c802cbf890, 0x000141bfed554c7b, 0x0006dbb667ef4263, 0x00058f3126857edc, 0x00069ce18b779340}}, + {{0x00075528b29879cb, 0x00079a8fd2125a3d, 0x00027c8d4b746ab8, 0x0000f8893f02210c, 0x00015596b3ae5710}}}, +{{{0x000739d23f9179a2, 0x000632fadbb9e8c4, 0x0007c8522bfe0c48, 0x0006ed0983ef5aa9, 0x0000d2237687b5f4}}, + {{0x000731167e5124ca, 0x00017b38e8bbe13f, 0x0003d55b942f9056, 0x00009c1495be913f, 0x0003aa4e241afb6d}}, + {{0x000138bf2a3305f5, 0x0001f45d24d86598, 0x0005274bad2160fe, 0x0001b6041d58d12a, 0x00032fcaa6e4687a}}}, +{{{0x00056e8dc57d9af5, 0x0005b3be17be4f78, 0x0003bf928cf82f4b, 0x00052e55600a6f11, 0x0004627e9cefebd6}}, + {{0x0007a4732787ccdf, 0x00011e427c7f0640, 0x00003659385f8c64, 0x0005f4ead9766bfb, 0x000746f6336c2600}}, + {{0x0002f345ab6c971c, 0x000653286e63e7e9, 0x00051061b78a23ad, 0x00014999acb54501, 0x0007b4917007ed66}}}, +{{{0x0005fb5cab84b064, 0x0002513e778285b0, 0x000457383125e043, 0x0006bda3b56e223d, 0x000122ba376f844f}}, + {{0x00041b28dd53a2dd, 0x00037be85f87ea86, 0x00074be3d2a85e41, 0x0001be87fac96ca6, 0x0001d03620fe08cd}}, + {{0x000232cda2b4e554, 0x0000422ba30ff840, 0x000751e7667b43f5, 0x0006261755da5f3e, 0x00002c70bf52b68e}}}, +{{{0x0007ec4b5d0b2fbb, 0x000200e910595450, 0x000742057105715e, 0x0002f07022530f60, 0x00026334f0a409ef}}, + {{0x000532bf458d72e1, 0x00040f96e796b59c, 0x00022ef79d6f9da3, 0x000501ab67beca77, 0x0006b0697e3feb43}}, + {{0x0000f04adf62a3c0, 0x0005e0edb48bb6d9, 0x0007c34aa4fbc003, 0x0007d74e4e5cac24, 0x0001cc37f43441b2}}}, +{{{0x0007565a5cc7324f, 0x00001ca0d5244a11, 0x000116b067418713, 0x0000a57d8c55edae, 0x0006c6809c103803}}, + {{0x000656f1c9ceaeb9, 0x0007031cacad5aec, 0x0001308cd0716c57, 0x00041c1373941942, 0x0003a346f772f196}}, + {{0x00055112e2da6ac8, 0x0006363d0a3dba5a, 0x000319c98ba6f40c, 0x0002e84b03a36ec7, 0x00005911b9f6ef7c}}}, +{{{0x00039983f5df0ebb, 0x0001ea2589959826, 0x0006ce638703cdd6, 0x0006311678898505, 0x0006b3cecf9aa270}}, + {{0x0001acf3512eeaef, 0x0002639839692a69, 0x000669a234830507, 0x00068b920c0603d4, 0x000555ef9d1c64b2}}, + {{0x000770ba3b73bd08, 0x00011475f7e186d4, 0x0000251bc9892bbc, 0x00024eab9bffcc5a, 0x000675f4de133817}}}, +{{{0x000452036b1782fc, 0x00002d95b07681c5, 0x0005901cf99205b2, 0x000290686e5eecb4, 0x00013d99df70164c}}, + {{0x0007f6d93bdab31d, 0x0001f3aca5bfd425, 0x0002fa521c1c9760, 0x00062180ce27f9cd, 0x00060f450b882cd3}}, + {{0x00035ec321e5c0ca, 0x00013ae337f44029, 0x0004008e813f2da7, 0x000640272f8e0c3a, 0x0001c06de9e55eda}}}, +{{{0x00077ad6a33ec4e2, 0x000717c5dc11d321, 0x0004a114559823e4, 0x000306ce50a1e2b1, 0x0004cf38a1fec2db}}, + {{0x00052b40ff6d69aa, 0x00031b8809377ffa, 0x000536625cd14c2c, 0x000516af252e17d1, 0x00078096f8e7d32b}}, + {{0x0002aa650dfa5ce7, 0x00054916a8f19415, 0x00000dc96fe71278, 0x00055f2784e63eb8, 0x000373cad3a26091}}}, +{{{0x0004634d82c9f57c, 0x0004249268a6d652, 0x0006336d687f2ff7, 0x0004fe4f4e26d9a0, 0x0000040f3d945441}}, + {{0x0006a8fb89ddbbad, 0x00078c35d5d97e37, 0x00066e3674ef2cb2, 0x00034347ac53dd8f, 0x00021547eda5112a}}, + {{0x0005e939fd5986d3, 0x00012a2147019bdf, 0x0004c466e7d09cb2, 0x0006fa5b95d203dd, 0x00063550a334a254}}}, +{{{0x0007d6edb569cf37, 0x00060194a5dc2ca0, 0x0005af59745e10a6, 0x0007a8f53e004875, 0x0003eea62c7daf78}}, + {{0x0002584572547b49, 0x00075c58811c1377, 0x0004d3c637cc171b, 0x00033d30747d34e3, 0x00039a92bafaa7d7}}, + {{0x0004c713e693274e, 0x0006ed1b7a6eb3a4, 0x00062ace697d8e15, 0x000266b8292ab075, 0x00068436a0665c9c}}}, +{{{0x000235e8202f3f27, 0x00044c9f2eb61780, 0x000630905b1d7003, 0x0004fcc8d274ead1, 0x00017b6e7f68ab78}}, + {{0x0006d317e820107c, 0x000090815d2ca3ca, 0x00003ff1eb1499a1, 0x00023960f050e319, 0x0005373669c91611}}, + {{0x000014ab9a0e5257, 0x00009939567f8ba5, 0x0004b47b2a423c82, 0x000688d7e57ac42d, 0x0001cb4b5a678f87}}}, +{{{0x0004c06b394afc6c, 0x0004931b4bf636cc, 0x00072b60d0322378, 0x00025127c6818b25, 0x000330bca78de743}}, + {{0x0004aa62a2a007e7, 0x00061e0e38f62d6e, 0x00002f888fcc4782, 0x0007562b83f21c00, 0x0002dc0fd2d82ef6}}, + {{0x0006ff841119744e, 0x0002c560e8e49305, 0x0007254fefe5a57a, 0x00067ae2c560a7df, 0x0003c31be1b369f1}}}, +{{{0x0004864d08948aee, 0x0005d237438df61e, 0x0002b285601f7067, 0x00025dbcbae6d753, 0x000330b61134262d}}, + {{0x0000bc93f9cb4272, 0x0003f8f9db73182d, 0x0002b235eabae1c4, 0x0002ddbf8729551a, 0x00041cec1097e7d5}}, + {{0x000619d7a26d808a, 0x0003c3b3c2adbef2, 0x0006877c9eec7f52, 0x0003beb9ebe1b66d, 0x00026b44cd91f287}}}, +{{{0x000048478f387475, 0x00069397d9678a3e, 0x00067c8156c976f3, 0x0002eb4d5589226c, 0x0002c709e6c1c10a}}, + {{0x0007f29362730383, 0x0007fd7951459c36, 0x0007504c512d49e7, 0x000087ed7e3bc55f, 0x0007deb10149c726}}, + {{0x0002af6a8766ee7a, 0x00008aaa79a1d96c, 0x00042f92d59b2fb0, 0x0001752c40009c07, 0x00008e68e9ff62ce}}}, +{{{0x0005500a4bc130ad, 0x000127a17a938695, 0x00002a26fa34e36d, 0x000584d12e1ecc28, 0x0002f1f3f87eeba3}}, + {{0x000509d50ab8f2f9, 0x0001b8ab247be5e5, 0x0005d9b2e6b2e486, 0x0004faa5479a1339, 0x0004cb13bd738f71}}, + {{0x00048c75e515b64a, 0x00075b6952071ef0, 0x0005d46d42965406, 0x0007746106989f9f, 0x00019a1e353c0ae2}}}, +{{{0x00047560bafa05c3, 0x000418dcabcc2fa3, 0x00035991cecf8682, 0x00024371a94b8c60, 0x00041546b11c20c3}}, + {{0x000172cdd596bdbd, 0x0000731ddf881684, 0x00010426d64f8115, 0x00071a4fd8a9a3da, 0x000736bd3990266a}}, + {{0x00032d509334b3b4, 0x00016c102cae70aa, 0x0001720dd51bf445, 0x0005ae662faf9821, 0x000412295a2b87fa}}}, +{{{0x00019b88f57ed6e9, 0x0004cdbf1904a339, 0x00042b49cd4e4f2c, 0x00071a2e771909d9, 0x00014e153ebb52d2}}, + {{0x00055261e293eac6, 0x00006426759b65cc, 0x00040265ae116a48, 0x0006c02304bae5bc, 0x0000760bb8d195ad}}, + {{0x00061a17cde6818a, 0x00053dad34108827, 0x00032b32c55c55b6, 0x0002f9165f9347a3, 0x0006b34be9bc33ac}}}, +{{{0x00072f643a78c0b2, 0x0003de45c04f9e7b, 0x000706d68d30fa5c, 0x000696f63e8e2f24, 0x0002012c18f0922d}}, + {{0x000469656571f2d3, 0x0000aa61ce6f423f, 0x0003f940d71b27a1, 0x000185f19d73d16a, 0x00001b9c7b62e6dd}}, + {{0x000355e55ac89d29, 0x0003e8b414ec7101, 0x00039db07c520c90, 0x0006f41e9b77efe1, 0x00008af5b784e4ba}}}, +{{{0x000499dc881f2533, 0x00034ef26476c506, 0x0004d107d2741497, 0x000346c4bd6efdb3, 0x00032b79d71163a1}}, + {{0x000314d289cc2c4b, 0x00023450e2f1bc4e, 0x0000cd93392f92f4, 0x0001370c6a946b7d, 0x0006423c1d5afd98}}, + {{0x0005f8d9edfcb36a, 0x0001e6e8dcbf3990, 0x0007974f348af30a, 0x0006e6724ef19c7c, 0x000480a5efbc13e2}}}, +{{{0x0001e70b01622071, 0x0001f163b5f8a16a, 0x00056aaf341ad417, 0x0007989635d830f7, 0x00047aa27600cb7b}}, + {{0x00014ce442ce221f, 0x00018980a72516cc, 0x000072f80db86677, 0x000703331fda526e, 0x00024b31d47691c8}}, + {{0x00041eedc015f8c3, 0x0007cf8d27ef854a, 0x000289e3584693f9, 0x00004a7857b309a7, 0x000545b585d14dda}}}, +{{{0x0007275ea0d43a0f, 0x000681137dd7ccf7, 0x0001e79cbab79a38, 0x00022a214489a66a, 0x0000f62f9c332ba5}}, + {{0x0004e4d0e3b321e1, 0x0007451fe3d2ac40, 0x000666f678eea98d, 0x000038858667fead, 0x0004d22dc3e64c8d}}, + {{0x00046589d63b5f39, 0x0007eaf979ec3f96, 0x0004ebe81572b9a8, 0x00021b7f5d61694a, 0x0001c0fa01a36371}}}, +{{{0x000604b622943dff, 0x0001c899f6741a58, 0x00060219e2f232fb, 0x00035fae92a7f9cb, 0x0000fa3614f3b1ca}}, + {{0x00002b0e8c936a50, 0x0006b83b58b6cd21, 0x00037ed8d3e72680, 0x0000a037db9f2a62, 0x0004005419b1d2bc}}, + {{0x0003febdb9be82f0, 0x0005e74895921400, 0x000553ea38822706, 0x0005a17c24cfc88c, 0x0001fba218aef40a}}}, +{{{0x00049448fac8f53e, 0x00034f74c6e8356a, 0x0000ad780607dba2, 0x0007213a7eb63eb6, 0x000392e3acaa8c86}}, + {{0x000657043e7b0194, 0x0005c11b55efe9e7, 0x0007737bc6a074fb, 0x0000eae41ce355cc, 0x0006c535d13ff776}}, + {{0x000534e93e8a35af, 0x00008b10fd02c997, 0x00026ac2acb81e05, 0x00009d8c98ce3b79, 0x00025e17fe4d50ac}}}, +{{{0x00009bd71e04f676, 0x00025ac841f2a145, 0x0001a47eac823871, 0x0001a8a8c36c581a, 0x000255751442a9fb}}, + {{0x00077ff576f121a7, 0x0004e5f9b0fc722b, 0x00046f949b0d28c8, 0x0004cde65d17ef26, 0x0006bba828f89698}}, + {{0x0001bc6690fe3901, 0x000314132f5abc5a, 0x000611835132d528, 0x0005f24b8eb48a57, 0x000559d504f7f6b7}}}, +{{{0x00038378b3eb54d5, 0x0004d4aaa78f94ee, 0x0004a002e875a74d, 0x00010b851367b17c, 0x00001ab12d5807e3}}, + {{0x000091e7f6d266fd, 0x00036060ef037389, 0x00018788ec1d1286, 0x000287441c478eb0, 0x000123ea6a3354bd}}, + {{0x0005189041e32d96, 0x00005b062b090231, 0x0000c91766e7b78f, 0x0000aa0f55a138ec, 0x0004a3961e2c918a}}}, +{{{0x00043be0f8e6bba0, 0x00068fdffc614e3b, 0x0004e91dab5b3be0, 0x0003b1d4c9212ff0, 0x0002cd6bce3fb1db}}, + {{0x0007d644f3233f1e, 0x0001c69f9e02c064, 0x00036ae5e5266898, 0x00008fc1dad38b79, 0x00068aceead9bd41}}, + {{0x0004c90ef3d7c210, 0x000496f5a0818716, 0x00079cf88cc239b8, 0x0002cb9c306cf8db, 0x000595760d5b508f}}}, +{{{0x0001bfe104aa6397, 0x00011494ff996c25, 0x00064251623e5800, 0x0000d49fc5e044be, 0x000709fa43edcb29}}, + {{0x0002cbebfd022790, 0x0000b8822aec1105, 0x0004d1cfd226bccc, 0x000515b2fa4971be, 0x0002cb2c5df54515}}, + {{0x00025d8c63fd2aca, 0x0004c5cd29dffd61, 0x00032ec0eb48af05, 0x00018f9391f9b77c, 0x00070f029ecf0c81}}}, +{{{0x000307b32eed3e33, 0x0006748ab03ce8c2, 0x00057c0d9ab810bc, 0x00042c64a224e98c, 0x0000b7d5d8a6c314}}, + {{0x0002afaa5e10b0b9, 0x00061de08355254d, 0x0000eb587de3c28d, 0x0004f0bb9f7dbbd5, 0x00044eca5a2a74bd}}, + {{0x000448327b95d543, 0x0000146681e3a4ba, 0x00038714adc34e0c, 0x0004f26f0e298e30, 0x000272224512c7de}}}, +{{{0x000492af49c5342e, 0x0002365cdf5a0357, 0x00032138a7ffbb60, 0x0002a1f7d14646fe, 0x00011b5df18a44cc}}, + {{0x0003bb8a42a975fc, 0x0006f2d5b46b17ef, 0x0007b6a9223170e5, 0x000053713fe3b7e6, 0x00019735fd7f6bc2}}, + {{0x000390d042c84266, 0x0001efe32a8fdc75, 0x0006925ee7ae1238, 0x0004af9281d0e832, 0x0000fef911191df8}}} \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_dbl_p1p1.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_dbl_p1p1.S new file mode 120000 index 0000000000..bc5ab07ab9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_dbl_p1p1.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/ge25519_dbl_p1p1.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_nielsadd2.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_nielsadd2.S new file mode 100644 index 0000000000..1a8b04530d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_nielsadd2.S @@ -0,0 +1,6156 @@ +// linker define ge25519_nielsadd2 +// linker use REDMASK51 +// linker use 2P0 +// linker use 2P1234 + +# qhasm: int64 rp + +# qhasm: int64 qp + +# qhasm: input rp + +# qhasm: input qp + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 a0 + +# qhasm: int64 a1 + +# qhasm: int64 a2 + +# qhasm: int64 a3 + +# qhasm: int64 a4 + +# qhasm: stack64 a0_stack + +# qhasm: stack64 a1_stack + +# qhasm: stack64 a2_stack + +# qhasm: stack64 a3_stack + +# qhasm: stack64 a4_stack + +# qhasm: int64 b0 + +# qhasm: int64 b1 + +# qhasm: int64 b2 + +# qhasm: int64 b3 + +# qhasm: int64 b4 + +# qhasm: stack64 b0_stack + +# qhasm: stack64 b1_stack + +# qhasm: stack64 b2_stack + +# qhasm: stack64 b3_stack + +# qhasm: stack64 b4_stack + +# qhasm: int64 c0 + +# qhasm: int64 c1 + +# qhasm: int64 c2 + +# qhasm: int64 c3 + +# qhasm: int64 c4 + +# qhasm: stack64 c0_stack + +# qhasm: stack64 c1_stack + +# qhasm: stack64 c2_stack + +# qhasm: stack64 c3_stack + +# qhasm: stack64 c4_stack + +# qhasm: int64 d0 + +# qhasm: int64 d1 + +# qhasm: int64 d2 + +# qhasm: int64 d3 + +# qhasm: int64 d4 + +# qhasm: stack64 d0_stack + +# qhasm: stack64 d1_stack + +# qhasm: stack64 d2_stack + +# qhasm: stack64 d3_stack + +# qhasm: stack64 d4_stack + +# qhasm: int64 e0 + +# qhasm: int64 e1 + +# qhasm: int64 e2 + +# qhasm: int64 e3 + +# qhasm: int64 e4 + +# qhasm: stack64 e0_stack + +# qhasm: stack64 e1_stack + +# qhasm: stack64 e2_stack + +# qhasm: stack64 e3_stack + +# qhasm: stack64 e4_stack + +# qhasm: int64 f0 + +# qhasm: int64 f1 + +# qhasm: int64 f2 + +# qhasm: int64 f3 + +# qhasm: int64 f4 + +# qhasm: stack64 f0_stack + +# qhasm: stack64 f1_stack + +# qhasm: stack64 f2_stack + +# qhasm: stack64 f3_stack + +# qhasm: stack64 f4_stack + +# qhasm: int64 g0 + +# qhasm: int64 g1 + +# qhasm: int64 g2 + +# qhasm: int64 g3 + +# qhasm: int64 g4 + +# qhasm: stack64 g0_stack + +# qhasm: stack64 g1_stack + +# qhasm: stack64 g2_stack + +# qhasm: stack64 g3_stack + +# qhasm: stack64 g4_stack + +# qhasm: int64 h0 + +# qhasm: int64 h1 + +# qhasm: int64 h2 + +# qhasm: int64 h3 + +# qhasm: int64 h4 + +# qhasm: stack64 h0_stack + +# qhasm: stack64 h1_stack + +# qhasm: stack64 h2_stack + +# qhasm: stack64 h3_stack + +# qhasm: stack64 h4_stack + +# qhasm: int64 qt0 + +# qhasm: int64 qt1 + +# qhasm: int64 qt2 + +# qhasm: int64 qt3 + +# qhasm: int64 qt4 + +# qhasm: stack64 qt0_stack + +# qhasm: stack64 qt1_stack + +# qhasm: stack64 qt2_stack + +# qhasm: stack64 qt3_stack + +# qhasm: stack64 qt4_stack + +# qhasm: int64 t10 + +# qhasm: int64 t11 + +# qhasm: int64 t12 + +# qhasm: int64 t13 + +# qhasm: int64 t14 + +# qhasm: stack64 t10_stack + +# qhasm: stack64 t11_stack + +# qhasm: stack64 t12_stack + +# qhasm: stack64 t13_stack + +# qhasm: stack64 t14_stack + +# qhasm: int64 t20 + +# qhasm: int64 t21 + +# qhasm: int64 t22 + +# qhasm: int64 t23 + +# qhasm: int64 t24 + +# qhasm: stack64 t20_stack + +# qhasm: stack64 t21_stack + +# qhasm: stack64 t22_stack + +# qhasm: stack64 t23_stack + +# qhasm: stack64 t24_stack + +# qhasm: int64 rx0 + +# qhasm: int64 rx1 + +# qhasm: int64 rx2 + +# qhasm: int64 rx3 + +# qhasm: int64 rx4 + +# qhasm: int64 ry0 + +# qhasm: int64 ry1 + +# qhasm: int64 ry2 + +# qhasm: int64 ry3 + +# qhasm: int64 ry4 + +# qhasm: int64 rz0 + +# qhasm: int64 rz1 + +# qhasm: int64 rz2 + +# qhasm: int64 rz3 + +# qhasm: int64 rz4 + +# qhasm: int64 rt0 + +# qhasm: int64 rt1 + +# qhasm: int64 rt2 + +# qhasm: int64 rt3 + +# qhasm: int64 rt4 + +# qhasm: int64 mulr01 + +# qhasm: int64 mulr11 + +# qhasm: int64 mulr21 + +# qhasm: int64 mulr31 + +# qhasm: int64 mulr41 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mult + +# qhasm: int64 mulredmask + +# qhasm: stack64 mulx219_stack + +# qhasm: stack64 mulx319_stack + +# qhasm: stack64 mulx419_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2) +.globl CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2) +_CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2): +CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2): +mov %rsp,%r11 +and $31,%r11 +add $256,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: a0 = *(uint64 *)(rp + 40) +# asm 1: movq 40(a0=int64#3 +# asm 2: movq 40(a0=%rdx +movq 40(%rdi),%rdx + +# qhasm: a1 = *(uint64 *)(rp + 48) +# asm 1: movq 48(a1=int64#4 +# asm 2: movq 48(a1=%rcx +movq 48(%rdi),%rcx + +# qhasm: a2 = *(uint64 *)(rp + 56) +# asm 1: movq 56(a2=int64#5 +# asm 2: movq 56(a2=%r8 +movq 56(%rdi),%r8 + +# qhasm: a3 = *(uint64 *)(rp + 64) +# asm 1: movq 64(a3=int64#6 +# asm 2: movq 64(a3=%r9 +movq 64(%rdi),%r9 + +# qhasm: a4 = *(uint64 *)(rp + 72) +# asm 1: movq 72(a4=int64#7 +# asm 2: movq 72(a4=%rax +movq 72(%rdi),%rax + +# qhasm: b0 = a0 +# asm 1: mov b0=int64#8 +# asm 2: mov b0=%r10 +mov %rdx,%r10 + +# qhasm: b1 = a1 +# asm 1: mov b1=int64#9 +# asm 2: mov b1=%r11 +mov %rcx,%r11 + +# qhasm: b2 = a2 +# asm 1: mov b2=int64#10 +# asm 2: mov b2=%r12 +mov %r8,%r12 + +# qhasm: b3 = a3 +# asm 1: mov b3=int64#11 +# asm 2: mov b3=%r13 +mov %r9,%r13 + +# qhasm: b4 = a4 +# asm 1: mov b4=int64#12 +# asm 2: mov b4=%r14 +mov %rax,%r14 + +# qhasm: a0 += *(uint64 *) &CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: add CRYPTO_SHARED_NAMESPACE(2P0),a0_stack=stack64#8 +# asm 2: movq a0_stack=56(%rsp) +movq %rdx,56(%rsp) + +# qhasm: a1_stack = a1 +# asm 1: movq a1_stack=stack64#9 +# asm 2: movq a1_stack=64(%rsp) +movq %rcx,64(%rsp) + +# qhasm: a2_stack = a2 +# asm 1: movq a2_stack=stack64#10 +# asm 2: movq a2_stack=72(%rsp) +movq %r8,72(%rsp) + +# qhasm: a3_stack = a3 +# asm 1: movq a3_stack=stack64#11 +# asm 2: movq a3_stack=80(%rsp) +movq %r9,80(%rsp) + +# qhasm: a4_stack = a4 +# asm 1: movq a4_stack=stack64#12 +# asm 2: movq a4_stack=88(%rsp) +movq %rax,88(%rsp) + +# qhasm: b0_stack = b0 +# asm 1: movq b0_stack=stack64#13 +# asm 2: movq b0_stack=96(%rsp) +movq %r10,96(%rsp) + +# qhasm: b1_stack = b1 +# asm 1: movq b1_stack=stack64#14 +# asm 2: movq b1_stack=104(%rsp) +movq %r11,104(%rsp) + +# qhasm: b2_stack = b2 +# asm 1: movq b2_stack=stack64#15 +# asm 2: movq b2_stack=112(%rsp) +movq %r12,112(%rsp) + +# qhasm: b3_stack = b3 +# asm 1: movq b3_stack=stack64#16 +# asm 2: movq b3_stack=120(%rsp) +movq %r13,120(%rsp) + +# qhasm: b4_stack = b4 +# asm 1: movq b4_stack=stack64#17 +# asm 2: movq b4_stack=128(%rsp) +movq %r14,128(%rsp) + +# qhasm: mulrax = a3_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 80(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#18 +# asm 2: movq mulx319_stack=136(%rsp) +movq %rax,136(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(a0=int64#4 +# asm 2: mov a0=%rcx +mov %rax,%rcx + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#5 +# asm 2: mov mulr01=%r8 +mov %rdx,%r8 + +# qhasm: mulrax = a4_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 88(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#19 +# asm 2: movq mulx419_stack=144(%rsp) +movq %rax,144(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(a1=int64#6 +# asm 2: mov a1=%r9 +mov %rax,%r9 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#8 +# asm 2: mov mulr11=%r10 +mov %rdx,%r10 + +# qhasm: mulrax = a0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(a2=int64#9 +# asm 2: mov a2=%r11 +mov %rax,%r11 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#10 +# asm 2: mov mulr21=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = a0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(a3=int64#11 +# asm 2: mov a3=%r13 +mov %rax,%r13 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#12 +# asm 2: mov mulr31=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = a0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(a4=int64#13 +# asm 2: mov a4=%r15 +mov %rax,%r15 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#14 +# asm 2: mov mulr41=%rbx +mov %rdx,%rbx + +# qhasm: mulrax = a1_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 64(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 72(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 72(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 88(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 16) +# asm 1: mulq 16(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 24) +# asm 1: mulq 24(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 32) +# asm 1: mulq 32(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.a0) << 13 +# asm 1: shld $13,mulr41=int64#5 +# asm 2: imulq $19,mulr41=%r8 +imulq $19,%rbx,%r8 + +# qhasm: a0 += mulr41 +# asm 1: add mult=int64#5 +# asm 2: mov mult=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,a1=int64#6 +# asm 2: mov a1=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,a2=int64#7 +# asm 2: mov a2=%rax +mov %r8,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,a3=int64#8 +# asm 2: mov a3=%r10 +mov %r8,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,a4=int64#9 +# asm 2: mov a4=%r11 +mov %r8,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#5 +# asm 2: imulq $19,mult=%r8 +imulq $19,%r8,%r8 + +# qhasm: a0 += mult +# asm 1: add a0_stack=stack64#8 +# asm 2: movq a0_stack=56(%rsp) +movq %rcx,56(%rsp) + +# qhasm: a1_stack = a1 +# asm 1: movq a1_stack=stack64#9 +# asm 2: movq a1_stack=64(%rsp) +movq %r9,64(%rsp) + +# qhasm: a2_stack = a2 +# asm 1: movq a2_stack=stack64#10 +# asm 2: movq a2_stack=72(%rsp) +movq %rax,72(%rsp) + +# qhasm: a3_stack = a3 +# asm 1: movq a3_stack=stack64#11 +# asm 2: movq a3_stack=80(%rsp) +movq %r10,80(%rsp) + +# qhasm: a4_stack = a4 +# asm 1: movq a4_stack=stack64#12 +# asm 2: movq a4_stack=88(%rsp) +movq %r11,88(%rsp) + +# qhasm: mulrax = b3_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 120(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#18 +# asm 2: movq mulx319_stack=136(%rsp) +movq %rax,136(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(e0=int64#4 +# asm 2: mov e0=%rcx +mov %rax,%rcx + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#5 +# asm 2: mov mulr01=%r8 +mov %rdx,%r8 + +# qhasm: mulrax = b4_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 128(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#19 +# asm 2: movq mulx419_stack=144(%rsp) +movq %rax,144(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(e1=int64#6 +# asm 2: mov e1=%r9 +mov %rax,%r9 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#8 +# asm 2: mov mulr11=%r10 +mov %rdx,%r10 + +# qhasm: mulrax = b0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(e2=int64#9 +# asm 2: mov e2=%r11 +mov %rax,%r11 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#10 +# asm 2: mov mulr21=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = b0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(e3=int64#11 +# asm 2: mov e3=%r13 +mov %rax,%r13 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#12 +# asm 2: mov mulr31=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = b0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(e4=int64#13 +# asm 2: mov e4=%r15 +mov %rax,%r15 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#14 +# asm 2: mov mulr41=%rbx +mov %rdx,%rbx + +# qhasm: mulrax = b1_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 104(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 112(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 112(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 48) +# asm 1: mulq 48(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 128(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 40) +# asm 1: mulq 40(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 56) +# asm 1: mulq 56(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 64) +# asm 1: mulq 64(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 72) +# asm 1: mulq 72(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.e0) << 13 +# asm 1: shld $13,mulr41=int64#5 +# asm 2: imulq $19,mulr41=%r8 +imulq $19,%rbx,%r8 + +# qhasm: e0 += mulr41 +# asm 1: add mult=int64#5 +# asm 2: mov mult=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,e1=int64#6 +# asm 2: mov e1=%r9 +mov %r8,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,e2=int64#7 +# asm 2: mov e2=%rax +mov %r8,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,e3=int64#8 +# asm 2: mov e3=%r10 +mov %r8,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,e4=int64#9 +# asm 2: mov e4=%r11 +mov %r8,%r11 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#5 +# asm 2: imulq $19,mult=%r8 +imulq $19,%r8,%r8 + +# qhasm: e0 += mult +# asm 1: add h0=int64#3 +# asm 2: mov h0=%rdx +mov %rcx,%rdx + +# qhasm: h1 = e1 +# asm 1: mov h1=int64#5 +# asm 2: mov h1=%r8 +mov %r9,%r8 + +# qhasm: h2 = e2 +# asm 1: mov h2=int64#10 +# asm 2: mov h2=%r12 +mov %rax,%r12 + +# qhasm: h3 = e3 +# asm 1: mov h3=int64#11 +# asm 2: mov h3=%r13 +mov %r10,%r13 + +# qhasm: h4 = e4 +# asm 1: mov h4=int64#12 +# asm 2: mov h4=%r14 +mov %r11,%r14 + +# qhasm: e0 += *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: add CRYPTO_SHARED_NAMESPACE(2P0),h0_stack=stack64#8 +# asm 2: movq h0_stack=56(%rsp) +movq %rdx,56(%rsp) + +# qhasm: h1_stack = h1 +# asm 1: movq h1_stack=stack64#9 +# asm 2: movq h1_stack=64(%rsp) +movq %r8,64(%rsp) + +# qhasm: h2_stack = h2 +# asm 1: movq h2_stack=stack64#10 +# asm 2: movq h2_stack=72(%rsp) +movq %r12,72(%rsp) + +# qhasm: h3_stack = h3 +# asm 1: movq h3_stack=stack64#11 +# asm 2: movq h3_stack=80(%rsp) +movq %r13,80(%rsp) + +# qhasm: h4_stack = h4 +# asm 1: movq h4_stack=stack64#12 +# asm 2: movq h4_stack=88(%rsp) +movq %r14,88(%rsp) + +# qhasm: e0_stack = e0 +# asm 1: movq e0_stack=stack64#13 +# asm 2: movq e0_stack=96(%rsp) +movq %rcx,96(%rsp) + +# qhasm: e1_stack = e1 +# asm 1: movq e1_stack=stack64#14 +# asm 2: movq e1_stack=104(%rsp) +movq %r9,104(%rsp) + +# qhasm: e2_stack = e2 +# asm 1: movq e2_stack=stack64#15 +# asm 2: movq e2_stack=112(%rsp) +movq %rax,112(%rsp) + +# qhasm: e3_stack = e3 +# asm 1: movq e3_stack=stack64#16 +# asm 2: movq e3_stack=120(%rsp) +movq %r10,120(%rsp) + +# qhasm: e4_stack = e4 +# asm 1: movq e4_stack=stack64#17 +# asm 2: movq e4_stack=128(%rsp) +movq %r11,128(%rsp) + +# qhasm: mulrax = *(uint64 *)(rp + 144) +# asm 1: movq 144(mulrax=int64#3 +# asm 2: movq 144(mulrax=%rdx +movq 144(%rdi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#18 +# asm 2: movq mulx319_stack=136(%rsp) +movq %rax,136(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(c0=int64#4 +# asm 2: mov c0=%rcx +mov %rax,%rcx + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#5 +# asm 2: mov mulr01=%r8 +mov %rdx,%r8 + +# qhasm: mulrax = *(uint64 *)(rp + 152) +# asm 1: movq 152(mulrax=int64#3 +# asm 2: movq 152(mulrax=%rdx +movq 152(%rdi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#19 +# asm 2: movq mulx419_stack=144(%rsp) +movq %rax,144(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(c1=int64#6 +# asm 2: mov c1=%r9 +mov %rax,%r9 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#8 +# asm 2: mov mulr11=%r10 +mov %rdx,%r10 + +# qhasm: mulrax = *(uint64 *)(rp + 120) +# asm 1: movq 120(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(c2=int64#9 +# asm 2: mov c2=%r11 +mov %rax,%r11 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#10 +# asm 2: mov mulr21=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = *(uint64 *)(rp + 120) +# asm 1: movq 120(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(c3=int64#11 +# asm 2: mov c3=%r13 +mov %rax,%r13 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#12 +# asm 2: mov mulr31=%r14 +mov %rdx,%r14 + +# qhasm: mulrax = *(uint64 *)(rp + 120) +# asm 1: movq 120(mulrax=int64#7 +# asm 2: movq 120(mulrax=%rax +movq 120(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(c4=int64#13 +# asm 2: mov c4=%r15 +mov %rax,%r15 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#14 +# asm 2: mov mulr41=%rbx +mov %rdx,%rbx + +# qhasm: mulrax = *(uint64 *)(rp + 128) +# asm 1: movq 128(mulrax=int64#7 +# asm 2: movq 128(mulrax=%rax +movq 128(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 128(mulrax=%rax +movq 128(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 128(mulrax=%rax +movq 128(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(mulrax=int64#7 +# asm 2: movq 128(mulrax=%rax +movq 128(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(mulrax=int64#3 +# asm 2: movq 128(mulrax=%rdx +movq 128(%rdi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 136(mulrax=%rax +movq 136(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 136(mulrax=%rax +movq 136(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq 136(mulrax=%rax +movq 136(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(mulrax=int64#3 +# asm 2: movq 136(mulrax=%rdx +movq 136(%rdi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(mulrax=int64#3 +# asm 2: movq 136(mulrax=%rdx +movq 136(%rdi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 144(mulrax=%rax +movq 144(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq 144(mulrax=%rax +movq 144(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 88) +# asm 1: mulq 88(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(mulrax=int64#7 +# asm 2: movq 152(mulrax=%rax +movq 152(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 80) +# asm 1: mulq 80(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 96) +# asm 1: mulq 96(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 104) +# asm 1: mulq 104(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(qp + 112) +# asm 1: mulq 112(mulredmask=int64#2 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rsi +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rsi + +# qhasm: mulr01 = (mulr01.c0) << 13 +# asm 1: shld $13,mulr41=int64#3 +# asm 2: imulq $19,mulr41=%rdx +imulq $19,%rbx,%rdx + +# qhasm: c0 += mulr41 +# asm 1: add mult=int64#3 +# asm 2: mov mult=%rdx +mov %rcx,%rdx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,c1=int64#5 +# asm 2: mov c1=%r8 +mov %rdx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,c2=int64#6 +# asm 2: mov c2=%r9 +mov %rdx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,c3=int64#7 +# asm 2: mov c3=%rax +mov %rdx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,c4=int64#8 +# asm 2: mov c4=%r10 +mov %rdx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#3 +# asm 2: imulq $19,mult=%rdx +imulq $19,%rdx,%rdx + +# qhasm: c0 += mult +# asm 1: add c0_stack=stack64#18 +# asm 2: movq c0_stack=136(%rsp) +movq %rcx,136(%rsp) + +# qhasm: f0 = *(uint64 *)(rp + 80) +# asm 1: movq 80(f0=int64#2 +# asm 2: movq 80(f0=%rsi +movq 80(%rdi),%rsi + +# qhasm: f1 = *(uint64 *)(rp + 88) +# asm 1: movq 88(f1=int64#3 +# asm 2: movq 88(f1=%rdx +movq 88(%rdi),%rdx + +# qhasm: f2 = *(uint64 *)(rp + 96) +# asm 1: movq 96(f2=int64#4 +# asm 2: movq 96(f2=%rcx +movq 96(%rdi),%rcx + +# qhasm: f3 = *(uint64 *)(rp + 104) +# asm 1: movq 104(f3=int64#9 +# asm 2: movq 104(f3=%r11 +movq 104(%rdi),%r11 + +# qhasm: f4 = *(uint64 *)(rp + 112) +# asm 1: movq 112(f4=int64#10 +# asm 2: movq 112(f4=%r12 +movq 112(%rdi),%r12 + +# qhasm: f0 += f0 +# asm 1: add g0=int64#11 +# asm 2: mov g0=%r13 +mov %rsi,%r13 + +# qhasm: g1 = f1 +# asm 1: mov g1=int64#12 +# asm 2: mov g1=%r14 +mov %rdx,%r14 + +# qhasm: g2 = f2 +# asm 1: mov g2=int64#13 +# asm 2: mov g2=%r15 +mov %rcx,%r15 + +# qhasm: g3 = f3 +# asm 1: mov g3=int64#14 +# asm 2: mov g3=%rbx +mov %r11,%rbx + +# qhasm: g4 = f4 +# asm 1: mov g4=int64#15 +# asm 2: mov g4=%rbp +mov %r12,%rbp + +# qhasm: f0 += *(uint64 *)&CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: add CRYPTO_SHARED_NAMESPACE(2P0),g0_stack=stack64#18 +# asm 2: movq g0_stack=136(%rsp) +movq %r13,136(%rsp) + +# qhasm: g1_stack = g1 +# asm 1: movq g1_stack=stack64#19 +# asm 2: movq g1_stack=144(%rsp) +movq %r14,144(%rsp) + +# qhasm: g2_stack = g2 +# asm 1: movq g2_stack=stack64#20 +# asm 2: movq g2_stack=152(%rsp) +movq %r15,152(%rsp) + +# qhasm: g3_stack = g3 +# asm 1: movq g3_stack=stack64#21 +# asm 2: movq g3_stack=160(%rsp) +movq %rbx,160(%rsp) + +# qhasm: g4_stack = g4 +# asm 1: movq g4_stack=stack64#22 +# asm 2: movq g4_stack=168(%rsp) +movq %rbp,168(%rsp) + +# qhasm: f0_stack = f0 +# asm 1: movq f0_stack=stack64#23 +# asm 2: movq f0_stack=176(%rsp) +movq %rsi,176(%rsp) + +# qhasm: f1_stack = f1 +# asm 1: movq f1_stack=stack64#24 +# asm 2: movq f1_stack=184(%rsp) +movq %rdx,184(%rsp) + +# qhasm: f2_stack = f2 +# asm 1: movq f2_stack=stack64#25 +# asm 2: movq f2_stack=192(%rsp) +movq %rcx,192(%rsp) + +# qhasm: f3_stack = f3 +# asm 1: movq f3_stack=stack64#26 +# asm 2: movq f3_stack=200(%rsp) +movq %r11,200(%rsp) + +# qhasm: f4_stack = f4 +# asm 1: movq f4_stack=stack64#27 +# asm 2: movq f4_stack=208(%rsp) +movq %r12,208(%rsp) + +# qhasm: mulrax = e3_stack +# asm 1: movq mulrax=int64#2 +# asm 2: movq mulrax=%rsi +movq 120(%rsp),%rsi + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rsi,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#28 +# asm 2: movq mulx319_stack=216(%rsp) +movq %rax,216(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * f2_stack +# asm 1: mulq rx0=int64#2 +# asm 2: mov rx0=%rsi +mov %rax,%rsi + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#4 +# asm 2: mov mulr01=%rcx +mov %rdx,%rcx + +# qhasm: mulrax = e4_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 128(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#29 +# asm 2: movq mulx419_stack=224(%rsp) +movq %rax,224(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * f1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f1_stack +# asm 1: mulq rx1=int64#5 +# asm 2: mov rx1=%r8 +mov %rax,%r8 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#6 +# asm 2: mov mulr11=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = e0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f2_stack +# asm 1: mulq rx2=int64#8 +# asm 2: mov rx2=%r10 +mov %rax,%r10 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#9 +# asm 2: mov mulr21=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = e0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f3_stack +# asm 1: mulq rx3=int64#10 +# asm 2: mov rx3=%r12 +mov %rax,%r12 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#11 +# asm 2: mov mulr31=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = e0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f4_stack +# asm 1: mulq rx4=int64#12 +# asm 2: mov rx4=%r14 +mov %rax,%r14 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#13 +# asm 2: mov mulr41=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = e1_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f2_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f3_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 104(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f4_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f2_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 112(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f3_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 112(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f4_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 216(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f3_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 216(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f4_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 128(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 224(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f2_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 224(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f3_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 224(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f4_stack +# asm 1: mulq mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.rx0) << 13 +# asm 1: shld $13,mulr41=int64#4 +# asm 2: imulq $19,mulr41=%rcx +imulq $19,%r15,%rcx + +# qhasm: rx0 += mulr41 +# asm 1: add mult=int64#4 +# asm 2: mov mult=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx1=int64#5 +# asm 2: mov rx1=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx2=int64#6 +# asm 2: mov rx2=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx3=int64#7 +# asm 2: mov rx3=%rax +mov %rcx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rx4=int64#8 +# asm 2: mov rx4=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#4 +# asm 2: imulq $19,mult=%rcx +imulq $19,%rcx,%rcx + +# qhasm: rx0 += mult +# asm 1: add mulrax=int64#2 +# asm 2: movq mulrax=%rsi +movq 80(%rsp),%rsi + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rsi,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#28 +# asm 2: movq mulx319_stack=216(%rsp) +movq %rax,216(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * g2_stack +# asm 1: mulq ry0=int64#2 +# asm 2: mov ry0=%rsi +mov %rax,%rsi + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#4 +# asm 2: mov mulr01=%rcx +mov %rdx,%rcx + +# qhasm: mulrax = h4_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 88(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#29 +# asm 2: movq mulx419_stack=224(%rsp) +movq %rax,224(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * g1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g1_stack +# asm 1: mulq ry1=int64#5 +# asm 2: mov ry1=%r8 +mov %rax,%r8 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#6 +# asm 2: mov mulr11=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = h0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g2_stack +# asm 1: mulq ry2=int64#8 +# asm 2: mov ry2=%r10 +mov %rax,%r10 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#9 +# asm 2: mov mulr21=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = h0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g3_stack +# asm 1: mulq ry3=int64#10 +# asm 2: mov ry3=%r12 +mov %rax,%r12 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#11 +# asm 2: mov mulr31=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = h0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g4_stack +# asm 1: mulq ry4=int64#12 +# asm 2: mov ry4=%r14 +mov %rax,%r14 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#13 +# asm 2: mov mulr41=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = h1_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g2_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g3_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 64(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g4_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g2_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 72(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g3_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 72(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g4_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 216(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g3_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 216(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g4_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 88(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 224(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g2_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 224(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g3_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 224(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * g4_stack +# asm 1: mulq mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.ry0) << 13 +# asm 1: shld $13,mulr41=int64#4 +# asm 2: imulq $19,mulr41=%rcx +imulq $19,%r15,%rcx + +# qhasm: ry0 += mulr41 +# asm 1: add mult=int64#4 +# asm 2: mov mult=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,ry1=int64#5 +# asm 2: mov ry1=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,ry2=int64#6 +# asm 2: mov ry2=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,ry3=int64#7 +# asm 2: mov ry3=%rax +mov %rcx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,ry4=int64#8 +# asm 2: mov ry4=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#4 +# asm 2: imulq $19,mult=%rcx +imulq $19,%rcx,%rcx + +# qhasm: ry0 += mult +# asm 1: add mulrax=int64#2 +# asm 2: movq mulrax=%rsi +movq 160(%rsp),%rsi + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rsi,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#28 +# asm 2: movq mulx319_stack=216(%rsp) +movq %rax,216(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * f2_stack +# asm 1: mulq rz0=int64#2 +# asm 2: mov rz0=%rsi +mov %rax,%rsi + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#4 +# asm 2: mov mulr01=%rcx +mov %rdx,%rcx + +# qhasm: mulrax = g4_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 168(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#29 +# asm 2: movq mulx419_stack=224(%rsp) +movq %rax,224(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * f1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f1_stack +# asm 1: mulq rz1=int64#5 +# asm 2: mov rz1=%r8 +mov %rax,%r8 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#6 +# asm 2: mov mulr11=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = g0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f2_stack +# asm 1: mulq rz2=int64#8 +# asm 2: mov rz2=%r10 +mov %rax,%r10 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#9 +# asm 2: mov mulr21=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = g0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f3_stack +# asm 1: mulq rz3=int64#10 +# asm 2: mov rz3=%r12 +mov %rax,%r12 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#11 +# asm 2: mov mulr31=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = g0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f4_stack +# asm 1: mulq rz4=int64#12 +# asm 2: mov rz4=%r14 +mov %rax,%r14 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#13 +# asm 2: mov mulr41=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = g1_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f2_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f3_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 144(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f4_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 152(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 152(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 152(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f2_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 152(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f3_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 152(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f4_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 160(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 160(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 216(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f3_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 216(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f4_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 168(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 224(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f2_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 224(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f3_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 224(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * f4_stack +# asm 1: mulq mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.rz0) << 13 +# asm 1: shld $13,mulr41=int64#4 +# asm 2: imulq $19,mulr41=%rcx +imulq $19,%r15,%rcx + +# qhasm: rz0 += mulr41 +# asm 1: add mult=int64#4 +# asm 2: mov mult=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz1=int64#5 +# asm 2: mov rz1=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz2=int64#6 +# asm 2: mov rz2=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz3=int64#7 +# asm 2: mov rz3=%rax +mov %rcx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rz4=int64#8 +# asm 2: mov rz4=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#4 +# asm 2: imulq $19,mult=%rcx +imulq $19,%rcx,%rcx + +# qhasm: rz0 += mult +# asm 1: add mulrax=int64#2 +# asm 2: movq mulrax=%rsi +movq 120(%rsp),%rsi + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rsi,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#18 +# asm 2: movq mulx319_stack=136(%rsp) +movq %rax,136(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * h2_stack +# asm 1: mulq rt0=int64#2 +# asm 2: mov rt0=%rsi +mov %rax,%rsi + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#4 +# asm 2: mov mulr01=%rcx +mov %rdx,%rcx + +# qhasm: mulrax = e4_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 128(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#19 +# asm 2: movq mulx419_stack=144(%rsp) +movq %rax,144(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * h1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h1_stack +# asm 1: mulq rt1=int64#5 +# asm 2: mov rt1=%r8 +mov %rax,%r8 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#6 +# asm 2: mov mulr11=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = e0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h2_stack +# asm 1: mulq rt2=int64#8 +# asm 2: mov rt2=%r10 +mov %rax,%r10 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#9 +# asm 2: mov mulr21=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = e0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h3_stack +# asm 1: mulq rt3=int64#10 +# asm 2: mov rt3=%r12 +mov %rax,%r12 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#11 +# asm 2: mov mulr31=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = e0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h4_stack +# asm 1: mulq rt4=int64#12 +# asm 2: mov rt4=%r14 +mov %rax,%r14 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#13 +# asm 2: mov mulr41=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = e1_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h2_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h3_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 104(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h4_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h2_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 112(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h3_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 112(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h4_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h1_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h3_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h4_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 128(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h0_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h2_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h3_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * h4_stack +# asm 1: mulq mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.rt0) << 13 +# asm 1: shld $13,mulr41=int64#4 +# asm 2: imulq $19,mulr41=%rcx +imulq $19,%r15,%rcx + +# qhasm: rt0 += mulr41 +# asm 1: add mult=int64#4 +# asm 2: mov mult=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rt1=int64#5 +# asm 2: mov rt1=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rt2=int64#6 +# asm 2: mov rt2=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rt3=int64#7 +# asm 2: mov rt3=%rax +mov %rcx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,rt4=int64#8 +# asm 2: mov rt4=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#4 +# asm 2: imulq $19,mult=%rcx +imulq $19,%rcx,%rcx + +# qhasm: rt0 += mult +# asm 1: add caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_p1p1_to_p2.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_p1p1_to_p2.S new file mode 120000 index 0000000000..f41a21937c --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_p1p1_to_p2.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/ge25519_p1p1_to_p2.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_p1p1_to_p3.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_p1p1_to_p3.S new file mode 120000 index 0000000000..63e42ec9a1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_p1p1_to_p3.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/ge25519_p1p1_to_p3.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_p1p1_to_pniels.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_p1p1_to_pniels.S new file mode 120000 index 0000000000..9e15b19e60 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_p1p1_to_pniels.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/ge25519_p1p1_to_pniels.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_scalarmult_base.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_scalarmult_base.c new file mode 100644 index 0000000000..3478b5ece4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/ge25519_scalarmult_base.c @@ -0,0 +1,52 @@ +// linker define ge25519_scalarmult_base +// linker use sc25519_window4 +// linker use choose_t +// linker use fe25519_sub fe25519_add fe25519_setint fe25519_mul +// linker use ge25519_nielsadd2 ge25519_dbl_p1p1 ge25519_p1p1_to_p2 ge25519_p1p1_to_p3 +// linker use ge25519_base_multiples_niels + +#include "fe25519.h" +#include "sc25519.h" +#include "ge25519.h" + +/* d */ +static const fe25519 ecd = {{929955233495203, 466365720129213, 1662059464998953, 2033849074728123, 1442794654840575}}; + +void ge25519_scalarmult_base(ge25519_p3 *r, const sc25519 *s) +{ + signed char b[64]; + int i; + ge25519_niels t; + fe25519 d; + + sc25519_window4(b,s); + + ge25519_p1p1 tp1p1; + choose_t((ge25519_niels *)r, 0, (signed long long) b[1], ge25519_base_multiples_niels); + fe25519_sub(&d, &r->y, &r->x); + fe25519_add(&r->y, &r->y, &r->x); + r->x = d; + r->t = r->z; + fe25519_setint(&r->z,2); + for(i=3;i<64;i+=2) + { + choose_t(&t, (unsigned long long) i/2, (signed long long) b[i], ge25519_base_multiples_niels); + ge25519_nielsadd2(r, &t); + } + ge25519_dbl_p1p1(&tp1p1,(ge25519_p2 *)r); + ge25519_p1p1_to_p2((ge25519_p2 *)r, &tp1p1); + ge25519_dbl_p1p1(&tp1p1,(ge25519_p2 *)r); + ge25519_p1p1_to_p2((ge25519_p2 *)r, &tp1p1); + ge25519_dbl_p1p1(&tp1p1,(ge25519_p2 *)r); + ge25519_p1p1_to_p2((ge25519_p2 *)r, &tp1p1); + ge25519_dbl_p1p1(&tp1p1,(ge25519_p2 *)r); + ge25519_p1p1_to_p3(r, &tp1p1); + choose_t(&t, (unsigned long long) 0, (signed long long) b[0], ge25519_base_multiples_niels); + fe25519_mul(&t.t2d, &t.t2d, &ecd); + ge25519_nielsadd2(r, &t); + for(i=2;i<64;i+=2) + { + choose_t(&t, (unsigned long long) i/2, (signed long long) b[i], ge25519_base_multiples_niels); + ge25519_nielsadd2(r, &t); + } +} diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/implementors b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/implementors new file mode 120000 index 0000000000..3535539aea --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/implementors @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/nG.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/nG.c new file mode 100644 index 0000000000..d058110be3 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/nG.c @@ -0,0 +1,40 @@ +#include +#include "crypto_nG.h" +#include "crypto_hash_sha512.h" +#include "randombytes.h" +#include "fe25519.h" +#include "sc25519.h" +#include "ge25519.h" + +void crypto_nG(unsigned char *pk,const unsigned char *sk) +{ + unsigned char e[32]; + sc25519 scsk; + ge25519 gepk; + fe25519 ZplusY; + fe25519 ZminusY; + fe25519 recip; + fe25519 x; + fe25519 y; + int wantmont; + + for (int i = 0;i < 32;++i) e[i] = sk[i]; + wantmont = e[31]>>7; + e[31] &= 127; + + sc25519_from32bytes(&scsk,e); + + ge25519_scalarmult_base(&gepk, &scsk); + + fe25519_add(&ZplusY,&gepk.z,&gepk.y); + fe25519_sub(&ZminusY,&gepk.z,&gepk.y); + fe25519_cmov(&gepk.y,&ZplusY,wantmont); + fe25519_cmov(&gepk.z,&ZminusY,wantmont); + + fe25519_invert(&recip,&gepk.z); + fe25519_mul(&y,&gepk.y,&recip); + fe25519_pack(pk,&y); + + fe25519_mul(&x,&gepk.x,&recip); + pk[31] ^= ((1-wantmont) & fe25519_getparity(&x)) << 7; +} diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/sc25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/sc25519.h new file mode 120000 index 0000000000..73c9e9087d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/sc25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/sc25519_window4.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/sc25519_window4.c new file mode 100644 index 0000000000..2356849fd2 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/sc25519_window4.c @@ -0,0 +1,29 @@ +// linker define sc25519_window4 + +#include "sc25519.h" + +void sc25519_window4(signed char r[64], const sc25519 *s) +{ + char carry; + int i; + for(i=0;i<16;i++) + r[i] = (s->v[0] >> (4*i)) & 15; + for(i=0;i<16;i++) + r[i+16] = (s->v[1] >> (4*i)) & 15; + for(i=0;i<16;i++) + r[i+32] = (s->v[2] >> (4*i)) & 15; + for(i=0;i<16;i++) + r[i+48] = (s->v[3] >> (4*i)) & 15; + + /* Making it signed */ + carry = 0; + for(i=0;i<63;i++) + { + r[i] += carry; + r[i+1] += r[i] >> 4; + r[i] &= 15; + carry = r[i] >> 3; + r[i] -= carry << 4; + } + r[63] += carry; +} diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/shared-base-data.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/shared-base-data.c new file mode 100644 index 0000000000..baea658fce --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/shared-base-data.c @@ -0,0 +1,7 @@ +// linker define ge25519_base_multiples_niels + +#include "ge25519.h" + +const ge25519_niels ge25519_base_multiples_niels[] = { +#include "ge25519_base_niels_smalltables.data" +}; diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/shared-consts.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/shared-consts.c new file mode 120000 index 0000000000..42fa8c141a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-51/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/architectures b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/architectures new file mode 120000 index 0000000000..f92e7d6fe1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/architectures @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/choose_t.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/choose_t.S new file mode 100644 index 0000000000..c93c022dc6 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/choose_t.S @@ -0,0 +1,1566 @@ +// linker define choose_t + +# qhasm: int64 tp + +# qhasm: int64 pos + +# qhasm: int64 b + +# qhasm: int64 basep + +# qhasm: input tp + +# qhasm: input pos + +# qhasm: input b + +# qhasm: input basep + +# qhasm: int64 mask + +# qhasm: int64 u + +# qhasm: int64 tysubx0 + +# qhasm: int64 tysubx1 + +# qhasm: int64 tysubx2 + +# qhasm: int64 tysubx3 + +# qhasm: int64 txaddy0 + +# qhasm: int64 txaddy1 + +# qhasm: int64 txaddy2 + +# qhasm: int64 txaddy3 + +# qhasm: int64 tt2d0 + +# qhasm: int64 tt2d1 + +# qhasm: int64 tt2d2 + +# qhasm: int64 tt2d3 + +# qhasm: int64 tt0 + +# qhasm: int64 tt1 + +# qhasm: int64 tt2 + +# qhasm: int64 tt3 + +# qhasm: int64 subt0 + +# qhasm: int64 subt1 + +# qhasm: int64 t + +# qhasm: stack64 tp_stack + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(choose_t) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(choose_t) +.globl CRYPTO_SHARED_NAMESPACE(choose_t) +_CRYPTO_SHARED_NAMESPACE(choose_t): +CRYPTO_SHARED_NAMESPACE(choose_t): +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: tp_stack = tp +# asm 1: movq tp_stack=stack64#8 +# asm 2: movq tp_stack=56(%rsp) +movq %rdi,56(%rsp) + +# qhasm: pos *= 768 +# asm 1: imulq $768,pos=int64#1 +# asm 2: imulq $768,pos=%rdi +imulq $768,%rsi,%rdi + +# qhasm: mask = b +# asm 1: mov mask=int64#2 +# asm 2: mov mask=%rsi +mov %rdx,%rsi + +# qhasm: (int64) mask >>= 7 +# asm 1: sar $7,u=int64#5 +# asm 2: mov u=%r8 +mov %rdx,%r8 + +# qhasm: u += mask +# asm 1: add tysubx0=int64#2 +# asm 2: mov $1,>tysubx0=%rsi +mov $1,%rsi + +# qhasm: tysubx1 = 0 +# asm 1: mov $0,>tysubx1=int64#6 +# asm 2: mov $0,>tysubx1=%r9 +mov $0,%r9 + +# qhasm: tysubx2 = 0 +# asm 1: mov $0,>tysubx2=int64#7 +# asm 2: mov $0,>tysubx2=%rax +mov $0,%rax + +# qhasm: tysubx3 = 0 +# asm 1: mov $0,>tysubx3=int64#8 +# asm 2: mov $0,>tysubx3=%r10 +mov $0,%r10 + +# qhasm: txaddy0 = 1 +# asm 1: mov $1,>txaddy0=int64#9 +# asm 2: mov $1,>txaddy0=%r11 +mov $1,%r11 + +# qhasm: txaddy1 = 0 +# asm 1: mov $0,>txaddy1=int64#10 +# asm 2: mov $0,>txaddy1=%r12 +mov $0,%r12 + +# qhasm: txaddy2 = 0 +# asm 1: mov $0,>txaddy2=int64#11 +# asm 2: mov $0,>txaddy2=%r13 +mov $0,%r13 + +# qhasm: txaddy3 = 0 +# asm 1: mov $0,>txaddy3=int64#12 +# asm 2: mov $0,>txaddy3=%r14 +mov $0,%r14 + +# qhasm: =? u - 1 +# asm 1: cmp $1,t=int64#13 +# asm 2: movq 0(t=%r15 +movq 0(%rcx,%rdi),%r15 + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 8(t=%r15 +movq 8(%rcx,%rdi),%r15 + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 16(t=%r15 +movq 16(%rcx,%rdi),%r15 + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 24(t=%r15 +movq 24(%rcx,%rdi),%r15 + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 32(t=%r15 +movq 32(%rcx,%rdi),%r15 + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 40(t=%r15 +movq 40(%rcx,%rdi),%r15 + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 48(t=%r15 +movq 48(%rcx,%rdi),%r15 + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 56(t=%r15 +movq 56(%rcx,%rdi),%r15 + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 96(t=%r15 +movq 96(%rcx,%rdi),%r15 + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 104(t=%r15 +movq 104(%rcx,%rdi),%r15 + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 112(t=%r15 +movq 112(%rcx,%rdi),%r15 + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 120(t=%r15 +movq 120(%rcx,%rdi),%r15 + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 128(t=%r15 +movq 128(%rcx,%rdi),%r15 + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 136(t=%r15 +movq 136(%rcx,%rdi),%r15 + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 144(t=%r15 +movq 144(%rcx,%rdi),%r15 + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 152(t=%r15 +movq 152(%rcx,%rdi),%r15 + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 192(t=%r15 +movq 192(%rcx,%rdi),%r15 + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 200(t=%r15 +movq 200(%rcx,%rdi),%r15 + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 208(t=%r15 +movq 208(%rcx,%rdi),%r15 + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 216(t=%r15 +movq 216(%rcx,%rdi),%r15 + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 224(t=%r15 +movq 224(%rcx,%rdi),%r15 + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 232(t=%r15 +movq 232(%rcx,%rdi),%r15 + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 240(t=%r15 +movq 240(%rcx,%rdi),%r15 + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 248(t=%r15 +movq 248(%rcx,%rdi),%r15 + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 288(t=%r15 +movq 288(%rcx,%rdi),%r15 + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 296(t=%r15 +movq 296(%rcx,%rdi),%r15 + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 304(t=%r15 +movq 304(%rcx,%rdi),%r15 + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 312(t=%r15 +movq 312(%rcx,%rdi),%r15 + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 320(t=%r15 +movq 320(%rcx,%rdi),%r15 + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 328(t=%r15 +movq 328(%rcx,%rdi),%r15 + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 336(t=%r15 +movq 336(%rcx,%rdi),%r15 + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 344(t=%r15 +movq 344(%rcx,%rdi),%r15 + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 384(t=%r15 +movq 384(%rcx,%rdi),%r15 + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 392(t=%r15 +movq 392(%rcx,%rdi),%r15 + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 400(t=%r15 +movq 400(%rcx,%rdi),%r15 + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 408(t=%r15 +movq 408(%rcx,%rdi),%r15 + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 416(t=%r15 +movq 416(%rcx,%rdi),%r15 + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 424(t=%r15 +movq 424(%rcx,%rdi),%r15 + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 432(t=%r15 +movq 432(%rcx,%rdi),%r15 + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 440(t=%r15 +movq 440(%rcx,%rdi),%r15 + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 480(t=%r15 +movq 480(%rcx,%rdi),%r15 + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 488(t=%r15 +movq 488(%rcx,%rdi),%r15 + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 496(t=%r15 +movq 496(%rcx,%rdi),%r15 + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 504(t=%r15 +movq 504(%rcx,%rdi),%r15 + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 512(t=%r15 +movq 512(%rcx,%rdi),%r15 + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 520(t=%r15 +movq 520(%rcx,%rdi),%r15 + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 528(t=%r15 +movq 528(%rcx,%rdi),%r15 + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 536(t=%r15 +movq 536(%rcx,%rdi),%r15 + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 576(t=%r15 +movq 576(%rcx,%rdi),%r15 + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 584(t=%r15 +movq 584(%rcx,%rdi),%r15 + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 592(t=%r15 +movq 592(%rcx,%rdi),%r15 + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 600(t=%r15 +movq 600(%rcx,%rdi),%r15 + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 608(t=%r15 +movq 608(%rcx,%rdi),%r15 + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 616(t=%r15 +movq 616(%rcx,%rdi),%r15 + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 624(t=%r15 +movq 624(%rcx,%rdi),%r15 + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 632(t=%r15 +movq 632(%rcx,%rdi),%r15 + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 672(t=%r15 +movq 672(%rcx,%rdi),%r15 + +# qhasm: tysubx0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 680(t=%r15 +movq 680(%rcx,%rdi),%r15 + +# qhasm: tysubx1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 688(t=%r15 +movq 688(%rcx,%rdi),%r15 + +# qhasm: tysubx2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 696(t=%r15 +movq 696(%rcx,%rdi),%r15 + +# qhasm: tysubx3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 704(t=%r15 +movq 704(%rcx,%rdi),%r15 + +# qhasm: txaddy0 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 712(t=%r15 +movq 712(%rcx,%rdi),%r15 + +# qhasm: txaddy1 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 720(t=%r15 +movq 720(%rcx,%rdi),%r15 + +# qhasm: txaddy2 = t if = +# asm 1: cmove t=int64#13 +# asm 2: movq 728(t=%r15 +movq 728(%rcx,%rdi),%r15 + +# qhasm: txaddy3 = t if = +# asm 1: cmove t=int64#13 +# asm 2: mov t=%r15 +mov %rsi,%r15 + +# qhasm: tysubx0 = txaddy0 if signed< +# asm 1: cmovl t=int64#13 +# asm 2: mov t=%r15 +mov %r9,%r15 + +# qhasm: tysubx1 = txaddy1 if signed< +# asm 1: cmovl t=int64#13 +# asm 2: mov t=%r15 +mov %rax,%r15 + +# qhasm: tysubx2 = txaddy2 if signed< +# asm 1: cmovl t=int64#13 +# asm 2: mov t=%r15 +mov %r10,%r15 + +# qhasm: tysubx3 = txaddy3 if signed< +# asm 1: cmovl tp=int64#13 +# asm 2: movq tp=%r15 +movq 56(%rsp),%r15 + +# qhasm: *(uint64 *)(tp + 0) = tysubx0 +# asm 1: movq tt2d0=int64#2 +# asm 2: mov $0,>tt2d0=%rsi +mov $0,%rsi + +# qhasm: tt2d1 = 0 +# asm 1: mov $0,>tt2d1=int64#6 +# asm 2: mov $0,>tt2d1=%r9 +mov $0,%r9 + +# qhasm: tt2d2 = 0 +# asm 1: mov $0,>tt2d2=int64#7 +# asm 2: mov $0,>tt2d2=%rax +mov $0,%rax + +# qhasm: tt2d3 = 0 +# asm 1: mov $0,>tt2d3=int64#8 +# asm 2: mov $0,>tt2d3=%r10 +mov $0,%r10 + +# qhasm: =? u - 1 +# asm 1: cmp $1,t=int64#9 +# asm 2: movq 64(t=%r11 +movq 64(%rcx,%rdi),%r11 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 72(t=%r11 +movq 72(%rcx,%rdi),%r11 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 80(t=%r11 +movq 80(%rcx,%rdi),%r11 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 88(t=%r11 +movq 88(%rcx,%rdi),%r11 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 160(t=%r11 +movq 160(%rcx,%rdi),%r11 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 168(t=%r11 +movq 168(%rcx,%rdi),%r11 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 176(t=%r11 +movq 176(%rcx,%rdi),%r11 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 184(t=%r11 +movq 184(%rcx,%rdi),%r11 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 256(t=%r11 +movq 256(%rcx,%rdi),%r11 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 264(t=%r11 +movq 264(%rcx,%rdi),%r11 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 272(t=%r11 +movq 272(%rcx,%rdi),%r11 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 280(t=%r11 +movq 280(%rcx,%rdi),%r11 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 352(t=%r11 +movq 352(%rcx,%rdi),%r11 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 360(t=%r11 +movq 360(%rcx,%rdi),%r11 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 368(t=%r11 +movq 368(%rcx,%rdi),%r11 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 376(t=%r11 +movq 376(%rcx,%rdi),%r11 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 448(t=%r11 +movq 448(%rcx,%rdi),%r11 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 456(t=%r11 +movq 456(%rcx,%rdi),%r11 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 464(t=%r11 +movq 464(%rcx,%rdi),%r11 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 472(t=%r11 +movq 472(%rcx,%rdi),%r11 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 544(t=%r11 +movq 544(%rcx,%rdi),%r11 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 552(t=%r11 +movq 552(%rcx,%rdi),%r11 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 560(t=%r11 +movq 560(%rcx,%rdi),%r11 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 568(t=%r11 +movq 568(%rcx,%rdi),%r11 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 640(t=%r11 +movq 640(%rcx,%rdi),%r11 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 648(t=%r11 +movq 648(%rcx,%rdi),%r11 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 656(t=%r11 +movq 656(%rcx,%rdi),%r11 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#9 +# asm 2: movq 664(t=%r11 +movq 664(%rcx,%rdi),%r11 + +# qhasm: tt2d3 = t if = +# asm 1: cmove t=int64#5 +# asm 2: movq 736(t=%r8 +movq 736(%rcx,%rdi),%r8 + +# qhasm: tt2d0 = t if = +# asm 1: cmove t=int64#5 +# asm 2: movq 744(t=%r8 +movq 744(%rcx,%rdi),%r8 + +# qhasm: tt2d1 = t if = +# asm 1: cmove t=int64#5 +# asm 2: movq 752(t=%r8 +movq 752(%rcx,%rdi),%r8 + +# qhasm: tt2d2 = t if = +# asm 1: cmove t=int64#1 +# asm 2: movq 760(t=%rdi +movq 760(%rcx,%rdi),%rdi + +# qhasm: tt2d3 = t if = +# asm 1: cmove tt0=int64#1 +# asm 2: mov $0,>tt0=%rdi +mov $0,%rdi + +# qhasm: tt1 = 0 +# asm 1: mov $0,>tt1=int64#4 +# asm 2: mov $0,>tt1=%rcx +mov $0,%rcx + +# qhasm: tt2 = 0 +# asm 1: mov $0,>tt2=int64#5 +# asm 2: mov $0,>tt2=%r8 +mov $0,%r8 + +# qhasm: tt3 = 0 +# asm 1: mov $0,>tt3=int64#9 +# asm 2: mov $0,>tt3=%r11 +mov $0,%r11 + +# qhasm: carry? tt0 -= tt2d0 +# asm 1: sub subt0=int64#10 +# asm 2: mov $0,>subt0=%r12 +mov $0,%r12 + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#11 +# asm 2: mov $38,>subt1=%r13 +mov $38,%r13 + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519.h new file mode 120000 index 0000000000..7ac729fd9c --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_add.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_add.S new file mode 120000 index 0000000000..d4acd5b571 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_add.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_cmov.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_cmov.c new file mode 100644 index 0000000000..0bcac759d2 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_cmov.c @@ -0,0 +1,28 @@ +// linker define fe25519_cmov + +#include "fe25519.h" + +void fe25519_cmov(fe25519 *f,const fe25519 *g,unsigned char b) +{ + unsigned long long f0 = f->v[0]; + unsigned long long f1 = f->v[1]; + unsigned long long f2 = f->v[2]; + unsigned long long f3 = f->v[3]; + unsigned long long g0 = g->v[0]; + unsigned long long g1 = g->v[1]; + unsigned long long g2 = g->v[2]; + unsigned long long g3 = g->v[3]; + unsigned long long x0 = f0 ^ g0; + unsigned long long x1 = f1 ^ g1; + unsigned long long x2 = f2 ^ g2; + unsigned long long x3 = f3 ^ g3; + unsigned long long mask = -(unsigned long long) b; + x0 &= mask; + x1 &= mask; + x2 &= mask; + x3 &= mask; + f->v[0] = f0 ^ x0; + f->v[1] = f1 ^ x1; + f->v[2] = f2 ^ x2; + f->v[3] = f3 ^ x3; +} diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_freeze.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_getparity.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_getparity.c new file mode 120000 index 0000000000..c23ba9ce3d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_getparity.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_invert.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_mul.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_mul.S new file mode 120000 index 0000000000..12c9c07cf0 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_pack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_setint.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_setint.c new file mode 120000 index 0000000000..7f4f38d55f --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_setint.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_setint.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_square.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_square.S new file mode 120000 index 0000000000..a35ad54f99 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_sub.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_sub.S new file mode 120000 index 0000000000..8458eb6750 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_sub.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_unpack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519.h new file mode 100644 index 0000000000..b546ce0671 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519.h @@ -0,0 +1,99 @@ +#ifndef GE25519_H +#define GE25519_H + +#include "fe25519.h" +#include "sc25519.h" + +#define ge25519 CRYPTO_NAMESPACE(ge25519) +#define ge25519_base CRYPTO_NAMESPACE(ge25519_base) +#define ge25519_unpackneg_vartime CRYPTO_NAMESPACE(unpackneg_vartime) +#define ge25519_pack CRYPTO_NAMESPACE(pack) +#define ge25519_isneutral_vartime CRYPTO_NAMESPACE(isneutral_vartime) +#define ge25519_add CRYPTO_NAMESPACE(ge25519_add) +#define ge25519_double CRYPTO_NAMESPACE(ge25519_double) +#define ge25519_double_scalarmult_vartime CRYPTO_NAMESPACE(double_scalarmult_vartime) +#define ge25519_multi_scalarmult_vartime CRYPTO_NAMESPACE(ge25519_multi_scalarmult_vartime) +#define ge25519_scalarmult_base CRYPTO_NAMESPACE(ge25519_scalarmult_base) +#define ge25519_p1p1_to_p2 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2) +#define ge25519_p1p1_to_p3 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3) +#define ge25519_add_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_add_p1p1) +#define ge25519_dbl_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1) +#define choose_t CRYPTO_SHARED_NAMESPACE(choose_t) +#define ge25519_nielsadd2 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2) +#define ge25519_nielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1) +#define ge25519_pnielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1) + +#define ge25519_base_multiples_niels CRYPTO_SHARED_NAMESPACE(ge25519_base_multiples_niels) + + +#define ge25519_p3 ge25519 + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; + fe25519 t; +} ge25519; + +typedef struct +{ + fe25519 x; + fe25519 z; + fe25519 y; + fe25519 t; +} ge25519_p1p1; + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; +} ge25519_p2; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 t2d; +} ge25519_niels; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 z; + fe25519 t2d; +} ge25519_pniels; + +extern void ge25519_p1p1_to_p2(ge25519_p2 *r, const ge25519_p1p1 *p); +extern void ge25519_p1p1_to_p3(ge25519_p3 *r, const ge25519_p1p1 *p); +extern void ge25519_add_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_p3 *q); +extern void ge25519_dbl_p1p1(ge25519_p1p1 *r, const ge25519_p2 *p); +extern void choose_t(ge25519_niels *t, unsigned long long pos, signed long long b, const ge25519_niels *base_multiples); +extern void ge25519_nielsadd2(ge25519_p3 *r, const ge25519_niels *q); +extern void ge25519_nielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_niels *q); +extern void ge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_pniels *q); + +extern const ge25519 ge25519_base; + +extern int ge25519_unpackneg_vartime(ge25519 *r, const unsigned char p[32]); + +extern void ge25519_pack(unsigned char r[32], const ge25519 *p); + +extern int ge25519_isneutral_vartime(const ge25519 *p); + +extern void ge25519_add(ge25519 *r, const ge25519 *p, const ge25519 *q); + +extern void ge25519_double(ge25519 *r, const ge25519 *p); + +/* computes [s1]p1 + [s2]ge25519_base */ +extern void ge25519_double_scalarmult_vartime(ge25519 *r, const ge25519 *p1, const sc25519 *s1, const sc25519 *s2); + +extern void ge25519_multi_scalarmult_vartime(ge25519 *r, ge25519 *p, sc25519 *s, const unsigned long long npoints); + +extern void ge25519_scalarmult_base(ge25519 *r, const sc25519 *s); + +extern const ge25519_niels ge25519_base_multiples_niels[]; + +#endif diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_base_niels.data b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_base_niels.data new file mode 100644 index 0000000000..8e3300cf45 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_base_niels.data @@ -0,0 +1,1536 @@ +{{{0x9d103905d740913e, 0xfd399f05d140beb3, 0xa5c18434688f8a09, 0x44fd2f9298f81267}}, + {{0x2fbc93c6f58c3b85, 0xcf932dc6fb8c0e19, 0x270b4898643d42c2, 0x07cf9d3a33d4ba65}}, + {{0xdbbd15674b6fbb59, 0x41e13f00eea2a5ea, 0xcdd49d1cc957c6fa, 0x4f0ebe1faf16ecca}}}, +{{{0x8a99a56042b4d5a8, 0x8f2b810c4e60acf6, 0xe09e236bb16e37aa, 0x6bb595a669c92555}}, + {{0x9224e7fc933c71d7, 0x9f469d967a0ff5b5, 0x5aa69a65e1d60702, 0x590c063fa87d2e2e}}, + {{0x6e347eaadad36802, 0xbaf3599383ee4805, 0x3bcabe10e6076826, 0x49314f0a165ed1b8}}}, +{{{0x56611fe8a4fcd265, 0x3bd353fde5c1ba7d, 0x8131f31a214bd6bd, 0x2ab91587555bda62}}, + {{0xaf25b0a84cee9730, 0x025a8430e8864b8a, 0xc11b50029f016732, 0x7a164e1b9a80f8f4}}, + {{0x9bf211f4f1674834, 0xb84e6b17f62df895, 0xd7de6f075b722a4e, 0x549a04b963bb2a21}}}, +{{{0x95fe050a056818bf, 0x327e89715660faa9, 0xc3e8e3cd06a05073, 0x27933f4c7445a49a}}, + {{0x287351b98efc099f, 0x6765c6f47dfd2538, 0xca348d3dfb0a9265, 0x680e910321e58727}}, + {{0xbf1e45ece51426b0, 0xe32bc63d6dba0f94, 0xe42974d58cf852c0, 0x44f079b1b0e64c18}}}, +{{{0x7f9182c3a447d6ba, 0xd50014d14b2729b7, 0xe33cf11cb864a087, 0x154a7e73eb1b55f3}}, + {{0xa212bc4408a5bb33, 0x8d5048c3c75eed02, 0xdd1beb0c5abfec44, 0x2945ccf146e206eb}}, + {{0xc832a179e7d003b3, 0x5f729d0a00124d7e, 0x62c1d4a10e6d8ff3, 0x68b8ac5938b27a98}}}, +{{{0x499806b67b7d8ca4, 0x575be28427d22739, 0xbb085ce7204553b9, 0x38b64c41ae417884}}, + {{0x3a0ceeeb77157131, 0x9b27158900c8af88, 0x8065b668da59a736, 0x51e57bb6a2cc38bd}}, + {{0x8f9dad91689de3a4, 0x175f2428f8fb9137, 0x050ab5329fcfb988, 0x7865dfa21354c09f}}}, +{{{0xba6f2c9aaa3221b1, 0x6ca021533bba23a7, 0x9dea764f92192c3a, 0x1d6edd5d2e5317e0}}, + {{0x6b1a5cd0944ea3bf, 0x7470353ab39dc0d2, 0x71b2528228542e49, 0x461bea69283c927e}}, + {{0x217a8aacab0fda36, 0xa528c6543d3549c8, 0x37d05b8b13ab7568, 0x233cef623a2cbc37}}}, +{{{0xe2a75dedf39234d9, 0x963d7680e1b558f9, 0x2c2741ac6e3c23fb, 0x3a9024a1320e01c3}}, + {{0x59b7596604dd3e8f, 0x6cb30377e288702c, 0xb1339c665ed9c323, 0x0915e76061bce52f}}, + {{0xdf7de835a834a37e, 0x8be19cda689857ea, 0x2c1185367167b326, 0x589eb3d9dbefd5c2}}}, +{{{0x7ec851ca553e2df3, 0xa71284cba64878b3, 0xe6b5e4193288d1e7, 0x4cf210ec5a9a8883}}, + {{0x322d04a52d9021f6, 0xb9c19f3375c6bf9c, 0x587a3a4342d20b09, 0x143b1cf8aa64fe61}}, + {{0x9f867c7d968acaab, 0x5f54258e27092729, 0xd0a7d34bea180975, 0x21b546a3374126e1}}}, +{{{0xa94ff858a2888343, 0xce0ed4565313ed3c, 0xf55c3dcfb5bf34fa, 0x0a653ca5c9eab371}}, + {{0x490a7a45d185218f, 0x9a15377846049335, 0x0060ea09cc31e1f6, 0x7e041577f86ee965}}, + {{0x66b2a496ce5b67f3, 0xff5492d8bd569796, 0x503cec294a592cd0, 0x566943650813acb2}}}, +{{{0xb818db0c26620798, 0x5d5c31d9606e354a, 0x0982fa4f00a8cdc7, 0x17e12bcd4653e2d4}}, + {{0x5672f9eb1dabb69d, 0xba70b535afe853fc, 0x47ac0f752796d66d, 0x32a5351794117275}}, + {{0xd3a644a6df648437, 0x703b6559880fbfdd, 0xcb852540ad3a1aa5, 0x0900b3f78e4c6468}}}, +{{{0x0a851b9f679d651b, 0xe108cb61033342f2, 0xd601f57fe88b30a3, 0x371f3acaed2dd714}}, + {{0xed280fbec816ad31, 0x52d9595bd8e6efe3, 0x0fe71772f6c623f5, 0x4314030b051e293c}}, + {{0xd560005efbf0bcad, 0x8eb70f2ed1870c5e, 0x201f9033d084e6a0, 0x4c3a5ae1ce7b6670}}}, +{{{0x4138a434dcb8fa95, 0x870cf67d6c96840b, 0xde388574297be82c, 0x7c814db27262a55a}}, + {{0xbaf875e4c93da0dd, 0xb93282a771b9294d, 0x80d63fb7f4c6c460, 0x6de9c73dea66c181}}, + {{0x478904d5a04df8f2, 0xfafbae4ab10142d3, 0xf6c8ac63555d0998, 0x5aac4a412f90b104}}}, +{{{0xc64f326b3ac92908, 0x5551b282e663e1e0, 0x476b35f54a1a4b83, 0x1b9da3fe189f68c2}}, + {{0x603a0d0abd7f5134, 0x8089c932e1d3ae46, 0xdf2591398798bd63, 0x1c145cd274ba0235}}, + {{0x32e8386475f3d743, 0x365b8baf6ae5d9ef, 0x825238b6385b681e, 0x234929c1167d65e1}}}, +{{{0x984decaba077ade8, 0x383f77ad19eb389d, 0xc7ec6b7e2954d794, 0x59c77b3aeb7c3a7a}}, + {{0x48145cc21d099fcf, 0x4535c192cc28d7e5, 0x80e7c1e548247e01, 0x4a5f28743b2973ee}}, + {{0xd3add725225ccf62, 0x911a3381b2152c5d, 0xd8b39fad5b08f87d, 0x6f05606b4799fe3b}}}, +{{{0x9ffe9e92177ba962, 0x98aee71d0de5cae1, 0x3ff4ae942d831044, 0x714de12e58533ac8}}, + {{0x5b433149f91b6483, 0xadb5dc655a2cbf62, 0x87fa8412632827b3, 0x60895e91ab49f8d8}}, + {{0xe9ecf2ed0cf86c18, 0xb46d06120735dfd4, 0xbc9da09804b96be7, 0x73e2e62fd96dc26b}}}, +{{{0xed5b635449aa515e, 0xa865c49f0bc6823a, 0x850c1fe95b42d1c4, 0x30d76d6f03d315b9}}, + {{0x2eccdd0e632f9c1d, 0x51d0b69676893115, 0x52dfb76ba8637a58, 0x6dd37d49a00eef39}}, + {{0x6c4444172106e4c7, 0xfb53d680928d7f69, 0xb4739ea4694d3f26, 0x10c697112e864bb0}}}, +{{{0x6493c4277dbe5fde, 0x265d4fad19ad7ea2, 0x0e00dfc846304590, 0x25e61cabed66fe09}}, + {{0x0ca62aa08358c805, 0x6a3d4ae37a204247, 0x7464d3a63b11eddc, 0x03bf9baf550806ef}}, + {{0x3f13e128cc586604, 0x6f5873ecb459747e, 0xa0b63dedcc1268f5, 0x566d78634586e22c}}}, +{{{0x1637a49f9cc10834, 0xbc8e56d5a89bc451, 0x1cb5ec0f7f7fd2db, 0x33975bca5ecc35d9}}, + {{0xa1054285c65a2fd0, 0x6c64112af31667c3, 0x680ae240731aee58, 0x14fba5f34793b22a}}, + {{0x3cd746166985f7d4, 0x593e5e84c9c80057, 0x2fc3f2b67b61131e, 0x14829cea83fc526c}}}, +{{{0xff437b8497dd95c2, 0x6c744e30aa4eb5a7, 0x9e0c5d613c85e88b, 0x2fd9c71e5f758173}}, + {{0x21e70b2f4e71ecb8, 0xe656ddb940a477e3, 0xbf6556cece1d4f80, 0x05fc3bc4535d7b7e}}, + {{0x24b8b3ae52afdedd, 0x3495638ced3b30cf, 0x33a4bc83a9be8195, 0x373767475c651f04}}}, +{{{0x2fba99fd40d1add9, 0xb307166f96f4d027, 0x4363f05215f03bae, 0x1fbea56c3b18f999}}, + {{0x634095cb14246590, 0xef12144016c15535, 0x9e38140c8910bc60, 0x6bf5905730907c8c}}, + {{0x0fa778f1e1415b8a, 0x06409ff7bac3a77e, 0x6f52d7b89aa29a50, 0x02521cf67a635a56}}}, +{{{0x513fee0b0a9d5294, 0x8f98e75c0fdf5a66, 0xd4618688bfe107ce, 0x3fa00a7e71382ced}}, + {{0xb1146720772f5ee4, 0xe8f894b196079ace, 0x4af8224d00ac824a, 0x001753d9f7cd6cc4}}, + {{0x3c69232d963ddb34, 0x1dde87dab4973858, 0xaad7d1f9a091f285, 0x12b5fe2fa048edb6}}}, +{{{0x71f0fbc496fce34d, 0x73b9826badf35bed, 0xd2047261ff28c561, 0x749b76f96fb1206f}}, + {{0xdf2b7c26ad6f1e92, 0x4b66d323504b8913, 0x8c409dc0751c8bc3, 0x6f7e93c20796c7b8}}, + {{0x1f5af604aea6ae05, 0xc12351f1bee49c99, 0x61a808b5eeff6b66, 0x0fcec10f01e02151}}}, +{{{0x644d58a649fe1e44, 0x21fcaea231ad777e, 0x02441c5a887fd0d2, 0x4901aa7183c511f3}}, + {{0x3df2d29dc4244e45, 0x2b020e7493d8de0a, 0x6cc8067e820c214d, 0x413779166feab90a}}, + {{0x08b1b7548c1af8f0, 0xce0f7a7c246299b4, 0xf760b0f91e06d939, 0x41bb887b726d1213}}}, +{{{0x9267806c567c49d8, 0x066d04ccca791e6a, 0xa69f5645e3cc394b, 0x5c95b686a0788cd2}}, + {{0x97d980e0aa39f7d2, 0x35d0384252c6b51c, 0x7d43f49307cd55aa, 0x56bd36cfb78ac362}}, + {{0x2ac519c10d14a954, 0xeaf474b494b5fa90, 0xe6af8382a9f87a5a, 0x0dea6db1879be094}}}, +{{{0xaa66bf547344e5ab, 0xda1258888f1b4309, 0x5e87d2b3fd564b2f, 0x5b2c78885483b1dd}}, + {{0x15baeb74d6a8797a, 0x7ef55cf1fac41732, 0x29001f5a3c8b05c5, 0x0ad7cc8752eaccfb}}, + {{0x52151362793408cf, 0xeb0f170319963d94, 0xa833b2fa883d9466, 0x093a7fa775003c78}}}, +{{{0xe5107de63a16d7be, 0xa377ffdc9af332cf, 0x70d5bf18440b677f, 0x6a252b19a4a31403}}, + {{0xb8e9604460a91286, 0x7f3fd8047778d3de, 0x67d01e31bf8a5e2d, 0x7b038a06c27b653e}}, + {{0x9ed919d5d36990f3, 0x5213aebbdb4eb9f2, 0xc708ea054cb99135, 0x58ded57f72260e56}}}, +{{{0x78e79dade9413d77, 0xf257f9d59729e67d, 0x59db910ee37aa7e6, 0x6aa11b5bbb9e039c}}, + {{0xda6d53265b0fd48b, 0x8960823193bfa988, 0xd78ac93261d57e28, 0x79f2942d3a5c8143}}, + {{0x97da2f25b6c88de9, 0x251ba7eaacf20169, 0x09b44f87ef4eb4e4, 0x7d90ab1bbc6a7da5}}}, +{{{0x9acca683a7016bfe, 0x90505f4df2c50b6d, 0x6b610d5fcce435aa, 0x19a10d446198ff96}}, + {{0x1a07a3f496b3c397, 0x11ceaa188f4e2532, 0x7d9498d5a7751bf0, 0x19ed161f508dd8a0}}, + {{0x560a2cd687dce6ca, 0x7f3568c48664cf4d, 0x8741e95222803a38, 0x483bdab1595653fc}}}, +{{{0xfa780f148734fa49, 0x106f0b70360534e0, 0x2210776fe3e307bd, 0x3286c109dde6a0fe}}, + {{0xd6cf4d0ab4da80f6, 0x82483e45f8307fe0, 0x05005269ae6f9da4, 0x1c7052909cf7877a}}, + {{0x32ee7de2874e98d4, 0x14c362e9b97e0c60, 0x5781dcde6a60a38a, 0x217dd5eaaa7aa840}}}, +{{{0x9db7c4d0248e1eb0, 0xe07697e14d74bf52, 0x1e6a9b173c562354, 0x7fa7c21f795a4965}}, + {{0x8bdf1fb9be8c0ec8, 0x00bae7f8e30a0282, 0x4963991dad6c4f6c, 0x07058a6e5df6f60a}}, + {{0xe9eb02c4db31f67f, 0xed25fd8910bcfb2b, 0x46c8131f5c5cddb4, 0x33b21c13a0cb9bce}}}, +{{{0x360692f8087d8e31, 0xf4dcc637d27163f7, 0x25a4e62065ea5963, 0x659bf72e5ac160d9}}, + {{0x9aafb9b05ee38c5b, 0xbf9d2d4e071a13c7, 0x8eee6e6de933290a, 0x1c3bab17ae109717}}, + {{0x1c9ab216c7cab7b0, 0x7d65d37407bbc3cc, 0x52744750504a58d5, 0x09f2606b131a2990}}}, +{{{0x40e87d44744346be, 0x1d48dad415b52b25, 0x7c3a8a18a13b603e, 0x4eb728c12fcdbdf7}}, + {{0x7e234c597c6691ae, 0x64889d3d0a85b4c8, 0xdae2c90c354afae7, 0x0a871e070c6a9e1d}}, + {{0x3301b5994bbc8989, 0x736bae3a5bdd4260, 0x0d61ade219d59e3c, 0x3ee7300f2685d464}}}, +{{{0xf5d255e49e7dd6b7, 0x8016115c610b1eac, 0x3c99975d92e187ca, 0x13815762979125c2}}, + {{0x43fa7947841e7518, 0xe5c6fa59639c46d7, 0xa1065e1de3052b74, 0x7d47c6a2cfb89030}}, + {{0x3fdad0148ef0d6e0, 0x9d3e749a91546f3c, 0x71ec621026bb8157, 0x148cf58d34c9ec80}}}, +{{{0x46a492f67934f027, 0x469984bef6840aa9, 0x5ca1bc2a89611854, 0x3ff2fa1ebd5dbbd4}}, + {{0xe2572f7d9ae4756d, 0x56c345bb88f3487f, 0x9fd10b6d6960a88d, 0x278febad4eaea1b9}}, + {{0xb1aa681f8c933966, 0x8c21949c20290c98, 0x39115291219d3c52, 0x4104dd02fe9c677b}}}, +{{{0x72b2bf5e1124422a, 0xa1fa0c3398a33ab5, 0x94cb6101fa52b666, 0x2c863b00afaf53d5}}, + {{0x81214e06db096ab8, 0x21a8b6c90ce44f35, 0x6524c12a409e2af5, 0x0165b5a48efca481}}, + {{0xf190a474a0846a76, 0x12eff984cd2f7cc0, 0x695e290658aa2b8f, 0x591b67d9bffec8b8}}}, +{{{0x312f0d1c80b49bfa, 0x5979515eabf3ec8a, 0x727033c09ef01c88, 0x3de02ec7ca8f7bcb}}, + {{0x99b9b3719f18b55d, 0xe465e5faa18c641e, 0x61081136c29f05ed, 0x489b4f867030128b}}, + {{0xd232102d3aeb92ef, 0xe16253b46116a861, 0x3d7eabe7190baa24, 0x49f5fbba496cbebf}}}, +{{{0x30949a108a5bcfd4, 0xdc40dd70bc6473eb, 0x92c294c1307c0d1c, 0x5604a86dcbfa6e74}}, + {{0x155d628c1e9c572e, 0x8a4d86acc5884741, 0x91a352f6515763eb, 0x06a1a6c28867515b}}, + {{0x7288d1d47c1764b6, 0x72541140e0418b51, 0x9f031a6018acf6d1, 0x20989e89fe2742c6}}}, +{{{0x499777fd3a2dcc7f, 0x32857c2ca54fd892, 0xa279d864d207e3a0, 0x0403ed1d0ca67e29}}, + {{0x1674278b85eaec2e, 0x5621dc077acb2bdf, 0x640a4c1661cbf45a, 0x730b9950f70595d3}}, + {{0xc94b2d35874ec552, 0xc5e6c8cf98246f8d, 0xf7cb46fa16c035ce, 0x5bd7454308303dcc}}}, +{{{0x7f9ad19528b24cc2, 0x7f6b54656335c181, 0x66b8b66e4fc07236, 0x133a78007380ad83}}, + {{0x85c4932115e7792a, 0xc64c89a2bdcdddc9, 0x9d1e3da8ada3d762, 0x5bb7db123067f82c}}, + {{0x0961f467c6ca62be, 0x04ec21d6211952ee, 0x182360779bd54770, 0x740dca6d58f0e0d2}}}, +{{{0x50b70bf5d3f0af0b, 0x4feaf48ae32e71f7, 0x60e84ed3a55bbd34, 0x00ed489b3f50d1ed}}, + {{0x3906c72aed261ae5, 0x9ab68fd988e100f7, 0xf5e9059af3360197, 0x0e53dc78bf2b6d47}}, + {{0xb90829bf7971877a, 0x5e4444636d17e631, 0x4d05c52e18276893, 0x27632d9a5a4a4af5}}}, +{{{0xd11ff05154b260ce, 0xd86dc38e72f95270, 0x601fcd0d267cc138, 0x2b67916429e90ccd}}, + {{0xa98285d187eaffdb, 0xa5b4fbbbd8d0a864, 0xb658f27f022663f7, 0x3bbc2b22d99ce282}}, + {{0xb917c952583c0a58, 0x653ff9b80fe4c6f3, 0x9b0da7d7bcdf3c0c, 0x43a0eeb6ab54d60e}}}, +{{{0x396966a46d4a5487, 0xf811a18aac2bb3ba, 0x66e4685b5628b26b, 0x70a477029d929b92}}, + {{0x3ac6322357875fe8, 0xd9d4f4ecf5fbcb8f, 0x8dee8493382bb620, 0x50c5eaa14c799fdc}}, + {{0xdd0edc8bd6f2fb3c, 0x54c63aa79cc7b7a0, 0xae0b032b2c8d9f1a, 0x6f9ce107602967fb}}}, +{{{0xad1054b1cde1c22a, 0xc4a8e90248eb32df, 0x5f3e7b33accdc0ea, 0x72364713fc79963e}}, + {{0x139693063520e0b5, 0x437fcf7c88ea03fe, 0xf7d4c40bd3c959bc, 0x699154d1f893ded9}}, + {{0x315d5c75b4b27526, 0xcccb842d0236daa5, 0x22f0c8a3345fee8e, 0x73975a617d39dbed}}}, +{{{0xe4024df96375da10, 0x78d3251a1830c870, 0x902b1948658cd91c, 0x7e18b10b29b7438a}}, + {{0x6f37f392f4433e46, 0x0e19b9a11f566b18, 0x220fb78a1fd1d662, 0x362a4258a381c94d}}, + {{0x9071d9132b6beb2f, 0x0f26e9ad28418247, 0xeab91ec9bdec925d, 0x4be65bc8f48af2de}}}, +{{{0x78487feba36e7028, 0x5f3f13001dd8ce34, 0x934fb12d4b30c489, 0x056c244d397f0a2b}}, + {{0x1d50fba257c26234, 0x7bd4823adeb0678b, 0xc2b0dc6ea6538af5, 0x5665eec6351da73e}}, + {{0xdb3ee00943bfb210, 0x4972018720800ac2, 0x26ab5d6173bd8667, 0x20b209c2ab204938}}}, +{{{0x549e342ac07fb34b, 0x02d8220821373d93, 0xbc262d70acd1f567, 0x7a92c9fdfbcac784}}, + {{0x1fcca94516bd3289, 0x448d65aa41420428, 0x59c3b7b216a55d62, 0x49992cc64e612cd8}}, + {{0x65bd1bea70f801de, 0x1befb7c0fe49e28a, 0xa86306cdb1b2ae4a, 0x3b7ac0cd265c2a09}}}, +{{{0x822bee438c01bcec, 0x530cb525c0fbc73b, 0x48519034c1953fe9, 0x265cc261e09a0f5b}}, + {{0xf0d54e4f22ed39a7, 0xa2aae91e5608150a, 0xf421b2e9eddae875, 0x31bc531d6b7de992}}, + {{0xdf3d134da980f971, 0x7a4fb8d1221a22a7, 0x3df7d42035aad6d8, 0x2a14edcc6a1a125e}}}, +{{{0xdf48ee0752cfce4e, 0xc3fffaf306ec08b7, 0x05710b2ab95459c4, 0x161d25fa963ea38d}}, + {{0x231a8c570478433c, 0xb7b5270ec281439d, 0xdbaa99eae3d9079f, 0x2c03f5256c2b03d9}}, + {{0x790f18757b53a47d, 0x307b0130cf0c5879, 0x31903d77257ef7f9, 0x699468bdbd96bbaf}}}, +{{{0xbd1f2f46f4dafecf, 0x7cef0114a47fd6f7, 0xd31ffdda4a47b37f, 0x525219a473905785}}, + {{0xd8dd3de66aa91948, 0x485064c22fc0d2cc, 0x9b48246634fdea2f, 0x293e1c4e6c4a2e3a}}, + {{0x376e134b925112e1, 0x703778b5dca15da0, 0xb04589af461c3111, 0x5b605c447f032823}}}, +{{{0xb965805920c47c89, 0xe7f0100c923b8fcc, 0x0001256502e2ef77, 0x24a76dcea8aeb3ee}}, + {{0x3be9fec6f0e7f04c, 0x866a579e75e34962, 0x5542ef161e1de61a, 0x2f12fef4cc5abdd5}}, + {{0x0a4522b2dfc0c740, 0x10d06e7f40c9a407, 0xc6cf144178cff668, 0x5e607b2518a43790}}}, +{{{0x58b31d8f6cdf1818, 0x35cfa74fc36258a2, 0xe1b3ff4f66e61d6e, 0x5067acab6ccdd5f7}}, + {{0xa02c431ca596cf14, 0xe3c42d40aed3e400, 0xd24526802e0f26db, 0x201f33139e457068}}, + {{0xfd527f6b08039d51, 0x18b14964017c0006, 0xd5220eb02e25a4a8, 0x397cba8862460375}}}, +{{{0x30c13093f05959b2, 0xe23aa18de9a97976, 0x222fd491721d5e26, 0x2339d320766e6c3a}}, + {{0x7815c3fbc81379e7, 0xa6619420dde12af1, 0xffa9c0f885a8fdd5, 0x771b4022c1e1c252}}, + {{0xd87dd986513a2fa7, 0xf5ac9b71f9d4cf08, 0xd06bc31b1ea283b3, 0x331a189219971a76}}}, +{{{0xf5166f45fb4f80c6, 0x9c36c7de61c775cf, 0xe3d4e81b9041d91c, 0x31167c6b83bdfe21}}, + {{0x26512f3a9d7572af, 0x5bcbe28868074a9e, 0x84edc1c11180f7c4, 0x1ac9619ff649a67b}}, + {{0xf22b3842524b1068, 0x5068343bee9ce987, 0xfc9d71844a6250c8, 0x612436341f08b111}}}, +{{{0xd99d41db874e898d, 0x09fea5f16c07dc20, 0x793d2c67d00f9bbc, 0x46ebe2309e5eff40}}, + {{0x8b6349e31a2d2638, 0x9ddfb7009bd3fd35, 0x7f8bf1b8a3a06ba4, 0x1522aa3178d90445}}, + {{0x2c382f5369614938, 0xdafe409ab72d6d10, 0xe8c83391b646f227, 0x45fe70f50524306c}}}, +{{{0xda4875a6960c0b8c, 0x5b68d076ef0e2f20, 0x07fb51cf3d0b8fd4, 0x428d1623a0e392d4}}, + {{0x62f24920c8951491, 0x05f007c83f630ca2, 0x6fbb45d2f5c9d4b8, 0x16619f6db57a2245}}, + {{0x084f4a4401a308fd, 0xa82219c376a5caac, 0xdeb8de4643d1bc7d, 0x1d81592d60bd38c6}}}, +{{{0xd833d7beec2a4c38, 0x2c9162830acc20ed, 0xe93a47aa92df7581, 0x702d67a3333c4a81}}, + {{0x3a4a369a2f89c8a1, 0x63137a1d7c8de80d, 0xbcac008a78eda015, 0x2cb8b3a5b483b03f}}, + {{0x36e417cbcb1b90a1, 0x33b3ddaa7f11794e, 0x3f510808885bc607, 0x24141dc0e6a8020d}}}, +{{{0x59f73c773fefee9d, 0xb3f1ef89c1cf989d, 0xe35dfb42e02e545f, 0x5766120b47a1b47c}}, + {{0x91925dccbd83157d, 0x3ca1205322cc8094, 0x28e57f183f90d6e4, 0x1a4714cede2e767b}}, + {{0xdb20ba0fb8b6b7ff, 0xb732c3b677511fa1, 0xa92b51c099f02d89, 0x4f3875ad489ca5f1}}}, +{{{0xc7fc762f4932ab22, 0x7ac0edf72f4c3c1b, 0x5f6b55aa9aa895e8, 0x3680274dad0a0081}}, + {{0x79ed13f6ee73eec0, 0xa5c6526d69110bb1, 0xe48928c38603860c, 0x722a1446fd7059f5}}, + {{0xd0959fe9a8cf8819, 0xd0a995508475a99c, 0x6eac173320b09cc5, 0x628ecf04331b1095}}}, +{{{0x98bcb118a9d0ddbc, 0xee449e3408b4802b, 0x87089226b8a6b104, 0x685f349a45c7915d}}, + {{0x9b41acf85c74ccf1, 0xb673318108265251, 0x99c92aed11adb147, 0x7a47d70d34ecb40f}}, + {{0x60a0c4cbcc43a4f5, 0x775c66ca3677bea9, 0xa17aa1752ff8f5ed, 0x11ded9020e01fdc0}}}, +{{{0x890e7809caefe704, 0x8728296de30e8c6c, 0x4c5cd2a392aeb1c9, 0x194263d15771531f}}, + {{0x471f95b03bea93b7, 0x0552d7d43313abd3, 0xbd9370e2e17e3f7b, 0x7b120f1db20e5bec}}, + {{0x17d2fb3d86502d7a, 0xb564d84450a69352, 0x7da962c8a60ed75d, 0x00d0f85b318736aa}}}, +{{{0x978b142e777c84fd, 0xf402644705a8c062, 0xa67ad51be7e612c7, 0x2f7b459698dd6a33}}, + {{0xa6753c1efd7621c1, 0x69c0b4a7445671f5, 0x971f527405b23c11, 0x387bc74851a8c7cd}}, + {{0x81894b4d4a52a9a8, 0xadd93e12f6b8832f, 0x184d8548b61bd638, 0x3f1c62dbd6c9f6cd}}}, +{{{0x2e8f1f0091910c1f, 0xa4df4fe0bff2e12c, 0x60c6560aee927438, 0x6338283facefc8fa}}, + {{0x3fad3e40148f693d, 0x052656e194eb9a72, 0x2f4dcbfd184f4e2f, 0x406f8db1c482e18b}}, + {{0x9e630d2c7f191ee4, 0x4fbf8301bc3ff670, 0x787d8e4e7afb73c4, 0x50d83d5be8f58fa5}}}, +{{{0x85683916c11a1897, 0x2d69a4efe506d008, 0x39af1378f664bd01, 0x65942131361517c6}}, + {{0xc0accf90b4d3b66d, 0xa7059de561732e60, 0x033d1f7870c6b0ba, 0x584161cd26d946e4}}, + {{0xbbf2b1a072d27ca2, 0xbf393c59fbdec704, 0xe98dbbcee262b81e, 0x02eebd0b3029b589}}}, +{{{0x61368756a60dac5f, 0x17e02f6aebabdc57, 0x7f193f2d4cce0f7d, 0x20234a7789ecdcf0}}, + {{0x8765b69f7b85c5e8, 0x6ff0678bd168bab2, 0x3a70e77c1d330f9b, 0x3a5f6d51b0af8e7c}}, + {{0x76d20db67178b252, 0x071c34f9d51ed160, 0xf62a4a20b3e41170, 0x7cd682353cffe366}}}, +{{{0x0be1a45bd887fab6, 0x2a846a32ba403b6e, 0xd9921012e96e6000, 0x2838c8863bdc0943}}, + {{0xa665cd6068acf4f3, 0x42d92d183cd7e3d3, 0x5759389d336025d9, 0x3ef0253b2b2cd8ff}}, + {{0xd16bb0cf4a465030, 0xfa496b4115c577ab, 0x82cfae8af4ab419d, 0x21dcb8a606a82812}}}, +{{{0x5c6004468c9d9fc8, 0x2540096ed42aa3cb, 0x125b4d4c12ee2f9c, 0x0bc3d08194a31dab}}, + {{0x9a8d00fabe7731ba, 0x8203607e629e1889, 0xb2cc023743f3d97f, 0x5d840dbf6c6f678b}}, + {{0x706e380d309fe18b, 0x6eb02da6b9e165c7, 0x57bbba997dae20ab, 0x3a4276232ac196dd}}}, +{{{0x4b42432c8a7084fa, 0x898a19e3dfb9e545, 0xbe9f00219c58e45d, 0x1ff177cea16debd1}}, + {{0x3bf8c172db447ecb, 0x5fcfc41fc6282dbd, 0x80acffc075aa15fe, 0x0770c9e824e1a9f9}}, + {{0xcf61d99a45b5b5fd, 0x860984e91b3a7924, 0xe7300919303e3e89, 0x39f264fd41500b1e}}}, +{{{0xa7ad3417dbe7e29c, 0xbd94376a2b9c139c, 0xa0e91b8e93597ba9, 0x1712d73468889840}}, + {{0xd19b4aabfe097be1, 0xa46dfce1dfe01929, 0xc3c908942ca6f1ff, 0x65c621272c35f14e}}, + {{0xe72b89f8ce3193dd, 0x4d103356a125c0bb, 0x0419a93d2e1cfe83, 0x22f9800ab19ce272}}}, +{{{0x605a368a3e9ef8cb, 0xe3e9c022a5504715, 0x553d48b05f24248f, 0x13f416cd647626e5}}, + {{0x42029fdd9a6efdac, 0xb912cebe34a54941, 0x640f64b987bdf37b, 0x4171a4d38598cab4}}, + {{0xfa2758aa99c94c8c, 0x23006f6fb000b807, 0xfbd291ddadda5392, 0x508214fa574bd1ab}}}, +{{{0xc20269153ed6fe4b, 0xa65a6739511d77c4, 0xcbde26462c14af94, 0x22f960ec6faba74b}}, + {{0x461a15bb53d003d6, 0xb2102888bcf3c965, 0x27c576756c683a5a, 0x3a7758a4c86cb447}}, + {{0x548111f693ae5076, 0x1dae21df1dfd54a6, 0x12248c90f3115e65, 0x5d9fd15f8de7f494}}}, +{{{0x031408d36d63727f, 0x6a379aefd7c7b533, 0xa9e18fc5ccaee24b, 0x332f35914f8fbed3}}, + {{0x3f244d2aeed7521e, 0x8e3a9028432e9615, 0xe164ba772e9c16d4, 0x3bc187fa47eb98d8}}, + {{0x6d470115ea86c20c, 0x998ab7cb6c46d125, 0xd77832b53a660188, 0x450d81ce906fba03}}}, +{{{0xf8ae4d2ad8453902, 0x7018058ee8db2d1d, 0xaab3995fc7d2c11e, 0x53b16d2324ccca79}}, + {{0x23264d66b2cae0b5, 0x7dbaed33ebca6576, 0x030ebed6f0d24ac8, 0x2a887f78f7635510}}, + {{0x2a23b9e75c012d4f, 0x0c974651cae1f2ea, 0x2fb63273675d70ca, 0x0ba7250b864403f5}}}, +{{{0xbb0d18fd029c6421, 0xbc2d142189298f02, 0x8347f8e68b250e96, 0x7b9f2fe8032d71c9}}, + {{0xdd63589386f86d9c, 0x61699176e13a85a4, 0x2e5111954eaa7d57, 0x32c21b57fb60bdfb}}, + {{0xd87823cd319e0780, 0xefc4cfc1897775c5, 0x4854fb129a0ab3f7, 0x12c49d417238c371}}}, +{{{0x0950b533ffe83769, 0x21861c1d8e1d6bd1, 0xf022d8381302e510, 0x2509200c6391cab4}}, + {{0x09b3a01783799542, 0x626dd08faad5ee3f, 0xba00bceeeb70149f, 0x1421b246a0a444c9}}, + {{0x4aa43a8e8c24a7c7, 0x04c1f540d8f05ef5, 0xadba5e0c0b3eb9dc, 0x2ab5504448a49ce3}}}, +{{{0x2ed227266f0f5dec, 0x9824ee415ed50824, 0x807bec7c9468d415, 0x7093bae1b521e23f}}, + {{0xdc07ac631c5d3afa, 0x58615171f9df8c6c, 0x72a079d89d73e2b0, 0x7301f4ceb4eae15d}}, + {{0x6409e759d6722c41, 0xa674e1cf72bf729b, 0xbc0a24eb3c21e569, 0x390167d24ebacb23}}}, +{{{0x27f58e3bba353f1c, 0x4c47764dbf6a4361, 0xafbbc4e56e562650, 0x07db2ee6aae1a45d}}, + {{0xd7bb054ba2f2120b, 0xe2b9ceaeb10589b7, 0x3fe8bac8f3c0edbe, 0x4cbd40767112cb69}}, + {{0x0b603cc029c58176, 0x5988e3825cb15d61, 0x2bb61413dcf0ad8d, 0x7b8eec6c74183287}}}, +{{{0xe4ca40782cd27cb0, 0xdaf9c323fbe967bd, 0xb29bd34a8ad41e9e, 0x72810497626ede4d}}, + {{0x32fee570fc386b73, 0xda8b0141da3a8cc7, 0x975ffd0ac8968359, 0x6ee809a1b132a855}}, + {{0x9444bb31fcfd863a, 0x2fe3690a3e4e48c5, 0xdc29c867d088fa25, 0x13bd1e38d173292e}}}, +{{{0xd32b4cd8696149b5, 0xe55937d781d8aab7, 0x0bcb2127ae122b94, 0x41e86fcfb14099b0}}, + {{0x223fb5cf1dfac521, 0x325c25316f554450, 0x030b98d7659177ac, 0x1ed018b64f88a4bd}}, + {{0x3630dfa1b802a6b0, 0x880f874742ad3bd5, 0x0af90d6ceec5a4d4, 0x746a247a37cdc5d9}}}, +{{{0xd531b8bd2b7b9af6, 0x5005093537fc5b51, 0x232fcf25c593546d, 0x20a365142bb40f49}}, + {{0x6eccd85278d941ed, 0x2254ae83d22f7843, 0xc522d02e7bbfcdb7, 0x681e3351bff0e4e2}}, + {{0x8b64b59d83034f45, 0x2f8b71f21fa20efb, 0x69249495ba6550e4, 0x539ef98e45d5472b}}}, +{{{0x6e7bb6a1a6205275, 0xaa4f21d7413c8e83, 0x6f56d155e88f5cb2, 0x2de25d4ba6345be1}}, + {{0xd074d8961cae743f, 0xf86d18f5ee1c63ed, 0x97bdc55be7f4ed29, 0x4cbad279663ab108}}, + {{0x80d19024a0d71fcd, 0xc525c20afb288af8, 0xb1a3974b5f3a6419, 0x7d7fbcefe2007233}}}, +{{{0xfaef1e6a266b2801, 0x866c68c4d5739f16, 0xf68a2fbc1b03762c, 0x5975435e87b75a8d}}, + {{0xcd7c5dc5f3c29094, 0xc781a29a2a9105ab, 0x80c61d36421c3058, 0x4f9cd196dcd8d4d7}}, + {{0x199297d86a7b3768, 0xd0d058241ad17a63, 0xba029cad5c1c0c17, 0x7ccdd084387a0307}}}, +{{{0xdca6422c6d260417, 0xae153d50948240bd, 0xa9c0c1b4fb68c677, 0x428bd0ed61d0cf53}}, + {{0x9b0c84186760cc93, 0xcdae007a1ab32a99, 0xa88dec86620bda18, 0x3593ca848190ca44}}, + {{0x9213189a5e849aa7, 0xd4d8c33565d8facd, 0x8c52545b53fdbbd1, 0x27398308da2d63e6}}}, +{{{0x42c38d28435ed413, 0xbd50f3603278ccc9, 0xbb07ab1a79da03ef, 0x269597aebe8c3355}}, + {{0xb9a10e4c0a702453, 0x0fa25866d57d1bde, 0xffb9d9b5cd27daf7, 0x572c2945492c33fd}}, + {{0xc77fc745d6cd30be, 0xe4dfe8d3e3baaefb, 0xa22c8830aa5dda0c, 0x7f985498c05bca80}}}, +{{{0x3849ce889f0be117, 0x8005ad1b7b54a288, 0x3da3c39f23fc921c, 0x76c2ec470a31f304}}, + {{0xd35615520fbf6363, 0x08045a45cf4dfba6, 0xeec24fbc873fa0c2, 0x30f2653cd69b12e7}}, + {{0x8a08c938aac10c85, 0x46179b60db276bcb, 0xa920c01e0e6fac70, 0x2f1273f1596473da}}}, +{{{0x4739fc7c8ae01e11, 0xfd5274904a6aab9f, 0x41d98a8287728f2e, 0x5d9e572ad85b69f2}}, + {{0x30488bd755a70bc0, 0x06d6b5a4f1d442e7, 0xead1a69ebc596162, 0x38ac1997edc5f784}}, + {{0x0666b517a751b13b, 0x747d06867e9b858c, 0xacacc011454dde49, 0x22dfcd9cbfe9e69c}}}, +{{{0x8ddbd2e0c30d0cd9, 0xad8e665facbb4333, 0x8f6b258c322a961f, 0x6b2916c05448c1c7}}, + {{0x56ec59b4103be0a1, 0x2ee3baecd259f969, 0x797cb29413f5cd32, 0x0fe9877824cde472}}, + {{0x7edb34d10aba913b, 0x4ea3cd822e6dac0e, 0x66083dff6578f815, 0x4c303f307ff00a17}}}, +{{{0xd30a3bd617b28c85, 0xc5d377b739773bea, 0xc6c6e78c1e6a5cbf, 0x0d61b8f78b2ab7c4}}, + {{0x29fc03580dd94500, 0xecd27aa46fbbec93, 0x130a155fc2e2a7f8, 0x416b151ab706a1d5}}, + {{0x56a8d7efe9c136b0, 0xbd07e5cd58e44b20, 0xafe62fda1b57e0ab, 0x191a2af74277e8d2}}}, +{{{0xd550095bab6f4985, 0x04f4cd5b4fbfaf1a, 0x9d8e2ed12a0c7540, 0x2bc24e04b2212286}}, + {{0x09d4b60b2fe09a14, 0xc384f0afdbb1747e, 0x58e2ea8978b5fd6e, 0x519ef577b5e09b0a}}, + {{0x1863d7d91124cca9, 0x7ac08145b88a708e, 0x2bcd7309857031f5, 0x62337a6e8ab8fae5}}}, +{{{0x4bcef17f06ffca16, 0xde06e1db692ae16a, 0x0753702d614f42b0, 0x5f6041b45b9212d0}}, + {{0xd1ab324e1b3a1273, 0x18947cf181055340, 0x3b5d9567a98c196e, 0x7fa00425802e1e68}}, + {{0x7d531574028c2705, 0x80317d69db0d75fe, 0x30fface8ef8c8ddd, 0x7e9de97bb6c3e998}}}, +{{{0x1558967b9e6585a3, 0x97c99ce098e98b92, 0x10af149b6eb3adad, 0x42181fe8f4d38cfa}}, + {{0xf004be62a24d40dd, 0xba0659910452d41f, 0x81c45ee162a44234, 0x4cb829d8a22266ef}}, + {{0x1dbcaa8407b86681, 0x081f001e8b26753b, 0x3cd7ce6a84048e81, 0x78af11633f25f22c}}}, +{{{0x8416ebd40b50babc, 0x1508722628208bee, 0xa3148fafb9c1c36d, 0x0d07daacd32d7d5d}}, + {{0x3241c00e7d65318c, 0xe6bee5dcd0e86de7, 0x118b2dc2fbc08c26, 0x680d04a7fc603dc3}}, + {{0xf9c2414a695aa3eb, 0xdaa42c4c05a68f21, 0x7c6c23987f93963e, 0x210e8cd30c3954e3}}}, +{{{0xac4201f210a71c06, 0x6a65e0aef3bfb021, 0xbc42c35c393632f7, 0x56ea8db1865f0742}}, + {{0x2b50f16137fe6c26, 0xe102bcd856e404d8, 0x12b0f1414c561f6b, 0x51b17bc8d028ec91}}, + {{0xfff5fb4bcf535119, 0xf4989d79df1108a0, 0xbdfcea659a3ba325, 0x18a11f1174d1a6f2}}}, +{{{0x407375ab3f6bba29, 0x9ec3b6d8991e482e, 0x99c80e82e55f92e9, 0x307c13b6fb0c0ae1}}, + {{0xfbd63cdad27a5f2c, 0xf00fc4bc8aa106d7, 0x53fb5c1a8e64a430, 0x04eaabe50c1a2e85}}, + {{0x24751021cb8ab5e7, 0xfc2344495c5010eb, 0x5f1e717b4e5610a1, 0x44da5f18c2710cd5}}}, +{{{0x033cc55ff1b82eb5, 0xb15ae36d411cae52, 0xba40b6198ffbacd3, 0x768edce1532e861f}}, + {{0x9156fe6b89d8eacc, 0xe6b79451e23126a1, 0xbd7463d93944eb4e, 0x726373f6767203ae}}, + {{0xe305ca72eb7ef68a, 0x662cf31f70eadb23, 0x18f026fdb4c45b68, 0x513b5384b5d2ecbd}}}, +{{{0x46d46280c729989e, 0x4b93fbd05368a5dd, 0x63df3f81d1765a89, 0x34cebd64b9a0a223}}, + {{0x5e2702878af34ceb, 0x900b0409b946d6ae, 0x6512ebf7dabd8512, 0x61d9b76988258f81}}, + {{0xa6c5a71349b7d94b, 0xa3f3d15823eb9446, 0x0416fbd277484834, 0x69d45e6f2c70812f}}}, +{{{0xce16f74bc53c1431, 0x2b9725ce2072edde, 0xb8b9c36fb5b23ee7, 0x7e2e0e450b5cc908}}, + {{0x9fe62b434f460efb, 0xded303d4a63607d6, 0xf052210eb7a0da24, 0x237e7dbe00545b93}}, + {{0x013575ed6701b430, 0x231094e69f0bfd10, 0x75320f1583e47f22, 0x71afa699b11155e3}}}, +{{{0x65ce6f9b3953b61d, 0xc65839eaafa141e6, 0x0f435ffda9f759fe, 0x021142e9c2b1c28e}}, + {{0xea423c1c473b50d6, 0x51e87a1f3b38ef10, 0x9b84bf5fb2c9be95, 0x00731fbc78f89a1c}}, + {{0xe430c71848f81880, 0xbf960c225ecec119, 0xb6dae0836bba15e3, 0x4c4d6f3347e15808}}}, +{{{0x18f7eccfc17d1fc9, 0x6c75f5a651403c14, 0xdbde712bf7ee0cdf, 0x193fddaaa7e47a22}}, + {{0x2f0cddfc988f1970, 0x6b916227b0b9f51b, 0x6ec7b6c4779176be, 0x38bf9500a88f9fa8}}, + {{0x1fd2c93c37e8876f, 0xa2f61e5a18d1462c, 0x5080f58239241276, 0x6a6fb99ebf0d4969}}}, +{{{0x6a46c1bb560855eb, 0x2416bb38f893f09d, 0xd71d11378f71acc1, 0x75f76914a31896ea}}, + {{0xeeb122b5b6e423c6, 0x939d7010f286ff8e, 0x90a92a831dcf5d8c, 0x136fda9f42c5eb10}}, + {{0xf94cdfb1a305bdd1, 0x0f364b9d9ff82c08, 0x2a87d8a5c3bb588a, 0x022183510be8dcba}}}, +{{{0x4af766385ead2d14, 0xa08ed880ca7c5830, 0x0d13a6e610211e3d, 0x6a071ce17b806c03}}, + {{0x9d5a710143307a7f, 0xb063de9ec47da45f, 0x22bbfe52be927ad3, 0x1387c441fd40426c}}, + {{0xb5d3c3d187978af8, 0x722b5a3d7f0e4413, 0x0d7b4848bb477ca0, 0x3171b26aaf1edc92}}}, +{{{0xa92f319097564ca8, 0xff7bb84c2275e119, 0x4f55fe37a4875150, 0x221fd4873cf0835a}}, + {{0xa60db7d8b28a47d1, 0xa6bf14d61770a4f1, 0xd4a1f89353ddbd58, 0x6c514a63344243e9}}, + {{0x2322204f3a156341, 0xfb73e0e9ba0a032d, 0xfce0dd4c410f030e, 0x48daa596fb924aaa}}}, +{{{0x6eca8e665ca59cc7, 0xa847254b2e38aca0, 0x31afc708d21e17ce, 0x676dd6fccad84af7}}, + {{0x14f61d5dc84c9793, 0x9941f9e3ef418206, 0xcdf5b88f346277ac, 0x58c837fa0e8a79a9}}, + {{0x0cf9688596fc9058, 0x1ddcbbf37b56a01b, 0xdcc2e77d4935d66a, 0x1c4f73f2c6a57f0a}}}, +{{{0x0e7a4fbd305fa0bb, 0x829d4ce054c663ad, 0xf421c3832fe33848, 0x795ac80d1bf64c42}}, + {{0xb36e706efc7c3484, 0x73dfc9b4c3c1cf61, 0xeb1d79c9781cc7e5, 0x70459adb7daf675c}}, + {{0x1b91db4991b42bb3, 0x572696234b02dcca, 0x9fdf9ee51f8c78dc, 0x5fe162848ce21fd3}}}, +{{{0xe2790aae4d077c41, 0x8b938270db7469a3, 0x6eb632dc8abd16a2, 0x720814ecaa064b72}}, + {{0x315c29c795115389, 0xd7e0e507862f74ce, 0x0c4a762185927432, 0x72de6c984a25a1e4}}, + {{0xae9ab553bf6aa310, 0x050a50a9806d6e1b, 0x92bb7403adff5139, 0x0394d27645be618b}}}, +{{{0x4d572251857eedf4, 0xe3724edde19e93c5, 0x8a71420e0b797035, 0x3b3c833687abe743}}, + {{0xf5396425b23545a4, 0x15a7a27e98fbb296, 0xab6c52bc636fdd86, 0x79d995a8419334ee}}, + {{0xcd8a8ea61195dd75, 0xa504d8a81dd9a82f, 0x540dca81a35879b6, 0x60dd16a379c86a8a}}}, +{{{0x35a2c8487381e559, 0x596ffea6d78082cb, 0xcb9771ebdba7b653, 0x5a08b5019b4da685}}, + {{0x3501d6f8153e47b8, 0xb7a9675414a2f60c, 0x112ee8b6455d9523, 0x4e62a3c18112ea8a}}, + {{0xc8d4ac04516ab786, 0x595af3215295b23d, 0xd6edd234db0230c1, 0x0929efe8825b41cc}}}, +{{{0x5f0601d1cbd0f2d3, 0x736e412f6132bb7f, 0x83604432238dde87, 0x1e3a5272f5c0753c}}, + {{0x8b3172b7ad56651d, 0x01581b7a3fabd717, 0x2dc94df6424df6e4, 0x30376e5d2c29284f}}, + {{0xd2918da78159a59c, 0x6bdc1cd93f0713f3, 0x565f7a934acd6590, 0x53daacec4cb4c128}}}, +{{{0x4ca73bd79cc8a7d6, 0x4d4a738f47e9a9b2, 0xf4cbf12942f5fe00, 0x01a13ff9bdbf0752}}, + {{0x99852bc3852cfdb0, 0x2cc12e9559d6ed0b, 0x70f9e2bf9b5ac27b, 0x4f3b8c117959ae99}}, + {{0x55b6c9c82ff26412, 0x1ac4a8c91fb667a8, 0xd527bfcfeb778bf2, 0x303337da7012a3be}}}, +{{{0x955422228c1c9d7c, 0x01fac1371a9b340f, 0x7e8d9177925b48d7, 0x53f8ad5661b3e31b}}, + {{0x976d3ccbfad2fdd1, 0xcb88839737a640a8, 0x2ff00c1d6734cb25, 0x269ff4dc789c2d2b}}, + {{0x0c003fbdc08d678d, 0x4d982fa37ead2b17, 0xc07e6bcdb2e582f1, 0x296c7291df412a44}}}, +{{{0x7903de2b33daf397, 0xd0ff0619c9a624b3, 0x8a1d252b555b3e18, 0x2b6d581c52e0b7c0}}, + {{0xdfb23205dab8b59e, 0x465aeaa0c8092250, 0xd133c1189a725d18, 0x2327370261f117d1}}, + {{0x3d0543d3623e7986, 0x679414c2c278a354, 0xae43f0cc726196f6, 0x7836c41f8245eaba}}}, +{{{0xe7a254db49e95a81, 0x5192d5d008b0ad73, 0x4d20e5b1d00afc07, 0x5d55f8012cf25f38}}, + {{0xca651e848011937c, 0xc6b0c46e6ef41a28, 0xb7021ba75f3f8d52, 0x119dff99ead7b9fd}}, + {{0x43eadfcbf4b31d4d, 0xc6503f7411148892, 0xfeee68c5060d3b17, 0x329293b3dd4a0ac8}}}, +{{{0x4e59214fe194961a, 0x49be7dc70d71cd4f, 0x9300cfd23b50f22d, 0x4789d446fc917232}}, + {{0x2879852d5d7cb208, 0xb8dedd70687df2e7, 0xdc0bffab21687891, 0x2b44c043677daa35}}, + {{0x1a1c87ab074eb78e, 0xfac6d18e99daf467, 0x3eacbbcd484f9067, 0x60c52eef2bb9a4e4}}}, +{{{0x0b5d89bc3bfd8bf1, 0xb06b9237c9f3551a, 0x0e4c16b0d53028f5, 0x10bc9c312ccfcaab}}, + {{0x702bc5c27cae6d11, 0x44c7699b54a48cab, 0xefbc4056ba492eb2, 0x70d77248d9b6676d}}, + {{0xaa8ae84b3ec2a05b, 0x98699ef4ed1781e0, 0x794513e4708e85d1, 0x63755bd3a976f413}}}, +{{{0xb55fa03e2ad10853, 0x356f75909ee63569, 0x9ff9f1fdbe69b890, 0x0d8cc1c48bc16f84}}, + {{0x3dc7101897f1acb7, 0x5dda7d5ec165bbd8, 0x508e5b9c0fa1020f, 0x2763751737c52a56}}, + {{0x029402d36eb419a9, 0xf0b44e7e77b460a5, 0xcfa86230d43c4956, 0x70c2dd8a7ad166e7}}}, +{{{0x656194509f6fec0e, 0xee2e7ea946c6518d, 0x9733c1f367e09b5c, 0x2e0fac6363948495}}, + {{0x91d4967db8ed7e13, 0x74252f0ad776817a, 0xe40982e00d852564, 0x32b8613816a53ce5}}, + {{0x79e7f7bee448cd64, 0x6ac83a67087886d0, 0xf89fd4d9a0e4db2e, 0x4179215c735a4f41}}}, +{{{0x8c7094e7d7dced2a, 0x97fb8ac347d39c70, 0xe13be033a906d902, 0x700344a30cd99d76}}, + {{0xe4ae33b9286bcd34, 0xb7ef7eb6559dd6dc, 0x278b141fb3d38e1f, 0x31fa85662241c286}}, + {{0xaf826c422e3622f4, 0xc12029879833502d, 0x9bc1b7e12b389123, 0x24bb2312a9952489}}}, +{{{0xb1a8ed1732de67c3, 0x3cb49418461b4948, 0x8ebd434376cfbcd2, 0x0fee3e871e188008}}, + {{0x41f80c2af5f85c6b, 0x687284c304fa6794, 0x8945df99a3ba1bad, 0x0d1d2af9ffeb5d16}}, + {{0xa9da8aa132621edf, 0x30b822a159226579, 0x4004197ba79ac193, 0x16acd79718531d76}}}, +{{{0x72df72af2d9b1d3d, 0x63462a36a432245a, 0x3ecea07916b39637, 0x123e0ef6b9302309}}, + {{0xc959c6c57887b6ad, 0x94e19ead5f90feba, 0x16e24e62a342f504, 0x164ed34b18161700}}, + {{0x487ed94c192fe69a, 0x61ae2cea3a911513, 0x877bf6d3b9a4de27, 0x78da0fc61073f3eb}}}, +{{{0x5bf15d28e52bc66a, 0x2c47e31870f01a8e, 0x2419afbc06c28bdd, 0x2d25deeb256b173a}}, + {{0xa29f80f1680c3a94, 0x71f77e151ae9e7e6, 0x1100f15848017973, 0x054aa4b316b38ddd}}, + {{0xdfc8468d19267cb8, 0x0b28789c66e54daf, 0x2aeb1d2a666eec17, 0x134610a6ab7da760}}}, +{{{0xcaf55ec27c59b23f, 0x99aeed3e154d04f2, 0x68441d72e14141f4, 0x140345133932a0a2}}, + {{0xd91430e0dc028c3c, 0x0eb955a85217c771, 0x4b09e1ed2c99a1fa, 0x42881af2bd6a743c}}, + {{0x7bfec69aab5cad3d, 0xc23e8cd34cb2cfad, 0x685dd14bfb37d6a2, 0x0ad6d64415677a18}}}, +{{{0x781a439e417becb5, 0x4ac5938cd10e0266, 0x5da385110692ac24, 0x11b065a2ade31233}}, + {{0x7914892847927e9f, 0x33dad6ef370aa877, 0x1f8f24fa11122703, 0x5265ac2f2adf9592}}, + {{0x405fdd309afcb346, 0xd9723d4428e63f54, 0x94c01df05f65aaae, 0x43e4dc3ae14c0809}}}, +{{{0xbc12c7f1a938a517, 0x473028ab3180b2e1, 0x3f78571efbcd254a, 0x74e534426ff6f90f}}, + {{0xea6f7ac3adc2c6a3, 0xd0e928f6e9717c94, 0xe2d379ead645eaf5, 0x46dd8785c51ffbbe}}, + {{0x709801be375c8898, 0x4b06dab5e3fd8348, 0x75880ced27230714, 0x2b09468fdd2f4c42}}}, +{{{0x97c749eeb701cb96, 0x83f438d4b6a369c3, 0x62962b8b9a402cd9, 0x6976c7509888df7b}}, + {{0x5b97946582ffa02a, 0xda096a51fea8f549, 0xa06351375f77af9b, 0x1bcfde61201d1e76}}, + {{0x4a4a5490246a59a2, 0xd63ebddee87fdd90, 0xd9437c670d2371fa, 0x69e87308d30f8ed6}}}, +{{{0x435a8bb15656beb0, 0xf8fac9ba4f4d5bca, 0xb9b278c41548c075, 0x3eb0ef76e892b622}}, + {{0x0f80bf028bc80303, 0x6aae16b37a18cefb, 0xdd47ea47d72cd6a3, 0x61943588f4ed39aa}}, + {{0xd26e5c3e91039f85, 0xc0e9e77df6f33aa9, 0xe8968c5570066a93, 0x3c34d1881faaaddd}}}, +{{{0x3f9d2b5ea09f9ec0, 0x1dab3b6fb623a890, 0xa09ba3ea72d926c4, 0x374193513fd8b36d}}, + {{0xbd5b0b8f2fffe0d9, 0x6aa254103ed24fb9, 0x2ac7d7bcb26821c4, 0x605b394b60dca36a}}, + {{0xb4e856e45a9d1ed2, 0xefe848766c97a9a2, 0xb104cf641e5eee7d, 0x2f50b81c88a71c8f}}}, +{{{0x31723c61fc6811bb, 0x9cb450486211800f, 0x768933d347995753, 0x3491a53502752fcd}}, + {{0x2b552ca0a7da522a, 0x3230b336449b0250, 0xf2c4c5bca4b99fb9, 0x7b2c674958074a22}}, + {{0xd55165883ed28cdf, 0x12d84fd2d362de39, 0x0a874ad3e3378e4f, 0x000d2b1f7c763e74}}}, +{{{0x3d420811d06d4a67, 0xbefc048590e0ffe3, 0xf870c6b7bd487bde, 0x6e2a7316319afa28}}, + {{0x9624778c3e94a8ab, 0x0ad6f3cee9a78bec, 0x948ac7810d743c4f, 0x76627935aaecfccc}}, + {{0x56a8ac24d6d59a9f, 0xc8db753e3096f006, 0x477f41e68f4c5299, 0x588d851cf6c86114}}}, +{{{0x51138ec78df6b0fe, 0x5397da89e575f51b, 0x09207a1d717af1b9, 0x2102fdba2b20d650}}, + {{0xcd2a65e777d1f515, 0x548991878faa60f1, 0xb1b73bbcdabc06e5, 0x654878cba97cc9fb}}, + {{0x969ee405055ce6a1, 0x36bca7681251ad29, 0x3a1af517aa7da415, 0x0ad725db29ecb2ba}}}, +{{{0xdc4267b1834e2457, 0xb67544b570ce1bc5, 0x1af07a0bf7d15ed7, 0x4aefcffb71a03650}}, + {{0xfec7bc0c9b056f85, 0x537d5268e7f5ffd7, 0x77afc6624312aefa, 0x4f675f5302399fd9}}, + {{0xc32d36360415171e, 0xcd2bef118998483b, 0x870a6eadd0945110, 0x0bccbb72a2a86561}}}, +{{{0x185e962feab1a9c8, 0x86e7e63565147dcd, 0xb092e031bb5b6df2, 0x4024f0ab59d6b73e}}, + {{0x186d5e4c50fe1296, 0xe0397b82fee89f7e, 0x3bc7f6c5507031b0, 0x6678fd69108f37c2}}, + {{0x1586fa31636863c2, 0x07f68c48572d33f2, 0x4f73cc9f789eaefc, 0x2d42e2108ead4701}}}, +{{{0x97f5131594dfd29b, 0x6155985d313f4c6a, 0xeba13f0708455010, 0x676b2608b8d2d322}}, + {{0x21717b0d0f537593, 0x914e690b131e064c, 0x1bb687ae752ae09f, 0x420bf3a79b423c6e}}, + {{0x8138ba651c5b2b47, 0x8671b6ec311b1b80, 0x7bff0cb1bc3135b0, 0x745d2ffa9c0cf1e0}}}, +{{{0xbf525a1e2bc9c8bd, 0xea5b260826479d81, 0xd511c70edf0155db, 0x1ae23ceb960cf5d0}}, + {{0x6036df5721d34e6a, 0xb1db8827997bb3d0, 0xd3c209c3c8756afa, 0x06e15be54c1dc839}}, + {{0x5b725d871932994a, 0x32351cb5ceb1dab0, 0x7dc41549dab7ca05, 0x58ded861278ec1f7}}}, +{{{0xd8173793f266c55c, 0xc8c976c5cc454e49, 0x5ce382f8bc26c3a8, 0x2ff39de85485f6f9}}, + {{0x2dfb5ba8b6c2c9a8, 0x48eeef8ef52c598c, 0x33809107f12d1573, 0x08ba696b531d5bd8}}, + {{0x77ed3eeec3efc57a, 0x04e05517d4ff4811, 0xea3d7a3ff1a671cb, 0x120633b4947cfe54}}}, +{{{0x0b94987891610042, 0x4ee7b13cecebfae8, 0x70be739594f0a4c0, 0x35d30a99b4d59185}}, + {{0x82bd31474912100a, 0xde237b6d7e6fbe06, 0xe11e761911ea79c6, 0x07433be3cb393bde}}, + {{0xff7944c05ce997f4, 0x575d3de4b05c51a3, 0x583381fd5a76847c, 0x2d873ede7af6da9f}}}, +{{{0x157a316443373409, 0xfab8b7eef4aa81d9, 0xb093fee6f5a64806, 0x2e773654707fa7b6}}, + {{0xaa6202e14e5df981, 0xa20d59175015e1f5, 0x18a275d3bae21d6c, 0x0543618a01600253}}, + {{0x0deabdf4974c23c1, 0xaa6f0a259dce4693, 0x04202cb8a29aba2c, 0x4b1443362d07960d}}}, +{{{0x47b837f753242cec, 0x256dc48cc04212f2, 0xe222fbfbe1d928c5, 0x48ea295bad8a2c07}}, + {{0x299b1c3f57c5715e, 0x96cb929e6b686d90, 0x3004806447235ab3, 0x2c435c24a44d9fe1}}, + {{0x0607c97c80f8833f, 0x0e851578ca25ec5b, 0x54f7450b161ebb6f, 0x7bcb4792a0def80e}}}, +{{{0x8487e3d02bc73659, 0x4baf8445059979df, 0xd17c975adcad6fbf, 0x57369f0bdefc96b6}}, + {{0x1cecd0a0045224c2, 0x757f1b1b69e53952, 0x775b7a925289f681, 0x1b6cc62016736148}}, + {{0xf1a9990175638698, 0x353dd1beeeaa60d3, 0x849471334c9ba488, 0x63fa6e6843ade311}}}, +{{{0xd15c20536597c168, 0x9f73740098d28789, 0x18aee7f13257ba1f, 0x3418bfda07346f14}}, + {{0x2195becdd24b5eb7, 0x5e41f18cc0cd44f9, 0xdf28074441ca9ede, 0x07073b98f35b7d67}}, + {{0xd03c676c4ce530d4, 0x0b64c0473b5df9f4, 0x065cef8b19b3a31e, 0x3084d661533102c9}}}, +{{{0xe1f6b79ebf8469ad, 0x15801004e2663135, 0x9a498330af74181b, 0x3ba2504f049b673c}}, + {{0x9a6ce876760321fd, 0x7fe2b5109eb63ad8, 0x00e7d4ae8ac80592, 0x73d86b7abb6f723a}}, + {{0x0b52b5606dba5ab6, 0xa9134f0fbbb1edab, 0x30a9520d9b04a635, 0x6813b8f37973e5db}}}, +{{{0x9854b054334127c1, 0x105d047882fbff25, 0xdb49f7f944186f4f, 0x1768e838bed0b900}}, + {{0xf194ca56f3157e29, 0x136d35705ef528a5, 0xdd4cef778b0599bc, 0x7d5472af24f833ed}}, + {{0xd0ef874daf33da47, 0x00d3be5db6e339f9, 0x3f2a8a2f9c9ceece, 0x5d1aeb792352435a}}}, +{{{0xf59e6bb319cd63ca, 0x670c159221d06839, 0xb06d565b2150cab6, 0x20fb199d104f12a3}}, + {{0x12c7bfaeb61ba775, 0xb84e621fe263bffd, 0x0b47a5c35c840dcf, 0x7e83be0bccaf8634}}, + {{0x61943dee6d99c120, 0x86101f2e460b9fe0, 0x6bb2f1518ee8598d, 0x76b76289fcc475cc}}}, +{{{0x791b4cc1756286fa, 0xdbced317d74a157c, 0x7e732421ea72bde6, 0x01fe18491131c8e9}}, + {{0x4245f1a1522ec0b3, 0x558785b22a75656d, 0x1d485a2548a1b3c0, 0x60959eccd58fe09f}}, + {{0x3ebfeb7ba8ed7a09, 0x49fdc2bbe502789c, 0x44ebce5d3c119428, 0x35e1eb55be947f4a}}}, +{{{0xdbdae701c5738dd3, 0xf9c6f635b26f1bee, 0x61e96a8042f15ef4, 0x3aa1d11faf60a4d8}}, + {{0x14fd6dfa726ccc74, 0x3b084cfe2f53b965, 0xf33ae4f552a2c8b4, 0x59aab07a0d40166a}}, + {{0x77bcec4c925eac25, 0x1848718460137738, 0x5b374337fea9f451, 0x1865e78ec8e6aa46}}}, +{{{0xccc4b7c7b66e1f7a, 0x44157e25f50c2f7e, 0x3ef06dfc713eaf1c, 0x582f446752da63f7}}, + {{0x967c54e91c529ccb, 0x30f6269264c635fb, 0x2747aff478121965, 0x17038418eaf66f5c}}, + {{0xc6317bd320324ce4, 0xa81042e8a4488bc4, 0xb21ef18b4e5a1364, 0x0c2a1c4bcda28dc9}}}, +{{{0xd24dc7d06f1f0447, 0xb2269e3edb87c059, 0xd15b0272fbb2d28f, 0x7c558bd1c6f64877}}, + {{0xedc4814869bd6945, 0x0d6d907dbe1c8d22, 0xc63bd212d55cc5ab, 0x5a6a9b30a314dc83}}, + {{0xd0ec1524d396463d, 0x12bb628ac35a24f0, 0xa50c3a791cbc5fa4, 0x0404a5ca0afbafc3}}}, +{{{0x8c1f40070aa743d6, 0xccbad0cb5b265ee8, 0x574b046b668fd2de, 0x46395bfdcadd9633}}, + {{0x62bc9e1b2a416fd1, 0xb5c6f728e350598b, 0x04343fd83d5d6967, 0x39527516e7f8ee98}}, + {{0x117fdb2d1a5d9a9c, 0x9c7745bcd1005c2a, 0xefd4bef154d56fea, 0x76579a29e822d016}}}, +{{{0x45b68e7e49c02a17, 0x23cd51a2bca9a37f, 0x3ed65f11ec224c1b, 0x43a384dc9e05bdb1}}, + {{0x333cb51352b434f2, 0xd832284993de80e1, 0xb5512887750d35ce, 0x02c514bb2a2777c1}}, + {{0x684bd5da8bf1b645, 0xfb8bd37ef6b54b53, 0x313916d7a9b0d253, 0x1160920961548059}}}, +{{{0xb44d166929dacfaa, 0xda529f4c8413598f, 0xe9ef63ca453d5559, 0x351e125bc5698e0b}}, + {{0x7a385616369b4dcd, 0x75c02ca7655c3563, 0x7dc21bf9d4f18021, 0x2f637d7491e6e042}}, + {{0xd4b49b461af67bbe, 0xd603037ac8ab8961, 0x71dee19ff9a699fb, 0x7f182d06e7ce2a9a}}}, +{{{0x7a7c8e64ab0168ec, 0xcb5a4a5515edc543, 0x095519d347cd0eda, 0x67d4ac8c343e93b0}}, + {{0x09454b728e217522, 0xaa58e8f4d484b8d8, 0xd358254d7f46903c, 0x44acc043241c5217}}, + {{0x1c7d6bbb4f7a5777, 0x8b35fed4918313e1, 0x4adca1c6c96b4684, 0x556d1c8312ad71bd}}}, +{{{0x17ef40e30c8d3982, 0x31f7073e15a3fa34, 0x4f21f3cb0773646e, 0x746c6c6d1d824eff}}, + {{0x81f06756b11be821, 0x0faff82310a3f3dd, 0xf8b2d0556a99465d, 0x097abe38cc8c7f05}}, + {{0x0c49c9877ea52da4, 0x4c4369559bdc1d43, 0x022c3809f7ccebd2, 0x577e14a34bee84bd}}}, +{{{0xf0e268ac61a73b0a, 0xf2fafa103791a5f5, 0xc1e13e826b6d00e9, 0x60fa7ee96fd78f42}}, + {{0x94fecebebd4dd72b, 0xf46a4fda060f2211, 0x124a5977c0c8d1ff, 0x705304b8fb009295}}, + {{0xb63d1d354d296ec6, 0xf3c3053e5fad31d8, 0x670b958cb4bd42ec, 0x21398e0ca16353fd}}}, +{{{0x216ab2ca8da7d2ef, 0x366ad9dd99f42827, 0xae64b9004fdd3c75, 0x403a395b53909e62}}, + {{0x86c5fc16861b7e9a, 0xf6a330476a27c451, 0x01667267a1e93597, 0x05ffb9cd6082dfeb}}, + {{0xa617fa9ff53f6139, 0x60f2b5e513e66cb6, 0xd7a8beefb3448aa4, 0x7a2932856f5ea192}}}, +{{{0x0b39d761b02de888, 0x5f550e7ed2414e1f, 0xa6bfa45822e1a940, 0x050a2f7dfd447b99}}, + {{0xb89c444879639302, 0x4ae4f19350c67f2c, 0xf0b35da8c81af9c6, 0x39d0003546871017}}, + {{0x437c3b33a650db77, 0x6bafe81dbac52bb2, 0xfe99402d2db7d318, 0x2b5b7eec372ba6ce}}}, +{{{0xb3bc4bbd83f50eef, 0x508f0c998c927866, 0x43e76587c8b7e66e, 0x0f7655a3a47f98d9}}, + {{0xa694404d613ac8f4, 0x500c3c2bfa97e72c, 0x874104d21fcec210, 0x1b205fb38604a8ee}}, + {{0x55ecad37d24b133c, 0x441e147d6038c90b, 0x656683a1d62c6fee, 0x0157d5dc87e0ecae}}}, +{{{0xf2a7af510354c13d, 0xd7a0b145aa372b60, 0x2869b96a05a3d470, 0x6528e42d82460173}}, + {{0x95265514d71eb524, 0xe603d8815df14593, 0x147cdf410d4de6b7, 0x5293b1730437c850}}, + {{0x23d0e0814bccf226, 0x92c745cd8196fb93, 0x8b61796c59541e5b, 0x40a44df0c021f978}}}, +{{{0xdaa869894f20ea6a, 0xea14a3d14c620618, 0x6001fccb090bf8be, 0x35f4e822947e9cf0}}, + {{0x86c96e514bc5d095, 0xf20d4098fca6804a, 0x27363d89c826ea5d, 0x39ca36565719cacf}}, + {{0x97506f2f6f87b75c, 0xc624aea0034ae070, 0x1ec856e3aad34dd6, 0x055b0be0e440e58f}}}, +{{{0x6469a17d89735d12, 0xdb6f27d5e662b9f1, 0x9fcba3286a395681, 0x363b8004d269af25}}, + {{0x4d12a04b6ea33da2, 0x57cf4c15e36126dd, 0x90ec9675ee44d967, 0x64ca348d2a985aac}}, + {{0x99588e19e4c4912d, 0xefcc3b4e1ca5ce6b, 0x4522ea60fa5b98d5, 0x7064bbab1de4a819}}}, +{{{0xb919e1515a770641, 0xa9a2e2c74e7f8039, 0x7527250b3df23109, 0x756a7330ac27b78b}}, + {{0xa290c06142542129, 0xf2e2c2aebe8d5b90, 0xcf2458db76abfe1b, 0x02157ade83d626bf}}, + {{0x3e46972a1b9a038b, 0x2e4ee66a7ee03fb4, 0x81a248776edbb4ca, 0x1a944ee88ecd0563}}}, +{{{0xd5a91d1151039372, 0x2ed377b799ca26de, 0xa17202acfd366b6b, 0x0730291bd6901995}}, + {{0xbb40a859182362d6, 0xb99f55778a4d1abb, 0x8d18b427758559f6, 0x26c20fe74d26235a}}, + {{0x648d1d9fe9cc22f5, 0x66bc561928dd577c, 0x47d3ed21652439d1, 0x49d271acedaf8b49}}}, +{{{0x89f5058a382b33f3, 0x5ae2ba0bad48c0b4, 0x8f93b503a53db36e, 0x5aa3ed9d95a232e6}}, + {{0x2798aaf9b4b75601, 0x5eac72135c8dad72, 0xd2ceaa6161b7a023, 0x1bbfb284e98f7d4e}}, + {{0x656777e9c7d96561, 0xcb2b125472c78036, 0x65053299d9506eee, 0x4a07e14e5e8957cc}}}, +{{{0x4ee412cb980df999, 0xa315d76f3c6ec771, 0xbba5edde925c77fd, 0x3f0bac391d313402}}, + {{0x240b58cdc477a49b, 0xfd38dade6447f017, 0x19928d32a7c86aad, 0x50af7aed84afa081}}, + {{0x6e4fde0115f65be5, 0x29982621216109b2, 0x780205810badd6d9, 0x1921a316baebd006}}}, +{{{0x89422f7edfb870fc, 0x2c296beb4f76b3bd, 0x0738f1d436c24df7, 0x6458df41e273aeb0}}, + {{0xd75aad9ad9f3c18b, 0x566a0eef60b1c19c, 0x3e9a0bac255c0ed9, 0x7b049deca062c7f5}}, + {{0xdccbe37a35444483, 0x758879330fedbe93, 0x786004c312c5dd87, 0x6093dccbc2950e64}}}, +{{{0x1ff39a8585e0706d, 0x36d0a5d8b3e73933, 0x43b9f2e1718f453b, 0x57d1ea084827a97c}}, + {{0x6bdeeebe6084034b, 0x3199c2b6780fb854, 0x973376abb62d0695, 0x6e3180c98b647d90}}, + {{0xee7ab6e7a128b071, 0xa4c1596d93a88baa, 0xf7b4de82b2216130, 0x363e999ddd97bd18}}}, +{{{0x96a843c135ee1fc4, 0x976eb35508e4c8cf, 0xb42f6801b58cd330, 0x48ee9b78693a052b}}, + {{0x2f1848dce24baec6, 0x769b7255babcaf60, 0x90cb3c6e3cefe931, 0x231f979bc6f9b355}}, + {{0x5c31de4bcc2af3c6, 0xb04bb030fe208d1f, 0xb78d7009c14fb466, 0x079bfa9b08792413}}}, +{{{0xe3903a51da300df4, 0x843964233da95ab0, 0xed3cf12d0b356480, 0x038c77f684817194}}, + {{0xf3c9ed80a2d54245, 0x0aa08b7877f63952, 0xd76dac63d1085475, 0x1ef4fb159470636b}}, + {{0x854e5ee65b167bec, 0x59590a4296d0cdc2, 0x72b2df3498102199, 0x575ee92a4a0bff56}}}, +{{{0xd4c080908a182fcf, 0x30e170c299489dbd, 0x05babd5752f733de, 0x43d4e7112cd3fd00}}, + {{0x5d46bc450aa4d801, 0xc3af1227a533b9d8, 0x389e3b262b8906c2, 0x200a1e7e382f581b}}, + {{0x518db967eaf93ac5, 0x71bc989b056652c0, 0xfe2b85d9567197f5, 0x050eca52651e4e38}}}, +{{{0xc3431ade453f0c9c, 0xe9f5045eff703b9b, 0xfcd97ac9ed847b3d, 0x4b0ee6c21c58f4c6}}, + {{0x97ac397660e668ea, 0x9b19bbfe153ab497, 0x4cb179b534eca79f, 0x6151c09fa131ae57}}, + {{0x3af55c0dfdf05d96, 0xdd262ee02ab4ee7a, 0x11b2bb8712171709, 0x1fef24fa800f030b}}}, +{{{0xb496123a6b6c6609, 0xa750fe8580ab5938, 0xf471bf39b7c27a5f, 0x507903ce77ac193c}}, + {{0xff91a66a90166220, 0xf22552ae5bf1e009, 0x7dff85d87f90df7c, 0x4f620ffe0c736fb9}}, + {{0x62f90d65dfde3e34, 0xcf28c592b9fa5fad, 0x99c86ef9c6164510, 0x25d448044a256c84}}}, +{{{0xbd68230ec7e9b16f, 0x0eb1b9c1c1c5795d, 0x7943c8c495b6b1ff, 0x2f9faf620bbacf5e}}, + {{0x2c7c4415c9022b55, 0x56a0d241812eb1fe, 0xf02ea1c9d7b65e0d, 0x4180512fd5323b26}}, + {{0xa4ff3e698a48a5db, 0xba6a3806bd95403b, 0x9f7ce1af47d5b65d, 0x15e087e55939d2fb}}}, +{{{0x12207543745c1496, 0xdaff3cfdda38610c, 0xe4e797272c71c34f, 0x39c07b1934bdede9}}, + {{0x8894186efb963f38, 0x48a00e80dc639bd5, 0xa4e8092be96c1c99, 0x5a097d54ca573661}}, + {{0x2d45892b17c9e755, 0xd033fd7289308df8, 0x6c2fe9d9525b8bd9, 0x2edbecf1c11cc079}}}, +{{{0x1616a4e3c715a0d2, 0x53623cb0f8341d4d, 0x96ef5329c7e899cb, 0x3d4e8dbba668baa6}}, + {{0xee0f0fddd087a25f, 0x9c7531555c3e34ee, 0x660c572e8fab3ab5, 0x0854fc44544cd3b2}}, + {{0x61eba0c555edad19, 0x24b533fef0a83de6, 0x3b77042883baa5f8, 0x678f82b898a47e8d}}}, +{{{0xb1491d0bd6900c54, 0x3539722c9d132636, 0x4db928920b362bc9, 0x4d7cd1fea68b69df}}, + {{0x1e09d94057775696, 0xeed1265c3cd951db, 0xfa9dac2b20bce16f, 0x0f7f76e0e8d089f4}}, + {{0x36d9ebc5d485b00c, 0xa2596492e4adb365, 0xc1659480c2119ccd, 0x45306349186e0d5f}}}, +{{{0x94ddd0c1a6cdff1d, 0x55f6f115e84213ae, 0x6c935f85992fcf6a, 0x067ee0f54a37f16f}}, + {{0x96a414ec2b072491, 0x1bb2218127a7b65b, 0x6d2849596e8a4af0, 0x65f3b08ccd27765f}}, + {{0xecb29fff199801f7, 0x9d361d1fa2a0f72f, 0x25f11d2375fd2f49, 0x124cefe80fe10fe2}}}, +{{{0x4c126cf9d18df255, 0xc1d471e9147a63b6, 0x2c6d3c73f3c93b5f, 0x6be3a6a2e3ff86a2}}, + {{0x1518e85b31b16489, 0x8faadcb7db710bfb, 0x39b0bdf4a14ae239, 0x05f4cbea503d20c1}}, + {{0xce040e9ec04145bc, 0xc71ff4e208f6834c, 0xbd546e8dab8847a3, 0x64666aa0a4d2aba5}}}, +{{{0x6841435a7c06d912, 0xca123c21bb3f830b, 0xd4b37b27b1cbe278, 0x1d753b84c76f5046}}, + {{0xb0c53bf73337e94c, 0x7cb5697e11e14f15, 0x4b84abac1930c750, 0x28dd4abfe0640468}}, + {{0x7dc0b64c44cb9f44, 0x18a3e1ace3925dbf, 0x7a3034862d0457c4, 0x4c498bf78a0c892e}}}, +{{{0x37d653fb1aa73196, 0x0f9495303fd76418, 0xad200b09fb3a17b2, 0x544d49292fc8613e}}, + {{0x22d2aff530976b86, 0x8d90b806c2d24604, 0xdca1896c4de5bae5, 0x28005fe6c8340c17}}, + {{0x6aefba9f34528688, 0x5c1bff9425107da1, 0xf75bbbcd66d94b36, 0x72e472930f316dfa}}}, +{{{0x2695208c9781084f, 0xb1502a0b23450ee1, 0xfd9daea603efde02, 0x5a9d2e8c2733a34c}}, + {{0x07f3f635d32a7627, 0x7aaa4d865f6566f0, 0x3c85e79728d04450, 0x1fee7f000fe06438}}, + {{0x765305da03dbf7e5, 0xa4daf2491434cdbd, 0x7b4ad5cdd24a88ec, 0x00f94051ee040543}}}, +{{{0x8d356b23c3d330b2, 0xf21c8b9bb0471b06, 0xb36c316c6e42b83c, 0x07d79c7e8beab10d}}, + {{0xd7ef93bb07af9753, 0x583ed0cf3db766a7, 0xce6998bf6e0b1ec5, 0x47b7ffd25dd40452}}, + {{0x87fbfb9cbc08dd12, 0x8a066b3ae1eec29b, 0x0d57242bdb1fc1bf, 0x1c3520a35ea64bb6}}}, +{{{0x80d253a6bccba34a, 0x3e61c3a13838219b, 0x90c3b6019882e396, 0x1c3d05775d0ee66f}}, + {{0xcda86f40216bc059, 0x1fbb231d12bcd87e, 0xb4956a9e17c70990, 0x38750c3b66d12e55}}, + {{0x692ef1409422e51a, 0xcbc0c73c2b5df671, 0x21014fe7744ce029, 0x0621e2c7d330487c}}}, +{{{0xaf9860cc8259838d, 0x90ea48c1c69f9adc, 0x6526483765581e30, 0x0007d6097bd3a5bc}}, + {{0xb7ae1796b0dbf0f3, 0x54dfafb9e17ce196, 0x25923071e9aaa3b4, 0x5d8e589ca1002e9d}}, + {{0xc0bf1d950842a94b, 0xb2d3c363588f2e3e, 0x0a961438bb51e2ef, 0x1583d7783c1cbf86}}}, +{{{0xeceea2ef5da27ae1, 0x597c3a1455670174, 0xc9a62a126609167a, 0x252a5f2e81ed8f70}}, + {{0x90034704cc9d28c7, 0x1d1b679ef72cc58f, 0x16e12b5fbe5b8726, 0x4958064e83c5580a}}, + {{0x0d2894265066e80d, 0xfcc3f785307c8c6b, 0x1b53da780c1112fd, 0x079c170bd843b388}}}, +{{{0x0506ece464fa6fff, 0xbee3431e6205e523, 0x3579422451b8ea42, 0x6dec05e34ac9fb00}}, + {{0xcdd6cd50c0d5d056, 0x9af7686dbb03573b, 0x3ca6723ff3c3ef48, 0x6768c0d7317b8acc}}, + {{0x94b625e5f155c1b3, 0x417bf3a7997b7b91, 0xc22cbddc6d6b2600, 0x51445e14ddcd52f4}}}, +{{{0x57502b4b3b144951, 0x8e67ff6b444bbcb3, 0xb8bd6927166385db, 0x13186f31e39295c8}}, + {{0x893147ab2bbea455, 0x8c53a24f92079129, 0x4b49f948be30f7a7, 0x12e990086e4fd43d}}, + {{0xf10c96b37fdfbb2e, 0x9f9a935e121ceaf9, 0xdf1136c43a5b983f, 0x77b2e3f05d3e99af}}}, +{{{0xfd0d75879cf12657, 0xe82fef94e53a0e29, 0xcc34a7f05bbb4be7, 0x0b251172a50c38a2}}, + {{0x9532f48fcc5cd29b, 0x2ba851bea3ce3671, 0x32dacaa051122941, 0x478d99d9350004f2}}, + {{0x1d5ad94890bb02c0, 0x50e208b10ec25115, 0xa26a22894ef21702, 0x4dc923343b524805}}}, +{{{0xe3828c400f8086b6, 0x3f77e6f7979f0dc8, 0x7ef6de304df42cb4, 0x5265797cb6abd784}}, + {{0x3ad3e3ebf36c4975, 0xd75d25a537862125, 0xe873943da025a516, 0x6bbc7cb4c411c847}}, + {{0x3c6f9cd1d4a50d56, 0xb6244077c6feab7e, 0x6ff9bf483580972e, 0x00375883b332acfb}}}, +{{{0x0001b2cd28cb0940, 0x63fb51a06f1c24c9, 0xb5ad8691dcd5ca31, 0x67238dbd8c450660}}, + {{0xc98bec856c75c99c, 0xe44184c000e33cf4, 0x0a676b9bba907634, 0x669e2cb571f379d7}}, + {{0xcb116b73a49bd308, 0x025aad6b2392729e, 0xb4793efa3f55d9b1, 0x72a1056140678bb9}}}, +{{{0xa2b6812b1cc9249d, 0x62866eee21211f58, 0x2cb5c5b85df10ece, 0x03a6b259e263ae00}}, + {{0x0d8d2909e2e505b6, 0x98ca78abc0291230, 0x77ef5569a9b12327, 0x7c77897b81439b47}}, + {{0xf1c1b5e2de331cb5, 0x5a9f5d8e15fca420, 0x9fa438f17bd932b1, 0x2a381bf01c6146e7}}}, +{{{0xac9b9879cfc811c1, 0x8b7d29813756e567, 0x50da4e607c70edfc, 0x5dbca62f884400b6}}, + {{0xf7c0be32b534166f, 0x27e6ca6419cf70d4, 0x934df7d7a957a759, 0x5701461dabdec2aa}}, + {{0x2c6747402c915c25, 0x1bdcd1a80b0d340a, 0x5e5601bd07b43f5f, 0x2555b4e05539a242}}}, +{{{0x6fc09f5266ddd216, 0xdce560a7c8e37048, 0xec65939da2df62fd, 0x7a869ae7e52ed192}}, + {{0x78409b1d87e463d4, 0xad4da95acdfb639d, 0xec28773755259b9c, 0x69c806e9c31230ab}}, + {{0x7b48f57414bb3f22, 0x68c7cee4aedccc88, 0xed2f936179ed80be, 0x25d70b885f77bc4b}}}, +{{{0x4151c3d9762bf4de, 0x083f435f2745d82b, 0x29775a2e0d23ddd5, 0x138e3a6269a5db24}}, + {{0x98459d29bb1ae4d4, 0x56b9c4c739f954ec, 0x832743f6c29b4b3e, 0x21ea8e2798b6878a}}, + {{0x87bef4b46a5a7b9c, 0xd2299d1b5fc1d062, 0x82409818dd321648, 0x5c5abeb1e5a2e03d}}}, +{{{0x14722af4b73c2ddb, 0xbc470c5f5a05060d, 0x00943eac2581b02e, 0x0e434b3b1f499c8f}}, + {{0x02cde6de1306a233, 0x7b5a52a2116f8ec7, 0xe1c681f4c1163b5b, 0x241d350660d32643}}, + {{0x6be4404d0ebc52c7, 0xae46233bb1a791f5, 0x2aec170ed25db42b, 0x1d8dfd966645d694}}}, +{{{0x296fa9c59c2ec4de, 0xbc8b61bf4f84f3cb, 0x1c7706d917a8f908, 0x63b795fc7ad3255d}}, + {{0xd598639c12ddb0a4, 0xa5d19f30c024866b, 0xd17c2f0358fce460, 0x07a195152e095e8a}}, + {{0xa8368f02389e5fc8, 0x90433b02cf8de43b, 0xafa1fd5dc5412643, 0x3e8fe83d032f0137}}}, +{{{0x2f8b15b90570a294, 0x94f2427067084549, 0xde1c5ae161bbfd84, 0x75ba3b797fac4007}}, + {{0x08704c8de8efd13c, 0xdfc51a8e33e03731, 0xa59d5da51260cde3, 0x22d60899a6258c86}}, + {{0x6239dbc070cdd196, 0x60fe8a8b6c7d8a9a, 0xb38847bceb401260, 0x0904d07b87779e5e}}}, +{{{0xb4ce1fd4ddba919c, 0xcf31db3ec74c8daa, 0x2c63cc63ad86cc51, 0x43e2143fbc1dde07}}, + {{0xf4322d6648f940b9, 0x06952f0cbd2d0c39, 0x167697ada081f931, 0x6240aacebaf72a6c}}, + {{0xf834749c5ba295a0, 0xd6947c5bca37d25a, 0x66f13ba7e7c9316a, 0x56bdaf238db40cac}}}, +{{{0x362ab9e3f53533eb, 0x338568d56eb93d40, 0x9e0e14521d5a5572, 0x1d24a86d83741318}}, + {{0x1310d36cc19d3bb2, 0x062a6bb7622386b9, 0x7c9b8591d7a14f5c, 0x03aa31507e1e5754}}, + {{0xf4ec7648ffd4ce1f, 0xe045eaf054ac8c1c, 0x88d225821d09357c, 0x43b261dc9aeb4859}}}, +{{{0xe55b1e1988bb79bb, 0xa09ed07dc17a359d, 0xb02c2ee2603dea33, 0x326055cf5b276bc2}}, + {{0x19513d8b6c951364, 0x94fe7126000bf47b, 0x028d10ddd54f9567, 0x02b4d5e242940964}}, + {{0xb4a155cb28d18df2, 0xeacc4646186ce508, 0xc49cf4936c824389, 0x27a6c809ae5d3410}}}, +{{{0x8ba6ebcd1f0db188, 0x37d3d73a675a5be8, 0xf22edfa315f5585a, 0x2cb67174ff60a17e}}, + {{0xcd2c270ac43d6954, 0xdd4a3e576a66cab2, 0x79fa592469d7036c, 0x221503603d8c2599}}, + {{0x59eecdf9390be1d0, 0xa9422044728ce3f1, 0x82891c667a94f0f4, 0x7b1df4b73890f436}}}, +{{{0xe492f2e0b3b2a224, 0x7c6c9e062b551160, 0x15eb8fe20d7f7b0e, 0x61fcef2658fc5992}}, + {{0x5f2e221807f8f58c, 0xe3555c9fd49409d4, 0xb2aaa88d1fb6a630, 0x68698245d352e03d}}, + {{0xdbb15d852a18187a, 0xf3e4aad386ddacd7, 0x44bae2810ff6c482, 0x46cf4c473daf01cf}}}, +{{{0x426525ed9ec4e5f9, 0x0e5eda0116903303, 0x72b1a7f2cbe5cadc, 0x29387bcd14eb5f40}}, + {{0x213c6ea7f1498140, 0x7c1e7ef8392b4854, 0x2488c38c5629ceba, 0x1065aae50d8cc5bb}}, + {{0x1c2c4525df200d57, 0x5c3b2dd6bfca674a, 0x0a07e7b1e1834030, 0x69a198e64f1ce716}}}, +{{{0x7afcd613efa9d697, 0x0cc45aa41c067959, 0xa56fe104c1fada96, 0x3a73b70472e40365}}, + {{0x7b26e56b9e2d4734, 0xc4c7132b81c61675, 0xef5c9525ec9cde7f, 0x39c80b16e71743ad}}, + {{0x0f196e0d1b826c68, 0xf71ff0e24960e3db, 0x6113167023b7436c, 0x0cf0ea5877da7282}}}, +{{{0x196c80a4ddd4ccbd, 0x22e6f55d95f2dd9d, 0xc75e33c740d6c71b, 0x7bb51279cb3c042f}}, + {{0xe332ced43ba6945a, 0xde0b1361e881c05d, 0x1ad40f095e67ed3b, 0x5da8acdab8c63d5d}}, + {{0xc4b6664a3a70159f, 0x76194f0f0a904e14, 0xa5614c39a4096c13, 0x6cd0ff50979feced}}}, +{{{0xc0e067e78f4428ac, 0x14835ab0a61135e3, 0xf21d14f338062935, 0x6390a4c8df04849c}}, + {{0x7fecfabdb04ba18e, 0xd0fc7bfc3bddbcf7, 0xa41d486e057a131c, 0x641a4391f2223a61}}, + {{0xc5c6b95aa606a8db, 0x914b7f9eb06825f1, 0x2a731f6b44fc9eff, 0x30ddf38562705cfc}}}, +{{{0x4e3dcbdad1bff7f9, 0xc9118e8220645717, 0xbacccebc0f189d56, 0x1b4822e9d4467668}}, + {{0x33bef2bd68bcd52c, 0xc649dbb069482ef2, 0xb5b6ee0c41cb1aee, 0x5c294d270212a7e5}}, + {{0xab360a7f25563781, 0x2512228a480f7958, 0xc75d05276114b4e3, 0x222d9625d976fe2a}}}, +{{{0x1c717f85b372ace1, 0x81930e694638bf18, 0x239cad056bc08b58, 0x0b34271c87f8fff4}}, + {{0x0f94be7e0a344f85, 0xeb2faa8c87f22c38, 0x9ce1e75e4ee16f0f, 0x43e64e5418a08dea}}, + {{0x8155e2521a35ce63, 0xbe100d4df912028e, 0xbff80bf8a57ddcec, 0x57342dc96d6bc6e4}}}, +{{{0xefeef065c8ce5998, 0xbf029510b5cbeaa2, 0x8c64a10620b7c458, 0x35134fb231c24855}}, + {{0xf3c3bcb71e707bf6, 0x351d9b8c7291a762, 0x00502e6edad69a33, 0x522f521f1ec8807f}}, + {{0x272c1f46f9a3902b, 0xc91ba3b799657bcc, 0xae614b304f8a1c0e, 0x7afcaad70b99017b}}}, +{{{0xc25ded54a4b8be41, 0x902d13e11bb0e2dd, 0x41f43233cde82ab2, 0x1085faa5c3aae7cb}}, + {{0xa88141ecef842b6b, 0x55e7b14797abe6c5, 0x8c748f9703784ffe, 0x5b50a1f7afcd00b7}}, + {{0x9b840f66f1361315, 0x18462242701003e9, 0x65ed45fae4a25080, 0x0a2862393fda7320}}}, +{{{0x46ab13c8347cbc9d, 0x3849e8d499c12383, 0x4cea314087d64ac9, 0x1f354134b1a29ee7}}, + {{0x960e737b6ecb9d17, 0xfaf24948d67ceae1, 0x37e7a9b4d55e1b89, 0x5cb7173cb46c59eb}}, + {{0x4a89e68b82b7abf0, 0xf41cd9279ba6b7b9, 0x16e6c210e18d876f, 0x7cacdb0f7f1b09c6}}}, +{{{0x9062b2e0d91a78bc, 0x47c9889cc8509667, 0x9df54a66405070b8, 0x7369e6a92493a1bf}}, + {{0xe1014434dcc5caed, 0x47ed5d963c84fb33, 0x70019576ed86a0e7, 0x25b2697bd267f9e4}}, + {{0x9d673ffb13986864, 0x3ca5fbd9415dc7b8, 0xe04ecc3bdf273b5e, 0x1420683db54e4cd2}}}, +{{{0xb478bd1e249dd197, 0x620c35005e58c102, 0xfb02d32fccbaac5c, 0x60b63bebf508a72d}}, + {{0x34eebb6fc1cc5ad0, 0x6a1b0ce99646ac8b, 0xd3b0da49a66bde53, 0x31e83b4161d081c1}}, + {{0x97e8c7129e062b4f, 0x49e48f4f29320ad8, 0x5bece14b6f18683f, 0x55cf1eb62d550317}}}, +{{{0x5879101065c23d58, 0x8b9d086d5094819c, 0xe2402fa912c55fa7, 0x669a6564570891d4}}, + {{0x3076b5e37df58c52, 0xd73ab9dde799cc36, 0xbd831ce34913ee20, 0x1a56fbaa62ba0133}}, + {{0x943e6b505c9dc9ec, 0x302557bba77c371a, 0x9873ae5641347651, 0x13c4836799c58a5c}}}, +{{{0x423a5d465ab3e1b9, 0xfc13c187c7f13f61, 0x19f83664ecb5b9b6, 0x66f80c93a637b607}}, + {{0xc4dcfb6a5d8bd080, 0xdeebc4ec571a4842, 0xd4b2e883b8e55365, 0x50bdc87dc8e5b827}}, + {{0x606d37836edfe111, 0x32353e15f011abd9, 0x64b03ac325b73b96, 0x1dd56444725fd5ae}}}, +{{{0x8fa47ff83362127d, 0xbc9f6ac471cd7c15, 0x6e71454349220c8b, 0x0e645912219f732e}}, + {{0xc297e60008bac89a, 0x7d4cea11eae1c3e0, 0xf3e38be19fe7977c, 0x3a3a450f63a305cd}}, + {{0x078f2f31d8394627, 0x389d3183de94a510, 0xd1e36c6d17996f80, 0x318c8d9393a9a87b}}}, +{{{0xf2745d032afffe19, 0x0c9f3c497f24db66, 0xbc98d3e3ba8598ef, 0x224c7c679a1d5314}}, + {{0x5d669e29ab1dd398, 0xfc921658342d9e3b, 0x55851dfdf35973cd, 0x509a41c325950af6}}, + {{0xbdc06edca6f925e9, 0x793ef3f4641b1f33, 0x82ec12809d833e89, 0x05bff02328a11389}}}, +{{{0x3632137023cae00b, 0x544acf0ad1accf59, 0x96741049d21a1c88, 0x780b8cc3fa2a44a7}}, + {{0x6881a0dd0dc512e4, 0x4fe70dc844a5fafe, 0x1f748e6b8f4a5240, 0x576277cdee01a3ea}}, + {{0x1ef38abc234f305f, 0x9a577fbd1405de08, 0x5e82a51434e62a0d, 0x5ff418726271b7a1}}}, +{{{0x398e080c1789db9d, 0xa7602025f3e778f5, 0xfa98894c06bd035d, 0x106a03dc25a966be}}, + {{0xe5db47e813b69540, 0xf35d2a3b432610e1, 0xac1f26e938781276, 0x29d4db8ca0a0cb69}}, + {{0xd9ad0aaf333353d0, 0x38669da5acd309e5, 0x3c57658ac888f7f0, 0x4ab38a51052cbefa}}}, +{{{0xdfdacbee4324c0e9, 0x054442883f955bb7, 0xdef7aaa8ea31609f, 0x68aee70642287cff}}, + {{0xf68fe2e8809de054, 0xe3bc096a9c82bad1, 0x076353d40aadbf45, 0x7b9b1fb5dea1959e}}, + {{0xf01cc8f17471cc0c, 0x95242e37579082bb, 0x27776093d3e46b5f, 0x2d13d55a28bd85fb}}}, +{{{0xfac5d2065b35b8da, 0xa8da8a9a85624bb7, 0xccd2ca913d21cd0f, 0x6b8341ee8bf90d58}}, + {{0xbf019cce7aee7a52, 0xa8ded2b6e454ead3, 0x3c619f0b87a8bb19, 0x3619b5d7560916d8}}, + {{0x3579f26b0282c4b2, 0x64d592f24fafefae, 0xb7cded7b28c8c7c0, 0x6a927b6b7173a8d7}}}, +{{{0x1f6db24f986e4656, 0x1021c02ed1e9105b, 0xf8ff3fff2cc0a375, 0x1d2a6bf8c6c82592}}, + {{0x8d7040863ece88eb, 0xf0e307a980eec08c, 0xac2250610d788fda, 0x056d92a43a0d478d}}, + {{0x1b05a196fc3da5a1, 0x77d7a8c243b59ed0, 0x06da3d6297d17918, 0x66fbb494f12353f7}}}, +{{{0x751a50b9d85c0fb8, 0xd1afdc258bcf097b, 0x2f16a6a38309a969, 0x14ddff9ee5b00659}}, + {{0xd6d70996f12309d6, 0xdbfb2385e9c3d539, 0x46d602b0f7552411, 0x270a0b0557843e0c}}, + {{0x61ff0640a7862bcc, 0x81cac09a5f11abfe, 0x9047830455d12abb, 0x19a4bde1945ae873}}}, +{{{0x9b9f26f520a6200a, 0x64804443cf13eaf8, 0x8a63673f8631edd3, 0x72bbbce11ed39dc1}}, + {{0x40c709dec076c49f, 0x657bfaf27f3e53f6, 0x40662331eca042c4, 0x14b375487eb4df04}}, + {{0xae853c94ab66dc47, 0xeb62343edf762d6e, 0xf08e0e186fb2f7d1, 0x4f0b1c02700ab37a}}}, +{{{0xe1706787d81951fa, 0xa10a2c8eb290c77b, 0xe7382fa03ed66773, 0x0a4d84710bcc4b54}}, + {{0x79fd21ccc1b2e23f, 0x4ae7c281453df52a, 0xc8172ec9d151486b, 0x68abe9443e0a7534}}, + {{0xda12c6c407831dcb, 0x0da230d74d5c510d, 0x4ab1531e6bd404e1, 0x4106b166bcf440ef}}}, +{{{0x02e57a421cd23668, 0x4ad9fb5d0eaef6fd, 0x954e6727b1244480, 0x7f792f9d2699f331}}, + {{0xa485ccd539e4ecf2, 0x5aa3f3ad0555bab5, 0x145e3439937df82d, 0x1238b51e1214283f}}, + {{0x0b886b925fd4d924, 0x60906f7a3626a80d, 0xecd367b4b98abd12, 0x2876beb1def344cf}}}, +{{{0xdc84e93563144691, 0x632fe8a0d61f23f4, 0x4caa800612a9a8d5, 0x48f9dbfa0e9918d3}}, + {{0xd594b3333a8a85f8, 0x4ea37689e78d7d58, 0x73bf9f455e8e351f, 0x5507d7d2bc41ebb4}}, + {{0x1ceb2903299572fc, 0x7c8ccaa29502d0ee, 0x91bfa43411cce67b, 0x5784481964a831e7}}}, +{{{0xda7c2b256768d593, 0x98c1c0574422ca13, 0xf1a80bd5ca0ace1d, 0x29cdd1adc088a690}}, + {{0xd6cfd1ef5fddc09c, 0xe82b3efdf7575dce, 0x25d56b5d201634c2, 0x3041c6bb04ed2b9b}}, + {{0x0ff2f2f9d956e148, 0xade797759f356b2e, 0x1a4698bb5f6c025c, 0x104bbd6814049a7b}}}, +{{{0x51f0fd3168f1ed67, 0x2c811dcdd86f3bc2, 0x44dc5c4304d2f2de, 0x5be8cc57092a7149}}, + {{0xa95d9a5fd67ff163, 0xe92be69d4cc75681, 0xb7f8024cde20f257, 0x204f2a20fb072df5}}, + {{0xc8143b3d30ebb079, 0x7589155abd652e30, 0x653c3c318f6d5c31, 0x2570fb17c279161f}}}, +{{{0x3efa367f2cb61575, 0xf5f96f761cd6026c, 0xe8c7142a65b52562, 0x3dcb65ea53030acd}}, + {{0x192ea9550bb8245a, 0xc8e6fba88f9050d1, 0x7986ea2d88a4c935, 0x241c5f91de018668}}, + {{0x28d8172940de6caa, 0x8fbf2cf022d9733a, 0x16d7fcdd235b01d1, 0x08420edd5fcdf0e5}}}, +{{{0xcdff20ab8362fa4a, 0x57e118d4e21a3e6e, 0xe3179617fc39e62b, 0x0d9a53efbc1769fd}}, + {{0x0358c34e04f410ce, 0xb6135b5a276e0685, 0x5d9670c7ebb91521, 0x04d654f321db889c}}, + {{0x5e7dc116ddbdb5d5, 0x2954deb68da5dd2d, 0x1cb608173334a292, 0x4a7a4f2618991ad7}}}, +{{{0xf4a718025fb15f95, 0x3df65f346b5c1b8f, 0xcdfcf08500e01112, 0x11b50c4cddd31848}}, + {{0x24c3b291af372a4b, 0x93da8270718147f2, 0xdd84856486899ef2, 0x4a96314223e0ee33}}, + {{0xa6e8274408a4ffd6, 0x738e177e9c1576d9, 0x773348b63d02b3f2, 0x4f4bce4dce6bcc51}}}, +{{{0xa71fce5ae2242584, 0x26ea725692f58a9e, 0xd21a09d71cea3cf4, 0x73fcdd14b71c01e6}}, + {{0x30e2616ec49d0b6f, 0xe456718fcaec2317, 0x48eb409bf26b4fa6, 0x3042cee561595f37}}, + {{0x427e7079449bac41, 0x855ae36dbce2310a, 0x4cae76215f841a7c, 0x389e740c9a9ce1d6}}}, +{{{0x64fcb3ae34dcb9ce, 0x97500323e348d0ad, 0x45b3f07d62c6381b, 0x61545379465a6788}}, + {{0xc9bd78f6570eac28, 0xe55b0b3227919ce1, 0x65fc3eaba19b91ed, 0x25c425e5d6263690}}, + {{0x3f3e06a6f1d7de6e, 0x3ef976278e062308, 0x8c14f6264e8a6c77, 0x6539a08915484759}}}, +{{{0xe9d21f74c3d2f773, 0xc150544125c46845, 0x624e5ce8f9b99e33, 0x11c5e4aac5cd186c}}, + {{0xddc4dbd414bb4a19, 0x19b2bc3c98424f8e, 0x48a89fd736ca7169, 0x0f65320ef019bd90}}, + {{0xd486d1b1cafde0c6, 0x4f3fe6e3163b5181, 0x59a8af0dfaf2939a, 0x4cabc7bdec33072a}}}, +{{{0x16faa8fb532f7428, 0xdbd42ea046a4e272, 0x5337653b8b9ea480, 0x4065947223973f03}}, + {{0xf7c0a19c1a54a044, 0x4a1c5e2477bd9fbb, 0xa6e3ca115af22972, 0x1819bb953f2e9e0d}}, + {{0x498fbb795e042e84, 0x7d0dd89a7698b714, 0x8bfb0ba427fe6295, 0x36ba82e721200524}}}, +{{{0xd60ecbb74245ec41, 0xfd9be89e34348716, 0xc9240afee42284de, 0x4472f648d0531db4}}, + {{0xc8d69d0a57274ed5, 0x45ba803260804b17, 0xdf3cda102255dfac, 0x77d221232709b339}}, + {{0x498a6d7064ad94d8, 0xa5b5c8fd9af62263, 0x8ca8ed0545c141f4, 0x2c63bec3662d358c}}}, +{{{0x7fe60d8bea787955, 0xb9dc117eb5f401b7, 0x91c7c09a19355cce, 0x22692ef59442bedf}}, + {{0x9a518b3a8586f8bf, 0x9ee71af6cbb196f0, 0xaa0625e6a2385cf2, 0x1deb2176ddd7c8d1}}, + {{0x8563d19a2066cf6c, 0x401bfd8c4dcc7cd7, 0xd976a6becd0d8f62, 0x67cfd773a278b05e}}}, +{{{0x8dec31faef3ee475, 0x99dbff8a9e22fd92, 0x512d11594e26cab1, 0x0cde561eec4310b9}}, + {{0x2d5fa9855a4e586a, 0x65f8f7a449beab7e, 0xaa074dddf21d33d3, 0x185cba721bcb9dee}}, + {{0x93869da3f4e3cb41, 0xbf0392f540f7977e, 0x026204fcd0463b83, 0x3ec91a769eec6eed}}}, +{{{0x1e9df75bf78166ad, 0x4dfda838eb0cd7af, 0xba002ed8c1eaf988, 0x13fedb3e11f33cfc}}, + {{0x0fad2fb7b0a3402f, 0x46615ecbfb69f4a8, 0xf745bcc8c5f8eaa6, 0x7a5fa8794a94e896}}, + {{0x52958faa13cd67a1, 0x965ee0818bdbb517, 0x16e58daa2e8845b3, 0x357d397d5499da8f}}}, +{{{0x1ebfa05fb0bace6c, 0xc934620c1caf9a1e, 0xcc771cc41d82b61a, 0x2d94a16aa5f74fec}}, + {{0x481dacb4194bfbf8, 0x4d77e3f1bae58299, 0x1ef4612e7d1372a0, 0x3a8d867e70ff69e1}}, + {{0x6f58cd5d55aff958, 0xba3eaa5c75567721, 0x75c123999165227d, 0x69be1343c2f2b35e}}}, +{{{0x0e091d5ee197c92a, 0x4f51019f2945119f, 0x143679b9f034e99c, 0x7d88112e4d24c696}}, + {{0x82bbbdac684b8de3, 0xa2f4c7d03fca0718, 0x337f92fbe096aaa8, 0x200d4d8c63587376}}, + {{0x208aed4b4893b32b, 0x3efbf23ebe59b964, 0xd762deb0dba5e507, 0x69607bd681bd9d94}}}, +{{{0xf6be021068de1ce1, 0xe8d518e70edcbc1f, 0xe3effdd01b5505a5, 0x35f63353d3ec3fd0}}, + {{0x3b7f3bd49323a902, 0x7c21b5566b2c6e53, 0xe5ba8ff53a7852a7, 0x28bc77a5838ece00}}, + {{0x63ba78a8e25d8036, 0x63651e0094333490, 0x48d82f20288ce532, 0x3a31abfa36b57524}}}, +{{{0x239e9624089c0a2e, 0xc748c4c03afe4738, 0x17dbed2a764fa12a, 0x639b93f0321c8582}}, + {{0xc08f788f3f78d289, 0xfe30a72ca1404d9f, 0xf2778bfccf65cc9d, 0x7ee498165acb2021}}, + {{0x7bd508e39111a1c3, 0x2b2b90d480907489, 0xe7d2aec2ae72fd19, 0x0edf493c85b602a6}}}, +{{{0xaecc8158599b5a68, 0xea574f0febade20e, 0x4fe41d7422b67f07, 0x403b92e3019d4fb4}}, + {{0x6767c4d284764113, 0xa090403ff7f5f835, 0x1c8fcffacae6bede, 0x04c00c54d1dfa369}}, + {{0x4dc22f818b465cf8, 0x71a0f35a1480eff8, 0xaee8bfad04c7d657, 0x355bb12ab26176f4}}}, +{{{0xa71e64cc7493bbf4, 0xe5bd84d9eca3b0c3, 0x0a6bc50cfa05e785, 0x0f9b8132182ec312}}, + {{0xa301dac75a8c7318, 0xed90039db3ceaa11, 0x6f077cbf3bae3f2d, 0x7518eaf8e052ad8e}}, + {{0xa48859c41b7f6c32, 0x0f2d60bcf4383298, 0x1815a929c9b1d1d9, 0x47c3871bbb1755c4}}}, +{{{0x5144539771ec4f48, 0xf805b17dc98c5d6e, 0xf762c11a47c3c66b, 0x00b89b85764699dc}}, + {{0xfbe65d50c85066b0, 0x62ecc4b0b3a299b0, 0xe53754ea441ae8e0, 0x08fea02ce8d48d5f}}, + {{0x824ddd7668deead0, 0xc86445204b685d23, 0xb514cfcd5d89d665, 0x473829a74f75d537}}}, +{{{0x82d2da754679c418, 0xe63bd7d8b2618df0, 0x355eef24ac47eb0a, 0x2078684c4833c6b4}}, + {{0x23d9533aad3902c9, 0x64c2ddceef03588f, 0x15257390cfe12fb4, 0x6c668b4d44e4d390}}, + {{0x3b48cf217a78820c, 0xf76a0ab281273e97, 0xa96c65a78c8eed7b, 0x7411a6054f8a433f}}}, +{{{0x4d659d32b99dc86d, 0x044cdc75603af115, 0xb34c712cdcc2e488, 0x7c136574fb8134ff}}, + {{0x579ae53d18b175b4, 0x68713159f392a102, 0x8455ecba1eef35f5, 0x1ec9a872458c398f}}, + {{0xb8e6a4d400a2509b, 0x9b81d7020bc882b4, 0x57e7cc9bf1957561, 0x3add88a5c7cd6460}}}, +{{{0xab895770b635dcf2, 0x02dfef6cf66c1fbc, 0x85530268beb6d187, 0x249929fccc879e74}}, + {{0x85c298d459393046, 0x8f7e35985ff659ec, 0x1d2ca22af2f66e3a, 0x61ba1131a406a720}}, + {{0xa3d0a0f116959029, 0x023b6b6cba7ebd89, 0x7bf15a3e26783307, 0x5620310cbbd8ece7}}}, +{{{0x528993434934d643, 0xb9dbf806a51222f5, 0x8f6d878fc3f41c22, 0x37676a2a4d9d9730}}, + {{0x6646b5f477e285d6, 0x40e8ff676c8f6193, 0xa6ec7311abb594dd, 0x7ec846f3658cec4d}}, + {{0x9b5e8f3f1da22ec7, 0x130f1d776c01cd13, 0x214c8fcfa2989fb8, 0x6daaf723399b9dd5}}}, +{{{0x591e4a5610628564, 0x2a4bb87ca8b4df34, 0xde2a2572e7a38e43, 0x3cbdabd9fee5046e}}, + {{0x81aebbdd2cd13070, 0x962e4325f85a0e9e, 0xde9391aacadffecb, 0x53177fda52c230e6}}, + {{0xa7bc970650b9de79, 0x3d12a7fbc301b59b, 0x02652e68d36ae38c, 0x79d739835a6199dc}}}, +{{{0xd9354df64131c1bd, 0x758094a186ec5822, 0x4464ee12e459f3c2, 0x6c11fce4cb133282}}, + {{0x21c9d9920d591737, 0x9bea41d2e9b46cd6, 0xe20e84200d89bfca, 0x79d99f946eae5ff8}}, + {{0xf17b483568673205, 0x387deae83caad96c, 0x61b471fd56ffe386, 0x31741195b745a599}}}, +{{{0xe8d10190b77a360b, 0x99b983209995e702, 0xbd4fdff8fa0247aa, 0x2772e344e0d36a87}}, + {{0x17f8ba683b02a047, 0x50212096feefb6c8, 0x70139be21556cbe2, 0x203e44a11d98915b}}, + {{0xd6863eba37b9e39f, 0x105bc169723b5a23, 0x104f6459a65c0762, 0x567951295b4d38d4}}}, +{{{0x535fd60613037524, 0xe210adf6b0fbc26a, 0xac8d0a9b23e990ae, 0x47204d08d72fdbf9}}, + {{0x07242eb30d4b497f, 0x1ef96306b9bccc87, 0x37950934d8116f45, 0x05468d6201405b04}}, + {{0x00f565a9f93267de, 0xcecfd78dc0d58e8a, 0xa215e2dcf318e28e, 0x4599ee919b633352}}}, +{{{0xd3c220ca70e0e76b, 0xb12bea58ea9f3094, 0x294ddec8c3271282, 0x0c3539e1a1d1d028}}, + {{0xac746d6b861ae579, 0x31ab0650f6aea9dc, 0x241d661140256d4c, 0x2f485e853d21a5de}}, + {{0x329744839c0833f3, 0x6fe6257fd2abc484, 0x5327d1814b358817, 0x65712585893fe9bc}}}, +{{{0x9c102fb732a61161, 0xe48e10dd34d520a8, 0x365c63546f9a9176, 0x32f6fe4c046f6006}}, + {{0x81c29f1bd708ee3f, 0xddcb5a05ae6407d0, 0x97aec1d7d2a3eba7, 0x1590521a91d50831}}, + {{0x40a3a11ec7910acc, 0x9013dff8f16d27ae, 0x1a9720d8abb195d4, 0x1bb9fe452ea98463}}}, +{{{0xe9d1d950b3d54f9e, 0x2d5f9cbee00d33c1, 0x51c2c656a04fc6ac, 0x65c091ee3c1cbcc9}}, + {{0xcf5e6c95cc36747c, 0x294201536b0bc30d, 0x453ac67cee797af0, 0x5eae6ab32a8bb3c9}}, + {{0x7083661114f118ea, 0x2b37b87b94349cad, 0x7273f51cb4e99f40, 0x78a2a95823d75698}}}, +{{{0xa2b072e95c8c2ace, 0x69cffc96651e9c4b, 0x44328ef842e7b42b, 0x5dd996c122aadeb3}}, + {{0xb4f23c425ef83207, 0xabf894d3c9a934b5, 0xd0708c1339fd87f7, 0x1876789117166130}}, + {{0x925b5ef0670c507c, 0x819bc842b93c33bf, 0x10792e9a70dd003f, 0x59ad4b7a6e28dc74}}}, +{{{0x5f3a7562eb3dbe47, 0xf7ea38548ebda0b8, 0x00c3e53145747299, 0x1304e9e71627d551}}, + {{0x583b04bfacad8ea2, 0x29b743e8148be884, 0x2b1e583b0810c5db, 0x2b5449e58eb3bbaa}}, + {{0x789814d26adc9cfe, 0x3c1bab3f8b48dd0b, 0xda0fe1fff979c60a, 0x4468de2d7c2dd693}}}, +{{{0x51bb355e9419469e, 0x33e6dc4c23ddc754, 0x93a5b6d6447f9962, 0x6cce7c6ffb44bd63}}, + {{0x4b9ad8c6f86307ce, 0x21113531435d0c28, 0xd4a866c5657a772c, 0x5da6427e63247352}}, + {{0x1a94c688deac22ca, 0xb9066ef7bbae1ff8, 0x88ad8c388d59580f, 0x58f29abfe79f2ca8}}}, +{{{0xe90ecfab8de73e68, 0x54036f9f377e76a5, 0xf0495b0bbe015982, 0x577629c4a7f41e36}}, + {{0x4b5a64bf710ecdf6, 0xb14ce538462c293c, 0x3643d056d50b3ab9, 0x6af93724185b4870}}, + {{0x3220024509c6a888, 0xd2e036134b558973, 0x83e236233c33289f, 0x701f25bb0caec18f}}}, +{{{0xc3a8b0f8e4616ced, 0xf700660e9e25a87d, 0x61e3061ff4bca59c, 0x2e0c92bfbdc40be9}}, + {{0x9d18f6d97cbec113, 0x844a06e674bfdbe4, 0x20f5b522ac4e60d6, 0x720a5bc050955e51}}, + {{0x0c3f09439b805a35, 0xe84e8b376242abfc, 0x691417f35c229346, 0x0e9b9cbb144ef0ec}}}, +{{{0xfbbad48ffb5720ad, 0xee81916bdbf90d0e, 0xd4813152635543bf, 0x221104eb3f337bd8}}, + {{0x8dee9bd55db1beee, 0xc9c3ab370a723fb9, 0x44a8f1bf1c68d791, 0x366d44191cfd3cde}}, + {{0x9e3c1743f2bc8c14, 0x2eda26fcb5856c3b, 0xccb82f0e68a7fb97, 0x4167a4e6bc593244}}}, +{{{0x643b9d2876f62700, 0x5d1d9d400e7668eb, 0x1b4b430321fc0684, 0x7938bb7e2255246a}}, + {{0xc2be2665f8ce8fee, 0xe967ff14e880d62c, 0xf12e6e7e2f364eee, 0x34b33370cb7ed2f6}}, + {{0xcdc591ee8681d6cc, 0xce02109ced85a753, 0xed7485c158808883, 0x1176fc6e2dfe65e4}}}, +{{{0xb4af6cd05b9c619b, 0x2ddfc9f4b2a58480, 0x3d4fa502ebe94dc4, 0x08fc3a4c677d5f34}}, + {{0xdb90e28949770eb8, 0x98fbcc2aacf440a3, 0x21354ffeded7879b, 0x1f6a3e54f26906b6}}, + {{0x60a4c199d30734ea, 0x40c085b631165cd6, 0xe2333e23f7598295, 0x4f2fad0116b900d1}}}, +{{{0x44beb24194ae4e54, 0x5f541c511857ef6c, 0xa61e6b2d368d0498, 0x445484a4972ef7ab}}, + {{0x962cd91db73bb638, 0xe60577aafc129c08, 0x6f619b39f3b61689, 0x3451995f2944ee81}}, + {{0x9152fcd09fea7d7c, 0x4a816c94b0935cf6, 0x258e9aaa47285c40, 0x10b89ca6042893b7}}}, +{{{0x9b2a426e3b646025, 0x32127190385ce4cf, 0xa25cffc2dd6dea45, 0x06409010bea8de75}}, + {{0xd67cded679d34aa0, 0xcc0b9ec0cc4db39f, 0xa535a456e35d190f, 0x2e05d9eaf61f6fef}}, + {{0xc447901ad61beb59, 0x661f19bce5dc880a, 0x24685482b7ca6827, 0x293c778cefe07f26}}}, +{{{0x86809e7007069096, 0xaad75b15e4e50189, 0x07f35715a21a0147, 0x0487f3f112815d5e}}, + {{0x16c795d6a11ff200, 0xcb70d0e2b15815c9, 0x89f293209b5395b5, 0x50b8c2d031e47b4f}}, + {{0x48350c08068a4962, 0x6ffdd05351092c9a, 0x17af4f4aaf6fc8dd, 0x4b0553b53cdba58b}}}, +{{{0x9c65fcbe1b32ff79, 0xeb75ea9f03b50f9b, 0xfced2a6c6c07e606, 0x35106cd551717908}}, + {{0xbf05211b27c152d4, 0x5ec26849bd1af639, 0x5e0b2caa8e6fab98, 0x054c8bdd50bd0840}}, + {{0x38a0b12f1dcf073d, 0x4b60a8a3b7f6a276, 0xfed5ac25d3404f9a, 0x72e82d5e5505c229}}}, +{{{0x6b0b697ff0d844c8, 0xbb12f85cd979cb49, 0xd2a541c6c1da0f1f, 0x7b7c242958ce7211}}, + {{0x00d9cdfd69771d02, 0x410276cd6cfbf17e, 0x4c45306c1cb12ec7, 0x2857bf1627500861}}, + {{0x9f21903f0101689e, 0xd779dfd3bf861005, 0xa122ee5f3deb0f1b, 0x510df84b485a00d4}}}, +{{{0xa54133bb9277a1fa, 0x74ec3b6263991237, 0x1a3c54dc35d2f15a, 0x2d347144e482ba3a}}, + {{0x24b3c887c70ac15e, 0xb0f3a557fb81b732, 0x9b2cde2fe578cc1b, 0x4cf7ed0703b54f8e}}, + {{0x6bd47c6598fbee0f, 0x9e4733e2ab55be2d, 0x1093f624127610c5, 0x4e05e26ad0a1eaa4}}}, +{{{0xda9b6b624b531f20, 0x429a760e77509abb, 0xdbe9f522e823cb80, 0x618f1856880c8f82}}, + {{0x1833c773e18fe6c0, 0xe3c4711ad3c87265, 0x3bfd3c4f0116b283, 0x1955875eb4cd4db8}}, + {{0x6da6de8f0e399799, 0x7ad61aa440fda178, 0xb32cd8105e3563dd, 0x15f6beae2ae340ae}}}, +{{{0x862bcb0c31ec3a62, 0x810e2b451138f3c2, 0x788ec4b839dac2a4, 0x28f76867ae2a9281}}, + {{0xba9a0f7b9245e215, 0xf368612dd98c0dbb, 0x2e84e4cbf220b020, 0x6ba92fe962d90eda}}, + {{0x3e4df9655884e2aa, 0xbd62fbdbdbd465a5, 0xd7596caa0de9e524, 0x6e8042ccb2b1b3d7}}}, +{{{0xf10d3c29ce28ca6e, 0xbad34540fcb6093d, 0xe7426ed7a2ea2d3f, 0x08af9d4e4ff298b9}}, + {{0x1530653616521f7e, 0x660d06b896203dba, 0x2d3989bc545f0879, 0x4b5303af78ebd7b0}}, + {{0x72f8a6c3bebcbde8, 0x4f0fca4adc3a8e89, 0x6fa9d4e8c7bfdf7a, 0x0dcf2d679b624eb7}}}, +{{{0x3d5947499718289c, 0x12ebf8c524533f26, 0x0262bfcb14c3ef15, 0x20b878d577b7518e}}, + {{0x753941be5a45f06e, 0xd07caeed6d9c5f65, 0x11776b9c72ff51b6, 0x17d2d1d9ef0d4da9}}, + {{0x27f2af18073f3e6a, 0xfd3fe519d7521069, 0x22e3b72c3ca60022, 0x72214f63cc65c6a7}}}, +{{{0xb4e37f405307a693, 0xaba714d72f336795, 0xd6fbd0a773761099, 0x5fdf48c58171cbc9}}, + {{0x1d9db7b9f43b29c9, 0xd605824a4f518f75, 0xf2c072bd312f9dc4, 0x1f24ac855a1545b0}}, + {{0x24d608328e9505aa, 0x4748c1d10c1420ee, 0xc7ffe45c06fb25a2, 0x00ba739e2ae395e6}}}, +{{{0x592e98de5c8790d6, 0xe5bfb7d345c2a2df, 0x115a3b60f9b49922, 0x03283a3e67ad78f3}}, + {{0xae4426f5ea88bb26, 0x360679d984973bfb, 0x5c9f030c26694e50, 0x72297de7d518d226}}, + {{0x48241dc7be0cb939, 0x32f19b4d8b633080, 0xd3dfc90d02289308, 0x05e1296846271945}}}, +{{{0xba82eeb32d9c495a, 0xceefc8fcf12bb97c, 0xb02dabae93b5d1e0, 0x39c00c9c13698d9b}}, + {{0xadbfbbc8242c4550, 0xbcc80cecd03081d9, 0x843566a6f5c8df92, 0x78cf25d38258ce4c}}, + {{0x15ae6b8e31489d68, 0xaa851cab9c2bf087, 0xc9a75a97f04efa05, 0x006b52076b3ff832}}}, +{{{0x29e0cfe19d95781c, 0xb681df18966310e2, 0x57df39d370516b39, 0x4d57e3443bc76122}}, + {{0xf5cb7e16b9ce082d, 0x3407f14c417abc29, 0xd4b36bce2bf4a7ab, 0x7de2e9561a9f75ce}}, + {{0xde70d4f4b6a55ecb, 0x4801527f5d85db99, 0xdbc9c440d3ee9a81, 0x6b2a90af1a6029ed}}}, +{{{0x6923f4fc9ae61e97, 0x5735281de03f5fd1, 0xa764ae43e6edd12d, 0x5fd8f4e9d12d3e4a}}, + {{0x77ebf3245bb2d80a, 0xd8301b472fb9079b, 0xc647e6f24cee7333, 0x465812c8276c2109}}, + {{0x4d43beb22a1062d9, 0x7065fb753831dc16, 0x180d4a7bde2968d7, 0x05b32c2b1cb16790}}}, +{{{0xc8c05eccd24da8fd, 0xa1cf1aac05dfef83, 0xdbbeeff27df9cd61, 0x3b5556a37b471e99}}, + {{0xf7fca42c7ad58195, 0x3214286e4333f3cc, 0xb6c29d0d340b979d, 0x31771a48567307e1}}, + {{0x32b0c524e14dd482, 0xedb351541a2ba4b6, 0xa3d16048282b5af3, 0x4fc079d27a7336eb}}}, +{{{0x51c938b089bf2f7f, 0x2497bd6502dfe9a7, 0xffffc09c7880e453, 0x124567cecaf98e92}}, + {{0xdc348b440c86c50d, 0x1337cbc9cc94e651, 0x6422f74d643e3cb9, 0x241170c2bae3cd08}}, + {{0x3ff9ab860ac473b4, 0xf0911dee0113e435, 0x4ae75060ebc6c4af, 0x3f8612966c87000d}}}, +{{{0x0c9c5303f7957be4, 0xa3c31a20e085c145, 0xb0721d71d0850050, 0x0aba390eab0bf2da}}, + {{0x529fdffe638c7bf3, 0xdf2b9e60388b4995, 0xe027b34f1bad0249, 0x7bc92fc9b9fa74ed}}, + {{0x9f97ef2e801ad9f9, 0x83697d5479afda3a, 0xe906b3ffbd596b50, 0x02672b37dd3fb8e0}}}, +{{{0x48b2ca8b260885e4, 0xa4286bec82b34c1c, 0x937e1a2617f58f74, 0x741d1fcbab2ca2a5}}, + {{0xee9ba729398ca7f5, 0xeb9ca6257a4849db, 0x29eb29ce7ec544e1, 0x232ca21ef736e2c8}}, + {{0xbf61423d253fcb17, 0x08803ceafa39eb14, 0xf18602df9851c7af, 0x0400f3a049e3414b}}}, +{{{0xabce0476ba61c55b, 0x36a3d6d7c4d39716, 0x6eb259d5e8d82d09, 0x0c9176e984d756fb}}, + {{0x2efba412a06e7b06, 0x146785452c8d2560, 0xdf9713ebd67a91c7, 0x32830ac7157eadf3}}, + {{0x0e782a7ab73769e8, 0x04a05d7875b18e2c, 0x29525226ebcceae1, 0x0d794f8383eba820}}}, +{{{0xff35f5cb9e1516f4, 0xee805bcf648aae45, 0xf0d73c2bb93a9ef3, 0x097b0bf22092a6c2}}, + {{0x7be44ce7a7a2e1ac, 0x411fd93efad1b8b7, 0x1734a1d70d5f7c9b, 0x0d6592233127db16}}, + {{0xc48bab1521a9d733, 0xa6c2eaead61abb25, 0x625c6c1cc6cb4305, 0x7fc90fea93eb3a67}}}, +{{{0x0408f1fe1f5c5926, 0x1a8f2f5e3b258bf4, 0x40a951a2fdc71669, 0x6598ee93c98b577e}}, + {{0xc527deb59c7cb23d, 0x955391695328404e, 0xd64392817ccf2c7a, 0x6ce97dabf7d8fa11}}, + {{0x25b5a8e50ef7c48f, 0xeb6034116f2ce532, 0xc5e75173e53de537, 0x73119fa08c12bb03}}}, +{{{0xed30129453f1a4cb, 0xbce621c9c8f53787, 0xfacb2b1338bee7b9, 0x3025798a9ea8428c}}, + {{0x7845b94d21f4774d, 0xbf62f16c7897b727, 0x671857c03c56522b, 0x3cd6a85295621212}}, + {{0x3fecde923aeca999, 0xbdaa5b0062e8c12f, 0x67b99dfc96988ade, 0x3f52c02852661036}}}, +{{{0xffeaa48e2a1351c6, 0x28624754fa7f53d7, 0x0b5ba9e57582ddf1, 0x60c0104ba696ac59}}, + {{0x9258bf99eec416c6, 0xac8a5017a9d2f671, 0x629549ab16dea4ab, 0x05d0e85c99091569}}, + {{0x051de020de9cbe97, 0xfa07fc56b50bcf74, 0x378cec9f0f11df65, 0x36853c69ab96de4d}}}, +{{{0x36d9b8de78f39b2d, 0x7f42ed71a847b9ec, 0x241cd1d679bd3fde, 0x6a704fec92fbce6b}}, + {{0x4433c0b0fac5e7be, 0x724bae854c08dcbe, 0xf1f24cc446978f9b, 0x4a0aff6d62825fc8}}, + {{0xe917fb9e61095301, 0xc102df9402a092f8, 0xbf09e2f5fa66190b, 0x681109bee0dcfe37}}}, +{{{0x559a0cc9782a0dde, 0x551dcdb2ea718385, 0x7f62865b31ef238c, 0x504aa7767973613d}}, + {{0x9c18fcfa36048d13, 0x29159db373899ddd, 0xdc9f350b9f92d0aa, 0x26f57eee878a19d4}}, + {{0x0cab2cd55687efb1, 0x5180d162247af17b, 0x85c15a344f5a2467, 0x4041943d9dba3069}}}, +{{{0xc3c0eeba43ebcc96, 0x8d749c9c26ea9caf, 0xd9fa95ee1c77ccc6, 0x1420a1d97684340f}}, + {{0x4b217743a26caadd, 0x47a6b424648ab7ce, 0xcb1d4f7a03fbc9e3, 0x12d931429800d019}}, + {{0x00c67799d337594f, 0x5e3c5140b23aa47b, 0x44182854e35ff395, 0x1b4f92314359a012}}}, +{{{0x3e5c109d89150951, 0x39cefa912de9696a, 0x20eae43f975f3020, 0x239b572a7f132dae}}, + {{0x33cf3030a49866b1, 0x251f73d2215f4859, 0xab82aa4051def4f6, 0x5ff191d56f9a23f6}}, + {{0x819ed433ac2d9068, 0x2883ab795fc98523, 0xef4572805593eb3d, 0x020c526a758f36cb}}}, +{{{0x779834f89ed8dbbc, 0xc8f2aaf9dc7ca46c, 0xa9524cdca3e1b074, 0x02aacc4615313877}}, + {{0xe931ef59f042cc89, 0x2c589c9d8e124bb6, 0xadc8e18aaec75997, 0x452cfe0a5602c50c}}, + {{0x86a0f7a0647877df, 0xbbc464270e607c9f, 0xab17ea25f1fb11c9, 0x4cfb7d7b304b877b}}}, +{{{0x72b43d6cb89b75fe, 0x54c694d99c6adc80, 0xb8c3aa373ee34c9f, 0x14b4622b39075364}}, + {{0xe28699c29789ef12, 0x2b6ecd71df57190d, 0xc343c857ecc970d0, 0x5b1d4cbc434d3ac5}}, + {{0xb6fb2615cc0a9f26, 0x3a4f0e2bb88dcce5, 0x1301498b3369a705, 0x2f98f71258592dd1}}}, +{{{0x0c94a74cb50f9e56, 0x5b1ff4a98e8e1320, 0x9a2acc2182300f67, 0x3a6ae249d806aaf9}}, + {{0x2e12ae444f54a701, 0xfcfe3ef0a9cbd7de, 0xcebf890d75835de0, 0x1d8062e9e7614554}}, + {{0x657ada85a9907c5a, 0x1a0ea8b591b90f62, 0x8d0e1dfbdf34b4e9, 0x298b8ce8aef25ff3}}}, +{{{0x2a927953eff70cb2, 0x4b89c92a79157076, 0x9418457a30a7cf6a, 0x34b8a8404d5ce485}}, + {{0x837a72ea0a2165de, 0x3fab07b40bcf79f6, 0x521636c77738ae70, 0x6ba6271803a7d7dc}}, + {{0xc26eecb583693335, 0xd5a813df63b5fefd, 0xa293aa9aa4b22573, 0x71d62bdd465e1c6a}}}, +{{{0x6533cc28d378df80, 0xf6db43790a0fa4b4, 0xe3645ff9f701da5a, 0x74d5f317f3172ba4}}, + {{0xcd2db5dab1f75ef5, 0xd77f95cf16b065f5, 0x14571fea3f49f085, 0x1c333621262b2b3d}}, + {{0xa86fe55467d9ca81, 0x398b7c752b298c37, 0xda6d0892e3ac623b, 0x4aebcc4547e9d98c}}}, +{{{0x53175a7205d21a77, 0xb0c04422d3b934d4, 0xadd9f24bdd5deadc, 0x074f46e69f10ff8c}}, + {{0x0de9b204a059a445, 0xe15cb4aa4b17ad0f, 0xe1bbec521f79c557, 0x2633f1b9d071081b}}, + {{0xc1fb4177018b9910, 0xa6ea20dc6c0fe140, 0xd661f3e74354c6ff, 0x5ecb72e6f1a3407a}}}, +{{{0xa515a31b2259fb4e, 0x0960f3972bcac52f, 0xedb52fec8d3454cb, 0x382e2720c476c019}}, + {{0xfeeae106e8e86997, 0x9863337f98d09383, 0x9470480eaa06ebef, 0x038b6898d4c5c2d0}}, + {{0xf391c51d8ace50a6, 0x3142d0b9ae2d2948, 0xdb4d5a1a7f24ca80, 0x21aeba8b59250ea8}}}, +{{{0x24f13b34cf405530, 0x3c44ea4a43088af7, 0x5dd5c5170006a482, 0x118eb8f8890b086d}}, + {{0x53853600f0087f23, 0x4c461879da7d5784, 0x6af303deb41f6860, 0x0a3c16c5c27c18ed}}, + {{0x17e49c17cc947f3d, 0xccc6eda6aac1d27b, 0xdf6092ceb0f08e56, 0x4909b3e22c67c36b}}}, +{{{0x9c9c85ea63fe2e89, 0xbe1baf910e9412ec, 0x8f7baa8a86fbfe7b, 0x0fb17f9fef968b6c}}, + {{0x59a16676706ff64e, 0x10b953dd0d86a53d, 0x5848e1e6ce5c0b96, 0x2d8b78e712780c68}}, + {{0x79d5c62eafc3902b, 0x773a215289e80728, 0xc38ae640e10120b9, 0x09ae23717b2b1a6d}}}, +{{{0xbb6a192a4e4d083c, 0x34ace0630029e192, 0x98245a59aafabaeb, 0x6d9c8a9ada97faac}}, + {{0x10ab8fa1ad32b1d0, 0xe9aced1be2778b24, 0xa8856bc0373de90f, 0x66f35ddddda53996}}, + {{0xd27d9afb24997323, 0x1bb7e07ef6f01d2e, 0x2ba7472df52ecc7f, 0x03019b4f646f9dc8}}}, +{{{0x04a186b5565345cd, 0xeee76610bcc4116a, 0x689c73b478fb2a45, 0x387dcbff65697512}}, + {{0xaf09b214e6b3dc6b, 0x3f7573b5ad7d2f65, 0xd019d988100a23b0, 0x392b63a58b5c35f7}}, + {{0x4093addc9c07c205, 0xc565be15f532c37e, 0x63dbecfd1583402a, 0x61722b4aef2e032e}}}, +{{{0x0012aafeecbd47af, 0x55a266fb1cd46309, 0xf203eb680967c72c, 0x39633944ca3c1429}}, + {{0xd6b07a5581cb0e3c, 0x290ff006d9444969, 0x08680b6a16dcda1f, 0x5568d2b75a06de59}}, + {{0x8d0cb88c1b37cfe1, 0x05b6a5a3053818f3, 0xf2e9bc04b787d959, 0x6beba1249add7f64}}}, +{{{0x1d06005ca5b1b143, 0x6d4c6bb87fd1cda2, 0x6ef5967653fcffe7, 0x097c29e8c1ce1ea5}}, + {{0x5c3cecb943f5a53b, 0x9cc9a61d06c08df2, 0xcfba639a85895447, 0x5a845ae80df09fd5}}, + {{0x4ce97dbe5deb94ca, 0x38d0a4388c709c48, 0xc43eced4a169d097, 0x0a1249fff7e587c3}}}, +{{{0x12f0071b276d01c9, 0xe7b8bac586c48c70, 0x5308129b71d6fba9, 0x5d88fbf95a3db792}}, + {{0x0b408d9e7354b610, 0x806b32535ba85b6e, 0xdbe63a034a58a207, 0x173bd9ddc9a1df2c}}, + {{0x2b500f1efe5872df, 0x58d6582ed43918c1, 0xe6ed278ec9673ae0, 0x06e1cd13b19ea319}}}, +{{{0x40d0ad516f166f23, 0x118e32931fab6abe, 0x3fe35e14a04d088e, 0x3080603526e16266}}, + {{0x472baf629e5b0353, 0x3baa0b90278d0447, 0x0c785f469643bf27, 0x7f3a6a1a8d837b13}}, + {{0xf7e644395d3d800b, 0x95a8d555c901edf6, 0x68cd7830592c6339, 0x30d0fded2e51307e}}}, +{{{0xe0594d1af21233b3, 0x1bdbe78ef0cc4d9c, 0x6965187f8f499a77, 0x0a9214202c099868}}, + {{0x9cb4971e68b84750, 0xa09572296664bbcf, 0x5c8de72672fa412b, 0x4615084351c589d9}}, + {{0xbc9019c0aeb9a02e, 0x55c7110d16034cae, 0x0e6df501659932ec, 0x3bca0d2895ca5dfe}}}, +{{{0x40f031bc3c5d62a4, 0x19fc8b3ecff07a60, 0x98183da2130fb545, 0x5631deddae8f13cd}}, + {{0x9c688eb69ecc01bf, 0xf0bc83ada644896f, 0xca2d955f5f7a9fe2, 0x4ea8b4038df28241}}, + {{0x2aed460af1cad202, 0x46305305a48cee83, 0x9121774549f11a5f, 0x24ce0930542ca463}}}, +{{{0x1fe890f5fd06c106, 0xb5c468355d8810f2, 0x827808fe6e8caf3e, 0x41d4e3c28a06d74b}}, + {{0x3fcfa155fdf30b85, 0xd2f7168e36372ea4, 0xb2e064de6492f844, 0x549928a7324f4280}}, + {{0xf26e32a763ee1a2e, 0xae91e4b7d25ffdea, 0xbc3bd33bd17f4d69, 0x491b66dec0dcff6a}}}, +{{{0x98f5b13dc7ea32a7, 0xe3d5f8cc7e16db98, 0xac0abf52cbf8d947, 0x08f338d0c85ee4ac}}, + {{0x75f04a8ed0da64a1, 0xed222caf67e2284b, 0x8234a3791f7b7ba4, 0x4cf6b8b0b7018b67}}, + {{0xc383a821991a73bd, 0xab27bc01df320c7a, 0xc13d331b84777063, 0x530d4a82eb078a99}}}, +{{{0x004c3630e1f94825, 0x7e2d78268cab535a, 0xc7482323cc84ff8b, 0x65ea753f101770b9}}, + {{0x6d6973456c9abf9e, 0x257fb2fc4900a880, 0x2bacf412c8cfb850, 0x0db3e7e00cbfbd5b}}, + {{0x3d66fc3ee2096363, 0x81d62c7f61b5cb6b, 0x0fbe044213443b1a, 0x02a4ec1921e1a1db}}}, +{{{0x5ce6259a3b24b8a2, 0xb8577acc45afa0b8, 0xcccbe6e88ba07037, 0x3d143c51127809bf}}, + {{0xf5c86162f1cf795f, 0x118c861926ee57f2, 0x172124851c063578, 0x36d12b5dec067fcf}}, + {{0x126d279179154557, 0xd5e48f5cfc783a0a, 0x36bdb6e8df179bac, 0x2ef517885ba82859}}}, +{{{0x88bd438cd11e0d4a, 0x30cb610d43ccf308, 0xe09a0e3791937bcc, 0x4559135b25b1720c}}, + {{0x1ea436837c6da1e9, 0xf9c189af1fb9bdbe, 0x303001fcce5dd155, 0x28a7c99ebc57be52}}, + {{0xb8fd9399e8d19e9d, 0x908191cb962423ff, 0xb2b948d747c742a3, 0x37f33226d7fb44c4}}}, +{{{0x0dae8767b55f6e08, 0x4a43b3b35b203a02, 0xe3725a6e80af8c79, 0x0f7a7fd1705fa7a3}}, + {{0x33912553c821b11d, 0x66ed42c241e301df, 0x066fcc11104222fd, 0x307a3b41c192168f}}, + {{0x8eeb5d076eb55ce0, 0x2fc536bfaa0d925a, 0xbe81830fdcb6c6e8, 0x556c7045827baf52}}}, +{{{0x8e2b517302e9d8b7, 0xe3e52269248714e8, 0xbd4fbd774ca960b5, 0x6f4b4199c5ecada9}}, + {{0xb94b90022bf44406, 0xabd4237eff90b534, 0x7600a960faf86d3a, 0x2f45abdac2322ee3}}, + {{0x61af4912c8ef8a6a, 0xe58fa4fe43fb6e5e, 0xb5afcc5d6fd427cf, 0x6a5393281e1e11eb}}}, +{{{0xf3da5139a5d1ee89, 0x8145457cff936988, 0x3f622fed00e188c4, 0x0f513815db8b5a3d}}, + {{0x0fff04fe149443cf, 0x53cac6d9865cddd7, 0x31385b03531ed1b7, 0x5846a27cacd1039d}}, + {{0x4ff5cdac1eb08717, 0x67e8b29590f2e9bc, 0x44093b5e237afa99, 0x0d414bed8708b8b2}}}, +{{{0xcfb68265fd0e75f6, 0xe45b3e28bb90e707, 0x7242a8de9ff92c7a, 0x685b3201933202dd}}, + {{0x81886a92294ac9e8, 0x23162b45d55547be, 0x94cfbc4403715983, 0x50eb8fdb134bc401}}, + {{0xc0b73ec6d6b330cd, 0x84e44807132faff1, 0x732b7352c4a5dee1, 0x5d7c7cf1aa7cd2d2}}}, +{{{0xaf3b46bf7a4aafa2, 0xb78705ec4d40d411, 0x114f0c6aca7c15e3, 0x3f364faaa9489d4d}}, + {{0x33d1013e9b73a562, 0x925cef5748ec26e1, 0xa7fce614dd468058, 0x78b0fad41e9aa438}}, + {{0xbf56a431ed05b488, 0xa533e66c9c495c7e, 0xe8652baf87f3651a, 0x0241800059d66c33}}}, +{{{0xceb077fea37a5be4, 0xdb642f02e5a5eeb7, 0xc2e6d0c5471270b8, 0x4771b65538e4529c}}, + {{0x28350c7dcf38ea01, 0x7c6cdbc0b2917ab6, 0xace7cfbe857082f7, 0x4d2845aba2d9a1e0}}, + {{0xbb537fe0447070de, 0xcba744436dd557df, 0xd3b5a3473600dbcb, 0x4aeabbe6f9ffd7f8}}}, +{{{0x4630119e40d8f78c, 0xa01a9bc53c710e11, 0x486d2b258910dd79, 0x1e6c47b3db0324e5}}, + {{0x6a2134bcc4a9c8f2, 0xfbf8fd1c8ace2e37, 0x000ae3049911a0ba, 0x046e3a616bc89b9e}}, + {{0x14e65442f03906be, 0x4a019d54e362be2a, 0x68ccdfec8dc230c7, 0x7cfb7e3faf6b861c}}}, +{{{0x4637974e8c58aedc, 0xb9ef22fbabf041a4, 0xe185d956e980718a, 0x2f1b78fab143a8a6}}, + {{0x96eebffb305b2f51, 0xd3f938ad889596b8, 0xf0f52dc746d5dd25, 0x57968290bb3a0095}}, + {{0xf71ab8430a20e101, 0xf393658d24f0ec47, 0xcf7509a86ee2eed1, 0x7dc43e35dc2aa3e1}}}, +{{{0x85966665887dd9c3, 0xc90f9b314bb05355, 0xc6e08df8ef2079b1, 0x7ef72016758cc12f}}, + {{0x5a782a5c273e9718, 0x3576c6995e4efd94, 0x0f2ed8051f237d3e, 0x044fb81d82d50a99}}, + {{0xc1df18c5a907e3d9, 0x57b3371dce4c6359, 0xca704534b201bb49, 0x7f79823f9c30dd2e}}}, +{{{0x8334d239a3b513e8, 0xc13670d4b91fa8d8, 0x12b54136f590bd33, 0x0a4e0373d784d9b4}}, + {{0x6a9c1ff068f587ba, 0x0827894e0050c8de, 0x3cbf99557ded5be7, 0x64a9b0431c06d6f0}}, + {{0x2eb3d6a15b7d2919, 0xb0b4f6a0d53a8235, 0x7156ce4389a45d47, 0x071a7d0ace18346c}}}, +{{{0xd3072daac887ba0b, 0x01262905bfa562ee, 0xcf543002c0ef768b, 0x2c3bcc7146ea7e9c}}, + {{0xcc0c355220e14431, 0x0d65950709b15141, 0x9af5621b209d5f36, 0x7c69bcf7617755d3}}, + {{0x07f0d7eb04e8295f, 0x10db18252f50f37d, 0xe951a9a3171798d7, 0x6f5a9a7322aca51d}}}, +{{{0x8ba1000c2f41c6c5, 0xc49f79c10cfefb9b, 0x4efa47703cc51c9f, 0x494e21a2e147afca}}, + {{0xe729d4eba3d944be, 0x8d9e09408078af9e, 0x4525567a47869c03, 0x02ab9680ee8d3b24}}, + {{0xefa48a85dde50d9a, 0x219a224e0fb9a249, 0xfa091f1dd91ef6d9, 0x6b5d76cbea46bb34}}}, +{{{0x8857556cec0cd994, 0x6472dc6f5cd01dba, 0xaf0169148f42b477, 0x0ae333f685277354}}, + {{0xe0f941171e782522, 0xf1e6ae74036936d3, 0x408b3ea2d0fcc746, 0x16fb869c03dd313e}}, + {{0x288e199733b60962, 0x24fc72b4d8abe133, 0x4811f7ed0991d03e, 0x3f81e38b8f70d075}}}, +{{{0x7f910fcc7ed9affe, 0x545cb8a12465874b, 0xa8397ed24b0c4704, 0x50510fc104f50993}}, + {{0x0adb7f355f17c824, 0x74b923c3d74299a4, 0xd57c3e8bcbf8eaf7, 0x0ad3e2d34cdedc3d}}, + {{0x6f0c0fc5336e249d, 0x745ede19c331cfd9, 0xf2d6fd0009eefe1c, 0x127c158bf0fa1ebe}}}, +{{{0xf6197c422e9879a2, 0xa44addd452ca3647, 0x9b413fc14b4eaccb, 0x354ef87d07ef4f68}}, + {{0xdea28fc4ae51b974, 0x1d9973d3744dfe96, 0x6240680b873848a8, 0x4ed82479d167df95}}, + {{0xfee3b52260c5d975, 0x50352efceb41b0b8, 0x8808ac30a9f6653c, 0x302d92d20539236d}}}, +{{{0x4c59023fcb3efb7c, 0x6c2fcb99c63c2a94, 0xba4190e2c3c7e084, 0x0e545daea51874d9}}, + {{0x957b8b8b0df53c30, 0x2a1c770a8e60f098, 0xbbc7a670345796de, 0x22a48f9a90c99bc9}}, + {{0x6b7dc0dc8d3fac58, 0x5497cd6ce6e42bfd, 0x542f7d1bf400d305, 0x4159f47f048d9136}}}, +{{{0x20ad660839e31e32, 0xf81e1bd58405be50, 0xf8064056f4dabc69, 0x14d23dd4ce71b975}}, + {{0x748515a8bbd24839, 0x77128347afb02b55, 0x50ba2ac649a2a17f, 0x060525513ad730f1}}, + {{0xf2398e098aa27f82, 0x6d7982bb89a1b024, 0xfa694084214dd24c, 0x71ab966fa32301c3}}}, +{{{0x2dcbd8e34ded02fc, 0x1151f3ec596f22aa, 0xbca255434e0328da, 0x35768fbe92411b22}}, + {{0xb1088a0702809955, 0x43b273ea0b43c391, 0xca9b67aefe0686ed, 0x605eecbf8335f4ed}}, + {{0x83200a656c340431, 0x9fcd71678ee59c2f, 0x75d4613f71300f8a, 0x7a912faf60f542f9}}}, +{{{0xb204585e5edc1a43, 0x9f0e16ee5897c73c, 0x5b82c0ae4e70483c, 0x624a170e2bddf9be}}, + {{0x253f4f8dfa2d5597, 0x25e49c405477130c, 0x00c052e5996b1102, 0x33cb966e33bb6c4a}}, + {{0x597028047f116909, 0x828ac41c1e564467, 0x70417dbde6217387, 0x721627aefbac4384}}}, +{{{0x97d03bc38736add5, 0x2f1422afc532b130, 0x3aa68a057101bbc4, 0x4c946cf7e74f9fa7}}, + {{0xfd3097bc410b2f22, 0xf1a05da7b5cfa844, 0x61289a1def57ca74, 0x245ea199bb821902}}, + {{0xaedca66978d477f8, 0x1898ba3c29117fe1, 0xcf73f983720cbd58, 0x67da12e6b8b56351}}}, +{{{0x7067e187b4bd6e07, 0x6e8f0203c7d1fe74, 0x93c6aa2f38c85a30, 0x76297d1f3d75a78a}}, + {{0x2b7ef3d38ec8308c, 0x828fd7ec71eb94ab, 0x807c3b36c5062abd, 0x0cb64cb831a94141}}, + {{0x3030fc33534c6378, 0xb9635c5ce541e861, 0x15d9a9bed9b2c728, 0x49233ea3f3775dcb}}}, +{{{0x629398fa8dbffc3a, 0xe12fe52dd54db455, 0xf3be11dfdaf25295, 0x628b140dce5e7b51}}, + {{0x7b3985fe1c9f249b, 0x4fd6b2d5a1233293, 0xceb345941adf4d62, 0x6987ff6f542de50c}}, + {{0x47e241428f83753c, 0x6317bebc866af997, 0xdabb5b433d1a9829, 0x074d8d245287fb2d}}}, +{{{0x8337d9cd440bfc31, 0x729d2ca1af318fd7, 0xa040a4a4772c2070, 0x46002ef03a7349be}}, + {{0x481875c6c0e31488, 0x219429b2e22034b4, 0x7223c98a31283b65, 0x3420d60b342277f9}}, + {{0xfaa23adeaffe65f7, 0x78261ed45be0764c, 0x441c0a1e2f164403, 0x5aea8e567a87d395}}}, +{{{0x7813c1a2bca4283d, 0xed62f091a1863dd9, 0xaec7bcb8c268fa86, 0x10e5d3b76f1cae4c}}, + {{0x2dbc6fb6e4e0f177, 0x04e1bf29a4bd6a93, 0x5e1966d4787af6e8, 0x0edc5f5eb426d060}}, + {{0x5453bfd653da8e67, 0xe9dc1eec24a9f641, 0xbf87263b03578a23, 0x45b46c51361cba72}}}, +{{{0xa9402abf314f7fa1, 0xe257f1dc8e8cf450, 0x1dbbd54b23a8be84, 0x2177bfa36dcb713b}}, + {{0xce9d4ddd8a7fe3e4, 0xab13645676620e30, 0x4b594f7bb30e9958, 0x5c1c0aef321229df}}, + {{0x37081bbcfa79db8f, 0x6048811ec25f59b3, 0x087a76659c832487, 0x4ae619387d8ab5bb}}}, +{{{0x8ddbf6aa5344a32e, 0x7d88eab4b41b4078, 0x5eb0eb974a130d60, 0x1a00d91b17bf3e03}}, + {{0x61117e44985bfb83, 0xfce0462a71963136, 0x83ac3448d425904b, 0x75685abe5ba43d64}}, + {{0x6e960933eb61f2b2, 0x543d0fa8c9ff4952, 0xdf7275107af66569, 0x135529b623b0e6aa}}}, +{{{0x18f0dbd7add1d518, 0x979f7888cfc11f11, 0x8732e1f07114759b, 0x79b5b81a65ca3a01}}, + {{0xf5c716bce22e83fe, 0xb42beb19e80985c1, 0xec9da63714254aae, 0x5972ea051590a613}}, + {{0x0fd4ac20dc8f7811, 0x9a9ad294ac4d4fa8, 0xc01b2d64b3360434, 0x4f7e9c95905f3bdb}}}, +{{{0x62674bbc5781302e, 0xd8520f3989addc0f, 0x8c2999ae53fbd9c6, 0x31993ad92e638e4c}}, + {{0x71c8443d355299fe, 0x8bcd3b1cdbebead7, 0x8092499ef1a49466, 0x1942eec4a144adc8}}, + {{0x7dac5319ae234992, 0x2c1b3d910cea3e92, 0x553ce494253c1122, 0x2a0a65314ef9ca75}}}, +{{{0x2db7937ff7f927c2, 0xdb741f0617d0a635, 0x5982f3a21155af76, 0x4cf6e218647c2ded}}, + {{0xcf361acd3c1c793a, 0x2f9ebcac5a35bc3b, 0x60e860e9a8cda6ab, 0x055dc39b6dea1a13}}, + {{0xb119227cc28d5bb6, 0x07e24ebc774dffab, 0xa83c78cee4a32c89, 0x121a307710aa24b6}}}, +{{{0xe4db5d5e9f034a97, 0xe153fc093034bc2d, 0x460546919551d3b1, 0x333fc76c7a40e52d}}, + {{0xd659713ec77483c9, 0x88bfe077b82b96af, 0x289e28231097bcd3, 0x527bb94a6ced3a9b}}, + {{0x563d992a995b482e, 0x3405d07c6e383801, 0x485035de2f64d8e5, 0x6b89069b20a7a9f7}}}, +{{{0x812aa0416270220d, 0x995a89faf9245b4e, 0xffadc4ce5072ef05, 0x23bc2103aa73eb73}}, + {{0x4082fa8cb5c7db77, 0x068686f8c734c155, 0x29e6c8d9f6e7a57e, 0x0473d308a7639bcf}}, + {{0xcaee792603589e05, 0x2b4b421246dcc492, 0x02a1ef74e601a94f, 0x102f73bfde04341a}}}, +{{{0xb5a2d50c7ec20d3e, 0xc64bdd6ea0c97263, 0x56e89052c1ff734d, 0x4929c6f72b2ffaba}}, + {{0x358ecba293a36247, 0xaf8f9862b268fd65, 0x412f7e9968a01c89, 0x5786f312cd754524}}, + {{0x337788ffca14032c, 0xf3921028447f1ee3, 0x8b14071f231bccad, 0x4c817b4bf2344783}}}, +{{{0x0ff853852871b96e, 0xe13e9fab60c3f1bb, 0xeefd595325344402, 0x0a37c37075b7744b}}, + {{0x413ba057a40b4484, 0xba4c2e1a4f5f6a43, 0x614ba0a5aee1d61c, 0x78a1531a8b05dc53}}, + {{0x6cbdf1703ad0562b, 0x8ecf4830c92521a3, 0xdaebd303fd8424e7, 0x72ad82a42e5ec56f}}}, +{{{0x3f9e8e35bafb65f6, 0x39d69ec8f27293a1, 0x6cb8cd958cf6a3d0, 0x1734778173adae6d}}, + {{0xc368939167024bc3, 0x8e69d16d49502fda, 0xfcf2ec3ce45f4b29, 0x065f669ea3b4cbc4}}, + {{0x8a00aec75532db4d, 0xb869a4e443e31bb1, 0x4a0f8552d3a7f515, 0x19adeb7c303d7c08}}}, +{{{0xc720cb6153ead9a3, 0x55b2c97f512b636e, 0xb1e35b5fd40290b1, 0x2fd9ccf13b530ee2}}, + {{0x9d05ba7d43c31794, 0x2470c8ff93322526, 0x8323dec816197438, 0x2852709881569b53}}, + {{0x07bd475b47f796b8, 0xd2c7b013542c8f54, 0x2dbd23f43b24f87e, 0x6551afd77b0901d6}}}, +{{{0x4546baaf54aac27f, 0xf6f66fecb2a45a28, 0x582d1b5b562bcfe8, 0x44b123f3920f785f}}, + {{0x68a24ce3a1d5c9ac, 0xbb77a33d10ff6461, 0x0f86ce4425d3166e, 0x56507c0950b9623b}}, + {{0x1206f0b7d1713e63, 0x353fe3d915bafc74, 0x194ceb970ad9d94d, 0x62fadd7cf9d03ad3}}}, +{{{0xc6b5967b5598a074, 0x5efe91ce8e493e25, 0xd4b72c4549280888, 0x20ef1149a26740c2}}, + {{0x3cd7bc61e7ce4594, 0xcd6b35a9b7dd267e, 0xa080abc84366ef27, 0x6ec7c46f59c79711}}, + {{0x2f07ad636f09a8a2, 0x8697e6ce24205e7d, 0xc0aefc05ee35a139, 0x15e80958b5f9d897}}}, +{{{0x25a5ef7d0c3e235b, 0x6c39c17fbe134ee7, 0xc774e1342dc5c327, 0x021354b892021f39}}, + {{0x4dd1ed355bb061c4, 0x42dc0cef941c0700, 0x61305dc1fd86340e, 0x56b2cc930e55a443}}, + {{0x1df79da6a6bfc5a2, 0x02f3a2749fde4369, 0xb323d9f2cda390a7, 0x7be0847b8774d363}}}, +{{{0x8c99cc5a8b3f55c3, 0x0611d7253fded2a0, 0xed2995ff36b70a36, 0x1f699a54d78a2619}}, + {{0x1466f5af5307fa11, 0x817fcc7ded6c0af2, 0x0a6de44ec3a4a3fb, 0x74071475bc927d0b}}, + {{0xe77292f373e7ea8a, 0x296537d2cb045a31, 0x1bd0653ed3274fde, 0x2f9a2c4476bd2966}}}, +{{{0xeb18b9ab7f5745c6, 0x023a8aee5787c690, 0xb72712da2df7afa9, 0x36597d25ea5c013d}}, + {{0xa2b4dae0b5511c9a, 0x7ac860292bffff06, 0x981f375df5504234, 0x3f6bd725da4ea12d}}, + {{0x734d8d7b106058ac, 0xd940579e6fc6905f, 0x6466f8f99202932d, 0x7b7ecc19da60d6d0}}}, +{{{0x78c2373c695c690d, 0xdd252e660642906e, 0x951d44444ae12bd2, 0x4235ad7601743956}}, + {{0x6dae4a51a77cfa9b, 0x82263654e7a38650, 0x09bbffcd8f2d82db, 0x03bedc661bf5caba}}, + {{0x6258cb0d078975f5, 0x492942549189f298, 0xa0cab423e2e36ee4, 0x0e7ce2b0cdf066a1}}}, +{{{0xc494643ac48c85a3, 0xfd361df43c6139ad, 0x09db17dd3ae94d48, 0x666e0a5d8fb4674a}}, + {{0xfea6fedfd94b70f9, 0xf130c051c1fcba2d, 0x4882d47e7f2fab89, 0x615256138aeceeb5}}, + {{0x2abbf64e4870cb0d, 0xcd65bcf0aa458b6b, 0x9abe4eba75e8985d, 0x7f0bc810d514dee4}}}, +{{{0xb9006ba426f4136f, 0x8d67369e57e03035, 0xcbc8dfd94f463c28, 0x0d1f8dbcf8eedbf5}}, + {{0x83ac9dad737213a0, 0x9ff6f8ba2ef72e98, 0x311e2edd43ec6957, 0x1d3a907ddec5ab75}}, + {{0xba1693313ed081dc, 0x29329fad851b3480, 0x0128013c030321cb, 0x00011b44a31bfde3}}}, +{{{0x3fdfa06c3fc66c0c, 0x5d40e38e4dd60dd2, 0x7ae38b38268e4d71, 0x3ac48d916e8357e1}}, + {{0x16561f696a0aa75c, 0xc1bf725c5852bd6a, 0x11a8dd7f9a7966ad, 0x63d988a2d2851026}}, + {{0x00120753afbd232e, 0xe92bceb8fdd8f683, 0xf81669b384e72b91, 0x33fad52b2368a066}}}, +{{{0x540649c6c5e41e16, 0x0af86430333f7735, 0xb2acfcd2f305e746, 0x16c0f429a256dca7}}, + {{0x8d2cc8d0c422cfe8, 0x072b4f7b05a13acb, 0xa3feb6e6ecf6a56f, 0x3cc355ccb90a71e2}}, + {{0xe9b69443903e9131, 0xb8a494cb7a5637ce, 0xc87cd1a4baba9244, 0x631eaf426bae7568}}}, +{{{0xb3e90410da66fe9f, 0x85dd4b526c16e5a6, 0xbc3d97611ef9bf83, 0x5599648b1ea919b5}}, + {{0x47d975b9a3700de8, 0x7280c5fbe2f80552, 0x53658f2732e45de1, 0x431f2c7f665f80b5}}, + {{0xd6026344858f7b19, 0x14ab352fa1ea514a, 0x8900441a2090a9d7, 0x7b04715f91253b26}}}, +{{{0x83edbd28acf6ae43, 0x86357c8b7d5c7ab4, 0xc0404769b7eb2c44, 0x59b37bf5c2f6583f}}, + {{0xb376c280c4e6bac6, 0x970ed3dd6d1d9b0b, 0xb09a9558450bf944, 0x48d0acfa57cde223}}, + {{0xb60f26e47dabe671, 0xf1d1a197622f3a37, 0x4208ce7ee9960394, 0x16234191336d3bdb}}}, +{{{0xf19aeac733a63aef, 0x2c7fba5d4442454e, 0x5da87aa04795e441, 0x413051e1a4e0b0f5}}, + {{0x852dd1fd3d578bbe, 0x2b65ce72c3286108, 0x658c07f4eace2273, 0x0933f804ec38ab40}}, + {{0xa7ab69798d496476, 0x8121aadefcb5abc8, 0xa5dc12ef7b539472, 0x07fd47065e45351a}}}, +{{{0xc8583c3d258d2bcd, 0x17029a4daf60b73f, 0xfa0fc9d6416a3781, 0x1c1e5fba38b3fb23}}, + {{0x304211559ae8e7c3, 0xf281b229944882a5, 0x8a13ac2e378250e4, 0x014afa0954ba48f4}}, + {{0xcb3197001bb3666c, 0x330060524bffecb9, 0x293711991a88233c, 0x291884363d4ed364}}}, +{{{0x033c6805dc4babfa, 0x2c15bf5e5596ecc1, 0x1bc70624b59b1d3b, 0x3ede9850a19f0ec5}}, + {{0xfb9d37c3bc1ab6eb, 0x02be14534d57a240, 0xf4d73415f8a5e1f6, 0x5964f4300ccc8188}}, + {{0xe44a23152d096800, 0x5c08c55970866996, 0xdf2db60a46affb6e, 0x579155c1f856fd89}}}, +{{{0x96324edd12e0c9ef, 0x468b878df2420297, 0x199a3776a4f573be, 0x1e7fbcf18e91e92a}}, + {{0xb5f16b630817e7a6, 0x808c69233c351026, 0x324a983b54cef201, 0x53c092084a485345}}, + {{0xd2d41481f1cbafbf, 0x231d2db6716174e5, 0x0b7d7656e2a55c98, 0x3e955cd82aa495f6}}}, +{{{0xe48f535e3ed15433, 0xd075692a0d7270a3, 0x40fbd21daade6387, 0x14264887cf4495f5}}, + {{0xab39f3ef61bb3a3f, 0x8eb400652eb9193e, 0xb5de6ecc38c11f74, 0x654d7e9626f3c49f}}, + {{0xe564cfdd5c7d2ceb, 0x82eeafded737ccb9, 0x6107db62d1f9b0ab, 0x0b6baac3b4358dbb}}}, +{{{0x7ae62bcb8622fe98, 0x47762256ceb891af, 0x1a5a92bcf2e406b4, 0x7d29401784e41501}}, + {{0x204abad63700a93b, 0xbe0023d3da779373, 0xd85f0346633ab709, 0x00496dc490820412}}, + {{0x1c74b88dc27e6360, 0x074854268d14850c, 0xa145fb7b3e0dcb30, 0x10843f1b43803b23}}}, +{{{0xc5f90455376276dd, 0xce59158dd7645cd9, 0x92f65d511d366b39, 0x11574b6e526996c4}}, + {{0xd56f672de324689b, 0xd1da8aedb394a981, 0xdd7b58fe9168cfed, 0x7ce246cd4d56c1e8}}, + {{0xb8f4308e7f80be53, 0x5f3cb8cb34a9d397, 0x18a961bd33cc2b2c, 0x710045fb3a9af671}}}, +{{{0x73f93d36101b95eb, 0xfaef33794f6f4486, 0x5651735f8f15e562, 0x7fa3f19058b40da1}}, + {{0xa03fc862059d699e, 0x2370cfa19a619e69, 0xc4fe3b122f823deb, 0x1d1b056fa7f0844e}}, + {{0x1bc64631e56bf61f, 0xd379ab106e5382a3, 0x4d58c57e0540168d, 0x566256628442d8e4}}}, +{{{0xb9e499def6267ff6, 0x7772ca7b742c0843, 0x23a0153fe9a4f2b1, 0x2cdfdfecd5d05006}}, + {{0xdd499cd61ff38640, 0x29cd9bc3063625a0, 0x51e2d8023dd73dc3, 0x4a25707a203b9231}}, + {{0x2ab7668a53f6ed6a, 0x304242581dd170a1, 0x4000144c3ae20161, 0x5721896d248e49fc}}}, +{{{0x0b6e5517fd181bae, 0x9022629f2bb963b4, 0x5509bce932064625, 0x578edd74f63c13da}}, + {{0x285d5091a1d0da4e, 0x4baa6fa7b5fe3e08, 0x63e5177ce19393b3, 0x03c935afc4b030fd}}, + {{0x997276c6492b0c3d, 0x47ccc2c4dfe205fc, 0xdcd29b84dd623a3c, 0x3ec2ab590288c7a2}}}, +{{{0xa1a0d27be4d87bb9, 0xa98b4deb61391aed, 0x99a0ddd073cb9b83, 0x2dd5c25a200fcace}}, + {{0xa7213a09ae32d1cb, 0x0f2b87df40f5c2d5, 0x0baea4c6e81eab29, 0x0e1bf66c6adbac5e}}, + {{0xe2abd5e9792c887e, 0x1a020018cb926d5d, 0xbfba69cdbaae5f1e, 0x730548b35ae88f5f}}}, +{{{0xc43551a3cba8b8ee, 0x65a26f1db2115f16, 0x760f4f52ab8c3850, 0x3043443b411db8ca}}, + {{0x805b094ba1d6e334, 0xbf3ef17709353f19, 0x423f06cb0622702b, 0x585a2277d87845dd}}, + {{0xa18a5f8233d48962, 0x6698c4b5ec78257f, 0xa78e6fa5373e41ff, 0x7656278950ef981f}}}, +{{{0x38c3cf59d51fc8c0, 0x9bedd2fd0506b6f2, 0x26bf109fab570e8f, 0x3f4160a8c1b846a6}}, + {{0xe17073a3ea86cf9d, 0x3a8cfbb707155fdc, 0x4853e7fc31838a8e, 0x28bbf484b613f616}}, + {{0xf2612f5c6f136c7c, 0xafead107f6dd11be, 0x527e9ad213de6f33, 0x1e79cb358188f75d}}}, +{{{0x013436c3eef7e3f1, 0x828b6a7ffe9e10f8, 0x7ff908e5bcf9defc, 0x65d7951b3a3b3831}}, + {{0x77e953d8f5e08181, 0x84a50c44299dded9, 0xdc6c2d0c864525e5, 0x478ab52d39d1f2f4}}, + {{0x66a6a4d39252d159, 0xe5dde1bc871ac807, 0xb82c6b40a6c1c96f, 0x16d87a411a212214}}}, +{{{0xb3bd7e5a42066215, 0x879be3cd0c5a24c1, 0x57c05db1d6f994b7, 0x28f87c8165f38ca6}}, + {{0xfba4d5e2d54e0583, 0xe21fafd72ebd99fa, 0x497ac2736ee9778f, 0x1f990b577a5a6dde}}, + {{0xa3344ead1be8f7d6, 0x7d1e50ebacea798f, 0x77c6569e520de052, 0x45882fe1534d6d3e}}}, +{{{0x6669345d757983d6, 0x62b6ed1117aa11a6, 0x7ddd1857985e128f, 0x688fe5b8f626f6dd}}, + {{0xd8ac9929943c6fe4, 0xb5f9f161a38392a2, 0x2699db13bec89af3, 0x7dcf843ce405f074}}, + {{0x6c90d6484a4732c0, 0xd52143fdca563299, 0xb3be28c3915dc6e1, 0x6739687e7327191b}}}, +{{{0x9f65c5ea200814cf, 0x840536e169a31740, 0x8b0ed13925c8b4ad, 0x0080dbafe936361d}}, + {{0x8ce5aad0c9cb971f, 0x1156aaa99fd54a29, 0x41f7247015af9b78, 0x1fe8cca8420f49aa}}, + {{0x72a1848f3c0cc82a, 0x38c560c2877c9e54, 0x5004e228ce554140, 0x042418a103429d71}}}, +{{{0x899dea51abf3ff5f, 0x9b93a8672fc2d8ba, 0x2c38cb97be6ebd5c, 0x114d578497263b5d}}, + {{0x58e84c6f20816247, 0x8db2b2b6e36fd793, 0x977182561d484d85, 0x0822024f8632abd7}}, + {{0xb301bb7c6b1beca3, 0x55393f6dc6eb1375, 0x910d281097b6e4eb, 0x1ad4548d9d479ea3}}}, +{{{0xcd5a7da0389a48fd, 0xb38fa4aa9a78371e, 0xc6d9761b2cdb8e6c, 0x35cf51dbc97e1443}}, + {{0xa06fe66d0fe9fed3, 0xa8733a401c587909, 0x30d14d800df98953, 0x41ce5876c7b30258}}, + {{0x59ac3bc5d670c022, 0xeae67c109b119406, 0x9798bdf0b3782fda, 0x651e3201fd074092}}}, +{{{0xd63d8483ef30c5cf, 0x4cd4b4962361cc0c, 0xee90e500a48426ac, 0x0af51d7d18c14eeb}}, + {{0xa57ba4a01efcae9e, 0x769f4beedc308a94, 0xd1f10eeb3603cb2e, 0x4099ce5e7e441278}}, + {{0x1ac98e4f8a5121e9, 0x7dae9544dbfa2fe0, 0x8320aa0dd6430df9, 0x667282652c4a2fb5}}}, +{{{0x874621f4d86bc9ab, 0xb54c7bbe56fe6fea, 0x077a24257fadc22c, 0x1ab53be419b90d39}}, + {{0xada8b6e02946db23, 0x1c0ce51a7b253ab7, 0x8448c85a66dd485b, 0x7f1fc025d0675adf}}, + {{0xd8ee1b18319ea6aa, 0x004d88083a21f0da, 0x3bd6aa1d883a4f4b, 0x4db9a3a6dfd9fd14}}}, +{{{0x8ce7b23bb99c0755, 0x35c5d6edc4f50f7a, 0x7e1e2ed2ed9b50c3, 0x36305f16e8934da1}}, + {{0xd95b00bbcbb77c68, 0xddbc846a91f17849, 0x7cf700aebe28d9b3, 0x5ce1285c85d31f3e}}, + {{0x31b6972d98b0bde8, 0x7d920706aca6de5b, 0xe67310f8908a659f, 0x50fac2a6efdf0235}}}, +{{{0xf3d3a9f35b880f5a, 0xedec050cdb03e7c2, 0xa896981ff9f0b1a2, 0x49a4ae2bac5e34a4}}, + {{0x295b1c86f6f449bc, 0x51b2e84a1f0ab4dd, 0xc001cb30aa8e551d, 0x6a28d35944f43662}}, + {{0x28bb12ee04a740e0, 0x14313bbd9bce8174, 0x72f5b5e4e8c10c40, 0x7cbfb19936adcd5b}}}, +{{{0xa311ddc26b89792d, 0x1b30b4c6da512664, 0x0ca77b4ccf150859, 0x1de443df1b009408}}, + {{0x8e793a7acc36e6e0, 0xf9fab7a37d586eed, 0x3a4f9692bae1f4e4, 0x1c14b03eff5f447e}}, + {{0x19647bd114a85291, 0x57b76cb21034d3af, 0x6329db440f9d6dfa, 0x5ef43e586a571493}}}, +{{{0xef782014385675a6, 0xa2649f30aafda9e8, 0x4cd1eb505cdfa8cb, 0x46115aba1d4dc0b3}}, + {{0xa66dcc9dc80c1ac0, 0x97a05cf41b38a436, 0xa7ebf3be95dbd7c6, 0x7da0b8f68d7e7dab}}, + {{0xd40f1953c3b5da76, 0x1dac6f7321119e9b, 0x03cc6021feb25960, 0x5a5f887e83674b4b}}}, +{{{0x8f6301cf70a13d11, 0xcfceb815350dd0c4, 0xf70297d4a4bca47e, 0x3669b656e44d1434}}, + {{0x9e9628d3a0a643b9, 0xb5c3cb00e6c32064, 0x9b5302897c2dec32, 0x43e37ae2d5d1c70c}}, + {{0x387e3f06eda6e133, 0x67301d5199a13ac0, 0xbd5ad8f836263811, 0x6a21e6cd4fd5e9be}}}, +{{{0xf1c6170a3046e65f, 0x58712a2a00d23524, 0x69dbbd3c8c82b755, 0x586bf9f1a195ff57}}, + {{0xef4129126699b2e3, 0x71d30847708d1301, 0x325432d01182b0bd, 0x45371b07001e8b36}}, + {{0xa6db088d5ef8790b, 0x5278f0dc610937e5, 0xac0349d261a16eb8, 0x0eafb03790e52179}}}, +{{{0x960555c13748042f, 0x219a41e6820baa11, 0x1c81f73873486d0c, 0x309acc675a02c661}}, + {{0x5140805e0f75ae1d, 0xec02fbe32662cc30, 0x2cebdf1eea92396d, 0x44ae3344c5435bb3}}, + {{0x9cf289b9bba543ee, 0xf3760e9d5ac97142, 0x1d82e5c64f9360aa, 0x62d5221b7f94678f}}}, +{{{0x524c299c18d0936d, 0xc86bb56c8a0c1a0c, 0xa375052edb4a8631, 0x5c0efde4bc754562}}, + {{0x7585d4263af77a3c, 0xdfae7b11fee9144d, 0xa506708059f7193d, 0x14f29a5383922037}}, + {{0xdf717edc25b2d7f5, 0x21f970db99b53040, 0xda9234b7c3ed4c62, 0x5e72365c7bee093e}}}, +{{{0x575bfc074571217f, 0x3779675d0694d95b, 0x9a0a37bbf4191e33, 0x77f1104c47b4eabc}}, + {{0x7d9339062f08b33e, 0x5b9659e5df9f32be, 0xacff3dad1f9ebdfd, 0x70b20555cb7349b7}}, + {{0xbe5113c555112c4c, 0x6688423a9a881fcd, 0x446677855e503b47, 0x0e34398f4a06404a}}}, +{{{0xb67d22d93ecebde8, 0x09b3e84127822f07, 0x743fa61fb05b6d8d, 0x5e5405368a362372}}, + {{0x18930b093e4b1928, 0x7de3e10e73f3f640, 0xf43217da73395d6f, 0x6f8aded6ca379c3e}}, + {{0xe340123dfdb7b29a, 0x487b97e1a21ab291, 0xf9967d02fde6949e, 0x780de72ec8d3de97}}}, +{{{0x0ae28545089ae7bc, 0x388ddecf1c7f4d06, 0x38ac15510a4811b8, 0x0eb28bf671928ce4}}, + {{0x671feaf300f42772, 0x8f72eb2a2a8c41aa, 0x29a17fd797373292, 0x1defc6ad32b587a6}}, + {{0xaf5bbe1aef5195a7, 0x148c1277917b15ed, 0x2991f7fb7ae5da2e, 0x467d201bf8dd2867}}}, +{{{0x7906ee72f7bd2e6b, 0x05d270d6109abf4e, 0x8d5cfe45b941a8a4, 0x44c218671c974287}}, + {{0x745f9d56296bc318, 0x993580d4d8152e65, 0xb0e5b13f5839e9ce, 0x51fc2b28d43921c0}}, + {{0x1b8fd11795e2a98c, 0x1c4e5ee12b6b6291, 0x5b30e7107424b572, 0x6e6b9de84c4f4ac6}}}, +{{{0xdff25fce4b1de151, 0xd841c0c7e11c4025, 0x2554b3c854749c87, 0x2d292459908e0df9}}, + {{0x6b7c5f10f80cb088, 0x736b54dc56e42151, 0xc2b620a5c6ef99c4, 0x5f4c802cc3a06f42}}, + {{0x9b65c8f17d0752da, 0x881ce338c77ee800, 0xc3b514f05b62f9e3, 0x66ed5dd5bec10d48}}}, +{{{0x7d38a1c20bb2089d, 0x808334e196ccd412, 0xc4a70b8c6c97d313, 0x2eacf8bc03007f20}}, + {{0xf0adf3c9cbca047d, 0x81c3b2cbf4552f6b, 0xcfda112d44735f93, 0x1f23a0c77e20048c}}, + {{0xf235467be5bc1570, 0x03d2d9020dbab38c, 0x27529aa2fcf9e09e, 0x0840bef29d34bc50}}}, +{{{0x796dfb35dc10b287, 0x27176bcd5c7ff29d, 0x7f3d43e8c7b24905, 0x0304f5a191c54276}}, + {{0xcd54e06b7f37e4eb, 0x8cc15f87f5e96cca, 0xb8248bb0d3597dce, 0x246affa06074400c}}, + {{0x37d88e68fbe45321, 0x86097548c0d75032, 0x4e9b13ef894a0d35, 0x25a83cac5753d325}}}, +{{{0x10222f48eed8165e, 0x623fc1234b8bcf3a, 0x1e145c09c221e8f0, 0x7ccfa59fca782630}}, + {{0x9f0f66293952b6e2, 0x33db5e0e0934267b, 0xff45252bd609fedc, 0x06be10f5c506e0c9}}, + {{0x1a9615a9b62a345f, 0x22050c564a52fecc, 0xa7a2788528bc0dfe, 0x5e82770a1a1ee71d}}}, +{{{0x35425183ad896a5c, 0xe8673afbe78d52f6, 0x2c66f25f92a35f64, 0x09d04f3b3b86b102}}, + {{0xe802e80a42339c74, 0x34175166a7fffae5, 0x34865d1f1c408cae, 0x2cca982c605bc5ee}}, + {{0xfd2d5d35197dbe6e, 0x207c2eea8be4ffa3, 0x2613d8db325ae918, 0x7a325d1727741d3e}}}, +{{{0xd036b9bbd16dfde2, 0xa2055757c497a829, 0x8e6cc966a7f12667, 0x4d3b1a791239c180}}, + {{0xecd27d017e2a076a, 0xd788689f1636495e, 0x52a61af0919233e5, 0x2a479df17bb1ae64}}, + {{0x9e5eee8e33db2710, 0x189854ded6c43ca5, 0xa41c22c592718138, 0x27ad5538a43a5e9b}}}, +{{{0x2746dd4b15350d61, 0xd03fcbc8ee9521b7, 0xe86e365a138672ca, 0x510e987f7e7d89e2}}, + {{0xcb5a7d638e47077c, 0x8db7536120a1c059, 0x549e1e4d8bedfdcc, 0x080153b7503b179d}}, + {{0xdda69d930a3ed3e3, 0x3d386ef1cd60a722, 0xc817ad58bdaa4ee6, 0x23be8d554fe7372a}}}, +{{{0x95fe919a74ef4fad, 0x3a827becf6a308a2, 0x964e01d309a47b01, 0x71c43c4f5ba3c797}}, + {{0xbc1ef4bd567ae7a9, 0x3f624cb2d64498bd, 0xe41064d22c1f4ec8, 0x2ef9c5a5ba384001}}, + {{0xb6fd6df6fa9e74cd, 0xf18278bce4af267a, 0x8255b3d0f1ef990e, 0x5a758ca390c5f293}}}, +{{{0xa2b72710d9462495, 0x3aa8c6d2d57d5003, 0xe3d400bfa0b487ca, 0x2dbae244b3eb72ec}}, + {{0x8ce0918b1d61dc94, 0x8ded36469a813066, 0xd4e6a829afe8aad3, 0x0a738027f639d43f}}, + {{0x980f4a2f57ffe1cc, 0x00670d0de1839843, 0x105c3f4a49fb15fd, 0x2698ca635126a69c}}}, +{{{0xe765318832b0ba78, 0x381831f7925cff8b, 0x08a81b91a0291fcc, 0x1fb43dcc49caeb07}}, + {{0x2e3d702f5e3dd90e, 0x9e3f0918e4d25386, 0x5e773ef6024da96a, 0x3c004b0c4afa3332}}, + {{0x9aa946ac06f4b82b, 0x1ca284a5a806c4f3, 0x3ed3265fc6cd4787, 0x6b43fd01cd1fd217}}}, +{{{0xc7a75d4b4697c544, 0x15fdf848df0fffbf, 0x2868b9ebaa46785a, 0x5a68d7105b52f714}}, + {{0xb5c742583e760ef3, 0x75dc52b9ee0ab990, 0xbf1427c2072b923f, 0x73420b2d6ff0d9f0}}, + {{0xaf2cf6cb9e851e06, 0x8f593913c62238c4, 0xda8ab89699fbf373, 0x3db5632fea34bc9e}}}, +{{{0xf46eee2bf75dd9d8, 0x0d17b1f6396759a5, 0x1bf2d131499e7273, 0x04321adf49d75f13}}, + {{0x2e4990b1829825d5, 0xedeaeb873e9a8991, 0xeef03d394c704af8, 0x59197ea495df2b0e}}, + {{0x04e16019e4e55aae, 0xe77b437a7e2f92e9, 0xc7ce2dc16f159aa4, 0x45eafdc1f4d70cc0}}}, +{{{0x698401858045d72b, 0x4c22faa2cf2f0651, 0x941a36656b222dc6, 0x5a5eebc80362dade}}, + {{0xb60e4624cfccb1ed, 0x59dbc292bd5c0395, 0x31a09d1ddc0481c9, 0x3f73ceea5d56d940}}, + {{0xb7a7bfd10a4e8dc6, 0xbe57007e44c9b339, 0x60c1207f1557aefa, 0x26058891266218db}}}, +{{{0x59f704a68360ff04, 0xc3d93fde7661e6f4, 0x831b2a7312873551, 0x54ad0c2e4e615d57}}, + {{0x4c818e3cc676e542, 0x5e422c9303ceccad, 0xec07cccab4129f08, 0x0dedfa10b24443b8}}, + {{0xee3b67d5b82b522a, 0x36f163469fa5c1eb, 0xa5b4d2f26ec19fd3, 0x62ecb2baa77a9408}}}, +{{{0xe5ed795261152b3d, 0x4962357d0eddd7d1, 0x7482c8d0b96b4c71, 0x2e59f919a966d8be}}, + {{0x92072836afb62874, 0x5fcd5e8579e104a5, 0x5aad01adc630a14a, 0x61913d5075663f98}}, + {{0x0dc62d361a3231da, 0xfa47583294200270, 0x02d801513f9594ce, 0x3ddbc2a131c05d5c}}}, +{{{0x3f50a50a4ffb81ef, 0xb1e035093bf420bf, 0x9baa8e1cc6aa2cd0, 0x32239861fa237a40}}, + {{0xfb735ac2004a35d1, 0x31de0f433a6607c3, 0x7b8591bfc528d599, 0x55be9a25f5bb050c}}, + {{0x0d005acd33db3dbf, 0x0111b37c80ac35e2, 0x4892d66c6f88ebeb, 0x770eadb16508fbcd}}}, +{{{0x8451f9e05e4e89dd, 0xc06302ffbc793937, 0x5d22749556a6495c, 0x09a6755ca05603fb}}, + {{0xf1d3b681a05071b9, 0x2207659a3592ff3a, 0x5f0169297881e40e, 0x16bedd0e86ba374e}}, + {{0x5ecccc4f2c2737b5, 0x43b79e0c2dccb703, 0x33e008bc4ec43df3, 0x06c1b840f07566c0}}}, +{{{0x7688a5c6a388f877, 0x02a96c14deb2b6ac, 0x64c9f3431b8c2af8, 0x3628435554a1eed6}}, + {{0x69ee9e7f9b02805c, 0xcbff828a547d1640, 0x3d93a869b2430968, 0x46b7b8cd3fe26972}}, + {{0xe9812086fe7eebe0, 0x4cba6be72f515437, 0x1d04168b516efae9, 0x5ea1391043982cb9}}}, +{{{0x49125c9cf4702ee1, 0x4520b71f8b25b32d, 0x33193026501fef7e, 0x656d8997c8d2eb2b}}, + {{0x6f2b3be4d5d3b002, 0xafec33d96a09c880, 0x035f73a4a8bcc4cc, 0x22c5b9284662198b}}, + {{0xcb58c8fe433d8939, 0x89a0cb2e6a8d7e50, 0x79ca955309fbbe5a, 0x0c626616cd7fc106}}}, +{{{0x1ffeb80a4879b61f, 0x6396726e4ada21ed, 0x33c7b093368025ba, 0x471aa0c6f3c31788}}, + {{0x8fdfc379fbf454b1, 0x45a5a970f1a4b771, 0xac921ef7bad35915, 0x42d088dca81c2192}}, + {{0x8fda0f37a0165199, 0x0adadb77c8a0e343, 0x20fbfdfcc875e820, 0x1cf2bea80c2206e7}}}, +{{{0xc2ddf1deb36202ac, 0x92a5fe09d2e27aa5, 0x7d1648f6fc09f1d3, 0x74c2cc0513bc4959}}, + {{0x982d6e1a02c0412f, 0x90fa4c83db58e8fe, 0x01c2f5bcdcb18bc0, 0x686e0c90216abc66}}, + {{0x1fadbadba54395a7, 0xb41a02a0ae0da66a, 0xbf19f598bba37c07, 0x6a12b8acde48430d}}}, +{{{0xf8daea1f39d495d9, 0x592c190e525f1dfc, 0xdb8cbd04c9991d1b, 0x11f7fda3d88f0cb7}}, + {{0x793bdd801aaeeb5f, 0x00a2a0aac1518871, 0xe8a373a31f2136b4, 0x48aab888fc91ef19}}, + {{0x041f7e925830f40e, 0x002d6ca979661c06, 0x86dc9ff92b046a2e, 0x760360928b0493d1}}}, +{{{0x21bb41c6120cf9c6, 0xeab2aa12decda59b, 0xc1a72d020aa48b34, 0x215d4d27e87d3b68}}, + {{0xb43108e5695a0b05, 0x6cb00ee8ad37a38b, 0x5edad6eea3537381, 0x3f2602d4b6dc3224}}, + {{0xc8b247b65bcaf19c, 0x49779dc3b1b2c652, 0x89a180bbd5ece2e2, 0x13f098a3cec8e039}}}, +{{{0x9adc0ff9ce5ec54b, 0x039c2a6b8c2f130d, 0x028007c7f0f89515, 0x78968314ac04b36b}}, + {{0xf3aa57a22796bb14, 0x883abab79b07da21, 0xe54be21831a0391c, 0x5ee7fb38d83205f9}}, + {{0x538dfdcb41446a8e, 0xa5acfda9434937f9, 0x46af908d263c8c78, 0x61d0633c9bca0d09}}}, +{{{0x63744935ffdb2566, 0xc5bd6b89780b68bb, 0x6f1b3280553eec03, 0x6e965fd847aed7f5}}, + {{0xada328bcf8fc73df, 0xee84695da6f037fc, 0x637fb4db38c2a909, 0x5b23ac2df8067bdc}}, + {{0x9ad2b953ee80527b, 0xe88f19aafade6d8d, 0x0e711704150e82cf, 0x79b9bbb9dd95dedc}}}, +{{{0xebb355406a3126c2, 0xd26383a868c8c393, 0x6c0c6429e5b97a82, 0x5065f158c9fd2147}}, + {{0xd1997dae8e9f7374, 0xa032a2f8cfbb0816, 0xcd6cba126d445f0a, 0x1ba811460accb834}}, + {{0x708169fb0c429954, 0xe14600acd76ecf67, 0x2eaab98a70e645ba, 0x3981f39e58a4faf2}}}, +{{{0x18fb8a7559230a93, 0x1d168f6960e6f45d, 0x3a85a94514a93cb5, 0x38dc083705acd0fd}}, + {{0xc845dfa56de66fde, 0xe152a5002c40483a, 0xe9d2e163c7b4f632, 0x30f4452edcbc1b65}}, + {{0x856d2782c5759740, 0xfa134569f99cbecc, 0x8844fc73c0ea4e71, 0x632d9a1a593f2469}}}, +{{{0xf6bb6b15b807cba6, 0x1823c7dfbc54f0d7, 0xbb1d97036e29670b, 0x0b24f48847ed4a57}}, + {{0xbf09fd11ed0c84a7, 0x63f071810d9f693a, 0x21908c2d57cf8779, 0x3a5a7df28af64ba2}}, + {{0xdcdad4be511beac7, 0xa4538075ed26ccf2, 0xe19cff9f005f9a65, 0x34fcf74475481f63}}}, +{{{0xc197e04c789767ca, 0xb8714dcb38d9467d, 0x55de888283f95fa8, 0x3d3bdc164dfa63f7}}, + {{0xa5bb1dab78cfaa98, 0x5ceda267190b72f2, 0x9309c9110a92608e, 0x0119a3042fb374b0}}, + {{0x67a2d89ce8c2177d, 0x669da5f66895d0c1, 0xf56598e5b282a2b0, 0x56c088f1ede20a73}}}, +{{{0x336d3d1110a86e17, 0xd7f388320b75b2fa, 0xf915337625072988, 0x09674c6b99108b87}}, + {{0x581b5fac24f38f02, 0xa90be9febae30cbd, 0x9a2169028acf92f0, 0x038b7ea48359038f}}, + {{0x9f4ef82199316ff8, 0x2f49d282eaa78d4f, 0x0971a5ab5aef3174, 0x6e5e31025969eb65}}}, +{{{0xb16c62f587e593fb, 0x4999eddeca5d3e71, 0xb491c1e014cc3e6d, 0x08f5114789a8dba8}}, + {{0x3304fb0e63066222, 0xfb35068987acba3f, 0xbd1924778c1061a3, 0x3058ad43d1838620}}, + {{0x323c0ffde57663d0, 0x05c3df38a22ea610, 0xbdc78abdac994f9a, 0x26549fa4efe3dc99}}}, +{{{0x738b38d787ce8f89, 0xb62658e24179a88d, 0x30738c9cf151316d, 0x49128c7f727275c9}}, + {{0x04dbbc17f75396b9, 0x69e6a2d7d2f86746, 0xc6409d99f53eabc6, 0x606175f6332e25d2}}, + {{0x4021370ef540e7dd, 0x0910d6f5a1f1d0a5, 0x4634aacd5b06b807, 0x6a39e6356944f235}}}, +{{{0x96cd5640df90f3e7, 0x6c3a760edbfa25ea, 0x24f3ef0959e33cc4, 0x42889e7e530d2e58}}, + {{0x1da1965774049e9d, 0xfbcd6ea198fe352b, 0xb1cbcd50cc5236a6, 0x1f5ec83d3f9846e2}}, + {{0x8efb23c3328ccb75, 0xaf42a207dd876ee9, 0x20fbdadc5dfae796, 0x241e246b06bf9f51}}}, +{{{0x29e68e57ad6e98f6, 0x4c9260c80b462065, 0x3f00862ea51ebb4b, 0x5bc2c77fb38d9097}}, + {{0x7eaafc9a6280bbb8, 0x22a70f12f403d809, 0x31ce40bb1bfc8d20, 0x2bc65635e8bd53ee}}, + {{0xe8d5dc9fa96bad93, 0xe58fb17dde1947dc, 0x681532ea65185fa3, 0x1fdd6c3b034a7830}}}, +{{{0x0a64e28c55dc18fe, 0xe3df9e993399ebdd, 0x79ac432370e2e652, 0x35ff7fc33ae4cc0e}}, + {{0x9c13a6a52dd8f7a9, 0x2dbb1f8c3efdcabf, 0x961e32405e08f7b5, 0x48c8a121bbe6c9e5}}, + {{0xfc415a7c59646445, 0xd224b2d7c128b615, 0x6035c9c905fbb912, 0x42d7a91274429fab}}}, +{{{0x4e6213e3eaf72ed3, 0x6794981a43acd4e7, 0xff547cde6eb508cb, 0x6fed19dd10fcb532}}, + {{0xa9a48947933da5bc, 0x4a58920ec2e979ec, 0x96d8800013e5ac4c, 0x453692d74b48b147}}, + {{0xdd775d99a8559c6f, 0xf42a2140df003e24, 0x5223e229da928a66, 0x063f46ba6d38f22c}}}, +{{{0xd2d242895f536694, 0xca33a2c542939b2c, 0x986fada6c7ddb95c, 0x5a152c042f712d5d}}, + {{0x39843cb737346921, 0xa747fb0738c89447, 0xcb8d8031a245307e, 0x67810f8e6d82f068}}, + {{0x3eeb8fbcd2287db4, 0x72c7d3a301a03e93, 0x5473e88cbd98265a, 0x7324aa515921b403}}}, +{{{0x857942f46c3cbe8e, 0xa1d364b14730c046, 0x1c8ed914d23c41bf, 0x0838e161eef6d5d2}}, + {{0xad23f6dae82354cb, 0x6962502ab6571a6d, 0x9b651636e38e37d1, 0x5cac5005d1a3312f}}, + {{0x8cc154cce9e39904, 0x5b3a040b84de6846, 0xc4d8a61cb1be5d6e, 0x40fb897bd8861f02}}}, +{{{0x84c5aa9062de37a1, 0x421da5000d1d96e1, 0x788286306a9242d9, 0x3c5e464a690d10da}}, + {{0xe57ed8475ab10761, 0x71435e206fd13746, 0x342f824ecd025632, 0x4b16281ea8791e7b}}, + {{0xd1c101d50b813381, 0xdee60f1176ee6828, 0x0cb68893383f6409, 0x6183c565f6ff484a}}}, +{{{0x741d5a461e6bf9d6, 0x2305b3fc7777a581, 0xd45574a26474d3d9, 0x1926e1dc6401e0ff}}, + {{0xdb468549af3f666e, 0xd77fcf04f14a0ea5, 0x3df23ff7a4ba0c47, 0x3a10dfe132ce3c85}}, + {{0xe07f4e8aea17cea0, 0x2fd515463a1fc1fd, 0x175322fd31f2c0f1, 0x1fa1d01d861e5d15}}}, +{{{0xcc8055947d599832, 0x1e4656da37f15520, 0x99f6f7744e059320, 0x773563bc6a75cf33}}, + {{0x38dcac00d1df94ab, 0x2e712bddd1080de9, 0x7f13e93efdd5e262, 0x73fced18ee9a01e5}}, + {{0x06b1e90863139cb3, 0xa493da67c5a03ecd, 0x8d77cec8ad638932, 0x1f426b701b864f44}}}, +{{{0xefc9264c41911c01, 0xf1a3b7b817a22c25, 0x5875da6bf30f1447, 0x4e1af5271d31b090}}, + {{0xf17e35c891a12552, 0xb76b8153575e9c76, 0xfa83406f0d9b723e, 0x0b76bb1b3fa7e438}}, + {{0x08b8c1f97f92939b, 0xbe6771cbd444ab6e, 0x22e5646399bb8017, 0x7b6dd61eb772a955}}}, +{{{0xb7adc1e850f33d92, 0x7998fa4f608cd5cf, 0xad962dbd8dfc5bdb, 0x703e9bceaf1d2f4f}}, + {{0x5730abf9ab01d2c7, 0x16fb76dc40143b18, 0x866cbe65a0cbb281, 0x53fa9b659bff6afe}}, + {{0x6c14c8e994885455, 0x843a5d6665aed4e5, 0x181bb73ebcd65af1, 0x398d93e5c4c61f50}}}, +{{{0x1c4bd16733e248f3, 0xbd9e128715bf0a5f, 0xd43f8cf0a10b0376, 0x53b09b5ddf191b13}}, + {{0xc3877c60d2e7e3f2, 0x3b34aaa030828bb1, 0x283e26e7739ef138, 0x699c9c9002c30577}}, + {{0xf306a7235946f1cc, 0x921718b5cce5d97d, 0x28cdd24781b4e975, 0x51caf30c6fcdd907}}}, +{{{0xa60ba7427674e00a, 0x630e8570a17a7bf3, 0x3758563dcf3324cc, 0x5504aa292383fdaa}}, + {{0x737af99a18ac54c7, 0x903378dcc51cb30f, 0x2b89bc334ce10cc7, 0x12ae29c189f8e99a}}, + {{0xa99ec0cb1f0d01cf, 0x0dd1efcc3a34f7ae, 0x55ca7521d09c4e22, 0x5fd14fe958eba5ea}}}, +{{{0xb5dc2ddf2845ab2c, 0x069491b10a7fe993, 0x4daaf3d64002e346, 0x093ff26e586474d1}}, + {{0x3c42fe5ebf93cb8e, 0xbedfa85136d4565f, 0xe0f0859e884220e8, 0x7dd73f960725d128}}, + {{0xb10d24fe68059829, 0x75730672dbaf23e5, 0x1367253ab457ac29, 0x2f59bcbc86b470a4}}}, +{{{0x83847d429917135f, 0xad1b911f567d03d7, 0x7e7748d9be77aad1, 0x5458b42e2e51af4a}}, + {{0x7041d560b691c301, 0x85201b3fadd7e71e, 0x16c2e16311335585, 0x2aa55e3d010828b1}}, + {{0xed5192e60c07444f, 0x42c54e2d74421d10, 0x352b4c82fdb5c864, 0x13e9004a8a768664}}}, +{{{0xcbb5b5556c032bff, 0xdf7191b729297a3a, 0xc1ff7326aded81bb, 0x71ade8bb68be03f5}}, + {{0x1e6284c5806b467c, 0xc5f6997be75d607b, 0x8b67d958b378d262, 0x3d88d66a81cd8b70}}, + {{0x8b767a93204ed789, 0x762fcacb9fa0ae2a, 0x771febcc6dce4887, 0x343062158ff05fb3}}}, +{{{0xe05da1a7e1f5bf49, 0x26457d6dd4736092, 0x77dcb07773cc32f6, 0x0a5d94969cdd5fcd}}, + {{0xfce219072a7b31b4, 0x4d7adc75aa578016, 0x0ec276a687479324, 0x6d6d9d5d1fda4beb}}, + {{0x22b1a58ae9b08183, 0xfd95d071c15c388b, 0xa9812376850a0517, 0x33384cbabb7f335e}}}, +{{{0x3c6fa2680ca2c7b5, 0x1b5082046fb64fda, 0xeb53349c5431d6de, 0x5278b38f6b879c89}}, + {{0x33bc627a26218b8d, 0xea80b21fc7a80c61, 0x9458b12b173e9ee6, 0x076247be0e2f3059}}, + {{0x52e105f61416375a, 0xec97af3685abeba4, 0x26e6b50623a67c36, 0x5cf0e856f3d4fb01}}}, +{{{0xf6c968731ae8cab4, 0x5e20741ecb4f92c5, 0x2da53be58ccdbc3e, 0x2dddfea269970df7}}, + {{0xbeaece313db342a8, 0xcba3635b842db7ee, 0xe88c6620817f13ef, 0x1b9438aa4e76d5c6}}, + {{0x8a50777e166f031a, 0x067b39f10fb7a328, 0x1925c9a6010fbd76, 0x6df9b575cc740905}}}, +{{{0x42c1192927f6bdcf, 0x8f91917a403d61ca, 0xdc1c5a668b9e1f61, 0x1596047804ec0f8d}}, + {{0xecdfc35b48cade41, 0x6a88471fb2328270, 0x740a4a2440a01b6a, 0x471e5796003b5f29}}, + {{0xda96bbb3aced37ac, 0x7a2423b5e9208cea, 0x24cc5c3038aebae2, 0x50c356afdc5dae2f}}}, +{{{0x09dcbf4341c30318, 0xeeba061183181dce, 0xc179c0cedc1e29a1, 0x1dbf7b89073f35b0}}, + {{0xcfed9cdf1b31b964, 0xf486a9858ca51af3, 0x14897265ea8c1f84, 0x784a53dd932acc00}}, + {{0x2d99f9df14fc4920, 0x76ccb60cc4499fe5, 0xa4132cbbe5cf0003, 0x3f93d82354f000ea}}}, +{{{0x8183e7689e04ce85, 0x678fb71e04465341, 0xad92058f6688edac, 0x5da350d3532b099a}}, + {{0xeaac12d179e14978, 0xff923ff3bbebff5e, 0x4af663e40663ce27, 0x0fd381a811a5f5ff}}, + {{0xf256aceca436df54, 0x108b6168ae69d6e8, 0x20d986cb6b5d036c, 0x655957b9fee2af50}}}, +{{{0xaea8b07fa902030f, 0xf88c766af463d143, 0x15b083663c787a60, 0x08eab1148267a4a8}}, + {{0xbdc1409bd002d0ac, 0x66660245b5ccd9a6, 0x82317dc4fade85ec, 0x02fe934b6ad7df0d}}, + {{0xef5cf100cfb7ea74, 0x22897633a1cb42ac, 0xd4ce0c54cef285e2, 0x30408c048a146a55}}}, +{{{0x739d8845832fcedb, 0xfa38d6c9ae6bf863, 0x32bc0dcab74ffef7, 0x73937e8814bce45e}}, + {{0xbb2e00c9193b877f, 0xece3a890e0dc506b, 0xecf3b7c036de649f, 0x5f46040898de9e1a}}, + {{0xb9037116297bf48d, 0xa9d13b22d4f06834, 0xe19715574696bdc6, 0x2cf8a4e891d5e835}}}, +{{{0x6d93fd8707110f67, 0xdd4c09d37c38b549, 0x7cb16a4cc2736a86, 0x2049bd6e58252a09}}, + {{0x2cb5487e17d06ba2, 0x24d2381c3950196b, 0xd7659c8185978a30, 0x7a6f7f2891d6a4f6}}, + {{0x7d09fd8d6a9aef49, 0xf0ee60be5b3db90b, 0x4c21b52c519ebfd4, 0x6011aadfc545941d}}}, +{{{0x5f67926dcf95f83c, 0x7c7e856171289071, 0xd6a1e7f3998f7a5b, 0x6fc5cc1b0b62f9e0}}, + {{0x63ded0c802cbf890, 0xfbd098ca0dff6aaa, 0x624d0afdb9b6ed99, 0x69ce18b779340b1e}}, + {{0xd1ef5528b29879cb, 0xdd1aae3cd47e9092, 0x127e0442189f2352, 0x15596b3ae57101f1}}}, +{{{0x462739d23f9179a2, 0xff83123197d6ddcf, 0x1307deb553f2148a, 0x0d2237687b5f4dda}}, + {{0x09ff31167e5124ca, 0x0be4158bd9c745df, 0x292b7d227ef556e5, 0x3aa4e241afb6d138}}, + {{0x2cc138bf2a3305f5, 0x48583f8fa2e926c3, 0x083ab1a25549d2eb, 0x32fcaa6e4687a36c}}}, +{{{0x7bc56e8dc57d9af5, 0x3e0bd2ed9df0bdf2, 0xaac014de22efe4a3, 0x4627e9cefebd6a5c}}, + {{0x3207a4732787ccdf, 0x17e31908f213e3f8, 0xd5b2ecd7f60d964e, 0x746f6336c2600be9}}, + {{0x3f4af345ab6c971c, 0xe288eb729943731f, 0x33596a8a0344186d, 0x7b4917007ed66293}}}, +{{{0x2d85fb5cab84b064, 0x497810d289f3bc14, 0x476adc447b15ce0c, 0x122ba376f844fd7b}}, + {{0x54341b28dd53a2dd, 0xaa17905bdf42fc3f, 0x0ff592d94dd2f8f4, 0x1d03620fe08cd37d}}, + {{0xc20232cda2b4e554, 0x9ed0fd42115d187f, 0x2eabb4be7dd479d9, 0x02c70bf52b68ec4c}}}, +{{{0xa287ec4b5d0b2fbb, 0x415c5790074882ca, 0xe044a61ec1d0815c, 0x26334f0a409ef5e0}}, + {{0xace532bf458d72e1, 0x5be768e07cb73cb5, 0x56cf7d94ee8bbde7, 0x6b0697e3feb43a03}}, + {{0xb6c8f04adf62a3c0, 0x3ef000ef076da45d, 0x9c9cb95849f0d2a9, 0x1cc37f43441b2fae}}}, +{{{0x508f565a5cc7324f, 0xd061c4c0e506a922, 0xfb18abdb5c45ac19, 0x6c6809c10380314a}}, + {{0xd76656f1c9ceaeb9, 0x1c5b15f818e5656a, 0x26e72832844c2334, 0x3a346f772f196838}}, + {{0xd2d55112e2da6ac8, 0xe9bd0331b1e851ed, 0x960746dd8ec67262, 0x05911b9f6ef7c5d0}}}, +{{{0xe9dcd756b637ff2d, 0xec4c348fc987f0c4, 0xced59285f3fbc7b7, 0x3305354793e1ea87}}, + {{0x01c18980c5fe9f94, 0xcd656769716fd5c8, 0x816045c3d195a086, 0x6e2b7f3266cc7982}}, + {{0xcc802468f7c3568f, 0x9de9ba8219974cb3, 0xabb7229cb5b81360, 0x44e2017a6fbeba62}}}, +{{{0xc4c2a74354dab774, 0x8e5d4c3c4eaf031a, 0xb76c23d242838f17, 0x749a098f68dce4ea}}, + {{0x87f82cf3b6ca6ecd, 0x580f893e18f4a0c2, 0x058930072604e557, 0x6cab6ac256d19c1d}}, + {{0xdcdfe0a02cc1de60, 0x032665ff51c5575b, 0x2c0c32f1073abeeb, 0x6a882014cd7b8606}}}, +{{{0xa52a92fea4747fb5, 0xdc12a4491fa5ab89, 0xd82da94bb847a4ce, 0x4d77edce9512cc4e}}, + {{0xd111d17caf4feb6e, 0x050bba42b33aa4a3, 0x17514c3ceeb46c30, 0x54bedb8b1bc27d75}}, + {{0x77c8e14577e2189c, 0xa3e46f6aff99c445, 0x3144dfc86d335343, 0x3a96559e7c4216a9}}}, +{{{0x12550d37f42ad2ee, 0x8b78e00498a1fbf5, 0x5d53078233894cb2, 0x02c84e4e3e498d0c}}, + {{0x4493896880baaa52, 0x4c98afc4f285940e, 0xef4aa79ba45448b6, 0x5278c510a57aae7f}}, + {{0xa54dd074294c0b94, 0xf55d46b8df18ffb6, 0xf06fecc58dae8366, 0x588657668190d165}}}, +{{{0xd47712311aef7117, 0x50343101229e92c7, 0x7a95e1849d159b97, 0x2449959b8b5d29c9}}, + {{0xbf5834f03de25cc3, 0xb887c8aed6815496, 0x5105221a9481e892, 0x6760ed19f7723f93}}, + {{0x669ba3b7ac35e160, 0x2eccf73fba842056, 0x1aec1f17c0804f07, 0x0d96bc031856f4e7}}}, +{{{0x3318be7775c52d82, 0x4cb764b554d0aab9, 0xabcf3d27cc773d91, 0x3bf4d1848123288a}}, + {{0xb1d534b0cc7505e1, 0x32cd003416c35288, 0xcb36a5800762c29d, 0x5bfe69b9237a0bf8}}, + {{0x183eab7e78a151ab, 0xbbe990c999093763, 0xff717d6e4ac7e335, 0x4c5cddb325f39f88}}}, +{{{0xc0f6b74d6190a6eb, 0x20ea81a42db8f4e4, 0xa8bd6f7d97315760, 0x33b1d60262ac7c21}}, + {{0x57750967e7a9f902, 0x2c37fdfc4f5b467e, 0xb261663a3177ba46, 0x3a375e78dc2d532b}}, + {{0x8141e72f2d4dddea, 0xe6eafe9862c607c8, 0x23c28458573cafd0, 0x46b9476f4ff97346}}}, +{{{0x0c1ffea44f901e5c, 0x2b0b6fb72184b782, 0xe587ff910114db88, 0x37130f364785a142}}, + {{0x1215505c0d58359f, 0x2a2013c7fc28c46b, 0x24a0a1af89ea664e, 0x4400b638a1130e1f}}, + {{0x3a01b76496ed19c3, 0x31e00ab0ed327230, 0x520a885783ca15b1, 0x06aab9875accbec7}}}, +{{{0xc1339983f5df0ebb, 0xc0f3758f512c4cac, 0x2cf1130a0bb398e1, 0x6b3cecf9aa270c62}}, + {{0x5349acf3512eeaef, 0x20c141d31cc1cb49, 0x24180c07a99a688d, 0x555ef9d1c64b2d17}}, + {{0x36a770ba3b73bd08, 0x624aef08a3afbf0c, 0x5737ff98b40946f2, 0x675f4de13381749d}}}, +{{{0x0e2c52036b1782fc, 0x64816c816cad83b4, 0xd0dcbdd96964073e, 0x13d99df70164c520}}, + {{0xa12ff6d93bdab31d, 0x0725d80f9d652dfe, 0x019c4ff39abe9487, 0x60f450b882cd3c43}}, + {{0x014b5ec321e5c0ca, 0x4fcb69c9d719bfa2, 0x4e5f1c18750023a0, 0x1c06de9e55edac80}}}, +{{{0x990f7ad6a33ec4e2, 0x6608f938be2ee08e, 0x9ca143c563284515, 0x4cf38a1fec2db60d}}, + {{0xffd52b40ff6d69aa, 0x34530b18dc4049bb, 0x5e4a5c2fa34d9897, 0x78096f8e7d32ba2d}}, + {{0xa0aaaa650dfa5ce7, 0xf9c49e2a48b5478c, 0x4f09cc7d7003725b, 0x373cad3a26091abe}}}, +{{{0xb294634d82c9f57c, 0x1fcbfde124934536, 0x9e9c4db3418cdb5a, 0x0040f3d9454419fc}}, + {{0xf1bea8fb89ddbbad, 0x3bcb2cbc61aeaecb, 0x8f58a7bb1f9b8d9d, 0x21547eda5112a686}}, + {{0xdefde939fd5986d3, 0xf4272c89510a380c, 0xb72ba407bb3119b9, 0x63550a334a254df4}}}, +{{{0x6507d6edb569cf37, 0x178429b00ca52ee1, 0xea7c0090eb6bd65d, 0x3eea62c7daf78f51}}, + {{0x9bba584572547b49, 0xf305c6fae2c408e0, 0x60e8fa69c734f18d, 0x39a92bafaa7d767a}}, + {{0x9d24c713e693274e, 0x5f63857768dbd375, 0x70525560eb8ab39a, 0x68436a0665c9c4cd}}}, +{{{0xbc0235e8202f3f27, 0xc75c00e264f975b0, 0x91a4e9d5a38c2416, 0x17b6e7f68ab789f9}}, + {{0x1e56d317e820107c, 0xc5266844840ae965, 0xc1e0a1c6320ffc7a, 0x5373669c91611472}}, + {{0x5d2814ab9a0e5257, 0x908f2084c9cab3fc, 0xafcaf5885b2d1eca, 0x1cb4b5a678f87d11}}}, +{{{0xb664c06b394afc6c, 0x0c88de2498da5fb1, 0x4f8d03164bcad834, 0x330bca78de7434a2}}, + {{0x6b74aa62a2a007e7, 0xf311e0b0f071c7b1, 0x5707e438000be223, 0x2dc0fd2d82ef6eac}}, + {{0x982eff841119744e, 0xf9695e962b074724, 0xc58ac14fbfc953fb, 0x3c31be1b369f1cf5}}}, +{{{0xb0f4864d08948aee, 0x07dc19ee91ba1c6f, 0x7975cdaea6aca158, 0x330b61134262d4bb}}, + {{0xc168bc93f9cb4272, 0xaeb8711fc7cedb98, 0x7f0e52aa34ac8d7a, 0x41cec1097e7d55bb}}, + {{0xf79619d7a26d808a, 0xbb1fd49e1d9e156d, 0x73d7c36cdba1df27, 0x26b44cd91f28777d}}}, +{{{0x300a9035393aa6d8, 0x2b501131a12bb1cd, 0x7b1ff677f093c222, 0x4309c1f8cab82bad}}, + {{0xaf44842db0285f37, 0x8753189047efc8df, 0x9574e091f820979a, 0x0e378d6069615579}}, + {{0xd9fa917183075a55, 0x4bdb5ad26b009fdc, 0x7829ad2cd63def0e, 0x078fc54975fd3877}}}, +{{{0x87dfbd1428878f2d, 0x134636dd1e9421a1, 0x4f17c951257341a3, 0x5df98d4bad296cb8}}, + {{0xe2004b5bb833a98a, 0x44775dec2d4c3330, 0x3aa244067eace913, 0x272630e3d58e00a9}}, + {{0xf3678fd0ecc90b54, 0xf001459b12043599, 0x26725fbc3758b89b, 0x4325e4aa73a719ae}}}, +{{{0x657dc6ef433c3493, 0x65375e9f80dbf8c3, 0x47fd2d465b372dae, 0x4966ab79796e7947}}, + {{0xed24629acf69f59d, 0x2a4a1ccedd5abbf4, 0x3535ca1f56b2d67b, 0x5d8c68d043b1b42d}}, + {{0xee332d4de3b42b0a, 0xd84e5a2b16a4601c, 0x78243877078ba3e4, 0x77ed1eb4184ee437}}}, +{{{0xbfd4e13f201839a0, 0xaeefffe23e3df161, 0xb65b04f06b5d1fe3, 0x52e085fb2b62fbc0}}, + {{0x185d43f89e92ed1a, 0xb04a1eeafe4719c6, 0x499fbe88a6f03f4f, 0x5d8b0d2f3c859bdd}}, + {{0x124079eaa54cf2ba, 0xd72465eb001b26e7, 0x6843bcfdc97af7fd, 0x0524b42b55eacd02}}}, +{{{0xfd0d5dbee45447b0, 0x6cec351a092005ee, 0x99a47844567579cb, 0x59d242a216e7fa45}}, + {{0xbc18dcad9b829eac, 0x23ae7d28b5f579d0, 0xc346122a69384233, 0x1a6110b2e7d4ac89}}, + {{0x4f833f6ae66997ac, 0x6849762a361839a4, 0x6985dec1970ab525, 0x53045e89dcb1f546}}}, +{{{0xcb8bb346d75353db, 0xfcfcb24bae511e22, 0xcba48d40d50ae6ef, 0x26e3bae5f4f7cb5d}}, + {{0x84da3cde8d45fe12, 0xbd42c218e444e2d2, 0xa85196781f7e3598, 0x7642c93f5616e2b2}}, + {{0x2323daa74595f8e4, 0xde688c8b857abeb4, 0x3fc48e961c59326e, 0x0b2e73ca15c9b8ba}}}, +{{{0xd6bb4428c17f5026, 0x9eb27223fb5a9ca7, 0xe37ba5031919c644, 0x21ce380db59a6602}}, + {{0x0e3fbfaf79c03a55, 0x3077af054cbb5acf, 0xd5c55245db3de39f, 0x015e68c1476a4af7}}, + {{0xc1d5285220066a38, 0x95603e523570aef3, 0x832659a7226b8a4d, 0x5dd689091f8eedc9}}}, +{{{0xcbac84debfd3c856, 0x1624c348b35ff244, 0xb7f88dca5d9cad07, 0x3b0e574da2c2ebe8}}, + {{0x1d022591a5313084, 0xca2d4aaed6270872, 0x86a12b852f0bfd20, 0x56e6c439ad7da748}}, + {{0xc704ff4942bdbae6, 0x5e21ade2b2de1f79, 0xe95db3f35652fad8, 0x0822b5378f08ebc1}}}, +{{{0x51f048478f387475, 0xb25dbcf49cbecb3c, 0x9aab1244d99f2055, 0x2c709e6c1c10a5d6}}, + {{0xe1b7f29362730383, 0x4b5279ffebca8a2c, 0xdafc778abfd41314, 0x7deb10149c72610f}}, + {{0xcb62af6a8766ee7a, 0x66cbec045553cd0e, 0x588001380f0be4b5, 0x08e68e9ff62ce2ea}}}, +{{{0x34ad500a4bc130ad, 0x8d38db493d0bd49c, 0xa25c3d98500a89be, 0x2f1f3f87eeba3b09}}, + {{0x2f2d09d50ab8f2f9, 0xacb9218dc55923df, 0x4a8f342673766cb9, 0x4cb13bd738f719f5}}, + {{0xf7848c75e515b64a, 0xa59501badb4a9038, 0xc20d313f3f751b50, 0x19a1e353c0ae2ee8}}}, +{{{0x7d1c7560bafa05c3, 0xb3e1a0a0c6e55e61, 0xe3529718c0d66473, 0x41546b11c20c3486}}, + {{0xb42172cdd596bdbd, 0x93e0454398eefc40, 0x9fb15347b44109b5, 0x736bd3990266ae34}}, + {{0x85532d509334b3b4, 0x46fd114b60816573, 0xcc5f5f30425c8375, 0x412295a2b87fab5c}}}, +{{{0x19c99b88f57ed6e9, 0x5393cb266df8c825, 0x5cee3213b30ad273, 0x14e153ebb52d2e34}}, + {{0x2e655261e293eac6, 0x845a92032133acdb, 0x460975cb7900996b, 0x0760bb8d195add80}}, + {{0x413e1a17cde6818a, 0x57156da9ed69a084, 0x2cbf268f46caccb1, 0x6b34be9bc33ac5f2}}}, +{{{0xf3df2f643a78c0b2, 0x4c3e971ef22e027c, 0xec7d1c5e49c1b5a3, 0x2012c18f0922dd2d}}, + {{0x11fc69656571f2d3, 0xc6c9e845530e737a, 0xe33ae7a2d4fe5035, 0x01b9c7b62e6dd30b}}, + {{0x880b55e55ac89d29, 0x1483241f45a0a763, 0x3d36efdfc2e76c1f, 0x08af5b784e4bade8}}}, +{{{0x283499dc881f2533, 0x9d0525da779323b6, 0x897addfb673441f4, 0x32b79d71163a168d}}, + {{0xe27314d289cc2c4b, 0x4be4bd11a287178d, 0x18d528d6fa3364ce, 0x6423c1d5afd9826e}}, + {{0xcc85f8d9edfcb36a, 0x22bcc28f3746e5f9, 0xe49de338f9e5d3cd, 0x480a5efbc13e2dcc}}}, +{{{0x0b51e70b01622071, 0x06b505cf8b1dafc5, 0x2c6bb061ef5aabcd, 0x47aa27600cb7bf31}}, + {{0xb6614ce442ce221f, 0x6e199dcc4c053928, 0x663fb4a4dc1cbe03, 0x24b31d47691c8e06}}, + {{0x2a541eedc015f8c3, 0x11a4fe7e7c693f7c, 0xf0af66134ea278d6, 0x545b585d14dda094}}}, +{{{0x67bf275ea0d43a0f, 0xade68e34089beebe, 0x4289134cd479e72e, 0x0f62f9c332ba5454}}, + {{0x6204e4d0e3b321e1, 0x3baa637a28ff1e95, 0x0b0ccffd5b99bd9e, 0x4d22dc3e64c8d071}}, + {{0xfcb46589d63b5f39, 0x5cae6a3f57cbcf61, 0xfebac2d2953afa05, 0x1c0fa01a36371436}}}, +{{{0xe7547449bc7cd692, 0x0f9abeaae6f73ddf, 0x4af01ca700837e29, 0x63ab1b5d3f1bc183}}, + {{0xc11ee5e854c53fae, 0x6a0b06c12b4f3ff4, 0x33540f80e0b67a72, 0x15f18fc3cd07e3ef}}, + {{0x32750763b028f48c, 0x06020740556a065f, 0xd53bd812c3495b58, 0x08706c9b865f508d}}}, +{{{0xf37ca2ab3d343dff, 0x1a8c6a2d80abc617, 0x8e49e035d4ccffca, 0x48b46beebaa1d1b9}}, + {{0xcc991b4138b41246, 0x243b9c526f9ac26b, 0xb9ef494db7cbabbd, 0x5fba433dd082ed00}}, + {{0x9c49e355c9941ad0, 0xb9734ade74498f84, 0x41c3fed066663e5c, 0x0ecfedf8e8e710b3}}}, +{{{0x76430f9f9cd470d9, 0xb62acc9ba42f6008, 0x1898297c59adad5e, 0x7789dd2db78c5080}}, + {{0x744f7463e9403762, 0xf79a8dee8dfcc9c9, 0x163a649655e4cde3, 0x3b61788db284f435}}, + {{0xb22228190d6ef6b2, 0xa94a66b246ce4bfa, 0x46c1a77a4f0b6cc7, 0x4236ccffeb7338cf}}}, +{{{0x8497404d0d55e274, 0x6c6663d9c4ad2b53, 0xec2fb0d9ada95734, 0x2617e120cdb8f73c}}, + {{0x3bd82dbfda777df6, 0x71b177cc0b98369e, 0x1d0e8463850c3699, 0x5a71945b48e2d1f1}}, + {{0x6f203dd5405b4b42, 0x327ec60410b24509, 0x9c347230ac2a8846, 0x77de29fc11ffeb6a}}}, +{{{0xb0ac57c983b778a8, 0x53cdcca9d7fe912c, 0x61c2b854ff1f59dc, 0x3a1a2cf0f0de7dac}}, + {{0x835e138fecced2ca, 0x8c9eaf13ea963b9a, 0xc95fbfc0b2160ea6, 0x575e66f3ad877892}}, + {{0x99803a27c88fcb3a, 0x345a6789275ec0b0, 0x459789d0ff6c2be5, 0x62f882651e70a8b2}}}, +{{{0x085ae2c759ff1be4, 0x149145c93b0e40b7, 0xc467e7fa7ff27379, 0x4eeecf0ad5c73a95}}, + {{0x6d822986698a19e0, 0xdc9821e174d78a71, 0x41a85f31f6cb1f47, 0x352721c2bcda9c51}}, + {{0x48329952213fc985, 0x1087cf0d368a1746, 0x8e5261b166c15aa5, 0x2d5b2d842ed24c21}}}, +{{{0x02cfebd9ebd3ded1, 0xd45b217739021974, 0x7576f813fe30a1b7, 0x5691b6f9a34ef6c2}}, + {{0x5eb7d13d196ac533, 0x377234ecdb80be2b, 0xe144cffc7cf5ae24, 0x5226bcf9c441acec}}, + {{0x79ee6c7223e5b547, 0x6f5f50768330d679, 0xed73e1e96d8adce9, 0x27c3da1e1d8ccc03}}}, +{{{0x7eb9efb23fe24c74, 0x3e50f49f1651be01, 0x3ea732dc21858dea, 0x17377bd75bb810f9}}, + {{0x28302e71630ef9f6, 0xc2d4a2032b64cee0, 0x090820304b6292be, 0x5fca747aa82adf18}}, + {{0x232a03c35c258ea5, 0x86f23a2c6bcb0cf1, 0x3dad8d0d2e442166, 0x04a8933cab76862b}}}, +{{{0xd2c604b622943dff, 0xbc8cbece44cfb3a0, 0x5d254ff397808678, 0x0fa3614f3b1ca6bf}}, + {{0x69082b0e8c936a50, 0xf9c9a035c1dac5b6, 0x6fb73e54c4dfb634, 0x4005419b1d2bc140}}, + {{0xa003febdb9be82f0, 0x2089c1af3a44ac90, 0xf8499f911954fa8e, 0x1fba218aef40ab42}}}, +{{{0xab549448fac8f53e, 0x81f6e89a7ba63741, 0x74fd6c7d6c2b5e01, 0x392e3acaa8c86e42}}, + {{0x4f3e57043e7b0194, 0xa81d3eee08daaf7f, 0xc839c6ab99dcdef1, 0x6c535d13ff7761d5}}, + {{0x4cbd34e93e8a35af, 0x2e0781445887e816, 0x19319c76f29ab0ab, 0x25e17fe4d50ac13b}}}, +{{{0x0a289bd71e04f676, 0x208e1c52d6420f95, 0x5186d8b034691fab, 0x255751442a9fb351}}, + {{0x915f7ff576f121a7, 0xc34a32272fcd87e3, 0xccba2fde4d1be526, 0x6bba828f8969899b}}, + {{0xe2d1bc6690fe3901, 0x4cb54a18a0997ad5, 0x971d6914af8460d4, 0x559d504f7f6b7be4}}}, +{{{0xa7738378b3eb54d5, 0x1d69d366a5553c7c, 0x0a26cf62f92800ba, 0x01ab12d5807e3217}}, + {{0x9c4891e7f6d266fd, 0x0744a19b0307781b, 0x88388f1d6061e23b, 0x123ea6a3354bd50e}}, + {{0x118d189041e32d96, 0xb9ede3c2d8315848, 0x1eab4271d83245d9, 0x4a3961e2c918a154}}}, +{{{0x71dc3be0f8e6bba0, 0xd6cef8347effe30a, 0xa992425fe13a476a, 0x2cd6bce3fb1db763}}, + {{0x0327d644f3233f1e, 0x499a260e34fcf016, 0x83b5a716f2dab979, 0x68aceead9bd4111f}}, + {{0x38b4c90ef3d7c210, 0x308e6e24b7ad040c, 0x3860d9f1b7e73e23, 0x595760d5b508f597}}}, +{{{0x6129bfe104aa6397, 0x8f960008a4a7fccb, 0x3f8bc0897d909458, 0x709fa43edcb291a9}}, + {{0x882acbebfd022790, 0x89af3305c4115760, 0x65f492e37d3473f4, 0x2cb2c5df54515a2b}}, + {{0xeb0a5d8c63fd2aca, 0xd22bc1662e694eff, 0x2723f36ef8cbb03a, 0x70f029ecf0c8131f}}}, +{{{0x461307b32eed3e33, 0xae042f33a45581e7, 0xc94449d3195f0366, 0x0b7d5d8a6c314858}}, + {{0x2a6aafaa5e10b0b9, 0x78f0a370ef041aa9, 0x773efb77aa3ad61f, 0x44eca5a2a74bd9e1}}, + {{0x25d448327b95d543, 0x70d38300a3340f1d, 0xde1c531c60e1c52b, 0x272224512c7de9e4}}}, +{{{0x1abc92af49c5342e, 0xffeed811b2e6fad0, 0xefa28c8dfcc84e29, 0x11b5df18a44cc543}}, + {{0xbf7bbb8a42a975fc, 0x8c5c397796ada358, 0xe27fc76fcdedaa48, 0x19735fd7f6bc20a6}}, + {{0xe3ab90d042c84266, 0xeb848e0f7f19547e, 0x2503a1d065a497b9, 0x0fef911191df895f}}}, +{{{0xb1507ca1ab1c6eb9, 0xbd448f3e16b687b3, 0x3455fb7f2c7a91ab, 0x7579229e2f2adec1}}, + {{0x6ab5dcb85b1c16b7, 0x94c0fce83c7b27a5, 0xa4b11c1a735517be, 0x499238d0ba0eafaa}}, + {{0xecf46e527aba8b57, 0x15a08c478bd1647b, 0x7af1c6a65f706fef, 0x6345fa78f03a30d5}}}, +{{{0xdf02f95f1015e7a1, 0x790ec41da9b40263, 0x4d3a0ea133ea1107, 0x54f70be7e33af8c9}}, + {{0x93d3cbe9bdd8f0a4, 0xdb152c1bfd177302, 0x7dbddc6d7f17a875, 0x3e1a71cc8f426efe}}, + {{0xc83ca3e390babd62, 0x80ede3670291c833, 0xc88038ccd37900c4, 0x2c5fc0231ec31fa1}}}, +{{{0xfeba911717038b4f, 0xe5123721c9deef81, 0x1c97e4e75d0d8834, 0x68afae7a23dc3bc6}}, + {{0xc422e4d102456e65, 0x87414ac1cad47b91, 0x1592e2bba2b6ffdd, 0x75d9d2bff5c2100f}}, + {{0x5bd9b4763626e81c, 0x89966936bca02edd, 0x0a41193d61f077b3, 0x3097a24200ce5471}}}, +{{{0x57427734c7f8b84c, 0xf141a13e01b270e9, 0x02d1adfeb4e564a6, 0x4bb23d92ce83bd48}}, + {{0xa162e7246695c486, 0x131d633435a89607, 0x30521561a0d12a37, 0x56704bada6afb363}}, + {{0xaf6c4aa752f912b9, 0x5e665f6cd86770c8, 0x4c35ac83a3c8cd58, 0x2b7a29c010a58a7e}}}, +{{{0xc4007f77d0c1cec3, 0x8d1020b6bac492f8, 0x32ec29d57e69daaf, 0x599408759d95fce0}}, + {{0x33810a23bf00086e, 0xafce925ee736ff7c, 0x3d60e670e24922d4, 0x11ce9e714f96061b}}, + {{0x219ef713d815bac1, 0xf141465d485be25c, 0x6d5447cc4e513c51, 0x174926be5ef44393}}}, +{{{0xb5deb2f9fc5bd5bb, 0x92daa72ae1d810e1, 0xafc4cfdcb72a1c59, 0x497d78813fc22a24}}, + {{0x3ef5d41593ea022e, 0x5cbcc1a20ed0eed6, 0x8fd24ecf07382c8c, 0x6fa42ead06d8e1ad}}, + {{0xe276824a1f73371f, 0x7f7cf01c4f5b6736, 0x7e201fe304fa46e7, 0x785a36a357808c96}}}, +{{{0x825fbdfd63014d2b, 0xc852369c6ca7578b, 0x5b2fcd285c0b5df0, 0x12ab214c58048c8f}}, + {{0x070442985d517bc3, 0x6acd56c7ae653678, 0x00a27983985a7763, 0x5167effae512662b}}, + {{0xbd4ea9e10f53c4b6, 0x1673dc5f8ac91a14, 0xa8f81a4e2acc1aba, 0x33a92a7924332a25}}}, +{{{0x9dd1f49927996c02, 0x0cb3b058e04d1752, 0x1f7e88967fd02c3e, 0x2f964268cb8b3eb1}}, + {{0x7ba95ba0218f2ada, 0xcff42287330fb9ca, 0xdada496d56c6d907, 0x5380c296f4beee54}}, + {{0x9d4f270466898d0a, 0x3d0987990aff3f7a, 0xd09ef36267daba45, 0x7761455e7b1c669c}}} \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_dbl_p1p1.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_dbl_p1p1.S new file mode 120000 index 0000000000..b35e1016ed --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_dbl_p1p1.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/ge25519_dbl_p1p1.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_nielsadd2.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_nielsadd2.S new file mode 100644 index 0000000000..25674be633 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_nielsadd2.S @@ -0,0 +1,5793 @@ +// linker define ge25519_nielsadd2 +// linker use 38 + +# qhasm: int64 rp + +# qhasm: int64 qp + +# qhasm: input rp + +# qhasm: input qp + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 a0 + +# qhasm: int64 a1 + +# qhasm: int64 a2 + +# qhasm: int64 a3 + +# qhasm: stack64 a0_stack + +# qhasm: stack64 a1_stack + +# qhasm: stack64 a2_stack + +# qhasm: stack64 a3_stack + +# qhasm: int64 b0 + +# qhasm: int64 b1 + +# qhasm: int64 b2 + +# qhasm: int64 b3 + +# qhasm: stack64 b0_stack + +# qhasm: stack64 b1_stack + +# qhasm: stack64 b2_stack + +# qhasm: stack64 b3_stack + +# qhasm: int64 c0 + +# qhasm: int64 c1 + +# qhasm: int64 c2 + +# qhasm: int64 c3 + +# qhasm: stack64 c0_stack + +# qhasm: stack64 c1_stack + +# qhasm: stack64 c2_stack + +# qhasm: stack64 c3_stack + +# qhasm: int64 d0 + +# qhasm: int64 d1 + +# qhasm: int64 d2 + +# qhasm: int64 d3 + +# qhasm: stack64 d0_stack + +# qhasm: stack64 d1_stack + +# qhasm: stack64 d2_stack + +# qhasm: stack64 d3_stack + +# qhasm: int64 e0 + +# qhasm: int64 e1 + +# qhasm: int64 e2 + +# qhasm: int64 e3 + +# qhasm: stack64 e0_stack + +# qhasm: stack64 e1_stack + +# qhasm: stack64 e2_stack + +# qhasm: stack64 e3_stack + +# qhasm: int64 f0 + +# qhasm: int64 f1 + +# qhasm: int64 f2 + +# qhasm: int64 f3 + +# qhasm: stack64 f0_stack + +# qhasm: stack64 f1_stack + +# qhasm: stack64 f2_stack + +# qhasm: stack64 f3_stack + +# qhasm: int64 g0 + +# qhasm: int64 g1 + +# qhasm: int64 g2 + +# qhasm: int64 g3 + +# qhasm: stack64 g0_stack + +# qhasm: stack64 g1_stack + +# qhasm: stack64 g2_stack + +# qhasm: stack64 g3_stack + +# qhasm: int64 h0 + +# qhasm: int64 h1 + +# qhasm: int64 h2 + +# qhasm: int64 h3 + +# qhasm: stack64 h0_stack + +# qhasm: stack64 h1_stack + +# qhasm: stack64 h2_stack + +# qhasm: stack64 h3_stack + +# qhasm: int64 qt0 + +# qhasm: int64 qt1 + +# qhasm: int64 qt2 + +# qhasm: int64 qt3 + +# qhasm: stack64 qt0_stack + +# qhasm: stack64 qt1_stack + +# qhasm: stack64 qt2_stack + +# qhasm: stack64 qt3_stack + +# qhasm: int64 t10 + +# qhasm: int64 t11 + +# qhasm: int64 t12 + +# qhasm: int64 t13 + +# qhasm: stack64 t10_stack + +# qhasm: stack64 t11_stack + +# qhasm: stack64 t12_stack + +# qhasm: stack64 t13_stack + +# qhasm: int64 t20 + +# qhasm: int64 t21 + +# qhasm: int64 t22 + +# qhasm: int64 t23 + +# qhasm: stack64 t20_stack + +# qhasm: stack64 t21_stack + +# qhasm: stack64 t22_stack + +# qhasm: stack64 t23_stack + +# qhasm: int64 rx0 + +# qhasm: int64 rx1 + +# qhasm: int64 rx2 + +# qhasm: int64 rx3 + +# qhasm: int64 ry0 + +# qhasm: int64 ry1 + +# qhasm: int64 ry2 + +# qhasm: int64 ry3 + +# qhasm: int64 rz0 + +# qhasm: int64 rz1 + +# qhasm: int64 rz2 + +# qhasm: int64 rz3 + +# qhasm: int64 rt0 + +# qhasm: int64 rt1 + +# qhasm: int64 rt2 + +# qhasm: int64 rt3 + +# qhasm: int64 mulr4 + +# qhasm: int64 mulr5 + +# qhasm: int64 mulr6 + +# qhasm: int64 mulr7 + +# qhasm: int64 mulr8 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mulx0 + +# qhasm: int64 mulx1 + +# qhasm: int64 mulx2 + +# qhasm: int64 mulx3 + +# qhasm: int64 mulc + +# qhasm: int64 mulzero + +# qhasm: int64 muli38 + +# qhasm: int64 addt0 + +# qhasm: int64 addt1 + +# qhasm: int64 subt0 + +# qhasm: int64 subt1 + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2) +.globl CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2) +_CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2): +CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2): +mov %rsp,%r11 +and $31,%r11 +add $192,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: a0 = *(uint64 *)(rp + 32) +# asm 1: movq 32(a0=int64#3 +# asm 2: movq 32(a0=%rdx +movq 32(%rdi),%rdx + +# qhasm: a1 = *(uint64 *)(rp + 40) +# asm 1: movq 40(a1=int64#4 +# asm 2: movq 40(a1=%rcx +movq 40(%rdi),%rcx + +# qhasm: a2 = *(uint64 *)(rp + 48) +# asm 1: movq 48(a2=int64#5 +# asm 2: movq 48(a2=%r8 +movq 48(%rdi),%r8 + +# qhasm: a3 = *(uint64 *)(rp + 56) +# asm 1: movq 56(a3=int64#6 +# asm 2: movq 56(a3=%r9 +movq 56(%rdi),%r9 + +# qhasm: b0 = a0 +# asm 1: mov b0=int64#7 +# asm 2: mov b0=%rax +mov %rdx,%rax + +# qhasm: b1 = a1 +# asm 1: mov b1=int64#8 +# asm 2: mov b1=%r10 +mov %rcx,%r10 + +# qhasm: b2 = a2 +# asm 1: mov b2=int64#9 +# asm 2: mov b2=%r11 +mov %r8,%r11 + +# qhasm: b3 = a3 +# asm 1: mov b3=int64#10 +# asm 2: mov b3=%r12 +mov %r9,%r12 + +# qhasm: carry? a0 -= *(uint64 *) (rp + 0) +# asm 1: subq 0(subt0=int64#11 +# asm 2: mov $0,>subt0=%r13 +mov $0,%r13 + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#12 +# asm 2: mov $38,>subt1=%r14 +mov $38,%r14 + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae addt0=int64#11 +# asm 2: mov $0,>addt0=%r13 +mov $0,%r13 + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#12 +# asm 2: mov $38,>addt1=%r14 +mov $38,%r14 + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae a0_stack=stack64#8 +# asm 2: movq a0_stack=56(%rsp) +movq %rdx,56(%rsp) + +# qhasm: a1_stack = a1 +# asm 1: movq a1_stack=stack64#9 +# asm 2: movq a1_stack=64(%rsp) +movq %rcx,64(%rsp) + +# qhasm: a2_stack = a2 +# asm 1: movq a2_stack=stack64#10 +# asm 2: movq a2_stack=72(%rsp) +movq %r8,72(%rsp) + +# qhasm: a3_stack = a3 +# asm 1: movq a3_stack=stack64#11 +# asm 2: movq a3_stack=80(%rsp) +movq %r9,80(%rsp) + +# qhasm: b0_stack = b0 +# asm 1: movq b0_stack=stack64#12 +# asm 2: movq b0_stack=88(%rsp) +movq %rax,88(%rsp) + +# qhasm: b1_stack = b1 +# asm 1: movq b1_stack=stack64#13 +# asm 2: movq b1_stack=96(%rsp) +movq %r10,96(%rsp) + +# qhasm: b2_stack = b2 +# asm 1: movq b2_stack=stack64#14 +# asm 2: movq b2_stack=104(%rsp) +movq %r11,104(%rsp) + +# qhasm: b3_stack = b3 +# asm 1: movq b3_stack=stack64#15 +# asm 2: movq b3_stack=112(%rsp) +movq %r12,112(%rsp) + +# qhasm: mulr4 = 0 +# asm 1: mov $0,>mulr4=int64#4 +# asm 2: mov $0,>mulr4=%rcx +mov $0,%rcx + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#5 +# asm 2: mov $0,>mulr5=%r8 +mov $0,%r8 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulx0 = a0_stack +# asm 1: movq mulx0=int64#9 +# asm 2: movq mulx0=%r11 +movq 56(%rsp),%r11 + +# qhasm: mulrax = *(uint64 *)(qp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul a0=int64#10 +# asm 2: mov a0=%r12 +mov %rax,%r12 + +# qhasm: a1 = mulrdx +# asm 1: mov a1=int64#11 +# asm 2: mov a1=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(qp + 8) +# asm 1: movq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul a2=int64#12 +# asm 2: mov $0,>a2=%r14 +mov $0,%r14 + +# qhasm: a2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul a3=int64#13 +# asm 2: mov $0,>a3=%r15 +mov $0,%r15 + +# qhasm: a3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#9 +# asm 2: movq mulx1=%r11 +movq 64(%rsp),%r11 + +# qhasm: mulrax = *(uint64 *)(qp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#9 +# asm 2: movq mulx2=%r11 +movq 72(%rsp),%r11 + +# qhasm: mulrax = *(uint64 *)(qp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#9 +# asm 2: movq mulx3=%r11 +movq 80(%rsp),%r11 + +# qhasm: mulrax = *(uint64 *)(qp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#4 +# asm 2: mov mulr4=%rcx +mov %rax,%rcx + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#5 +# asm 2: mov mulr5=%r8 +mov %rdx,%r8 + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#3 +# asm 2: mov $0,>mulzero=%rdx +mov $0,%rdx + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#4 +# asm 2: imulq $38,mulr8=%rcx +imulq $38,%rax,%rcx + +# qhasm: carry? a0 += mulr8 +# asm 1: add mulzero=int64#3 +# asm 2: imulq $38,mulzero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: a0 += mulzero +# asm 1: add a0_stack=stack64#8 +# asm 2: movq a0_stack=56(%rsp) +movq %r12,56(%rsp) + +# qhasm: a1_stack = a1 +# asm 1: movq a1_stack=stack64#9 +# asm 2: movq a1_stack=64(%rsp) +movq %r13,64(%rsp) + +# qhasm: a2_stack = a2 +# asm 1: movq a2_stack=stack64#10 +# asm 2: movq a2_stack=72(%rsp) +movq %r14,72(%rsp) + +# qhasm: a3_stack = a3 +# asm 1: movq a3_stack=stack64#11 +# asm 2: movq a3_stack=80(%rsp) +movq %r15,80(%rsp) + +# qhasm: mulr4 = 0 +# asm 1: mov $0,>mulr4=int64#4 +# asm 2: mov $0,>mulr4=%rcx +mov $0,%rcx + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#5 +# asm 2: mov $0,>mulr5=%r8 +mov $0,%r8 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulx0 = b0_stack +# asm 1: movq mulx0=int64#9 +# asm 2: movq mulx0=%r11 +movq 88(%rsp),%r11 + +# qhasm: mulrax = *(uint64 *)(qp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul e0=int64#10 +# asm 2: mov e0=%r12 +mov %rax,%r12 + +# qhasm: e1 = mulrdx +# asm 1: mov e1=int64#11 +# asm 2: mov e1=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(qp + 40) +# asm 1: movq 40(mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul e2=int64#12 +# asm 2: mov $0,>e2=%r14 +mov $0,%r14 + +# qhasm: e2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul e3=int64#13 +# asm 2: mov $0,>e3=%r15 +mov $0,%r15 + +# qhasm: e3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#9 +# asm 2: movq mulx1=%r11 +movq 96(%rsp),%r11 + +# qhasm: mulrax = *(uint64 *)(qp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#9 +# asm 2: movq mulx2=%r11 +movq 104(%rsp),%r11 + +# qhasm: mulrax = *(uint64 *)(qp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#9 +# asm 2: movq mulx3=%r11 +movq 112(%rsp),%r11 + +# qhasm: mulrax = *(uint64 *)(qp + 32) +# asm 1: movq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 40(mulrax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 48(mulrax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 56(mulrax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#4 +# asm 2: mov mulr4=%rcx +mov %rax,%rcx + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#5 +# asm 2: mov mulr5=%r8 +mov %rdx,%r8 + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#3 +# asm 2: mov $0,>mulzero=%rdx +mov $0,%rdx + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#4 +# asm 2: imulq $38,mulr8=%rcx +imulq $38,%rax,%rcx + +# qhasm: carry? e0 += mulr8 +# asm 1: add mulzero=int64#3 +# asm 2: imulq $38,mulzero=%rdx +imulq $38,%rdx,%rdx + +# qhasm: e0 += mulzero +# asm 1: add h0=int64#3 +# asm 2: mov h0=%rdx +mov %r12,%rdx + +# qhasm: h1 = e1 +# asm 1: mov h1=int64#4 +# asm 2: mov h1=%rcx +mov %r13,%rcx + +# qhasm: h2 = e2 +# asm 1: mov h2=int64#5 +# asm 2: mov h2=%r8 +mov %r14,%r8 + +# qhasm: h3 = e3 +# asm 1: mov h3=int64#6 +# asm 2: mov h3=%r9 +mov %r15,%r9 + +# qhasm: carry? e0 -= a0_stack +# asm 1: subq subt0=int64#7 +# asm 2: mov $0,>subt0=%rax +mov $0,%rax + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#8 +# asm 2: mov $38,>subt1=%r10 +mov $38,%r10 + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae addt0=int64#7 +# asm 2: mov $0,>addt0=%rax +mov $0,%rax + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#8 +# asm 2: mov $38,>addt1=%r10 +mov $38,%r10 + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae h0_stack=stack64#8 +# asm 2: movq h0_stack=56(%rsp) +movq %rdx,56(%rsp) + +# qhasm: h1_stack = h1 +# asm 1: movq h1_stack=stack64#9 +# asm 2: movq h1_stack=64(%rsp) +movq %rcx,64(%rsp) + +# qhasm: h2_stack = h2 +# asm 1: movq h2_stack=stack64#10 +# asm 2: movq h2_stack=72(%rsp) +movq %r8,72(%rsp) + +# qhasm: h3_stack = h3 +# asm 1: movq h3_stack=stack64#11 +# asm 2: movq h3_stack=80(%rsp) +movq %r9,80(%rsp) + +# qhasm: e0_stack = e0 +# asm 1: movq e0_stack=stack64#12 +# asm 2: movq e0_stack=88(%rsp) +movq %r12,88(%rsp) + +# qhasm: e1_stack = e1 +# asm 1: movq e1_stack=stack64#13 +# asm 2: movq e1_stack=96(%rsp) +movq %r13,96(%rsp) + +# qhasm: e2_stack = e2 +# asm 1: movq e2_stack=stack64#14 +# asm 2: movq e2_stack=104(%rsp) +movq %r14,104(%rsp) + +# qhasm: e3_stack = e3 +# asm 1: movq e3_stack=stack64#15 +# asm 2: movq e3_stack=112(%rsp) +movq %r15,112(%rsp) + +# qhasm: mulr4 = 0 +# asm 1: mov $0,>mulr4=int64#4 +# asm 2: mov $0,>mulr4=%rcx +mov $0,%rcx + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#5 +# asm 2: mov $0,>mulr5=%r8 +mov $0,%r8 + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#6 +# asm 2: mov $0,>mulr6=%r9 +mov $0,%r9 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#8 +# asm 2: mov $0,>mulr7=%r10 +mov $0,%r10 + +# qhasm: mulx0 = *(uint64 *)(rp + 96) +# asm 1: movq 96(mulx0=int64#9 +# asm 2: movq 96(mulx0=%r11 +movq 96(%rdi),%r11 + +# qhasm: mulrax = *(uint64 *)(qp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul c0=int64#10 +# asm 2: mov c0=%r12 +mov %rax,%r12 + +# qhasm: c1 = mulrdx +# asm 1: mov c1=int64#11 +# asm 2: mov c1=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(qp + 72) +# asm 1: movq 72(mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul c2=int64#12 +# asm 2: mov $0,>c2=%r14 +mov $0,%r14 + +# qhasm: c2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul c3=int64#13 +# asm 2: mov $0,>c3=%r15 +mov $0,%r15 + +# qhasm: c3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#9 +# asm 2: movq 104(mulx1=%r11 +movq 104(%rdi),%r11 + +# qhasm: mulrax = *(uint64 *)(qp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#9 +# asm 2: movq 112(mulx2=%r11 +movq 112(%rdi),%r11 + +# qhasm: mulrax = *(uint64 *)(qp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#9 +# asm 2: movq 120(mulx3=%r11 +movq 120(%rdi),%r11 + +# qhasm: mulrax = *(uint64 *)(qp + 64) +# asm 1: movq 64(mulrax=int64#7 +# asm 2: movq 64(mulrax=%rax +movq 64(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 72(mulrax=%rax +movq 72(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#14 +# asm 2: mov $0,>mulc=%rbx +mov $0,%rbx + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#2 +# asm 2: mov mulr4=%rsi +mov %rax,%rsi + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#4 +# asm 2: mov mulr5=%rcx +mov %rdx,%rcx + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r10,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#2 +# asm 2: mov $0,>mulzero=%rsi +mov $0,%rsi + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#3 +# asm 2: imulq $38,mulr8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? c0 += mulr8 +# asm 1: add mulzero=int64#2 +# asm 2: imulq $38,mulzero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: c0 += mulzero +# asm 1: add f0=int64#2 +# asm 2: movq 64(f0=%rsi +movq 64(%rdi),%rsi + +# qhasm: f1 = *(uint64 *)(rp + 72) +# asm 1: movq 72(f1=int64#3 +# asm 2: movq 72(f1=%rdx +movq 72(%rdi),%rdx + +# qhasm: f2 = *(uint64 *)(rp + 80) +# asm 1: movq 80(f2=int64#4 +# asm 2: movq 80(f2=%rcx +movq 80(%rdi),%rcx + +# qhasm: f3 = *(uint64 *)(rp + 88) +# asm 1: movq 88(f3=int64#5 +# asm 2: movq 88(f3=%r8 +movq 88(%rdi),%r8 + +# qhasm: carry? f0 += f0 +# asm 1: add addt0=int64#6 +# asm 2: mov $0,>addt0=%r9 +mov $0,%r9 + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#7 +# asm 2: mov $38,>addt1=%rax +mov $38,%rax + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae g0=int64#6 +# asm 2: mov g0=%r9 +mov %rsi,%r9 + +# qhasm: g1 = f1 +# asm 1: mov g1=int64#7 +# asm 2: mov g1=%rax +mov %rdx,%rax + +# qhasm: g2 = f2 +# asm 1: mov g2=int64#8 +# asm 2: mov g2=%r10 +mov %rcx,%r10 + +# qhasm: g3 = f3 +# asm 1: mov g3=int64#9 +# asm 2: mov g3=%r11 +mov %r8,%r11 + +# qhasm: carry? f0 -= c0 +# asm 1: sub subt0=int64#14 +# asm 2: mov $0,>subt0=%rbx +mov $0,%rbx + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#15 +# asm 2: mov $38,>subt1=%rbp +mov $38,%rbp + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae addt0=int64#10 +# asm 2: mov $0,>addt0=%r12 +mov $0,%r12 + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#11 +# asm 2: mov $38,>addt1=%r13 +mov $38,%r13 + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae g0_stack=stack64#16 +# asm 2: movq g0_stack=120(%rsp) +movq %r9,120(%rsp) + +# qhasm: g1_stack = g1 +# asm 1: movq g1_stack=stack64#17 +# asm 2: movq g1_stack=128(%rsp) +movq %rax,128(%rsp) + +# qhasm: g2_stack = g2 +# asm 1: movq g2_stack=stack64#18 +# asm 2: movq g2_stack=136(%rsp) +movq %r10,136(%rsp) + +# qhasm: g3_stack = g3 +# asm 1: movq g3_stack=stack64#19 +# asm 2: movq g3_stack=144(%rsp) +movq %r11,144(%rsp) + +# qhasm: f0_stack = f0 +# asm 1: movq f0_stack=stack64#20 +# asm 2: movq f0_stack=152(%rsp) +movq %rsi,152(%rsp) + +# qhasm: f1_stack = f1 +# asm 1: movq f1_stack=stack64#21 +# asm 2: movq f1_stack=160(%rsp) +movq %rdx,160(%rsp) + +# qhasm: f2_stack = f2 +# asm 1: movq f2_stack=stack64#22 +# asm 2: movq f2_stack=168(%rsp) +movq %rcx,168(%rsp) + +# qhasm: f3_stack = f3 +# asm 1: movq f3_stack=stack64#23 +# asm 2: movq f3_stack=176(%rsp) +movq %r8,176(%rsp) + +# qhasm: mulr4 = 0 +# asm 1: mov $0,>mulr4=int64#2 +# asm 2: mov $0,>mulr4=%rsi +mov $0,%rsi + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#4 +# asm 2: mov $0,>mulr5=%rcx +mov $0,%rcx + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulx0 = e0_stack +# asm 1: movq mulx0=int64#8 +# asm 2: movq mulx0=%r10 +movq 88(%rsp),%r10 + +# qhasm: mulrax = f0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 152(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rx0=int64#9 +# asm 2: mov rx0=%r11 +mov %rax,%r11 + +# qhasm: rx1 = mulrdx +# asm 1: mov rx1=int64#10 +# asm 2: mov rx1=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = f1_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 160(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rx2=int64#11 +# asm 2: mov $0,>rx2=%r13 +mov $0,%r13 + +# qhasm: rx2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 168(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rx3=int64#12 +# asm 2: mov $0,>rx3=%r14 +mov $0,%r14 + +# qhasm: rx3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 176(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#8 +# asm 2: movq mulx1=%r10 +movq 96(%rsp),%r10 + +# qhasm: mulrax = f0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 152(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 160(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 168(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 176(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#8 +# asm 2: movq mulx2=%r10 +movq 104(%rsp),%r10 + +# qhasm: mulrax = f0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 152(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 160(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 168(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 176(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#8 +# asm 2: movq mulx3=%r10 +movq 112(%rsp),%r10 + +# qhasm: mulrax = f0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 152(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 160(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 168(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 176(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rsi,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#2 +# asm 2: mov mulr4=%rsi +mov %rax,%rsi + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#4 +# asm 2: mov mulr5=%rcx +mov %rdx,%rcx + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#2 +# asm 2: mov $0,>mulzero=%rsi +mov $0,%rsi + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#3 +# asm 2: imulq $38,mulr8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? rx0 += mulr8 +# asm 1: add mulzero=int64#2 +# asm 2: imulq $38,mulzero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: rx0 += mulzero +# asm 1: add mulr4=int64#2 +# asm 2: mov $0,>mulr4=%rsi +mov $0,%rsi + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#4 +# asm 2: mov $0,>mulr5=%rcx +mov $0,%rcx + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulx0 = h0_stack +# asm 1: movq mulx0=int64#8 +# asm 2: movq mulx0=%r10 +movq 56(%rsp),%r10 + +# qhasm: mulrax = g0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul ry0=int64#9 +# asm 2: mov ry0=%r11 +mov %rax,%r11 + +# qhasm: ry1 = mulrdx +# asm 1: mov ry1=int64#10 +# asm 2: mov ry1=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = g1_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 128(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul ry2=int64#11 +# asm 2: mov $0,>ry2=%r13 +mov $0,%r13 + +# qhasm: ry2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul ry3=int64#12 +# asm 2: mov $0,>ry3=%r14 +mov $0,%r14 + +# qhasm: ry3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#8 +# asm 2: movq mulx1=%r10 +movq 64(%rsp),%r10 + +# qhasm: mulrax = g0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 128(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#8 +# asm 2: movq mulx2=%r10 +movq 72(%rsp),%r10 + +# qhasm: mulrax = g0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 128(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#8 +# asm 2: movq mulx3=%r10 +movq 80(%rsp),%r10 + +# qhasm: mulrax = g0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 128(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rsi,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#2 +# asm 2: mov mulr4=%rsi +mov %rax,%rsi + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#4 +# asm 2: mov mulr5=%rcx +mov %rdx,%rcx + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#2 +# asm 2: mov $0,>mulzero=%rsi +mov $0,%rsi + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#3 +# asm 2: imulq $38,mulr8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? ry0 += mulr8 +# asm 1: add mulzero=int64#2 +# asm 2: imulq $38,mulzero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: ry0 += mulzero +# asm 1: add mulr4=int64#2 +# asm 2: mov $0,>mulr4=%rsi +mov $0,%rsi + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#4 +# asm 2: mov $0,>mulr5=%rcx +mov $0,%rcx + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulx0 = g0_stack +# asm 1: movq mulx0=int64#8 +# asm 2: movq mulx0=%r10 +movq 120(%rsp),%r10 + +# qhasm: mulrax = f0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 152(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rz0=int64#9 +# asm 2: mov rz0=%r11 +mov %rax,%r11 + +# qhasm: rz1 = mulrdx +# asm 1: mov rz1=int64#10 +# asm 2: mov rz1=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = f1_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 160(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rz2=int64#11 +# asm 2: mov $0,>rz2=%r13 +mov $0,%r13 + +# qhasm: rz2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 168(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rz3=int64#12 +# asm 2: mov $0,>rz3=%r14 +mov $0,%r14 + +# qhasm: rz3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 176(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#8 +# asm 2: movq mulx1=%r10 +movq 128(%rsp),%r10 + +# qhasm: mulrax = f0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 152(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 160(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 168(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 176(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#8 +# asm 2: movq mulx2=%r10 +movq 136(%rsp),%r10 + +# qhasm: mulrax = f0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 152(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 160(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 168(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 176(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#8 +# asm 2: movq mulx3=%r10 +movq 144(%rsp),%r10 + +# qhasm: mulrax = f0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 152(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 160(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 168(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 176(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rsi,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#2 +# asm 2: mov mulr4=%rsi +mov %rax,%rsi + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#4 +# asm 2: mov mulr5=%rcx +mov %rdx,%rcx + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#2 +# asm 2: mov $0,>mulzero=%rsi +mov $0,%rsi + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#3 +# asm 2: imulq $38,mulr8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? rz0 += mulr8 +# asm 1: add mulzero=int64#2 +# asm 2: imulq $38,mulzero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: rz0 += mulzero +# asm 1: add mulr4=int64#2 +# asm 2: mov $0,>mulr4=%rsi +mov $0,%rsi + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#4 +# asm 2: mov $0,>mulr5=%rcx +mov $0,%rcx + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulx0 = e0_stack +# asm 1: movq mulx0=int64#8 +# asm 2: movq mulx0=%r10 +movq 88(%rsp),%r10 + +# qhasm: mulrax = h0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rt0=int64#9 +# asm 2: mov rt0=%r11 +mov %rax,%r11 + +# qhasm: rt1 = mulrdx +# asm 1: mov rt1=int64#10 +# asm 2: mov rt1=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = h1_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rt2=int64#11 +# asm 2: mov $0,>rt2=%r13 +mov $0,%r13 + +# qhasm: rt2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul rt3=int64#12 +# asm 2: mov $0,>rt3=%r14 +mov $0,%r14 + +# qhasm: rt3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#8 +# asm 2: movq mulx1=%r10 +movq 96(%rsp),%r10 + +# qhasm: mulrax = h0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#8 +# asm 2: movq mulx2=%r10 +movq 104(%rsp),%r10 + +# qhasm: mulrax = h0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#8 +# asm 2: movq mulx3=%r10 +movq 112(%rsp),%r10 + +# qhasm: mulrax = h0_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rsi,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#2 +# asm 2: mov mulr4=%rsi +mov %rax,%rsi + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#4 +# asm 2: mov mulr5=%rcx +mov %rdx,%rcx + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#2 +# asm 2: mov $0,>mulzero=%rsi +mov $0,%rsi + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#3 +# asm 2: imulq $38,mulr8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? rt0 += mulr8 +# asm 1: add mulzero=int64#2 +# asm 2: imulq $38,mulzero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: rt0 += mulzero +# asm 1: add caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_p1p1_to_p2.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_p1p1_to_p2.S new file mode 120000 index 0000000000..50e6973d7c --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_p1p1_to_p2.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/ge25519_p1p1_to_p2.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_p1p1_to_p3.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_p1p1_to_p3.S new file mode 120000 index 0000000000..d9c4fc02c1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_p1p1_to_p3.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/ge25519_p1p1_to_p3.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_scalarmult_base.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_scalarmult_base.c new file mode 100644 index 0000000000..c439c8bc5d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/ge25519_scalarmult_base.c @@ -0,0 +1,61 @@ +#include "fe25519.h" +#include "sc25519.h" +#include "ge25519.h" + +#ifdef SMALLTABLES +/* d */ +static const fe25519 ecd = {{0x75EB4DCA135978A3, 0x00700A4D4141D8AB, 0x8CC740797779E898, 0x52036CEE2B6FFE73}}; +#endif + +void ge25519_scalarmult_base(ge25519_p3 *r, const sc25519 *s) +{ + signed char b[64]; + int i; + ge25519_niels t; + fe25519 d; + + sc25519_window4(b,s); + +#ifdef SMALLTABLES + ge25519_p1p1 tp1p1; + choose_t((ge25519_niels *)r, 0, (signed long long) b[1], ge25519_base_multiples_niels); + fe25519_sub(&d, &r->y, &r->x); + fe25519_add(&r->y, &r->y, &r->x); + r->x = d; + r->t = r->z; + fe25519_setint(&r->z,2); + for(i=3;i<64;i+=2) + { + choose_t(&t, (unsigned long long) i/2, (signed long long) b[i], ge25519_base_multiples_niels); + ge25519_nielsadd2(r, &t); + } + ge25519_dbl_p1p1(&tp1p1,(ge25519_p2 *)r); + ge25519_p1p1_to_p2((ge25519_p2 *)r, &tp1p1); + ge25519_dbl_p1p1(&tp1p1,(ge25519_p2 *)r); + ge25519_p1p1_to_p2((ge25519_p2 *)r, &tp1p1); + ge25519_dbl_p1p1(&tp1p1,(ge25519_p2 *)r); + ge25519_p1p1_to_p2((ge25519_p2 *)r, &tp1p1); + ge25519_dbl_p1p1(&tp1p1,(ge25519_p2 *)r); + ge25519_p1p1_to_p3(r, &tp1p1); + choose_t(&t, (unsigned long long) 0, (signed long long) b[0], ge25519_base_multiples_niels); + fe25519_mul(&t.t2d, &t.t2d, &ecd); + ge25519_nielsadd2(r, &t); + for(i=2;i<64;i+=2) + { + choose_t(&t, (unsigned long long) i/2, (signed long long) b[i], ge25519_base_multiples_niels); + ge25519_nielsadd2(r, &t); + } +#else + choose_t((ge25519_niels *)r, 0, (signed long long) b[0], ge25519_base_multiples_niels); + fe25519_sub(&d, &r->y, &r->x); + fe25519_add(&r->y, &r->y, &r->x); + r->x = d; + r->t = r->z; + fe25519_setint(&r->z,2); + for(i=1;i<64;i++) + { + choose_t(&t, (unsigned long long) i, (signed long long) b[i], ge25519_base_multiples_niels); + ge25519_nielsadd2(r, &t); + } +#endif +} diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/implementors b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/implementors new file mode 120000 index 0000000000..3535539aea --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/implementors @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/nG.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/nG.c new file mode 120000 index 0000000000..3979d79b05 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/nG.c @@ -0,0 +1 @@ +../amd64-51/nG.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/sc25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/sc25519_window4.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/sc25519_window4.c new file mode 120000 index 0000000000..b54931e1bf --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/sc25519_window4.c @@ -0,0 +1 @@ +../amd64-51/sc25519_window4.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/shared-base-data.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/shared-base-data.c new file mode 100644 index 0000000000..beb8a65cf2 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/shared-base-data.c @@ -0,0 +1,7 @@ +// linker define ge25519_base_multiples_niels + +#include "ge25519.h" + +const ge25519_niels ge25519_base_multiples_niels[] = { +#include "ge25519_base_niels.data" +}; diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/shared-consts.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/shared-consts.c new file mode 120000 index 0000000000..1a152a1b20 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-64/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/architectures b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/consts_namespace.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/consts_namespace.h new file mode 100644 index 0000000000..9872b25670 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/consts_namespace.h @@ -0,0 +1,27 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vecmask25 CRYPTO_SHARED_NAMESPACE(vecmask25) +#define vecmask26 CRYPTO_SHARED_NAMESPACE(vecmask26) +#define pmask1 CRYPTO_SHARED_NAMESPACE(pmask1) +#define pmask2 CRYPTO_SHARED_NAMESPACE(pmask2) +#define pmask3 CRYPTO_SHARED_NAMESPACE(pmask3) +#define pmask4 CRYPTO_SHARED_NAMESPACE(pmask4) +#define pmask5 CRYPTO_SHARED_NAMESPACE(pmask5) +#define pmask6 CRYPTO_SHARED_NAMESPACE(pmask6) +#define pmask7 CRYPTO_SHARED_NAMESPACE(pmask7) +#define pmask8 CRYPTO_SHARED_NAMESPACE(pmask8) +#define pmask9 CRYPTO_SHARED_NAMESPACE(pmask9) +#define pmask10 CRYPTO_SHARED_NAMESPACE(pmask10) +#define pmask11 CRYPTO_SHARED_NAMESPACE(pmask11) +#define pmask12 CRYPTO_SHARED_NAMESPACE(pmask12) +#define upmask1 CRYPTO_SHARED_NAMESPACE(upmask1) +#define upmask2 CRYPTO_SHARED_NAMESPACE(upmask2) +#define upmask3 CRYPTO_SHARED_NAMESPACE(upmask3) +#define upmask4 CRYPTO_SHARED_NAMESPACE(upmask4) +#define upmask5 CRYPTO_SHARED_NAMESPACE(upmask5) +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519.h new file mode 120000 index 0000000000..d0a29945e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_add.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_add.S new file mode 120000 index 0000000000..d4acd5b571 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_add.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_cmov.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_cmov.c new file mode 120000 index 0000000000..b0f28207ef --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_cmov.c @@ -0,0 +1 @@ +../amd64-64/fe25519_cmov.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_freeze.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_getparity.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_getparity.c new file mode 120000 index 0000000000..c23ba9ce3d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_getparity.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_invert.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_mul.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_mul.S new file mode 120000 index 0000000000..a969f86af4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_nsquare.S new file mode 120000 index 0000000000..a5dcdec138 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_pack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_square.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_square.S new file mode 120000 index 0000000000..07c854965f --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_sub.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_sub.S new file mode 120000 index 0000000000..8458eb6750 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_sub.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_unpack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/ge25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/ge25519.h new file mode 120000 index 0000000000..7630019869 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/ge25519.h @@ -0,0 +1 @@ +../amd64-maa4/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/ge25519_base.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/ge25519_base.S new file mode 100644 index 0000000000..8eada8a7c4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/ge25519_base.S @@ -0,0 +1,1919 @@ +// linker define base +// linker use vec19 +// linker use vecmask25 +// linker use vecmask26 +// linker use pmask1 +// linker use pmask2 +// linker use pmask3 +// linker use pmask4 +// linker use pmask5 +// linker use pmask6 +// linker use pmask7 +// linker use pmask8 +// linker use pmask9 +// linker use pmask10 +// linker use pmask11 +// linker use pmask12 +// linker use upmask1 +// linker use upmask2 +// linker use upmask3 +// linker use upmask4 +// linker use upmask5 +// linker use mask63 + +/* Assembly for fixed base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(base) +.globl CRYPTO_SHARED_NAMESPACE(base) +_CRYPTO_SHARED_NAMESPACE(base): +CRYPTO_SHARED_NAMESPACE(base): + +movq %rsp, %r11 +andq $-32,%rsp +subq $1120, %rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) +movq %rsi,64(%rsp) +movq %rdx,72(%rsp) + +/* choose t and initialize r */ + +movq %rdx,%rcx +movzbl 0(%rsi),%eax +movsbq %al,%rdx +movq $0,%rsi + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %r11,%r15 +movq %r12,80(%rsp) +movq %r13,88(%rsp) +movq %r14,96(%rsp) + +// sub +subq %rsi,%r11 +sbbq %r9,%r12 +sbbq %rax,%r13 +sbbq %r10,%r14 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r11 +sbbq %rbx,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 + +cmovc %rbp,%rbx +subq %rbx,%r11 + +movq %r11,128(%rsp) +movq %r12,136(%rsp) +movq %r13,144(%rsp) +movq %r14,152(%rsp) + +// add +addq %r15,%rsi +adcq 80(%rsp),%r9 +adcq 88(%rsp),%rax +adcq 96(%rsp),%r10 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%r9 +adcq %rbx,%rax +adcq %rbx,%r10 + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,160(%rsp) +movq %r9,168(%rsp) +movq %rax,176(%rsp) +movq %r10,184(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,224(%rsp) +movq %r9,232(%rsp) +movq %rax,240(%rsp) +movq %r10,248(%rsp) + +movq $2,192(%rsp) +movq $0,200(%rsp) +movq $0,208(%rsp) +movq $0,216(%rsp) + +/* loop: i=1, i<64, i=i+1 */ + +movq $1,80(%rsp) + +.L: + +/* choose t */ + +movq 72(%rsp),%rcx +movq 80(%rsp),%rsi +movq 64(%rsp),%rdx +movzbl 0(%rdx,%rsi),%eax +movsbq %al,%rdx + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %rsi,256(%rsp) +movq %r9,264(%rsp) +movq %rax,272(%rsp) +movq %r10,280(%rsp) +movq %r11,288(%rsp) +movq %r12,296(%rsp) +movq %r13,304(%rsp) +movq %r14,312(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,320(%rsp) +movq %r9,328(%rsp) +movq %rax,336(%rsp) +movq %r10,344(%rsp) + +/* nielsadd2 */ + +// load +movq 160(%rsp),%rdx +movq 168(%rsp),%rcx +movq 176(%rsp),%r8 +movq 184(%rsp),%r9 + +// copy +movq %rdx,%rax +movq %rcx,%r10 +movq %r8,%r11 +movq %r9,%r12 + +// sub +subq 128(%rsp),%rdx +sbbq 136(%rsp),%rcx +sbbq 144(%rsp),%r8 +sbbq 152(%rsp),%r9 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +subq %r14,%rdx +sbbq %r13,%rcx +sbbq %r13,%r8 +sbbq %r13,%r9 + +cmovc %r14,%r13 +subq %r13,%rdx + +movq %rdx,352(%rsp) +movq %rcx,360(%rsp) +movq %r8,368(%rsp) +movq %r9,376(%rsp) + +// add +addq 128(%rsp),%rax +adcq 136(%rsp),%r10 +adcq 144(%rsp),%r11 +adcq 152(%rsp),%r12 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +addq %r14,%rax +adcq %r13,%r10 +adcq %r13,%r11 +adcq %r13,%r12 + +cmovc %r14,%r13 +addq %r13,%rax + +movq %rax,384(%rsp) +movq %r10,392(%rsp) +movq %r11,400(%rsp) +movq %r12,408(%rsp) + +// mul +movq 264(%rsp),%rax +mulq 376(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 272(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 280(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 272(%rsp),%rax +mulq 376(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 280(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 280(%rsp),%rax +mulq 376(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 256(%rsp),%rax +mulq 376(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 264(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 272(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 280(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 256(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 256(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 264(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 256(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 264(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 272(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq %r8,352(%rsp) +movq %r10,360(%rsp) +movq %r12,368(%rsp) +movq %r14,376(%rsp) + +// mul +movq 296(%rsp),%rax +mulq 408(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 304(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 312(%rsp),%rax +mulq 392(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 304(%rsp),%rax +mulq 408(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 312(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 312(%rsp),%rax +mulq 408(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 288(%rsp),%rax +mulq 408(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 296(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 304(%rsp),%rax +mulq 392(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 312(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 288(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 288(%rsp),%rax +mulq 392(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 296(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 288(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 296(%rsp),%rax +mulq 392(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 304(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +// copy +movq %r8,%r9 +movq %r10,%r11 +movq %r12,%r13 +movq %r14,%r15 + +// sub +subq 352(%rsp),%r8 +sbbq 360(%rsp),%r10 +sbbq 368(%rsp),%r12 +sbbq 376(%rsp),%r14 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +subq %rbx,%r8 +sbbq %rax,%r10 +sbbq %rax,%r12 +sbbq %rax,%r14 + +cmovc %rbx,%rax +subq %rax,%r8 + +movq %r8,384(%rsp) +movq %r10,392(%rsp) +movq %r12,400(%rsp) +movq %r14,408(%rsp) + +// add +addq 352(%rsp),%r9 +adcq 360(%rsp),%r11 +adcq 368(%rsp),%r13 +adcq 376(%rsp),%r15 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +addq %rbx,%r9 +adcq %rax,%r11 +adcq %rax,%r13 +adcq %rax,%r15 + +cmovc %rbx,%rax +addq %rax,%r9 + +movq %r9,352(%rsp) +movq %r11,360(%rsp) +movq %r13,368(%rsp) +movq %r15,376(%rsp) + +// mul +movq 328(%rsp),%rax +mulq 248(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 336(%rsp),%rax +mulq 240(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 344(%rsp),%rax +mulq 232(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 336(%rsp),%rax +mulq 248(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 344(%rsp),%rax +mulq 240(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 344(%rsp),%rax +mulq 248(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 320(%rsp),%rax +mulq 248(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 328(%rsp),%rax +mulq 240(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 336(%rsp),%rax +mulq 232(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 344(%rsp),%rax +mulq 224(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 320(%rsp),%rax +mulq 224(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 320(%rsp),%rax +mulq 232(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 328(%rsp),%rax +mulq 224(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 320(%rsp),%rax +mulq 240(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 328(%rsp),%rax +mulq 232(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 336(%rsp),%rax +mulq 224(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq 192(%rsp),%r9 +movq 200(%rsp),%r11 +movq 208(%rsp),%r13 +movq 216(%rsp),%r15 + +// double +addq %r9,%r9 +adcq %r11,%r11 +adcq %r13,%r13 +adcq %r15,%r15 + +movq $0,%rbx +movq $38,%rax +cmovae %rbx,%rax + +addq %rax,%r9 +adcq %rbx,%r11 +adcq %rbx,%r13 +adcq %rbx,%r15 + +cmovc %rax,%rbx +addq %rbx,%r9 + +// copy +movq %r9,%rsi +movq %r11,%rax +movq %r13,%rcx +movq %r15,%rdx + +// sub +subq %r8,%r9 +sbbq %r10,%r11 +sbbq %r12,%r13 +sbbq %r14,%r15 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r9 +sbbq %rbx,%r11 +sbbq %rbx,%r13 +sbbq %rbx,%r15 + +cmovc %rbp,%rbx +subq %rbx,%r9 + +movq %r9,448(%rsp) +movq %r11,456(%rsp) +movq %r13,464(%rsp) +movq %r15,472(%rsp) + +// add +addq %r8,%rsi +adcq %r10,%rax +adcq %r12,%rcx +adcq %r14,%rdx + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%rax +adcq %rbx,%rcx +adcq %rbx,%rdx + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,416(%rsp) +movq %rax,424(%rsp) +movq %rcx,432(%rsp) +movq %rdx,440(%rsp) + +/* p1p1 to p3 */ + +// convert to 10x4 form +vmovdqa 384(%rsp),%ymm8 +vmovdqa 352(%rsp),%ymm9 +vmovdqa 416(%rsp),%ymm10 +vmovdqa 352(%rsp),%ymm11 + +vpunpcklqdq %ymm9,%ymm8,%ymm12 +vpunpckhqdq %ymm9,%ymm8,%ymm13 +vpunpcklqdq %ymm11,%ymm10,%ymm14 +vpunpckhqdq %ymm11,%ymm10,%ymm15 + +vpermq $68,%ymm14,%ymm7 +vpblendd $240,%ymm7,%ymm12,%ymm1 +vpermq $68,%ymm15,%ymm7 +vpblendd $240,%ymm7,%ymm13,%ymm3 +vpermq $238,%ymm12,%ymm7 +vpblendd $240,%ymm14,%ymm7,%ymm5 +vpermq $238,%ymm13,%ymm7 +vpblendd $240,%ymm15,%ymm7,%ymm7 + +vpand pmask1(%rip),%ymm1,%ymm0 + +vpand pmask2(%rip),%ymm1,%ymm11 +vpsrlq $26,%ymm11,%ymm11 + +vpand pmask3(%rip),%ymm1,%ymm2 +vpsrlq $51,%ymm2,%ymm2 +vpand pmask4(%rip),%ymm3,%ymm9 +vpsllq $13,%ymm9,%ymm9 +vpor %ymm9,%ymm2,%ymm2 + +vpand pmask5(%rip),%ymm3,%ymm12 +vpsrlq $13,%ymm12,%ymm12 + +vpand pmask6(%rip),%ymm3,%ymm4 +vpsrlq $38,%ymm4,%ymm4 + +vpand pmask7(%rip),%ymm5,%ymm13 + +vpand pmask8(%rip),%ymm5,%ymm6 +vpsrlq $25,%ymm6,%ymm6 + +vpand pmask9(%rip),%ymm5,%ymm14 +vpsrlq $51,%ymm14,%ymm14 +vpand pmask10(%rip),%ymm7,%ymm9 +vpsllq $13,%ymm9,%ymm9 +vpor %ymm9,%ymm14,%ymm14 + +vpand pmask11(%rip),%ymm7,%ymm8 +vpsrlq $12,%ymm8,%ymm8 + +vpand pmask12(%rip),%ymm7,%ymm15 +vpsrlq $38,%ymm15,%ymm15 + +vmovdqa %ymm0,480(%rsp) +vmovdqa %ymm11,512(%rsp) +vmovdqa %ymm2,544(%rsp) +vmovdqa %ymm12,576(%rsp) +vmovdqa %ymm4,608(%rsp) +vmovdqa %ymm13,640(%rsp) +vmovdqa %ymm6,672(%rsp) +vmovdqa %ymm14,704(%rsp) +vmovdqa %ymm8,736(%rsp) +vmovdqa %ymm15,768(%rsp) + +// convert to 10x4 form +vmovdqa 448(%rsp),%ymm8 +vmovdqa 416(%rsp),%ymm9 +vmovdqa 448(%rsp),%ymm10 +vmovdqa 384(%rsp),%ymm11 + +vpunpcklqdq %ymm9,%ymm8,%ymm12 +vpunpckhqdq %ymm9,%ymm8,%ymm13 +vpunpcklqdq %ymm11,%ymm10,%ymm14 +vpunpckhqdq %ymm11,%ymm10,%ymm15 + +vpermq $68,%ymm14,%ymm7 +vpblendd $240,%ymm7,%ymm12,%ymm10 +vpermq $68,%ymm15,%ymm7 +vpblendd $240,%ymm7,%ymm13,%ymm11 +vpermq $238,%ymm12,%ymm7 +vpblendd $240,%ymm14,%ymm7,%ymm12 +vpermq $238,%ymm13,%ymm7 +vpblendd $240,%ymm15,%ymm7,%ymm13 + +vpand pmask1(%rip),%ymm10,%ymm0 + +vpand pmask2(%rip),%ymm10,%ymm1 +vpsrlq $26,%ymm1,%ymm1 + +vpand pmask3(%rip),%ymm10,%ymm2 +vpsrlq $51,%ymm2,%ymm2 +vpand pmask4(%rip),%ymm11,%ymm3 +vpsllq $13,%ymm3,%ymm3 +vpor %ymm3,%ymm2,%ymm2 + +vpand pmask5(%rip),%ymm11,%ymm3 +vpsrlq $13,%ymm3,%ymm3 + +vpand pmask6(%rip),%ymm11,%ymm4 +vpsrlq $38,%ymm4,%ymm4 + +vpand pmask7(%rip),%ymm12,%ymm5 + +vpand pmask8(%rip),%ymm12,%ymm6 +vpsrlq $25,%ymm6,%ymm6 + +vpand pmask9(%rip),%ymm12,%ymm7 +vpsrlq $51,%ymm7,%ymm7 +vpand pmask10(%rip),%ymm13,%ymm8 +vpsllq $13,%ymm8,%ymm8 +vpor %ymm8,%ymm7,%ymm7 + +vpand pmask11(%rip),%ymm13,%ymm8 +vpsrlq $12,%ymm8,%ymm8 + +vpand pmask12(%rip),%ymm13,%ymm9 +vpsrlq $38,%ymm9,%ymm9 + +vmovdqa %ymm0,800(%rsp) +vmovdqa %ymm1,832(%rsp) +vmovdqa %ymm2,864(%rsp) +vmovdqa %ymm3,896(%rsp) +vmovdqa %ymm4,928(%rsp) +vmovdqa %ymm5,960(%rsp) +vmovdqa %ymm6,992(%rsp) +vmovdqa %ymm7,1024(%rsp) +vmovdqa %ymm8,1056(%rsp) +vmovdqa %ymm9,1088(%rsp) + +// mul4x1 +vmovdqa 512(%rsp),%ymm11 +vmovdqa 576(%rsp),%ymm12 +vmovdqa 640(%rsp),%ymm13 +vmovdqa 704(%rsp),%ymm14 +vmovdqa 768(%rsp),%ymm15 + +vpaddq %ymm11,%ymm11,%ymm11 +vpaddq %ymm12,%ymm12,%ymm12 +vpaddq %ymm13,%ymm13,%ymm13 +vpaddq %ymm14,%ymm14,%ymm14 +vpaddq %ymm15,%ymm15,%ymm15 + +vpmuludq vec19(%rip),%ymm1,%ymm1 +vpmuludq vec19(%rip),%ymm2,%ymm2 +vpmuludq vec19(%rip),%ymm3,%ymm3 +vpmuludq vec19(%rip),%ymm4,%ymm4 +vpmuludq vec19(%rip),%ymm5,%ymm5 +vpmuludq vec19(%rip),%ymm6,%ymm6 +vpmuludq vec19(%rip),%ymm7,%ymm7 +vpmuludq vec19(%rip),%ymm8,%ymm8 +vpmuludq vec19(%rip),%ymm9,%ymm9 + +vpmuludq %ymm15,%ymm1,%ymm0 +vpmuludq %ymm14,%ymm3,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm13,%ymm5,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm12,%ymm7,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm11,%ymm9,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 736(%rsp),%ymm2,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 672(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 608(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 544(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 + +vpmuludq 768(%rsp),%ymm2,%ymm1 +vpmuludq 736(%rsp),%ymm3,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 704(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 672(%rsp),%ymm5,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 640(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 608(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 576(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 544(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 + +vpmuludq %ymm15,%ymm3,%ymm2 +vpmuludq %ymm14,%ymm5,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq %ymm13,%ymm7,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq %ymm12,%ymm9,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 736(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 672(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 608(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 832(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 + +vpmuludq 768(%rsp),%ymm4,%ymm3 +vpmuludq 736(%rsp),%ymm5,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 704(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 672(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 640(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 608(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 + +vpmuludq %ymm15,%ymm5,%ymm4 +vpmuludq %ymm14,%ymm7,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq %ymm13,%ymm9,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 736(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 672(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 832(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 896(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 + +vpmuludq 768(%rsp),%ymm6,%ymm5 +vpmuludq 736(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 704(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 672(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 + +vpmuludq %ymm15,%ymm7,%ymm6 +vpmuludq %ymm14,%ymm9,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 736(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 832(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 896(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 960(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 768(%rsp),%ymm8,%ymm7 +vpmuludq 736(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq %ymm15,%ymm9,%ymm8 +vpmuludq 832(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 896(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 960(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 1024(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vmovdqa 480(%rsp),%ymm11 +vmovdqa 512(%rsp),%ymm12 +vmovdqa 544(%rsp),%ymm13 +vmovdqa 576(%rsp),%ymm14 +vmovdqa 608(%rsp),%ymm15 +vmovdqa 640(%rsp),%ymm9 + +vpmuludq 800(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 + +vpmuludq 864(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 800(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 + +vpmuludq 896(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 864(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 832(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 800(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 + +vpmuludq 832(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 800(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 + +vpmuludq 928(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 864(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 800(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 + +vpmuludq 960(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 928(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 896(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 864(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 832(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 800(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 + +vpmuludq 992(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 928(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 864(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 1024(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 992(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 960(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 928(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 896(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 864(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq 1056(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 992(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 928(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vpmuludq 928(%rsp),%ymm9,%ymm9 +vpmuludq 1088(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 1056(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 1024(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 992(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 960(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 + +vmovdqa 672(%rsp),%ymm11 +vmovdqa 704(%rsp),%ymm12 +vmovdqa 736(%rsp),%ymm13 +vmovdqa 768(%rsp),%ymm14 + +vpmuludq 800(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 832(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 800(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq 864(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 800(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vpmuludq 896(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 864(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 832(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 800(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpand vecmask26(%rip),%ymm8,%ymm8 + +vpsrlq $25,%ymm9,%ymm10 +vpmuludq vec19(%rip),%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask25(%rip),%ymm9,%ymm9 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $25,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask25(%rip),%ymm1,%ymm1 + +vpsrlq $26,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpand vecmask26(%rip),%ymm2,%ymm2 + +vpsrlq $25,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask25(%rip),%ymm3,%ymm3 + +vpsrlq $26,%ymm4,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask26(%rip),%ymm4,%ymm4 + +vpsrlq $25,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm5,%ymm5 + +vpsrlq $26,%ymm6,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpand vecmask26(%rip),%ymm6,%ymm6 + +vpsrlq $25,%ymm7,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask25(%rip),%ymm7,%ymm7 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpand vecmask26(%rip),%ymm8,%ymm8 + +// get back to 4x4 form +vpand upmask1(%rip),%ymm0,%ymm10 +vpand upmask2(%rip),%ymm1,%ymm11 +vpsllq $26,%ymm11,%ymm11 +vpor %ymm10,%ymm11,%ymm10 +vpand upmask3(%rip),%ymm2,%ymm11 +vpsllq $51,%ymm11,%ymm11 +vpor %ymm10,%ymm11,%ymm10 + +vpand upmask4(%rip),%ymm2,%ymm11 +vpsrlq $13,%ymm11,%ymm11 +vpand upmask2(%rip),%ymm3,%ymm12 +vpsllq $13,%ymm12,%ymm12 +vpor %ymm11,%ymm12,%ymm11 +vpand upmask1(%rip),%ymm4,%ymm12 +vpsllq $38,%ymm12,%ymm12 +vpor %ymm11,%ymm12,%ymm11 + +vpand upmask2(%rip),%ymm5,%ymm12 +vpand upmask1(%rip),%ymm6,%ymm13 +vpsllq $25,%ymm13,%ymm13 +vpor %ymm12,%ymm13,%ymm12 +vpand upmask3(%rip),%ymm7,%ymm13 +vpsllq $51,%ymm13,%ymm13 +vpor %ymm12,%ymm13,%ymm12 + +vpand upmask5(%rip),%ymm7,%ymm13 +vpsrlq $13,%ymm13,%ymm13 +vpand upmask1(%rip),%ymm8,%ymm14 +vpsllq $12,%ymm14,%ymm14 +vpor %ymm13,%ymm14,%ymm13 +vpand upmask1(%rip),%ymm9,%ymm14 +vpsllq $38,%ymm14,%ymm14 +vpor %ymm13,%ymm14,%ymm13 + +vpunpcklqdq %ymm11,%ymm10,%ymm2 +vpunpckhqdq %ymm11,%ymm10,%ymm3 +vpunpcklqdq %ymm13,%ymm12,%ymm4 +vpunpckhqdq %ymm13,%ymm12,%ymm5 + +vpermq $68,%ymm4,%ymm7 +vpblendd $240,%ymm7,%ymm2,%ymm10 +vpermq $68,%ymm5,%ymm7 +vpblendd $240,%ymm7,%ymm3,%ymm11 +vpermq $238,%ymm2,%ymm7 +vpblendd $240,%ymm4,%ymm7,%ymm12 +vpermq $238,%ymm3,%ymm7 +vpblendd $240,%ymm5,%ymm7,%ymm13 + +vmovdqa %ymm10,128(%rsp) +vmovdqa %ymm11,160(%rsp) +vmovdqa %ymm12,192(%rsp) +vmovdqa %ymm13,224(%rsp) + +movq 80(%rsp),%r15 +addq $1,%r15 +movq %r15,80(%rsp) +cmpq $63,%r15 + +jle .L + +/* store final value of r */ + +movq 56(%rsp),%rdi + +movq 128(%rsp),%r8 +movq 136(%rsp),%r9 +movq 144(%rsp),%r10 +movq 152(%rsp),%r11 + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 160(%rsp),%r8 +movq 168(%rsp),%r9 +movq 176(%rsp),%r10 +movq 184(%rsp),%r11 + +movq %r8,32(%rdi) +movq %r9,40(%rdi) +movq %r10,48(%rdi) +movq %r11,56(%rdi) + +movq 192(%rsp),%r8 +movq 200(%rsp),%r9 +movq 208(%rsp),%r10 +movq 216(%rsp),%r11 + +movq %r8,64(%rdi) +movq %r9,72(%rdi) +movq %r10,80(%rdi) +movq %r11,88(%rdi) + +movq 224(%rsp),%r8 +movq 232(%rsp),%r9 +movq 240(%rsp),%r10 +movq 248(%rsp),%r11 + +movq %r8,96(%rdi) +movq %r9,104(%rdi) +movq %r10,112(%rdi) +movq %r11,120(%rdi) + +movq 0(%rsp), %r11 +movq 8(%rsp), %r12 +movq 16(%rsp), %r13 +movq 24(%rsp), %r14 +movq 32(%rsp), %r15 +movq 40(%rsp), %rbx +movq 48(%rsp), %rbp + +movq %r11, %rsp + +ret diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/ge25519_base_niels.data b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/ge25519_base_niels.data new file mode 120000 index 0000000000..a9e965b8ac --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/ge25519_base_niels.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_niels.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/ge25519_scalarmult_base.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/ge25519_scalarmult_base.c new file mode 120000 index 0000000000..b77a6e2f45 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/ge25519_scalarmult_base.c @@ -0,0 +1 @@ +../amd64-maa4/ge25519_scalarmult_base.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/implementors b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/implementors new file mode 120000 index 0000000000..7c9c13e712 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/implementors @@ -0,0 +1 @@ +../amd64-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/nG.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/nG.c new file mode 120000 index 0000000000..3979d79b05 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/nG.c @@ -0,0 +1 @@ +../amd64-51/nG.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/sc25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/sc25519_window4.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/sc25519_window4.c new file mode 120000 index 0000000000..b54931e1bf --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/sc25519_window4.c @@ -0,0 +1 @@ +../amd64-51/sc25519_window4.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/shared-base-data.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/shared-base-data.c new file mode 120000 index 0000000000..c8311fd6f9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/shared-base-data.c @@ -0,0 +1 @@ +../amd64-64/shared-base-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/shared-consts.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/shared-consts.c new file mode 120000 index 0000000000..445c223c4e --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maa4/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx2-10l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/architectures b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/architectures new file mode 120000 index 0000000000..fc4b638d1f --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx2-9l-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/consts_namespace.h new file mode 120000 index 0000000000..3d99ebeda8 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-10l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519.h new file mode 120000 index 0000000000..d0a29945e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_add.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_add.S new file mode 120000 index 0000000000..d4acd5b571 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_add.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_cmov.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_cmov.c new file mode 120000 index 0000000000..b0f28207ef --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_cmov.c @@ -0,0 +1 @@ +../amd64-64/fe25519_cmov.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_getparity.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_getparity.c new file mode 120000 index 0000000000..c23ba9ce3d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_getparity.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_sub.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_sub.S new file mode 120000 index 0000000000..8458eb6750 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_sub.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/ge25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/ge25519.h new file mode 120000 index 0000000000..7630019869 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/ge25519.h @@ -0,0 +1 @@ +../amd64-maa4/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/ge25519_base.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/ge25519_base.S new file mode 100644 index 0000000000..a940d2728c --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/ge25519_base.S @@ -0,0 +1,1774 @@ +// linker define base +// linker use vec19 +// linker use vecmask25 +// linker use vecmask26 +// linker use pmask1 +// linker use pmask2 +// linker use pmask3 +// linker use pmask4 +// linker use pmask5 +// linker use pmask6 +// linker use pmask7 +// linker use pmask8 +// linker use pmask9 +// linker use pmask10 +// linker use pmask11 +// linker use pmask12 +// linker use upmask1 +// linker use upmask2 +// linker use upmask3 +// linker use upmask4 +// linker use upmask5 +// linker use mask63 + +/* Assembly for fixed base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(base) +.globl CRYPTO_SHARED_NAMESPACE(base) +_CRYPTO_SHARED_NAMESPACE(base): +CRYPTO_SHARED_NAMESPACE(base): + +movq %rsp,%r11 +andq $-32,%rsp +subq $1120,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) +movq %rsi,64(%rsp) +movq %rdx,72(%rsp) + +/* choose t and initialize r */ + +movq %rdx,%rcx +movzbl 0(%rsi),%eax +movsbq %al,%rdx +movq $0,%rsi + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %r11,%r15 +movq %r12,80(%rsp) +movq %r13,88(%rsp) +movq %r14,96(%rsp) + +// sub +subq %rsi,%r11 +sbbq %r9,%r12 +sbbq %rax,%r13 +sbbq %r10,%r14 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r11 +sbbq %rbx,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 + +cmovc %rbp,%rbx +subq %rbx,%r11 + +movq %r11,128(%rsp) +movq %r12,136(%rsp) +movq %r13,144(%rsp) +movq %r14,152(%rsp) + +// add +addq %r15,%rsi +adcq 80(%rsp),%r9 +adcq 88(%rsp),%rax +adcq 96(%rsp),%r10 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%r9 +adcq %rbx,%rax +adcq %rbx,%r10 + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,160(%rsp) +movq %r9,168(%rsp) +movq %rax,176(%rsp) +movq %r10,184(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,224(%rsp) +movq %r9,232(%rsp) +movq %rax,240(%rsp) +movq %r10,248(%rsp) + +movq $2,192(%rsp) +movq $0,200(%rsp) +movq $0,208(%rsp) +movq $0,216(%rsp) + +/* loop: i=1,i<64,i=i+1 */ + +movq $1,80(%rsp) + +.L: + +/* choose t */ + +movq 72(%rsp),%rcx +movq 80(%rsp),%rsi +movq 64(%rsp),%rdx +movzbl 0(%rdx,%rsi),%eax +movsbq %al,%rdx + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %rsi,256(%rsp) +movq %r9,264(%rsp) +movq %rax,272(%rsp) +movq %r10,280(%rsp) +movq %r11,288(%rsp) +movq %r12,296(%rsp) +movq %r13,304(%rsp) +movq %r14,312(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,320(%rsp) +movq %r9,328(%rsp) +movq %rax,336(%rsp) +movq %r10,344(%rsp) + +/* nielsadd2 */ + +// load +movq 160(%rsp),%rdx +movq 168(%rsp),%rcx +movq 176(%rsp),%r8 +movq 184(%rsp),%r9 + +// copy +movq %rdx,%rax +movq %rcx,%r10 +movq %r8,%r11 +movq %r9,%r12 + +// sub +subq 128(%rsp),%rdx +sbbq 136(%rsp),%rcx +sbbq 144(%rsp),%r8 +sbbq 152(%rsp),%r9 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +subq %r14,%rdx +sbbq %r13,%rcx +sbbq %r13,%r8 +sbbq %r13,%r9 + +cmovc %r14,%r13 +subq %r13,%rdx + +movq %rdx,352(%rsp) +movq %rcx,360(%rsp) +movq %r8,368(%rsp) +movq %r9,376(%rsp) + +// add +addq 128(%rsp),%rax +adcq 136(%rsp),%r10 +adcq 144(%rsp),%r11 +adcq 152(%rsp),%r12 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +addq %r14,%rax +adcq %r13,%r10 +adcq %r13,%r11 +adcq %r13,%r12 + +cmovc %r14,%r13 +addq %r13,%rax + +movq %rax,384(%rsp) +movq %r10,392(%rsp) +movq %r11,400(%rsp) +movq %r12,408(%rsp) + +// mul +xorq %r13,%r13 +movq 256(%rsp),%rdx + +mulx 352(%rsp),%r8,%r9 +mulx 360(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 368(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 376(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 264(%rsp),%rdx + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 272(%rsp),%rdx + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 280(%rsp),%rdx + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,352(%rsp) +movq %r9,360(%rsp) +movq %r10,368(%rsp) +movq %r11,376(%rsp) + +// mul +xorq %r13,%r13 +movq 288(%rsp),%rdx + +mulx 384(%rsp),%r8,%r9 +mulx 392(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 400(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 408(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 296(%rsp),%rdx + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 304(%rsp),%rdx + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 312(%rsp),%rdx + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// copy +movq %r8,%r12 +movq %r9,%r13 +movq %r10,%r14 +movq %r11,%r15 + +// sub +subq 352(%rsp),%r8 +sbbq 360(%rsp),%r9 +sbbq 368(%rsp),%r10 +sbbq 376(%rsp),%r11 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +subq %rbx,%r8 +sbbq %rax,%r9 +sbbq %rax,%r10 +sbbq %rax,%r11 + +cmovc %rbx,%rax +subq %rax,%r8 + +movq %r8,384(%rsp) +movq %r9,392(%rsp) +movq %r10,400(%rsp) +movq %r11,408(%rsp) + +// add +addq 352(%rsp),%r12 +adcq 360(%rsp),%r13 +adcq 368(%rsp),%r14 +adcq 376(%rsp),%r15 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +addq %rbx,%r12 +adcq %rax,%r13 +adcq %rax,%r14 +adcq %rax,%r15 + +cmovc %rbx,%rax +addq %rax,%r12 + +movq %r12,352(%rsp) +movq %r13,360(%rsp) +movq %r14,368(%rsp) +movq %r15,376(%rsp) + +// mul +xorq %r13,%r13 +movq 320(%rsp),%rdx + +mulx 224(%rsp),%r8,%r9 +mulx 232(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 240(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 248(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 328(%rsp),%rdx + +mulx 224(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 232(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 240(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 248(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 336(%rsp),%rdx + +mulx 224(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 232(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 240(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 248(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 344(%rsp),%rdx + +mulx 224(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 232(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 240(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 248(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq 192(%rsp),%r12 +movq 200(%rsp),%r13 +movq 208(%rsp),%r14 +movq 216(%rsp),%r15 + +// double +addq %r12,%r12 +adcq %r13,%r13 +adcq %r14,%r14 +adcq %r15,%r15 + +movq $0,%rbx +movq $38,%rax +cmovae %rbx,%rax + +addq %rax,%r12 +adcq %rbx,%r13 +adcq %rbx,%r14 +adcq %rbx,%r15 + +cmovc %rax,%rbx +addq %rbx,%r12 + +// copy +movq %r12,%rsi +movq %r13,%rax +movq %r14,%rcx +movq %r15,%rdx + +// sub +subq %r8,%r12 +sbbq %r9,%r13 +sbbq %r10,%r14 +sbbq %r11,%r15 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 +sbbq %rbx,%r15 + +cmovc %rbp,%rbx +subq %rbx,%r12 + +movq %r12,448(%rsp) +movq %r13,456(%rsp) +movq %r14,464(%rsp) +movq %r15,472(%rsp) + +// add +addq %r8,%rsi +adcq %r9,%rax +adcq %r10,%rcx +adcq %r11,%rdx + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%rax +adcq %rbx,%rcx +adcq %rbx,%rdx + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,416(%rsp) +movq %rax,424(%rsp) +movq %rcx,432(%rsp) +movq %rdx,440(%rsp) + +/* p1p1 to p3 */ + +// convert to 10x4 form +vmovdqa 384(%rsp),%ymm8 +vmovdqa 352(%rsp),%ymm9 +vmovdqa 416(%rsp),%ymm10 +vmovdqa 352(%rsp),%ymm11 + +vpunpcklqdq %ymm9,%ymm8,%ymm12 +vpunpckhqdq %ymm9,%ymm8,%ymm13 +vpunpcklqdq %ymm11,%ymm10,%ymm14 +vpunpckhqdq %ymm11,%ymm10,%ymm15 + +vpermq $68,%ymm14,%ymm7 +vpblendd $240,%ymm7,%ymm12,%ymm1 +vpermq $68,%ymm15,%ymm7 +vpblendd $240,%ymm7,%ymm13,%ymm3 +vpermq $238,%ymm12,%ymm7 +vpblendd $240,%ymm14,%ymm7,%ymm5 +vpermq $238,%ymm13,%ymm7 +vpblendd $240,%ymm15,%ymm7,%ymm7 + +vpand pmask1(%rip),%ymm1,%ymm0 + +vpand pmask2(%rip),%ymm1,%ymm11 +vpsrlq $26,%ymm11,%ymm11 + +vpand pmask3(%rip),%ymm1,%ymm2 +vpsrlq $51,%ymm2,%ymm2 +vpand pmask4(%rip),%ymm3,%ymm9 +vpsllq $13,%ymm9,%ymm9 +vpor %ymm9,%ymm2,%ymm2 + +vpand pmask5(%rip),%ymm3,%ymm12 +vpsrlq $13,%ymm12,%ymm12 + +vpand pmask6(%rip),%ymm3,%ymm4 +vpsrlq $38,%ymm4,%ymm4 + +vpand pmask7(%rip),%ymm5,%ymm13 + +vpand pmask8(%rip),%ymm5,%ymm6 +vpsrlq $25,%ymm6,%ymm6 + +vpand pmask9(%rip),%ymm5,%ymm14 +vpsrlq $51,%ymm14,%ymm14 +vpand pmask10(%rip),%ymm7,%ymm9 +vpsllq $13,%ymm9,%ymm9 +vpor %ymm9,%ymm14,%ymm14 + +vpand pmask11(%rip),%ymm7,%ymm8 +vpsrlq $12,%ymm8,%ymm8 + +vpand pmask12(%rip),%ymm7,%ymm15 +vpsrlq $38,%ymm15,%ymm15 + +vmovdqa %ymm0,480(%rsp) +vmovdqa %ymm11,512(%rsp) +vmovdqa %ymm2,544(%rsp) +vmovdqa %ymm12,576(%rsp) +vmovdqa %ymm4,608(%rsp) +vmovdqa %ymm13,640(%rsp) +vmovdqa %ymm6,672(%rsp) +vmovdqa %ymm14,704(%rsp) +vmovdqa %ymm8,736(%rsp) +vmovdqa %ymm15,768(%rsp) + +// convert to 10x4 form +vmovdqa 448(%rsp),%ymm8 +vmovdqa 416(%rsp),%ymm9 +vmovdqa 448(%rsp),%ymm10 +vmovdqa 384(%rsp),%ymm11 + +vpunpcklqdq %ymm9,%ymm8,%ymm12 +vpunpckhqdq %ymm9,%ymm8,%ymm13 +vpunpcklqdq %ymm11,%ymm10,%ymm14 +vpunpckhqdq %ymm11,%ymm10,%ymm15 + +vpermq $68,%ymm14,%ymm7 +vpblendd $240,%ymm7,%ymm12,%ymm10 +vpermq $68,%ymm15,%ymm7 +vpblendd $240,%ymm7,%ymm13,%ymm11 +vpermq $238,%ymm12,%ymm7 +vpblendd $240,%ymm14,%ymm7,%ymm12 +vpermq $238,%ymm13,%ymm7 +vpblendd $240,%ymm15,%ymm7,%ymm13 + +vpand pmask1(%rip),%ymm10,%ymm0 + +vpand pmask2(%rip),%ymm10,%ymm1 +vpsrlq $26,%ymm1,%ymm1 + +vpand pmask3(%rip),%ymm10,%ymm2 +vpsrlq $51,%ymm2,%ymm2 +vpand pmask4(%rip),%ymm11,%ymm3 +vpsllq $13,%ymm3,%ymm3 +vpor %ymm3,%ymm2,%ymm2 + +vpand pmask5(%rip),%ymm11,%ymm3 +vpsrlq $13,%ymm3,%ymm3 + +vpand pmask6(%rip),%ymm11,%ymm4 +vpsrlq $38,%ymm4,%ymm4 + +vpand pmask7(%rip),%ymm12,%ymm5 + +vpand pmask8(%rip),%ymm12,%ymm6 +vpsrlq $25,%ymm6,%ymm6 + +vpand pmask9(%rip),%ymm12,%ymm7 +vpsrlq $51,%ymm7,%ymm7 +vpand pmask10(%rip),%ymm13,%ymm8 +vpsllq $13,%ymm8,%ymm8 +vpor %ymm8,%ymm7,%ymm7 + +vpand pmask11(%rip),%ymm13,%ymm8 +vpsrlq $12,%ymm8,%ymm8 + +vpand pmask12(%rip),%ymm13,%ymm9 +vpsrlq $38,%ymm9,%ymm9 + +vmovdqa %ymm0,800(%rsp) +vmovdqa %ymm1,832(%rsp) +vmovdqa %ymm2,864(%rsp) +vmovdqa %ymm3,896(%rsp) +vmovdqa %ymm4,928(%rsp) +vmovdqa %ymm5,960(%rsp) +vmovdqa %ymm6,992(%rsp) +vmovdqa %ymm7,1024(%rsp) +vmovdqa %ymm8,1056(%rsp) +vmovdqa %ymm9,1088(%rsp) + +// mul4x1 +vmovdqa 512(%rsp),%ymm11 +vmovdqa 576(%rsp),%ymm12 +vmovdqa 640(%rsp),%ymm13 +vmovdqa 704(%rsp),%ymm14 +vmovdqa 768(%rsp),%ymm15 + +vpaddq %ymm11,%ymm11,%ymm11 +vpaddq %ymm12,%ymm12,%ymm12 +vpaddq %ymm13,%ymm13,%ymm13 +vpaddq %ymm14,%ymm14,%ymm14 +vpaddq %ymm15,%ymm15,%ymm15 + +vpmuludq vec19(%rip),%ymm1,%ymm1 +vpmuludq vec19(%rip),%ymm2,%ymm2 +vpmuludq vec19(%rip),%ymm3,%ymm3 +vpmuludq vec19(%rip),%ymm4,%ymm4 +vpmuludq vec19(%rip),%ymm5,%ymm5 +vpmuludq vec19(%rip),%ymm6,%ymm6 +vpmuludq vec19(%rip),%ymm7,%ymm7 +vpmuludq vec19(%rip),%ymm8,%ymm8 +vpmuludq vec19(%rip),%ymm9,%ymm9 + +vpmuludq %ymm15,%ymm1,%ymm0 +vpmuludq %ymm14,%ymm3,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm13,%ymm5,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm12,%ymm7,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm11,%ymm9,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 736(%rsp),%ymm2,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 672(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 608(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 544(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 + +vpmuludq 768(%rsp),%ymm2,%ymm1 +vpmuludq 736(%rsp),%ymm3,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 704(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 672(%rsp),%ymm5,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 640(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 608(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 576(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 544(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 + +vpmuludq %ymm15,%ymm3,%ymm2 +vpmuludq %ymm14,%ymm5,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq %ymm13,%ymm7,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq %ymm12,%ymm9,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 736(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 672(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 608(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 832(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 + +vpmuludq 768(%rsp),%ymm4,%ymm3 +vpmuludq 736(%rsp),%ymm5,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 704(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 672(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 640(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 608(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 + +vpmuludq %ymm15,%ymm5,%ymm4 +vpmuludq %ymm14,%ymm7,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq %ymm13,%ymm9,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 736(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 672(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 832(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 896(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 + +vpmuludq 768(%rsp),%ymm6,%ymm5 +vpmuludq 736(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 704(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 672(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 + +vpmuludq %ymm15,%ymm7,%ymm6 +vpmuludq %ymm14,%ymm9,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 736(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 832(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 896(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 960(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 768(%rsp),%ymm8,%ymm7 +vpmuludq 736(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq %ymm15,%ymm9,%ymm8 +vpmuludq 832(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 896(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 960(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 1024(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vmovdqa 480(%rsp),%ymm11 +vmovdqa 512(%rsp),%ymm12 +vmovdqa 544(%rsp),%ymm13 +vmovdqa 576(%rsp),%ymm14 +vmovdqa 608(%rsp),%ymm15 +vmovdqa 640(%rsp),%ymm9 + +vpmuludq 800(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 + +vpmuludq 864(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 800(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 + +vpmuludq 896(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 864(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 832(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 800(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 + +vpmuludq 832(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 800(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 + +vpmuludq 928(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 864(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 800(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 + +vpmuludq 960(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 928(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 896(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 864(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 832(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 800(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 + +vpmuludq 992(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 928(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 864(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 1024(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 992(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 960(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 928(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 896(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 864(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq 1056(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 992(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 928(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vpmuludq 928(%rsp),%ymm9,%ymm9 +vpmuludq 1088(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 1056(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 1024(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 992(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 960(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 + +vmovdqa 672(%rsp),%ymm11 +vmovdqa 704(%rsp),%ymm12 +vmovdqa 736(%rsp),%ymm13 +vmovdqa 768(%rsp),%ymm14 + +vpmuludq 800(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 832(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 800(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq 864(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 800(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vpmuludq 896(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 864(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 832(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 800(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpand vecmask26(%rip),%ymm8,%ymm8 + +vpsrlq $25,%ymm9,%ymm10 +vpmuludq vec19(%rip),%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask25(%rip),%ymm9,%ymm9 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $25,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask25(%rip),%ymm1,%ymm1 + +vpsrlq $26,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpand vecmask26(%rip),%ymm2,%ymm2 + +vpsrlq $25,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask25(%rip),%ymm3,%ymm3 + +vpsrlq $26,%ymm4,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask26(%rip),%ymm4,%ymm4 + +vpsrlq $25,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm5,%ymm5 + +vpsrlq $26,%ymm6,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpand vecmask26(%rip),%ymm6,%ymm6 + +vpsrlq $25,%ymm7,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask25(%rip),%ymm7,%ymm7 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpand vecmask26(%rip),%ymm8,%ymm8 + +// get back to 4x4 form +vpand upmask1(%rip),%ymm0,%ymm10 +vpand upmask2(%rip),%ymm1,%ymm11 +vpsllq $26,%ymm11,%ymm11 +vpor %ymm10,%ymm11,%ymm10 +vpand upmask3(%rip),%ymm2,%ymm11 +vpsllq $51,%ymm11,%ymm11 +vpor %ymm10,%ymm11,%ymm10 + +vpand upmask4(%rip),%ymm2,%ymm11 +vpsrlq $13,%ymm11,%ymm11 +vpand upmask2(%rip),%ymm3,%ymm12 +vpsllq $13,%ymm12,%ymm12 +vpor %ymm11,%ymm12,%ymm11 +vpand upmask1(%rip),%ymm4,%ymm12 +vpsllq $38,%ymm12,%ymm12 +vpor %ymm11,%ymm12,%ymm11 + +vpand upmask2(%rip),%ymm5,%ymm12 +vpand upmask1(%rip),%ymm6,%ymm13 +vpsllq $25,%ymm13,%ymm13 +vpor %ymm12,%ymm13,%ymm12 +vpand upmask3(%rip),%ymm7,%ymm13 +vpsllq $51,%ymm13,%ymm13 +vpor %ymm12,%ymm13,%ymm12 + +vpand upmask5(%rip),%ymm7,%ymm13 +vpsrlq $13,%ymm13,%ymm13 +vpand upmask1(%rip),%ymm8,%ymm14 +vpsllq $12,%ymm14,%ymm14 +vpor %ymm13,%ymm14,%ymm13 +vpand upmask1(%rip),%ymm9,%ymm14 +vpsllq $38,%ymm14,%ymm14 +vpor %ymm13,%ymm14,%ymm13 + +vpunpcklqdq %ymm11,%ymm10,%ymm2 +vpunpckhqdq %ymm11,%ymm10,%ymm3 +vpunpcklqdq %ymm13,%ymm12,%ymm4 +vpunpckhqdq %ymm13,%ymm12,%ymm5 + +vpermq $68,%ymm4,%ymm7 +vpblendd $240,%ymm7,%ymm2,%ymm10 +vpermq $68,%ymm5,%ymm7 +vpblendd $240,%ymm7,%ymm3,%ymm11 +vpermq $238,%ymm2,%ymm7 +vpblendd $240,%ymm4,%ymm7,%ymm12 +vpermq $238,%ymm3,%ymm7 +vpblendd $240,%ymm5,%ymm7,%ymm13 + +vmovdqa %ymm10,128(%rsp) +vmovdqa %ymm11,160(%rsp) +vmovdqa %ymm12,192(%rsp) +vmovdqa %ymm13,224(%rsp) + +movq 80(%rsp),%r15 +addq $1,%r15 +movq %r15,80(%rsp) +cmpq $63,%r15 + +jle .L + +/* store final value of r */ + +movq 56(%rsp),%rdi + +movq 128(%rsp),%r8 +movq 136(%rsp),%r9 +movq 144(%rsp),%r10 +movq 152(%rsp),%r11 + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 160(%rsp),%r8 +movq 168(%rsp),%r9 +movq 176(%rsp),%r10 +movq 184(%rsp),%r11 + +movq %r8,32(%rdi) +movq %r9,40(%rdi) +movq %r10,48(%rdi) +movq %r11,56(%rdi) + +movq 192(%rsp),%r8 +movq 200(%rsp),%r9 +movq 208(%rsp),%r10 +movq 216(%rsp),%r11 + +movq %r8,64(%rdi) +movq %r9,72(%rdi) +movq %r10,80(%rdi) +movq %r11,88(%rdi) + +movq 224(%rsp),%r8 +movq 232(%rsp),%r9 +movq 240(%rsp),%r10 +movq 248(%rsp),%r11 + +movq %r8,96(%rdi) +movq %r9,104(%rdi) +movq %r10,112(%rdi) +movq %r11,120(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/ge25519_base_niels.data b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/ge25519_base_niels.data new file mode 120000 index 0000000000..a9e965b8ac --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/ge25519_base_niels.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_niels.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/ge25519_scalarmult_base.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/ge25519_scalarmult_base.c new file mode 120000 index 0000000000..b77a6e2f45 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/ge25519_scalarmult_base.c @@ -0,0 +1 @@ +../amd64-maa4/ge25519_scalarmult_base.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/implementors b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/implementors new file mode 120000 index 0000000000..7c9c13e712 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/implementors @@ -0,0 +1 @@ +../amd64-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/nG.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/nG.c new file mode 120000 index 0000000000..3979d79b05 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/nG.c @@ -0,0 +1 @@ +../amd64-51/nG.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/sc25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/sc25519_window4.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/sc25519_window4.c new file mode 120000 index 0000000000..b54931e1bf --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/sc25519_window4.c @@ -0,0 +1 @@ +../amd64-51/sc25519_window4.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/shared-base-data.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/shared-base-data.c new file mode 120000 index 0000000000..c8311fd6f9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/shared-base-data.c @@ -0,0 +1 @@ +../amd64-64/shared-base-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/shared-consts.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/shared-consts.c new file mode 120000 index 0000000000..445c223c4e --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-maax/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx2-10l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/architectures b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/consts_namespace.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/consts_namespace.h new file mode 120000 index 0000000000..3d99ebeda8 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-10l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519.h new file mode 120000 index 0000000000..916a9e3b36 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_add.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_add.S new file mode 120000 index 0000000000..d4acd5b571 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_add.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_cmov.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_cmov.c new file mode 120000 index 0000000000..b0f28207ef --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_cmov.c @@ -0,0 +1 @@ +../amd64-64/fe25519_cmov.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_freeze.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_getparity.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_getparity.c new file mode 120000 index 0000000000..c23ba9ce3d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_getparity.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_invert.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_mul.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_mul.S new file mode 120000 index 0000000000..79e7adffa9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_nsquare.S new file mode 120000 index 0000000000..1aef6b0983 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_pack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_sub.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_sub.S new file mode 120000 index 0000000000..8458eb6750 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_sub.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_unpack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/ge25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/ge25519.h new file mode 120000 index 0000000000..7630019869 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/ge25519.h @@ -0,0 +1 @@ +../amd64-maa4/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/ge25519_base.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/ge25519_base.S new file mode 100644 index 0000000000..4346f466b5 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/ge25519_base.S @@ -0,0 +1,1759 @@ +// linker define base +// linker use vec19 +// linker use vecmask25 +// linker use vecmask26 +// linker use pmask1 +// linker use pmask2 +// linker use pmask3 +// linker use pmask4 +// linker use pmask5 +// linker use pmask6 +// linker use pmask7 +// linker use pmask8 +// linker use pmask9 +// linker use pmask10 +// linker use pmask11 +// linker use pmask12 +// linker use upmask1 +// linker use upmask2 +// linker use upmask3 +// linker use upmask4 +// linker use upmask5 +// linker use mask63 + +/* Assembly for fixed base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(base) +.globl CRYPTO_SHARED_NAMESPACE(base) +_CRYPTO_SHARED_NAMESPACE(base): +CRYPTO_SHARED_NAMESPACE(base): + +movq %rsp,%r11 +andq $-32,%rsp +subq $1120,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) +movq %rsi,64(%rsp) +movq %rdx,72(%rsp) + +/* choose t and initialize r */ + +movq %rdx,%rcx +movzbl 0(%rsi),%eax +movsbq %al,%rdx +movq $0,%rsi + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %r11,%r15 +movq %r12,80(%rsp) +movq %r13,88(%rsp) +movq %r14,96(%rsp) + +// sub +subq %rsi,%r11 +sbbq %r9,%r12 +sbbq %rax,%r13 +sbbq %r10,%r14 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r11 +sbbq %rbx,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 + +cmovc %rbp,%rbx +subq %rbx,%r11 + +movq %r11,128(%rsp) +movq %r12,136(%rsp) +movq %r13,144(%rsp) +movq %r14,152(%rsp) + +// add +addq %r15,%rsi +adcq 80(%rsp),%r9 +adcq 88(%rsp),%rax +adcq 96(%rsp),%r10 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%r9 +adcq %rbx,%rax +adcq %rbx,%r10 + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,160(%rsp) +movq %r9,168(%rsp) +movq %rax,176(%rsp) +movq %r10,184(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,224(%rsp) +movq %r9,232(%rsp) +movq %rax,240(%rsp) +movq %r10,248(%rsp) + +movq $2,192(%rsp) +movq $0,200(%rsp) +movq $0,208(%rsp) +movq $0,216(%rsp) + +/* loop: i=1,i<64,i=i+1 */ + +movq $1,80(%rsp) + +.L: + +/* choose t */ + +movq 72(%rsp),%rcx +movq 80(%rsp),%rsi +movq 64(%rsp),%rdx +movzbl 0(%rdx,%rsi),%eax +movsbq %al,%rdx + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %rsi,256(%rsp) +movq %r9,264(%rsp) +movq %rax,272(%rsp) +movq %r10,280(%rsp) +movq %r11,288(%rsp) +movq %r12,296(%rsp) +movq %r13,304(%rsp) +movq %r14,312(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,320(%rsp) +movq %r9,328(%rsp) +movq %rax,336(%rsp) +movq %r10,344(%rsp) + +/* nielsadd2 */ + +// load +movq 160(%rsp),%rdx +movq 168(%rsp),%rcx +movq 176(%rsp),%r8 +movq 184(%rsp),%r9 + +// copy +movq %rdx,%rax +movq %rcx,%r10 +movq %r8,%r11 +movq %r9,%r12 + +// sub +subq 128(%rsp),%rdx +sbbq 136(%rsp),%rcx +sbbq 144(%rsp),%r8 +sbbq 152(%rsp),%r9 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +subq %r14,%rdx +sbbq %r13,%rcx +sbbq %r13,%r8 +sbbq %r13,%r9 + +cmovc %r14,%r13 +subq %r13,%rdx + +movq %rdx,352(%rsp) +movq %rcx,360(%rsp) +movq %r8,368(%rsp) +movq %r9,376(%rsp) + +// add +addq 128(%rsp),%rax +adcq 136(%rsp),%r10 +adcq 144(%rsp),%r11 +adcq 152(%rsp),%r12 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +addq %r14,%rax +adcq %r13,%r10 +adcq %r13,%r11 +adcq %r13,%r12 + +cmovc %r14,%r13 +addq %r13,%rax + +movq %rax,384(%rsp) +movq %r10,392(%rsp) +movq %r11,400(%rsp) +movq %r12,408(%rsp) + +// mul +movq 256(%rsp),%rdx + +mulx 352(%rsp),%r8,%r9 +mulx 360(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 368(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 376(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 264(%rsp),%rdx + +mulx 352(%rsp),%rax,%rbx +mulx 360(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 368(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 376(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 272(%rsp),%rdx + +mulx 352(%rsp),%rax,%rbx +mulx 360(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 368(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 376(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 280(%rsp),%rdx + +mulx 352(%rsp),%rax,%rbx +mulx 360(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 368(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 376(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,352(%rsp) +movq %r9,360(%rsp) +movq %r10,368(%rsp) +movq %r11,376(%rsp) + +// mul +movq 288(%rsp),%rdx + +mulx 384(%rsp),%r8,%r9 +mulx 392(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 400(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 408(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 296(%rsp),%rdx + +mulx 384(%rsp),%rax,%rbx +mulx 392(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 400(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 408(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 304(%rsp),%rdx + +mulx 384(%rsp),%rax,%rbx +mulx 392(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 400(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 408(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 312(%rsp),%rdx + +mulx 384(%rsp),%rax,%rbx +mulx 392(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 400(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 408(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// copy +movq %r8,%r12 +movq %r9,%r13 +movq %r10,%r14 +movq %r11,%r15 + +// sub +subq 352(%rsp),%r8 +sbbq 360(%rsp),%r9 +sbbq 368(%rsp),%r10 +sbbq 376(%rsp),%r11 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +subq %rbx,%r8 +sbbq %rax,%r9 +sbbq %rax,%r10 +sbbq %rax,%r11 + +cmovc %rbx,%rax +subq %rax,%r8 + +movq %r8,384(%rsp) +movq %r9,392(%rsp) +movq %r10,400(%rsp) +movq %r11,408(%rsp) + +// add +addq 352(%rsp),%r12 +adcq 360(%rsp),%r13 +adcq 368(%rsp),%r14 +adcq 376(%rsp),%r15 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +addq %rbx,%r12 +adcq %rax,%r13 +adcq %rax,%r14 +adcq %rax,%r15 + +cmovc %rbx,%rax +addq %rax,%r12 + +movq %r12,352(%rsp) +movq %r13,360(%rsp) +movq %r14,368(%rsp) +movq %r15,376(%rsp) + +// mul +movq 320(%rsp),%rdx + +mulx 224(%rsp),%r8,%r9 +mulx 232(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 240(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 248(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 328(%rsp),%rdx + +mulx 224(%rsp),%rax,%rbx +mulx 232(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 240(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 248(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 336(%rsp),%rdx + +mulx 224(%rsp),%rax,%rbx +mulx 232(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 240(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 248(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 344(%rsp),%rdx + +mulx 224(%rsp),%rax,%rbx +mulx 232(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 240(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 248(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq 192(%rsp),%r12 +movq 200(%rsp),%r13 +movq 208(%rsp),%r14 +movq 216(%rsp),%r15 + +// double +addq %r12,%r12 +adcq %r13,%r13 +adcq %r14,%r14 +adcq %r15,%r15 + +movq $0,%rbx +movq $38,%rax +cmovae %rbx,%rax + +addq %rax,%r12 +adcq %rbx,%r13 +adcq %rbx,%r14 +adcq %rbx,%r15 + +cmovc %rax,%rbx +addq %rbx,%r12 + +// copy +movq %r12,%rsi +movq %r13,%rax +movq %r14,%rcx +movq %r15,%rdx + +// sub +subq %r8,%r12 +sbbq %r9,%r13 +sbbq %r10,%r14 +sbbq %r11,%r15 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 +sbbq %rbx,%r15 + +cmovc %rbp,%rbx +subq %rbx,%r12 + +movq %r12,448(%rsp) +movq %r13,456(%rsp) +movq %r14,464(%rsp) +movq %r15,472(%rsp) + +// add +addq %r8,%rsi +adcq %r9,%rax +adcq %r10,%rcx +adcq %r11,%rdx + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%rax +adcq %rbx,%rcx +adcq %rbx,%rdx + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,416(%rsp) +movq %rax,424(%rsp) +movq %rcx,432(%rsp) +movq %rdx,440(%rsp) + +/* p1p1 to p3 */ + +// convert to 10x4 form +vmovdqa 384(%rsp),%ymm8 +vmovdqa 352(%rsp),%ymm9 +vmovdqa 416(%rsp),%ymm10 +vmovdqa 352(%rsp),%ymm11 + +vpunpcklqdq %ymm9,%ymm8,%ymm12 +vpunpckhqdq %ymm9,%ymm8,%ymm13 +vpunpcklqdq %ymm11,%ymm10,%ymm14 +vpunpckhqdq %ymm11,%ymm10,%ymm15 + +vpermq $68,%ymm14,%ymm7 +vpblendd $240,%ymm7,%ymm12,%ymm1 +vpermq $68,%ymm15,%ymm7 +vpblendd $240,%ymm7,%ymm13,%ymm3 +vpermq $238,%ymm12,%ymm7 +vpblendd $240,%ymm14,%ymm7,%ymm5 +vpermq $238,%ymm13,%ymm7 +vpblendd $240,%ymm15,%ymm7,%ymm7 + +vpand pmask1(%rip),%ymm1,%ymm0 + +vpand pmask2(%rip),%ymm1,%ymm11 +vpsrlq $26,%ymm11,%ymm11 + +vpand pmask3(%rip),%ymm1,%ymm2 +vpsrlq $51,%ymm2,%ymm2 +vpand pmask4(%rip),%ymm3,%ymm9 +vpsllq $13,%ymm9,%ymm9 +vpor %ymm9,%ymm2,%ymm2 + +vpand pmask5(%rip),%ymm3,%ymm12 +vpsrlq $13,%ymm12,%ymm12 + +vpand pmask6(%rip),%ymm3,%ymm4 +vpsrlq $38,%ymm4,%ymm4 + +vpand pmask7(%rip),%ymm5,%ymm13 + +vpand pmask8(%rip),%ymm5,%ymm6 +vpsrlq $25,%ymm6,%ymm6 + +vpand pmask9(%rip),%ymm5,%ymm14 +vpsrlq $51,%ymm14,%ymm14 +vpand pmask10(%rip),%ymm7,%ymm9 +vpsllq $13,%ymm9,%ymm9 +vpor %ymm9,%ymm14,%ymm14 + +vpand pmask11(%rip),%ymm7,%ymm8 +vpsrlq $12,%ymm8,%ymm8 + +vpand pmask12(%rip),%ymm7,%ymm15 +vpsrlq $38,%ymm15,%ymm15 + +vmovdqa %ymm0,480(%rsp) +vmovdqa %ymm11,512(%rsp) +vmovdqa %ymm2,544(%rsp) +vmovdqa %ymm12,576(%rsp) +vmovdqa %ymm4,608(%rsp) +vmovdqa %ymm13,640(%rsp) +vmovdqa %ymm6,672(%rsp) +vmovdqa %ymm14,704(%rsp) +vmovdqa %ymm8,736(%rsp) +vmovdqa %ymm15,768(%rsp) + +// convert to 10x4 form +vmovdqa 448(%rsp),%ymm8 +vmovdqa 416(%rsp),%ymm9 +vmovdqa 448(%rsp),%ymm10 +vmovdqa 384(%rsp),%ymm11 + +vpunpcklqdq %ymm9,%ymm8,%ymm12 +vpunpckhqdq %ymm9,%ymm8,%ymm13 +vpunpcklqdq %ymm11,%ymm10,%ymm14 +vpunpckhqdq %ymm11,%ymm10,%ymm15 + +vpermq $68,%ymm14,%ymm7 +vpblendd $240,%ymm7,%ymm12,%ymm10 +vpermq $68,%ymm15,%ymm7 +vpblendd $240,%ymm7,%ymm13,%ymm11 +vpermq $238,%ymm12,%ymm7 +vpblendd $240,%ymm14,%ymm7,%ymm12 +vpermq $238,%ymm13,%ymm7 +vpblendd $240,%ymm15,%ymm7,%ymm13 + +vpand pmask1(%rip),%ymm10,%ymm0 + +vpand pmask2(%rip),%ymm10,%ymm1 +vpsrlq $26,%ymm1,%ymm1 + +vpand pmask3(%rip),%ymm10,%ymm2 +vpsrlq $51,%ymm2,%ymm2 +vpand pmask4(%rip),%ymm11,%ymm3 +vpsllq $13,%ymm3,%ymm3 +vpor %ymm3,%ymm2,%ymm2 + +vpand pmask5(%rip),%ymm11,%ymm3 +vpsrlq $13,%ymm3,%ymm3 + +vpand pmask6(%rip),%ymm11,%ymm4 +vpsrlq $38,%ymm4,%ymm4 + +vpand pmask7(%rip),%ymm12,%ymm5 + +vpand pmask8(%rip),%ymm12,%ymm6 +vpsrlq $25,%ymm6,%ymm6 + +vpand pmask9(%rip),%ymm12,%ymm7 +vpsrlq $51,%ymm7,%ymm7 +vpand pmask10(%rip),%ymm13,%ymm8 +vpsllq $13,%ymm8,%ymm8 +vpor %ymm8,%ymm7,%ymm7 + +vpand pmask11(%rip),%ymm13,%ymm8 +vpsrlq $12,%ymm8,%ymm8 + +vpand pmask12(%rip),%ymm13,%ymm9 +vpsrlq $38,%ymm9,%ymm9 + +vmovdqa %ymm0,800(%rsp) +vmovdqa %ymm1,832(%rsp) +vmovdqa %ymm2,864(%rsp) +vmovdqa %ymm3,896(%rsp) +vmovdqa %ymm4,928(%rsp) +vmovdqa %ymm5,960(%rsp) +vmovdqa %ymm6,992(%rsp) +vmovdqa %ymm7,1024(%rsp) +vmovdqa %ymm8,1056(%rsp) +vmovdqa %ymm9,1088(%rsp) + +// mul4x1 +vmovdqa 512(%rsp),%ymm11 +vmovdqa 576(%rsp),%ymm12 +vmovdqa 640(%rsp),%ymm13 +vmovdqa 704(%rsp),%ymm14 +vmovdqa 768(%rsp),%ymm15 + +vpaddq %ymm11,%ymm11,%ymm11 +vpaddq %ymm12,%ymm12,%ymm12 +vpaddq %ymm13,%ymm13,%ymm13 +vpaddq %ymm14,%ymm14,%ymm14 +vpaddq %ymm15,%ymm15,%ymm15 + +vpmuludq vec19(%rip),%ymm1,%ymm1 +vpmuludq vec19(%rip),%ymm2,%ymm2 +vpmuludq vec19(%rip),%ymm3,%ymm3 +vpmuludq vec19(%rip),%ymm4,%ymm4 +vpmuludq vec19(%rip),%ymm5,%ymm5 +vpmuludq vec19(%rip),%ymm6,%ymm6 +vpmuludq vec19(%rip),%ymm7,%ymm7 +vpmuludq vec19(%rip),%ymm8,%ymm8 +vpmuludq vec19(%rip),%ymm9,%ymm9 + +vpmuludq %ymm15,%ymm1,%ymm0 +vpmuludq %ymm14,%ymm3,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm13,%ymm5,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm12,%ymm7,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm11,%ymm9,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 736(%rsp),%ymm2,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 672(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 608(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 544(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 + +vpmuludq 768(%rsp),%ymm2,%ymm1 +vpmuludq 736(%rsp),%ymm3,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 704(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 672(%rsp),%ymm5,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 640(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 608(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 576(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 544(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 + +vpmuludq %ymm15,%ymm3,%ymm2 +vpmuludq %ymm14,%ymm5,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq %ymm13,%ymm7,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq %ymm12,%ymm9,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 736(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 672(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 608(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 832(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 + +vpmuludq 768(%rsp),%ymm4,%ymm3 +vpmuludq 736(%rsp),%ymm5,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 704(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 672(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 640(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 608(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 + +vpmuludq %ymm15,%ymm5,%ymm4 +vpmuludq %ymm14,%ymm7,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq %ymm13,%ymm9,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 736(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 672(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 832(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 896(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 + +vpmuludq 768(%rsp),%ymm6,%ymm5 +vpmuludq 736(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 704(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 672(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 + +vpmuludq %ymm15,%ymm7,%ymm6 +vpmuludq %ymm14,%ymm9,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 736(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 832(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 896(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 960(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 768(%rsp),%ymm8,%ymm7 +vpmuludq 736(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq %ymm15,%ymm9,%ymm8 +vpmuludq 832(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 896(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 960(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 1024(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vmovdqa 480(%rsp),%ymm11 +vmovdqa 512(%rsp),%ymm12 +vmovdqa 544(%rsp),%ymm13 +vmovdqa 576(%rsp),%ymm14 +vmovdqa 608(%rsp),%ymm15 +vmovdqa 640(%rsp),%ymm9 + +vpmuludq 800(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 + +vpmuludq 864(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 800(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 + +vpmuludq 896(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 864(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 832(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 800(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 + +vpmuludq 832(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 800(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 + +vpmuludq 928(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 864(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 800(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 + +vpmuludq 960(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 928(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 896(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 864(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 832(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 800(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 + +vpmuludq 992(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 928(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 864(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 1024(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 992(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 960(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 928(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 896(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 864(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq 1056(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 992(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 928(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vpmuludq 928(%rsp),%ymm9,%ymm9 +vpmuludq 1088(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 1056(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 1024(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 992(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 960(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 + +vmovdqa 672(%rsp),%ymm11 +vmovdqa 704(%rsp),%ymm12 +vmovdqa 736(%rsp),%ymm13 +vmovdqa 768(%rsp),%ymm14 + +vpmuludq 800(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 832(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 800(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq 864(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 800(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vpmuludq 896(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 864(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 832(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 800(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpand vecmask26(%rip),%ymm8,%ymm8 + +vpsrlq $25,%ymm9,%ymm10 +vpmuludq vec19(%rip),%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask25(%rip),%ymm9,%ymm9 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $25,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask25(%rip),%ymm1,%ymm1 + +vpsrlq $26,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpand vecmask26(%rip),%ymm2,%ymm2 + +vpsrlq $25,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask25(%rip),%ymm3,%ymm3 + +vpsrlq $26,%ymm4,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask26(%rip),%ymm4,%ymm4 + +vpsrlq $25,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm5,%ymm5 + +vpsrlq $26,%ymm6,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpand vecmask26(%rip),%ymm6,%ymm6 + +vpsrlq $25,%ymm7,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask25(%rip),%ymm7,%ymm7 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpand vecmask26(%rip),%ymm8,%ymm8 + +// get back to 4x4 form +vpand upmask1(%rip),%ymm0,%ymm10 +vpand upmask2(%rip),%ymm1,%ymm11 +vpsllq $26,%ymm11,%ymm11 +vpor %ymm10,%ymm11,%ymm10 +vpand upmask3(%rip),%ymm2,%ymm11 +vpsllq $51,%ymm11,%ymm11 +vpor %ymm10,%ymm11,%ymm10 + +vpand upmask4(%rip),%ymm2,%ymm11 +vpsrlq $13,%ymm11,%ymm11 +vpand upmask2(%rip),%ymm3,%ymm12 +vpsllq $13,%ymm12,%ymm12 +vpor %ymm11,%ymm12,%ymm11 +vpand upmask1(%rip),%ymm4,%ymm12 +vpsllq $38,%ymm12,%ymm12 +vpor %ymm11,%ymm12,%ymm11 + +vpand upmask2(%rip),%ymm5,%ymm12 +vpand upmask1(%rip),%ymm6,%ymm13 +vpsllq $25,%ymm13,%ymm13 +vpor %ymm12,%ymm13,%ymm12 +vpand upmask3(%rip),%ymm7,%ymm13 +vpsllq $51,%ymm13,%ymm13 +vpor %ymm12,%ymm13,%ymm12 + +vpand upmask5(%rip),%ymm7,%ymm13 +vpsrlq $13,%ymm13,%ymm13 +vpand upmask1(%rip),%ymm8,%ymm14 +vpsllq $12,%ymm14,%ymm14 +vpor %ymm13,%ymm14,%ymm13 +vpand upmask1(%rip),%ymm9,%ymm14 +vpsllq $38,%ymm14,%ymm14 +vpor %ymm13,%ymm14,%ymm13 + +vpunpcklqdq %ymm11,%ymm10,%ymm2 +vpunpckhqdq %ymm11,%ymm10,%ymm3 +vpunpcklqdq %ymm13,%ymm12,%ymm4 +vpunpckhqdq %ymm13,%ymm12,%ymm5 + +vpermq $68,%ymm4,%ymm7 +vpblendd $240,%ymm7,%ymm2,%ymm10 +vpermq $68,%ymm5,%ymm7 +vpblendd $240,%ymm7,%ymm3,%ymm11 +vpermq $238,%ymm2,%ymm7 +vpblendd $240,%ymm4,%ymm7,%ymm12 +vpermq $238,%ymm3,%ymm7 +vpblendd $240,%ymm5,%ymm7,%ymm13 + +vmovdqa %ymm10,128(%rsp) +vmovdqa %ymm11,160(%rsp) +vmovdqa %ymm12,192(%rsp) +vmovdqa %ymm13,224(%rsp) + +movq 80(%rsp),%r15 +addq $1,%r15 +movq %r15,80(%rsp) +cmpq $63,%r15 + +jle .L + +/* store final value of r */ + +movq 56(%rsp),%rdi + +movq 128(%rsp),%r8 +movq 136(%rsp),%r9 +movq 144(%rsp),%r10 +movq 152(%rsp),%r11 + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 160(%rsp),%r8 +movq 168(%rsp),%r9 +movq 176(%rsp),%r10 +movq 184(%rsp),%r11 + +movq %r8,32(%rdi) +movq %r9,40(%rdi) +movq %r10,48(%rdi) +movq %r11,56(%rdi) + +movq 192(%rsp),%r8 +movq 200(%rsp),%r9 +movq 208(%rsp),%r10 +movq 216(%rsp),%r11 + +movq %r8,64(%rdi) +movq %r9,72(%rdi) +movq %r10,80(%rdi) +movq %r11,88(%rdi) + +movq 224(%rsp),%r8 +movq 232(%rsp),%r9 +movq 240(%rsp),%r10 +movq 248(%rsp),%r11 + +movq %r8,96(%rdi) +movq %r9,104(%rdi) +movq %r10,112(%rdi) +movq %r11,120(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/ge25519_base_niels.data b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/ge25519_base_niels.data new file mode 120000 index 0000000000..a9e965b8ac --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/ge25519_base_niels.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_niels.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/ge25519_scalarmult_base.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/ge25519_scalarmult_base.c new file mode 120000 index 0000000000..b77a6e2f45 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/ge25519_scalarmult_base.c @@ -0,0 +1 @@ +../amd64-maa4/ge25519_scalarmult_base.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/implementors b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/implementors new file mode 120000 index 0000000000..7c9c13e712 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/implementors @@ -0,0 +1 @@ +../amd64-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/nG.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/nG.c new file mode 120000 index 0000000000..3979d79b05 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/nG.c @@ -0,0 +1 @@ +../amd64-51/nG.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/sc25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/sc25519_window4.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/sc25519_window4.c new file mode 120000 index 0000000000..b54931e1bf --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/sc25519_window4.c @@ -0,0 +1 @@ +../amd64-51/sc25519_window4.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/shared-base-data.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/shared-base-data.c new file mode 120000 index 0000000000..c8311fd6f9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/shared-base-data.c @@ -0,0 +1 @@ +../amd64-64/shared-base-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/shared-consts.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/shared-consts.c new file mode 120000 index 0000000000..445c223c4e --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-10l-mxaa/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx2-10l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/architectures b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/consts_namespace.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/consts_namespace.h new file mode 100644 index 0000000000..b242ac7975 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/consts_namespace.h @@ -0,0 +1,31 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vec1216 CRYPTO_SHARED_NAMESPACE(vec1216) +#define vecmask23 CRYPTO_SHARED_NAMESPACE(vecmask23) +#define vecmask29 CRYPTO_SHARED_NAMESPACE(vecmask29) +#define pmask1 CRYPTO_SHARED_NAMESPACE(pmask1) +#define pmask2 CRYPTO_SHARED_NAMESPACE(pmask2) +#define pmask3 CRYPTO_SHARED_NAMESPACE(pmask3) +#define pmask4 CRYPTO_SHARED_NAMESPACE(pmask4) +#define pmask5 CRYPTO_SHARED_NAMESPACE(pmask5) +#define pmask6 CRYPTO_SHARED_NAMESPACE(pmask6) +#define pmask7 CRYPTO_SHARED_NAMESPACE(pmask7) +#define pmask8 CRYPTO_SHARED_NAMESPACE(pmask8) +#define pmask9 CRYPTO_SHARED_NAMESPACE(pmask9) +#define pmask10 CRYPTO_SHARED_NAMESPACE(pmask10) +#define pmask11 CRYPTO_SHARED_NAMESPACE(pmask11) +#define pmask12 CRYPTO_SHARED_NAMESPACE(pmask12) +#define upmask1 CRYPTO_SHARED_NAMESPACE(upmask1) +#define upmask2 CRYPTO_SHARED_NAMESPACE(upmask2) +#define upmask3 CRYPTO_SHARED_NAMESPACE(upmask3) +#define upmask4 CRYPTO_SHARED_NAMESPACE(upmask4) +#define upmask5 CRYPTO_SHARED_NAMESPACE(upmask5) +#define upmask6 CRYPTO_SHARED_NAMESPACE(upmask6) +#define upmask7 CRYPTO_SHARED_NAMESPACE(upmask7) +#define upmask8 CRYPTO_SHARED_NAMESPACE(upmask8) +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519.h new file mode 120000 index 0000000000..d0a29945e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_add.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_add.S new file mode 120000 index 0000000000..d4acd5b571 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_add.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_cmov.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_cmov.c new file mode 120000 index 0000000000..b0f28207ef --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_cmov.c @@ -0,0 +1 @@ +../amd64-64/fe25519_cmov.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_freeze.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_getparity.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_getparity.c new file mode 120000 index 0000000000..c23ba9ce3d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_getparity.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_invert.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_mul.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_mul.S new file mode 120000 index 0000000000..a969f86af4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_nsquare.S new file mode 120000 index 0000000000..a5dcdec138 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_pack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_square.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_square.S new file mode 120000 index 0000000000..07c854965f --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_sub.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_sub.S new file mode 120000 index 0000000000..8458eb6750 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_sub.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_unpack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/ge25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/ge25519.h new file mode 120000 index 0000000000..7630019869 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/ge25519.h @@ -0,0 +1 @@ +../amd64-maa4/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/ge25519_base.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/ge25519_base.S new file mode 100644 index 0000000000..4fe048537c --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/ge25519_base.S @@ -0,0 +1,1915 @@ +// linker define base +// linker use vec1216 +// linker use vecmask23 +// linker use vecmask29 +// linker use pmask1 +// linker use pmask2 +// linker use pmask3 +// linker use pmask4 +// linker use pmask5 +// linker use pmask6 +// linker use pmask7 +// linker use pmask8 +// linker use pmask9 +// linker use pmask10 +// linker use pmask11 +// linker use pmask12 +// linker use upmask1 +// linker use upmask2 +// linker use upmask3 +// linker use upmask4 +// linker use upmask5 +// linker use upmask6 +// linker use upmask7 +// linker use upmask8 +// linker use mask63 + +/* Assembly for fixed base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(base) +.globl CRYPTO_SHARED_NAMESPACE(base) +_CRYPTO_SHARED_NAMESPACE(base): +CRYPTO_SHARED_NAMESPACE(base): + +movq %rsp,%r11 +andq $-32,%rsp +subq $1536,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) +movq %rsi,64(%rsp) +movq %rdx,72(%rsp) + +/* choose t and initialize r */ + +movq %rdx,%rcx +movzbl 0(%rsi),%eax +movsbq %al,%rdx +movq $0,%rsi + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %r11,%r15 +movq %r12,80(%rsp) +movq %r13,88(%rsp) +movq %r14,96(%rsp) + +// sub +subq %rsi,%r11 +sbbq %r9,%r12 +sbbq %rax,%r13 +sbbq %r10,%r14 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r11 +sbbq %rbx,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 + +cmovc %rbp,%rbx +subq %rbx,%r11 + +movq %r11,128(%rsp) +movq %r12,136(%rsp) +movq %r13,144(%rsp) +movq %r14,152(%rsp) + +// add +addq %r15,%rsi +adcq 80(%rsp),%r9 +adcq 88(%rsp),%rax +adcq 96(%rsp),%r10 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%r9 +adcq %rbx,%rax +adcq %rbx,%r10 + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,160(%rsp) +movq %r9,168(%rsp) +movq %rax,176(%rsp) +movq %r10,184(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,224(%rsp) +movq %r9,232(%rsp) +movq %rax,240(%rsp) +movq %r10,248(%rsp) + +movq $2,192(%rsp) +movq $0,200(%rsp) +movq $0,208(%rsp) +movq $0,216(%rsp) + +/* loop: i=1,i<64,i=i+1 */ + +movq $1,80(%rsp) + +.L1: + +/* choose t */ + +movq 72(%rsp),%rcx +movq 80(%rsp),%rsi +movq 64(%rsp),%rdx +movzbl 0(%rdx,%rsi),%eax +movsbq %al,%rdx + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %rsi,256(%rsp) +movq %r9,264(%rsp) +movq %rax,272(%rsp) +movq %r10,280(%rsp) +movq %r11,288(%rsp) +movq %r12,296(%rsp) +movq %r13,304(%rsp) +movq %r14,312(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,320(%rsp) +movq %r9,328(%rsp) +movq %rax,336(%rsp) +movq %r10,344(%rsp) + +/* nielsadd2 */ + +// load +movq 160(%rsp),%rdx +movq 168(%rsp),%rcx +movq 176(%rsp),%r8 +movq 184(%rsp),%r9 + +// copy +movq %rdx,%rax +movq %rcx,%r10 +movq %r8,%r11 +movq %r9,%r12 + +// sub +subq 128(%rsp),%rdx +sbbq 136(%rsp),%rcx +sbbq 144(%rsp),%r8 +sbbq 152(%rsp),%r9 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +subq %r14,%rdx +sbbq %r13,%rcx +sbbq %r13,%r8 +sbbq %r13,%r9 + +cmovc %r14,%r13 +subq %r13,%rdx + +movq %rdx,352(%rsp) +movq %rcx,360(%rsp) +movq %r8,368(%rsp) +movq %r9,376(%rsp) + +// add +addq 128(%rsp),%rax +adcq 136(%rsp),%r10 +adcq 144(%rsp),%r11 +adcq 152(%rsp),%r12 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +addq %r14,%rax +adcq %r13,%r10 +adcq %r13,%r11 +adcq %r13,%r12 + +cmovc %r14,%r13 +addq %r13,%rax + +movq %rax,384(%rsp) +movq %r10,392(%rsp) +movq %r11,400(%rsp) +movq %r12,408(%rsp) + +// mul +movq 264(%rsp),%rax +mulq 376(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 272(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 280(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 272(%rsp),%rax +mulq 376(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 280(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 280(%rsp),%rax +mulq 376(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 256(%rsp),%rax +mulq 376(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 264(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 272(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 280(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 256(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 256(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 264(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 256(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 264(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 272(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq %r8,352(%rsp) +movq %r10,360(%rsp) +movq %r12,368(%rsp) +movq %r14,376(%rsp) + +// mul +movq 296(%rsp),%rax +mulq 408(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 304(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 312(%rsp),%rax +mulq 392(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 304(%rsp),%rax +mulq 408(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 312(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 312(%rsp),%rax +mulq 408(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 288(%rsp),%rax +mulq 408(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 296(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 304(%rsp),%rax +mulq 392(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 312(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 288(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 288(%rsp),%rax +mulq 392(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 296(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 288(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 296(%rsp),%rax +mulq 392(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 304(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +// copy +movq %r8,%r9 +movq %r10,%r11 +movq %r12,%r13 +movq %r14,%r15 + +// sub +subq 352(%rsp),%r8 +sbbq 360(%rsp),%r10 +sbbq 368(%rsp),%r12 +sbbq 376(%rsp),%r14 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +subq %rbx,%r8 +sbbq %rax,%r10 +sbbq %rax,%r12 +sbbq %rax,%r14 + +cmovc %rbx,%rax +subq %rax,%r8 + +movq %r8,384(%rsp) +movq %r10,392(%rsp) +movq %r12,400(%rsp) +movq %r14,408(%rsp) + +// add +addq 352(%rsp),%r9 +adcq 360(%rsp),%r11 +adcq 368(%rsp),%r13 +adcq 376(%rsp),%r15 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +addq %rbx,%r9 +adcq %rax,%r11 +adcq %rax,%r13 +adcq %rax,%r15 + +cmovc %rbx,%rax +addq %rax,%r9 + +movq %r9,352(%rsp) +movq %r11,360(%rsp) +movq %r13,368(%rsp) +movq %r15,376(%rsp) + +// mul +movq 328(%rsp),%rax +mulq 248(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 336(%rsp),%rax +mulq 240(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 344(%rsp),%rax +mulq 232(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 336(%rsp),%rax +mulq 248(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 344(%rsp),%rax +mulq 240(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 344(%rsp),%rax +mulq 248(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 320(%rsp),%rax +mulq 248(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 328(%rsp),%rax +mulq 240(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 336(%rsp),%rax +mulq 232(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 344(%rsp),%rax +mulq 224(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 320(%rsp),%rax +mulq 224(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 320(%rsp),%rax +mulq 232(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 328(%rsp),%rax +mulq 224(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 320(%rsp),%rax +mulq 240(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 328(%rsp),%rax +mulq 232(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 336(%rsp),%rax +mulq 224(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq 192(%rsp),%r9 +movq 200(%rsp),%r11 +movq 208(%rsp),%r13 +movq 216(%rsp),%r15 + +// double +addq %r9,%r9 +adcq %r11,%r11 +adcq %r13,%r13 +adcq %r15,%r15 + +movq $0,%rbx +movq $38,%rax +cmovae %rbx,%rax + +addq %rax,%r9 +adcq %rbx,%r11 +adcq %rbx,%r13 +adcq %rbx,%r15 + +cmovc %rax,%rbx +addq %rbx,%r9 + +// copy +movq %r9,%rsi +movq %r11,%rax +movq %r13,%rcx +movq %r15,%rdx + +// sub +subq %r8,%r9 +sbbq %r10,%r11 +sbbq %r12,%r13 +sbbq %r14,%r15 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r9 +sbbq %rbx,%r11 +sbbq %rbx,%r13 +sbbq %rbx,%r15 + +cmovc %rbp,%rbx +subq %rbx,%r9 + +movq %r9,448(%rsp) +movq %r11,456(%rsp) +movq %r13,464(%rsp) +movq %r15,472(%rsp) + +// add +addq %r8,%rsi +adcq %r10,%rax +adcq %r12,%rcx +adcq %r14,%rdx + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%rax +adcq %rbx,%rcx +adcq %rbx,%rdx + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,416(%rsp) +movq %rax,424(%rsp) +movq %rcx,432(%rsp) +movq %rdx,440(%rsp) + +/* p1p1 to p3 */ + +// convert to 9x4 form +vmovdqa 384(%rsp),%ymm8 +vmovdqa 352(%rsp),%ymm9 +vmovdqa 416(%rsp),%ymm10 +vmovdqa 352(%rsp),%ymm11 + +vpunpcklqdq %ymm9,%ymm8,%ymm12 +vpunpckhqdq %ymm9,%ymm8,%ymm13 +vpunpcklqdq %ymm11,%ymm10,%ymm14 +vpunpckhqdq %ymm11,%ymm10,%ymm15 + +vpermq $68,%ymm14,%ymm7 +vpblendd $240,%ymm7,%ymm12,%ymm1 +vpermq $68,%ymm15,%ymm7 +vpblendd $240,%ymm7,%ymm13,%ymm2 +vpermq $238,%ymm12,%ymm7 +vpblendd $240,%ymm14,%ymm7,%ymm3 +vpermq $238,%ymm13,%ymm7 +vpblendd $240,%ymm15,%ymm7,%ymm4 + +vpand pmask1(%rip),%ymm1,%ymm10 + +vpand pmask2(%rip),%ymm1,%ymm11 +vpsrlq $29,%ymm11,%ymm11 + +vpand pmask3(%rip),%ymm1,%ymm7 +vpsrlq $58,%ymm7,%ymm7 +vpand pmask4(%rip),%ymm2,%ymm9 +vpsllq $6,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm12 + +vpand pmask5(%rip),%ymm2,%ymm13 +vpsrlq $23,%ymm13,%ymm13 + +vpand pmask6(%rip),%ymm2,%ymm7 +vpsrlq $52,%ymm7,%ymm7 +vpand pmask7(%rip),%ymm3,%ymm9 +vpsllq $12,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm5 + +vpand pmask8(%rip),%ymm3,%ymm6 +vpsrlq $17,%ymm6,%ymm6 + +vpand pmask9(%rip),%ymm3,%ymm7 +vpsrlq $46,%ymm7,%ymm7 +vpand pmask10(%rip),%ymm4,%ymm9 +vpsllq $18,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm7 + +vpand pmask11(%rip),%ymm4,%ymm8 +vpsrlq $11,%ymm8,%ymm8 + +vpand pmask12(%rip),%ymm4,%ymm9 +vpsrlq $40,%ymm9,%ymm9 + +vmovdqa %ymm10,1248(%rsp) +vmovdqa %ymm11,1280(%rsp) +vmovdqa %ymm12,1312(%rsp) +vmovdqa %ymm13,1344(%rsp) +vmovdqa %ymm5,1376(%rsp) +vmovdqa %ymm6,1408(%rsp) +vmovdqa %ymm7,1440(%rsp) +vmovdqa %ymm8,1472(%rsp) +vmovdqa %ymm9,1504(%rsp) + +// convert to 9x4 form +vmovdqa 448(%rsp),%ymm8 +vmovdqa 416(%rsp),%ymm9 +vmovdqa 448(%rsp),%ymm10 +vmovdqa 384(%rsp),%ymm11 + +vpunpcklqdq %ymm9,%ymm8,%ymm5 +vpunpckhqdq %ymm9,%ymm8,%ymm6 +vpunpcklqdq %ymm11,%ymm10,%ymm7 +vpunpckhqdq %ymm11,%ymm10,%ymm8 + +vpermq $68,%ymm7,%ymm9 +vpblendd $240,%ymm9,%ymm5,%ymm3 +vpermq $68,%ymm8,%ymm9 +vpblendd $240,%ymm9,%ymm6,%ymm4 +vpermq $238,%ymm5,%ymm9 +vpblendd $240,%ymm7,%ymm9,%ymm5 +vpermq $238,%ymm6,%ymm9 +vpblendd $240,%ymm8,%ymm9,%ymm6 + +vpand pmask1(%rip),%ymm3,%ymm10 + +vpand pmask2(%rip),%ymm3,%ymm11 +vpsrlq $29,%ymm11,%ymm11 + +vpand pmask3(%rip),%ymm3,%ymm7 +vpsrlq $58,%ymm7,%ymm7 +vpand pmask4(%rip),%ymm4,%ymm9 +vpsllq $6,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm12 + +vpand pmask5(%rip),%ymm4,%ymm13 +vpsrlq $23,%ymm13,%ymm13 + +vpand pmask6(%rip),%ymm4,%ymm7 +vpsrlq $52,%ymm7,%ymm7 +vpand pmask7(%rip),%ymm5,%ymm9 +vpsllq $12,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm0 + +vpand pmask8(%rip),%ymm5,%ymm1 +vpsrlq $17,%ymm1,%ymm1 + +vpand pmask9(%rip),%ymm5,%ymm7 +vpsrlq $46,%ymm7,%ymm7 +vpand pmask10(%rip),%ymm6,%ymm9 +vpsllq $18,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm2 + +vpand pmask11(%rip),%ymm6,%ymm3 +vpsrlq $11,%ymm3,%ymm3 + +vpand pmask12(%rip),%ymm6,%ymm4 +vpsrlq $40,%ymm4,%ymm4 + +vmovdqa 1376(%rsp),%ymm5 +vmovdqa 1408(%rsp),%ymm6 +vmovdqa 1440(%rsp),%ymm7 +vmovdqa 1472(%rsp),%ymm8 +vmovdqa 1504(%rsp),%ymm9 + +// mul4x1 +vpmuludq %ymm5,%ymm0,%ymm15 +vmovdqa %ymm15,480(%rsp) + +vpmuludq %ymm6,%ymm0,%ymm15 +vpmuludq %ymm5,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,512(%rsp) + +vpmuludq %ymm7,%ymm0,%ymm15 +vpmuludq %ymm6,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,544(%rsp) + +vpmuludq %ymm8,%ymm0,%ymm15 +vpmuludq %ymm7,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,576(%rsp) + +vpmuludq %ymm9,%ymm0,%ymm15 +vpmuludq %ymm8,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,608(%rsp) + +vpmuludq %ymm9,%ymm1,%ymm15 +vpmuludq %ymm8,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,640(%rsp) + +vpmuludq %ymm9,%ymm2,%ymm15 +vpmuludq %ymm8,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,672(%rsp) + +vpmuludq %ymm9,%ymm3,%ymm15 +vpmuludq %ymm8,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,704(%rsp) + +vpmuludq %ymm9,%ymm4,%ymm15 +vmovdqa %ymm15,736(%rsp) + +vpaddq %ymm10,%ymm0,%ymm0 +vpaddq %ymm11,%ymm1,%ymm1 +vpaddq %ymm12,%ymm2,%ymm2 +vpaddq %ymm13,%ymm3,%ymm3 +vpaddq 1248(%rsp),%ymm5,%ymm5 +vpaddq 1280(%rsp),%ymm6,%ymm6 +vpaddq 1312(%rsp),%ymm7,%ymm7 +vpaddq 1344(%rsp),%ymm8,%ymm8 + +vpmuludq 1248(%rsp),%ymm10,%ymm15 +vmovdqa %ymm15,768(%rsp) +vpaddq 480(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,992(%rsp) + +vpmuludq 1280(%rsp),%ymm10,%ymm15 +vpmuludq 1248(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,800(%rsp) +vpaddq 512(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1024(%rsp) + +vpmuludq 1312(%rsp),%ymm10,%ymm15 +vpmuludq 1280(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 1248(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,832(%rsp) +vpaddq 544(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1056(%rsp) + +vpmuludq 1344(%rsp),%ymm10,%ymm15 +vpmuludq 1312(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 1280(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 1248(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,864(%rsp) +vpaddq 576(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1088(%rsp) + +vpmuludq 1344(%rsp),%ymm11,%ymm15 +vpmuludq 1312(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 1280(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,896(%rsp) +vpaddq 608(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1120(%rsp) + +vpmuludq 1344(%rsp),%ymm12,%ymm15 +vpmuludq 1312(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,928(%rsp) +vpaddq 640(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1152(%rsp) + +vpmuludq 1344(%rsp),%ymm13,%ymm15 +vmovdqa %ymm15,960(%rsp) +vpaddq 672(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1184(%rsp) + +vpmuludq %ymm5,%ymm0,%ymm15 +vmovdqa %ymm15,1216(%rsp) + +vpmuludq %ymm6,%ymm0,%ymm15 +vpmuludq %ymm5,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm10 + +vpmuludq %ymm7,%ymm0,%ymm15 +vpmuludq %ymm6,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm11 + +vpmuludq %ymm8,%ymm0,%ymm15 +vpmuludq %ymm7,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm12 + +vpmuludq %ymm9,%ymm0,%ymm15 +vpmuludq %ymm8,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm13 + +vpmuludq %ymm9,%ymm1,%ymm15 +vpmuludq %ymm8,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm0 + +vpmuludq %ymm9,%ymm2,%ymm15 +vpmuludq %ymm8,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm1 + +vpmuludq %ymm9,%ymm3,%ymm15 +vpmuludq %ymm8,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm2 + +vpmuludq %ymm9,%ymm4,%ymm3 + +vmovdqa 1216(%rsp),%ymm9 + +vpsubq 992(%rsp),%ymm9,%ymm9 +vpaddq 896(%rsp),%ymm9,%ymm9 +vpsubq 1024(%rsp),%ymm10,%ymm10 +vpaddq 928(%rsp),%ymm10,%ymm10 +vpsubq 1056(%rsp),%ymm11,%ymm11 +vpaddq 960(%rsp),%ymm11,%ymm11 +vpsubq 1088(%rsp),%ymm12,%ymm12 +vpsubq 1120(%rsp),%ymm13,%ymm13 +vpaddq 480(%rsp),%ymm13,%ymm13 +vpsubq 1152(%rsp),%ymm0,%ymm0 +vpaddq 512(%rsp),%ymm0,%ymm0 +vpsubq 1184(%rsp),%ymm1,%ymm1 +vpaddq 544(%rsp),%ymm1,%ymm1 +vpsubq 704(%rsp),%ymm2,%ymm2 +vpaddq 576(%rsp),%ymm2,%ymm2 +vpsubq 736(%rsp),%ymm3,%ymm3 +vpaddq 608(%rsp),%ymm3,%ymm3 + +vpsrlq $29,%ymm0,%ymm14 +vpaddq %ymm14,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 +vpmuludq vec1216(%rip),%ymm0,%ymm0 +vpaddq 768(%rsp),%ymm0,%ymm0 + +vpsrlq $29,%ymm1,%ymm14 +vpaddq %ymm14,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 +vpmuludq vec1216(%rip),%ymm1,%ymm1 +vpaddq 800(%rsp),%ymm1,%ymm1 + +vpsrlq $29,%ymm2,%ymm14 +vpaddq %ymm14,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 +vpmuludq vec1216(%rip),%ymm2,%ymm2 +vpaddq 832(%rsp),%ymm2,%ymm2 + +vpsrlq $29,%ymm3,%ymm14 +vpaddq 640(%rsp),%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm3,%ymm3 +vpmuludq vec1216(%rip),%ymm3,%ymm3 +vpaddq 864(%rsp),%ymm3,%ymm3 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq 672(%rsp),%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm4 +vpmuludq vec1216(%rip),%ymm4,%ymm4 +vpaddq %ymm9,%ymm4,%ymm4 + +vpsrlq $29,%ymm15,%ymm14 +vpaddq 704(%rsp),%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm15,%ymm5 +vpmuludq vec1216(%rip),%ymm5,%ymm5 +vpaddq %ymm10,%ymm5,%ymm5 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq 736(%rsp),%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm6 +vpmuludq vec1216(%rip),%ymm6,%ymm6 +vpaddq %ymm11,%ymm6,%ymm6 + +vpsrlq $29,%ymm15,%ymm8 +vpand vecmask29(%rip),%ymm15,%ymm7 + +vpmuludq vec1216(%rip),%ymm7,%ymm7 +vpaddq %ymm12,%ymm7,%ymm7 +vpmuludq vec1216(%rip),%ymm8,%ymm8 +vpaddq %ymm13,%ymm8,%ymm8 + +vpsrlq $29,%ymm7,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 +vpand vecmask29(%rip),%ymm7,%ymm7 + +vpsrlq $23,%ymm8,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpaddq %ymm15,%ymm15,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpsllq $3,%ymm15,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpand vecmask23(%rip),%ymm8,%ymm8 + +vpsrlq $29,%ymm0,%ymm15 +vpaddq %ymm15,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +vpsrlq $29,%ymm1,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 + +vpsrlq $29,%ymm2,%ymm15 +vpaddq %ymm15,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 + +vpsrlq $29,%ymm3,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 +vpand vecmask29(%rip),%ymm3,%ymm3 + +vpsrlq $29,%ymm4,%ymm15 +vpaddq %ymm15,%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm5,%ymm15 +vpaddq %ymm15,%ymm6,%ymm6 +vpand vecmask29(%rip),%ymm5,%ymm5 + +vpsrlq $29,%ymm6,%ymm15 +vpaddq %ymm15,%ymm7,%ymm7 +vpand vecmask29(%rip),%ymm6,%ymm6 + +vpsrlq $29,%ymm7,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 +vpand vecmask29(%rip),%ymm7,%ymm7 + +// get back to 4x4 form +vpand upmask1(%rip),%ymm0,%ymm10 +vpand upmask1(%rip),%ymm1,%ymm11 +vpsllq $29,%ymm11,%ymm11 +vpor %ymm10,%ymm11,%ymm10 +vpand upmask2(%rip),%ymm2,%ymm11 +vpsllq $58,%ymm11,%ymm11 +vpor %ymm10,%ymm11,%ymm10 + +vpand upmask6(%rip),%ymm2,%ymm11 +vpsrlq $6,%ymm11,%ymm11 +vpand upmask1(%rip),%ymm3,%ymm12 +vpsllq $23,%ymm12,%ymm12 +vpor %ymm11,%ymm12,%ymm11 +vpand upmask3(%rip),%ymm4,%ymm12 +vpsllq $52,%ymm12,%ymm12 +vpor %ymm11,%ymm12,%ymm11 + +vpand upmask7(%rip),%ymm4,%ymm12 +vpsrlq $12,%ymm12,%ymm12 +vpand upmask1(%rip),%ymm5,%ymm13 +vpsllq $17,%ymm13,%ymm13 +vpor %ymm12,%ymm13,%ymm12 +vpand upmask4(%rip),%ymm6,%ymm13 +vpsllq $46,%ymm13,%ymm13 +vpor %ymm12,%ymm13,%ymm12 + +vpand upmask8(%rip),%ymm6,%ymm13 +vpsrlq $18,%ymm13,%ymm13 +vpand upmask1(%rip),%ymm7,%ymm14 +vpsllq $11,%ymm14,%ymm14 +vpor %ymm13,%ymm14,%ymm13 +vpand upmask5(%rip),%ymm8,%ymm14 +vpsllq $40,%ymm14,%ymm14 +vpor %ymm13,%ymm14,%ymm13 + +vpunpcklqdq %ymm11,%ymm10,%ymm2 +vpunpckhqdq %ymm11,%ymm10,%ymm3 +vpunpcklqdq %ymm13,%ymm12,%ymm4 +vpunpckhqdq %ymm13,%ymm12,%ymm5 + +vpermq $68,%ymm4,%ymm7 +vpblendd $240,%ymm7,%ymm2,%ymm10 +vpermq $68,%ymm5,%ymm7 +vpblendd $240,%ymm7,%ymm3,%ymm11 +vpermq $238,%ymm2,%ymm7 +vpblendd $240,%ymm4,%ymm7,%ymm12 +vpermq $238,%ymm3,%ymm7 +vpblendd $240,%ymm5,%ymm7,%ymm13 + +vmovdqa %ymm10,128(%rsp) +vmovdqa %ymm11,160(%rsp) +vmovdqa %ymm12,192(%rsp) +vmovdqa %ymm13,224(%rsp) + +movq 80(%rsp),%r15 +addq $1,%r15 +movq %r15,80(%rsp) +cmpq $63,%r15 + +jle .L1 + +/* store final value of r */ + +.L2: + +movq 56(%rsp),%rdi + +movq 128(%rsp),%r8 +movq 136(%rsp),%r9 +movq 144(%rsp),%r10 +movq 152(%rsp),%r11 + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 160(%rsp),%r8 +movq 168(%rsp),%r9 +movq 176(%rsp),%r10 +movq 184(%rsp),%r11 + +movq %r8,32(%rdi) +movq %r9,40(%rdi) +movq %r10,48(%rdi) +movq %r11,56(%rdi) + +movq 192(%rsp),%r8 +movq 200(%rsp),%r9 +movq 208(%rsp),%r10 +movq 216(%rsp),%r11 + +movq %r8,64(%rdi) +movq %r9,72(%rdi) +movq %r10,80(%rdi) +movq %r11,88(%rdi) + +movq 224(%rsp),%r8 +movq 232(%rsp),%r9 +movq 240(%rsp),%r10 +movq 248(%rsp),%r11 + +movq %r8,96(%rdi) +movq %r9,104(%rdi) +movq %r10,112(%rdi) +movq %r11,120(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/ge25519_base_niels.data b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/ge25519_base_niels.data new file mode 120000 index 0000000000..a9e965b8ac --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/ge25519_base_niels.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_niels.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/ge25519_scalarmult_base.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/ge25519_scalarmult_base.c new file mode 120000 index 0000000000..b77a6e2f45 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/ge25519_scalarmult_base.c @@ -0,0 +1 @@ +../amd64-maa4/ge25519_scalarmult_base.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/implementors b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/implementors new file mode 120000 index 0000000000..7c9c13e712 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/implementors @@ -0,0 +1 @@ +../amd64-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/nG.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/nG.c new file mode 120000 index 0000000000..3979d79b05 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/nG.c @@ -0,0 +1 @@ +../amd64-51/nG.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/sc25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/sc25519_window4.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/sc25519_window4.c new file mode 120000 index 0000000000..b54931e1bf --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/sc25519_window4.c @@ -0,0 +1 @@ +../amd64-51/sc25519_window4.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/shared-base-data.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/shared-base-data.c new file mode 120000 index 0000000000..c8311fd6f9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/shared-base-data.c @@ -0,0 +1 @@ +../amd64-64/shared-base-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/shared-consts.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/shared-consts.c new file mode 120000 index 0000000000..217537b59a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maa4/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx2-9l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/architectures b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/architectures new file mode 120000 index 0000000000..fc4b638d1f --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx2-9l-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/consts_namespace.h new file mode 120000 index 0000000000..e812e15664 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519.h new file mode 120000 index 0000000000..d0a29945e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_add.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_add.S new file mode 120000 index 0000000000..d4acd5b571 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_add.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_cmov.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_cmov.c new file mode 120000 index 0000000000..b0f28207ef --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_cmov.c @@ -0,0 +1 @@ +../amd64-64/fe25519_cmov.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_getparity.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_getparity.c new file mode 120000 index 0000000000..c23ba9ce3d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_getparity.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_sub.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_sub.S new file mode 120000 index 0000000000..8458eb6750 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_sub.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/ge25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/ge25519.h new file mode 120000 index 0000000000..7630019869 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/ge25519.h @@ -0,0 +1 @@ +../amd64-maa4/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/ge25519_base.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/ge25519_base.S new file mode 100644 index 0000000000..5d8c98e121 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/ge25519_base.S @@ -0,0 +1,1768 @@ +// linker define base +// linker use vec1216 +// linker use vecmask23 +// linker use vecmask29 +// linker use pmask1 +// linker use pmask2 +// linker use pmask3 +// linker use pmask4 +// linker use pmask5 +// linker use pmask6 +// linker use pmask7 +// linker use pmask8 +// linker use pmask9 +// linker use pmask10 +// linker use pmask11 +// linker use pmask12 +// linker use upmask1 +// linker use upmask2 +// linker use upmask3 +// linker use upmask4 +// linker use upmask5 +// linker use upmask6 +// linker use upmask7 +// linker use upmask8 +// linker use mask63 + +/* Assembly for fixed base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(base) +.globl CRYPTO_SHARED_NAMESPACE(base) +_CRYPTO_SHARED_NAMESPACE(base): +CRYPTO_SHARED_NAMESPACE(base): + +movq %rsp,%r11 +andq $-32,%rsp +subq $1536,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) +movq %rsi,64(%rsp) +movq %rdx,72(%rsp) + +/* choose t and initialize r */ + +movq %rdx,%rcx +movzbl 0(%rsi),%eax +movsbq %al,%rdx +movq $0,%rsi + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %r11,%r15 +movq %r12,80(%rsp) +movq %r13,88(%rsp) +movq %r14,96(%rsp) + +// sub +subq %rsi,%r11 +sbbq %r9,%r12 +sbbq %rax,%r13 +sbbq %r10,%r14 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r11 +sbbq %rbx,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 + +cmovc %rbp,%rbx +subq %rbx,%r11 + +movq %r11,128(%rsp) +movq %r12,136(%rsp) +movq %r13,144(%rsp) +movq %r14,152(%rsp) + +// add +addq %r15,%rsi +adcq 80(%rsp),%r9 +adcq 88(%rsp),%rax +adcq 96(%rsp),%r10 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%r9 +adcq %rbx,%rax +adcq %rbx,%r10 + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,160(%rsp) +movq %r9,168(%rsp) +movq %rax,176(%rsp) +movq %r10,184(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,224(%rsp) +movq %r9,232(%rsp) +movq %rax,240(%rsp) +movq %r10,248(%rsp) + +movq $2,192(%rsp) +movq $0,200(%rsp) +movq $0,208(%rsp) +movq $0,216(%rsp) + +/* loop: i=1,i<64,i=i+1 */ + +movq $1,80(%rsp) + +.L: + +/* choose t */ + +movq 72(%rsp),%rcx +movq 80(%rsp),%rsi +movq 64(%rsp),%rdx +movzbl 0(%rdx,%rsi),%eax +movsbq %al,%rdx + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %rsi,256(%rsp) +movq %r9,264(%rsp) +movq %rax,272(%rsp) +movq %r10,280(%rsp) +movq %r11,288(%rsp) +movq %r12,296(%rsp) +movq %r13,304(%rsp) +movq %r14,312(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,320(%rsp) +movq %r9,328(%rsp) +movq %rax,336(%rsp) +movq %r10,344(%rsp) + +/* nielsadd2 */ + +// load +movq 160(%rsp),%rdx +movq 168(%rsp),%rcx +movq 176(%rsp),%r8 +movq 184(%rsp),%r9 + +// copy +movq %rdx,%rax +movq %rcx,%r10 +movq %r8,%r11 +movq %r9,%r12 + +// sub +subq 128(%rsp),%rdx +sbbq 136(%rsp),%rcx +sbbq 144(%rsp),%r8 +sbbq 152(%rsp),%r9 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +subq %r14,%rdx +sbbq %r13,%rcx +sbbq %r13,%r8 +sbbq %r13,%r9 + +cmovc %r14,%r13 +subq %r13,%rdx + +movq %rdx,352(%rsp) +movq %rcx,360(%rsp) +movq %r8,368(%rsp) +movq %r9,376(%rsp) + +// add +addq 128(%rsp),%rax +adcq 136(%rsp),%r10 +adcq 144(%rsp),%r11 +adcq 152(%rsp),%r12 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +addq %r14,%rax +adcq %r13,%r10 +adcq %r13,%r11 +adcq %r13,%r12 + +cmovc %r14,%r13 +addq %r13,%rax + +movq %rax,384(%rsp) +movq %r10,392(%rsp) +movq %r11,400(%rsp) +movq %r12,408(%rsp) + +// mul +xorq %r13,%r13 +movq 256(%rsp),%rdx + +mulx 352(%rsp),%r8,%r9 +mulx 360(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 368(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 376(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 264(%rsp),%rdx + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 272(%rsp),%rdx + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 280(%rsp),%rdx + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,352(%rsp) +movq %r9,360(%rsp) +movq %r10,368(%rsp) +movq %r11,376(%rsp) + +// mul +xorq %r13,%r13 +movq 288(%rsp),%rdx + +mulx 384(%rsp),%r8,%r9 +mulx 392(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 400(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 408(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 296(%rsp),%rdx + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 304(%rsp),%rdx + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 312(%rsp),%rdx + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// copy +movq %r8,%r12 +movq %r9,%r13 +movq %r10,%r14 +movq %r11,%r15 + +// sub +subq 352(%rsp),%r8 +sbbq 360(%rsp),%r9 +sbbq 368(%rsp),%r10 +sbbq 376(%rsp),%r11 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +subq %rbx,%r8 +sbbq %rax,%r9 +sbbq %rax,%r10 +sbbq %rax,%r11 + +cmovc %rbx,%rax +subq %rax,%r8 + +movq %r8,384(%rsp) +movq %r9,392(%rsp) +movq %r10,400(%rsp) +movq %r11,408(%rsp) + +// add +addq 352(%rsp),%r12 +adcq 360(%rsp),%r13 +adcq 368(%rsp),%r14 +adcq 376(%rsp),%r15 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +addq %rbx,%r12 +adcq %rax,%r13 +adcq %rax,%r14 +adcq %rax,%r15 + +cmovc %rbx,%rax +addq %rax,%r12 + +movq %r12,352(%rsp) +movq %r13,360(%rsp) +movq %r14,368(%rsp) +movq %r15,376(%rsp) + +// mul +xorq %r13,%r13 +movq 320(%rsp),%rdx + +mulx 224(%rsp),%r8,%r9 +mulx 232(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 240(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 248(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 328(%rsp),%rdx + +mulx 224(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 232(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 240(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 248(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 336(%rsp),%rdx + +mulx 224(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 232(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 240(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 248(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 344(%rsp),%rdx + +mulx 224(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 232(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 240(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 248(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq 192(%rsp),%r12 +movq 200(%rsp),%r13 +movq 208(%rsp),%r14 +movq 216(%rsp),%r15 + +// double +addq %r12,%r12 +adcq %r13,%r13 +adcq %r14,%r14 +adcq %r15,%r15 + +movq $0,%rbx +movq $38,%rax +cmovae %rbx,%rax + +addq %rax,%r12 +adcq %rbx,%r13 +adcq %rbx,%r14 +adcq %rbx,%r15 + +cmovc %rax,%rbx +addq %rbx,%r12 + +// copy +movq %r12,%rsi +movq %r13,%rax +movq %r14,%rcx +movq %r15,%rdx + +// sub +subq %r8,%r12 +sbbq %r9,%r13 +sbbq %r10,%r14 +sbbq %r11,%r15 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 +sbbq %rbx,%r15 + +cmovc %rbp,%rbx +subq %rbx,%r12 + +movq %r12,448(%rsp) +movq %r13,456(%rsp) +movq %r14,464(%rsp) +movq %r15,472(%rsp) + +// add +addq %r8,%rsi +adcq %r9,%rax +adcq %r10,%rcx +adcq %r11,%rdx + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%rax +adcq %rbx,%rcx +adcq %rbx,%rdx + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,416(%rsp) +movq %rax,424(%rsp) +movq %rcx,432(%rsp) +movq %rdx,440(%rsp) + +/* p1p1 to p3 */ + +// convert to 9x4 form +vmovdqa 384(%rsp),%ymm8 +vmovdqa 352(%rsp),%ymm9 +vmovdqa 416(%rsp),%ymm10 +vmovdqa 352(%rsp),%ymm11 + +vpunpcklqdq %ymm9,%ymm8,%ymm12 +vpunpckhqdq %ymm9,%ymm8,%ymm13 +vpunpcklqdq %ymm11,%ymm10,%ymm14 +vpunpckhqdq %ymm11,%ymm10,%ymm15 + +vpermq $68,%ymm14,%ymm7 +vpblendd $240,%ymm7,%ymm12,%ymm1 +vpermq $68,%ymm15,%ymm7 +vpblendd $240,%ymm7,%ymm13,%ymm2 +vpermq $238,%ymm12,%ymm7 +vpblendd $240,%ymm14,%ymm7,%ymm3 +vpermq $238,%ymm13,%ymm7 +vpblendd $240,%ymm15,%ymm7,%ymm4 + +vpand pmask1(%rip),%ymm1,%ymm10 + +vpand pmask2(%rip),%ymm1,%ymm11 +vpsrlq $29,%ymm11,%ymm11 + +vpand pmask3(%rip),%ymm1,%ymm7 +vpsrlq $58,%ymm7,%ymm7 +vpand pmask4(%rip),%ymm2,%ymm9 +vpsllq $6,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm12 + +vpand pmask5(%rip),%ymm2,%ymm13 +vpsrlq $23,%ymm13,%ymm13 + +vpand pmask6(%rip),%ymm2,%ymm7 +vpsrlq $52,%ymm7,%ymm7 +vpand pmask7(%rip),%ymm3,%ymm9 +vpsllq $12,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm5 + +vpand pmask8(%rip),%ymm3,%ymm6 +vpsrlq $17,%ymm6,%ymm6 + +vpand pmask9(%rip),%ymm3,%ymm7 +vpsrlq $46,%ymm7,%ymm7 +vpand pmask10(%rip),%ymm4,%ymm9 +vpsllq $18,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm7 + +vpand pmask11(%rip),%ymm4,%ymm8 +vpsrlq $11,%ymm8,%ymm8 + +vpand pmask12(%rip),%ymm4,%ymm9 +vpsrlq $40,%ymm9,%ymm9 + +vmovdqa %ymm10,1248(%rsp) +vmovdqa %ymm11,1280(%rsp) +vmovdqa %ymm12,1312(%rsp) +vmovdqa %ymm13,1344(%rsp) +vmovdqa %ymm5,1376(%rsp) +vmovdqa %ymm6,1408(%rsp) +vmovdqa %ymm7,1440(%rsp) +vmovdqa %ymm8,1472(%rsp) +vmovdqa %ymm9,1504(%rsp) + +// convert to 9x4 form +vmovdqa 448(%rsp),%ymm8 +vmovdqa 416(%rsp),%ymm9 +vmovdqa 448(%rsp),%ymm10 +vmovdqa 384(%rsp),%ymm11 + +vpunpcklqdq %ymm9,%ymm8,%ymm5 +vpunpckhqdq %ymm9,%ymm8,%ymm6 +vpunpcklqdq %ymm11,%ymm10,%ymm7 +vpunpckhqdq %ymm11,%ymm10,%ymm8 + +vpermq $68,%ymm7,%ymm9 +vpblendd $240,%ymm9,%ymm5,%ymm3 +vpermq $68,%ymm8,%ymm9 +vpblendd $240,%ymm9,%ymm6,%ymm4 +vpermq $238,%ymm5,%ymm9 +vpblendd $240,%ymm7,%ymm9,%ymm5 +vpermq $238,%ymm6,%ymm9 +vpblendd $240,%ymm8,%ymm9,%ymm6 + +vpand pmask1(%rip),%ymm3,%ymm10 + +vpand pmask2(%rip),%ymm3,%ymm11 +vpsrlq $29,%ymm11,%ymm11 + +vpand pmask3(%rip),%ymm3,%ymm7 +vpsrlq $58,%ymm7,%ymm7 +vpand pmask4(%rip),%ymm4,%ymm9 +vpsllq $6,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm12 + +vpand pmask5(%rip),%ymm4,%ymm13 +vpsrlq $23,%ymm13,%ymm13 + +vpand pmask6(%rip),%ymm4,%ymm7 +vpsrlq $52,%ymm7,%ymm7 +vpand pmask7(%rip),%ymm5,%ymm9 +vpsllq $12,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm0 + +vpand pmask8(%rip),%ymm5,%ymm1 +vpsrlq $17,%ymm1,%ymm1 + +vpand pmask9(%rip),%ymm5,%ymm7 +vpsrlq $46,%ymm7,%ymm7 +vpand pmask10(%rip),%ymm6,%ymm9 +vpsllq $18,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm2 + +vpand pmask11(%rip),%ymm6,%ymm3 +vpsrlq $11,%ymm3,%ymm3 + +vpand pmask12(%rip),%ymm6,%ymm4 +vpsrlq $40,%ymm4,%ymm4 + +vmovdqa 1376(%rsp),%ymm5 +vmovdqa 1408(%rsp),%ymm6 +vmovdqa 1440(%rsp),%ymm7 +vmovdqa 1472(%rsp),%ymm8 +vmovdqa 1504(%rsp),%ymm9 + +// mul4x1 +vpmuludq %ymm5,%ymm0,%ymm15 +vmovdqa %ymm15,480(%rsp) + +vpmuludq %ymm6,%ymm0,%ymm15 +vpmuludq %ymm5,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,512(%rsp) + +vpmuludq %ymm7,%ymm0,%ymm15 +vpmuludq %ymm6,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,544(%rsp) + +vpmuludq %ymm8,%ymm0,%ymm15 +vpmuludq %ymm7,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,576(%rsp) + +vpmuludq %ymm9,%ymm0,%ymm15 +vpmuludq %ymm8,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,608(%rsp) + +vpmuludq %ymm9,%ymm1,%ymm15 +vpmuludq %ymm8,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,640(%rsp) + +vpmuludq %ymm9,%ymm2,%ymm15 +vpmuludq %ymm8,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,672(%rsp) + +vpmuludq %ymm9,%ymm3,%ymm15 +vpmuludq %ymm8,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,704(%rsp) + +vpmuludq %ymm9,%ymm4,%ymm15 +vmovdqa %ymm15,736(%rsp) + +vpaddq %ymm10,%ymm0,%ymm0 +vpaddq %ymm11,%ymm1,%ymm1 +vpaddq %ymm12,%ymm2,%ymm2 +vpaddq %ymm13,%ymm3,%ymm3 +vpaddq 1248(%rsp),%ymm5,%ymm5 +vpaddq 1280(%rsp),%ymm6,%ymm6 +vpaddq 1312(%rsp),%ymm7,%ymm7 +vpaddq 1344(%rsp),%ymm8,%ymm8 + +vpmuludq 1248(%rsp),%ymm10,%ymm15 +vmovdqa %ymm15,768(%rsp) +vpaddq 480(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,992(%rsp) + +vpmuludq 1280(%rsp),%ymm10,%ymm15 +vpmuludq 1248(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,800(%rsp) +vpaddq 512(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1024(%rsp) + +vpmuludq 1312(%rsp),%ymm10,%ymm15 +vpmuludq 1280(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 1248(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,832(%rsp) +vpaddq 544(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1056(%rsp) + +vpmuludq 1344(%rsp),%ymm10,%ymm15 +vpmuludq 1312(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 1280(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 1248(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,864(%rsp) +vpaddq 576(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1088(%rsp) + +vpmuludq 1344(%rsp),%ymm11,%ymm15 +vpmuludq 1312(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 1280(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,896(%rsp) +vpaddq 608(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1120(%rsp) + +vpmuludq 1344(%rsp),%ymm12,%ymm15 +vpmuludq 1312(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,928(%rsp) +vpaddq 640(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1152(%rsp) + +vpmuludq 1344(%rsp),%ymm13,%ymm15 +vmovdqa %ymm15,960(%rsp) +vpaddq 672(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1184(%rsp) + +vpmuludq %ymm5,%ymm0,%ymm15 +vmovdqa %ymm15,1216(%rsp) + +vpmuludq %ymm6,%ymm0,%ymm15 +vpmuludq %ymm5,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm10 + +vpmuludq %ymm7,%ymm0,%ymm15 +vpmuludq %ymm6,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm11 + +vpmuludq %ymm8,%ymm0,%ymm15 +vpmuludq %ymm7,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm12 + +vpmuludq %ymm9,%ymm0,%ymm15 +vpmuludq %ymm8,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm13 + +vpmuludq %ymm9,%ymm1,%ymm15 +vpmuludq %ymm8,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm0 + +vpmuludq %ymm9,%ymm2,%ymm15 +vpmuludq %ymm8,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm1 + +vpmuludq %ymm9,%ymm3,%ymm15 +vpmuludq %ymm8,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm2 + +vpmuludq %ymm9,%ymm4,%ymm3 + +vmovdqa 1216(%rsp),%ymm9 + +vpsubq 992(%rsp),%ymm9,%ymm9 +vpaddq 896(%rsp),%ymm9,%ymm9 +vpsubq 1024(%rsp),%ymm10,%ymm10 +vpaddq 928(%rsp),%ymm10,%ymm10 +vpsubq 1056(%rsp),%ymm11,%ymm11 +vpaddq 960(%rsp),%ymm11,%ymm11 +vpsubq 1088(%rsp),%ymm12,%ymm12 +vpsubq 1120(%rsp),%ymm13,%ymm13 +vpaddq 480(%rsp),%ymm13,%ymm13 +vpsubq 1152(%rsp),%ymm0,%ymm0 +vpaddq 512(%rsp),%ymm0,%ymm0 +vpsubq 1184(%rsp),%ymm1,%ymm1 +vpaddq 544(%rsp),%ymm1,%ymm1 +vpsubq 704(%rsp),%ymm2,%ymm2 +vpaddq 576(%rsp),%ymm2,%ymm2 +vpsubq 736(%rsp),%ymm3,%ymm3 +vpaddq 608(%rsp),%ymm3,%ymm3 + +vpsrlq $29,%ymm0,%ymm14 +vpaddq %ymm14,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 +vpmuludq vec1216(%rip),%ymm0,%ymm0 +vpaddq 768(%rsp),%ymm0,%ymm0 + +vpsrlq $29,%ymm1,%ymm14 +vpaddq %ymm14,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 +vpmuludq vec1216(%rip),%ymm1,%ymm1 +vpaddq 800(%rsp),%ymm1,%ymm1 + +vpsrlq $29,%ymm2,%ymm14 +vpaddq %ymm14,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 +vpmuludq vec1216(%rip),%ymm2,%ymm2 +vpaddq 832(%rsp),%ymm2,%ymm2 + +vpsrlq $29,%ymm3,%ymm14 +vpaddq 640(%rsp),%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm3,%ymm3 +vpmuludq vec1216(%rip),%ymm3,%ymm3 +vpaddq 864(%rsp),%ymm3,%ymm3 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq 672(%rsp),%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm4 +vpmuludq vec1216(%rip),%ymm4,%ymm4 +vpaddq %ymm9,%ymm4,%ymm4 + +vpsrlq $29,%ymm15,%ymm14 +vpaddq 704(%rsp),%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm15,%ymm5 +vpmuludq vec1216(%rip),%ymm5,%ymm5 +vpaddq %ymm10,%ymm5,%ymm5 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq 736(%rsp),%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm6 +vpmuludq vec1216(%rip),%ymm6,%ymm6 +vpaddq %ymm11,%ymm6,%ymm6 + +vpsrlq $29,%ymm15,%ymm8 +vpand vecmask29(%rip),%ymm15,%ymm7 + +vpmuludq vec1216(%rip),%ymm7,%ymm7 +vpaddq %ymm12,%ymm7,%ymm7 +vpmuludq vec1216(%rip),%ymm8,%ymm8 +vpaddq %ymm13,%ymm8,%ymm8 + +vpsrlq $29,%ymm7,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 +vpand vecmask29(%rip),%ymm7,%ymm7 + +vpsrlq $23,%ymm8,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpaddq %ymm15,%ymm15,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpsllq $3,%ymm15,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpand vecmask23(%rip),%ymm8,%ymm8 + +vpsrlq $29,%ymm0,%ymm15 +vpaddq %ymm15,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +vpsrlq $29,%ymm1,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 + +vpsrlq $29,%ymm2,%ymm15 +vpaddq %ymm15,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 + +vpsrlq $29,%ymm3,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 +vpand vecmask29(%rip),%ymm3,%ymm3 + +vpsrlq $29,%ymm4,%ymm15 +vpaddq %ymm15,%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm5,%ymm15 +vpaddq %ymm15,%ymm6,%ymm6 +vpand vecmask29(%rip),%ymm5,%ymm5 + +vpsrlq $29,%ymm6,%ymm15 +vpaddq %ymm15,%ymm7,%ymm7 +vpand vecmask29(%rip),%ymm6,%ymm6 + +vpsrlq $29,%ymm7,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 +vpand vecmask29(%rip),%ymm7,%ymm7 + +// get back to 4x4 form +vpand upmask1(%rip),%ymm0,%ymm10 +vpand upmask1(%rip),%ymm1,%ymm11 +vpsllq $29,%ymm11,%ymm11 +vpor %ymm10,%ymm11,%ymm10 +vpand upmask2(%rip),%ymm2,%ymm11 +vpsllq $58,%ymm11,%ymm11 +vpor %ymm10,%ymm11,%ymm10 + +vpand upmask6(%rip),%ymm2,%ymm11 +vpsrlq $6,%ymm11,%ymm11 +vpand upmask1(%rip),%ymm3,%ymm12 +vpsllq $23,%ymm12,%ymm12 +vpor %ymm11,%ymm12,%ymm11 +vpand upmask3(%rip),%ymm4,%ymm12 +vpsllq $52,%ymm12,%ymm12 +vpor %ymm11,%ymm12,%ymm11 + +vpand upmask7(%rip),%ymm4,%ymm12 +vpsrlq $12,%ymm12,%ymm12 +vpand upmask1(%rip),%ymm5,%ymm13 +vpsllq $17,%ymm13,%ymm13 +vpor %ymm12,%ymm13,%ymm12 +vpand upmask4(%rip),%ymm6,%ymm13 +vpsllq $46,%ymm13,%ymm13 +vpor %ymm12,%ymm13,%ymm12 + +vpand upmask8(%rip),%ymm6,%ymm13 +vpsrlq $18,%ymm13,%ymm13 +vpand upmask1(%rip),%ymm7,%ymm14 +vpsllq $11,%ymm14,%ymm14 +vpor %ymm13,%ymm14,%ymm13 +vpand upmask5(%rip),%ymm8,%ymm14 +vpsllq $40,%ymm14,%ymm14 +vpor %ymm13,%ymm14,%ymm13 + +vpunpcklqdq %ymm11,%ymm10,%ymm2 +vpunpckhqdq %ymm11,%ymm10,%ymm3 +vpunpcklqdq %ymm13,%ymm12,%ymm4 +vpunpckhqdq %ymm13,%ymm12,%ymm5 + +vpermq $68,%ymm4,%ymm7 +vpblendd $240,%ymm7,%ymm2,%ymm10 +vpermq $68,%ymm5,%ymm7 +vpblendd $240,%ymm7,%ymm3,%ymm11 +vpermq $238,%ymm2,%ymm7 +vpblendd $240,%ymm4,%ymm7,%ymm12 +vpermq $238,%ymm3,%ymm7 +vpblendd $240,%ymm5,%ymm7,%ymm13 + +vmovdqa %ymm10,128(%rsp) +vmovdqa %ymm11,160(%rsp) +vmovdqa %ymm12,192(%rsp) +vmovdqa %ymm13,224(%rsp) + +movq 80(%rsp),%r15 +addq $1,%r15 +movq %r15,80(%rsp) +cmpq $63,%r15 + +jle .L + +/* store final value of r */ + +movq 56(%rsp),%rdi + +movq 128(%rsp),%r8 +movq 136(%rsp),%r9 +movq 144(%rsp),%r10 +movq 152(%rsp),%r11 + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 160(%rsp),%r8 +movq 168(%rsp),%r9 +movq 176(%rsp),%r10 +movq 184(%rsp),%r11 + +movq %r8,32(%rdi) +movq %r9,40(%rdi) +movq %r10,48(%rdi) +movq %r11,56(%rdi) + +movq 192(%rsp),%r8 +movq 200(%rsp),%r9 +movq 208(%rsp),%r10 +movq 216(%rsp),%r11 + +movq %r8,64(%rdi) +movq %r9,72(%rdi) +movq %r10,80(%rdi) +movq %r11,88(%rdi) + +movq 224(%rsp),%r8 +movq 232(%rsp),%r9 +movq 240(%rsp),%r10 +movq 248(%rsp),%r11 + +movq %r8,96(%rdi) +movq %r9,104(%rdi) +movq %r10,112(%rdi) +movq %r11,120(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/ge25519_base_niels.data b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/ge25519_base_niels.data new file mode 120000 index 0000000000..a9e965b8ac --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/ge25519_base_niels.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_niels.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/ge25519_scalarmult_base.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/ge25519_scalarmult_base.c new file mode 120000 index 0000000000..b77a6e2f45 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/ge25519_scalarmult_base.c @@ -0,0 +1 @@ +../amd64-maa4/ge25519_scalarmult_base.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/implementors b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/implementors new file mode 120000 index 0000000000..7c9c13e712 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/implementors @@ -0,0 +1 @@ +../amd64-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/nG.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/nG.c new file mode 120000 index 0000000000..3979d79b05 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/nG.c @@ -0,0 +1 @@ +../amd64-51/nG.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/sc25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/sc25519_window4.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/sc25519_window4.c new file mode 120000 index 0000000000..b54931e1bf --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/sc25519_window4.c @@ -0,0 +1 @@ +../amd64-51/sc25519_window4.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/shared-base-data.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/shared-base-data.c new file mode 120000 index 0000000000..c8311fd6f9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/shared-base-data.c @@ -0,0 +1 @@ +../amd64-64/shared-base-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/shared-consts.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/shared-consts.c new file mode 120000 index 0000000000..217537b59a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-maax/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx2-9l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/architectures b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/consts_namespace.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/consts_namespace.h new file mode 120000 index 0000000000..e812e15664 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-9l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519.h new file mode 120000 index 0000000000..916a9e3b36 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_add.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_add.S new file mode 120000 index 0000000000..d4acd5b571 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_add.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_cmov.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_cmov.c new file mode 120000 index 0000000000..b0f28207ef --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_cmov.c @@ -0,0 +1 @@ +../amd64-64/fe25519_cmov.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_freeze.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_getparity.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_getparity.c new file mode 120000 index 0000000000..c23ba9ce3d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_getparity.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_invert.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_mul.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_mul.S new file mode 120000 index 0000000000..79e7adffa9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_nsquare.S new file mode 120000 index 0000000000..1aef6b0983 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_pack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_sub.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_sub.S new file mode 120000 index 0000000000..8458eb6750 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_sub.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_unpack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/ge25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/ge25519.h new file mode 120000 index 0000000000..7630019869 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/ge25519.h @@ -0,0 +1 @@ +../amd64-maa4/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/ge25519_base.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/ge25519_base.S new file mode 100644 index 0000000000..4365df4561 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/ge25519_base.S @@ -0,0 +1,1753 @@ +// linker define base +// linker use vec1216 +// linker use vecmask23 +// linker use vecmask29 +// linker use pmask1 +// linker use pmask2 +// linker use pmask3 +// linker use pmask4 +// linker use pmask5 +// linker use pmask6 +// linker use pmask7 +// linker use pmask8 +// linker use pmask9 +// linker use pmask10 +// linker use pmask11 +// linker use pmask12 +// linker use upmask1 +// linker use upmask2 +// linker use upmask3 +// linker use upmask4 +// linker use upmask5 +// linker use upmask6 +// linker use upmask7 +// linker use upmask8 +// linker use mask63 + +/* Assembly for fixed base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(base) +.globl CRYPTO_SHARED_NAMESPACE(base) +_CRYPTO_SHARED_NAMESPACE(base): +CRYPTO_SHARED_NAMESPACE(base): + +movq %rsp,%r11 +andq $-32,%rsp +subq $1536,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) +movq %rsi,64(%rsp) +movq %rdx,72(%rsp) + +/* choose t and initialize r */ + +movq %rdx,%rcx +movzbl 0(%rsi),%eax +movsbq %al,%rdx +movq $0,%rsi + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %r11,%r15 +movq %r12,80(%rsp) +movq %r13,88(%rsp) +movq %r14,96(%rsp) + +// sub +subq %rsi,%r11 +sbbq %r9,%r12 +sbbq %rax,%r13 +sbbq %r10,%r14 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r11 +sbbq %rbx,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 + +cmovc %rbp,%rbx +subq %rbx,%r11 + +movq %r11,128(%rsp) +movq %r12,136(%rsp) +movq %r13,144(%rsp) +movq %r14,152(%rsp) + +// add +addq %r15,%rsi +adcq 80(%rsp),%r9 +adcq 88(%rsp),%rax +adcq 96(%rsp),%r10 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%r9 +adcq %rbx,%rax +adcq %rbx,%r10 + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,160(%rsp) +movq %r9,168(%rsp) +movq %rax,176(%rsp) +movq %r10,184(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,224(%rsp) +movq %r9,232(%rsp) +movq %rax,240(%rsp) +movq %r10,248(%rsp) + +movq $2,192(%rsp) +movq $0,200(%rsp) +movq $0,208(%rsp) +movq $0,216(%rsp) + +/* loop: i=1,i<64,i=i+1 */ + +movq $1,80(%rsp) + +.L: + +/* choose t */ + +movq 72(%rsp),%rcx +movq 80(%rsp),%rsi +movq 64(%rsp),%rdx +movzbl 0(%rdx,%rsi),%eax +movsbq %al,%rdx + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %rsi,256(%rsp) +movq %r9,264(%rsp) +movq %rax,272(%rsp) +movq %r10,280(%rsp) +movq %r11,288(%rsp) +movq %r12,296(%rsp) +movq %r13,304(%rsp) +movq %r14,312(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,320(%rsp) +movq %r9,328(%rsp) +movq %rax,336(%rsp) +movq %r10,344(%rsp) + +/* nielsadd2 */ + +// load +movq 160(%rsp),%rdx +movq 168(%rsp),%rcx +movq 176(%rsp),%r8 +movq 184(%rsp),%r9 + +// copy +movq %rdx,%rax +movq %rcx,%r10 +movq %r8,%r11 +movq %r9,%r12 + +// sub +subq 128(%rsp),%rdx +sbbq 136(%rsp),%rcx +sbbq 144(%rsp),%r8 +sbbq 152(%rsp),%r9 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +subq %r14,%rdx +sbbq %r13,%rcx +sbbq %r13,%r8 +sbbq %r13,%r9 + +cmovc %r14,%r13 +subq %r13,%rdx + +movq %rdx,352(%rsp) +movq %rcx,360(%rsp) +movq %r8,368(%rsp) +movq %r9,376(%rsp) + +// add +addq 128(%rsp),%rax +adcq 136(%rsp),%r10 +adcq 144(%rsp),%r11 +adcq 152(%rsp),%r12 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +addq %r14,%rax +adcq %r13,%r10 +adcq %r13,%r11 +adcq %r13,%r12 + +cmovc %r14,%r13 +addq %r13,%rax + +movq %rax,384(%rsp) +movq %r10,392(%rsp) +movq %r11,400(%rsp) +movq %r12,408(%rsp) + +// mul +movq 256(%rsp),%rdx + +mulx 352(%rsp),%r8,%r9 +mulx 360(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 368(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 376(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 264(%rsp),%rdx + +mulx 352(%rsp),%rax,%rbx +mulx 360(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 368(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 376(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 272(%rsp),%rdx + +mulx 352(%rsp),%rax,%rbx +mulx 360(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 368(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 376(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 280(%rsp),%rdx + +mulx 352(%rsp),%rax,%rbx +mulx 360(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 368(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 376(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,352(%rsp) +movq %r9,360(%rsp) +movq %r10,368(%rsp) +movq %r11,376(%rsp) + +// mul +movq 288(%rsp),%rdx + +mulx 384(%rsp),%r8,%r9 +mulx 392(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 400(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 408(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 296(%rsp),%rdx + +mulx 384(%rsp),%rax,%rbx +mulx 392(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 400(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 408(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 304(%rsp),%rdx + +mulx 384(%rsp),%rax,%rbx +mulx 392(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 400(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 408(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 312(%rsp),%rdx + +mulx 384(%rsp),%rax,%rbx +mulx 392(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 400(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 408(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// copy +movq %r8,%r12 +movq %r9,%r13 +movq %r10,%r14 +movq %r11,%r15 + +// sub +subq 352(%rsp),%r8 +sbbq 360(%rsp),%r9 +sbbq 368(%rsp),%r10 +sbbq 376(%rsp),%r11 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +subq %rbx,%r8 +sbbq %rax,%r9 +sbbq %rax,%r10 +sbbq %rax,%r11 + +cmovc %rbx,%rax +subq %rax,%r8 + +movq %r8,384(%rsp) +movq %r9,392(%rsp) +movq %r10,400(%rsp) +movq %r11,408(%rsp) + +// add +addq 352(%rsp),%r12 +adcq 360(%rsp),%r13 +adcq 368(%rsp),%r14 +adcq 376(%rsp),%r15 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +addq %rbx,%r12 +adcq %rax,%r13 +adcq %rax,%r14 +adcq %rax,%r15 + +cmovc %rbx,%rax +addq %rax,%r12 + +movq %r12,352(%rsp) +movq %r13,360(%rsp) +movq %r14,368(%rsp) +movq %r15,376(%rsp) + +// mul +movq 320(%rsp),%rdx + +mulx 224(%rsp),%r8,%r9 +mulx 232(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 240(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 248(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 328(%rsp),%rdx + +mulx 224(%rsp),%rax,%rbx +mulx 232(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 240(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 248(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 336(%rsp),%rdx + +mulx 224(%rsp),%rax,%rbx +mulx 232(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 240(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 248(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 344(%rsp),%rdx + +mulx 224(%rsp),%rax,%rbx +mulx 232(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 240(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 248(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq 192(%rsp),%r12 +movq 200(%rsp),%r13 +movq 208(%rsp),%r14 +movq 216(%rsp),%r15 + +// double +addq %r12,%r12 +adcq %r13,%r13 +adcq %r14,%r14 +adcq %r15,%r15 + +movq $0,%rbx +movq $38,%rax +cmovae %rbx,%rax + +addq %rax,%r12 +adcq %rbx,%r13 +adcq %rbx,%r14 +adcq %rbx,%r15 + +cmovc %rax,%rbx +addq %rbx,%r12 + +// copy +movq %r12,%rsi +movq %r13,%rax +movq %r14,%rcx +movq %r15,%rdx + +// sub +subq %r8,%r12 +sbbq %r9,%r13 +sbbq %r10,%r14 +sbbq %r11,%r15 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 +sbbq %rbx,%r15 + +cmovc %rbp,%rbx +subq %rbx,%r12 + +movq %r12,448(%rsp) +movq %r13,456(%rsp) +movq %r14,464(%rsp) +movq %r15,472(%rsp) + +// add +addq %r8,%rsi +adcq %r9,%rax +adcq %r10,%rcx +adcq %r11,%rdx + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%rax +adcq %rbx,%rcx +adcq %rbx,%rdx + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,416(%rsp) +movq %rax,424(%rsp) +movq %rcx,432(%rsp) +movq %rdx,440(%rsp) + +/* p1p1 to p3 */ + +// convert to 9x4 form +vmovdqa 384(%rsp),%ymm8 +vmovdqa 352(%rsp),%ymm9 +vmovdqa 416(%rsp),%ymm10 +vmovdqa 352(%rsp),%ymm11 + +vpunpcklqdq %ymm9,%ymm8,%ymm12 +vpunpckhqdq %ymm9,%ymm8,%ymm13 +vpunpcklqdq %ymm11,%ymm10,%ymm14 +vpunpckhqdq %ymm11,%ymm10,%ymm15 + +vpermq $68,%ymm14,%ymm7 +vpblendd $240,%ymm7,%ymm12,%ymm1 +vpermq $68,%ymm15,%ymm7 +vpblendd $240,%ymm7,%ymm13,%ymm2 +vpermq $238,%ymm12,%ymm7 +vpblendd $240,%ymm14,%ymm7,%ymm3 +vpermq $238,%ymm13,%ymm7 +vpblendd $240,%ymm15,%ymm7,%ymm4 + +vpand pmask1(%rip),%ymm1,%ymm10 + +vpand pmask2(%rip),%ymm1,%ymm11 +vpsrlq $29,%ymm11,%ymm11 + +vpand pmask3(%rip),%ymm1,%ymm7 +vpsrlq $58,%ymm7,%ymm7 +vpand pmask4(%rip),%ymm2,%ymm9 +vpsllq $6,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm12 + +vpand pmask5(%rip),%ymm2,%ymm13 +vpsrlq $23,%ymm13,%ymm13 + +vpand pmask6(%rip),%ymm2,%ymm7 +vpsrlq $52,%ymm7,%ymm7 +vpand pmask7(%rip),%ymm3,%ymm9 +vpsllq $12,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm5 + +vpand pmask8(%rip),%ymm3,%ymm6 +vpsrlq $17,%ymm6,%ymm6 + +vpand pmask9(%rip),%ymm3,%ymm7 +vpsrlq $46,%ymm7,%ymm7 +vpand pmask10(%rip),%ymm4,%ymm9 +vpsllq $18,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm7 + +vpand pmask11(%rip),%ymm4,%ymm8 +vpsrlq $11,%ymm8,%ymm8 + +vpand pmask12(%rip),%ymm4,%ymm9 +vpsrlq $40,%ymm9,%ymm9 + +vmovdqa %ymm10,1248(%rsp) +vmovdqa %ymm11,1280(%rsp) +vmovdqa %ymm12,1312(%rsp) +vmovdqa %ymm13,1344(%rsp) +vmovdqa %ymm5,1376(%rsp) +vmovdqa %ymm6,1408(%rsp) +vmovdqa %ymm7,1440(%rsp) +vmovdqa %ymm8,1472(%rsp) +vmovdqa %ymm9,1504(%rsp) + +// convert to 9x4 form +vmovdqa 448(%rsp),%ymm8 +vmovdqa 416(%rsp),%ymm9 +vmovdqa 448(%rsp),%ymm10 +vmovdqa 384(%rsp),%ymm11 + +vpunpcklqdq %ymm9,%ymm8,%ymm5 +vpunpckhqdq %ymm9,%ymm8,%ymm6 +vpunpcklqdq %ymm11,%ymm10,%ymm7 +vpunpckhqdq %ymm11,%ymm10,%ymm8 + +vpermq $68,%ymm7,%ymm9 +vpblendd $240,%ymm9,%ymm5,%ymm3 +vpermq $68,%ymm8,%ymm9 +vpblendd $240,%ymm9,%ymm6,%ymm4 +vpermq $238,%ymm5,%ymm9 +vpblendd $240,%ymm7,%ymm9,%ymm5 +vpermq $238,%ymm6,%ymm9 +vpblendd $240,%ymm8,%ymm9,%ymm6 + +vpand pmask1(%rip),%ymm3,%ymm10 + +vpand pmask2(%rip),%ymm3,%ymm11 +vpsrlq $29,%ymm11,%ymm11 + +vpand pmask3(%rip),%ymm3,%ymm7 +vpsrlq $58,%ymm7,%ymm7 +vpand pmask4(%rip),%ymm4,%ymm9 +vpsllq $6,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm12 + +vpand pmask5(%rip),%ymm4,%ymm13 +vpsrlq $23,%ymm13,%ymm13 + +vpand pmask6(%rip),%ymm4,%ymm7 +vpsrlq $52,%ymm7,%ymm7 +vpand pmask7(%rip),%ymm5,%ymm9 +vpsllq $12,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm0 + +vpand pmask8(%rip),%ymm5,%ymm1 +vpsrlq $17,%ymm1,%ymm1 + +vpand pmask9(%rip),%ymm5,%ymm7 +vpsrlq $46,%ymm7,%ymm7 +vpand pmask10(%rip),%ymm6,%ymm9 +vpsllq $18,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm2 + +vpand pmask11(%rip),%ymm6,%ymm3 +vpsrlq $11,%ymm3,%ymm3 + +vpand pmask12(%rip),%ymm6,%ymm4 +vpsrlq $40,%ymm4,%ymm4 + +vmovdqa 1376(%rsp),%ymm5 +vmovdqa 1408(%rsp),%ymm6 +vmovdqa 1440(%rsp),%ymm7 +vmovdqa 1472(%rsp),%ymm8 +vmovdqa 1504(%rsp),%ymm9 + +// mul4x1 +vpmuludq %ymm5,%ymm0,%ymm15 +vmovdqa %ymm15,480(%rsp) + +vpmuludq %ymm6,%ymm0,%ymm15 +vpmuludq %ymm5,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,512(%rsp) + +vpmuludq %ymm7,%ymm0,%ymm15 +vpmuludq %ymm6,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,544(%rsp) + +vpmuludq %ymm8,%ymm0,%ymm15 +vpmuludq %ymm7,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,576(%rsp) + +vpmuludq %ymm9,%ymm0,%ymm15 +vpmuludq %ymm8,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,608(%rsp) + +vpmuludq %ymm9,%ymm1,%ymm15 +vpmuludq %ymm8,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,640(%rsp) + +vpmuludq %ymm9,%ymm2,%ymm15 +vpmuludq %ymm8,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,672(%rsp) + +vpmuludq %ymm9,%ymm3,%ymm15 +vpmuludq %ymm8,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,704(%rsp) + +vpmuludq %ymm9,%ymm4,%ymm15 +vmovdqa %ymm15,736(%rsp) + +vpaddq %ymm10,%ymm0,%ymm0 +vpaddq %ymm11,%ymm1,%ymm1 +vpaddq %ymm12,%ymm2,%ymm2 +vpaddq %ymm13,%ymm3,%ymm3 +vpaddq 1248(%rsp),%ymm5,%ymm5 +vpaddq 1280(%rsp),%ymm6,%ymm6 +vpaddq 1312(%rsp),%ymm7,%ymm7 +vpaddq 1344(%rsp),%ymm8,%ymm8 + +vpmuludq 1248(%rsp),%ymm10,%ymm15 +vmovdqa %ymm15,768(%rsp) +vpaddq 480(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,992(%rsp) + +vpmuludq 1280(%rsp),%ymm10,%ymm15 +vpmuludq 1248(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,800(%rsp) +vpaddq 512(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1024(%rsp) + +vpmuludq 1312(%rsp),%ymm10,%ymm15 +vpmuludq 1280(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 1248(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,832(%rsp) +vpaddq 544(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1056(%rsp) + +vpmuludq 1344(%rsp),%ymm10,%ymm15 +vpmuludq 1312(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 1280(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 1248(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,864(%rsp) +vpaddq 576(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1088(%rsp) + +vpmuludq 1344(%rsp),%ymm11,%ymm15 +vpmuludq 1312(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 1280(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,896(%rsp) +vpaddq 608(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1120(%rsp) + +vpmuludq 1344(%rsp),%ymm12,%ymm15 +vpmuludq 1312(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,928(%rsp) +vpaddq 640(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1152(%rsp) + +vpmuludq 1344(%rsp),%ymm13,%ymm15 +vmovdqa %ymm15,960(%rsp) +vpaddq 672(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1184(%rsp) + +vpmuludq %ymm5,%ymm0,%ymm15 +vmovdqa %ymm15,1216(%rsp) + +vpmuludq %ymm6,%ymm0,%ymm15 +vpmuludq %ymm5,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm10 + +vpmuludq %ymm7,%ymm0,%ymm15 +vpmuludq %ymm6,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm11 + +vpmuludq %ymm8,%ymm0,%ymm15 +vpmuludq %ymm7,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm12 + +vpmuludq %ymm9,%ymm0,%ymm15 +vpmuludq %ymm8,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm13 + +vpmuludq %ymm9,%ymm1,%ymm15 +vpmuludq %ymm8,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm0 + +vpmuludq %ymm9,%ymm2,%ymm15 +vpmuludq %ymm8,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm1 + +vpmuludq %ymm9,%ymm3,%ymm15 +vpmuludq %ymm8,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm2 + +vpmuludq %ymm9,%ymm4,%ymm3 + +vmovdqa 1216(%rsp),%ymm9 + +vpsubq 992(%rsp),%ymm9,%ymm9 +vpaddq 896(%rsp),%ymm9,%ymm9 +vpsubq 1024(%rsp),%ymm10,%ymm10 +vpaddq 928(%rsp),%ymm10,%ymm10 +vpsubq 1056(%rsp),%ymm11,%ymm11 +vpaddq 960(%rsp),%ymm11,%ymm11 +vpsubq 1088(%rsp),%ymm12,%ymm12 +vpsubq 1120(%rsp),%ymm13,%ymm13 +vpaddq 480(%rsp),%ymm13,%ymm13 +vpsubq 1152(%rsp),%ymm0,%ymm0 +vpaddq 512(%rsp),%ymm0,%ymm0 +vpsubq 1184(%rsp),%ymm1,%ymm1 +vpaddq 544(%rsp),%ymm1,%ymm1 +vpsubq 704(%rsp),%ymm2,%ymm2 +vpaddq 576(%rsp),%ymm2,%ymm2 +vpsubq 736(%rsp),%ymm3,%ymm3 +vpaddq 608(%rsp),%ymm3,%ymm3 + +vpsrlq $29,%ymm0,%ymm14 +vpaddq %ymm14,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 +vpmuludq vec1216(%rip),%ymm0,%ymm0 +vpaddq 768(%rsp),%ymm0,%ymm0 + +vpsrlq $29,%ymm1,%ymm14 +vpaddq %ymm14,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 +vpmuludq vec1216(%rip),%ymm1,%ymm1 +vpaddq 800(%rsp),%ymm1,%ymm1 + +vpsrlq $29,%ymm2,%ymm14 +vpaddq %ymm14,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 +vpmuludq vec1216(%rip),%ymm2,%ymm2 +vpaddq 832(%rsp),%ymm2,%ymm2 + +vpsrlq $29,%ymm3,%ymm14 +vpaddq 640(%rsp),%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm3,%ymm3 +vpmuludq vec1216(%rip),%ymm3,%ymm3 +vpaddq 864(%rsp),%ymm3,%ymm3 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq 672(%rsp),%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm4 +vpmuludq vec1216(%rip),%ymm4,%ymm4 +vpaddq %ymm9,%ymm4,%ymm4 + +vpsrlq $29,%ymm15,%ymm14 +vpaddq 704(%rsp),%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm15,%ymm5 +vpmuludq vec1216(%rip),%ymm5,%ymm5 +vpaddq %ymm10,%ymm5,%ymm5 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq 736(%rsp),%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm6 +vpmuludq vec1216(%rip),%ymm6,%ymm6 +vpaddq %ymm11,%ymm6,%ymm6 + +vpsrlq $29,%ymm15,%ymm8 +vpand vecmask29(%rip),%ymm15,%ymm7 + +vpmuludq vec1216(%rip),%ymm7,%ymm7 +vpaddq %ymm12,%ymm7,%ymm7 +vpmuludq vec1216(%rip),%ymm8,%ymm8 +vpaddq %ymm13,%ymm8,%ymm8 + +vpsrlq $29,%ymm7,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 +vpand vecmask29(%rip),%ymm7,%ymm7 + +vpsrlq $23,%ymm8,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpaddq %ymm15,%ymm15,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpsllq $3,%ymm15,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpand vecmask23(%rip),%ymm8,%ymm8 + +vpsrlq $29,%ymm0,%ymm15 +vpaddq %ymm15,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +vpsrlq $29,%ymm1,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 + +vpsrlq $29,%ymm2,%ymm15 +vpaddq %ymm15,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 + +vpsrlq $29,%ymm3,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 +vpand vecmask29(%rip),%ymm3,%ymm3 + +vpsrlq $29,%ymm4,%ymm15 +vpaddq %ymm15,%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm5,%ymm15 +vpaddq %ymm15,%ymm6,%ymm6 +vpand vecmask29(%rip),%ymm5,%ymm5 + +vpsrlq $29,%ymm6,%ymm15 +vpaddq %ymm15,%ymm7,%ymm7 +vpand vecmask29(%rip),%ymm6,%ymm6 + +vpsrlq $29,%ymm7,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 +vpand vecmask29(%rip),%ymm7,%ymm7 + +// get back to 4x4 form +vpand upmask1(%rip),%ymm0,%ymm10 +vpand upmask1(%rip),%ymm1,%ymm11 +vpsllq $29,%ymm11,%ymm11 +vpor %ymm10,%ymm11,%ymm10 +vpand upmask2(%rip),%ymm2,%ymm11 +vpsllq $58,%ymm11,%ymm11 +vpor %ymm10,%ymm11,%ymm10 + +vpand upmask6(%rip),%ymm2,%ymm11 +vpsrlq $6,%ymm11,%ymm11 +vpand upmask1(%rip),%ymm3,%ymm12 +vpsllq $23,%ymm12,%ymm12 +vpor %ymm11,%ymm12,%ymm11 +vpand upmask3(%rip),%ymm4,%ymm12 +vpsllq $52,%ymm12,%ymm12 +vpor %ymm11,%ymm12,%ymm11 + +vpand upmask7(%rip),%ymm4,%ymm12 +vpsrlq $12,%ymm12,%ymm12 +vpand upmask1(%rip),%ymm5,%ymm13 +vpsllq $17,%ymm13,%ymm13 +vpor %ymm12,%ymm13,%ymm12 +vpand upmask4(%rip),%ymm6,%ymm13 +vpsllq $46,%ymm13,%ymm13 +vpor %ymm12,%ymm13,%ymm12 + +vpand upmask8(%rip),%ymm6,%ymm13 +vpsrlq $18,%ymm13,%ymm13 +vpand upmask1(%rip),%ymm7,%ymm14 +vpsllq $11,%ymm14,%ymm14 +vpor %ymm13,%ymm14,%ymm13 +vpand upmask5(%rip),%ymm8,%ymm14 +vpsllq $40,%ymm14,%ymm14 +vpor %ymm13,%ymm14,%ymm13 + +vpunpcklqdq %ymm11,%ymm10,%ymm2 +vpunpckhqdq %ymm11,%ymm10,%ymm3 +vpunpcklqdq %ymm13,%ymm12,%ymm4 +vpunpckhqdq %ymm13,%ymm12,%ymm5 + +vpermq $68,%ymm4,%ymm7 +vpblendd $240,%ymm7,%ymm2,%ymm10 +vpermq $68,%ymm5,%ymm7 +vpblendd $240,%ymm7,%ymm3,%ymm11 +vpermq $238,%ymm2,%ymm7 +vpblendd $240,%ymm4,%ymm7,%ymm12 +vpermq $238,%ymm3,%ymm7 +vpblendd $240,%ymm5,%ymm7,%ymm13 + +vmovdqa %ymm10,128(%rsp) +vmovdqa %ymm11,160(%rsp) +vmovdqa %ymm12,192(%rsp) +vmovdqa %ymm13,224(%rsp) + +movq 80(%rsp),%r15 +addq $1,%r15 +movq %r15,80(%rsp) +cmpq $63,%r15 + +jle .L + +/* store final value of r */ + +movq 56(%rsp),%rdi + +movq 128(%rsp),%r8 +movq 136(%rsp),%r9 +movq 144(%rsp),%r10 +movq 152(%rsp),%r11 + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 160(%rsp),%r8 +movq 168(%rsp),%r9 +movq 176(%rsp),%r10 +movq 184(%rsp),%r11 + +movq %r8,32(%rdi) +movq %r9,40(%rdi) +movq %r10,48(%rdi) +movq %r11,56(%rdi) + +movq 192(%rsp),%r8 +movq 200(%rsp),%r9 +movq 208(%rsp),%r10 +movq 216(%rsp),%r11 + +movq %r8,64(%rdi) +movq %r9,72(%rdi) +movq %r10,80(%rdi) +movq %r11,88(%rdi) + +movq 224(%rsp),%r8 +movq 232(%rsp),%r9 +movq 240(%rsp),%r10 +movq 248(%rsp),%r11 + +movq %r8,96(%rdi) +movq %r9,104(%rdi) +movq %r10,112(%rdi) +movq %r11,120(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/ge25519_base_niels.data b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/ge25519_base_niels.data new file mode 120000 index 0000000000..a9e965b8ac --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/ge25519_base_niels.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_niels.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/ge25519_scalarmult_base.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/ge25519_scalarmult_base.c new file mode 120000 index 0000000000..b77a6e2f45 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/ge25519_scalarmult_base.c @@ -0,0 +1 @@ +../amd64-maa4/ge25519_scalarmult_base.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/implementors b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/implementors new file mode 120000 index 0000000000..7c9c13e712 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/implementors @@ -0,0 +1 @@ +../amd64-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/nG.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/nG.c new file mode 120000 index 0000000000..3979d79b05 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/nG.c @@ -0,0 +1 @@ +../amd64-51/nG.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/sc25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/sc25519_window4.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/sc25519_window4.c new file mode 120000 index 0000000000..b54931e1bf --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/sc25519_window4.c @@ -0,0 +1 @@ +../amd64-51/sc25519_window4.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/shared-base-data.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/shared-base-data.c new file mode 120000 index 0000000000..c8311fd6f9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/shared-base-data.c @@ -0,0 +1 @@ +../amd64-64/shared-base-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/shared-consts.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/shared-consts.c new file mode 120000 index 0000000000..217537b59a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx2-9l-mxaa/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx2-9l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/architectures b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/architectures new file mode 120000 index 0000000000..7a05222575 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/consts_namespace.h new file mode 100644 index 0000000000..fb69c468d6 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/consts_namespace.h @@ -0,0 +1,28 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vec608 CRYPTO_SHARED_NAMESPACE(vec608) +#define vecmask47 CRYPTO_SHARED_NAMESPACE(vecmask47) +#define vecmask52 CRYPTO_SHARED_NAMESPACE(vecmask52) +#define pmask1 CRYPTO_SHARED_NAMESPACE(pmask1) +#define pmask2 CRYPTO_SHARED_NAMESPACE(pmask2) +#define pmask3 CRYPTO_SHARED_NAMESPACE(pmask3) +#define pmask4 CRYPTO_SHARED_NAMESPACE(pmask4) +#define pmask5 CRYPTO_SHARED_NAMESPACE(pmask5) +#define pmask6 CRYPTO_SHARED_NAMESPACE(pmask6) +#define pmask7 CRYPTO_SHARED_NAMESPACE(pmask7) +#define pmask8 CRYPTO_SHARED_NAMESPACE(pmask8) +#define upmask1 CRYPTO_SHARED_NAMESPACE(upmask1) +#define upmask2 CRYPTO_SHARED_NAMESPACE(upmask2) +#define upmask3 CRYPTO_SHARED_NAMESPACE(upmask3) +#define upmask4 CRYPTO_SHARED_NAMESPACE(upmask4) +#define upmask5 CRYPTO_SHARED_NAMESPACE(upmask5) +#define upmask6 CRYPTO_SHARED_NAMESPACE(upmask6) +#define upmask7 CRYPTO_SHARED_NAMESPACE(upmask7) +//#define upmask8 CRYPTO_SHARED_NAMESPACE(upmask8) + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519.h new file mode 120000 index 0000000000..d0a29945e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_add.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_add.S new file mode 120000 index 0000000000..d4acd5b571 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_add.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_cmov.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_cmov.c new file mode 120000 index 0000000000..b0f28207ef --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_cmov.c @@ -0,0 +1 @@ +../amd64-64/fe25519_cmov.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_getparity.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_getparity.c new file mode 120000 index 0000000000..c23ba9ce3d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_getparity.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_mul.S new file mode 120000 index 0000000000..a969f86af4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..a5dcdec138 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_square.S new file mode 120000 index 0000000000..07c854965f --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_sub.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_sub.S new file mode 120000 index 0000000000..8458eb6750 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_sub.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/ge25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/ge25519.h new file mode 120000 index 0000000000..7630019869 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/ge25519.h @@ -0,0 +1 @@ +../amd64-maa4/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/ge25519_base.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/ge25519_base.S new file mode 100644 index 0000000000..f8bc49e38c --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/ge25519_base.S @@ -0,0 +1,1572 @@ +// linker define base +// linker use vec19 +// linker use vec608 +// linker use vecmask47 +// linker use vecmask52 +// linker use pmask1 +// linker use pmask2 +// linker use pmask3 +// linker use pmask4 +// linker use pmask5 +// linker use pmask6 +// linker use pmask7 +// linker use pmask8 +// linker use upmask1 +// linker use upmask2 +// linker use upmask3 +// linker use upmask4 +// linker use upmask5 +// linker use upmask6 +// linker use upmask7 +// linker use mask63 + +/* Assembly for fixed base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#include "consts_namespace.h" + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(base) +.globl CRYPTO_SHARED_NAMESPACE(base) +_CRYPTO_SHARED_NAMESPACE(base): +CRYPTO_SHARED_NAMESPACE(base): + +movq %rsp,%r11 +andq $-32,%rsp +subq $512,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) +movq %rsi,64(%rsp) +movq %rdx,72(%rsp) + +/* choose t and initialize r */ + +movq %rdx,%rcx +movzbl 0(%rsi),%eax +movsbq %al,%rdx +movq $0,%rsi + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %r11,%r15 +movq %r12,80(%rsp) +movq %r13,88(%rsp) +movq %r14,96(%rsp) + +// sub +subq %rsi,%r11 +sbbq %r9,%r12 +sbbq %rax,%r13 +sbbq %r10,%r14 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r11 +sbbq %rbx,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 + +cmovc %rbp,%rbx +subq %rbx,%r11 + +movq %r11,128(%rsp) +movq %r12,136(%rsp) +movq %r13,144(%rsp) +movq %r14,152(%rsp) + +// add +addq %r15,%rsi +adcq 80(%rsp),%r9 +adcq 88(%rsp),%rax +adcq 96(%rsp),%r10 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%r9 +adcq %rbx,%rax +adcq %rbx,%r10 + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,160(%rsp) +movq %r9,168(%rsp) +movq %rax,176(%rsp) +movq %r10,184(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,224(%rsp) +movq %r9,232(%rsp) +movq %rax,240(%rsp) +movq %r10,248(%rsp) + +movq $2,192(%rsp) +movq $0,200(%rsp) +movq $0,208(%rsp) +movq $0,216(%rsp) + +/* loop: i=1,i<64,i=i+1 */ + +movq $1,80(%rsp) + +.L: + +/* choose t */ + +movq 72(%rsp),%rcx +movq 80(%rsp),%rsi +movq 64(%rsp),%rdx +movzbl 0(%rdx,%rsi),%eax +movsbq %al,%rdx + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %rsi,256(%rsp) +movq %r9,264(%rsp) +movq %rax,272(%rsp) +movq %r10,280(%rsp) +movq %r11,288(%rsp) +movq %r12,296(%rsp) +movq %r13,304(%rsp) +movq %r14,312(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,320(%rsp) +movq %r9,328(%rsp) +movq %rax,336(%rsp) +movq %r10,344(%rsp) + +/* nielsadd2 */ + +// load +movq 160(%rsp),%rdx +movq 168(%rsp),%rcx +movq 176(%rsp),%r8 +movq 184(%rsp),%r9 + +// copy +movq %rdx,%rax +movq %rcx,%r10 +movq %r8,%r11 +movq %r9,%r12 + +// sub +subq 128(%rsp),%rdx +sbbq 136(%rsp),%rcx +sbbq 144(%rsp),%r8 +sbbq 152(%rsp),%r9 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +subq %r14,%rdx +sbbq %r13,%rcx +sbbq %r13,%r8 +sbbq %r13,%r9 + +cmovc %r14,%r13 +subq %r13,%rdx + +movq %rdx,352(%rsp) +movq %rcx,360(%rsp) +movq %r8,368(%rsp) +movq %r9,376(%rsp) + +// add +addq 128(%rsp),%rax +adcq 136(%rsp),%r10 +adcq 144(%rsp),%r11 +adcq 152(%rsp),%r12 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +addq %r14,%rax +adcq %r13,%r10 +adcq %r13,%r11 +adcq %r13,%r12 + +cmovc %r14,%r13 +addq %r13,%rax + +movq %rax,384(%rsp) +movq %r10,392(%rsp) +movq %r11,400(%rsp) +movq %r12,408(%rsp) + +// mul +xorq %r13,%r13 +movq 256(%rsp),%rdx + +mulx 352(%rsp),%r8,%r9 +mulx 360(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 368(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 376(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 264(%rsp),%rdx + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 272(%rsp),%rdx + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 280(%rsp),%rdx + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,352(%rsp) +movq %r9,360(%rsp) +movq %r10,368(%rsp) +movq %r11,376(%rsp) + +// mul +xorq %r13,%r13 +movq 288(%rsp),%rdx + +mulx 384(%rsp),%r8,%r9 +mulx 392(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 400(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 408(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 296(%rsp),%rdx + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 304(%rsp),%rdx + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 312(%rsp),%rdx + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// copy +movq %r8,%r12 +movq %r9,%r13 +movq %r10,%r14 +movq %r11,%r15 + +// sub +subq 352(%rsp),%r8 +sbbq 360(%rsp),%r9 +sbbq 368(%rsp),%r10 +sbbq 376(%rsp),%r11 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +subq %rbx,%r8 +sbbq %rax,%r9 +sbbq %rax,%r10 +sbbq %rax,%r11 + +cmovc %rbx,%rax +subq %rax,%r8 + +movq %r8,384(%rsp) +movq %r9,392(%rsp) +movq %r10,400(%rsp) +movq %r11,408(%rsp) + +// add +addq 352(%rsp),%r12 +adcq 360(%rsp),%r13 +adcq 368(%rsp),%r14 +adcq 376(%rsp),%r15 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +addq %rbx,%r12 +adcq %rax,%r13 +adcq %rax,%r14 +adcq %rax,%r15 + +cmovc %rbx,%rax +addq %rax,%r12 + +movq %r12,352(%rsp) +movq %r13,360(%rsp) +movq %r14,368(%rsp) +movq %r15,376(%rsp) + +// mul +xorq %r13,%r13 +movq 320(%rsp),%rdx + +mulx 224(%rsp),%r8,%r9 +mulx 232(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 240(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 248(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 328(%rsp),%rdx + +mulx 224(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 232(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 240(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 248(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 336(%rsp),%rdx + +mulx 224(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 232(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 240(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 248(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 344(%rsp),%rdx + +mulx 224(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 232(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 240(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 248(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq 192(%rsp),%r12 +movq 200(%rsp),%r13 +movq 208(%rsp),%r14 +movq 216(%rsp),%r15 + +// double +addq %r12,%r12 +adcq %r13,%r13 +adcq %r14,%r14 +adcq %r15,%r15 + +movq $0,%rbx +movq $38,%rax +cmovae %rbx,%rax + +addq %rax,%r12 +adcq %rbx,%r13 +adcq %rbx,%r14 +adcq %rbx,%r15 + +cmovc %rax,%rbx +addq %rbx,%r12 + +// copy +movq %r12,%rsi +movq %r13,%rax +movq %r14,%rcx +movq %r15,%rdx + +// sub +subq %r8,%r12 +sbbq %r9,%r13 +sbbq %r10,%r14 +sbbq %r11,%r15 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 +sbbq %rbx,%r15 + +cmovc %rbp,%rbx +subq %rbx,%r12 + +movq %r12,448(%rsp) +movq %r13,456(%rsp) +movq %r14,464(%rsp) +movq %r15,472(%rsp) + +// add +addq %r8,%rsi +adcq %r9,%rax +adcq %r10,%rcx +adcq %r11,%rdx + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%rax +adcq %rbx,%rcx +adcq %rbx,%rdx + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,416(%rsp) +movq %rax,424(%rsp) +movq %rcx,432(%rsp) +movq %rdx,440(%rsp) + +/* p1p1 to p3 */ + +// convert to 5x4 form +vmovdqa 384(%rsp),%ymm8 +vmovdqa 352(%rsp),%ymm9 +vmovdqa 416(%rsp),%ymm10 +vmovdqa 352(%rsp),%ymm11 + +vpunpcklqdq %ymm9,%ymm8,%ymm12 +vpunpckhqdq %ymm9,%ymm8,%ymm13 +vpunpcklqdq %ymm11,%ymm10,%ymm14 +vpunpckhqdq %ymm11,%ymm10,%ymm15 + +vpermq $68,%ymm14,%ymm7 +vpblendd $240,%ymm7,%ymm12,%ymm10 +vpermq $68,%ymm15,%ymm7 +vpblendd $240,%ymm7,%ymm13,%ymm11 +vpermq $238,%ymm12,%ymm7 +vpblendd $240,%ymm14,%ymm7,%ymm12 +vpermq $238,%ymm13,%ymm7 +vpblendd $240,%ymm15,%ymm7,%ymm13 + +vpand pmask1(%rip),%ymm10,%ymm5 + +vpand pmask2(%rip),%ymm10,%ymm6 +vpsrlq $52,%ymm6,%ymm6 +vpand pmask3(%rip),%ymm11,%ymm7 +vpsllq $12,%ymm7,%ymm7 +vpor %ymm7,%ymm6,%ymm6 + +vpand pmask4(%rip),%ymm11,%ymm7 +vpsrlq $40,%ymm7,%ymm7 +vpand pmask5(%rip),%ymm12,%ymm8 +vpsllq $24,%ymm8,%ymm8 +vpor %ymm8,%ymm7,%ymm7 + +vpand pmask6(%rip),%ymm12,%ymm8 +vpsrlq $28,%ymm8,%ymm8 +vpand pmask7(%rip),%ymm13,%ymm9 +vpsllq $36,%ymm9,%ymm9 +vpor %ymm9,%ymm8,%ymm8 + +vpand pmask8(%rip),%ymm13,%ymm9 +vpsrlq $16,%ymm9,%ymm9 + +// convert to 5x4 form +vmovdqa 448(%rsp),%ymm0 +vmovdqa 416(%rsp),%ymm1 +vmovdqa 448(%rsp),%ymm2 +vmovdqa 384(%rsp),%ymm3 + +vpunpcklqdq %ymm1,%ymm0,%ymm12 +vpunpckhqdq %ymm1,%ymm0,%ymm13 +vpunpcklqdq %ymm3,%ymm2,%ymm14 +vpunpckhqdq %ymm3,%ymm2,%ymm15 + +vpermq $68,%ymm14,%ymm0 +vpblendd $240,%ymm0,%ymm12,%ymm10 +vpermq $68,%ymm15,%ymm0 +vpblendd $240,%ymm0,%ymm13,%ymm11 +vpermq $238,%ymm12,%ymm0 +vpblendd $240,%ymm14,%ymm0,%ymm12 +vpermq $238,%ymm13,%ymm0 +vpblendd $240,%ymm15,%ymm0,%ymm13 + +vpand pmask1(%rip),%ymm10,%ymm0 + +vpand pmask2(%rip),%ymm10,%ymm1 +vpsrlq $52,%ymm1,%ymm1 +vpand pmask3(%rip),%ymm11,%ymm2 +vpsllq $12,%ymm2,%ymm2 +vpor %ymm2,%ymm1,%ymm1 + +vpand pmask4(%rip),%ymm11,%ymm2 +vpsrlq $40,%ymm2,%ymm2 +vpand pmask5(%rip),%ymm12,%ymm3 +vpsllq $24,%ymm3,%ymm3 +vpor %ymm3,%ymm2,%ymm2 + +vpand pmask6(%rip),%ymm12,%ymm3 +vpsrlq $28,%ymm3,%ymm3 +vpand pmask7(%rip),%ymm13,%ymm4 +vpsllq $36,%ymm4,%ymm4 +vpor %ymm4,%ymm3,%ymm3 + +vpand pmask8(%rip),%ymm13,%ymm4 +vpsrlq $16,%ymm4,%ymm4 + +// mul4x1 +vpxorq %ymm10,%ymm10,%ymm10 +vpxorq %ymm11,%ymm11,%ymm11 +vpxorq %ymm12,%ymm12,%ymm12 +vpxorq %ymm13,%ymm13,%ymm13 +vpxorq %ymm14,%ymm14,%ymm14 +vpxorq %ymm15,%ymm15,%ymm15 +vpxorq %ymm16,%ymm16,%ymm16 +vpxorq %ymm17,%ymm17,%ymm17 +vpxorq %ymm18,%ymm18,%ymm18 +vpxorq %ymm19,%ymm19,%ymm19 + +vpxorq %ymm25,%ymm25,%ymm25 +vpxorq %ymm26,%ymm26,%ymm26 +vpxorq %ymm27,%ymm27,%ymm27 +vpxorq %ymm28,%ymm28,%ymm28 +vpxorq %ymm29,%ymm29,%ymm29 +vpxorq %ymm30,%ymm30,%ymm30 +vpxorq %ymm31,%ymm31,%ymm31 + +vpmadd52luq %ymm0,%ymm5,%ymm10 +vpmadd52huq %ymm0,%ymm5,%ymm11 + +vpmadd52luq %ymm0,%ymm6,%ymm25 +vpmadd52huq %ymm0,%ymm6,%ymm12 +vpmadd52luq %ymm1,%ymm5,%ymm25 +vpmadd52huq %ymm1,%ymm5,%ymm12 + +vpaddq %ymm25,%ymm11,%ymm11 + +vpmadd52luq %ymm0,%ymm7,%ymm26 +vpmadd52huq %ymm0,%ymm7,%ymm13 +vpmadd52luq %ymm1,%ymm6,%ymm26 +vpmadd52huq %ymm1,%ymm6,%ymm13 +vpmadd52luq %ymm2,%ymm5,%ymm26 +vpmadd52huq %ymm2,%ymm5,%ymm13 + +vpaddq %ymm26,%ymm12,%ymm12 + +vpmadd52luq %ymm0,%ymm8,%ymm27 +vpmadd52huq %ymm0,%ymm8,%ymm14 +vpmadd52luq %ymm1,%ymm7,%ymm27 +vpmadd52huq %ymm1,%ymm7,%ymm14 +vpmadd52luq %ymm2,%ymm6,%ymm27 +vpmadd52huq %ymm2,%ymm6,%ymm14 +vpmadd52luq %ymm3,%ymm5,%ymm27 +vpmadd52huq %ymm3,%ymm5,%ymm14 + +vpaddq %ymm27,%ymm13,%ymm13 + +vpmadd52luq %ymm0,%ymm9,%ymm28 +vpmadd52huq %ymm0,%ymm9,%ymm15 +vpmadd52luq %ymm1,%ymm8,%ymm28 +vpmadd52huq %ymm1,%ymm8,%ymm15 +vpmadd52luq %ymm2,%ymm7,%ymm28 +vpmadd52huq %ymm2,%ymm7,%ymm15 +vpmadd52luq %ymm3,%ymm6,%ymm28 +vpmadd52huq %ymm3,%ymm6,%ymm15 +vpmadd52luq %ymm4,%ymm5,%ymm28 +vpmadd52huq %ymm4,%ymm5,%ymm15 + +vpaddq %ymm28,%ymm14,%ymm14 + +vpmadd52luq %ymm1,%ymm9,%ymm29 +vpmadd52huq %ymm1,%ymm9,%ymm16 +vpmadd52luq %ymm2,%ymm8,%ymm29 +vpmadd52huq %ymm2,%ymm8,%ymm16 +vpmadd52luq %ymm3,%ymm7,%ymm29 +vpmadd52huq %ymm3,%ymm7,%ymm16 +vpmadd52luq %ymm4,%ymm6,%ymm29 +vpmadd52huq %ymm4,%ymm6,%ymm16 + +vpaddq %ymm29,%ymm15,%ymm15 + +vpmadd52luq %ymm2,%ymm9,%ymm30 +vpmadd52huq %ymm2,%ymm9,%ymm17 +vpmadd52luq %ymm3,%ymm8,%ymm30 +vpmadd52huq %ymm3,%ymm8,%ymm17 +vpmadd52luq %ymm4,%ymm7,%ymm30 +vpmadd52huq %ymm4,%ymm7,%ymm17 + +vpaddq %ymm30,%ymm16,%ymm16 + +vpmadd52luq %ymm3,%ymm9,%ymm31 +vpmadd52huq %ymm3,%ymm9,%ymm18 +vpmadd52luq %ymm4,%ymm8,%ymm31 +vpmadd52huq %ymm4,%ymm8,%ymm18 + +vpaddq %ymm31,%ymm17,%ymm17 + +vpmadd52luq %ymm4,%ymm9,%ymm18 +vpmadd52huq %ymm4,%ymm9,%ymm19 + +vpsrlq $52,%ymm15,%ymm22 +vpaddq %ymm22,%ymm16,%ymm16 +vpandq vecmask52(%rip),%ymm15,%ymm15 +vpmadd52luq vec608(%rip),%ymm15,%ymm10 +vpmadd52huq vec608(%rip),%ymm15,%ymm11 + +vpsrlq $52,%ymm16,%ymm22 +vpaddq %ymm22,%ymm17,%ymm17 +vpandq vecmask52(%rip),%ymm16,%ymm16 +vpmadd52luq vec608(%rip),%ymm16,%ymm11 +vpmadd52huq vec608(%rip),%ymm16,%ymm12 + +vpsrlq $52,%ymm17,%ymm22 +vpaddq %ymm22,%ymm18,%ymm18 +vpandq vecmask52(%rip),%ymm17,%ymm17 +vpmadd52luq vec608(%rip),%ymm17,%ymm12 +vpmadd52huq vec608(%rip),%ymm17,%ymm13 + +vpsrlq $52,%ymm18,%ymm22 +vpaddq %ymm22,%ymm19,%ymm19 +vpandq vecmask52(%rip),%ymm18,%ymm18 +vpmadd52luq vec608(%rip),%ymm18,%ymm13 +vpmadd52huq vec608(%rip),%ymm18,%ymm14 + +vpxorq %ymm15,%ymm15,%ymm15 +vpmadd52luq vec608(%rip),%ymm19,%ymm14 +vpmadd52huq vec608(%rip),%ymm19,%ymm15 + +vpmadd52luq vec608(%rip),%ymm15,%ymm10 + +vpsrlq $52,%ymm13,%ymm22 +vpaddq %ymm22,%ymm14,%ymm14 +vpandq vecmask52(%rip),%ymm13,%ymm13 + +vpsrlq $47,%ymm14,%ymm22 +vpandq vecmask47(%rip),%ymm14,%ymm14 +vpmadd52luq vec19(%rip),%ymm22,%ymm10 + +vpsrlq $52,%ymm10,%ymm22 +vpaddq %ymm22,%ymm11,%ymm11 +vpandq vecmask52(%rip),%ymm10,%ymm10 + +vpsrlq $52,%ymm11,%ymm22 +vpaddq %ymm22,%ymm12,%ymm12 +vpandq vecmask52(%rip),%ymm11,%ymm11 + +vpsrlq $52,%ymm12,%ymm22 +vpaddq %ymm22,%ymm13,%ymm13 +vpandq vecmask52(%rip),%ymm12,%ymm12 + +vpsrlq $52,%ymm13,%ymm22 +vpaddq %ymm22,%ymm14,%ymm14 +vpandq vecmask52(%rip),%ymm13,%ymm13 + +// get back to 4x4 form +vpand upmask1(%rip),%ymm10,%ymm0 +vpand upmask2(%rip),%ymm11,%ymm1 +vpsllq $52,%ymm1,%ymm1 +vpor %ymm1,%ymm0,%ymm0 + +vpand upmask3(%rip),%ymm11,%ymm1 +vpsrlq $12,%ymm1,%ymm1 +vpand upmask4(%rip),%ymm12,%ymm2 +vpsllq $40,%ymm2,%ymm2 +vpor %ymm2,%ymm1,%ymm1 + +vpand upmask5(%rip),%ymm12,%ymm2 +vpsrlq $24,%ymm2,%ymm2 +vpand upmask6(%rip),%ymm13,%ymm3 +vpsllq $28,%ymm3,%ymm3 +vpor %ymm3,%ymm2,%ymm2 + +vpand upmask7(%rip),%ymm13,%ymm3 +vpsrlq $36,%ymm3,%ymm3 +vpand upmask1(%rip),%ymm14,%ymm4 +vpsllq $16,%ymm4,%ymm4 +vpor %ymm4,%ymm3,%ymm3 + +vpunpcklqdq %ymm1,%ymm0,%ymm12 +vpunpckhqdq %ymm1,%ymm0,%ymm13 +vpunpcklqdq %ymm3,%ymm2,%ymm14 +vpunpckhqdq %ymm3,%ymm2,%ymm15 + +vpermq $68,%ymm14,%ymm7 +vpblendd $240,%ymm7,%ymm12,%ymm0 +vpermq $68,%ymm15,%ymm7 +vpblendd $240,%ymm7,%ymm13,%ymm1 +vpermq $238,%ymm12,%ymm7 +vpblendd $240,%ymm14,%ymm7,%ymm2 +vpermq $238,%ymm13,%ymm7 +vpblendd $240,%ymm15,%ymm7,%ymm3 + +vmovdqa %ymm0,128(%rsp) +vmovdqa %ymm1,160(%rsp) +vmovdqa %ymm2,192(%rsp) +vmovdqa %ymm3,224(%rsp) + +movq 80(%rsp),%r15 +addq $1,%r15 +movq %r15,80(%rsp) +cmpq $63,%r15 + +jle .L + +/* store final value of r */ + +movq 56(%rsp),%rdi + +movq 128(%rsp),%r8 +movq 136(%rsp),%r9 +movq 144(%rsp),%r10 +movq 152(%rsp),%r11 + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 160(%rsp),%r8 +movq 168(%rsp),%r9 +movq 176(%rsp),%r10 +movq 184(%rsp),%r11 + +movq %r8,32(%rdi) +movq %r9,40(%rdi) +movq %r10,48(%rdi) +movq %r11,56(%rdi) + +movq 192(%rsp),%r8 +movq 200(%rsp),%r9 +movq 208(%rsp),%r10 +movq 216(%rsp),%r11 + +movq %r8,64(%rdi) +movq %r9,72(%rdi) +movq %r10,80(%rdi) +movq %r11,88(%rdi) + +movq 224(%rsp),%r8 +movq 232(%rsp),%r9 +movq 240(%rsp),%r10 +movq 248(%rsp),%r11 + +movq %r8,96(%rdi) +movq %r9,104(%rdi) +movq %r10,112(%rdi) +movq %r11,120(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/ge25519_base_niels.data b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/ge25519_base_niels.data new file mode 120000 index 0000000000..a9e965b8ac --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/ge25519_base_niels.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_niels.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/ge25519_scalarmult_base.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/ge25519_scalarmult_base.c new file mode 120000 index 0000000000..b77a6e2f45 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/ge25519_scalarmult_base.c @@ -0,0 +1 @@ +../amd64-maa4/ge25519_scalarmult_base.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/implementors b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/implementors new file mode 120000 index 0000000000..7c9c13e712 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/implementors @@ -0,0 +1 @@ +../amd64-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/nG.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/nG.c new file mode 120000 index 0000000000..3979d79b05 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/nG.c @@ -0,0 +1 @@ +../amd64-51/nG.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/sc25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/sc25519_window4.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/sc25519_window4.c new file mode 120000 index 0000000000..b54931e1bf --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/sc25519_window4.c @@ -0,0 +1 @@ +../amd64-51/sc25519_window4.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/shared-base-data.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/shared-base-data.c new file mode 120000 index 0000000000..c8311fd6f9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/shared-base-data.c @@ -0,0 +1 @@ +../amd64-64/shared-base-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/shared-consts.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/shared-consts.c new file mode 100644 index 0000000000..ea5f45fc6f --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-avx512ifma-5l-maax/shared-consts.c @@ -0,0 +1,80 @@ +// linker define vec19 +// linker define vec608 +// linker define vecmask47 +// linker define vecmask52 +// linker define pmask1 +// linker define pmask2 +// linker define pmask3 +// linker define pmask4 +// linker define pmask5 +// linker define pmask6 +// linker define pmask7 +// linker define pmask8 +// linker define upmask1 +// linker define upmask2 +// linker define upmask3 +// linker define upmask4 +// linker define upmask5 +// linker define upmask6 +// linker define upmask7 +// linker define mask63 +// linker define 121666 +// linker define MU0 +// linker define MU1 +// linker define MU2 +// linker define MU3 +// linker define MU4 +// linker define ORDER0 +// linker define ORDER1 +// linker define ORDER2 +// linker define ORDER3 +// linker define EC2D0 +// linker define EC2D1 +// linker define EC2D2 +// linker define EC2D3 +// linker define 38 + +#include "crypto_uint64.h" +#include "consts_namespace.h" + +const crypto_uint64 vec19[] = { 19,19,19,19 }; +const crypto_uint64 vec608[] = { 608,608,608,608 }; +const crypto_uint64 vecmask47[] = { 0x7FFFFFFFFFFF,0x7FFFFFFFFFFF,0x7FFFFFFFFFFF,0x7FFFFFFFFFFF }; +const crypto_uint64 vecmask52[] = { 0xFFFFFFFFFFFFF,0xFFFFFFFFFFFFF,0xFFFFFFFFFFFFF,0xFFFFFFFFFFFFF }; +const crypto_uint64 pmask1[] = { 0x000FFFFFFFFFFFFF,0x000FFFFFFFFFFFFF,0x000FFFFFFFFFFFFF,0x000FFFFFFFFFFFFF }; +const crypto_uint64 pmask2[] = { 0xFFF0000000000000,0xFFF0000000000000,0xFFF0000000000000,0xFFF0000000000000 }; +const crypto_uint64 pmask3[] = { 0x000000FFFFFFFFFF,0x000000FFFFFFFFFF,0x000000FFFFFFFFFF,0x000000FFFFFFFFFF }; +const crypto_uint64 pmask4[] = { 0xFFFFFF0000000000,0xFFFFFF0000000000,0xFFFFFF0000000000,0xFFFFFF0000000000 }; +const crypto_uint64 pmask5[] = { 0x000000000FFFFFFF,0x000000000FFFFFFF,0x000000000FFFFFFF,0x000000000FFFFFFF }; +const crypto_uint64 pmask6[] = { 0xFFFFFFFFF0000000,0xFFFFFFFFF0000000,0xFFFFFFFFF0000000,0xFFFFFFFFF0000000 }; +const crypto_uint64 pmask7[] = { 0x000000000000FFFF,0x000000000000FFFF,0x000000000000FFFF,0x000000000000FFFF }; +const crypto_uint64 pmask8[] = { 0xFFFFFFFFFFFF0000,0xFFFFFFFFFFFF0000,0xFFFFFFFFFFFF0000,0xFFFFFFFFFFFF0000 }; +const crypto_uint64 upmask1[] = { 0x000FFFFFFFFFFFFF,0x000FFFFFFFFFFFFF,0x000FFFFFFFFFFFFF,0x000FFFFFFFFFFFFF }; +const crypto_uint64 upmask2[] = { 0x0000000000000FFF,0x0000000000000FFF,0x0000000000000FFF,0x0000000000000FFF }; +const crypto_uint64 upmask3[] = { 0x000FFFFFFFFFF000,0x000FFFFFFFFFF000,0x000FFFFFFFFFF000,0x000FFFFFFFFFF000 }; +const crypto_uint64 upmask4[] = { 0x0000000000FFFFFF,0x0000000000FFFFFF,0x0000000000FFFFFF,0x0000000000FFFFFF }; +const crypto_uint64 upmask5[] = { 0x000FFFFFFF000000,0x000FFFFFFF000000,0x000FFFFFFF000000,0x000FFFFFFF000000 }; +const crypto_uint64 upmask6[] = { 0x0000000FFFFFFFFF,0x0000000FFFFFFFFF,0x0000000FFFFFFFFF,0x0000000FFFFFFFFF }; +const crypto_uint64 upmask7[] = { 0x000FFFF000000000,0x000FFFF000000000,0x000FFFF000000000,0x000FFFF000000000 }; +//const crypto_uint64 upmask8[] = { 0x0000FFFFFFFFFFFF,0x0000FFFFFFFFFFFF,0x0000FFFFFFFFFFFF,0x0000FFFFFFFFFFFF }; +const crypto_uint64 mask63[] = { 0x7FFFFFFFFFFFFFFF }; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(121666) = 121666; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU0) = 0xED9CE5A30A2C131B; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU1) = 0x2106215D086329A7; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU2) = 0xFFFFFFFFFFFFFFEB; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU3) = 0xFFFFFFFFFFFFFFFF; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU4) = 0x000000000000000F; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER0) = 0x5812631A5CF5D3ED; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER1) = 0x14DEF9DEA2F79CD6; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER2) = 0x0000000000000000; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER3) = 0x1000000000000000; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D0) = 0xEBD69B9426B2F146; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D1) = 0x00E0149A8283B156; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D2) = 0x198E80F2EEF3D130; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D3) = 0xA406D9DC56DFFCE7; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(38) = 38; diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/architectures b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/architectures new file mode 120000 index 0000000000..f92e7d6fe1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/architectures @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519.h new file mode 120000 index 0000000000..d0a29945e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_add.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_add.S new file mode 120000 index 0000000000..d4acd5b571 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_add.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_cmov.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_cmov.c new file mode 120000 index 0000000000..b0f28207ef --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_cmov.c @@ -0,0 +1 @@ +../amd64-64/fe25519_cmov.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_freeze.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_getparity.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_getparity.c new file mode 120000 index 0000000000..c23ba9ce3d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_getparity.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_invert.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_mul.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_mul.S new file mode 120000 index 0000000000..a969f86af4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_nsquare.S new file mode 120000 index 0000000000..a5dcdec138 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_pack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_square.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_square.S new file mode 120000 index 0000000000..07c854965f --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_sub.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_sub.S new file mode 120000 index 0000000000..8458eb6750 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_sub.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_unpack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/ge25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/ge25519.h new file mode 100644 index 0000000000..e31af9aa38 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/ge25519.h @@ -0,0 +1,98 @@ +#ifndef GE25519_H +#define GE25519_H + +#include "fe25519.h" +#include "sc25519.h" + +#define ge25519 CRYPTO_NAMESPACE(ge25519) +#define ge25519_base CRYPTO_NAMESPACE(ge25519_base) +#define ge25519_unpackneg_vartime CRYPTO_NAMESPACE(unpackneg_vartime) +#define ge25519_pack CRYPTO_NAMESPACE(pack) +#define ge25519_isneutral_vartime CRYPTO_NAMESPACE(isneutral_vartime) +#define ge25519_add CRYPTO_NAMESPACE(ge25519_add) +#define ge25519_double CRYPTO_NAMESPACE(ge25519_double) +#define ge25519_double_scalarmult_vartime CRYPTO_NAMESPACE(double_scalarmult_vartime) +#define ge25519_multi_scalarmult_vartime CRYPTO_NAMESPACE(ge25519_multi_scalarmult_vartime) +#define ge25519_scalarmult_base CRYPTO_NAMESPACE(ge25519_scalarmult_base) +#define ge25519_p1p1_to_p2 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2) +#define ge25519_p1p1_to_p3 CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p3) +#define ge25519_add_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_add_p1p1) +#define ge25519_dbl_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_dbl_p1p1) +#define choose_t CRYPTO_SHARED_NAMESPACE(choose_t) +#define ge25519_nielsadd2 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd2) +#define ge25519_nielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_nielsadd_p1p1) +#define ge25519_pnielsadd_p1p1 CRYPTO_SHARED_NAMESPACE(ge25519_pnielsadd_p1p1) + +#define ge25519_base_multiples_niels CRYPTO_SHARED_NAMESPACE(ge25519_base_multiples_niels) + +#define ge25519_p3 ge25519 + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; + fe25519 t; +} ge25519; + +typedef struct +{ + fe25519 x; + fe25519 z; + fe25519 y; + fe25519 t; +} ge25519_p1p1; + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; +} ge25519_p2; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 t2d; +} ge25519_niels; + +typedef struct +{ + fe25519 ysubx; + fe25519 xaddy; + fe25519 z; + fe25519 t2d; +} ge25519_pniels; + +extern void ge25519_p1p1_to_p2(ge25519_p2 *r, const ge25519_p1p1 *p); +extern void ge25519_p1p1_to_p3(ge25519_p3 *r, const ge25519_p1p1 *p); +extern void ge25519_add_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_p3 *q); +extern void ge25519_dbl_p1p1(ge25519_p1p1 *r, const ge25519_p2 *p); +extern void choose_t(ge25519_niels *t, unsigned long long pos, signed long long b, const ge25519_niels *base_multiples); +extern void ge25519_nielsadd2(ge25519_p3 *r, const ge25519_niels *q); +extern void ge25519_nielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_niels *q); +extern void ge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_pniels *q); + +extern const ge25519 ge25519_base; + +extern int ge25519_unpackneg_vartime(ge25519 *r, const unsigned char p[32]); + +extern void ge25519_pack(unsigned char r[32], const ge25519 *p); + +extern int ge25519_isneutral_vartime(const ge25519 *p); + +extern void ge25519_add(ge25519 *r, const ge25519 *p, const ge25519 *q); + +extern void ge25519_double(ge25519 *r, const ge25519 *p); + +/* computes [s1]p1 + [s2]ge25519_base */ +extern void ge25519_double_scalarmult_vartime(ge25519 *r, const ge25519 *p1, const sc25519 *s1, const sc25519 *s2); + +extern void ge25519_multi_scalarmult_vartime(ge25519 *r, ge25519 *p, sc25519 *s, const unsigned long long npoints); + +extern void ge25519_scalarmult_base(ge25519 *r, const sc25519 *s); + +extern const ge25519_niels ge25519_base_multiples_niels[]; + +#endif diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/ge25519_base.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/ge25519_base.S new file mode 100644 index 0000000000..fc5fcf240b --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/ge25519_base.S @@ -0,0 +1,2049 @@ +// linker define base +// linker use mask63 + +/* Assembly for fixed base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(base) +.globl CRYPTO_SHARED_NAMESPACE(base) +_CRYPTO_SHARED_NAMESPACE(base): +CRYPTO_SHARED_NAMESPACE(base): + +movq %rsp,%r11 +andq $-32,%rsp +subq $464,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) +movq %rsi,64(%rsp) +movq %rdx,72(%rsp) + +/* choose t and initialize r */ + +movq %rdx,%rcx +movzbl 0(%rsi),%eax +movsbq %al,%rdx +movq $0,%rsi + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %r11,%r15 +movq %r12,80(%rsp) +movq %r13,88(%rsp) +movq %r14,96(%rsp) + +// sub +subq %rsi,%r11 +sbbq %r9,%r12 +sbbq %rax,%r13 +sbbq %r10,%r14 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r11 +sbbq %rbx,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 + +cmovc %rbp,%rbx +subq %rbx,%r11 + +movq %r11,104(%rsp) +movq %r12,112(%rsp) +movq %r13,120(%rsp) +movq %r14,128(%rsp) + +// add +addq %r15,%rsi +adcq 80(%rsp),%r9 +adcq 88(%rsp),%rax +adcq 96(%rsp),%r10 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%r9 +adcq %rbx,%rax +adcq %rbx,%r10 + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,136(%rsp) +movq %r9,144(%rsp) +movq %rax,152(%rsp) +movq %r10,160(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,200(%rsp) +movq %r9,208(%rsp) +movq %rax,216(%rsp) +movq %r10,224(%rsp) + +movq $2,168(%rsp) +movq $0,176(%rsp) +movq $0,184(%rsp) +movq $0,192(%rsp) + +/* loop: i=1,i<64,i=i+1 */ + +movq $1,232(%rsp) + +.L: + +/* choose t */ + +movq 72(%rsp),%rcx +movq 232(%rsp),%rsi +movq 64(%rsp),%rdx +movzbl 0(%rdx,%rsi),%eax +movsbq %al,%rdx + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %rsi,240(%rsp) +movq %r9,248(%rsp) +movq %rax,256(%rsp) +movq %r10,264(%rsp) +movq %r11,272(%rsp) +movq %r12,280(%rsp) +movq %r13,288(%rsp) +movq %r14,296(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,304(%rsp) +movq %r9,312(%rsp) +movq %rax,320(%rsp) +movq %r10,328(%rsp) + +/* nielsadd2 */ + +// load +movq 136(%rsp),%rdx +movq 144(%rsp),%rcx +movq 152(%rsp),%r8 +movq 160(%rsp),%r9 + +// copy +movq %rdx,%rax +movq %rcx,%r10 +movq %r8,%r11 +movq %r9,%r12 + +// sub +subq 104(%rsp),%rdx +sbbq 112(%rsp),%rcx +sbbq 120(%rsp),%r8 +sbbq 128(%rsp),%r9 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +subq %r14,%rdx +sbbq %r13,%rcx +sbbq %r13,%r8 +sbbq %r13,%r9 + +cmovc %r14,%r13 +subq %r13,%rdx + +movq %rdx,336(%rsp) +movq %rcx,344(%rsp) +movq %r8,352(%rsp) +movq %r9,360(%rsp) + +// add +addq 104(%rsp),%rax +adcq 112(%rsp),%r10 +adcq 120(%rsp),%r11 +adcq 128(%rsp),%r12 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +addq %r14,%rax +adcq %r13,%r10 +adcq %r13,%r11 +adcq %r13,%r12 + +cmovc %r14,%r13 +addq %r13,%rax + +movq %rax,368(%rsp) +movq %r10,376(%rsp) +movq %r11,384(%rsp) +movq %r12,392(%rsp) + +// mul +movq 248(%rsp),%rax +mulq 360(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 256(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 264(%rsp),%rax +mulq 344(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 256(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 264(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 264(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 240(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 248(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 256(%rsp),%rax +mulq 344(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 264(%rsp),%rax +mulq 336(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 240(%rsp),%rax +mulq 336(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 240(%rsp),%rax +mulq 344(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 248(%rsp),%rax +mulq 336(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 240(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 248(%rsp),%rax +mulq 344(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 256(%rsp),%rax +mulq 336(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq %r8,336(%rsp) +movq %r10,344(%rsp) +movq %r12,352(%rsp) +movq %r14,360(%rsp) + +// mul +movq 280(%rsp),%rax +mulq 392(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 288(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 296(%rsp),%rax +mulq 376(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 288(%rsp),%rax +mulq 392(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 296(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 296(%rsp),%rax +mulq 392(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 272(%rsp),%rax +mulq 392(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 280(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 288(%rsp),%rax +mulq 376(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 296(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 272(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 272(%rsp),%rax +mulq 376(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 280(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 272(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 280(%rsp),%rax +mulq 376(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 288(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +// copy +movq %r8,%r9 +movq %r10,%r11 +movq %r12,%r13 +movq %r14,%r15 + +// sub +subq 336(%rsp),%r8 +sbbq 344(%rsp),%r10 +sbbq 352(%rsp),%r12 +sbbq 360(%rsp),%r14 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +subq %rbx,%r8 +sbbq %rax,%r10 +sbbq %rax,%r12 +sbbq %rax,%r14 + +cmovc %rbx,%rax +subq %rax,%r8 + +movq %r8,368(%rsp) +movq %r10,376(%rsp) +movq %r12,384(%rsp) +movq %r14,392(%rsp) + +// add +addq 336(%rsp),%r9 +adcq 344(%rsp),%r11 +adcq 352(%rsp),%r13 +adcq 360(%rsp),%r15 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +addq %rbx,%r9 +adcq %rax,%r11 +adcq %rax,%r13 +adcq %rax,%r15 + +cmovc %rbx,%rax +addq %rax,%r9 + +movq %r9,336(%rsp) +movq %r11,344(%rsp) +movq %r13,352(%rsp) +movq %r15,360(%rsp) + +// mul +movq 312(%rsp),%rax +mulq 224(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 320(%rsp),%rax +mulq 216(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 328(%rsp),%rax +mulq 208(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 320(%rsp),%rax +mulq 224(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 328(%rsp),%rax +mulq 216(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 328(%rsp),%rax +mulq 224(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 304(%rsp),%rax +mulq 224(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 312(%rsp),%rax +mulq 216(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 320(%rsp),%rax +mulq 208(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 328(%rsp),%rax +mulq 200(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 304(%rsp),%rax +mulq 200(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 304(%rsp),%rax +mulq 208(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 312(%rsp),%rax +mulq 200(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 304(%rsp),%rax +mulq 216(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 312(%rsp),%rax +mulq 208(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 320(%rsp),%rax +mulq 200(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq 168(%rsp),%r9 +movq 176(%rsp),%r11 +movq 184(%rsp),%r13 +movq 192(%rsp),%r15 + +// double +addq %r9,%r9 +adcq %r11,%r11 +adcq %r13,%r13 +adcq %r15,%r15 + +movq $0,%rbx +movq $38,%rax +cmovae %rbx,%rax + +addq %rax,%r9 +adcq %rbx,%r11 +adcq %rbx,%r13 +adcq %rbx,%r15 + +cmovc %rax,%rbx +addq %rbx,%r9 + +// copy +movq %r9,%rsi +movq %r11,%rax +movq %r13,%rcx +movq %r15,%rdx + +// sub +subq %r8,%r9 +sbbq %r10,%r11 +sbbq %r12,%r13 +sbbq %r14,%r15 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r9 +sbbq %rbx,%r11 +sbbq %rbx,%r13 +sbbq %rbx,%r15 + +cmovc %rbp,%rbx +subq %rbx,%r9 + +movq %r9,432(%rsp) +movq %r11,440(%rsp) +movq %r13,448(%rsp) +movq %r15,456(%rsp) + +// add +addq %r8,%rsi +adcq %r10,%rax +adcq %r12,%rcx +adcq %r14,%rdx + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%rax +adcq %rbx,%rcx +adcq %rbx,%rdx + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,400(%rsp) +movq %rax,408(%rsp) +movq %rcx,416(%rsp) +movq %rdx,424(%rsp) + +/* p1p1 to p3 */ + +// mul +movq 376(%rsp),%rax +mulq 456(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 384(%rsp),%rax +mulq 448(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 392(%rsp),%rax +mulq 440(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 384(%rsp),%rax +mulq 456(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 392(%rsp),%rax +mulq 448(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 392(%rsp),%rax +mulq 456(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 368(%rsp),%rax +mulq 456(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 376(%rsp),%rax +mulq 448(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 384(%rsp),%rax +mulq 440(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 392(%rsp),%rax +mulq 432(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 368(%rsp),%rax +mulq 432(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 368(%rsp),%rax +mulq 440(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 376(%rsp),%rax +mulq 432(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 368(%rsp),%rax +mulq 448(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 376(%rsp),%rax +mulq 440(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 384(%rsp),%rax +mulq 432(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq %r8,104(%rsp) +movq %r10,112(%rsp) +movq %r12,120(%rsp) +movq %r14,128(%rsp) + +// mul +movq 344(%rsp),%rax +mulq 424(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 352(%rsp),%rax +mulq 416(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 360(%rsp),%rax +mulq 408(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 352(%rsp),%rax +mulq 424(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 360(%rsp),%rax +mulq 416(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 360(%rsp),%rax +mulq 424(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 336(%rsp),%rax +mulq 424(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 344(%rsp),%rax +mulq 416(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 352(%rsp),%rax +mulq 408(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 360(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 336(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 336(%rsp),%rax +mulq 408(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 344(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 336(%rsp),%rax +mulq 416(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 344(%rsp),%rax +mulq 408(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 352(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq %r8,136(%rsp) +movq %r10,144(%rsp) +movq %r12,152(%rsp) +movq %r14,160(%rsp) + +// mul +movq 440(%rsp),%rax +mulq 424(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 448(%rsp),%rax +mulq 416(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 456(%rsp),%rax +mulq 408(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 448(%rsp),%rax +mulq 424(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 456(%rsp),%rax +mulq 416(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 456(%rsp),%rax +mulq 424(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 432(%rsp),%rax +mulq 424(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 440(%rsp),%rax +mulq 416(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 448(%rsp),%rax +mulq 408(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 456(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 432(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 432(%rsp),%rax +mulq 408(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 440(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 432(%rsp),%rax +mulq 416(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 440(%rsp),%rax +mulq 408(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 448(%rsp),%rax +mulq 400(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq %r8,168(%rsp) +movq %r10,176(%rsp) +movq %r12,184(%rsp) +movq %r14,192(%rsp) + +// mul +movq 344(%rsp),%rax +mulq 392(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 352(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 360(%rsp),%rax +mulq 376(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 352(%rsp),%rax +mulq 392(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 360(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 360(%rsp),%rax +mulq 392(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 336(%rsp),%rax +mulq 392(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 344(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 352(%rsp),%rax +mulq 376(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 360(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 336(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 336(%rsp),%rax +mulq 376(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 344(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 336(%rsp),%rax +mulq 384(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 344(%rsp),%rax +mulq 376(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 352(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq %r8,200(%rsp) +movq %r10,208(%rsp) +movq %r12,216(%rsp) +movq %r14,224(%rsp) + +movq 232(%rsp),%r15 +addq $1,%r15 +movq %r15,232(%rsp) +cmpq $63,%r15 + +jle .L + +/* store final value of r */ + +movq 56(%rsp),%rdi + +movq 104(%rsp),%r8 +movq 112(%rsp),%r9 +movq 120(%rsp),%r10 +movq 128(%rsp),%r11 + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 136(%rsp),%r8 +movq 144(%rsp),%r9 +movq 152(%rsp),%r10 +movq 160(%rsp),%r11 + +movq %r8,32(%rdi) +movq %r9,40(%rdi) +movq %r10,48(%rdi) +movq %r11,56(%rdi) + +movq 168(%rsp),%r8 +movq 176(%rsp),%r9 +movq 184(%rsp),%r10 +movq 192(%rsp),%r11 + +movq %r8,64(%rdi) +movq %r9,72(%rdi) +movq %r10,80(%rdi) +movq %r11,88(%rdi) + +movq 200(%rsp),%r8 +movq 208(%rsp),%r9 +movq 216(%rsp),%r10 +movq 224(%rsp),%r11 + +movq %r8,96(%rdi) +movq %r9,104(%rdi) +movq %r10,112(%rdi) +movq %r11,120(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/ge25519_base_niels.data b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/ge25519_base_niels.data new file mode 120000 index 0000000000..a9e965b8ac --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/ge25519_base_niels.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_niels.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/ge25519_scalarmult_base.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/ge25519_scalarmult_base.c new file mode 100644 index 0000000000..46560fe883 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/ge25519_scalarmult_base.c @@ -0,0 +1,18 @@ +// linker define ge25519_scalarmult_base +// linker use ge25519_base_multiples_niels +// linker use sc25519_window4 +// linker use base + +#include "fe25519.h" +#include "sc25519.h" +#include "ge25519.h" + +#define base CRYPTO_SHARED_NAMESPACE(base) +extern void base(ge25519_p3 *,const signed char *,const ge25519_niels *); + +void ge25519_scalarmult_base(ge25519_p3 *r, const sc25519 *s) +{ + signed char b[64]; + sc25519_window4(b,s); + base(r,b,ge25519_base_multiples_niels); +} diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/implementors b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/implementors new file mode 100644 index 0000000000..a406bf859e --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/implementors @@ -0,0 +1,5 @@ +ge25519_base.S: Kaushik Nath +fe25519_mul.S: Kaushik Nath +fe25519_square.S: Kaushik Nath +fe25519_nsquare.S: Kaushik Nath +other code: see amd64-64-24k diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/nG.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/nG.c new file mode 120000 index 0000000000..3979d79b05 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/nG.c @@ -0,0 +1 @@ +../amd64-51/nG.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/sc25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/sc25519_window4.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/sc25519_window4.c new file mode 120000 index 0000000000..b54931e1bf --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/sc25519_window4.c @@ -0,0 +1 @@ +../amd64-51/sc25519_window4.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/shared-base-data.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/shared-base-data.c new file mode 120000 index 0000000000..c8311fd6f9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/shared-base-data.c @@ -0,0 +1 @@ +../amd64-64/shared-base-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/shared-consts.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/shared-consts.c new file mode 120000 index 0000000000..e88d1f4568 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maa4/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/architectures b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/architectures new file mode 120000 index 0000000000..12e8f0756a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519.h new file mode 120000 index 0000000000..d0a29945e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_add.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_add.S new file mode 120000 index 0000000000..d4acd5b571 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_add.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_cmov.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_cmov.c new file mode 120000 index 0000000000..b0f28207ef --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_cmov.c @@ -0,0 +1 @@ +../amd64-64/fe25519_cmov.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_getparity.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_getparity.c new file mode 120000 index 0000000000..c23ba9ce3d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_getparity.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_sub.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_sub.S new file mode 120000 index 0000000000..8458eb6750 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_sub.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/ge25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/ge25519.h new file mode 120000 index 0000000000..7630019869 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/ge25519.h @@ -0,0 +1 @@ +../amd64-maa4/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/ge25519_base.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/ge25519_base.S new file mode 100644 index 0000000000..ddffbf7569 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/ge25519_base.S @@ -0,0 +1,1713 @@ +// linker define base +// linker use mask63 + +/* Assembly for fixed base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(base) +.globl CRYPTO_SHARED_NAMESPACE(base) +_CRYPTO_SHARED_NAMESPACE(base): +CRYPTO_SHARED_NAMESPACE(base): + +movq %rsp,%r11 +andq $-32,%rsp +subq $464,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) +movq %rsi,64(%rsp) +movq %rdx,72(%rsp) + +/* choose t and initialize r */ + +movq %rdx,%rcx +movzbl 0(%rsi),%eax +movsbq %al,%rdx +movq $0,%rsi + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %r11,%r15 +movq %r12,80(%rsp) +movq %r13,88(%rsp) +movq %r14,96(%rsp) + +// sub +subq %rsi,%r11 +sbbq %r9,%r12 +sbbq %rax,%r13 +sbbq %r10,%r14 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r11 +sbbq %rbx,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 + +cmovc %rbp,%rbx +subq %rbx,%r11 + +movq %r11,104(%rsp) +movq %r12,112(%rsp) +movq %r13,120(%rsp) +movq %r14,128(%rsp) + +// add +addq %r15,%rsi +adcq 80(%rsp),%r9 +adcq 88(%rsp),%rax +adcq 96(%rsp),%r10 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%r9 +adcq %rbx,%rax +adcq %rbx,%r10 + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,136(%rsp) +movq %r9,144(%rsp) +movq %rax,152(%rsp) +movq %r10,160(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,200(%rsp) +movq %r9,208(%rsp) +movq %rax,216(%rsp) +movq %r10,224(%rsp) + +movq $2,168(%rsp) +movq $0,176(%rsp) +movq $0,184(%rsp) +movq $0,192(%rsp) + +/* loop: i=1,i<64,i=i+1 */ + +movq $1,232(%rsp) + +.L: + +/* choose t */ + +movq 72(%rsp),%rcx +movq 232(%rsp),%rsi +movq 64(%rsp),%rdx +movzbl 0(%rdx,%rsi),%eax +movsbq %al,%rdx + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %rsi,240(%rsp) +movq %r9,248(%rsp) +movq %rax,256(%rsp) +movq %r10,264(%rsp) +movq %r11,272(%rsp) +movq %r12,280(%rsp) +movq %r13,288(%rsp) +movq %r14,296(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,304(%rsp) +movq %r9,312(%rsp) +movq %rax,320(%rsp) +movq %r10,328(%rsp) + +/* nielsadd2 */ + +// load +movq 136(%rsp),%rdx +movq 144(%rsp),%rcx +movq 152(%rsp),%r8 +movq 160(%rsp),%r9 + +// copy +movq %rdx,%rax +movq %rcx,%r10 +movq %r8,%r11 +movq %r9,%r12 + +// sub +subq 104(%rsp),%rdx +sbbq 112(%rsp),%rcx +sbbq 120(%rsp),%r8 +sbbq 128(%rsp),%r9 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +subq %r14,%rdx +sbbq %r13,%rcx +sbbq %r13,%r8 +sbbq %r13,%r9 + +cmovc %r14,%r13 +subq %r13,%rdx + +movq %rdx,336(%rsp) +movq %rcx,344(%rsp) +movq %r8,352(%rsp) +movq %r9,360(%rsp) + +// add +addq 104(%rsp),%rax +adcq 112(%rsp),%r10 +adcq 120(%rsp),%r11 +adcq 128(%rsp),%r12 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +addq %r14,%rax +adcq %r13,%r10 +adcq %r13,%r11 +adcq %r13,%r12 + +cmovc %r14,%r13 +addq %r13,%rax + +movq %rax,368(%rsp) +movq %r10,376(%rsp) +movq %r11,384(%rsp) +movq %r12,392(%rsp) + +// mul +xorq %r13,%r13 +movq 240(%rsp),%rdx + +mulx 336(%rsp),%r8,%r9 +mulx 344(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 352(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 360(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 248(%rsp),%rdx + +mulx 336(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 344(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 256(%rsp),%rdx + +mulx 336(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 344(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 264(%rsp),%rdx + +mulx 336(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 344(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,336(%rsp) +movq %r9,344(%rsp) +movq %r10,352(%rsp) +movq %r11,360(%rsp) + +// mul +xorq %r13,%r13 +movq 272(%rsp),%rdx + +mulx 368(%rsp),%r8,%r9 +mulx 376(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 384(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 392(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 280(%rsp),%rdx + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 288(%rsp),%rdx + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 296(%rsp),%rdx + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// copy +movq %r8,%r12 +movq %r9,%r13 +movq %r10,%r14 +movq %r11,%r15 + +// sub +subq 336(%rsp),%r8 +sbbq 344(%rsp),%r9 +sbbq 352(%rsp),%r10 +sbbq 360(%rsp),%r11 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +subq %rbx,%r8 +sbbq %rax,%r9 +sbbq %rax,%r10 +sbbq %rax,%r11 + +cmovc %rbx,%rax +subq %rax,%r8 + +movq %r8,368(%rsp) +movq %r9,376(%rsp) +movq %r10,384(%rsp) +movq %r11,392(%rsp) + +// add +addq 336(%rsp),%r12 +adcq 344(%rsp),%r13 +adcq 352(%rsp),%r14 +adcq 360(%rsp),%r15 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +addq %rbx,%r12 +adcq %rax,%r13 +adcq %rax,%r14 +adcq %rax,%r15 + +cmovc %rbx,%rax +addq %rax,%r12 + +movq %r12,336(%rsp) +movq %r13,344(%rsp) +movq %r14,352(%rsp) +movq %r15,360(%rsp) + +// mul +xorq %r13,%r13 +movq 304(%rsp),%rdx + +mulx 200(%rsp),%r8,%r9 +mulx 208(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 216(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 224(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 312(%rsp),%rdx + +mulx 200(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 208(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 216(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 224(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 320(%rsp),%rdx + +mulx 200(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 208(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 216(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 224(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 328(%rsp),%rdx + +mulx 200(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 208(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 216(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 224(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq 168(%rsp),%r12 +movq 176(%rsp),%r13 +movq 184(%rsp),%r14 +movq 192(%rsp),%r15 + +// double +addq %r12,%r12 +adcq %r13,%r13 +adcq %r14,%r14 +adcq %r15,%r15 + +movq $0,%rbx +movq $38,%rax +cmovae %rbx,%rax + +addq %rax,%r12 +adcq %rbx,%r13 +adcq %rbx,%r14 +adcq %rbx,%r15 + +cmovc %rax,%rbx +addq %rbx,%r12 + +// copy +movq %r12,%rsi +movq %r13,%rax +movq %r14,%rcx +movq %r15,%rdx + +// sub +subq %r8,%r12 +sbbq %r9,%r13 +sbbq %r10,%r14 +sbbq %r11,%r15 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 +sbbq %rbx,%r15 + +cmovc %rbp,%rbx +subq %rbx,%r12 + +movq %r12,432(%rsp) +movq %r13,440(%rsp) +movq %r14,448(%rsp) +movq %r15,456(%rsp) + +// add +addq %r8,%rsi +adcq %r9,%rax +adcq %r10,%rcx +adcq %r11,%rdx + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%rax +adcq %rbx,%rcx +adcq %rbx,%rdx + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,400(%rsp) +movq %rax,408(%rsp) +movq %rcx,416(%rsp) +movq %rdx,424(%rsp) + +/* p1p1 to p3 */ + +// mul +xorq %r13,%r13 +movq 368(%rsp),%rdx + +mulx 432(%rsp),%r8,%r9 +mulx 440(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 448(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 456(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 376(%rsp),%rdx + +mulx 432(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 440(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 448(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 456(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 384(%rsp),%rdx + +mulx 432(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 440(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 448(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 456(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 392(%rsp),%rdx + +mulx 432(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 440(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 448(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 456(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,104(%rsp) +movq %r9,112(%rsp) +movq %r10,120(%rsp) +movq %r11,128(%rsp) + +// mul +xorq %r13,%r13 +movq 336(%rsp),%rdx + +mulx 400(%rsp),%r8,%r9 +mulx 408(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 416(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 424(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 344(%rsp),%rdx + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 416(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 424(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 352(%rsp),%rdx + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 416(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 424(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 360(%rsp),%rdx + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 416(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 424(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,136(%rsp) +movq %r9,144(%rsp) +movq %r10,152(%rsp) +movq %r11,160(%rsp) + +// mul +xorq %r13,%r13 +movq 432(%rsp),%rdx + +mulx 400(%rsp),%r8,%r9 +mulx 408(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 416(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 424(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 440(%rsp),%rdx + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 416(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 424(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 448(%rsp),%rdx + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 416(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 424(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 456(%rsp),%rdx + +mulx 400(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 408(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 416(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 424(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,168(%rsp) +movq %r9,176(%rsp) +movq %r10,184(%rsp) +movq %r11,192(%rsp) + +// mul +xorq %r13,%r13 +movq 336(%rsp),%rdx + +mulx 368(%rsp),%r8,%r9 +mulx 376(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 384(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 392(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 344(%rsp),%rdx + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 352(%rsp),%rdx + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 360(%rsp),%rdx + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 376(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 384(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 392(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,200(%rsp) +movq %r9,208(%rsp) +movq %r10,216(%rsp) +movq %r11,224(%rsp) + +movq 232(%rsp),%r15 +addq $1,%r15 +movq %r15,232(%rsp) +cmpq $63,%r15 + +jle .L + +/* store final value of r */ + +movq 56(%rsp),%rdi + +movq 104(%rsp),%r8 +movq 112(%rsp),%r9 +movq 120(%rsp),%r10 +movq 128(%rsp),%r11 + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 136(%rsp),%r8 +movq 144(%rsp),%r9 +movq 152(%rsp),%r10 +movq 160(%rsp),%r11 + +movq %r8,32(%rdi) +movq %r9,40(%rdi) +movq %r10,48(%rdi) +movq %r11,56(%rdi) + +movq 168(%rsp),%r8 +movq 176(%rsp),%r9 +movq 184(%rsp),%r10 +movq 192(%rsp),%r11 + +movq %r8,64(%rdi) +movq %r9,72(%rdi) +movq %r10,80(%rdi) +movq %r11,88(%rdi) + +movq 200(%rsp),%r8 +movq 208(%rsp),%r9 +movq 216(%rsp),%r10 +movq 224(%rsp),%r11 + +movq %r8,96(%rdi) +movq %r9,104(%rdi) +movq %r10,112(%rdi) +movq %r11,120(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/ge25519_base_niels.data b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/ge25519_base_niels.data new file mode 120000 index 0000000000..a9e965b8ac --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/ge25519_base_niels.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_niels.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/ge25519_scalarmult_base.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/ge25519_scalarmult_base.c new file mode 120000 index 0000000000..b77a6e2f45 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/ge25519_scalarmult_base.c @@ -0,0 +1 @@ +../amd64-maa4/ge25519_scalarmult_base.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/implementors b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/implementors new file mode 120000 index 0000000000..7c9c13e712 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/implementors @@ -0,0 +1 @@ +../amd64-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/nG.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/nG.c new file mode 120000 index 0000000000..3979d79b05 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/nG.c @@ -0,0 +1 @@ +../amd64-51/nG.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/sc25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/sc25519_window4.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/sc25519_window4.c new file mode 120000 index 0000000000..b54931e1bf --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/sc25519_window4.c @@ -0,0 +1 @@ +../amd64-51/sc25519_window4.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/shared-base-data.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/shared-base-data.c new file mode 120000 index 0000000000..c8311fd6f9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/shared-base-data.c @@ -0,0 +1 @@ +../amd64-64/shared-base-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/shared-consts.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/shared-consts.c new file mode 120000 index 0000000000..e88d1f4568 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-maax/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/architectures b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/architectures new file mode 120000 index 0000000000..748ffeb120 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519.h new file mode 120000 index 0000000000..916a9e3b36 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_add.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_add.S new file mode 120000 index 0000000000..d4acd5b571 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_add.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_add.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_cmov.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_cmov.c new file mode 120000 index 0000000000..b0f28207ef --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_cmov.c @@ -0,0 +1 @@ +../amd64-64/fe25519_cmov.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_freeze.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_getparity.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_getparity.c new file mode 120000 index 0000000000..c23ba9ce3d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_getparity.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_getparity.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_invert.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_mul.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_mul.S new file mode 120000 index 0000000000..79e7adffa9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_nsquare.S new file mode 120000 index 0000000000..1aef6b0983 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_pack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_sub.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_sub.S new file mode 120000 index 0000000000..8458eb6750 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_sub.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_sub.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_unpack.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/ge25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/ge25519.h new file mode 120000 index 0000000000..7630019869 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/ge25519.h @@ -0,0 +1 @@ +../amd64-maa4/ge25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/ge25519_base.S b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/ge25519_base.S new file mode 100644 index 0000000000..dc639dac76 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/ge25519_base.S @@ -0,0 +1,1677 @@ +// linker define base +// linker use mask63 + +/* Assembly for fixed base scalar multiplication. + * + * This assembly has been developed after studying the + * amd64-64-24k implementation of the work "High speed + * high security signatures" by Bernstein et al. +*/ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(base) +.globl CRYPTO_SHARED_NAMESPACE(base) +_CRYPTO_SHARED_NAMESPACE(base): +CRYPTO_SHARED_NAMESPACE(base): + +movq %rsp,%r11 +subq $464,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) +movq %rsi,64(%rsp) +movq %rdx,72(%rsp) + +/* choose t and initialize r */ + +movq %rdx,%rcx +movzbl 0(%rsi),%eax +movsbq %al,%rdx +movq $0,%rsi + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %r11,%r15 +movq %r12,80(%rsp) +movq %r13,88(%rsp) +movq %r14,96(%rsp) + +// sub +subq %rsi,%r11 +sbbq %r9,%r12 +sbbq %rax,%r13 +sbbq %r10,%r14 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r11 +sbbq %rbx,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 + +cmovc %rbp,%rbx +subq %rbx,%r11 + +movq %r11,104(%rsp) +movq %r12,112(%rsp) +movq %r13,120(%rsp) +movq %r14,128(%rsp) + +// add +addq %r15,%rsi +adcq 80(%rsp),%r9 +adcq 88(%rsp),%rax +adcq 96(%rsp),%r10 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%r9 +adcq %rbx,%rax +adcq %rbx,%r10 + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,136(%rsp) +movq %r9,144(%rsp) +movq %rax,152(%rsp) +movq %r10,160(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,200(%rsp) +movq %r9,208(%rsp) +movq %rax,216(%rsp) +movq %r10,224(%rsp) + +movq $2,168(%rsp) +movq $0,176(%rsp) +movq $0,184(%rsp) +movq $0,192(%rsp) + +/* loop: i=1,i<64,i=i+1 */ + +movq $1,232(%rsp) + +.L: + +/* choose t */ + +movq 72(%rsp),%rcx +movq 232(%rsp),%rsi +movq 64(%rsp),%rdx +movzbl 0(%rdx,%rsi),%eax +movsbq %al,%rdx + +imulq $768,%rsi,%rdi +movq %rdx,%rsi +sarq $7,%rsi + +movq %rdx,%r8 +addq %rsi,%r8 +xorq %rsi,%r8 + +movq $1,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 +movq $1,%r11 +movq $0,%r12 +movq $0,%r13 +movq $0,%r14 + +cmpq $1,%r8 + +movq 0(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 8(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 16(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 24(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 32(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 40(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 48(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 56(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $2,%r8 +movq 96(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 104(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 112(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 120(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 128(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 136(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 144(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 152(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $3,%r8 +movq 192(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 200(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 208(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 216(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 224(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 232(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 240(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 248(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $4,%r8 +movq 288(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 296(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 304(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 312(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 320(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 328(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 336(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 344(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $5,%r8 +movq 384(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 392(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 400(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 408(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 416(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 424(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 432(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 440(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $6,%r8 +movq 480(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 488(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 496(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 504(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 512(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 520(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 528(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 536(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $7,%r8 +movq 576(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 584(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 592(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 600(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 608(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 616(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 624(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 632(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $8,%r8 +movq 672(%rcx,%rdi),%r15 +cmove %r15,%rsi +movq 680(%rcx,%rdi),%r15 +cmove %r15,%r9 +movq 688(%rcx,%rdi),%r15 +cmove %r15,%rax +movq 696(%rcx,%rdi),%r15 +cmove %r15,%r10 +movq 704(%rcx,%rdi),%r15 +cmove %r15,%r11 +movq 712(%rcx,%rdi),%r15 +cmove %r15,%r12 +movq 720(%rcx,%rdi),%r15 +cmove %r15,%r13 +movq 728(%rcx,%rdi),%r15 +cmove %r15,%r14 + +cmpq $0,%rdx +movq %rsi,%r15 +cmovl %r11,%rsi +cmovl %r15,%r11 +movq %r9,%r15 +cmovl %r12,%r9 +cmovl %r15,%r12 +movq %rax,%r15 +cmovl %r13,%rax +cmovl %r15,%r13 +movq %r10,%r15 +cmovl %r14,%r10 +cmovl %r15,%r14 + +movq %rsi,240(%rsp) +movq %r9,248(%rsp) +movq %rax,256(%rsp) +movq %r10,264(%rsp) +movq %r11,272(%rsp) +movq %r12,280(%rsp) +movq %r13,288(%rsp) +movq %r14,296(%rsp) + +movq $0,%rsi +movq $0,%r9 +movq $0,%rax +movq $0,%r10 + +cmpq $1,%r8 +movq 64(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 72(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 80(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 88(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $2,%r8 +movq 160(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 168(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 176(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 184(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $3,%r8 +movq 256(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 264(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 272(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 280(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $4,%r8 +movq 352(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 360(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 368(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 376(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $5,%r8 +movq 448(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 456(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 464(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 472(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $6,%r8 +movq 544(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 552(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 560(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 568(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $7,%r8 +movq 640(%rcx,%rdi),%r11 +cmove %r11,%rsi +movq 648(%rcx,%rdi),%r11 +cmove %r11,%r9 +movq 656(%rcx,%rdi),%r11 +cmove %r11,%rax +movq 664(%rcx,%rdi),%r11 +cmove %r11,%r10 + +cmpq $8,%r8 +movq 736(%rcx,%rdi),%r8 +cmove %r8,%rsi +movq 744(%rcx,%rdi),%r8 +cmove %r8,%r9 +movq 752(%rcx,%rdi),%r8 +cmove %r8,%rax +movq 760(%rcx,%rdi),%rdi +cmove %rdi,%r10 + +movq $0,%rdi +movq $0,%rcx +movq $0,%r8 +movq $0,%r11 + +subq %rsi,%rdi +sbbq %r9,%rcx +sbbq %rax,%r8 +sbbq %r10,%r11 + +movq $0,%r12 +movq $38,%r13 +cmovae %r12,%r13 + +subq %r13,%rdi +sbbq %r12,%rcx +sbbq %r12,%r8 +sbbq %r12,%r11 + +cmovc %r13,%r12 + +subq %r12,%rdi + +cmpq $0,%rdx +cmovl %rdi,%rsi +cmovl %rcx,%r9 +cmovl %r8,%rax +cmovl %r11,%r10 + +movq %rsi,304(%rsp) +movq %r9,312(%rsp) +movq %rax,320(%rsp) +movq %r10,328(%rsp) + +/* nielsadd2 */ + +// load +movq 136(%rsp),%rdx +movq 144(%rsp),%rcx +movq 152(%rsp),%r8 +movq 160(%rsp),%r9 + +// copy +movq %rdx,%rax +movq %rcx,%r10 +movq %r8,%r11 +movq %r9,%r12 + +// sub +subq 104(%rsp),%rdx +sbbq 112(%rsp),%rcx +sbbq 120(%rsp),%r8 +sbbq 128(%rsp),%r9 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +subq %r14,%rdx +sbbq %r13,%rcx +sbbq %r13,%r8 +sbbq %r13,%r9 + +cmovc %r14,%r13 +subq %r13,%rdx + +movq %rdx,336(%rsp) +movq %rcx,344(%rsp) +movq %r8,352(%rsp) +movq %r9,360(%rsp) + +// add +addq 104(%rsp),%rax +adcq 112(%rsp),%r10 +adcq 120(%rsp),%r11 +adcq 128(%rsp),%r12 + +movq $0,%r13 +movq $38,%r14 +cmovae %r13,%r14 + +addq %r14,%rax +adcq %r13,%r10 +adcq %r13,%r11 +adcq %r13,%r12 + +cmovc %r14,%r13 +addq %r13,%rax + +movq %rax,368(%rsp) +movq %r10,376(%rsp) +movq %r11,384(%rsp) +movq %r12,392(%rsp) + +// mul +movq 240(%rsp),%rdx + +mulx 336(%rsp),%r8,%r9 +mulx 344(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 352(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 360(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 248(%rsp),%rdx + +mulx 336(%rsp),%rax,%rbx +mulx 344(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 352(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 360(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 256(%rsp),%rdx + +mulx 336(%rsp),%rax,%rbx +mulx 344(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 352(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 360(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 264(%rsp),%rdx + +mulx 336(%rsp),%rax,%rbx +mulx 344(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 352(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 360(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,336(%rsp) +movq %r9,344(%rsp) +movq %r10,352(%rsp) +movq %r11,360(%rsp) + +// mul +movq 272(%rsp),%rdx + +mulx 368(%rsp),%r8,%r9 +mulx 376(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 384(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 392(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 280(%rsp),%rdx + +mulx 368(%rsp),%rax,%rbx +mulx 376(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 384(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 392(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 288(%rsp),%rdx + +mulx 368(%rsp),%rax,%rbx +mulx 376(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 384(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 392(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 296(%rsp),%rdx + +mulx 368(%rsp),%rax,%rbx +mulx 376(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 384(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 392(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// copy +movq %r8,%r12 +movq %r9,%r13 +movq %r10,%r14 +movq %r11,%r15 + +// sub +subq 336(%rsp),%r8 +sbbq 344(%rsp),%r9 +sbbq 352(%rsp),%r10 +sbbq 360(%rsp),%r11 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +subq %rbx,%r8 +sbbq %rax,%r9 +sbbq %rax,%r10 +sbbq %rax,%r11 + +cmovc %rbx,%rax +subq %rax,%r8 + +movq %r8,368(%rsp) +movq %r9,376(%rsp) +movq %r10,384(%rsp) +movq %r11,392(%rsp) + +// add +addq 336(%rsp),%r12 +adcq 344(%rsp),%r13 +adcq 352(%rsp),%r14 +adcq 360(%rsp),%r15 + +movq $0,%rax +movq $38,%rbx +cmovae %rax,%rbx + +addq %rbx,%r12 +adcq %rax,%r13 +adcq %rax,%r14 +adcq %rax,%r15 + +cmovc %rbx,%rax +addq %rax,%r12 + +movq %r12,336(%rsp) +movq %r13,344(%rsp) +movq %r14,352(%rsp) +movq %r15,360(%rsp) + +// mul +movq 304(%rsp),%rdx + +mulx 200(%rsp),%r8,%r9 +mulx 208(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 216(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 224(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 312(%rsp),%rdx + +mulx 200(%rsp),%rax,%rbx +mulx 208(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 216(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 224(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 320(%rsp),%rdx + +mulx 200(%rsp),%rax,%rbx +mulx 208(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 216(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 224(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 328(%rsp),%rdx + +mulx 200(%rsp),%rax,%rbx +mulx 208(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 216(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 224(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq 168(%rsp),%r12 +movq 176(%rsp),%r13 +movq 184(%rsp),%r14 +movq 192(%rsp),%r15 + +// double +addq %r12,%r12 +adcq %r13,%r13 +adcq %r14,%r14 +adcq %r15,%r15 + +movq $0,%rbx +movq $38,%rax +cmovae %rbx,%rax + +addq %rax,%r12 +adcq %rbx,%r13 +adcq %rbx,%r14 +adcq %rbx,%r15 + +cmovc %rax,%rbx +addq %rbx,%r12 + +// copy +movq %r12,%rsi +movq %r13,%rax +movq %r14,%rcx +movq %r15,%rdx + +// sub +subq %r8,%r12 +sbbq %r9,%r13 +sbbq %r10,%r14 +sbbq %r11,%r15 + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +subq %rbp,%r12 +sbbq %rbx,%r13 +sbbq %rbx,%r14 +sbbq %rbx,%r15 + +cmovc %rbp,%rbx +subq %rbx,%r12 + +movq %r12,432(%rsp) +movq %r13,440(%rsp) +movq %r14,448(%rsp) +movq %r15,456(%rsp) + +// add +addq %r8,%rsi +adcq %r9,%rax +adcq %r10,%rcx +adcq %r11,%rdx + +movq $0,%rbx +movq $38,%rbp +cmovae %rbx,%rbp + +addq %rbp,%rsi +adcq %rbx,%rax +adcq %rbx,%rcx +adcq %rbx,%rdx + +cmovc %rbp,%rbx +addq %rbx,%rsi + +movq %rsi,400(%rsp) +movq %rax,408(%rsp) +movq %rcx,416(%rsp) +movq %rdx,424(%rsp) + +/* p1p1 to p3 */ + +// mul +movq 368(%rsp),%rdx + +mulx 432(%rsp),%r8,%r9 +mulx 440(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 448(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 456(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 376(%rsp),%rdx + +mulx 432(%rsp),%rax,%rbx +mulx 440(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 448(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 456(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 384(%rsp),%rdx + +mulx 432(%rsp),%rax,%rbx +mulx 440(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 448(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 456(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 392(%rsp),%rdx + +mulx 432(%rsp),%rax,%rbx +mulx 440(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 448(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 456(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,104(%rsp) +movq %r9,112(%rsp) +movq %r10,120(%rsp) +movq %r11,128(%rsp) + +// mul +movq 336(%rsp),%rdx + +mulx 400(%rsp),%r8,%r9 +mulx 408(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 416(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 424(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 344(%rsp),%rdx + +mulx 400(%rsp),%rax,%rbx +mulx 408(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 416(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 424(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 352(%rsp),%rdx + +mulx 400(%rsp),%rax,%rbx +mulx 408(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 416(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 424(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 360(%rsp),%rdx + +mulx 400(%rsp),%rax,%rbx +mulx 408(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 416(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 424(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,136(%rsp) +movq %r9,144(%rsp) +movq %r10,152(%rsp) +movq %r11,160(%rsp) + +// mul +movq 432(%rsp),%rdx + +mulx 400(%rsp),%r8,%r9 +mulx 408(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 416(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 424(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 440(%rsp),%rdx + +mulx 400(%rsp),%rax,%rbx +mulx 408(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 416(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 424(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 448(%rsp),%rdx + +mulx 400(%rsp),%rax,%rbx +mulx 408(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 416(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 424(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 456(%rsp),%rdx + +mulx 400(%rsp),%rax,%rbx +mulx 408(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 416(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 424(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,168(%rsp) +movq %r9,176(%rsp) +movq %r10,184(%rsp) +movq %r11,192(%rsp) + +// mul +movq 336(%rsp),%rdx + +mulx 368(%rsp),%r8,%r9 +mulx 376(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 384(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 392(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 344(%rsp),%rdx + +mulx 368(%rsp),%rax,%rbx +mulx 376(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 384(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 392(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 352(%rsp),%rdx + +mulx 368(%rsp),%rax,%rbx +mulx 376(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 384(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 392(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 360(%rsp),%rdx + +mulx 368(%rsp),%rax,%rbx +mulx 376(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 384(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 392(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,200(%rsp) +movq %r9,208(%rsp) +movq %r10,216(%rsp) +movq %r11,224(%rsp) + +movq 232(%rsp),%r15 +addq $1,%r15 +movq %r15,232(%rsp) +cmpq $63,%r15 + +jle .L + +/* store final value of r */ + +movq 56(%rsp),%rdi + +movq 104(%rsp),%r8 +movq 112(%rsp),%r9 +movq 120(%rsp),%r10 +movq 128(%rsp),%r11 + +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 136(%rsp),%r8 +movq 144(%rsp),%r9 +movq 152(%rsp),%r10 +movq 160(%rsp),%r11 + +movq %r8,32(%rdi) +movq %r9,40(%rdi) +movq %r10,48(%rdi) +movq %r11,56(%rdi) + +movq 168(%rsp),%r8 +movq 176(%rsp),%r9 +movq 184(%rsp),%r10 +movq 192(%rsp),%r11 + +movq %r8,64(%rdi) +movq %r9,72(%rdi) +movq %r10,80(%rdi) +movq %r11,88(%rdi) + +movq 200(%rsp),%r8 +movq 208(%rsp),%r9 +movq 216(%rsp),%r10 +movq 224(%rsp),%r11 + +movq %r8,96(%rdi) +movq %r9,104(%rdi) +movq %r10,112(%rdi) +movq %r11,120(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/ge25519_base_niels.data b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/ge25519_base_niels.data new file mode 120000 index 0000000000..a9e965b8ac --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/ge25519_base_niels.data @@ -0,0 +1 @@ +../amd64-64/ge25519_base_niels.data \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/ge25519_scalarmult_base.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/ge25519_scalarmult_base.c new file mode 120000 index 0000000000..b77a6e2f45 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/ge25519_scalarmult_base.c @@ -0,0 +1 @@ +../amd64-maa4/ge25519_scalarmult_base.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/implementors b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/implementors new file mode 100644 index 0000000000..5518f5b6f7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/implementors @@ -0,0 +1,4 @@ +ge25519_base.S: Kaushik Nath +fe25519_mul.S: Kaushik Nath +fe25519_nsquare.S: Kaushik Nath +other code: see amd64-64-24k diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/nG.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/nG.c new file mode 120000 index 0000000000..3979d79b05 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/nG.c @@ -0,0 +1 @@ +../amd64-51/nG.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/sc25519.h b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/sc25519.h new file mode 120000 index 0000000000..18b993493a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/sc25519.h @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/sc25519_from32bytes.c new file mode 120000 index 0000000000..9e201a1528 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/sc25519_from32bytes.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/sc25519_from32bytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/sc25519_window4.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/sc25519_window4.c new file mode 120000 index 0000000000..b54931e1bf --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/sc25519_window4.c @@ -0,0 +1 @@ +../amd64-51/sc25519_window4.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/shared-base-data.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/shared-base-data.c new file mode 120000 index 0000000000..c8311fd6f9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/shared-base-data.c @@ -0,0 +1 @@ +../amd64-64/shared-base-data.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/shared-consts.c b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/shared-consts.c new file mode 120000 index 0000000000..e88d1f4568 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/amd64-mxaa/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/B.h b/lib-25519/lib25519/crypto_nG/merged25519/ref10/B.h new file mode 100644 index 0000000000..a4d798238c --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/B.h @@ -0,0 +1,11 @@ +#ifndef base_h +#define base_h + +#define base CRYPTO_SHARED_NAMESPACE(base) + +#include "ge.h" + +/* base[i][j] = (j+1)*256^i*B */ +extern const ge_precomp base[32][8]; + +#endif diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/Makefile b/lib-25519/lib25519/crypto_nG/merged25519/ref10/Makefile new file mode 120000 index 0000000000..f772d7ef91 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/Makefile @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/Makefile \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/README b/lib-25519/lib25519/crypto_nG/merged25519/ref10/README new file mode 120000 index 0000000000..5792076342 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/README @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/README \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/api.h b/lib-25519/lib25519/crypto_nG/merged25519/ref10/api.h new file mode 100644 index 0000000000..d88dae0c32 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/api.h @@ -0,0 +1,4 @@ +#define CRYPTO_SECRETKEYBYTES 64 +#define CRYPTO_PUBLICKEYBYTES 32 +#define CRYPTO_BYTES 64 +#define CRYPTO_DETERMINISTIC 1 diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/base.h b/lib-25519/lib25519/crypto_nG/merged25519/ref10/base.h new file mode 100644 index 0000000000..573bd8a05c --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/base.h @@ -0,0 +1,1344 @@ +{ + { + { 25967493,-14356035,29566456,3660896,-12694345,4014787,27544626,-11754271,-6079156,2047605 }, + { -12545711,934262,-2722910,3049990,-727428,9406986,12720692,5043384,19500929,-15469378 }, + { -8738181,4489570,9688441,-14785194,10184609,-12363380,29287919,11864899,-24514362,-4438546 }, + }, + { + { -12815894,-12976347,-21581243,11784320,-25355658,-2750717,-11717903,-3814571,-358445,-10211303 }, + { -21703237,6903825,27185491,6451973,-29577724,-9554005,-15616551,11189268,-26829678,-5319081 }, + { 26966642,11152617,32442495,15396054,14353839,-12752335,-3128826,-9541118,-15472047,-4166697 }, + }, + { + { 15636291,-9688557,24204773,-7912398,616977,-16685262,27787600,-14772189,28944400,-1550024 }, + { 16568933,4717097,-11556148,-1102322,15682896,-11807043,16354577,-11775962,7689662,11199574 }, + { 30464156,-5976125,-11779434,-15670865,23220365,15915852,7512774,10017326,-17749093,-9920357 }, + }, + { + { -17036878,13921892,10945806,-6033431,27105052,-16084379,-28926210,15006023,3284568,-6276540 }, + { 23599295,-8306047,-11193664,-7687416,13236774,10506355,7464579,9656445,13059162,10374397 }, + { 7798556,16710257,3033922,2874086,28997861,2835604,32406664,-3839045,-641708,-101325 }, + }, + { + { 10861363,11473154,27284546,1981175,-30064349,12577861,32867885,14515107,-15438304,10819380 }, + { 4708026,6336745,20377586,9066809,-11272109,6594696,-25653668,12483688,-12668491,5581306 }, + { 19563160,16186464,-29386857,4097519,10237984,-4348115,28542350,13850243,-23678021,-15815942 }, + }, + { + { -15371964,-12862754,32573250,4720197,-26436522,5875511,-19188627,-15224819,-9818940,-12085777 }, + { -8549212,109983,15149363,2178705,22900618,4543417,3044240,-15689887,1762328,14866737 }, + { -18199695,-15951423,-10473290,1707278,-17185920,3916101,-28236412,3959421,27914454,4383652 }, + }, + { + { 5153746,9909285,1723747,-2777874,30523605,5516873,19480852,5230134,-23952439,-15175766 }, + { -30269007,-3463509,7665486,10083793,28475525,1649722,20654025,16520125,30598449,7715701 }, + { 28881845,14381568,9657904,3680757,-20181635,7843316,-31400660,1370708,29794553,-1409300 }, + }, + { + { 14499471,-2729599,-33191113,-4254652,28494862,14271267,30290735,10876454,-33154098,2381726 }, + { -7195431,-2655363,-14730155,462251,-27724326,3941372,-6236617,3696005,-32300832,15351955 }, + { 27431194,8222322,16448760,-3907995,-18707002,11938355,-32961401,-2970515,29551813,10109425 }, + }, +}, +{ + { + { -13657040,-13155431,-31283750,11777098,21447386,6519384,-2378284,-1627556,10092783,-4764171 }, + { 27939166,14210322,4677035,16277044,-22964462,-12398139,-32508754,12005538,-17810127,12803510 }, + { 17228999,-15661624,-1233527,300140,-1224870,-11714777,30364213,-9038194,18016357,4397660 }, + }, + { + { -10958843,-7690207,4776341,-14954238,27850028,-15602212,-26619106,14544525,-17477504,982639 }, + { 29253598,15796703,-2863982,-9908884,10057023,3163536,7332899,-4120128,-21047696,9934963 }, + { 5793303,16271923,-24131614,-10116404,29188560,1206517,-14747930,4559895,-30123922,-10897950 }, + }, + { + { -27643952,-11493006,16282657,-11036493,28414021,-15012264,24191034,4541697,-13338309,5500568 }, + { 12650548,-1497113,9052871,11355358,-17680037,-8400164,-17430592,12264343,10874051,13524335 }, + { 25556948,-3045990,714651,2510400,23394682,-10415330,33119038,5080568,-22528059,5376628 }, + }, + { + { -26088264,-4011052,-17013699,-3537628,-6726793,1920897,-22321305,-9447443,4535768,1569007 }, + { -2255422,14606630,-21692440,-8039818,28430649,8775819,-30494562,3044290,31848280,12543772 }, + { -22028579,2943893,-31857513,6777306,13784462,-4292203,-27377195,-2062731,7718482,14474653 }, + }, + { + { 2385315,2454213,-22631320,46603,-4437935,-15680415,656965,-7236665,24316168,-5253567 }, + { 13741529,10911568,-33233417,-8603737,-20177830,-1033297,33040651,-13424532,-20729456,8321686 }, + { 21060490,-2212744,15712757,-4336099,1639040,10656336,23845965,-11874838,-9984458,608372 }, + }, + { + { -13672732,-15087586,-10889693,-7557059,-6036909,11305547,1123968,-6780577,27229399,23887 }, + { -23244140,-294205,-11744728,14712571,-29465699,-2029617,12797024,-6440308,-1633405,16678954 }, + { -29500620,4770662,-16054387,14001338,7830047,9564805,-1508144,-4795045,-17169265,4904953 }, + }, + { + { 24059557,14617003,19037157,-15039908,19766093,-14906429,5169211,16191880,2128236,-4326833 }, + { -16981152,4124966,-8540610,-10653797,30336522,-14105247,-29806336,916033,-6882542,-2986532 }, + { -22630907,12419372,-7134229,-7473371,-16478904,16739175,285431,2763829,15736322,4143876 }, + }, + { + { 2379352,11839345,-4110402,-5988665,11274298,794957,212801,-14594663,23527084,-16458268 }, + { 33431127,-11130478,-17838966,-15626900,8909499,8376530,-32625340,4087881,-15188911,-14416214 }, + { 1767683,7197987,-13205226,-2022635,-13091350,448826,5799055,4357868,-4774191,-16323038 }, + }, +}, +{ + { + { 6721966,13833823,-23523388,-1551314,26354293,-11863321,23365147,-3949732,7390890,2759800 }, + { 4409041,2052381,23373853,10530217,7676779,-12885954,21302353,-4264057,1244380,-12919645 }, + { -4421239,7169619,4982368,-2957590,30256825,-2777540,14086413,9208236,15886429,16489664 }, + }, + { + { 1996075,10375649,14346367,13311202,-6874135,-16438411,-13693198,398369,-30606455,-712933 }, + { -25307465,9795880,-2777414,14878809,-33531835,14780363,13348553,12076947,-30836462,5113182 }, + { -17770784,11797796,31950843,13929123,-25888302,12288344,-30341101,-7336386,13847711,5387222 }, + }, + { + { -18582163,-3416217,17824843,-2340966,22744343,-10442611,8763061,3617786,-19600662,10370991 }, + { 20246567,-14369378,22358229,-543712,18507283,-10413996,14554437,-8746092,32232924,16763880 }, + { 9648505,10094563,26416693,14745928,-30374318,-6472621,11094161,15689506,3140038,-16510092 }, + }, + { + { -16160072,5472695,31895588,4744994,8823515,10365685,-27224800,9448613,-28774454,366295 }, + { 19153450,11523972,-11096490,-6503142,-24647631,5420647,28344573,8041113,719605,11671788 }, + { 8678025,2694440,-6808014,2517372,4964326,11152271,-15432916,-15266516,27000813,-10195553 }, + }, + { + { -15157904,7134312,8639287,-2814877,-7235688,10421742,564065,5336097,6750977,-14521026 }, + { 11836410,-3979488,26297894,16080799,23455045,15735944,1695823,-8819122,8169720,16220347 }, + { -18115838,8653647,17578566,-6092619,-8025777,-16012763,-11144307,-2627664,-5990708,-14166033 }, + }, + { + { -23308498,-10968312,15213228,-10081214,-30853605,-11050004,27884329,2847284,2655861,1738395 }, + { -27537433,-14253021,-25336301,-8002780,-9370762,8129821,21651608,-3239336,-19087449,-11005278 }, + { 1533110,3437855,23735889,459276,29970501,11335377,26030092,5821408,10478196,8544890 }, + }, + { + { 32173121,-16129311,24896207,3921497,22579056,-3410854,19270449,12217473,17789017,-3395995 }, + { -30552961,-2228401,-15578829,-10147201,13243889,517024,15479401,-3853233,30460520,1052596 }, + { -11614875,13323618,32618793,8175907,-15230173,12596687,27491595,-4612359,3179268,-9478891 }, + }, + { + { 31947069,-14366651,-4640583,-15339921,-15125977,-6039709,-14756777,-16411740,19072640,-9511060 }, + { 11685058,11822410,3158003,-13952594,33402194,-4165066,5977896,-5215017,473099,5040608 }, + { -20290863,8198642,-27410132,11602123,1290375,-2799760,28326862,1721092,-19558642,-3131606 }, + }, +}, +{ + { + { 7881532,10687937,7578723,7738378,-18951012,-2553952,21820786,8076149,-27868496,11538389 }, + { -19935666,3899861,18283497,-6801568,-15728660,-11249211,8754525,7446702,-5676054,5797016 }, + { -11295600,-3793569,-15782110,-7964573,12708869,-8456199,2014099,-9050574,-2369172,-5877341 }, + }, + { + { -22472376,-11568741,-27682020,1146375,18956691,16640559,1192730,-3714199,15123619,10811505 }, + { 14352098,-3419715,-18942044,10822655,32750596,4699007,-70363,15776356,-28886779,-11974553 }, + { -28241164,-8072475,-4978962,-5315317,29416931,1847569,-20654173,-16484855,4714547,-9600655 }, + }, + { + { 15200332,8368572,19679101,15970074,-31872674,1959451,24611599,-4543832,-11745876,12340220 }, + { 12876937,-10480056,33134381,6590940,-6307776,14872440,9613953,8241152,15370987,9608631 }, + { -4143277,-12014408,8446281,-391603,4407738,13629032,-7724868,15866074,-28210621,-8814099 }, + }, + { + { 26660628,-15677655,8393734,358047,-7401291,992988,-23904233,858697,20571223,8420556 }, + { 14620715,13067227,-15447274,8264467,14106269,15080814,33531827,12516406,-21574435,-12476749 }, + { 236881,10476226,57258,-14677024,6472998,2466984,17258519,7256740,8791136,15069930 }, + }, + { + { 1276410,-9371918,22949635,-16322807,-23493039,-5702186,14711875,4874229,-30663140,-2331391 }, + { 5855666,4990204,-13711848,7294284,-7804282,1924647,-1423175,-7912378,-33069337,9234253 }, + { 20590503,-9018988,31529744,-7352666,-2706834,10650548,31559055,-11609587,18979186,13396066 }, + }, + { + { 24474287,4968103,22267082,4407354,24063882,-8325180,-18816887,13594782,33514650,7021958 }, + { -11566906,-6565505,-21365085,15928892,-26158305,4315421,-25948728,-3916677,-21480480,12868082 }, + { -28635013,13504661,19988037,-2132761,21078225,6443208,-21446107,2244500,-12455797,-8089383 }, + }, + { + { -30595528,13793479,-5852820,319136,-25723172,-6263899,33086546,8957937,-15233648,5540521 }, + { -11630176,-11503902,-8119500,-7643073,2620056,1022908,-23710744,-1568984,-16128528,-14962807 }, + { 23152971,775386,27395463,14006635,-9701118,4649512,1689819,892185,-11513277,-15205948 }, + }, + { + { 9770129,9586738,26496094,4324120,1556511,-3550024,27453819,4763127,-19179614,5867134 }, + { -32765025,1927590,31726409,-4753295,23962434,-16019500,27846559,5931263,-29749703,-16108455 }, + { 27461885,-2977536,22380810,1815854,-23033753,-3031938,7283490,-15148073,-19526700,7734629 }, + }, +}, +{ + { + { -8010264,-9590817,-11120403,6196038,29344158,-13430885,7585295,-3176626,18549497,15302069 }, + { -32658337,-6171222,-7672793,-11051681,6258878,13504381,10458790,-6418461,-8872242,8424746 }, + { 24687205,8613276,-30667046,-3233545,1863892,-1830544,19206234,7134917,-11284482,-828919 }, + }, + { + { 11334899,-9218022,8025293,12707519,17523892,-10476071,10243738,-14685461,-5066034,16498837 }, + { 8911542,6887158,-9584260,-6958590,11145641,-9543680,17303925,-14124238,6536641,10543906 }, + { -28946384,15479763,-17466835,568876,-1497683,11223454,-2669190,-16625574,-27235709,8876771 }, + }, + { + { -25742899,-12566864,-15649966,-846607,-33026686,-796288,-33481822,15824474,-604426,-9039817 }, + { 10330056,70051,7957388,-9002667,9764902,15609756,27698697,-4890037,1657394,3084098 }, + { 10477963,-7470260,12119566,-13250805,29016247,-5365589,31280319,14396151,-30233575,15272409 }, + }, + { + { -12288309,3169463,28813183,16658753,25116432,-5630466,-25173957,-12636138,-25014757,1950504 }, + { -26180358,9489187,11053416,-14746161,-31053720,5825630,-8384306,-8767532,15341279,8373727 }, + { 28685821,7759505,-14378516,-12002860,-31971820,4079242,298136,-10232602,-2878207,15190420 }, + }, + { + { -32932876,13806336,-14337485,-15794431,-24004620,10940928,8669718,2742393,-26033313,-6875003 }, + { -1580388,-11729417,-25979658,-11445023,-17411874,-10912854,9291594,-16247779,-12154742,6048605 }, + { -30305315,14843444,1539301,11864366,20201677,1900163,13934231,5128323,11213262,9168384 }, + }, + { + { -26280513,11007847,19408960,-940758,-18592965,-4328580,-5088060,-11105150,20470157,-16398701 }, + { -23136053,9282192,14855179,-15390078,-7362815,-14408560,-22783952,14461608,14042978,5230683 }, + { 29969567,-2741594,-16711867,-8552442,9175486,-2468974,21556951,3506042,-5933891,-12449708 }, + }, + { + { -3144746,8744661,19704003,4581278,-20430686,6830683,-21284170,8971513,-28539189,15326563 }, + { -19464629,10110288,-17262528,-3503892,-23500387,1355669,-15523050,15300988,-20514118,9168260 }, + { -5353335,4488613,-23803248,16314347,7780487,-15638939,-28948358,9601605,33087103,-9011387 }, + }, + { + { -19443170,-15512900,-20797467,-12445323,-29824447,10229461,-27444329,-15000531,-5996870,15664672 }, + { 23294591,-16632613,-22650781,-8470978,27844204,11461195,13099750,-2460356,18151676,13417686 }, + { -24722913,-4176517,-31150679,5988919,-26858785,6685065,1661597,-12551441,15271676,-15452665 }, + }, +}, +{ + { + { 11433042,-13228665,8239631,-5279517,-1985436,-725718,-18698764,2167544,-6921301,-13440182 }, + { -31436171,15575146,30436815,12192228,-22463353,9395379,-9917708,-8638997,12215110,12028277 }, + { 14098400,6555944,23007258,5757252,-15427832,-12950502,30123440,4617780,-16900089,-655628 }, + }, + { + { -4026201,-15240835,11893168,13718664,-14809462,1847385,-15819999,10154009,23973261,-12684474 }, + { -26531820,-3695990,-1908898,2534301,-31870557,-16550355,18341390,-11419951,32013174,-10103539 }, + { -25479301,10876443,-11771086,-14625140,-12369567,1838104,21911214,6354752,4425632,-837822 }, + }, + { + { -10433389,-14612966,22229858,-3091047,-13191166,776729,-17415375,-12020462,4725005,14044970 }, + { 19268650,-7304421,1555349,8692754,-21474059,-9910664,6347390,-1411784,-19522291,-16109756 }, + { -24864089,12986008,-10898878,-5558584,-11312371,-148526,19541418,8180106,9282262,10282508 }, + }, + { + { -26205082,4428547,-8661196,-13194263,4098402,-14165257,15522535,8372215,5542595,-10702683 }, + { -10562541,14895633,26814552,-16673850,-17480754,-2489360,-2781891,6993761,-18093885,10114655 }, + { -20107055,-929418,31422704,10427861,-7110749,6150669,-29091755,-11529146,25953725,-106158 }, + }, + { + { -4234397,-8039292,-9119125,3046000,2101609,-12607294,19390020,6094296,-3315279,12831125 }, + { -15998678,7578152,5310217,14408357,-33548620,-224739,31575954,6326196,7381791,-2421839 }, + { -20902779,3296811,24736065,-16328389,18374254,7318640,6295303,8082724,-15362489,12339664 }, + }, + { + { 27724736,2291157,6088201,-14184798,1792727,5857634,13848414,15768922,25091167,14856294 }, + { -18866652,8331043,24373479,8541013,-701998,-9269457,12927300,-12695493,-22182473,-9012899 }, + { -11423429,-5421590,11632845,3405020,30536730,-11674039,-27260765,13866390,30146206,9142070 }, + }, + { + { 3924129,-15307516,-13817122,-10054960,12291820,-668366,-27702774,9326384,-8237858,4171294 }, + { -15921940,16037937,6713787,16606682,-21612135,2790944,26396185,3731949,345228,-5462949 }, + { -21327538,13448259,25284571,1143661,20614966,-8849387,2031539,-12391231,-16253183,-13582083 }, + }, + { + { 31016211,-16722429,26371392,-14451233,-5027349,14854137,17477601,3842657,28012650,-16405420 }, + { -5075835,9368966,-8562079,-4600902,-15249953,6970560,-9189873,16292057,-8867157,3507940 }, + { 29439664,3537914,23333589,6997794,-17555561,-11018068,-15209202,-15051267,-9164929,6580396 }, + }, +}, +{ + { + { -12185861,-7679788,16438269,10826160,-8696817,-6235611,17860444,-9273846,-2095802,9304567 }, + { 20714564,-4336911,29088195,7406487,11426967,-5095705,14792667,-14608617,5289421,-477127 }, + { -16665533,-10650790,-6160345,-13305760,9192020,-1802462,17271490,12349094,26939669,-3752294 }, + }, + { + { -12889898,9373458,31595848,16374215,21471720,13221525,-27283495,-12348559,-3698806,117887 }, + { 22263325,-6560050,3984570,-11174646,-15114008,-566785,28311253,5358056,-23319780,541964 }, + { 16259219,3261970,2309254,-15534474,-16885711,-4581916,24134070,-16705829,-13337066,-13552195 }, + }, + { + { 9378160,-13140186,-22845982,-12745264,28198281,-7244098,-2399684,-717351,690426,14876244 }, + { 24977353,-314384,-8223969,-13465086,28432343,-1176353,-13068804,-12297348,-22380984,6618999 }, + { -1538174,11685646,12944378,13682314,-24389511,-14413193,8044829,-13817328,32239829,-5652762 }, + }, + { + { -18603066,4762990,-926250,8885304,-28412480,-3187315,9781647,-10350059,32779359,5095274 }, + { -33008130,-5214506,-32264887,-3685216,9460461,-9327423,-24601656,14506724,21639561,-2630236 }, + { -16400943,-13112215,25239338,15531969,3987758,-4499318,-1289502,-6863535,17874574,558605 }, + }, + { + { -13600129,10240081,9171883,16131053,-20869254,9599700,33499487,5080151,2085892,5119761 }, + { -22205145,-2519528,-16381601,414691,-25019550,2170430,30634760,-8363614,-31999993,-5759884 }, + { -6845704,15791202,8550074,-1312654,29928809,-12092256,27534430,-7192145,-22351378,12961482 }, + }, + { + { -24492060,-9570771,10368194,11582341,-23397293,-2245287,16533930,8206996,-30194652,-5159638 }, + { -11121496,-3382234,2307366,6362031,-135455,8868177,-16835630,7031275,7589640,8945490 }, + { -32152748,8917967,6661220,-11677616,-1192060,-15793393,7251489,-11182180,24099109,-14456170 }, + }, + { + { 5019558,-7907470,4244127,-14714356,-26933272,6453165,-19118182,-13289025,-6231896,-10280736 }, + { 10853594,10721687,26480089,5861829,-22995819,1972175,-1866647,-10557898,-3363451,-6441124 }, + { -17002408,5906790,221599,-6563147,7828208,-13248918,24362661,-2008168,-13866408,7421392 }, + }, + { + { 8139927,-6546497,32257646,-5890546,30375719,1886181,-21175108,15441252,28826358,-4123029 }, + { 6267086,9695052,7709135,-16603597,-32869068,-1886135,14795160,-7840124,13746021,-1742048 }, + { 28584902,7787108,-6732942,-15050729,22846041,-7571236,-3181936,-363524,4771362,-8419958 }, + }, +}, +{ + { + { 24949256,6376279,-27466481,-8174608,-18646154,-9930606,33543569,-12141695,3569627,11342593 }, + { 26514989,4740088,27912651,3697550,19331575,-11472339,6809886,4608608,7325975,-14801071 }, + { -11618399,-14554430,-24321212,7655128,-1369274,5214312,-27400540,10258390,-17646694,-8186692 }, + }, + { + { 11431204,15823007,26570245,14329124,18029990,4796082,-31446179,15580664,9280358,-3973687 }, + { -160783,-10326257,-22855316,-4304997,-20861367,-13621002,-32810901,-11181622,-15545091,4387441 }, + { -20799378,12194512,3937617,-5805892,-27154820,9340370,-24513992,8548137,20617071,-7482001 }, + }, + { + { -938825,-3930586,-8714311,16124718,24603125,-6225393,-13775352,-11875822,24345683,10325460 }, + { -19855277,-1568885,-22202708,8714034,14007766,6928528,16318175,-1010689,4766743,3552007 }, + { -21751364,-16730916,1351763,-803421,-4009670,3950935,3217514,14481909,10988822,-3994762 }, + }, + { + { 15564307,-14311570,3101243,5684148,30446780,-8051356,12677127,-6505343,-8295852,13296005 }, + { -9442290,6624296,-30298964,-11913677,-4670981,-2057379,31521204,9614054,-30000824,12074674 }, + { 4771191,-135239,14290749,-13089852,27992298,14998318,-1413936,-1556716,29832613,-16391035 }, + }, + { + { 7064884,-7541174,-19161962,-5067537,-18891269,-2912736,25825242,5293297,-27122660,13101590 }, + { -2298563,2439670,-7466610,1719965,-27267541,-16328445,32512469,-5317593,-30356070,-4190957 }, + { -30006540,10162316,-33180176,3981723,-16482138,-13070044,14413974,9515896,19568978,9628812 }, + }, + { + { 33053803,199357,15894591,1583059,27380243,-4580435,-17838894,-6106839,-6291786,3437740 }, + { -18978877,3884493,19469877,12726490,15913552,13614290,-22961733,70104,7463304,4176122 }, + { -27124001,10659917,11482427,-16070381,12771467,-6635117,-32719404,-5322751,24216882,5944158 }, + }, + { + { 8894125,7450974,-2664149,-9765752,-28080517,-12389115,19345746,14680796,11632993,5847885 }, + { 26942781,-2315317,9129564,-4906607,26024105,11769399,-11518837,6367194,-9727230,4782140 }, + { 19916461,-4828410,-22910704,-11414391,25606324,-5972441,33253853,8220911,6358847,-1873857 }, + }, + { + { 801428,-2081702,16569428,11065167,29875704,96627,7908388,-4480480,-13538503,1387155 }, + { 19646058,5720633,-11416706,12814209,11607948,12749789,14147075,15156355,-21866831,11835260 }, + { 19299512,1155910,28703737,14890794,2925026,7269399,26121523,15467869,-26560550,5052483 }, + }, +}, +{ + { + { -3017432,10058206,1980837,3964243,22160966,12322533,-6431123,-12618185,12228557,-7003677 }, + { 32944382,14922211,-22844894,5188528,21913450,-8719943,4001465,13238564,-6114803,8653815 }, + { 22865569,-4652735,27603668,-12545395,14348958,8234005,24808405,5719875,28483275,2841751 }, + }, + { + { -16420968,-1113305,-327719,-12107856,21886282,-15552774,-1887966,-315658,19932058,-12739203 }, + { -11656086,10087521,-8864888,-5536143,-19278573,-3055912,3999228,13239134,-4777469,-13910208 }, + { 1382174,-11694719,17266790,9194690,-13324356,9720081,20403944,11284705,-14013818,3093230 }, + }, + { + { 16650921,-11037932,-1064178,1570629,-8329746,7352753,-302424,16271225,-24049421,-6691850 }, + { -21911077,-5927941,-4611316,-5560156,-31744103,-10785293,24123614,15193618,-21652117,-16739389 }, + { -9935934,-4289447,-25279823,4372842,2087473,10399484,31870908,14690798,17361620,11864968 }, + }, + { + { -11307610,6210372,13206574,5806320,-29017692,-13967200,-12331205,-7486601,-25578460,-16240689 }, + { 14668462,-12270235,26039039,15305210,25515617,4542480,10453892,6577524,9145645,-6443880 }, + { 5974874,3053895,-9433049,-10385191,-31865124,3225009,-7972642,3936128,-5652273,-3050304 }, + }, + { + { 30625386,-4729400,-25555961,-12792866,-20484575,7695099,17097188,-16303496,-27999779,1803632 }, + { -3553091,9865099,-5228566,4272701,-5673832,-16689700,14911344,12196514,-21405489,7047412 }, + { 20093277,9920966,-11138194,-5343857,13161587,12044805,-32856851,4124601,-32343828,-10257566 }, + }, + { + { -20788824,14084654,-13531713,7842147,19119038,-13822605,4752377,-8714640,-21679658,2288038 }, + { -26819236,-3283715,29965059,3039786,-14473765,2540457,29457502,14625692,-24819617,12570232 }, + { -1063558,-11551823,16920318,12494842,1278292,-5869109,-21159943,-3498680,-11974704,4724943 }, + }, + { + { 17960970,-11775534,-4140968,-9702530,-8876562,-1410617,-12907383,-8659932,-29576300,1903856 }, + { 23134274,-14279132,-10681997,-1611936,20684485,15770816,-12989750,3190296,26955097,14109738 }, + { 15308788,5320727,-30113809,-14318877,22902008,7767164,29425325,-11277562,31960942,11934971 }, + }, + { + { -27395711,8435796,4109644,12222639,-24627868,14818669,20638173,4875028,10491392,1379718 }, + { -13159415,9197841,3875503,-8936108,-1383712,-5879801,33518459,16176658,21432314,12180697 }, + { -11787308,11500838,13787581,-13832590,-22430679,10140205,1465425,12689540,-10301319,-13872883 }, + }, +}, +{ + { + { 5414091,-15386041,-21007664,9643570,12834970,1186149,-2622916,-1342231,26128231,6032912 }, + { -26337395,-13766162,32496025,-13653919,17847801,-12669156,3604025,8316894,-25875034,-10437358 }, + { 3296484,6223048,24680646,-12246460,-23052020,5903205,-8862297,-4639164,12376617,3188849 }, + }, + { + { 29190488,-14659046,27549113,-1183516,3520066,-10697301,32049515,-7309113,-16109234,-9852307 }, + { -14744486,-9309156,735818,-598978,-20407687,-5057904,25246078,-15795669,18640741,-960977 }, + { -6928835,-16430795,10361374,5642961,4910474,12345252,-31638386,-494430,10530747,1053335 }, + }, + { + { -29265967,-14186805,-13538216,-12117373,-19457059,-10655384,-31462369,-2948985,24018831,15026644 }, + { -22592535,-3145277,-2289276,5953843,-13440189,9425631,25310643,13003497,-2314791,-15145616 }, + { -27419985,-603321,-8043984,-1669117,-26092265,13987819,-27297622,187899,-23166419,-2531735 }, + }, + { + { -21744398,-13810475,1844840,5021428,-10434399,-15911473,9716667,16266922,-5070217,726099 }, + { 29370922,-6053998,7334071,-15342259,9385287,2247707,-13661962,-4839461,30007388,-15823341 }, + { -936379,16086691,23751945,-543318,-1167538,-5189036,9137109,730663,9835848,4555336 }, + }, + { + { -23376435,1410446,-22253753,-12899614,30867635,15826977,17693930,544696,-11985298,12422646 }, + { 31117226,-12215734,-13502838,6561947,-9876867,-12757670,-5118685,-4096706,29120153,13924425 }, + { -17400879,-14233209,19675799,-2734756,-11006962,-5858820,-9383939,-11317700,7240931,-237388 }, + }, + { + { -31361739,-11346780,-15007447,-5856218,-22453340,-12152771,1222336,4389483,3293637,-15551743 }, + { -16684801,-14444245,11038544,11054958,-13801175,-3338533,-24319580,7733547,12796905,-6335822 }, + { -8759414,-10817836,-25418864,10783769,-30615557,-9746811,-28253339,3647836,3222231,-11160462 }, + }, + { + { 18606113,1693100,-25448386,-15170272,4112353,10045021,23603893,-2048234,-7550776,2484985 }, + { 9255317,-3131197,-12156162,-1004256,13098013,-9214866,16377220,-2102812,-19802075,-3034702 }, + { -22729289,7496160,-5742199,11329249,19991973,-3347502,-31718148,9936966,-30097688,-10618797 }, + }, + { + { 21878590,-5001297,4338336,13643897,-3036865,13160960,19708896,5415497,-7360503,-4109293 }, + { 27736861,10103576,12500508,8502413,-3413016,-9633558,10436918,-1550276,-23659143,-8132100 }, + { 19492550,-12104365,-29681976,-852630,-3208171,12403437,30066266,8367329,13243957,8709688 }, + }, +}, +{ + { + { 12015105,2801261,28198131,10151021,24818120,-4743133,-11194191,-5645734,5150968,7274186 }, + { 2831366,-12492146,1478975,6122054,23825128,-12733586,31097299,6083058,31021603,-9793610 }, + { -2529932,-2229646,445613,10720828,-13849527,-11505937,-23507731,16354465,15067285,-14147707 }, + }, + { + { 7840942,14037873,-33364863,15934016,-728213,-3642706,21403988,1057586,-19379462,-12403220 }, + { 915865,-16469274,15608285,-8789130,-24357026,6060030,-17371319,8410997,-7220461,16527025 }, + { 32922597,-556987,20336074,-16184568,10903705,-5384487,16957574,52992,23834301,6588044 }, + }, + { + { 32752030,11232950,3381995,-8714866,22652988,-10744103,17159699,16689107,-20314580,-1305992 }, + { -4689649,9166776,-25710296,-10847306,11576752,12733943,7924251,-2752281,1976123,-7249027 }, + { 21251222,16309901,-2983015,-6783122,30810597,12967303,156041,-3371252,12331345,-8237197 }, + }, + { + { 8651614,-4477032,-16085636,-4996994,13002507,2950805,29054427,-5106970,10008136,-4667901 }, + { 31486080,15114593,-14261250,12951354,14369431,-7387845,16347321,-13662089,8684155,-10532952 }, + { 19443825,11385320,24468943,-9659068,-23919258,2187569,-26263207,-6086921,31316348,14219878 }, + }, + { + { -28594490,1193785,32245219,11392485,31092169,15722801,27146014,6992409,29126555,9207390 }, + { 32382935,1110093,18477781,11028262,-27411763,-7548111,-4980517,10843782,-7957600,-14435730 }, + { 2814918,7836403,27519878,-7868156,-20894015,-11553689,-21494559,8550130,28346258,1994730 }, + }, + { + { -19578299,8085545,-14000519,-3948622,2785838,-16231307,-19516951,7174894,22628102,8115180 }, + { -30405132,955511,-11133838,-15078069,-32447087,-13278079,-25651578,3317160,-9943017,930272 }, + { -15303681,-6833769,28856490,1357446,23421993,1057177,24091212,-1388970,-22765376,-10650715 }, + }, + { + { -22751231,-5303997,-12907607,-12768866,-15811511,-7797053,-14839018,-16554220,-1867018,8398970 }, + { -31969310,2106403,-4736360,1362501,12813763,16200670,22981545,-6291273,18009408,-15772772 }, + { -17220923,-9545221,-27784654,14166835,29815394,7444469,29551787,-3727419,19288549,1325865 }, + }, + { + { 15100157,-15835752,-23923978,-1005098,-26450192,15509408,12376730,-3479146,33166107,-8042750 }, + { 20909231,13023121,-9209752,16251778,-5778415,-8094914,12412151,10018715,2213263,-13878373 }, + { 32529814,-11074689,30361439,-16689753,-9135940,1513226,22922121,6382134,-5766928,8371348 }, + }, +}, +{ + { + { 9923462,11271500,12616794,3544722,-29998368,-1721626,12891687,-8193132,-26442943,10486144 }, + { -22597207,-7012665,8587003,-8257861,4084309,-12970062,361726,2610596,-23921530,-11455195 }, + { 5408411,-1136691,-4969122,10561668,24145918,14240566,31319731,-4235541,19985175,-3436086 }, + }, + { + { -13994457,16616821,14549246,3341099,32155958,13648976,-17577068,8849297,65030,8370684 }, + { -8320926,-12049626,31204563,5839400,-20627288,-1057277,-19442942,6922164,12743482,-9800518 }, + { -2361371,12678785,28815050,4759974,-23893047,4884717,23783145,11038569,18800704,255233 }, + }, + { + { -5269658,-1773886,13957886,7990715,23132995,728773,13393847,9066957,19258688,-14753793 }, + { -2936654,-10827535,-10432089,14516793,-3640786,4372541,-31934921,2209390,-1524053,2055794 }, + { 580882,16705327,5468415,-2683018,-30926419,-14696000,-7203346,-8994389,-30021019,7394435 }, + }, + { + { 23838809,1822728,-15738443,15242727,8318092,-3733104,-21672180,-3492205,-4821741,14799921 }, + { 13345610,9759151,3371034,-16137791,16353039,8577942,31129804,13496856,-9056018,7402518 }, + { 2286874,-4435931,-20042458,-2008336,-13696227,5038122,11006906,-15760352,8205061,1607563 }, + }, + { + { 14414086,-8002132,3331830,-3208217,22249151,-5594188,18364661,-2906958,30019587,-9029278 }, + { -27688051,1585953,-10775053,931069,-29120221,-11002319,-14410829,12029093,9944378,8024 }, + { 4368715,-3709630,29874200,-15022983,-20230386,-11410704,-16114594,-999085,-8142388,5640030 }, + }, + { + { 10299610,13746483,11661824,16234854,7630238,5998374,9809887,-16694564,15219798,-14327783 }, + { 27425505,-5719081,3055006,10660664,23458024,595578,-15398605,-1173195,-18342183,9742717 }, + { 6744077,2427284,26042789,2720740,-847906,1118974,32324614,7406442,12420155,1994844 }, + }, + { + { 14012521,-5024720,-18384453,-9578469,-26485342,-3936439,-13033478,-10909803,24319929,-6446333 }, + { 16412690,-4507367,10772641,15929391,-17068788,-4658621,10555945,-10484049,-30102368,-4739048 }, + { 22397382,-7767684,-9293161,-12792868,17166287,-9755136,-27333065,6199366,21880021,-12250760 }, + }, + { + { -4283307,5368523,-31117018,8163389,-30323063,3209128,16557151,8890729,8840445,4957760 }, + { -15447727,709327,-6919446,-10870178,-29777922,6522332,-21720181,12130072,-14796503,5005757 }, + { -2114751,-14308128,23019042,15765735,-25269683,6002752,10183197,-13239326,-16395286,-2176112 }, + }, +}, +{ + { + { -19025756,1632005,13466291,-7995100,-23640451,16573537,-32013908,-3057104,22208662,2000468 }, + { 3065073,-1412761,-25598674,-361432,-17683065,-5703415,-8164212,11248527,-3691214,-7414184 }, + { 10379208,-6045554,8877319,1473647,-29291284,-12507580,16690915,2553332,-3132688,16400289 }, + }, + { + { 15716668,1254266,-18472690,7446274,-8448918,6344164,-22097271,-7285580,26894937,9132066 }, + { 24158887,12938817,11085297,-8177598,-28063478,-4457083,-30576463,64452,-6817084,-2692882 }, + { 13488534,7794716,22236231,5989356,25426474,-12578208,2350710,-3418511,-4688006,2364226 }, + }, + { + { 16335052,9132434,25640582,6678888,1725628,8517937,-11807024,-11697457,15445875,-7798101 }, + { 29004207,-7867081,28661402,-640412,-12794003,-7943086,31863255,-4135540,-278050,-15759279 }, + { -6122061,-14866665,-28614905,14569919,-10857999,-3591829,10343412,-6976290,-29828287,-10815811 }, + }, + { + { 27081650,3463984,14099042,-4517604,1616303,-6205604,29542636,15372179,17293797,960709 }, + { 20263915,11434237,-5765435,11236810,13505955,-10857102,-16111345,6493122,-19384511,7639714 }, + { -2830798,-14839232,25403038,-8215196,-8317012,-16173699,18006287,-16043750,29994677,-15808121 }, + }, + { + { 9769828,5202651,-24157398,-13631392,-28051003,-11561624,-24613141,-13860782,-31184575,709464 }, + { 12286395,13076066,-21775189,-1176622,-25003198,4057652,-32018128,-8890874,16102007,13205847 }, + { 13733362,5599946,10557076,3195751,-5557991,8536970,-25540170,8525972,10151379,10394400 }, + }, + { + { 4024660,-16137551,22436262,12276534,-9099015,-2686099,19698229,11743039,-33302334,8934414 }, + { -15879800,-4525240,-8580747,-2934061,14634845,-698278,-9449077,3137094,-11536886,11721158 }, + { 17555939,-5013938,8268606,2331751,-22738815,9761013,9319229,8835153,-9205489,-1280045 }, + }, + { + { -461409,-7830014,20614118,16688288,-7514766,-4807119,22300304,505429,6108462,-6183415 }, + { -5070281,12367917,-30663534,3234473,32617080,-8422642,29880583,-13483331,-26898490,-7867459 }, + { -31975283,5726539,26934134,10237677,-3173717,-605053,24199304,3795095,7592688,-14992079 }, + }, + { + { 21594432,-14964228,17466408,-4077222,32537084,2739898,6407723,12018833,-28256052,4298412 }, + { -20650503,-11961496,-27236275,570498,3767144,-1717540,13891942,-1569194,13717174,10805743 }, + { -14676630,-15644296,15287174,11927123,24177847,-8175568,-796431,14860609,-26938930,-5863836 }, + }, +}, +{ + { + { 12962541,5311799,-10060768,11658280,18855286,-7954201,13286263,-12808704,-4381056,9882022 }, + { 18512079,11319350,-20123124,15090309,18818594,5271736,-22727904,3666879,-23967430,-3299429 }, + { -6789020,-3146043,16192429,13241070,15898607,-14206114,-10084880,-6661110,-2403099,5276065 }, + }, + { + { 30169808,-5317648,26306206,-11750859,27814964,7069267,7152851,3684982,1449224,13082861 }, + { 10342826,3098505,2119311,193222,25702612,12233820,23697382,15056736,-21016438,-8202000 }, + { -33150110,3261608,22745853,7948688,19370557,-15177665,-26171976,6482814,-10300080,-11060101 }, + }, + { + { 32869458,-5408545,25609743,15678670,-10687769,-15471071,26112421,2521008,-22664288,6904815 }, + { 29506923,4457497,3377935,-9796444,-30510046,12935080,1561737,3841096,-29003639,-6657642 }, + { 10340844,-6630377,-18656632,-2278430,12621151,-13339055,30878497,-11824370,-25584551,5181966 }, + }, + { + { 25940115,-12658025,17324188,-10307374,-8671468,15029094,24396252,-16450922,-2322852,-12388574 }, + { -21765684,9916823,-1300409,4079498,-1028346,11909559,1782390,12641087,20603771,-6561742 }, + { -18882287,-11673380,24849422,11501709,13161720,-4768874,1925523,11914390,4662781,7820689 }, + }, + { + { 12241050,-425982,8132691,9393934,32846760,-1599620,29749456,12172924,16136752,15264020 }, + { -10349955,-14680563,-8211979,2330220,-17662549,-14545780,10658213,6671822,19012087,3772772 }, + { 3753511,-3421066,10617074,2028709,14841030,-6721664,28718732,-15762884,20527771,12988982 }, + }, + { + { -14822485,-5797269,-3707987,12689773,-898983,-10914866,-24183046,-10564943,3299665,-12424953 }, + { -16777703,-15253301,-9642417,4978983,3308785,8755439,6943197,6461331,-25583147,8991218 }, + { -17226263,1816362,-1673288,-6086439,31783888,-8175991,-32948145,7417950,-30242287,1507265 }, + }, + { + { 29692663,6829891,-10498800,4334896,20945975,-11906496,-28887608,8209391,14606362,-10647073 }, + { -3481570,8707081,32188102,5672294,22096700,1711240,-33020695,9761487,4170404,-2085325 }, + { -11587470,14855945,-4127778,-1531857,-26649089,15084046,22186522,16002000,-14276837,-8400798 }, + }, + { + { -4811456,13761029,-31703877,-2483919,-3312471,7869047,-7113572,-9620092,13240845,10965870 }, + { -7742563,-8256762,-14768334,-13656260,-23232383,12387166,4498947,14147411,29514390,4302863 }, + { -13413405,-12407859,20757302,-13801832,14785143,8976368,-5061276,-2144373,17846988,-13971927 }, + }, +}, +{ + { + { -2244452,-754728,-4597030,-1066309,-6247172,1455299,-21647728,-9214789,-5222701,12650267 }, + { -9906797,-16070310,21134160,12198166,-27064575,708126,387813,13770293,-19134326,10958663 }, + { 22470984,12369526,23446014,-5441109,-21520802,-9698723,-11772496,-11574455,-25083830,4271862 }, + }, + { + { -25169565,-10053642,-19909332,15361595,-5984358,2159192,75375,-4278529,-32526221,8469673 }, + { 15854970,4148314,-8893890,7259002,11666551,13824734,-30531198,2697372,24154791,-9460943 }, + { 15446137,-15806644,29759747,14019369,30811221,-9610191,-31582008,12840104,24913809,9815020 }, + }, + { + { -4709286,-5614269,-31841498,-12288893,-14443537,10799414,-9103676,13438769,18735128,9466238 }, + { 11933045,9281483,5081055,-5183824,-2628162,-4905629,-7727821,-10896103,-22728655,16199064 }, + { 14576810,379472,-26786533,-8317236,-29426508,-10812974,-102766,1876699,30801119,2164795 }, + }, + { + { 15995086,3199873,13672555,13712240,-19378835,-4647646,-13081610,-15496269,-13492807,1268052 }, + { -10290614,-3659039,-3286592,10948818,23037027,3794475,-3470338,-12600221,-17055369,3565904 }, + { 29210088,-9419337,-5919792,-4952785,10834811,-13327726,-16512102,-10820713,-27162222,-14030531 }, + }, + { + { -13161890,15508588,16663704,-8156150,-28349942,9019123,-29183421,-3769423,2244111,-14001979 }, + { -5152875,-3800936,-9306475,-6071583,16243069,14684434,-25673088,-16180800,13491506,4641841 }, + { 10813417,643330,-19188515,-728916,30292062,-16600078,27548447,-7721242,14476989,-12767431 }, + }, + { + { 10292079,9984945,6481436,8279905,-7251514,7032743,27282937,-1644259,-27912810,12651324 }, + { -31185513,-813383,22271204,11835308,10201545,15351028,17099662,3988035,21721536,-3148940 }, + { 10202177,-6545839,-31373232,-9574638,-32150642,-8119683,-12906320,3852694,13216206,14842320 }, + }, + { + { -15815640,-10601066,-6538952,-7258995,-6984659,-6581778,-31500847,13765824,-27434397,9900184 }, + { 14465505,-13833331,-32133984,-14738873,-27443187,12990492,33046193,15796406,-7051866,-8040114 }, + { 30924417,-8279620,6359016,-12816335,16508377,9071735,-25488601,15413635,9524356,-7018878 }, + }, + { + { 12274201,-13175547,32627641,-1785326,6736625,13267305,5237659,-5109483,15663516,4035784 }, + { -2951309,8903985,17349946,601635,-16432815,-4612556,-13732739,-15889334,-22258478,4659091 }, + { -16916263,-4952973,-30393711,-15158821,20774812,15897498,5736189,15026997,-2178256,-13455585 }, + }, +}, +{ + { + { -8858980,-2219056,28571666,-10155518,-474467,-10105698,-3801496,278095,23440562,-290208 }, + { 10226241,-5928702,15139956,120818,-14867693,5218603,32937275,11551483,-16571960,-7442864 }, + { 17932739,-12437276,-24039557,10749060,11316803,7535897,22503767,5561594,-3646624,3898661 }, + }, + { + { 7749907,-969567,-16339731,-16464,-25018111,15122143,-1573531,7152530,21831162,1245233 }, + { 26958459,-14658026,4314586,8346991,-5677764,11960072,-32589295,-620035,-30402091,-16716212 }, + { -12165896,9166947,33491384,13673479,29787085,13096535,6280834,14587357,-22338025,13987525 }, + }, + { + { -24349909,7778775,21116000,15572597,-4833266,-5357778,-4300898,-5124639,-7469781,-2858068 }, + { 9681908,-6737123,-31951644,13591838,-6883821,386950,31622781,6439245,-14581012,4091397 }, + { -8426427,1470727,-28109679,-1596990,3978627,-5123623,-19622683,12092163,29077877,-14741988 }, + }, + { + { 5269168,-6859726,-13230211,-8020715,25932563,1763552,-5606110,-5505881,-20017847,2357889 }, + { 32264008,-15407652,-5387735,-1160093,-2091322,-3946900,23104804,-12869908,5727338,189038 }, + { 14609123,-8954470,-6000566,-16622781,-14577387,-7743898,-26745169,10942115,-25888931,-14884697 }, + }, + { + { 20513500,5557931,-15604613,7829531,26413943,-2019404,-21378968,7471781,13913677,-5137875 }, + { -25574376,11967826,29233242,12948236,-6754465,4713227,-8940970,14059180,12878652,8511905 }, + { -25656801,3393631,-2955415,-7075526,-2250709,9366908,-30223418,6812974,5568676,-3127656 }, + }, + { + { 11630004,12144454,2116339,13606037,27378885,15676917,-17408753,-13504373,-14395196,8070818 }, + { 27117696,-10007378,-31282771,-5570088,1127282,12772488,-29845906,10483306,-11552749,-1028714 }, + { 10637467,-5688064,5674781,1072708,-26343588,-6982302,-1683975,9177853,-27493162,15431203 }, + }, + { + { 20525145,10892566,-12742472,12779443,-29493034,16150075,-28240519,14943142,-15056790,-7935931 }, + { -30024462,5626926,-551567,-9981087,753598,11981191,25244767,-3239766,-3356550,9594024 }, + { -23752644,2636870,-5163910,-10103818,585134,7877383,11345683,-6492290,13352335,-10977084 }, + }, + { + { -1931799,-5407458,3304649,-12884869,17015806,-4877091,-29783850,-7752482,-13215537,-319204 }, + { 20239939,6607058,6203985,3483793,-18386976,-779229,-20723742,15077870,-22750759,14523817 }, + { 27406042,-6041657,27423596,-4497394,4996214,10002360,-28842031,-4545494,-30172742,-4805667 }, + }, +}, +{ + { + { 11374242,12660715,17861383,-12540833,10935568,1099227,-13886076,-9091740,-27727044,11358504 }, + { -12730809,10311867,1510375,10778093,-2119455,-9145702,32676003,11149336,-26123651,4985768 }, + { -19096303,341147,-6197485,-239033,15756973,-8796662,-983043,13794114,-19414307,-15621255 }, + }, + { + { 6490081,11940286,25495923,-7726360,8668373,-8751316,3367603,6970005,-1691065,-9004790 }, + { 1656497,13457317,15370807,6364910,13605745,8362338,-19174622,-5475723,-16796596,-5031438 }, + { -22273315,-13524424,-64685,-4334223,-18605636,-10921968,-20571065,-7007978,-99853,-10237333 }, + }, + { + { 17747465,10039260,19368299,-4050591,-20630635,-16041286,31992683,-15857976,-29260363,-5511971 }, + { 31932027,-4986141,-19612382,16366580,22023614,88450,11371999,-3744247,4882242,-10626905 }, + { 29796507,37186,19818052,10115756,-11829032,3352736,18551198,3272828,-5190932,-4162409 }, + }, + { + { 12501286,4044383,-8612957,-13392385,-32430052,5136599,-19230378,-3529697,330070,-3659409 }, + { 6384877,2899513,17807477,7663917,-2358888,12363165,25366522,-8573892,-271295,12071499 }, + { -8365515,-4042521,25133448,-4517355,-6211027,2265927,-32769618,1936675,-5159697,3829363 }, + }, + { + { 28425966,-5835433,-577090,-4697198,-14217555,6870930,7921550,-6567787,26333140,14267664 }, + { -11067219,11871231,27385719,-10559544,-4585914,-11189312,10004786,-8709488,-21761224,8930324 }, + { -21197785,-16396035,25654216,-1725397,12282012,11008919,1541940,4757911,-26491501,-16408940 }, + }, + { + { 13537262,-7759490,-20604840,10961927,-5922820,-13218065,-13156584,6217254,-15943699,13814990 }, + { -17422573,15157790,18705543,29619,24409717,-260476,27361681,9257833,-1956526,-1776914 }, + { -25045300,-10191966,15366585,15166509,-13105086,8423556,-29171540,12361135,-18685978,4578290 }, + }, + { + { 24579768,3711570,1342322,-11180126,-27005135,14124956,-22544529,14074919,21964432,8235257 }, + { -6528613,-2411497,9442966,-5925588,12025640,-1487420,-2981514,-1669206,13006806,2355433 }, + { -16304899,-13605259,-6632427,-5142349,16974359,-10911083,27202044,1719366,1141648,-12796236 }, + }, + { + { -12863944,-13219986,-8318266,-11018091,-6810145,-4843894,13475066,-3133972,32674895,13715045 }, + { 11423335,-5468059,32344216,8962751,24989809,9241752,-13265253,16086212,-28740881,-15642093 }, + { -1409668,12530728,-6368726,10847387,19531186,-14132160,-11709148,7791794,-27245943,4383347 }, + }, +}, +{ + { + { -28970898,5271447,-1266009,-9736989,-12455236,16732599,-4862407,-4906449,27193557,6245191 }, + { -15193956,5362278,-1783893,2695834,4960227,12840725,23061898,3260492,22510453,8577507 }, + { -12632451,11257346,-32692994,13548177,-721004,10879011,31168030,13952092,-29571492,-3635906 }, + }, + { + { 3877321,-9572739,32416692,5405324,-11004407,-13656635,3759769,11935320,5611860,8164018 }, + { -16275802,14667797,15906460,12155291,-22111149,-9039718,32003002,-8832289,5773085,-8422109 }, + { -23788118,-8254300,1950875,8937633,18686727,16459170,-905725,12376320,31632953,190926 }, + }, + { + { -24593607,-16138885,-8423991,13378746,14162407,6901328,-8288749,4508564,-25341555,-3627528 }, + { 8884438,-5884009,6023974,10104341,-6881569,-4941533,18722941,-14786005,-1672488,827625 }, + { -32720583,-16289296,-32503547,7101210,13354605,2659080,-1800575,-14108036,-24878478,1541286 }, + }, + { + { 2901347,-1117687,3880376,-10059388,-17620940,-3612781,-21802117,-3567481,20456845,-1885033 }, + { 27019610,12299467,-13658288,-1603234,-12861660,-4861471,-19540150,-5016058,29439641,15138866 }, + { 21536104,-6626420,-32447818,-10690208,-22408077,5175814,-5420040,-16361163,7779328,109896 }, + }, + { + { 30279744,14648750,-8044871,6425558,13639621,-743509,28698390,12180118,23177719,-554075 }, + { 26572847,3405927,-31701700,12890905,-19265668,5335866,-6493768,2378492,4439158,-13279347 }, + { -22716706,3489070,-9225266,-332753,18875722,-1140095,14819434,-12731527,-17717757,-5461437 }, + }, + { + { -5056483,16566551,15953661,3767752,-10436499,15627060,-820954,2177225,8550082,-15114165 }, + { -18473302,16596775,-381660,15663611,22860960,15585581,-27844109,-3582739,-23260460,-8428588 }, + { -32480551,15707275,-8205912,-5652081,29464558,2713815,-22725137,15860482,-21902570,1494193 }, + }, + { + { -19562091,-14087393,-25583872,-9299552,13127842,759709,21923482,16529112,8742704,12967017 }, + { -28464899,1553205,32536856,-10473729,-24691605,-406174,-8914625,-2933896,-29903758,15553883 }, + { 21877909,3230008,9881174,10539357,-4797115,2841332,11543572,14513274,19375923,-12647961 }, + }, + { + { 8832269,-14495485,13253511,5137575,5037871,4078777,24880818,-6222716,2862653,9455043 }, + { 29306751,5123106,20245049,-14149889,9592566,8447059,-2077124,-2990080,15511449,4789663 }, + { -20679756,7004547,8824831,-9434977,-4045704,-3750736,-5754762,108893,23513200,16652362 }, + }, +}, +{ + { + { -33256173,4144782,-4476029,-6579123,10770039,-7155542,-6650416,-12936300,-18319198,10212860 }, + { 2756081,8598110,7383731,-6859892,22312759,-1105012,21179801,2600940,-9988298,-12506466 }, + { -24645692,13317462,-30449259,-15653928,21365574,-10869657,11344424,864440,-2499677,-16710063 }, + }, + { + { -26432803,6148329,-17184412,-14474154,18782929,-275997,-22561534,211300,2719757,4940997 }, + { -1323882,3911313,-6948744,14759765,-30027150,7851207,21690126,8518463,26699843,5276295 }, + { -13149873,-6429067,9396249,365013,24703301,-10488939,1321586,149635,-15452774,7159369 }, + }, + { + { 9987780,-3404759,17507962,9505530,9731535,-2165514,22356009,8312176,22477218,-8403385 }, + { 18155857,-16504990,19744716,9006923,15154154,-10538976,24256460,-4864995,-22548173,9334109 }, + { 2986088,-4911893,10776628,-3473844,10620590,-7083203,-21413845,14253545,-22587149,536906 }, + }, + { + { 4377756,8115836,24567078,15495314,11625074,13064599,7390551,10589625,10838060,-15420424 }, + { -19342404,867880,9277171,-3218459,-14431572,-1986443,19295826,-15796950,6378260,699185 }, + { 7895026,4057113,-7081772,-13077756,-17886831,-323126,-716039,15693155,-5045064,-13373962 }, + }, + { + { -7737563,-5869402,-14566319,-7406919,11385654,13201616,31730678,-10962840,-3918636,-9669325 }, + { 10188286,-15770834,-7336361,13427543,22223443,14896287,30743455,7116568,-21786507,5427593 }, + { 696102,13206899,27047647,-10632082,15285305,-9853179,10798490,-4578720,19236243,12477404 }, + }, + { + { -11229439,11243796,-17054270,-8040865,-788228,-8167967,-3897669,11180504,-23169516,7733644 }, + { 17800790,-14036179,-27000429,-11766671,23887827,3149671,23466177,-10538171,10322027,15313801 }, + { 26246234,11968874,32263343,-5468728,6830755,-13323031,-15794704,-101982,-24449242,10890804 }, + }, + { + { -31365647,10271363,-12660625,-6267268,16690207,-13062544,-14982212,16484931,25180797,-5334884 }, + { -586574,10376444,-32586414,-11286356,19801893,10997610,2276632,9482883,316878,13820577 }, + { -9882808,-4510367,-2115506,16457136,-11100081,11674996,30756178,-7515054,30696930,-3712849 }, + }, + { + { 32988917,-9603412,12499366,7910787,-10617257,-11931514,-7342816,-9985397,-32349517,7392473 }, + { -8855661,15927861,9866406,-3649411,-2396914,-16655781,-30409476,-9134995,25112947,-2926644 }, + { -2504044,-436966,25621774,-5678772,15085042,-5479877,-24884878,-13526194,5537438,-13914319 }, + }, +}, +{ + { + { -11225584,2320285,-9584280,10149187,-33444663,5808648,-14876251,-1729667,31234590,6090599 }, + { -9633316,116426,26083934,2897444,-6364437,-2688086,609721,15878753,-6970405,-9034768 }, + { -27757857,247744,-15194774,-9002551,23288161,-10011936,-23869595,6503646,20650474,1804084 }, + }, + { + { -27589786,15456424,8972517,8469608,15640622,4439847,3121995,-10329713,27842616,-202328 }, + { -15306973,2839644,22530074,10026331,4602058,5048462,28248656,5031932,-11375082,12714369 }, + { 20807691,-7270825,29286141,11421711,-27876523,-13868230,-21227475,1035546,-19733229,12796920 }, + }, + { + { 12076899,-14301286,-8785001,-11848922,-25012791,16400684,-17591495,-12899438,3480665,-15182815 }, + { -32361549,5457597,28548107,7833186,7303070,-11953545,-24363064,-15921875,-33374054,2771025 }, + { -21389266,421932,26597266,6860826,22486084,-6737172,-17137485,-4210226,-24552282,15673397 }, + }, + { + { -20184622,2338216,19788685,-9620956,-4001265,-8740893,-20271184,4733254,3727144,-12934448 }, + { 6120119,814863,-11794402,-622716,6812205,-15747771,2019594,7975683,31123697,-10958981 }, + { 30069250,-11435332,30434654,2958439,18399564,-976289,12296869,9204260,-16432438,9648165 }, + }, + { + { 32705432,-1550977,30705658,7451065,-11805606,9631813,3305266,5248604,-26008332,-11377501 }, + { 17219865,2375039,-31570947,-5575615,-19459679,9219903,294711,15298639,2662509,-16297073 }, + { -1172927,-7558695,-4366770,-4287744,-21346413,-8434326,32087529,-1222777,32247248,-14389861 }, + }, + { + { 14312628,1221556,17395390,-8700143,-4945741,-8684635,-28197744,-9637817,-16027623,-13378845 }, + { -1428825,-9678990,-9235681,6549687,-7383069,-468664,23046502,9803137,17597934,2346211 }, + { 18510800,15337574,26171504,981392,-22241552,7827556,-23491134,-11323352,3059833,-11782870 }, + }, + { + { 10141598,6082907,17829293,-1947643,9830092,13613136,-25556636,-5544586,-33502212,3592096 }, + { 33114168,-15889352,-26525686,-13343397,33076705,8716171,1151462,1521897,-982665,-6837803 }, + { -32939165,-4255815,23947181,-324178,-33072974,-12305637,-16637686,3891704,26353178,693168 }, + }, + { + { 30374239,1595580,-16884039,13186931,4600344,406904,9585294,-400668,31375464,14369965 }, + { -14370654,-7772529,1510301,6434173,-18784789,-6262728,32732230,-13108839,17901441,16011505 }, + { 18171223,-11934626,-12500402,15197122,-11038147,-15230035,-19172240,-16046376,8764035,12309598 }, + }, +}, +{ + { + { 5975908,-5243188,-19459362,-9681747,-11541277,14015782,-23665757,1228319,17544096,-10593782 }, + { 5811932,-1715293,3442887,-2269310,-18367348,-8359541,-18044043,-15410127,-5565381,12348900 }, + { -31399660,11407555,25755363,6891399,-3256938,14872274,-24849353,8141295,-10632534,-585479 }, + }, + { + { -12675304,694026,-5076145,13300344,14015258,-14451394,-9698672,-11329050,30944593,1130208 }, + { 8247766,-6710942,-26562381,-7709309,-14401939,-14648910,4652152,2488540,23550156,-271232 }, + { 17294316,-3788438,7026748,15626851,22990044,113481,2267737,-5908146,-408818,-137719 }, + }, + { + { 16091085,-16253926,18599252,7340678,2137637,-1221657,-3364161,14550936,3260525,-7166271 }, + { -4910104,-13332887,18550887,10864893,-16459325,-7291596,-23028869,-13204905,-12748722,2701326 }, + { -8574695,16099415,4629974,-16340524,-20786213,-6005432,-10018363,9276971,11329923,1862132 }, + }, + { + { 14763076,-15903608,-30918270,3689867,3511892,10313526,-21951088,12219231,-9037963,-940300 }, + { 8894987,-3446094,6150753,3013931,301220,15693451,-31981216,-2909717,-15438168,11595570 }, + { 15214962,3537601,-26238722,-14058872,4418657,-15230761,13947276,10730794,-13489462,-4363670 }, + }, + { + { -2538306,7682793,32759013,263109,-29984731,-7955452,-22332124,-10188635,977108,699994 }, + { -12466472,4195084,-9211532,550904,-15565337,12917920,19118110,-439841,-30534533,-14337913 }, + { 31788461,-14507657,4799989,7372237,8808585,-14747943,9408237,-10051775,12493932,-5409317 }, + }, + { + { -25680606,5260744,-19235809,-6284470,-3695942,16566087,27218280,2607121,29375955,6024730 }, + { 842132,-2794693,-4763381,-8722815,26332018,-12405641,11831880,6985184,-9940361,2854096 }, + { -4847262,-7969331,2516242,-5847713,9695691,-7221186,16512645,960770,12121869,16648078 }, + }, + { + { -15218652,14667096,-13336229,2013717,30598287,-464137,-31504922,-7882064,20237806,2838411 }, + { -19288047,4453152,15298546,-16178388,22115043,-15972604,12544294,-13470457,1068881,-12499905 }, + { -9558883,-16518835,33238498,13506958,30505848,-1114596,-8486907,-2630053,12521378,4845654 }, + }, + { + { -28198521,10744108,-2958380,10199664,7759311,-13088600,3409348,-873400,-6482306,-12885870 }, + { -23561822,6230156,-20382013,10655314,-24040585,-11621172,10477734,-1240216,-3113227,13974498 }, + { 12966261,15550616,-32038948,-1615346,21025980,-629444,5642325,7188737,18895762,12629579 }, + }, +}, +{ + { + { 14741879,-14946887,22177208,-11721237,1279741,8058600,11758140,789443,32195181,3895677 }, + { 10758205,15755439,-4509950,9243698,-4879422,6879879,-2204575,-3566119,-8982069,4429647 }, + { -2453894,15725973,-20436342,-10410672,-5803908,-11040220,-7135870,-11642895,18047436,-15281743 }, + }, + { + { -25173001,-11307165,29759956,11776784,-22262383,-15820455,10993114,-12850837,-17620701,-9408468 }, + { 21987233,700364,-24505048,14972008,-7774265,-5718395,32155026,2581431,-29958985,8773375 }, + { -25568350,454463,-13211935,16126715,25240068,8594567,20656846,12017935,-7874389,-13920155 }, + }, + { + { 6028182,6263078,-31011806,-11301710,-818919,2461772,-31841174,-5468042,-1721788,-2776725 }, + { -12278994,16624277,987579,-5922598,32908203,1248608,7719845,-4166698,28408820,6816612 }, + { -10358094,-8237829,19549651,-12169222,22082623,16147817,20613181,13982702,-10339570,5067943 }, + }, + { + { -30505967,-3821767,12074681,13582412,-19877972,2443951,-19719286,12746132,5331210,-10105944 }, + { 30528811,3601899,-1957090,4619785,-27361822,-15436388,24180793,-12570394,27679908,-1648928 }, + { 9402404,-13957065,32834043,10838634,-26580150,-13237195,26653274,-8685565,22611444,-12715406 }, + }, + { + { 22190590,1118029,22736441,15130463,-30460692,-5991321,19189625,-4648942,4854859,6622139 }, + { -8310738,-2953450,-8262579,-3388049,-10401731,-271929,13424426,-3567227,26404409,13001963 }, + { -31241838,-15415700,-2994250,8939346,11562230,-12840670,-26064365,-11621720,-15405155,11020693 }, + }, + { + { 1866042,-7949489,-7898649,-10301010,12483315,13477547,3175636,-12424163,28761762,1406734 }, + { -448555,-1777666,13018551,3194501,-9580420,-11161737,24760585,-4347088,25577411,-13378680 }, + { -24290378,4759345,-690653,-1852816,2066747,10693769,-29595790,9884936,-9368926,4745410 }, + }, + { + { -9141284,6049714,-19531061,-4341411,-31260798,9944276,-15462008,-11311852,10931924,-11931931 }, + { -16561513,14112680,-8012645,4817318,-8040464,-11414606,-22853429,10856641,-20470770,13434654 }, + { 22759489,-10073434,-16766264,-1871422,13637442,-10168091,1765144,-12654326,28445307,-5364710 }, + }, + { + { 29875063,12493613,2795536,-3786330,1710620,15181182,-10195717,-8788675,9074234,1167180 }, + { -26205683,11014233,-9842651,-2635485,-26908120,7532294,-18716888,-9535498,3843903,9367684 }, + { -10969595,-6403711,9591134,9582310,11349256,108879,16235123,8601684,-139197,4242895 }, + }, +}, +{ + { + { 22092954,-13191123,-2042793,-11968512,32186753,-11517388,-6574341,2470660,-27417366,16625501 }, + { -11057722,3042016,13770083,-9257922,584236,-544855,-7770857,2602725,-27351616,14247413 }, + { 6314175,-10264892,-32772502,15957557,-10157730,168750,-8618807,14290061,27108877,-1180880 }, + }, + { + { -8586597,-7170966,13241782,10960156,-32991015,-13794596,33547976,-11058889,-27148451,981874 }, + { 22833440,9293594,-32649448,-13618667,-9136966,14756819,-22928859,-13970780,-10479804,-16197962 }, + { -7768587,3326786,-28111797,10783824,19178761,14905060,22680049,13906969,-15933690,3797899 }, + }, + { + { 21721356,-4212746,-12206123,9310182,-3882239,-13653110,23740224,-2709232,20491983,-8042152 }, + { 9209270,-15135055,-13256557,-6167798,-731016,15289673,25947805,15286587,30997318,-6703063 }, + { 7392032,16618386,23946583,-8039892,-13265164,-1533858,-14197445,-2321576,17649998,-250080 }, + }, + { + { -9301088,-14193827,30609526,-3049543,-25175069,-1283752,-15241566,-9525724,-2233253,7662146 }, + { -17558673,1763594,-33114336,15908610,-30040870,-12174295,7335080,-8472199,-3174674,3440183 }, + { -19889700,-5977008,-24111293,-9688870,10799743,-16571957,40450,-4431835,4862400,1133 }, + }, + { + { -32856209,-7873957,-5422389,14860950,-16319031,7956142,7258061,311861,-30594991,-7379421 }, + { -3773428,-1565936,28985340,7499440,24445838,9325937,29727763,16527196,18278453,15405622 }, + { -4381906,8508652,-19898366,-3674424,-5984453,15149970,-13313598,843523,-21875062,13626197 }, + }, + { + { 2281448,-13487055,-10915418,-2609910,1879358,16164207,-10783882,3953792,13340839,15928663 }, + { 31727126,-7179855,-18437503,-8283652,2875793,-16390330,-25269894,-7014826,-23452306,5964753 }, + { 4100420,-5959452,-17179337,6017714,-18705837,12227141,-26684835,11344144,2538215,-7570755 }, + }, + { + { -9433605,6123113,11159803,-2156608,30016280,14966241,-20474983,1485421,-629256,-15958862 }, + { -26804558,4260919,11851389,9658551,-32017107,16367492,-20205425,-13191288,11659922,-11115118 }, + { 26180396,10015009,-30844224,-8581293,5418197,9480663,2231568,-10170080,33100372,-1306171 }, + }, + { + { 15121113,-5201871,-10389905,15427821,-27509937,-15992507,21670947,4486675,-5931810,-14466380 }, + { 16166486,-9483733,-11104130,6023908,-31926798,-1364923,2340060,-16254968,-10735770,-10039824 }, + { 28042865,-3557089,-12126526,12259706,-3717498,-6945899,6766453,-8689599,18036436,5803270 }, + }, +}, +{ + { + { -817581,6763912,11803561,1585585,10958447,-2671165,23855391,4598332,-6159431,-14117438 }, + { -31031306,-14256194,17332029,-2383520,31312682,-5967183,696309,50292,-20095739,11763584 }, + { -594563,-2514283,-32234153,12643980,12650761,14811489,665117,-12613632,-19773211,-10713562 }, + }, + { + { 30464590,-11262872,-4127476,-12734478,19835327,-7105613,-24396175,2075773,-17020157,992471 }, + { 18357185,-6994433,7766382,16342475,-29324918,411174,14578841,8080033,-11574335,-10601610 }, + { 19598397,10334610,12555054,2555664,18821899,-10339780,21873263,16014234,26224780,16452269 }, + }, + { + { -30223925,5145196,5944548,16385966,3976735,2009897,-11377804,-7618186,-20533829,3698650 }, + { 14187449,3448569,-10636236,-10810935,-22663880,-3433596,7268410,-10890444,27394301,12015369 }, + { 19695761,16087646,28032085,12999827,6817792,11427614,20244189,-1312777,-13259127,-3402461 }, + }, + { + { 30860103,12735208,-1888245,-4699734,-16974906,2256940,-8166013,12298312,-8550524,-10393462 }, + { -5719826,-11245325,-1910649,15569035,26642876,-7587760,-5789354,-15118654,-4976164,12651793 }, + { -2848395,9953421,11531313,-5282879,26895123,-12697089,-13118820,-16517902,9768698,-2533218 }, + }, + { + { -24719459,1894651,-287698,-4704085,15348719,-8156530,32767513,12765450,4940095,10678226 }, + { 18860224,15980149,-18987240,-1562570,-26233012,-11071856,-7843882,13944024,-24372348,16582019 }, + { -15504260,4970268,-29893044,4175593,-20993212,-2199756,-11704054,15444560,-11003761,7989037 }, + }, + { + { 31490452,5568061,-2412803,2182383,-32336847,4531686,-32078269,6200206,-19686113,-14800171 }, + { -17308668,-15879940,-31522777,-2831,-32887382,16375549,8680158,-16371713,28550068,-6857132 }, + { -28126887,-5688091,16837845,-1820458,-6850681,12700016,-30039981,4364038,1155602,5988841 }, + }, + { + { 21890435,-13272907,-12624011,12154349,-7831873,15300496,23148983,-4470481,24618407,8283181 }, + { -33136107,-10512751,9975416,6841041,-31559793,16356536,3070187,-7025928,1466169,10740210 }, + { -1509399,-15488185,-13503385,-10655916,32799044,909394,-13938903,-5779719,-32164649,-15327040 }, + }, + { + { 3960823,-14267803,-28026090,-15918051,-19404858,13146868,15567327,951507,-3260321,-573935 }, + { 24740841,5052253,-30094131,8961361,25877428,6165135,-24368180,14397372,-7380369,-6144105 }, + { -28888365,3510803,-28103278,-1158478,-11238128,-10631454,-15441463,-14453128,-1625486,-6494814 }, + }, +}, +{ + { + { 793299,-9230478,8836302,-6235707,-27360908,-2369593,33152843,-4885251,-9906200,-621852 }, + { 5666233,525582,20782575,-8038419,-24538499,14657740,16099374,1468826,-6171428,-15186581 }, + { -4859255,-3779343,-2917758,-6748019,7778750,11688288,-30404353,-9871238,-1558923,-9863646 }, + }, + { + { 10896332,-7719704,824275,472601,-19460308,3009587,25248958,14783338,-30581476,-15757844 }, + { 10566929,12612572,-31944212,11118703,-12633376,12362879,21752402,8822496,24003793,14264025 }, + { 27713862,-7355973,-11008240,9227530,27050101,2504721,23886875,-13117525,13958495,-5732453 }, + }, + { + { -23481610,4867226,-27247128,3900521,29838369,-8212291,-31889399,-10041781,7340521,-15410068 }, + { 4646514,-8011124,-22766023,-11532654,23184553,8566613,31366726,-1381061,-15066784,-10375192 }, + { -17270517,12723032,-16993061,14878794,21619651,-6197576,27584817,3093888,-8843694,3849921 }, + }, + { + { -9064912,2103172,25561640,-15125738,-5239824,9582958,32477045,-9017955,5002294,-15550259 }, + { -12057553,-11177906,21115585,-13365155,8808712,-12030708,16489530,13378448,-25845716,12741426 }, + { -5946367,10645103,-30911586,15390284,-3286982,-7118677,24306472,15852464,28834118,-7646072 }, + }, + { + { -17335748,-9107057,-24531279,9434953,-8472084,-583362,-13090771,455841,20461858,5491305 }, + { 13669248,-16095482,-12481974,-10203039,-14569770,-11893198,-24995986,11293807,-28588204,-9421832 }, + { 28497928,6272777,-33022994,14470570,8906179,-1225630,18504674,-14165166,29867745,-8795943 }, + }, + { + { -16207023,13517196,-27799630,-13697798,24009064,-6373891,-6367600,-13175392,22853429,-4012011 }, + { 24191378,16712145,-13931797,15217831,14542237,1646131,18603514,-11037887,12876623,-2112447 }, + { 17902668,4518229,-411702,-2829247,26878217,5258055,-12860753,608397,16031844,3723494 }, + }, + { + { -28632773,12763728,-20446446,7577504,33001348,-13017745,17558842,-7872890,23896954,-4314245 }, + { -20005381,-12011952,31520464,605201,2543521,5991821,-2945064,7229064,-9919646,-8826859 }, + { 28816045,298879,-28165016,-15920938,19000928,-1665890,-12680833,-2949325,-18051778,-2082915 }, + }, + { + { 16000882,-344896,3493092,-11447198,-29504595,-13159789,12577740,16041268,-19715240,7847707 }, + { 10151868,10572098,27312476,7922682,14825339,4723128,-32855931,-6519018,-10020567,3852848 }, + { -11430470,15697596,-21121557,-4420647,5386314,15063598,16514493,-15932110,29330899,-15076224 }, + }, +}, +{ + { + { -25499735,-4378794,-15222908,-6901211,16615731,2051784,3303702,15490,-27548796,12314391 }, + { 15683520,-6003043,18109120,-9980648,15337968,-5997823,-16717435,15921866,16103996,-3731215 }, + { -23169824,-10781249,13588192,-1628807,-3798557,-1074929,-19273607,5402699,-29815713,-9841101 }, + }, + { + { 23190676,2384583,-32714340,3462154,-29903655,-1529132,-11266856,8911517,-25205859,2739713 }, + { 21374101,-3554250,-33524649,9874411,15377179,11831242,-33529904,6134907,4931255,11987849 }, + { -7732,-2978858,-16223486,7277597,105524,-322051,-31480539,13861388,-30076310,10117930 }, + }, + { + { -29501170,-10744872,-26163768,13051539,-25625564,5089643,-6325503,6704079,12890019,15728940 }, + { -21972360,-11771379,-951059,-4418840,14704840,2695116,903376,-10428139,12885167,8311031 }, + { -17516482,5352194,10384213,-13811658,7506451,13453191,26423267,4384730,1888765,-5435404 }, + }, + { + { -25817338,-3107312,-13494599,-3182506,30896459,-13921729,-32251644,-12707869,-19464434,-3340243 }, + { -23607977,-2665774,-526091,4651136,5765089,4618330,6092245,14845197,17151279,-9854116 }, + { -24830458,-12733720,-15165978,10367250,-29530908,-265356,22825805,-7087279,-16866484,16176525 }, + }, + { + { -23583256,6564961,20063689,3798228,-4740178,7359225,2006182,-10363426,-28746253,-10197509 }, + { -10626600,-4486402,-13320562,-5125317,3432136,-6393229,23632037,-1940610,32808310,1099883 }, + { 15030977,5768825,-27451236,-2887299,-6427378,-15361371,-15277896,-6809350,2051441,-15225865 }, + }, + { + { -3362323,-7239372,7517890,9824992,23555850,295369,5148398,-14154188,-22686354,16633660 }, + { 4577086,-16752288,13249841,-15304328,19958763,-14537274,18559670,-10759549,8402478,-9864273 }, + { -28406330,-1051581,-26790155,-907698,-17212414,-11030789,9453451,-14980072,17983010,9967138 }, + }, + { + { -25762494,6524722,26585488,9969270,24709298,1220360,-1677990,7806337,17507396,3651560 }, + { -10420457,-4118111,14584639,15971087,-15768321,8861010,26556809,-5574557,-18553322,-11357135 }, + { 2839101,14284142,4029895,3472686,14402957,12689363,-26642121,8459447,-5605463,-7621941 }, + }, + { + { -4839289,-3535444,9744961,2871048,25113978,3187018,-25110813,-849066,17258084,-7977739 }, + { 18164541,-10595176,-17154882,-1542417,19237078,-9745295,23357533,-15217008,26908270,12150756 }, + { -30264870,-7647865,5112249,-7036672,-1499807,-6974257,43168,-5537701,-32302074,16215819 }, + }, +}, +{ + { + { -6898905,9824394,-12304779,-4401089,-31397141,-6276835,32574489,12532905,-7503072,-8675347 }, + { -27343522,-16515468,-27151524,-10722951,946346,16291093,254968,7168080,21676107,-1943028 }, + { 21260961,-8424752,-16831886,-11920822,-23677961,3968121,-3651949,-6215466,-3556191,-7913075 }, + }, + { + { 16544754,13250366,-16804428,15546242,-4583003,12757258,-2462308,-8680336,-18907032,-9662799 }, + { -2415239,-15577728,18312303,4964443,-15272530,-12653564,26820651,16690659,25459437,-4564609 }, + { -25144690,11425020,28423002,-11020557,-6144921,-15826224,9142795,-2391602,-6432418,-1644817 }, + }, + { + { -23104652,6253476,16964147,-3768872,-25113972,-12296437,-27457225,-16344658,6335692,7249989 }, + { -30333227,13979675,7503222,-12368314,-11956721,-4621693,-30272269,2682242,25993170,-12478523 }, + { 4364628,5930691,32304656,-10044554,-8054781,15091131,22857016,-10598955,31820368,15075278 }, + }, + { + { 31879134,-8918693,17258761,90626,-8041836,-4917709,24162788,-9650886,-17970238,12833045 }, + { 19073683,14851414,-24403169,-11860168,7625278,11091125,-19619190,2074449,-9413939,14905377 }, + { 24483667,-11935567,-2518866,-11547418,-1553130,15355506,-25282080,9253129,27628530,-7555480 }, + }, + { + { 17597607,8340603,19355617,552187,26198470,-3176583,4593324,-9157582,-14110875,15297016 }, + { 510886,14337390,-31785257,16638632,6328095,2713355,-20217417,-11864220,8683221,2921426 }, + { 18606791,11874196,27155355,-5281482,-24031742,6265446,-25178240,-1278924,4674690,13890525 }, + }, + { + { 13609624,13069022,-27372361,-13055908,24360586,9592974,14977157,9835105,4389687,288396 }, + { 9922506,-519394,13613107,5883594,-18758345,-434263,-12304062,8317628,23388070,16052080 }, + { 12720016,11937594,-31970060,-5028689,26900120,8561328,-20155687,-11632979,-14754271,-10812892 }, + }, + { + { 15961858,14150409,26716931,-665832,-22794328,13603569,11829573,7467844,-28822128,929275 }, + { 11038231,-11582396,-27310482,-7316562,-10498527,-16307831,-23479533,-9371869,-21393143,2465074 }, + { 20017163,-4323226,27915242,1529148,12396362,15675764,13817261,-9658066,2463391,-4622140 }, + }, + { + { -16358878,-12663911,-12065183,4996454,-1256422,1073572,9583558,12851107,4003896,12673717 }, + { -1731589,-15155870,-3262930,16143082,19294135,13385325,14741514,-9103726,7903886,2348101 }, + { 24536016,-16515207,12715592,-3862155,1511293,10047386,-3842346,-7129159,-28377538,10048127 }, + }, +}, +{ + { + { -12622226,-6204820,30718825,2591312,-10617028,12192840,18873298,-7297090,-32297756,15221632 }, + { -26478122,-11103864,11546244,-1852483,9180880,7656409,-21343950,2095755,29769758,6593415 }, + { -31994208,-2907461,4176912,3264766,12538965,-868111,26312345,-6118678,30958054,8292160 }, + }, + { + { 31429822,-13959116,29173532,15632448,12174511,-2760094,32808831,3977186,26143136,-3148876 }, + { 22648901,1402143,-22799984,13746059,7936347,365344,-8668633,-1674433,-3758243,-2304625 }, + { -15491917,8012313,-2514730,-12702462,-23965846,-10254029,-1612713,-1535569,-16664475,8194478 }, + }, + { + { 27338066,-7507420,-7414224,10140405,-19026427,-6589889,27277191,8855376,28572286,3005164 }, + { 26287124,4821776,25476601,-4145903,-3764513,-15788984,-18008582,1182479,-26094821,-13079595 }, + { -7171154,3178080,23970071,6201893,-17195577,-4489192,-21876275,-13982627,32208683,-1198248 }, + }, + { + { -16657702,2817643,-10286362,14811298,6024667,13349505,-27315504,-10497842,-27672585,-11539858 }, + { 15941029,-9405932,-21367050,8062055,31876073,-238629,-15278393,-1444429,15397331,-4130193 }, + { 8934485,-13485467,-23286397,-13423241,-32446090,14047986,31170398,-1441021,-27505566,15087184 }, + }, + { + { -18357243,-2156491,24524913,-16677868,15520427,-6360776,-15502406,11461896,16788528,-5868942 }, + { -1947386,16013773,21750665,3714552,-17401782,-16055433,-3770287,-10323320,31322514,-11615635 }, + { 21426655,-5650218,-13648287,-5347537,-28812189,-4920970,-18275391,-14621414,13040862,-12112948 }, + }, + { + { 11293895,12478086,-27136401,15083750,-29307421,14748872,14555558,-13417103,1613711,4896935 }, + { -25894883,15323294,-8489791,-8057900,25967126,-13425460,2825960,-4897045,-23971776,-11267415 }, + { -15924766,-5229880,-17443532,6410664,3622847,10243618,20615400,12405433,-23753030,-8436416 }, + }, + { + { -7091295,12556208,-20191352,9025187,-17072479,4333801,4378436,2432030,23097949,-566018 }, + { 4565804,-16025654,20084412,-7842817,1724999,189254,24767264,10103221,-18512313,2424778 }, + { 366633,-11976806,8173090,-6890119,30788634,5745705,-7168678,1344109,-3642553,12412659 }, + }, + { + { -24001791,7690286,14929416,-168257,-32210835,-13412986,24162697,-15326504,-3141501,11179385 }, + { 18289522,-14724954,8056945,16430056,-21729724,7842514,-6001441,-1486897,-18684645,-11443503 }, + { 476239,6601091,-6152790,-9723375,17503545,-4863900,27672959,13403813,11052904,5219329 }, + }, +}, +{ + { + { 20678546,-8375738,-32671898,8849123,-5009758,14574752,31186971,-3973730,9014762,-8579056 }, + { -13644050,-10350239,-15962508,5075808,-1514661,-11534600,-33102500,9160280,8473550,-3256838 }, + { 24900749,14435722,17209120,-15292541,-22592275,9878983,-7689309,-16335821,-24568481,11788948 }, + }, + { + { -3118155,-11395194,-13802089,14797441,9652448,-6845904,-20037437,10410733,-24568470,-1458691 }, + { -15659161,16736706,-22467150,10215878,-9097177,7563911,11871841,-12505194,-18513325,8464118 }, + { -23400612,8348507,-14585951,-861714,-3950205,-6373419,14325289,8628612,33313881,-8370517 }, + }, + { + { -20186973,-4967935,22367356,5271547,-1097117,-4788838,-24805667,-10236854,-8940735,-5818269 }, + { -6948785,-1795212,-32625683,-16021179,32635414,-7374245,15989197,-12838188,28358192,-4253904 }, + { -23561781,-2799059,-32351682,-1661963,-9147719,10429267,-16637684,4072016,-5351664,5596589 }, + }, + { + { -28236598,-3390048,12312896,6213178,3117142,16078565,29266239,2557221,1768301,15373193 }, + { -7243358,-3246960,-4593467,-7553353,-127927,-912245,-1090902,-4504991,-24660491,3442910 }, + { -30210571,5124043,14181784,8197961,18964734,-11939093,22597931,7176455,-18585478,13365930 }, + }, + { + { -7877390,-1499958,8324673,4690079,6261860,890446,24538107,-8570186,-9689599,-3031667 }, + { 25008904,-10771599,-4305031,-9638010,16265036,15721635,683793,-11823784,15723479,-15163481 }, + { -9660625,12374379,-27006999,-7026148,-7724114,-12314514,11879682,5400171,519526,-1235876 }, + }, + { + { 22258397,-16332233,-7869817,14613016,-22520255,-2950923,-20353881,7315967,16648397,7605640 }, + { -8081308,-8464597,-8223311,9719710,19259459,-15348212,23994942,-5281555,-9468848,4763278 }, + { -21699244,9220969,-15730624,1084137,-25476107,-2852390,31088447,-7764523,-11356529,728112 }, + }, + { + { 26047220,-11751471,-6900323,-16521798,24092068,9158119,-4273545,-12555558,-29365436,-5498272 }, + { 17510331,-322857,5854289,8403524,17133918,-3112612,-28111007,12327945,10750447,10014012 }, + { -10312768,3936952,9156313,-8897683,16498692,-994647,-27481051,-666732,3424691,7540221 }, + }, + { + { 30322361,-6964110,11361005,-4143317,7433304,4989748,-7071422,-16317219,-9244265,15258046 }, + { 13054562,-2779497,19155474,469045,-12482797,4566042,5631406,2711395,1062915,-5136345 }, + { -19240248,-11254599,-29509029,-7499965,-5835763,13005411,-6066489,12194497,32960380,1459310 }, + }, +}, +{ + { + { 19852034,7027924,23669353,10020366,8586503,-6657907,394197,-6101885,18638003,-11174937 }, + { 31395534,15098109,26581030,8030562,-16527914,-5007134,9012486,-7584354,-6643087,-5442636 }, + { -9192165,-2347377,-1997099,4529534,25766844,607986,-13222,9677543,-32294889,-6456008 }, + }, + { + { -2444496,-149937,29348902,8186665,1873760,12489863,-30934579,-7839692,-7852844,-8138429 }, + { -15236356,-15433509,7766470,746860,26346930,-10221762,-27333451,10754588,-9431476,5203576 }, + { 31834314,14135496,-770007,5159118,20917671,-16768096,-7467973,-7337524,31809243,7347066 }, + }, + { + { -9606723,-11874240,20414459,13033986,13716524,-11691881,19797970,-12211255,15192876,-2087490 }, + { -12663563,-2181719,1168162,-3804809,26747877,-14138091,10609330,12694420,33473243,-13382104 }, + { 33184999,11180355,15832085,-11385430,-1633671,225884,15089336,-11023903,-6135662,14480053 }, + }, + { + { 31308717,-5619998,31030840,-1897099,15674547,-6582883,5496208,13685227,27595050,8737275 }, + { -20318852,-15150239,10933843,-16178022,8335352,-7546022,-31008351,-12610604,26498114,66511 }, + { 22644454,-8761729,-16671776,4884562,-3105614,-13559366,30540766,-4286747,-13327787,-7515095 }, + }, + { + { -28017847,9834845,18617207,-2681312,-3401956,-13307506,8205540,13585437,-17127465,15115439 }, + { 23711543,-672915,31206561,-8362711,6164647,-9709987,-33535882,-1426096,8236921,16492939 }, + { -23910559,-13515526,-26299483,-4503841,25005590,-7687270,19574902,10071562,6708380,-6222424 }, + }, + { + { 2101391,-4930054,19702731,2367575,-15427167,1047675,5301017,9328700,29955601,-11678310 }, + { 3096359,9271816,-21620864,-15521844,-14847996,-7592937,-25892142,-12635595,-9917575,6216608 }, + { -32615849,338663,-25195611,2510422,-29213566,-13820213,24822830,-6146567,-26767480,7525079 }, + }, + { + { -23066649,-13985623,16133487,-7896178,-3389565,778788,-910336,-2782495,-19386633,11994101 }, + { 21691500,-13624626,-641331,-14367021,3285881,-3483596,-25064666,9718258,-7477437,13381418 }, + { 18445390,-4202236,14979846,11622458,-1727110,-3582980,23111648,-6375247,28535282,15779576 }, + }, + { + { 30098053,3089662,-9234387,16662135,-21306940,11308411,-14068454,12021730,9955285,-16303356 }, + { 9734894,-14576830,-7473633,-9138735,2060392,11313496,-18426029,9924399,20194861,13380996 }, + { -26378102,-7965207,-22167821,15789297,-18055342,-6168792,-1984914,15707771,26342023,10146099 }, + }, +}, +{ + { + { -26016874,-219943,21339191,-41388,19745256,-2878700,-29637280,2227040,21612326,-545728 }, + { -13077387,1184228,23562814,-5970442,-20351244,-6348714,25764461,12243797,-20856566,11649658 }, + { -10031494,11262626,27384172,2271902,26947504,-15997771,39944,6114064,33514190,2333242 }, + }, + { + { -21433588,-12421821,8119782,7219913,-21830522,-9016134,-6679750,-12670638,24350578,-13450001 }, + { -4116307,-11271533,-23886186,4843615,-30088339,690623,-31536088,-10406836,8317860,12352766 }, + { 18200138,-14475911,-33087759,-2696619,-23702521,-9102511,-23552096,-2287550,20712163,6719373 }, + }, + { + { 26656208,6075253,-7858556,1886072,-28344043,4262326,11117530,-3763210,26224235,-3297458 }, + { -17168938,-14854097,-3395676,-16369877,-19954045,14050420,21728352,9493610,18620611,-16428628 }, + { -13323321,13325349,11432106,5964811,18609221,6062965,-5269471,-9725556,-30701573,-16479657 }, + }, + { + { -23860538,-11233159,26961357,1640861,-32413112,-16737940,12248509,-5240639,13735342,1934062 }, + { 25089769,6742589,17081145,-13406266,21909293,-16067981,-15136294,-3765346,-21277997,5473616 }, + { 31883677,-7961101,1083432,-11572403,22828471,13290673,-7125085,12469656,29111212,-5451014 }, + }, + { + { 24244947,-15050407,-26262976,2791540,-14997599,16666678,24367466,6388839,-10295587,452383 }, + { -25640782,-3417841,5217916,16224624,19987036,-4082269,-24236251,-5915248,15766062,8407814 }, + { -20406999,13990231,15495425,16395525,5377168,15166495,-8917023,-4388953,-8067909,2276718 }, + }, + { + { 30157918,12924066,-17712050,9245753,19895028,3368142,-23827587,5096219,22740376,-7303417 }, + { 2041139,-14256350,7783687,13876377,-25946985,-13352459,24051124,13742383,-15637599,13295222 }, + { 33338237,-8505733,12532113,7977527,9106186,-1715251,-17720195,-4612972,-4451357,-14669444 }, + }, + { + { -20045281,5454097,-14346548,6447146,28862071,1883651,-2469266,-4141880,7770569,9620597 }, + { 23208068,7979712,33071466,8149229,1758231,-10834995,30945528,-1694323,-33502340,-14767970 }, + { 1439958,-16270480,-1079989,-793782,4625402,10647766,-5043801,1220118,30494170,-11440799 }, + }, + { + { -5037580,-13028295,-2970559,-3061767,15640974,-6701666,-26739026,926050,-1684339,-13333647 }, + { 13908495,-3549272,30919928,-6273825,-21521863,7989039,9021034,9078865,3353509,4033511 }, + { -29663431,-15113610,32259991,-344482,24295849,-12912123,23161163,8839127,27485041,7356032 }, + }, +}, +{ + { + { 9661027,705443,11980065,-5370154,-1628543,14661173,-6346142,2625015,28431036,-16771834 }, + { -23839233,-8311415,-25945511,7480958,-17681669,-8354183,-22545972,14150565,15970762,4099461 }, + { 29262576,16756590,26350592,-8793563,8529671,-11208050,13617293,-9937143,11465739,8317062 }, + }, + { + { -25493081,-6962928,32500200,-9419051,-23038724,-2302222,14898637,3848455,20969334,-5157516 }, + { -20384450,-14347713,-18336405,13884722,-33039454,2842114,-21610826,-3649888,11177095,14989547 }, + { -24496721,-11716016,16959896,2278463,12066309,10137771,13515641,2581286,-28487508,9930240 }, + }, + { + { -17751622,-2097826,16544300,-13009300,-15914807,-14949081,18345767,-13403753,16291481,-5314038 }, + { -33229194,2553288,32678213,9875984,8534129,6889387,-9676774,6957617,4368891,9788741 }, + { 16660756,7281060,-10830758,12911820,20108584,-8101676,-21722536,-8613148,16250552,-11111103 }, + }, + { + { -19765507,2390526,-16551031,14161980,1905286,6414907,4689584,10604807,-30190403,4782747 }, + { -1354539,14736941,-7367442,-13292886,7710542,-14155590,-9981571,4383045,22546403,437323 }, + { 31665577,-12180464,-16186830,1491339,-18368625,3294682,27343084,2786261,-30633590,-14097016 }, + }, + { + { -14467279,-683715,-33374107,7448552,19294360,14334329,-19690631,2355319,-19284671,-6114373 }, + { 15121312,-15796162,6377020,-6031361,-10798111,-12957845,18952177,15496498,-29380133,11754228 }, + { -2637277,-13483075,8488727,-14303896,12728761,-1622493,7141596,11724556,22761615,-10134141 }, + }, + { + { 16918416,11729663,-18083579,3022987,-31015732,-13339659,-28741185,-12227393,32851222,11717399 }, + { 11166634,7338049,-6722523,4531520,-29468672,-7302055,31474879,3483633,-1193175,-4030831 }, + { -185635,9921305,31456609,-13536438,-12013818,13348923,33142652,6546660,-19985279,-3948376 }, + }, + { + { -32460596,11266712,-11197107,-7899103,31703694,3855903,-8537131,-12833048,-30772034,-15486313 }, + { -18006477,12709068,3991746,-6479188,-21491523,-10550425,-31135347,-16049879,10928917,3011958 }, + { -6957757,-15594337,31696059,334240,29576716,14796075,-30831056,-12805180,18008031,10258577 }, + }, + { + { -22448644,15655569,7018479,-4410003,-30314266,-1201591,-1853465,1367120,25127874,6671743 }, + { 29701166,-14373934,-10878120,9279288,-17568,13127210,21382910,11042292,25838796,4642684 }, + { -20430234,14955537,-24126347,8124619,-5369288,-5990470,30468147,-13900640,18423289,4177476 }, + }, +}, diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/base.py b/lib-25519/lib25519/crypto_nG/merged25519/ref10/base.py new file mode 100644 index 0000000000..84accc8580 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/base.py @@ -0,0 +1,65 @@ +b = 256 +q = 2**255 - 19 +l = 2**252 + 27742317777372353535851937790883648493 + +def expmod(b,e,m): + if e == 0: return 1 + t = expmod(b,e/2,m)**2 % m + if e & 1: t = (t*b) % m + return t + +def inv(x): + return expmod(x,q-2,q) + +d = -121665 * inv(121666) +I = expmod(2,(q-1)/4,q) + +def xrecover(y): + xx = (y*y-1) * inv(d*y*y+1) + x = expmod(xx,(q+3)/8,q) + if (x*x - xx) % q != 0: x = (x*I) % q + if x % 2 != 0: x = q-x + return x + +By = 4 * inv(5) +Bx = xrecover(By) +B = [Bx % q,By % q] + +def edwards(P,Q): + x1 = P[0] + y1 = P[1] + x2 = Q[0] + y2 = Q[1] + x3 = (x1*y2+x2*y1) * inv(1+d*x1*x2*y1*y2) + y3 = (y1*y2+x1*x2) * inv(1-d*x1*x2*y1*y2) + return [x3 % q,y3 % q] + +def radix255(x): + x = x % q + if x + x > q: x -= q + x = [x,0,0,0,0,0,0,0,0,0] + bits = [26,25,26,25,26,25,26,25,26,25] + for i in range(9): + carry = (x[i] + 2**(bits[i]-1)) / 2**bits[i] + x[i] -= carry * 2**bits[i] + x[i + 1] += carry + result = "" + for i in range(9): + result = result+str(x[i])+"," + result = result+str(x[9]) + return result + +Bi = B +for i in range(32): + print "{" + Bij = Bi + for j in range(8): + print " {" + print " {",radix255(Bij[1]+Bij[0]),"}," + print " {",radix255(Bij[1]-Bij[0]),"}," + print " {",radix255(2*d*Bij[0]*Bij[1]),"}," + Bij = edwards(Bij,Bi) + print " }," + print "}," + for k in range(8): + Bi = edwards(Bi,Bi) diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/base2.h b/lib-25519/lib25519/crypto_nG/merged25519/ref10/base2.h new file mode 120000 index 0000000000..eb4f1f69f4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/base2.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/base2.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/base2.py b/lib-25519/lib25519/crypto_nG/merged25519/ref10/base2.py new file mode 120000 index 0000000000..c02aface83 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/base2.py @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/base2.py \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe.h b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe.h new file mode 120000 index 0000000000..a1f051e484 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_0.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_0.c new file mode 120000 index 0000000000..a7b0312e8a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_0.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_0.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_1.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_1.c new file mode 120000 index 0000000000..8197eecd1c --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_1.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_1.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_add.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_add.c new file mode 120000 index 0000000000..b99689dbe3 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_add.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_add.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_cmov.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_cmov.c new file mode 100644 index 0000000000..758b7b3ddc --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_cmov.c @@ -0,0 +1,65 @@ +// linker define fe_cmov + +#include "fe.h" + +/* +Replace (f,g) with (g,g) if b == 1; +replace (f,g) with (f,g) if b == 0. + +Preconditions: b in {0,1}. +*/ + +void fe_cmov(fe f,const fe g,unsigned int b) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 g0 = g[0]; + crypto_int32 g1 = g[1]; + crypto_int32 g2 = g[2]; + crypto_int32 g3 = g[3]; + crypto_int32 g4 = g[4]; + crypto_int32 g5 = g[5]; + crypto_int32 g6 = g[6]; + crypto_int32 g7 = g[7]; + crypto_int32 g8 = g[8]; + crypto_int32 g9 = g[9]; + crypto_int32 x0 = f0 ^ g0; + crypto_int32 x1 = f1 ^ g1; + crypto_int32 x2 = f2 ^ g2; + crypto_int32 x3 = f3 ^ g3; + crypto_int32 x4 = f4 ^ g4; + crypto_int32 x5 = f5 ^ g5; + crypto_int32 x6 = f6 ^ g6; + crypto_int32 x7 = f7 ^ g7; + crypto_int32 x8 = f8 ^ g8; + crypto_int32 x9 = f9 ^ g9; + b = -b; + x0 &= b; + x1 &= b; + x2 &= b; + x3 &= b; + x4 &= b; + x5 &= b; + x6 &= b; + x7 &= b; + x8 &= b; + x9 &= b; + f[0] = f0 ^ x0; + f[1] = f1 ^ x1; + f[2] = f2 ^ x2; + f[3] = f3 ^ x3; + f[4] = f4 ^ x4; + f[5] = f5 ^ x5; + f[6] = f6 ^ x6; + f[7] = f7 ^ x7; + f[8] = f8 ^ x8; + f[9] = f9 ^ x9; +} diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_copy.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_copy.c new file mode 120000 index 0000000000..d1e2125ff1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_copy.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_copy.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_frombytes.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_frombytes.c new file mode 120000 index 0000000000..70580d07d0 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_frombytes.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_frombytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_invert.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_invert.c new file mode 120000 index 0000000000..35ea45a28d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_isnegative.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_isnegative.c new file mode 120000 index 0000000000..4985e9171a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_isnegative.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_isnegative.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_mul.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_mul.c new file mode 120000 index 0000000000..21b4e5e183 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_mul.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_mul.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_neg.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_neg.c new file mode 120000 index 0000000000..1afb77eae3 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_neg.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_neg.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_sq.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_sq.c new file mode 120000 index 0000000000..db5e325934 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_sq.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_sq.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_sq2.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_sq2.c new file mode 120000 index 0000000000..7534e98a18 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_sq2.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_sq2.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_sub.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_sub.c new file mode 120000 index 0000000000..e467aba96c --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_sub.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_sub.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_tobytes.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_tobytes.c new file mode 120000 index 0000000000..420087bfca --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/fe_tobytes.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_tobytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge.h b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge.h new file mode 120000 index 0000000000..4bfeca96f2 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/ge.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_madd.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_madd.c new file mode 120000 index 0000000000..3bcabb9bb3 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_madd.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/ge_madd.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_madd.h b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_madd.h new file mode 120000 index 0000000000..77c9d45aa2 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_madd.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/ge_madd.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_madd.q b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_madd.q new file mode 120000 index 0000000000..fb72a38323 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_madd.q @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/ge_madd.q \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p1p1_to_p2.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p1p1_to_p2.c new file mode 120000 index 0000000000..be19ef96ff --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p1p1_to_p2.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/ge_p1p1_to_p2.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p1p1_to_p3.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p1p1_to_p3.c new file mode 120000 index 0000000000..779b020274 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p1p1_to_p3.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/ge_p1p1_to_p3.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p2_dbl.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p2_dbl.c new file mode 120000 index 0000000000..458d083673 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p2_dbl.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/ge_p2_dbl.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p2_dbl.h b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p2_dbl.h new file mode 120000 index 0000000000..a99f4c9f06 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p2_dbl.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/ge_p2_dbl.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p2_dbl.q b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p2_dbl.q new file mode 120000 index 0000000000..c1d4a777f6 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p2_dbl.q @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/ge_p2_dbl.q \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p3_0.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p3_0.c new file mode 100644 index 0000000000..abfd08c3d5 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p3_0.c @@ -0,0 +1,13 @@ +// linker define ge_p3_0 +// linker use fe_0 +// linker use fe_1 + +#include "ge.h" + +void ge_p3_0(ge_p3 *h) +{ + fe_0(h->X); + fe_1(h->Y); + fe_1(h->Z); + fe_0(h->T); +} diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p3_dbl.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p3_dbl.c new file mode 120000 index 0000000000..fd1e92492c --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p3_dbl.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/ge_p3_dbl.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p3_to_p2.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p3_to_p2.c new file mode 120000 index 0000000000..12eac6b47d --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_p3_to_p2.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/ge_p3_to_p2.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_precomp_0.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_precomp_0.c new file mode 100644 index 0000000000..600025d2bf --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_precomp_0.c @@ -0,0 +1,12 @@ +// linker define ge_precomp_0 +// linker use fe_0 +// linker use fe_1 + +#include "ge.h" + +void ge_precomp_0(ge_precomp *h) +{ + fe_1(h->yplusx); + fe_1(h->yminusx); + fe_0(h->xy2d); +} diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_scalarmult_base.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_scalarmult_base.c new file mode 100644 index 0000000000..b19348833e --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/ge_scalarmult_base.c @@ -0,0 +1,114 @@ +// linker define ge_scalarmult_base +// linker use base +// linker use fe_cmov +// linker use ge_precomp_0 +// linker use fe_copy +// linker use fe_neg +// linker use ge_p3_0 +// linker use ge_madd +// linker use ge_p1p1_to_p3 +// linker use ge_p3_dbl +// linker use ge_p1p1_to_p2 +// linker use ge_p2_dbl + +#include "ge.h" +#include "B.h" +#include "crypto_uint32.h" + +static unsigned char equal(signed char b,signed char c) +{ + unsigned char ub = b; + unsigned char uc = c; + unsigned char x = ub ^ uc; /* 0: yes; 1..255: no */ + crypto_uint32 y = x; /* 0: yes; 1..255: no */ + y -= 1; /* 4294967295: yes; 0..254: no */ + y >>= 31; /* 1: yes; 0: no */ + return y; +} + +static unsigned char negative(signed char b) +{ + unsigned long long x = b; /* 18446744073709551361..18446744073709551615: yes; 0..255: no */ + x >>= 63; /* 1: yes; 0: no */ + return x; +} + +static void cmov(ge_precomp *t,const ge_precomp *u,unsigned char b) +{ + fe_cmov(t->yplusx,u->yplusx,b); + fe_cmov(t->yminusx,u->yminusx,b); + fe_cmov(t->xy2d,u->xy2d,b); +} + +static void select(ge_precomp *t,int pos,signed char b) +{ + ge_precomp minust; + unsigned char bnegative = negative(b); + unsigned char babs = b - (((-bnegative) & b) << 1); + + ge_precomp_0(t); + cmov(t,&base[pos][0],equal(babs,1)); + cmov(t,&base[pos][1],equal(babs,2)); + cmov(t,&base[pos][2],equal(babs,3)); + cmov(t,&base[pos][3],equal(babs,4)); + cmov(t,&base[pos][4],equal(babs,5)); + cmov(t,&base[pos][5],equal(babs,6)); + cmov(t,&base[pos][6],equal(babs,7)); + cmov(t,&base[pos][7],equal(babs,8)); + fe_copy(minust.yplusx,t->yminusx); + fe_copy(minust.yminusx,t->yplusx); + fe_neg(minust.xy2d,t->xy2d); + cmov(t,&minust,bnegative); +} + +/* +h = a * B +where a = a[0]+256*a[1]+...+256^31 a[31] +B is the Ed25519 base point (x,4/5) with x positive. + +Preconditions: + a[31] <= 127 +*/ + +void ge_scalarmult_base(ge_p3 *h,const unsigned char *a) +{ + signed char e[64]; + signed char carry; + ge_p1p1 r; + ge_p2 s; + ge_precomp t; + int i; + + for (i = 0;i < 32;++i) { + e[2 * i + 0] = (a[i] >> 0) & 15; + e[2 * i + 1] = (a[i] >> 4) & 15; + } + /* each e[i] is between 0 and 15 */ + /* e[63] is between 0 and 7 */ + + carry = 0; + for (i = 0;i < 63;++i) { + e[i] += carry; + carry = e[i] + 8; + carry >>= 4; + e[i] -= carry << 4; + } + e[63] += carry; + /* each e[i] is between -8 and 8 */ + + ge_p3_0(h); + for (i = 1;i < 64;i += 2) { + select(&t,i / 2,e[i]); + ge_madd(&r,h,&t); ge_p1p1_to_p3(h,&r); + } + + ge_p3_dbl(&r,h); ge_p1p1_to_p2(&s,&r); + ge_p2_dbl(&r,&s); ge_p1p1_to_p2(&s,&r); + ge_p2_dbl(&r,&s); ge_p1p1_to_p2(&s,&r); + ge_p2_dbl(&r,&s); ge_p1p1_to_p3(h,&r); + + for (i = 0;i < 64;i += 2) { + select(&t,i / 2,e[i]); + ge_madd(&r,h,&t); ge_p1p1_to_p3(h,&r); + } +} diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/nG.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/nG.c new file mode 100644 index 0000000000..1886bccef1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/nG.c @@ -0,0 +1,42 @@ +#include +#include "randombytes.h" +#include "crypto_nG.h" +#include "crypto_hash_sha512.h" +#include "ge.h" + +void crypto_nG(unsigned char *pk,const unsigned char *sk) +{ + unsigned char e[32]; + ge_p3 A; + fe ZplusY; + fe ZminusY; + fe recip; + fe x; + fe y; + int wantmont; + + for (int i = 0;i < 32;++i) e[i] = sk[i]; + wantmont = e[31]>>7; + e[31] &= 127; + + ge_scalarmult_base(&A,e); + + // A has X,Y,Z,T representing X/Z,Y/Z in edwards form + // if wantmont: output (Z+Y)/(Z-Y) + // else: output Y/Z, with a bit reflecting X/Z + + // doing this in constant time (at minor expense) + // in case wantmont is secret + + fe_add(ZplusY,A.Z,A.Y); + fe_sub(ZminusY,A.Z,A.Y); + fe_cmov(A.Y,ZplusY,wantmont); + fe_cmov(A.Z,ZminusY,wantmont); + + fe_invert(recip,A.Z); + fe_mul(y,A.Y,recip); + fe_tobytes(pk,y); + + fe_mul(x,A.X,recip); + pk[31] ^= ((1-wantmont) & fe_isnegative(x)) << 7; +} diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/q2h.sh b/lib-25519/lib25519/crypto_nG/merged25519/ref10/q2h.sh new file mode 120000 index 0000000000..08af8baae3 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/q2h.sh @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/q2h.sh \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/merged25519/ref10/shared-base.c b/lib-25519/lib25519/crypto_nG/merged25519/ref10/shared-base.c new file mode 100644 index 0000000000..8274fbe0e6 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/merged25519/ref10/shared-base.c @@ -0,0 +1,7 @@ +// linker define base + +#include "B.h" + +const ge_precomp base[32][8] = { +#include "base.h" +} ; diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/ref/base.c b/lib-25519/lib25519/crypto_nG/montgomery25519/ref/base.c new file mode 100644 index 0000000000..26570bff28 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/ref/base.c @@ -0,0 +1,9 @@ +#include "crypto_nP_montgomery25519.h" +#include "crypto_nG.h" + +static const unsigned char G[32] = {9}; + +void crypto_nG(unsigned char *nG,const unsigned char *n) +{ + crypto_nP_montgomery25519(nG,n,G); +} diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/architectures b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/architectures new file mode 120000 index 0000000000..fd9d4fc548 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/base.c b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/base.c new file mode 100644 index 0000000000..3449a7fd28 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/base.c @@ -0,0 +1,43 @@ +#include "randombytes.h" +#include "crypto_nG.h" + +#include "fe.h" +#include "fe51.h" +#include "ladder_base.h" + +#define x2 var[0] +#define z2 var[1] + +void crypto_nG(unsigned char *pk,const unsigned char *sk) +{ + unsigned char e[32]; + unsigned int i; + + fe var[3]; + + fe51 x_51; + fe51 z_51; + + for (i = 0;i < 32;++i) e[i] = sk[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + ladder_base(var, e); + + z_51.v[0] = (z2[1] << 26) + z2[0]; + z_51.v[1] = (z2[3] << 26) + z2[2]; + z_51.v[2] = (z2[5] << 26) + z2[4]; + z_51.v[3] = (z2[7] << 26) + z2[6]; + z_51.v[4] = (z2[9] << 26) + z2[8]; + + x_51.v[0] = (x2[1] << 26) + x2[0]; + x_51.v[1] = (x2[3] << 26) + x2[2]; + x_51.v[2] = (x2[5] << 26) + x2[4]; + x_51.v[3] = (x2[7] << 26) + x2[6]; + x_51.v[4] = (x2[9] << 26) + x2[8]; + + fe51_invert(&z_51, &z_51); + fe51_mul(&x_51, &x_51, &z_51); + fe51_pack(pk, &x_51); +} diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/consts_namespace.h b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/consts_namespace.h new file mode 100644 index 0000000000..ef1f0382fd --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/consts_namespace.h @@ -0,0 +1,22 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define v0_0 CRYPTO_SHARED_NAMESPACE(v0_0) +#define v1_0 CRYPTO_SHARED_NAMESPACE(v1_0) +#define v2_1 CRYPTO_SHARED_NAMESPACE(v2_1) +#define v2_2 CRYPTO_SHARED_NAMESPACE(v2_2) +#define v9_0 CRYPTO_SHARED_NAMESPACE(v9_0) +#define v9_9 CRYPTO_SHARED_NAMESPACE(v9_9) +#define v19_19 CRYPTO_SHARED_NAMESPACE(v19_19) +#define v38_1 CRYPTO_SHARED_NAMESPACE(v38_1) +#define v38_19 CRYPTO_SHARED_NAMESPACE(v38_19) +#define v38_38 CRYPTO_SHARED_NAMESPACE(v38_38) +#define v121666_121666 CRYPTO_SHARED_NAMESPACE(v121666_121666) +#define m25 CRYPTO_SHARED_NAMESPACE(m25) +#define m26 CRYPTO_SHARED_NAMESPACE(m26) +#define subc0 CRYPTO_SHARED_NAMESPACE(subc0) +#define subc2 CRYPTO_SHARED_NAMESPACE(subc2) +#define REDMASK51 CRYPTO_SHARED_NAMESPACE(REDMASK51) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe.h b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe.h new file mode 120000 index 0000000000..e926332125 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe.h @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/fe.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51.h b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51.h new file mode 120000 index 0000000000..f2085c815b --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51.h @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/fe51.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_invert.c b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_invert.c new file mode 100644 index 0000000000..6ebc39d147 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_invert.c @@ -0,0 +1,57 @@ +// linker define fe51_invert +// linker use fe51_pack + +#include "crypto_pow_inv25519.h" +#include "fe51.h" + +static void fe51_unpack(fe51 *r, const unsigned char x[32]) +{ + r->v[0] = x[0]; + r->v[0] += (unsigned long long)x[1] << 8; + r->v[0] += (unsigned long long)x[2] << 16; + r->v[0] += (unsigned long long)x[3] << 24; + r->v[0] += (unsigned long long)x[4] << 32; + r->v[0] += (unsigned long long)x[5] << 40; + r->v[0] += ((unsigned long long)x[6] & 7) << 48; + + r->v[1] = x[6] >> 3; + r->v[1] += (unsigned long long)x[7] << 5; + r->v[1] += (unsigned long long)x[8] << 13; + r->v[1] += (unsigned long long)x[9] << 21; + r->v[1] += (unsigned long long)x[10] << 29; + r->v[1] += (unsigned long long)x[11] << 37; + r->v[1] += ((unsigned long long)x[12] & 63) << 45; + + r->v[2] = x[12] >> 6; + r->v[2] += (unsigned long long)x[13] << 2; + r->v[2] += (unsigned long long)x[14] << 10; + r->v[2] += (unsigned long long)x[15] << 18; + r->v[2] += (unsigned long long)x[16] << 26; + r->v[2] += (unsigned long long)x[17] << 34; + r->v[2] += (unsigned long long)x[18] << 42; + r->v[2] += ((unsigned long long)x[19] & 1) << 50; + + r->v[3] = x[19] >> 1; + r->v[3] += (unsigned long long)x[20] << 7; + r->v[3] += (unsigned long long)x[21] << 15; + r->v[3] += (unsigned long long)x[22] << 23; + r->v[3] += (unsigned long long)x[23] << 31; + r->v[3] += (unsigned long long)x[24] << 39; + r->v[3] += ((unsigned long long)x[25] & 15) << 47; + + r->v[4] = x[25] >> 4; + r->v[4] += (unsigned long long)x[26] << 4; + r->v[4] += (unsigned long long)x[27] << 12; + r->v[4] += (unsigned long long)x[28] << 20; + r->v[4] += (unsigned long long)x[29] << 28; + r->v[4] += (unsigned long long)x[30] << 36; + r->v[4] += ((unsigned long long)x[31] & 127) << 44; +} + +void fe51_invert(fe51 *r, const fe51 *x) +{ + unsigned char s[32]; + fe51_pack(s,x); + crypto_pow_inv25519(s,s); + fe51_unpack(r,s); +} diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_mul.S b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_mul.S new file mode 120000 index 0000000000..41d70cb2b3 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_mul.S @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/fe51_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_namespace.h b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_namespace.h new file mode 120000 index 0000000000..ca30dc4945 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_namespace.h @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/fe51_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_nsquare.S b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_nsquare.S new file mode 120000 index 0000000000..5d7efd1947 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_nsquare.S @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/fe51_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_pack.S b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_pack.S new file mode 120000 index 0000000000..65f9844698 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/fe51_pack.S @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/fe51_pack.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/implementors b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/implementors new file mode 120000 index 0000000000..a4959fbf9a --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/ladder_base.S b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/ladder_base.S new file mode 100644 index 0000000000..b6015467c0 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/ladder_base.S @@ -0,0 +1,6740 @@ +// linker define ladder_base +// linker use v0_0 +// linker use v1_0 +// linker use v9_0 +// linker use v9_9 +// linker use v19_19 +// linker use v38_38 +// linker use v121666_121666 +// linker use m25 +// linker use m26 +// linker use subc0 +// linker use subc2 + +#include "ladder_base_namespace.h" +#include "consts_namespace.h" + +# qhasm: int64 input_0 + +# qhasm: int64 input_1 + +# qhasm: int64 input_2 + +# qhasm: int64 input_3 + +# qhasm: int64 input_4 + +# qhasm: int64 input_5 + +# qhasm: stack64 input_6 + +# qhasm: stack64 input_7 + +# qhasm: int64 caller_r11 + +# qhasm: int64 caller_r12 + +# qhasm: int64 caller_r13 + +# qhasm: int64 caller_r14 + +# qhasm: int64 caller_r15 + +# qhasm: int64 caller_rbx + +# qhasm: int64 caller_rbp + +# qhasm: stack128 x3_0 + +# qhasm: stack128 x3_2 + +# qhasm: stack128 x3_4 + +# qhasm: stack128 x3_6 + +# qhasm: stack128 x3_8 + +# qhasm: stack128 z3_0 + +# qhasm: stack128 z3_2 + +# qhasm: stack128 z3_4 + +# qhasm: stack128 z3_6 + +# qhasm: stack128 z3_8 + +# qhasm: stack128 t0_0 + +# qhasm: stack128 t0_2 + +# qhasm: stack128 t0_4 + +# qhasm: stack128 t0_6 + +# qhasm: stack128 t0_8 + +# qhasm: reg128 init0 + +# qhasm: reg128 init1 + +# qhasm: reg128 init9 + +# qhasm: int64 b + +# qhasm: int64 b0 + +# qhasm: int64 tmp0 + +# qhasm: int64 b1 + +# qhasm: int64 tmp1 + +# qhasm: int64 b2 + +# qhasm: int64 tmp2 + +# qhasm: int64 b3 + +# qhasm: int64 tmp3 + +# qhasm: int64 byte + +# qhasm: int64 ptr + +# qhasm: int64 pos + +# qhasm: reg128 r + +# qhasm: reg128 r0 + +# qhasm: reg128 r1 + +# qhasm: reg128 r2 + +# qhasm: reg128 r3 + +# qhasm: reg128 r4 + +# qhasm: reg128 r5 + +# qhasm: reg128 r6 + +# qhasm: reg128 r7 + +# qhasm: reg128 r8 + +# qhasm: reg128 r9 + +# qhasm: reg128 f0 + +# qhasm: reg128 f1 + +# qhasm: reg128 f2 + +# qhasm: reg128 f3 + +# qhasm: reg128 f4 + +# qhasm: reg128 f5 + +# qhasm: reg128 f6 + +# qhasm: reg128 f7 + +# qhasm: reg128 f8 + +# qhasm: reg128 f9 + +# qhasm: stack128 f0_stack + +# qhasm: stack128 f1_stack + +# qhasm: stack128 f2_stack + +# qhasm: stack128 f3_stack + +# qhasm: stack128 f4_stack + +# qhasm: stack128 f5_stack + +# qhasm: stack128 f6_stack + +# qhasm: stack128 f7_stack + +# qhasm: stack128 f8_stack + +# qhasm: stack128 f9_stack + +# qhasm: stack128 f0_2_stack + +# qhasm: stack128 f1_2_stack + +# qhasm: stack128 f2_2_stack + +# qhasm: stack128 f3_2_stack + +# qhasm: stack128 f4_2_stack + +# qhasm: stack128 f5_2_stack + +# qhasm: stack128 f6_2_stack + +# qhasm: stack128 f7_2_stack + +# qhasm: stack128 f8_2_stack + +# qhasm: stack128 f9_2_stack + +# qhasm: reg128 f1_2 + +# qhasm: reg128 f2_2 + +# qhasm: reg128 f3_2 + +# qhasm: reg128 f4_2 + +# qhasm: reg128 f9_38 + +# qhasm: stack128 f5_38_stack + +# qhasm: stack128 f6_19_stack + +# qhasm: stack128 f7_38_stack + +# qhasm: stack128 f8_19_stack + +# qhasm: reg128 g0 + +# qhasm: reg128 g1 + +# qhasm: reg128 g2 + +# qhasm: reg128 g3 + +# qhasm: reg128 g4 + +# qhasm: reg128 g5 + +# qhasm: reg128 g6 + +# qhasm: reg128 g7 + +# qhasm: reg128 g8 + +# qhasm: reg128 g9 + +# qhasm: reg128 h0 + +# qhasm: reg128 h1 + +# qhasm: reg128 h2 + +# qhasm: reg128 h3 + +# qhasm: reg128 h4 + +# qhasm: reg128 h5 + +# qhasm: reg128 h6 + +# qhasm: reg128 h7 + +# qhasm: reg128 h8 + +# qhasm: reg128 h9 + +# qhasm: reg128 h1_2 + +# qhasm: reg128 h2_2 + +# qhasm: reg128 h3_2 + +# qhasm: reg128 h4_2 + +# qhasm: reg128 h9_38 + +# qhasm: reg128 carry0 + +# qhasm: reg128 carry1 + +# qhasm: reg128 carry2 + +# qhasm: reg128 carry3 + +# qhasm: reg128 carry4 + +# qhasm: reg128 carry5 + +# qhasm: reg128 carry6 + +# qhasm: reg128 carry7 + +# qhasm: reg128 carry8 + +# qhasm: reg128 carry9 + +# qhasm: stack128 s + +# qhasm: stack8192 masks + +# qhasm: reg128 mask + +# qhasm: reg128 diff + +# qhasm: stack128 h5_stack + +# qhasm: stack128 h6_stack + +# qhasm: stack128 h7_stack + +# qhasm: stack128 h8_stack + +# qhasm: stack128 h5_2_stack + +# qhasm: stack128 h6_2_stack + +# qhasm: stack128 h7_2_stack + +# qhasm: stack128 h8_2_stack + +# qhasm: stack128 h5_38_stack + +# qhasm: stack128 h6_19_stack + +# qhasm: stack128 h7_38_stack + +# qhasm: stack128 h8_19_stack + +# qhasm: reg128 m0 + +# qhasm: reg128 m1 + +# qhasm: reg128 m2 + +# qhasm: reg128 m3 + +# qhasm: reg128 m4 + +# qhasm: reg128 m5 + +# qhasm: reg128 m6 + +# qhasm: reg128 m7 + +# qhasm: reg128 m8 + +# qhasm: reg128 m9 + +# qhasm: reg128 h_01 + +# qhasm: reg128 h_23 + +# qhasm: reg128 h_45 + +# qhasm: reg128 h_67 + +# qhasm: reg128 h_89 + +# qhasm: int64 h_0 + +# qhasm: int64 h_1 + +# qhasm: int64 h_2 + +# qhasm: int64 h_3 + +# qhasm: int64 h_4 + +# qhasm: int64 h_5 + +# qhasm: int64 h_6 + +# qhasm: int64 h_7 + +# qhasm: int64 h_8 + +# qhasm: int64 h_9 + +# qhasm: int64 carry_0 + +# qhasm: int64 carry_1 + +# qhasm: int64 carry_2 + +# qhasm: int64 carry_3 + +# qhasm: int64 carry_4 + +# qhasm: int64 carry_5 + +# qhasm: int64 carry_6 + +# qhasm: int64 carry_7 + +# qhasm: int64 carry_8 + +# qhasm: int64 carry_9 + +# qhasm: stack128 buf0 + +# qhasm: stack128 buf1 + +# qhasm: stack128 buf2 + +# qhasm: stack128 buf3 + +# qhasm: stack128 buf4 + +# qhasm: stack128 buf5 + +# qhasm: stack128 buf6 + +# qhasm: stack128 buf7 + +# qhasm: stack128 buf8 + +# qhasm: stack128 buf9 + +# qhasm: stack64 r11_stack + +# qhasm: stack64 r12_stack + +# qhasm: stack64 r13_stack + +# qhasm: stack64 r14_stack + +# qhasm: stack64 r15_stack + +# qhasm: stack64 rbx_stack + +# qhasm: stack64 rbp_stack + +# qhasm: enter ladder_base +.p2align 5 +.global _ladder_base +.global ladder_base +_ladder_base: +ladder_base: +mov %rsp,%r11 +and $31,%r11 +add $1568,%r11 +sub %r11,%rsp + +# qhasm: r11_stack = caller_r11 +# asm 1: movq r11_stack=stack64#1 +# asm 2: movq r11_stack=1536(%rsp) +movq %r11,1536(%rsp) + +# qhasm: r12_stack = caller_r12 +# asm 1: movq r12_stack=stack64#2 +# asm 2: movq r12_stack=1544(%rsp) +movq %r12,1544(%rsp) + +# qhasm: r13_stack = caller_r13 +# asm 1: movq r13_stack=stack64#3 +# asm 2: movq r13_stack=1552(%rsp) +movq %r13,1552(%rsp) + +# qhasm: init0 = v0_0 +# asm 1: movdqa v0_0,>init0=reg128#1 +# asm 2: movdqa v0_0,>init0=%xmm0 +movdqa v0_0(%rip),%xmm0 + +# qhasm: init1 = v1_0 +# asm 1: movdqa v1_0,>init1=reg128#2 +# asm 2: movdqa v1_0,>init1=%xmm1 +movdqa v1_0(%rip),%xmm1 + +# qhasm: init9 = v9_0 +# asm 1: movdqa v9_0,>init9=reg128#3 +# asm 2: movdqa v9_0,>init9=%xmm2 +movdqa v9_0(%rip),%xmm2 + +# qhasm: x3_0 = init9 +# asm 1: movdqa x3_0=stack128#1 +# asm 2: movdqa x3_0=0(%rsp) +movdqa %xmm2,0(%rsp) + +# qhasm: x3_2 = init0 +# asm 1: movdqa x3_2=stack128#2 +# asm 2: movdqa x3_2=16(%rsp) +movdqa %xmm0,16(%rsp) + +# qhasm: x3_4 = init0 +# asm 1: movdqa x3_4=stack128#3 +# asm 2: movdqa x3_4=32(%rsp) +movdqa %xmm0,32(%rsp) + +# qhasm: x3_6 = init0 +# asm 1: movdqa x3_6=stack128#4 +# asm 2: movdqa x3_6=48(%rsp) +movdqa %xmm0,48(%rsp) + +# qhasm: x3_8 = init0 +# asm 1: movdqa x3_8=stack128#5 +# asm 2: movdqa x3_8=64(%rsp) +movdqa %xmm0,64(%rsp) + +# qhasm: z3_0 = init1 +# asm 1: movdqa z3_0=stack128#6 +# asm 2: movdqa z3_0=80(%rsp) +movdqa %xmm1,80(%rsp) + +# qhasm: z3_2 = init0 +# asm 1: movdqa z3_2=stack128#7 +# asm 2: movdqa z3_2=96(%rsp) +movdqa %xmm0,96(%rsp) + +# qhasm: z3_4 = init0 +# asm 1: movdqa z3_4=stack128#8 +# asm 2: movdqa z3_4=112(%rsp) +movdqa %xmm0,112(%rsp) + +# qhasm: z3_6 = init0 +# asm 1: movdqa z3_6=stack128#9 +# asm 2: movdqa z3_6=128(%rsp) +movdqa %xmm0,128(%rsp) + +# qhasm: z3_8 = init0 +# asm 1: movdqa z3_8=stack128#10 +# asm 2: movdqa z3_8=144(%rsp) +movdqa %xmm0,144(%rsp) + +# qhasm: f0 = init1 +# asm 1: movdqa f0=reg128#1 +# asm 2: movdqa f0=%xmm0 +movdqa %xmm1,%xmm0 + +# qhasm: f1 ^= f1 +# asm 1: pxor >f1=reg128#2,>f1=reg128#2 +# asm 2: pxor >f1=%xmm1,>f1=%xmm1 +pxor %xmm1,%xmm1 + +# qhasm: f2 ^= f2 +# asm 1: pxor >f2=reg128#3,>f2=reg128#3 +# asm 2: pxor >f2=%xmm2,>f2=%xmm2 +pxor %xmm2,%xmm2 + +# qhasm: f3 ^= f3 +# asm 1: pxor >f3=reg128#4,>f3=reg128#4 +# asm 2: pxor >f3=%xmm3,>f3=%xmm3 +pxor %xmm3,%xmm3 + +# qhasm: f4 ^= f4 +# asm 1: pxor >f4=reg128#5,>f4=reg128#5 +# asm 2: pxor >f4=%xmm4,>f4=%xmm4 +pxor %xmm4,%xmm4 + +# qhasm: f5 ^= f5 +# asm 1: pxor >f5=reg128#6,>f5=reg128#6 +# asm 2: pxor >f5=%xmm5,>f5=%xmm5 +pxor %xmm5,%xmm5 + +# qhasm: f6 ^= f6 +# asm 1: pxor >f6=reg128#7,>f6=reg128#7 +# asm 2: pxor >f6=%xmm6,>f6=%xmm6 +pxor %xmm6,%xmm6 + +# qhasm: f7 ^= f7 +# asm 1: pxor >f7=reg128#8,>f7=reg128#8 +# asm 2: pxor >f7=%xmm7,>f7=%xmm7 +pxor %xmm7,%xmm7 + +# qhasm: f8 ^= f8 +# asm 1: pxor >f8=reg128#9,>f8=reg128#9 +# asm 2: pxor >f8=%xmm8,>f8=%xmm8 +pxor %xmm8,%xmm8 + +# qhasm: f9 ^= f9 +# asm 1: pxor >f9=reg128#10,>f9=reg128#10 +# asm 2: pxor >f9=%xmm9,>f9=%xmm9 +pxor %xmm9,%xmm9 + +# qhasm: b0 = mem64[input_1 + 0] +# asm 1: movq 0(b0=int64#3 +# asm 2: movq 0(b0=%rdx +movq 0(%rsi),%rdx + +# qhasm: b1 = mem64[input_1 + 8] +# asm 1: movq 8(b1=int64#4 +# asm 2: movq 8(b1=%rcx +movq 8(%rsi),%rcx + +# qhasm: b2 = mem64[input_1 + 16] +# asm 1: movq 16(b2=int64#5 +# asm 2: movq 16(b2=%r8 +movq 16(%rsi),%r8 + +# qhasm: b3 = mem64[input_1 + 24] +# asm 1: movq 24(b3=int64#6 +# asm 2: movq 24(b3=%r9 +movq 24(%rsi),%r9 + +# qhasm: b0 = (b1 b0) >> 1 +# asm 1: shrd $1,> 1 +# asm 1: shrd $1,> 1 +# asm 1: shrd $1,>= 1 +# asm 1: shr $1,ptr=int64#2 +# asm 2: leaq ptr=%rsi +leaq 512(%rsp),%rsi + +# qhasm: pos = 64 +# asm 1: mov $64,>pos=int64#7 +# asm 2: mov $64,>pos=%rax +mov $64,%rax + +# qhasm: small_loop: +._small_loop: + +# qhasm: tmp0 = b0 +# asm 1: mov tmp0=int64#8 +# asm 2: mov tmp0=%r10 +mov %rdx,%r10 + +# qhasm: tmp1 = b1 +# asm 1: mov tmp1=int64#9 +# asm 2: mov tmp1=%r11 +mov %rcx,%r11 + +# qhasm: tmp2 = b2 +# asm 1: mov tmp2=int64#10 +# asm 2: mov tmp2=%r12 +mov %r8,%r12 + +# qhasm: tmp3 = b3 +# asm 1: mov tmp3=int64#11 +# asm 2: mov tmp3=%r13 +mov %r9,%r13 + +# qhasm: (uint64) b0 >>= 1 +# asm 1: shr $1,>= 1 +# asm 1: shr $1,>= 1 +# asm 1: shr $1,>= 1 +# asm 1: shr $1,pos=int64#3 +# asm 2: mov $255,>pos=%rdx +mov $255,%rdx + +# qhasm: ptr += 760 +# asm 1: add $760,mask=reg128#11 +# asm 2: vbroadcastss 0(mask=%xmm10 +vbroadcastss 0(%rsi),%xmm10 + +# qhasm: ptr -= 4 +# asm 1: sub $4,g0=reg128#12 +# asm 2: movdqa g0=%xmm11 +movdqa 0(%rsp),%xmm11 + +# qhasm: g1 = z3_0 +# asm 1: movdqa g1=reg128#13 +# asm 2: movdqa g1=%xmm12 +movdqa 80(%rsp),%xmm12 + +# qhasm: diff = f0 ^ g0 +# asm 1: vpxor diff=reg128#14 +# asm 2: vpxor diff=%xmm13 +vpxor %xmm11,%xmm0,%xmm13 + +# qhasm: diff &= mask +# asm 1: pand diff=reg128#14 +# asm 2: vpxor diff=%xmm13 +vpxor %xmm12,%xmm1,%xmm13 + +# qhasm: diff &= mask +# asm 1: pand g2=reg128#14 +# asm 2: movdqa g2=%xmm13 +movdqa 16(%rsp),%xmm13 + +# qhasm: g3 = z3_2 +# asm 1: movdqa g3=reg128#15 +# asm 2: movdqa g3=%xmm14 +movdqa 96(%rsp),%xmm14 + +# qhasm: diff = f2 ^ g2 +# asm 1: vpxor diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm13,%xmm2,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm14,%xmm3,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand x3_2=stack128#1 +# asm 2: movdqa x3_2=0(%rsp) +movdqa %xmm13,0(%rsp) + +# qhasm: z3_2 = g3 +# asm 1: movdqa z3_2=stack128#2 +# asm 2: movdqa z3_2=16(%rsp) +movdqa %xmm14,16(%rsp) + +# qhasm: g4 = x3_4 +# asm 1: movdqa g4=reg128#14 +# asm 2: movdqa g4=%xmm13 +movdqa 32(%rsp),%xmm13 + +# qhasm: g5 = z3_4 +# asm 1: movdqa g5=reg128#15 +# asm 2: movdqa g5=%xmm14 +movdqa 112(%rsp),%xmm14 + +# qhasm: diff = f4 ^ g4 +# asm 1: vpxor diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm13,%xmm4,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm14,%xmm5,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand x3_4=stack128#3 +# asm 2: movdqa x3_4=32(%rsp) +movdqa %xmm13,32(%rsp) + +# qhasm: z3_4 = g5 +# asm 1: movdqa z3_4=stack128#6 +# asm 2: movdqa z3_4=80(%rsp) +movdqa %xmm14,80(%rsp) + +# qhasm: g6 = x3_6 +# asm 1: movdqa g6=reg128#14 +# asm 2: movdqa g6=%xmm13 +movdqa 48(%rsp),%xmm13 + +# qhasm: g7 = z3_6 +# asm 1: movdqa g7=reg128#15 +# asm 2: movdqa g7=%xmm14 +movdqa 128(%rsp),%xmm14 + +# qhasm: diff = f6 ^ g6 +# asm 1: vpxor diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm13,%xmm6,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm14,%xmm7,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand x3_6=stack128#4 +# asm 2: movdqa x3_6=48(%rsp) +movdqa %xmm13,48(%rsp) + +# qhasm: z3_6 = g7 +# asm 1: movdqa z3_6=stack128#7 +# asm 2: movdqa z3_6=96(%rsp) +movdqa %xmm14,96(%rsp) + +# qhasm: g8 = x3_8 +# asm 1: movdqa g8=reg128#14 +# asm 2: movdqa g8=%xmm13 +movdqa 64(%rsp),%xmm13 + +# qhasm: g9 = z3_8 +# asm 1: movdqa g9=reg128#15 +# asm 2: movdqa g9=%xmm14 +movdqa 144(%rsp),%xmm14 + +# qhasm: diff = f8 ^ g8 +# asm 1: vpxor diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm13,%xmm8,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm14,%xmm9,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand x3_8=stack128#5 +# asm 2: movdqa x3_8=64(%rsp) +movdqa %xmm13,64(%rsp) + +# qhasm: z3_8 = g9 +# asm 1: movdqa z3_8=stack128#8 +# asm 2: movdqa z3_8=112(%rsp) +movdqa %xmm14,112(%rsp) + +# qhasm: 2x r = g0 + mem128[ subc0 ] +# asm 1: vpaddq subc0,r=reg128#11 +# asm 2: vpaddq subc0,r=%xmm10 +vpaddq subc0(%rip),%xmm11,%xmm10 + +# qhasm: 2x r -= g1 +# asm 1: psubq g1=reg128#13 +# asm 2: vpunpckhqdq g1=%xmm12 +vpunpckhqdq %xmm10,%xmm11,%xmm12 + +# qhasm: g0 = unpack_low(g0, r) +# asm 1: vpunpcklqdq g0=reg128#11 +# asm 2: vpunpcklqdq g0=%xmm10 +vpunpcklqdq %xmm10,%xmm11,%xmm10 + +# qhasm: 2x r = f0 + f1 +# asm 1: vpaddq r=reg128#12 +# asm 2: vpaddq r=%xmm11 +vpaddq %xmm1,%xmm0,%xmm11 + +# qhasm: 2x f0 += mem128[ subc0 ] +# asm 1: paddq subc0,f1=reg128#2 +# asm 2: vpunpckhqdq f1=%xmm1 +vpunpckhqdq %xmm11,%xmm0,%xmm1 + +# qhasm: f0 = unpack_low(f0, r) +# asm 1: vpunpcklqdq f0=reg128#1 +# asm 2: vpunpcklqdq f0=%xmm0 +vpunpcklqdq %xmm11,%xmm0,%xmm0 + +# qhasm: 2x h0 = g0 * f0 +# asm 1: vpmuludq h0=reg128#12 +# asm 2: vpmuludq h0=%xmm11 +vpmuludq %xmm0,%xmm10,%xmm11 + +# qhasm: 2x h1 = g0 * f1 +# asm 1: vpmuludq h1=reg128#14 +# asm 2: vpmuludq h1=%xmm13 +vpmuludq %xmm1,%xmm10,%xmm13 + +# qhasm: f1_stack = f1 +# asm 1: movdqa f1_stack=stack128#9 +# asm 2: movdqa f1_stack=128(%rsp) +movdqa %xmm1,128(%rsp) + +# qhasm: 2x f1 += f1 +# asm 1: paddq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm0,%xmm12,%xmm14 + +# qhasm: f0_stack = f0 +# asm 1: movdqa f0_stack=stack128#10 +# asm 2: movdqa f0_stack=144(%rsp) +movdqa %xmm0,144(%rsp) + +# qhasm: 2x h1 += r +# asm 1: paddq h2=reg128#1 +# asm 2: vpmuludq h2=%xmm0 +vpmuludq %xmm1,%xmm12,%xmm0 + +# qhasm: f1_2_stack = f1 +# asm 1: movdqa f1_2_stack=stack128#11 +# asm 2: movdqa f1_2_stack=160(%rsp) +movdqa %xmm1,160(%rsp) + +# qhasm: 2x r = f2 + f3 +# asm 1: vpaddq r=reg128#2 +# asm 2: vpaddq r=%xmm1 +vpaddq %xmm3,%xmm2,%xmm1 + +# qhasm: 2x f2 += mem128[ subc2 ] +# asm 1: paddq subc2,f3=reg128#4 +# asm 2: vpunpckhqdq f3=%xmm3 +vpunpckhqdq %xmm1,%xmm2,%xmm3 + +# qhasm: f2 = unpack_low(f2, r) +# asm 1: vpunpcklqdq f2=reg128#2 +# asm 2: vpunpcklqdq f2=%xmm1 +vpunpcklqdq %xmm1,%xmm2,%xmm1 + +# qhasm: 2x r = g0 * f2 +# asm 1: vpmuludq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm1,%xmm10,%xmm2 + +# qhasm: 2x h2 += r +# asm 1: paddq h3=reg128#3 +# asm 2: vpmuludq h3=%xmm2 +vpmuludq %xmm3,%xmm10,%xmm2 + +# qhasm: f3_stack = f3 +# asm 1: movdqa f3_stack=stack128#12 +# asm 2: movdqa f3_stack=176(%rsp) +movdqa %xmm3,176(%rsp) + +# qhasm: 2x f3 += f3 +# asm 1: paddq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm1,%xmm12,%xmm14 + +# qhasm: f2_stack = f2 +# asm 1: movdqa f2_stack=stack128#13 +# asm 2: movdqa f2_stack=192(%rsp) +movdqa %xmm1,192(%rsp) + +# qhasm: 2x h3 += r +# asm 1: paddq h4=reg128#2 +# asm 2: vpmuludq h4=%xmm1 +vpmuludq %xmm3,%xmm12,%xmm1 + +# qhasm: f3_2_stack = f3 +# asm 1: movdqa f3_2_stack=stack128#14 +# asm 2: movdqa f3_2_stack=208(%rsp) +movdqa %xmm3,208(%rsp) + +# qhasm: 2x r = f4 + f5 +# asm 1: vpaddq r=reg128#4 +# asm 2: vpaddq r=%xmm3 +vpaddq %xmm5,%xmm4,%xmm3 + +# qhasm: 2x f4 += mem128[ subc2 ] +# asm 1: paddq subc2,f5=reg128#6 +# asm 2: vpunpckhqdq f5=%xmm5 +vpunpckhqdq %xmm3,%xmm4,%xmm5 + +# qhasm: f4 = unpack_low(f4, r) +# asm 1: vpunpcklqdq f4=reg128#4 +# asm 2: vpunpcklqdq f4=%xmm3 +vpunpcklqdq %xmm3,%xmm4,%xmm3 + +# qhasm: 2x r = g0 * f4 +# asm 1: vpmuludq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq %xmm3,%xmm10,%xmm4 + +# qhasm: 2x h4 += r +# asm 1: paddq h5=reg128#5 +# asm 2: vpmuludq h5=%xmm4 +vpmuludq %xmm5,%xmm10,%xmm4 + +# qhasm: f5_stack = f5 +# asm 1: movdqa f5_stack=stack128#15 +# asm 2: movdqa f5_stack=224(%rsp) +movdqa %xmm5,224(%rsp) + +# qhasm: 2x f5 += f5 +# asm 1: paddq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm3,%xmm12,%xmm14 + +# qhasm: f4_stack = f4 +# asm 1: movdqa f4_stack=stack128#16 +# asm 2: movdqa f4_stack=240(%rsp) +movdqa %xmm3,240(%rsp) + +# qhasm: 2x h5 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpaddq r=%xmm3 +vpaddq %xmm7,%xmm6,%xmm3 + +# qhasm: 2x f6 += mem128[ subc2 ] +# asm 1: paddq subc2,f7=reg128#8 +# asm 2: vpunpckhqdq f7=%xmm7 +vpunpckhqdq %xmm3,%xmm6,%xmm7 + +# qhasm: f6 = unpack_low(f6, r) +# asm 1: vpunpcklqdq f6=reg128#4 +# asm 2: vpunpcklqdq f6=%xmm3 +vpunpcklqdq %xmm3,%xmm6,%xmm3 + +# qhasm: 2x h6 = g0 * f6 +# asm 1: vpmuludq h6=reg128#7 +# asm 2: vpmuludq h6=%xmm6 +vpmuludq %xmm3,%xmm10,%xmm6 + +# qhasm: 2x r = g1 * f5 +# asm 1: vpmuludq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm5,%xmm12,%xmm14 + +# qhasm: f5_2_stack = f5 +# asm 1: movdqa f5_2_stack=stack128#17 +# asm 2: movdqa f5_2_stack=256(%rsp) +movdqa %xmm5,256(%rsp) + +# qhasm: 2x f5 *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,f5_38_stack=stack128#18 +# asm 2: movdqa f5_38_stack=272(%rsp) +movdqa %xmm5,272(%rsp) + +# qhasm: 2x h6 += r +# asm 1: paddq h7=reg128#6 +# asm 2: vpmuludq h7=%xmm5 +vpmuludq %xmm7,%xmm10,%xmm5 + +# qhasm: f7_stack = f7 +# asm 1: movdqa f7_stack=stack128#19 +# asm 2: movdqa f7_stack=288(%rsp) +movdqa %xmm7,288(%rsp) + +# qhasm: 2x f7 += f7 +# asm 1: paddq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm3,%xmm12,%xmm14 + +# qhasm: f6_stack = f6 +# asm 1: movdqa f6_stack=stack128#20 +# asm 2: movdqa f6_stack=304(%rsp) +movdqa %xmm3,304(%rsp) + +# qhasm: 2x h7 += r +# asm 1: paddq f6_19_stack=stack128#21 +# asm 2: movdqa f6_19_stack=320(%rsp) +movdqa %xmm3,320(%rsp) + +# qhasm: 2x r = f8 + f9 +# asm 1: vpaddq r=reg128#4 +# asm 2: vpaddq r=%xmm3 +vpaddq %xmm9,%xmm8,%xmm3 + +# qhasm: 2x f8 += mem128[ subc2 ] +# asm 1: paddq subc2,f9=reg128#10 +# asm 2: vpunpckhqdq f9=%xmm9 +vpunpckhqdq %xmm3,%xmm8,%xmm9 + +# qhasm: f8 = unpack_low(f8, r) +# asm 1: vpunpcklqdq f8=reg128#4 +# asm 2: vpunpcklqdq f8=%xmm3 +vpunpcklqdq %xmm3,%xmm8,%xmm3 + +# qhasm: f8_stack = f8 +# asm 1: movdqa f8_stack=stack128#22 +# asm 2: movdqa f8_stack=336(%rsp) +movdqa %xmm3,336(%rsp) + +# qhasm: 2x h8 = g1 * f7 +# asm 1: vpmuludq h8=reg128#9 +# asm 2: vpmuludq h8=%xmm8 +vpmuludq %xmm7,%xmm12,%xmm8 + +# qhasm: f7_2_stack = f7 +# asm 1: movdqa f7_2_stack=stack128#23 +# asm 2: movdqa f7_2_stack=352(%rsp) +movdqa %xmm7,352(%rsp) + +# qhasm: 2x f7 *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,f7_38_stack=stack128#24 +# asm 2: movdqa f7_38_stack=368(%rsp) +movdqa %xmm7,368(%rsp) + +# qhasm: 2x r = g0 * f8 +# asm 1: vpmuludq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq %xmm3,%xmm10,%xmm7 + +# qhasm: 2x h8 += r +# asm 1: paddq h9=reg128#8 +# asm 2: vpmuludq h9=%xmm7 +vpmuludq %xmm9,%xmm10,%xmm7 + +# qhasm: f9_stack = f9 +# asm 1: movdqa f9_stack=stack128#25 +# asm 2: movdqa f9_stack=384(%rsp) +movdqa %xmm9,384(%rsp) + +# qhasm: 2x f9 += f9 +# asm 1: paddq r=reg128#11 +# asm 2: vpmuludq r=%xmm10 +vpmuludq %xmm3,%xmm12,%xmm10 + +# qhasm: 2x h9 += r +# asm 1: paddq f8_19_stack=stack128#26 +# asm 2: movdqa f8_19_stack=400(%rsp) +movdqa %xmm3,400(%rsp) + +# qhasm: 2x g1 *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq %xmm9,%xmm12,%xmm3 + +# qhasm: f9_2_stack = f9 +# asm 1: movdqa f9_2_stack=stack128#27 +# asm 2: movdqa f9_2_stack=416(%rsp) +movdqa %xmm9,416(%rsp) + +# qhasm: 2x h0 += r +# asm 1: paddq g2=reg128#4 +# asm 2: movdqa g2=%xmm3 +movdqa 0(%rsp),%xmm3 + +# qhasm: g3 = z3_2 +# asm 1: movdqa g3=reg128#10 +# asm 2: movdqa g3=%xmm9 +movdqa 16(%rsp),%xmm9 + +# qhasm: 2x r = g2 + mem128[ subc2 ] +# asm 1: vpaddq subc2,r=reg128#11 +# asm 2: vpaddq subc2,r=%xmm10 +vpaddq subc2(%rip),%xmm3,%xmm10 + +# qhasm: 2x r -= g3 +# asm 1: psubq g3=reg128#10 +# asm 2: vpunpckhqdq g3=%xmm9 +vpunpckhqdq %xmm10,%xmm3,%xmm9 + +# qhasm: g2 = unpack_low(g2, r) +# asm 1: vpunpcklqdq g2=reg128#4 +# asm 2: vpunpcklqdq g2=%xmm3 +vpunpcklqdq %xmm10,%xmm3,%xmm3 + +# qhasm: 2x r2 = g2 * f0_stack +# asm 1: vpmuludq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 144(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h2 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 128(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h3 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 192(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h4 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 176(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h5 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 240(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h6 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 224(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h7 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 304(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h8 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 288(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h9 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 336(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h0 += r2 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 144(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h3 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 160(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h4 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 192(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h5 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 208(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h6 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 240(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h7 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 256(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h8 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 304(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h9 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 352(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h0 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 336(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h1 += r3 +# asm 1: paddq g4=reg128#4 +# asm 2: movdqa g4=%xmm3 +movdqa 32(%rsp),%xmm3 + +# qhasm: g5 = z3_4 +# asm 1: movdqa g5=reg128#10 +# asm 2: movdqa g5=%xmm9 +movdqa 80(%rsp),%xmm9 + +# qhasm: 2x r = g4 + mem128[ subc2 ] +# asm 1: vpaddq subc2,r=reg128#11 +# asm 2: vpaddq subc2,r=%xmm10 +vpaddq subc2(%rip),%xmm3,%xmm10 + +# qhasm: 2x r -= g5 +# asm 1: psubq g5=reg128#10 +# asm 2: vpunpckhqdq g5=%xmm9 +vpunpckhqdq %xmm10,%xmm3,%xmm9 + +# qhasm: g4 = unpack_low(g4, r) +# asm 1: vpunpcklqdq g4=reg128#4 +# asm 2: vpunpcklqdq g4=%xmm3 +vpunpcklqdq %xmm10,%xmm3,%xmm3 + +# qhasm: 2x r4 = g4 * f0_stack +# asm 1: vpmuludq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 144(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h4 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 128(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h5 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 192(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h6 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 176(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h7 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 240(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h8 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 224(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h9 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 304(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h0 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 288(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h1 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 336(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h2 += r4 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 144(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h5 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 160(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h6 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 192(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h7 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 208(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h8 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 240(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h9 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 256(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h0 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 304(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h1 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 352(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h2 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 336(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h3 += r5 +# asm 1: paddq g6=reg128#4 +# asm 2: movdqa g6=%xmm3 +movdqa 48(%rsp),%xmm3 + +# qhasm: g7 = z3_6 +# asm 1: movdqa g7=reg128#10 +# asm 2: movdqa g7=%xmm9 +movdqa 96(%rsp),%xmm9 + +# qhasm: 2x r = g6 + mem128[ subc2 ] +# asm 1: vpaddq subc2,r=reg128#11 +# asm 2: vpaddq subc2,r=%xmm10 +vpaddq subc2(%rip),%xmm3,%xmm10 + +# qhasm: 2x r -= g7 +# asm 1: psubq g7=reg128#10 +# asm 2: vpunpckhqdq g7=%xmm9 +vpunpckhqdq %xmm10,%xmm3,%xmm9 + +# qhasm: g6 = unpack_low(g6, r) +# asm 1: vpunpcklqdq g6=reg128#4 +# asm 2: vpunpcklqdq g6=%xmm3 +vpunpcklqdq %xmm10,%xmm3,%xmm3 + +# qhasm: 2x r6 = g6 * f0_stack +# asm 1: vpmuludq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 144(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h6 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 128(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h7 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 192(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h8 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 176(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h9 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 240(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h0 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 224(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h1 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 304(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h2 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 288(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h3 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 336(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h4 += r6 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 144(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h7 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 160(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h8 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 192(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h9 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 208(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h0 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 240(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h1 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 256(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h2 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 304(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h3 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 352(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h4 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 336(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h5 += r7 +# asm 1: paddq g8=reg128#4 +# asm 2: movdqa g8=%xmm3 +movdqa 64(%rsp),%xmm3 + +# qhasm: g9 = z3_8 +# asm 1: movdqa g9=reg128#10 +# asm 2: movdqa g9=%xmm9 +movdqa 112(%rsp),%xmm9 + +# qhasm: 2x r = g8 + mem128[ subc2 ] +# asm 1: vpaddq subc2,r=reg128#11 +# asm 2: vpaddq subc2,r=%xmm10 +vpaddq subc2(%rip),%xmm3,%xmm10 + +# qhasm: 2x r -= g9 +# asm 1: psubq g9=reg128#10 +# asm 2: vpunpckhqdq g9=%xmm9 +vpunpckhqdq %xmm10,%xmm3,%xmm9 + +# qhasm: g8 = unpack_low(g8, r) +# asm 1: vpunpcklqdq g8=reg128#4 +# asm 2: vpunpcklqdq g8=%xmm3 +vpunpcklqdq %xmm10,%xmm3,%xmm3 + +# qhasm: 2x r8 = g8 * f0_stack +# asm 1: vpmuludq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 144(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h8 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 128(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h9 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 192(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h0 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 176(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h1 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 240(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h2 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 224(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h3 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 304(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h4 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 288(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h5 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 336(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h6 += r8 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 144(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h9 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 160(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h0 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 192(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h1 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 208(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h2 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 240(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h3 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 256(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h4 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 304(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h5 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 352(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h6 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 336(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h7 += r9 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#4 +# asm 2: vpsrlq $25,carry5=%xmm3 +vpsrlq $25,%xmm4,%xmm3 + +# qhasm: 2x h6 += carry5 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#4 +# asm 2: vpsrlq $26,carry0=%xmm3 +vpsrlq $26,%xmm11,%xmm3 + +# qhasm: 2x h1 += carry0 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry6=reg128#4 +# asm 2: vpsrlq $26,carry6=%xmm3 +vpsrlq $26,%xmm6,%xmm3 + +# qhasm: 2x h7 += carry6 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry1=reg128#4 +# asm 2: vpsrlq $25,carry1=%xmm3 +vpsrlq $25,%xmm13,%xmm3 + +# qhasm: 2x h2 += carry1 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry7=reg128#4 +# asm 2: vpsrlq $25,carry7=%xmm3 +vpsrlq $25,%xmm5,%xmm3 + +# qhasm: 2x h8 += carry7 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry2=reg128#4 +# asm 2: vpsrlq $26,carry2=%xmm3 +vpsrlq $26,%xmm0,%xmm3 + +# qhasm: 2x h3 += carry2 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry8=reg128#4 +# asm 2: vpsrlq $26,carry8=%xmm3 +vpsrlq $26,%xmm8,%xmm3 + +# qhasm: 2x h9 += carry8 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry3=reg128#4 +# asm 2: vpsrlq $25,carry3=%xmm3 +vpsrlq $25,%xmm2,%xmm3 + +# qhasm: 2x h4 += carry3 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry9=reg128#4 +# asm 2: vpsrlq $25,carry9=%xmm3 +vpsrlq $25,%xmm7,%xmm3 + +# qhasm: 2x r0 = carry9 << 4 +# asm 1: vpsllq $4,r0=reg128#10 +# asm 2: vpsllq $4,r0=%xmm9 +vpsllq $4,%xmm3,%xmm9 + +# qhasm: 2x h0 += carry9 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry4=reg128#4 +# asm 2: vpsrlq $26,carry4=%xmm3 +vpsrlq $26,%xmm1,%xmm3 + +# qhasm: 2x h5 += carry4 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#4 +# asm 2: vpsrlq $26,carry0=%xmm3 +vpsrlq $26,%xmm11,%xmm3 + +# qhasm: 2x h1 += carry0 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#4 +# asm 2: vpsrlq $25,carry5=%xmm3 +vpsrlq $25,%xmm4,%xmm3 + +# qhasm: 2x h6 += carry5 +# asm 1: paddq r=reg128#4 +# asm 2: vpunpcklqdq r=%xmm3 +vpunpcklqdq %xmm13,%xmm11,%xmm3 + +# qhasm: h1 = unpack_high(h0, h1) +# asm 1: vpunpckhqdq h1=reg128#10 +# asm 2: vpunpckhqdq h1=%xmm9 +vpunpckhqdq %xmm13,%xmm11,%xmm9 + +# qhasm: 2x h0 = h1 + mem128[ subc0 ] +# asm 1: vpaddq subc0,h0=reg128#11 +# asm 2: vpaddq subc0,h0=%xmm10 +vpaddq subc0(%rip),%xmm9,%xmm10 + +# qhasm: 2x h0 -= r +# asm 1: psubq h1=reg128#10 +# asm 2: vpunpckhqdq h1=%xmm9 +vpunpckhqdq %xmm3,%xmm10,%xmm9 + +# qhasm: unpack low qwords of h0 and r +# asm 1: punpcklqdq m0=reg128#4 +# asm 2: vpmuludq m0=%xmm3 +vpmuludq %xmm10,%xmm10,%xmm3 + +# qhasm: 2x h0 += h0 +# asm 1: paddq m1=reg128#12 +# asm 2: vpmuludq m1=%xmm11 +vpmuludq %xmm9,%xmm10,%xmm11 + +# qhasm: r = unpack_low(h2, h3) +# asm 1: vpunpcklqdq r=reg128#13 +# asm 2: vpunpcklqdq r=%xmm12 +vpunpcklqdq %xmm2,%xmm0,%xmm12 + +# qhasm: h3 = unpack_high(h2, h3) +# asm 1: vpunpckhqdq h3=reg128#1 +# asm 2: vpunpckhqdq h3=%xmm0 +vpunpckhqdq %xmm2,%xmm0,%xmm0 + +# qhasm: 2x h2 = h3 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h2=reg128#3 +# asm 2: vpaddq subc2,h2=%xmm2 +vpaddq subc2(%rip),%xmm0,%xmm2 + +# qhasm: 2x h2 -= r +# asm 1: psubq h3=reg128#1 +# asm 2: vpunpckhqdq h3=%xmm0 +vpunpckhqdq %xmm12,%xmm2,%xmm0 + +# qhasm: unpack low qwords of h2 and r +# asm 1: punpcklqdq m2=reg128#13 +# asm 2: vpmuludq m2=%xmm12 +vpmuludq %xmm2,%xmm10,%xmm12 + +# qhasm: 2x h1_2 = h1 + h1 +# asm 1: vpaddq h1_2=reg128#14 +# asm 2: vpaddq h1_2=%xmm13 +vpaddq %xmm9,%xmm9,%xmm13 + +# qhasm: 2x r = h1 * h1_2 +# asm 1: vpmuludq r=reg128#10 +# asm 2: vpmuludq r=%xmm9 +vpmuludq %xmm13,%xmm9,%xmm9 + +# qhasm: 2x m2 += r +# asm 1: paddq m3=reg128#10 +# asm 2: vpmuludq m3=%xmm9 +vpmuludq %xmm0,%xmm10,%xmm9 + +# qhasm: 2x r = h1_2 * h2 +# asm 1: vpmuludq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm2,%xmm13,%xmm14 + +# qhasm: 2x m3 += r +# asm 1: paddq r=reg128#15 +# asm 2: vpunpcklqdq r=%xmm14 +vpunpcklqdq %xmm4,%xmm1,%xmm14 + +# qhasm: h5 = unpack_high(h4, h5) +# asm 1: vpunpckhqdq h5=reg128#2 +# asm 2: vpunpckhqdq h5=%xmm1 +vpunpckhqdq %xmm4,%xmm1,%xmm1 + +# qhasm: 2x h4 = h5 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h4=reg128#5 +# asm 2: vpaddq subc2,h4=%xmm4 +vpaddq subc2(%rip),%xmm1,%xmm4 + +# qhasm: 2x h4 -= r +# asm 1: psubq h5=reg128#2 +# asm 2: vpunpckhqdq h5=%xmm1 +vpunpckhqdq %xmm14,%xmm4,%xmm1 + +# qhasm: unpack low qwords of h4 and r +# asm 1: punpcklqdq h5_stack=stack128#1 +# asm 2: movdqa h5_stack=0(%rsp) +movdqa %xmm1,0(%rsp) + +# qhasm: 2x h5 += h5 +# asm 1: paddq h5_2_stack=stack128#2 +# asm 2: movdqa h5_2_stack=16(%rsp) +movdqa %xmm1,16(%rsp) + +# qhasm: 2x h5 *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,h5_38_stack=stack128#3 +# asm 2: movdqa h5_38_stack=32(%rsp) +movdqa %xmm1,32(%rsp) + +# qhasm: 2x m4 = h0 * h4 +# asm 1: vpmuludq m4=reg128#2 +# asm 2: vpmuludq m4=%xmm1 +vpmuludq %xmm4,%xmm10,%xmm1 + +# qhasm: 2x r = h2 * h2 +# asm 1: vpmuludq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm2,%xmm2,%xmm14 + +# qhasm: 2x m4 += r +# asm 1: paddq m5=reg128#15 +# asm 2: vpmuludq m5=%xmm14 +vpmuludq 0(%rsp),%xmm10,%xmm14 + +# qhasm: 2x r = h1_2 * h4 +# asm 1: vpmuludq r=reg128#16 +# asm 2: vpmuludq r=%xmm15 +vpmuludq %xmm4,%xmm13,%xmm15 + +# qhasm: 2x m5 += r +# asm 1: paddq r=reg128#16 +# asm 2: vpunpcklqdq r=%xmm15 +vpunpcklqdq %xmm5,%xmm6,%xmm15 + +# qhasm: h7 = unpack_high(h6, h7) +# asm 1: vpunpckhqdq h7=reg128#6 +# asm 2: vpunpckhqdq h7=%xmm5 +vpunpckhqdq %xmm5,%xmm6,%xmm5 + +# qhasm: 2x h6 = h7 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h6=reg128#7 +# asm 2: vpaddq subc2,h6=%xmm6 +vpaddq subc2(%rip),%xmm5,%xmm6 + +# qhasm: 2x h6 -= r +# asm 1: psubq h7=reg128#6 +# asm 2: vpunpckhqdq h7=%xmm5 +vpunpckhqdq %xmm15,%xmm6,%xmm5 + +# qhasm: unpack low qwords of h6 and r +# asm 1: punpcklqdq h6_stack=stack128#4 +# asm 2: movdqa h6_stack=48(%rsp) +movdqa %xmm6,48(%rsp) + +# qhasm: 2x h6 *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,h6_19_stack=stack128#5 +# asm 2: movdqa h6_19_stack=64(%rsp) +movdqa %xmm6,64(%rsp) + +# qhasm: h7_stack = h7 +# asm 1: movdqa h7_stack=stack128#6 +# asm 2: movdqa h7_stack=80(%rsp) +movdqa %xmm5,80(%rsp) + +# qhasm: 2x h7 *= mem128[ v38_38 ] +# asm 1: pmuludq v38_38,h7_38_stack=stack128#7 +# asm 2: movdqa h7_38_stack=96(%rsp) +movdqa %xmm5,96(%rsp) + +# qhasm: 2x m6 = h0 * h6_stack +# asm 1: vpmuludq m6=reg128#6 +# asm 2: vpmuludq m6=%xmm5 +vpmuludq 48(%rsp),%xmm10,%xmm5 + +# qhasm: 2x h3_2 = h3 + h3 +# asm 1: vpaddq h3_2=reg128#7 +# asm 2: vpaddq h3_2=%xmm6 +vpaddq %xmm0,%xmm0,%xmm6 + +# qhasm: 2x r = h3 * h3_2 +# asm 1: vpmuludq r=reg128#1 +# asm 2: vpmuludq r=%xmm0 +vpmuludq %xmm6,%xmm0,%xmm0 + +# qhasm: 2x m6 += r +# asm 1: paddq m7=reg128#1 +# asm 2: vpmuludq m7=%xmm0 +vpmuludq 80(%rsp),%xmm10,%xmm0 + +# qhasm: 2x r = h3_2 * h4 +# asm 1: vpmuludq r=reg128#16 +# asm 2: vpmuludq r=%xmm15 +vpmuludq %xmm4,%xmm6,%xmm15 + +# qhasm: 2x m7 += r +# asm 1: paddq r=reg128#16 +# asm 2: vpmuludq r=%xmm15 +vpmuludq %xmm6,%xmm13,%xmm15 + +# qhasm: 2x m4 += r +# asm 1: paddq r=reg128#16 +# asm 2: vpmuludq r=%xmm15 +vpmuludq %xmm6,%xmm2,%xmm15 + +# qhasm: 2x m5 += r +# asm 1: paddq r=reg128#16 +# asm 2: vpunpcklqdq r=%xmm15 +vpunpcklqdq %xmm7,%xmm8,%xmm15 + +# qhasm: h9 = unpack_high(h8, h9) +# asm 1: vpunpckhqdq h9=reg128#8 +# asm 2: vpunpckhqdq h9=%xmm7 +vpunpckhqdq %xmm7,%xmm8,%xmm7 + +# qhasm: 2x h8 = h9 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h8=reg128#9 +# asm 2: vpaddq subc2,h8=%xmm8 +vpaddq subc2(%rip),%xmm7,%xmm8 + +# qhasm: 2x h8 -= r +# asm 1: psubq h9=reg128#8 +# asm 2: vpunpckhqdq h9=%xmm7 +vpunpckhqdq %xmm15,%xmm8,%xmm7 + +# qhasm: unpack low qwords of h8 and r +# asm 1: punpcklqdq h8_stack=stack128#8 +# asm 2: movdqa h8_stack=112(%rsp) +movdqa %xmm8,112(%rsp) + +# qhasm: 2x h8 *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,h8_19_stack=stack128#11 +# asm 2: movdqa h8_19_stack=160(%rsp) +movdqa %xmm8,160(%rsp) + +# qhasm: 2x m8 = h0 * h8_stack +# asm 1: vpmuludq m8=reg128#9 +# asm 2: vpmuludq m8=%xmm8 +vpmuludq 112(%rsp),%xmm10,%xmm8 + +# qhasm: 2x m9 = h0 * h9 +# asm 1: vpmuludq m9=reg128#11 +# asm 2: vpmuludq m9=%xmm10 +vpmuludq %xmm7,%xmm10,%xmm10 + +# qhasm: 2x h9_38 = h9 * mem128[ v38_38 ] +# asm 1: vpmuludq v38_38,h9_38=reg128#16 +# asm 2: vpmuludq v38_38,h9_38=%xmm15 +vpmuludq v38_38(%rip),%xmm7,%xmm15 + +# qhasm: 2x r = h9 * h9_38 +# asm 1: vpmuludq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq %xmm15,%xmm7,%xmm7 + +# qhasm: 2x m8 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq %xmm15,%xmm13,%xmm7 + +# qhasm: 2x m0 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq %xmm15,%xmm2,%xmm7 + +# qhasm: 2x m1 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 80(%rsp),%xmm13,%xmm7 + +# qhasm: 2x r += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 16(%rsp),%xmm13,%xmm7 + +# qhasm: 2x m6 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 48(%rsp),%xmm13,%xmm7 + +# qhasm: 2x m7 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 112(%rsp),%xmm13,%xmm7 + +# qhasm: 2x m9 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq %xmm15,%xmm6,%xmm7 + +# qhasm: 2x m2 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq %xmm15,%xmm4,%xmm7 + +# qhasm: 2x m3 += r +# asm 1: paddq h2_2=reg128#3 +# asm 2: vpaddq h2_2=%xmm2 +vpaddq %xmm2,%xmm2,%xmm2 + +# qhasm: 2x r = h2_2 * h4 +# asm 1: vpmuludq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq %xmm4,%xmm2,%xmm7 + +# qhasm: 2x m6 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 160(%rsp),%xmm2,%xmm7 + +# qhasm: 2x m0 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 160(%rsp),%xmm6,%xmm7 + +# qhasm: 2x m1 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 0(%rsp),%xmm2,%xmm7 + +# qhasm: 2x m7 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 48(%rsp),%xmm2,%xmm7 + +# qhasm: 2x m8 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 80(%rsp),%xmm2,%xmm2 + +# qhasm: 2x m9 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 96(%rsp),%xmm4,%xmm2 + +# qhasm: 2x m1 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm4,%xmm4,%xmm2 + +# qhasm: 2x m8 += r +# asm 1: paddq h4_2=reg128#3 +# asm 2: vpaddq h4_2=%xmm2 +vpaddq %xmm4,%xmm4,%xmm2 + +# qhasm: 2x r = h4_2 * h8_19_stack +# asm 1: vpmuludq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 160(%rsp),%xmm2,%xmm4 + +# qhasm: 2x m2 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 16(%rsp),%xmm15,%xmm4 + +# qhasm: 2x m4 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 48(%rsp),%xmm15,%xmm4 + +# qhasm: 2x m5 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 96(%rsp),%xmm6,%xmm4 + +# qhasm: 2x m0 += r +# asm 1: paddq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 16(%rsp),%xmm4 + +# qhasm: 2x r *= h8_19_stack +# asm 1: pmuludq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 16(%rsp),%xmm6,%xmm4 + +# qhasm: 2x m8 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 48(%rsp),%xmm6,%xmm4 + +# qhasm: 2x m9 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 80(%rsp),%xmm15,%xmm4 + +# qhasm: 2x r += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 112(%rsp),%xmm15,%xmm4 + +# qhasm: 2x m7 += r +# asm 1: paddq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 48(%rsp),%xmm4 + +# qhasm: 2x r += r +# asm 1: paddq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 80(%rsp),%xmm4 + +# qhasm: 2x r += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 64(%rsp),%xmm2,%xmm4 + +# qhasm: 2x m0 += r +# asm 1: paddq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 16(%rsp),%xmm4 + +# qhasm: 2x r *= h6_19_stack +# asm 1: pmuludq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 16(%rsp),%xmm4 + +# qhasm: 2x r *= h7_38_stack +# asm 1: pmuludq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 48(%rsp),%xmm4 + +# qhasm: 2x r *= h7_38_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 0(%rsp),%xmm2,%xmm2 + +# qhasm: 2x m9 += r +# asm 1: paddq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 32(%rsp),%xmm2 + +# qhasm: 2x r *= h5_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 64(%rsp),%xmm2 + +# qhasm: 2x r *= h6_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 96(%rsp),%xmm2 + +# qhasm: 2x r *= h7_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 160(%rsp),%xmm2 + +# qhasm: 2x r *= h8_stack +# asm 1: pmuludq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#3 +# asm 2: vpsrlq $26,carry0=%xmm2 +vpsrlq $26,%xmm3,%xmm2 + +# qhasm: 2x m1 += carry0 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#3 +# asm 2: vpsrlq $25,carry5=%xmm2 +vpsrlq $25,%xmm14,%xmm2 + +# qhasm: 2x m6 += carry5 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry1=reg128#3 +# asm 2: vpsrlq $25,carry1=%xmm2 +vpsrlq $25,%xmm11,%xmm2 + +# qhasm: 2x m2 += carry1 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry6=reg128#3 +# asm 2: vpsrlq $26,carry6=%xmm2 +vpsrlq $26,%xmm5,%xmm2 + +# qhasm: 2x m7 += carry6 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry2=reg128#3 +# asm 2: vpsrlq $26,carry2=%xmm2 +vpsrlq $26,%xmm12,%xmm2 + +# qhasm: 2x m3 += carry2 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry7=reg128#3 +# asm 2: vpsrlq $25,carry7=%xmm2 +vpsrlq $25,%xmm0,%xmm2 + +# qhasm: 2x m8 += carry7 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry3=reg128#3 +# asm 2: vpsrlq $25,carry3=%xmm2 +vpsrlq $25,%xmm9,%xmm2 + +# qhasm: 2x m4 += carry3 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry8=reg128#3 +# asm 2: vpsrlq $26,carry8=%xmm2 +vpsrlq $26,%xmm8,%xmm2 + +# qhasm: 2x m9 += carry8 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry4=reg128#3 +# asm 2: vpsrlq $26,carry4=%xmm2 +vpsrlq $26,%xmm1,%xmm2 + +# qhasm: 2x m5 += carry4 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry9=reg128#3 +# asm 2: vpsrlq $25,carry9=%xmm2 +vpsrlq $25,%xmm10,%xmm2 + +# qhasm: 2x r0 = carry9 << 4 +# asm 1: vpsllq $4,r0=reg128#5 +# asm 2: vpsllq $4,r0=%xmm4 +vpsllq $4,%xmm2,%xmm4 + +# qhasm: 2x m0 += carry9 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#3 +# asm 2: vpsrlq $25,carry5=%xmm2 +vpsrlq $25,%xmm14,%xmm2 + +# qhasm: 2x m6 += carry5 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#3 +# asm 2: vpsrlq $26,carry0=%xmm2 +vpsrlq $26,%xmm3,%xmm2 + +# qhasm: 2x m1 += carry0 +# asm 1: paddq r=reg128#3 +# asm 2: vpunpckhqdq r=%xmm2 +vpunpckhqdq %xmm11,%xmm3,%xmm2 + +# qhasm: x3_0 = r +# asm 1: movdqa x3_0=stack128#1 +# asm 2: movdqa x3_0=0(%rsp) +movdqa %xmm2,0(%rsp) + +# qhasm: r = unpack_low(m0, m1) +# asm 1: vpunpcklqdq r=reg128#3 +# asm 2: vpunpcklqdq r=%xmm2 +vpunpcklqdq %xmm11,%xmm3,%xmm2 + +# qhasm: 2x r *= mem128[ v9_9 ] +# asm 1: pmuludq v9_9,z3_0=stack128#6 +# asm 2: movdqa z3_0=80(%rsp) +movdqa %xmm2,80(%rsp) + +# qhasm: r = unpack_high(m2, m3) +# asm 1: vpunpckhqdq r=reg128#3 +# asm 2: vpunpckhqdq r=%xmm2 +vpunpckhqdq %xmm9,%xmm12,%xmm2 + +# qhasm: x3_2 = r +# asm 1: movdqa x3_2=stack128#2 +# asm 2: movdqa x3_2=16(%rsp) +movdqa %xmm2,16(%rsp) + +# qhasm: r = unpack_low(m2, m3) +# asm 1: vpunpcklqdq r=reg128#3 +# asm 2: vpunpcklqdq r=%xmm2 +vpunpcklqdq %xmm9,%xmm12,%xmm2 + +# qhasm: 2x r *= mem128[ v9_9 ] +# asm 1: pmuludq v9_9,z3_2=stack128#7 +# asm 2: movdqa z3_2=96(%rsp) +movdqa %xmm2,96(%rsp) + +# qhasm: r = unpack_high(m4, m5) +# asm 1: vpunpckhqdq r=reg128#3 +# asm 2: vpunpckhqdq r=%xmm2 +vpunpckhqdq %xmm14,%xmm1,%xmm2 + +# qhasm: x3_4 = r +# asm 1: movdqa x3_4=stack128#3 +# asm 2: movdqa x3_4=32(%rsp) +movdqa %xmm2,32(%rsp) + +# qhasm: r = unpack_low(m4, m5) +# asm 1: vpunpcklqdq r=reg128#2 +# asm 2: vpunpcklqdq r=%xmm1 +vpunpcklqdq %xmm14,%xmm1,%xmm1 + +# qhasm: 2x r *= mem128[ v9_9 ] +# asm 1: pmuludq v9_9,z3_4=stack128#8 +# asm 2: movdqa z3_4=112(%rsp) +movdqa %xmm1,112(%rsp) + +# qhasm: r = unpack_high(m6, m7) +# asm 1: vpunpckhqdq r=reg128#2 +# asm 2: vpunpckhqdq r=%xmm1 +vpunpckhqdq %xmm0,%xmm5,%xmm1 + +# qhasm: x3_6 = r +# asm 1: movdqa x3_6=stack128#4 +# asm 2: movdqa x3_6=48(%rsp) +movdqa %xmm1,48(%rsp) + +# qhasm: r = unpack_low(m6, m7) +# asm 1: vpunpcklqdq r=reg128#1 +# asm 2: vpunpcklqdq r=%xmm0 +vpunpcklqdq %xmm0,%xmm5,%xmm0 + +# qhasm: 2x r *= mem128[ v9_9 ] +# asm 1: pmuludq v9_9,z3_6=stack128#11 +# asm 2: movdqa z3_6=160(%rsp) +movdqa %xmm0,160(%rsp) + +# qhasm: r = unpack_high(m8, m9) +# asm 1: vpunpckhqdq r=reg128#1 +# asm 2: vpunpckhqdq r=%xmm0 +vpunpckhqdq %xmm10,%xmm8,%xmm0 + +# qhasm: x3_8 = r +# asm 1: movdqa x3_8=stack128#5 +# asm 2: movdqa x3_8=64(%rsp) +movdqa %xmm0,64(%rsp) + +# qhasm: r = unpack_low(m8, m9) +# asm 1: vpunpcklqdq r=reg128#1 +# asm 2: vpunpcklqdq r=%xmm0 +vpunpcklqdq %xmm10,%xmm8,%xmm0 + +# qhasm: 2x r *= mem128[ v9_9 ] +# asm 1: pmuludq v9_9,z3_8=stack128#14 +# asm 2: movdqa z3_8=208(%rsp) +movdqa %xmm0,208(%rsp) + +# qhasm: f0 = f0_stack +# asm 1: movdqa f0=reg128#1 +# asm 2: movdqa f0=%xmm0 +movdqa 144(%rsp),%xmm0 + +# qhasm: 2x h0 = f0 * f0 +# asm 1: vpmuludq h0=reg128#2 +# asm 2: vpmuludq h0=%xmm1 +vpmuludq %xmm0,%xmm0,%xmm1 + +# qhasm: 2x f0 += f0 +# asm 1: paddq f1=reg128#3 +# asm 2: movdqa f1=%xmm2 +movdqa 128(%rsp),%xmm2 + +# qhasm: 2x h1 = f0 * f1 +# asm 1: vpmuludq h1=reg128#4 +# asm 2: vpmuludq h1=%xmm3 +vpmuludq %xmm2,%xmm0,%xmm3 + +# qhasm: f2 = f2_stack +# asm 1: movdqa f2=reg128#5 +# asm 2: movdqa f2=%xmm4 +movdqa 192(%rsp),%xmm4 + +# qhasm: 2x h2 = f0 * f2 +# asm 1: vpmuludq h2=reg128#6 +# asm 2: vpmuludq h2=%xmm5 +vpmuludq %xmm4,%xmm0,%xmm5 + +# qhasm: f3 = f3_stack +# asm 1: movdqa f3=reg128#7 +# asm 2: movdqa f3=%xmm6 +movdqa 176(%rsp),%xmm6 + +# qhasm: 2x h3 = f0 * f3 +# asm 1: vpmuludq h3=reg128#8 +# asm 2: vpmuludq h3=%xmm7 +vpmuludq %xmm6,%xmm0,%xmm7 + +# qhasm: f4 = f4_stack +# asm 1: movdqa f4=reg128#9 +# asm 2: movdqa f4=%xmm8 +movdqa 240(%rsp),%xmm8 + +# qhasm: 2x h4 = f0 * f4 +# asm 1: vpmuludq h4=reg128#10 +# asm 2: vpmuludq h4=%xmm9 +vpmuludq %xmm8,%xmm0,%xmm9 + +# qhasm: 2x h5 = f0 * f5_stack +# asm 1: vpmuludq h5=reg128#11 +# asm 2: vpmuludq h5=%xmm10 +vpmuludq 224(%rsp),%xmm0,%xmm10 + +# qhasm: 2x h6 = f0 * f6_stack +# asm 1: vpmuludq h6=reg128#12 +# asm 2: vpmuludq h6=%xmm11 +vpmuludq 304(%rsp),%xmm0,%xmm11 + +# qhasm: 2x h7 = f0 * f7_stack +# asm 1: vpmuludq h7=reg128#13 +# asm 2: vpmuludq h7=%xmm12 +vpmuludq 288(%rsp),%xmm0,%xmm12 + +# qhasm: 2x h8 = f0 * f8_stack +# asm 1: vpmuludq h8=reg128#14 +# asm 2: vpmuludq h8=%xmm13 +vpmuludq 336(%rsp),%xmm0,%xmm13 + +# qhasm: f9 = f9_stack +# asm 1: movdqa f9=reg128#15 +# asm 2: movdqa f9=%xmm14 +movdqa 384(%rsp),%xmm14 + +# qhasm: 2x h9 = f0 * f9 +# asm 1: vpmuludq h9=reg128#1 +# asm 2: vpmuludq h9=%xmm0 +vpmuludq %xmm14,%xmm0,%xmm0 + +# qhasm: 2x f9_38 = f9 * mem128[ v38_38 ] +# asm 1: vpmuludq v38_38,f9_38=reg128#16 +# asm 2: vpmuludq v38_38,f9_38=%xmm15 +vpmuludq v38_38(%rip),%xmm14,%xmm15 + +# qhasm: 2x r = f9 * f9_38 +# asm 1: vpmuludq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm15,%xmm14,%xmm14 + +# qhasm: 2x h8 += r +# asm 1: paddq f3_2=reg128#15 +# asm 2: vpaddq f3_2=%xmm14 +vpaddq %xmm6,%xmm6,%xmm14 + +# qhasm: 2x r = f3 * f3_2 +# asm 1: vpmuludq r=reg128#7 +# asm 2: vpmuludq r=%xmm6 +vpmuludq %xmm14,%xmm6,%xmm6 + +# qhasm: 2x h6 += r +# asm 1: paddq f1_2=reg128#7 +# asm 2: vpaddq f1_2=%xmm6 +vpaddq %xmm2,%xmm2,%xmm6 + +# qhasm: 2x r = f1 * f1_2 +# asm 1: vpmuludq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm6,%xmm2,%xmm2 + +# qhasm: 2x h2 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm15,%xmm6,%xmm2 + +# qhasm: 2x h0 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm15,%xmm4,%xmm2 + +# qhasm: 2x h1 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 256(%rsp),%xmm6,%xmm2 + +# qhasm: 2x h6 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 304(%rsp),%xmm6,%xmm2 + +# qhasm: 2x h7 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 352(%rsp),%xmm6,%xmm2 + +# qhasm: 2x h8 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 336(%rsp),%xmm6,%xmm2 + +# qhasm: 2x h9 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm4,%xmm6,%xmm2 + +# qhasm: 2x h3 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm14,%xmm6,%xmm2 + +# qhasm: 2x h4 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm8,%xmm6,%xmm2 + +# qhasm: 2x h5 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm15,%xmm14,%xmm2 + +# qhasm: 2x h2 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm15,%xmm8,%xmm2 + +# qhasm: 2x h3 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm4,%xmm4,%xmm2 + +# qhasm: 2x h4 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm14,%xmm4,%xmm2 + +# qhasm: 2x h5 += r +# asm 1: paddq f2_2=reg128#3 +# asm 2: vpaddq f2_2=%xmm2 +vpaddq %xmm4,%xmm4,%xmm2 + +# qhasm: 2x r = f2_2 * f4 +# asm 1: vpmuludq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq %xmm8,%xmm2,%xmm4 + +# qhasm: 2x h6 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 400(%rsp),%xmm2,%xmm4 + +# qhasm: 2x h0 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 400(%rsp),%xmm14,%xmm4 + +# qhasm: 2x h1 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 224(%rsp),%xmm2,%xmm4 + +# qhasm: 2x h7 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 304(%rsp),%xmm2,%xmm4 + +# qhasm: 2x h8 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 288(%rsp),%xmm2,%xmm2 + +# qhasm: 2x h9 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 368(%rsp),%xmm8,%xmm2 + +# qhasm: 2x h1 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm8,%xmm14,%xmm2 + +# qhasm: 2x h7 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm8,%xmm8,%xmm2 + +# qhasm: 2x h8 += r +# asm 1: paddq f4_2=reg128#3 +# asm 2: vpaddq f4_2=%xmm2 +vpaddq %xmm8,%xmm8,%xmm2 + +# qhasm: 2x r = f4_2 * f8_19_stack +# asm 1: vpmuludq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 400(%rsp),%xmm2,%xmm4 + +# qhasm: 2x h2 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 256(%rsp),%xmm15,%xmm4 + +# qhasm: 2x h4 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 304(%rsp),%xmm15,%xmm4 + +# qhasm: 2x h5 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 368(%rsp),%xmm14,%xmm4 + +# qhasm: 2x h0 += r +# asm 1: paddq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 256(%rsp),%xmm4 + +# qhasm: 2x r *= f8_19_stack +# asm 1: pmuludq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 256(%rsp),%xmm14,%xmm4 + +# qhasm: 2x h8 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 304(%rsp),%xmm14,%xmm4 + +# qhasm: 2x h9 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 352(%rsp),%xmm15,%xmm4 + +# qhasm: 2x h6 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 336(%rsp),%xmm15,%xmm4 + +# qhasm: 2x h7 += r +# asm 1: paddq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 304(%rsp),%xmm4 + +# qhasm: 2x r += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 320(%rsp),%xmm2,%xmm4 + +# qhasm: 2x h0 += r +# asm 1: paddq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 256(%rsp),%xmm4 + +# qhasm: 2x r *= f6_19_stack +# asm 1: pmuludq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 256(%rsp),%xmm4 + +# qhasm: 2x r *= f7_38_stack +# asm 1: pmuludq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 304(%rsp),%xmm4 + +# qhasm: 2x r *= f7_38_stack +# asm 1: pmuludq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 352(%rsp),%xmm4 + +# qhasm: 2x r *= f8_19_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 224(%rsp),%xmm2,%xmm2 + +# qhasm: 2x h9 += r +# asm 1: paddq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 272(%rsp),%xmm2 + +# qhasm: 2x r *= f5_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 320(%rsp),%xmm2 + +# qhasm: 2x r *= f6_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 368(%rsp),%xmm2 + +# qhasm: 2x r *= f7_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 400(%rsp),%xmm2 + +# qhasm: 2x r *= f8_stack +# asm 1: pmuludq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#3 +# asm 2: vpsrlq $26,carry0=%xmm2 +vpsrlq $26,%xmm1,%xmm2 + +# qhasm: 2x h1 += carry0 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#3 +# asm 2: vpsrlq $25,carry5=%xmm2 +vpsrlq $25,%xmm10,%xmm2 + +# qhasm: 2x h6 += carry5 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry1=reg128#3 +# asm 2: vpsrlq $25,carry1=%xmm2 +vpsrlq $25,%xmm3,%xmm2 + +# qhasm: 2x h2 += carry1 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry6=reg128#3 +# asm 2: vpsrlq $26,carry6=%xmm2 +vpsrlq $26,%xmm11,%xmm2 + +# qhasm: 2x h7 += carry6 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry2=reg128#3 +# asm 2: vpsrlq $26,carry2=%xmm2 +vpsrlq $26,%xmm5,%xmm2 + +# qhasm: 2x h3 += carry2 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry7=reg128#3 +# asm 2: vpsrlq $25,carry7=%xmm2 +vpsrlq $25,%xmm12,%xmm2 + +# qhasm: 2x h8 += carry7 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry3=reg128#3 +# asm 2: vpsrlq $25,carry3=%xmm2 +vpsrlq $25,%xmm7,%xmm2 + +# qhasm: 2x h4 += carry3 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry8=reg128#3 +# asm 2: vpsrlq $26,carry8=%xmm2 +vpsrlq $26,%xmm13,%xmm2 + +# qhasm: 2x h9 += carry8 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry4=reg128#3 +# asm 2: vpsrlq $26,carry4=%xmm2 +vpsrlq $26,%xmm9,%xmm2 + +# qhasm: 2x h5 += carry4 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry9=reg128#3 +# asm 2: vpsrlq $25,carry9=%xmm2 +vpsrlq $25,%xmm0,%xmm2 + +# qhasm: 2x r0 = carry9 << 4 +# asm 1: vpsllq $4,r0=reg128#5 +# asm 2: vpsllq $4,r0=%xmm4 +vpsllq $4,%xmm2,%xmm4 + +# qhasm: 2x h0 += carry9 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#3 +# asm 2: vpsrlq $25,carry5=%xmm2 +vpsrlq $25,%xmm10,%xmm2 + +# qhasm: 2x h6 += carry5 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#3 +# asm 2: vpsrlq $26,carry0=%xmm2 +vpsrlq $26,%xmm1,%xmm2 + +# qhasm: 2x h1 += carry0 +# asm 1: paddq f0=reg128#3 +# asm 2: vpunpckhqdq f0=%xmm2 +vpunpckhqdq %xmm3,%xmm1,%xmm2 + +# qhasm: h0 = unpack_low(h0, h1) +# asm 1: vpunpcklqdq h0=reg128#2 +# asm 2: vpunpcklqdq h0=%xmm1 +vpunpcklqdq %xmm3,%xmm1,%xmm1 + +# qhasm: t0_0 = h0 +# asm 1: movdqa t0_0=stack128#12 +# asm 2: movdqa t0_0=176(%rsp) +movdqa %xmm1,176(%rsp) + +# qhasm: 2x h1 = f0 + mem128[ subc0 ] +# asm 1: vpaddq subc0,h1=reg128#4 +# asm 2: vpaddq subc0,h1=%xmm3 +vpaddq subc0(%rip),%xmm2,%xmm3 + +# qhasm: 2x h1 -= h0 +# asm 1: psubq f1=reg128#2 +# asm 2: vpunpckhqdq f1=%xmm1 +vpunpckhqdq %xmm3,%xmm2,%xmm1 + +# qhasm: f0 = unpack_low(f0, h1) +# asm 1: vpunpcklqdq f0=reg128#3 +# asm 2: vpunpcklqdq f0=%xmm2 +vpunpcklqdq %xmm3,%xmm2,%xmm2 + +# qhasm: f0_stack = f0 +# asm 1: movdqa f0_stack=stack128#13 +# asm 2: movdqa f0_stack=192(%rsp) +movdqa %xmm2,192(%rsp) + +# qhasm: f1_stack = f1 +# asm 1: movdqa f1_stack=stack128#15 +# asm 2: movdqa f1_stack=224(%rsp) +movdqa %xmm1,224(%rsp) + +# qhasm: 2x f1 <<= 1 +# asm 1: psllq $1,f1_2_stack=stack128#16 +# asm 2: movdqa f1_2_stack=240(%rsp) +movdqa %xmm1,240(%rsp) + +# qhasm: 2x h1 *= mem128[ v121666_121666 ] +# asm 1: pmuludq v121666_121666,r=reg128#2 +# asm 2: movdqa r=%xmm1 +movdqa 80(%rsp),%xmm1 + +# qhasm: g0 = unpack_low(h1, r) +# asm 1: vpunpcklqdq g0=reg128#3 +# asm 2: vpunpcklqdq g0=%xmm2 +vpunpcklqdq %xmm1,%xmm3,%xmm2 + +# qhasm: g1 = unpack_high(h1, r) +# asm 1: vpunpckhqdq g1=reg128#2 +# asm 2: vpunpckhqdq g1=%xmm1 +vpunpckhqdq %xmm1,%xmm3,%xmm1 + +# qhasm: f2 = unpack_high(h2, h3) +# asm 1: vpunpckhqdq f2=reg128#4 +# asm 2: vpunpckhqdq f2=%xmm3 +vpunpckhqdq %xmm7,%xmm5,%xmm3 + +# qhasm: h2 = unpack_low(h2, h3) +# asm 1: vpunpcklqdq h2=reg128#5 +# asm 2: vpunpcklqdq h2=%xmm4 +vpunpcklqdq %xmm7,%xmm5,%xmm4 + +# qhasm: t0_2 = h2 +# asm 1: movdqa t0_2=stack128#17 +# asm 2: movdqa t0_2=256(%rsp) +movdqa %xmm4,256(%rsp) + +# qhasm: 2x h3 = f2 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h3=reg128#6 +# asm 2: vpaddq subc2,h3=%xmm5 +vpaddq subc2(%rip),%xmm3,%xmm5 + +# qhasm: 2x h3 -= h2 +# asm 1: psubq f3=reg128#5 +# asm 2: vpunpckhqdq f3=%xmm4 +vpunpckhqdq %xmm5,%xmm3,%xmm4 + +# qhasm: f2 = unpack_low(f2, h3) +# asm 1: vpunpcklqdq f2=reg128#4 +# asm 2: vpunpcklqdq f2=%xmm3 +vpunpcklqdq %xmm5,%xmm3,%xmm3 + +# qhasm: f2_stack = f2 +# asm 1: movdqa f2_stack=stack128#18 +# asm 2: movdqa f2_stack=272(%rsp) +movdqa %xmm3,272(%rsp) + +# qhasm: f3_stack = f3 +# asm 1: movdqa f3_stack=stack128#19 +# asm 2: movdqa f3_stack=288(%rsp) +movdqa %xmm4,288(%rsp) + +# qhasm: 2x f3 <<= 1 +# asm 1: psllq $1,f3_2_stack=stack128#20 +# asm 2: movdqa f3_2_stack=304(%rsp) +movdqa %xmm4,304(%rsp) + +# qhasm: 2x h3 *= mem128[ v121666_121666 ] +# asm 1: pmuludq v121666_121666,r=reg128#4 +# asm 2: movdqa r=%xmm3 +movdqa 96(%rsp),%xmm3 + +# qhasm: g2 = unpack_low(h3, r) +# asm 1: vpunpcklqdq g2=reg128#5 +# asm 2: vpunpcklqdq g2=%xmm4 +vpunpcklqdq %xmm3,%xmm5,%xmm4 + +# qhasm: g3 = unpack_high(h3, r) +# asm 1: vpunpckhqdq g3=reg128#4 +# asm 2: vpunpckhqdq g3=%xmm3 +vpunpckhqdq %xmm3,%xmm5,%xmm3 + +# qhasm: f4 = unpack_high(h4, h5) +# asm 1: vpunpckhqdq f4=reg128#6 +# asm 2: vpunpckhqdq f4=%xmm5 +vpunpckhqdq %xmm10,%xmm9,%xmm5 + +# qhasm: h4 = unpack_low(h4, h5) +# asm 1: vpunpcklqdq h4=reg128#7 +# asm 2: vpunpcklqdq h4=%xmm6 +vpunpcklqdq %xmm10,%xmm9,%xmm6 + +# qhasm: t0_4 = h4 +# asm 1: movdqa t0_4=stack128#21 +# asm 2: movdqa t0_4=320(%rsp) +movdqa %xmm6,320(%rsp) + +# qhasm: 2x h5 = f4 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h5=reg128#8 +# asm 2: vpaddq subc2,h5=%xmm7 +vpaddq subc2(%rip),%xmm5,%xmm7 + +# qhasm: 2x h5 -= h4 +# asm 1: psubq f5=reg128#7 +# asm 2: vpunpckhqdq f5=%xmm6 +vpunpckhqdq %xmm7,%xmm5,%xmm6 + +# qhasm: f4 = unpack_low(f4, h5) +# asm 1: vpunpcklqdq f4=reg128#6 +# asm 2: vpunpcklqdq f4=%xmm5 +vpunpcklqdq %xmm7,%xmm5,%xmm5 + +# qhasm: f4_stack = f4 +# asm 1: movdqa f4_stack=stack128#22 +# asm 2: movdqa f4_stack=336(%rsp) +movdqa %xmm5,336(%rsp) + +# qhasm: f5_stack = f5 +# asm 1: movdqa f5_stack=stack128#23 +# asm 2: movdqa f5_stack=352(%rsp) +movdqa %xmm6,352(%rsp) + +# qhasm: 2x f5 <<= 1 +# asm 1: psllq $1,f5_2_stack=stack128#24 +# asm 2: movdqa f5_2_stack=368(%rsp) +movdqa %xmm6,368(%rsp) + +# qhasm: 2x h5 *= mem128[ v121666_121666 ] +# asm 1: pmuludq v121666_121666,r=reg128#6 +# asm 2: movdqa r=%xmm5 +movdqa 112(%rsp),%xmm5 + +# qhasm: g4 = unpack_low(h5, r) +# asm 1: vpunpcklqdq g4=reg128#7 +# asm 2: vpunpcklqdq g4=%xmm6 +vpunpcklqdq %xmm5,%xmm7,%xmm6 + +# qhasm: g5 = unpack_high(h5, r) +# asm 1: vpunpckhqdq g5=reg128#6 +# asm 2: vpunpckhqdq g5=%xmm5 +vpunpckhqdq %xmm5,%xmm7,%xmm5 + +# qhasm: f6 = unpack_high(h6, h7) +# asm 1: vpunpckhqdq f6=reg128#8 +# asm 2: vpunpckhqdq f6=%xmm7 +vpunpckhqdq %xmm12,%xmm11,%xmm7 + +# qhasm: h6 = unpack_low(h6, h7) +# asm 1: vpunpcklqdq h6=reg128#9 +# asm 2: vpunpcklqdq h6=%xmm8 +vpunpcklqdq %xmm12,%xmm11,%xmm8 + +# qhasm: t0_6 = h6 +# asm 1: movdqa t0_6=stack128#25 +# asm 2: movdqa t0_6=384(%rsp) +movdqa %xmm8,384(%rsp) + +# qhasm: 2x h7 = f6 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h7=reg128#10 +# asm 2: vpaddq subc2,h7=%xmm9 +vpaddq subc2(%rip),%xmm7,%xmm9 + +# qhasm: 2x h7 -= h6 +# asm 1: psubq f7=reg128#9 +# asm 2: vpunpckhqdq f7=%xmm8 +vpunpckhqdq %xmm9,%xmm7,%xmm8 + +# qhasm: f6 = unpack_low(f6, h7) +# asm 1: vpunpcklqdq f6=reg128#8 +# asm 2: vpunpcklqdq f6=%xmm7 +vpunpcklqdq %xmm9,%xmm7,%xmm7 + +# qhasm: f6_stack = f6 +# asm 1: movdqa f6_stack=stack128#26 +# asm 2: movdqa f6_stack=400(%rsp) +movdqa %xmm7,400(%rsp) + +# qhasm: f7_stack = f7 +# asm 1: movdqa f7_stack=stack128#27 +# asm 2: movdqa f7_stack=416(%rsp) +movdqa %xmm8,416(%rsp) + +# qhasm: 2x f7 <<= 1 +# asm 1: psllq $1,f7_2_stack=stack128#28 +# asm 2: movdqa f7_2_stack=432(%rsp) +movdqa %xmm8,432(%rsp) + +# qhasm: 2x h7 *= mem128[ v121666_121666 ] +# asm 1: pmuludq v121666_121666,r=reg128#8 +# asm 2: movdqa r=%xmm7 +movdqa 160(%rsp),%xmm7 + +# qhasm: g6 = unpack_low(h7, r) +# asm 1: vpunpcklqdq g6=reg128#9 +# asm 2: vpunpcklqdq g6=%xmm8 +vpunpcklqdq %xmm7,%xmm9,%xmm8 + +# qhasm: g7 = unpack_high(h7, r) +# asm 1: vpunpckhqdq g7=reg128#8 +# asm 2: vpunpckhqdq g7=%xmm7 +vpunpckhqdq %xmm7,%xmm9,%xmm7 + +# qhasm: f8 = unpack_high(h8, h9) +# asm 1: vpunpckhqdq f8=reg128#10 +# asm 2: vpunpckhqdq f8=%xmm9 +vpunpckhqdq %xmm0,%xmm13,%xmm9 + +# qhasm: h8 = unpack_low(h8, h9) +# asm 1: vpunpcklqdq h8=reg128#1 +# asm 2: vpunpcklqdq h8=%xmm0 +vpunpcklqdq %xmm0,%xmm13,%xmm0 + +# qhasm: t0_8 = h8 +# asm 1: movdqa t0_8=stack128#11 +# asm 2: movdqa t0_8=160(%rsp) +movdqa %xmm0,160(%rsp) + +# qhasm: 2x h9 = f8 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h9=reg128#11 +# asm 2: vpaddq subc2,h9=%xmm10 +vpaddq subc2(%rip),%xmm9,%xmm10 + +# qhasm: 2x h9 -= h8 +# asm 1: psubq f9=reg128#1 +# asm 2: vpunpckhqdq f9=%xmm0 +vpunpckhqdq %xmm10,%xmm9,%xmm0 + +# qhasm: f8 = unpack_low(f8, h9) +# asm 1: vpunpcklqdq f8=reg128#10 +# asm 2: vpunpcklqdq f8=%xmm9 +vpunpcklqdq %xmm10,%xmm9,%xmm9 + +# qhasm: f8_stack = f8 +# asm 1: movdqa f8_stack=stack128#29 +# asm 2: movdqa f8_stack=448(%rsp) +movdqa %xmm9,448(%rsp) + +# qhasm: f9_stack = f9 +# asm 1: movdqa f9_stack=stack128#30 +# asm 2: movdqa f9_stack=464(%rsp) +movdqa %xmm0,464(%rsp) + +# qhasm: 2x f9 <<= 1 +# asm 1: psllq $1,f9_2_stack=stack128#31 +# asm 2: movdqa f9_2_stack=480(%rsp) +movdqa %xmm0,480(%rsp) + +# qhasm: 2x h9 *= mem128[ v121666_121666 ] +# asm 1: pmuludq v121666_121666,r=reg128#1 +# asm 2: movdqa r=%xmm0 +movdqa 208(%rsp),%xmm0 + +# qhasm: g8 = unpack_low(h9, r) +# asm 1: vpunpcklqdq g8=reg128#10 +# asm 2: vpunpcklqdq g8=%xmm9 +vpunpcklqdq %xmm0,%xmm10,%xmm9 + +# qhasm: g9 = unpack_high(h9, r) +# asm 1: vpunpckhqdq g9=reg128#1 +# asm 2: vpunpckhqdq g9=%xmm0 +vpunpckhqdq %xmm0,%xmm10,%xmm0 + +# qhasm: 2x carry0 = g0 unsigned>>= 26 +# asm 1: vpsrlq $26,carry0=reg128#11 +# asm 2: vpsrlq $26,carry0=%xmm10 +vpsrlq $26,%xmm2,%xmm10 + +# qhasm: 2x g1 += carry0 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#11 +# asm 2: vpsrlq $25,carry5=%xmm10 +vpsrlq $25,%xmm5,%xmm10 + +# qhasm: 2x g6 += carry5 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry1=reg128#11 +# asm 2: vpsrlq $25,carry1=%xmm10 +vpsrlq $25,%xmm1,%xmm10 + +# qhasm: 2x g2 += carry1 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry6=reg128#11 +# asm 2: vpsrlq $26,carry6=%xmm10 +vpsrlq $26,%xmm8,%xmm10 + +# qhasm: 2x g7 += carry6 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry2=reg128#11 +# asm 2: vpsrlq $26,carry2=%xmm10 +vpsrlq $26,%xmm4,%xmm10 + +# qhasm: 2x g3 += carry2 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry7=reg128#11 +# asm 2: vpsrlq $25,carry7=%xmm10 +vpsrlq $25,%xmm7,%xmm10 + +# qhasm: 2x g8 += carry7 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry3=reg128#11 +# asm 2: vpsrlq $25,carry3=%xmm10 +vpsrlq $25,%xmm3,%xmm10 + +# qhasm: 2x g4 += carry3 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry8=reg128#11 +# asm 2: vpsrlq $26,carry8=%xmm10 +vpsrlq $26,%xmm9,%xmm10 + +# qhasm: 2x g9 += carry8 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry4=reg128#11 +# asm 2: vpsrlq $26,carry4=%xmm10 +vpsrlq $26,%xmm6,%xmm10 + +# qhasm: 2x g5 += carry4 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry9=reg128#11 +# asm 2: vpsrlq $25,carry9=%xmm10 +vpsrlq $25,%xmm0,%xmm10 + +# qhasm: 2x r0 = carry9 << 4 +# asm 1: vpsllq $4,r0=reg128#12 +# asm 2: vpsllq $4,r0=%xmm11 +vpsllq $4,%xmm10,%xmm11 + +# qhasm: 2x g0 += carry9 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#11 +# asm 2: vpsrlq $25,carry5=%xmm10 +vpsrlq $25,%xmm5,%xmm10 + +# qhasm: 2x g6 += carry5 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#11 +# asm 2: vpsrlq $26,carry0=%xmm10 +vpsrlq $26,%xmm2,%xmm10 + +# qhasm: 2x g1 += carry0 +# asm 1: paddq r=reg128#11 +# asm 2: vpunpckhqdq r=%xmm10 +vpunpckhqdq %xmm1,%xmm2,%xmm10 + +# qhasm: z3_0 = r +# asm 1: movdqa z3_0=stack128#6 +# asm 2: movdqa z3_0=80(%rsp) +movdqa %xmm10,80(%rsp) + +# qhasm: h1 = unpack_low(g0, g1) +# asm 1: vpunpcklqdq h1=reg128#2 +# asm 2: vpunpcklqdq h1=%xmm1 +vpunpcklqdq %xmm1,%xmm2,%xmm1 + +# qhasm: r = unpack_high(g2, g3) +# asm 1: vpunpckhqdq r=reg128#3 +# asm 2: vpunpckhqdq r=%xmm2 +vpunpckhqdq %xmm3,%xmm4,%xmm2 + +# qhasm: z3_2 = r +# asm 1: movdqa z3_2=stack128#7 +# asm 2: movdqa z3_2=96(%rsp) +movdqa %xmm2,96(%rsp) + +# qhasm: h3 = unpack_low(g2, g3) +# asm 1: vpunpcklqdq h3=reg128#3 +# asm 2: vpunpcklqdq h3=%xmm2 +vpunpcklqdq %xmm3,%xmm4,%xmm2 + +# qhasm: r = unpack_high(g4, g5) +# asm 1: vpunpckhqdq r=reg128#4 +# asm 2: vpunpckhqdq r=%xmm3 +vpunpckhqdq %xmm5,%xmm6,%xmm3 + +# qhasm: z3_4 = r +# asm 1: movdqa z3_4=stack128#8 +# asm 2: movdqa z3_4=112(%rsp) +movdqa %xmm3,112(%rsp) + +# qhasm: h5 = unpack_low(g4, g5) +# asm 1: vpunpcklqdq h5=reg128#4 +# asm 2: vpunpcklqdq h5=%xmm3 +vpunpcklqdq %xmm5,%xmm6,%xmm3 + +# qhasm: r = unpack_high(g6, g7) +# asm 1: vpunpckhqdq r=reg128#5 +# asm 2: vpunpckhqdq r=%xmm4 +vpunpckhqdq %xmm7,%xmm8,%xmm4 + +# qhasm: z3_6 = r +# asm 1: movdqa z3_6=stack128#9 +# asm 2: movdqa z3_6=128(%rsp) +movdqa %xmm4,128(%rsp) + +# qhasm: h7 = unpack_low(g6, g7) +# asm 1: vpunpcklqdq h7=reg128#5 +# asm 2: vpunpcklqdq h7=%xmm4 +vpunpcklqdq %xmm7,%xmm8,%xmm4 + +# qhasm: r = unpack_high(g8, g9) +# asm 1: vpunpckhqdq r=reg128#6 +# asm 2: vpunpckhqdq r=%xmm5 +vpunpckhqdq %xmm0,%xmm9,%xmm5 + +# qhasm: z3_8 = r +# asm 1: movdqa z3_8=stack128#10 +# asm 2: movdqa z3_8=144(%rsp) +movdqa %xmm5,144(%rsp) + +# qhasm: h9 = unpack_low(g8, g9) +# asm 1: vpunpcklqdq h9=reg128#1 +# asm 2: vpunpcklqdq h9=%xmm0 +vpunpcklqdq %xmm0,%xmm9,%xmm0 + +# qhasm: h0 = t0_0 +# asm 1: movdqa h0=reg128#6 +# asm 2: movdqa h0=%xmm5 +movdqa 176(%rsp),%xmm5 + +# qhasm: 2x h1 += h0 +# asm 1: paddq g0=reg128#7 +# asm 2: vpunpcklqdq g0=%xmm6 +vpunpcklqdq %xmm1,%xmm5,%xmm6 + +# qhasm: g1 = unpack_high(h0, h1) +# asm 1: vpunpckhqdq g1=reg128#2 +# asm 2: vpunpckhqdq g1=%xmm1 +vpunpckhqdq %xmm1,%xmm5,%xmm1 + +# qhasm: 2x m1 = g0 * f1_stack +# asm 1: vpmuludq m1=reg128#6 +# asm 2: vpmuludq m1=%xmm5 +vpmuludq 224(%rsp),%xmm6,%xmm5 + +# qhasm: 2x r = g1 * f0_stack +# asm 1: vpmuludq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 192(%rsp),%xmm1,%xmm7 + +# qhasm: 2x m1 += r +# asm 1: paddq m2=reg128#8 +# asm 2: vpmuludq m2=%xmm7 +vpmuludq 272(%rsp),%xmm6,%xmm7 + +# qhasm: 2x r = g1 * f1_2_stack +# asm 1: vpmuludq r=reg128#9 +# asm 2: vpmuludq r=%xmm8 +vpmuludq 240(%rsp),%xmm1,%xmm8 + +# qhasm: 2x m2 += r +# asm 1: paddq m3=reg128#9 +# asm 2: vpmuludq m3=%xmm8 +vpmuludq 288(%rsp),%xmm6,%xmm8 + +# qhasm: 2x r = g1 * f2_stack +# asm 1: vpmuludq r=reg128#10 +# asm 2: vpmuludq r=%xmm9 +vpmuludq 272(%rsp),%xmm1,%xmm9 + +# qhasm: 2x m3 += r +# asm 1: paddq m4=reg128#10 +# asm 2: vpmuludq m4=%xmm9 +vpmuludq 336(%rsp),%xmm6,%xmm9 + +# qhasm: 2x r = g1 * f3_2_stack +# asm 1: vpmuludq r=reg128#11 +# asm 2: vpmuludq r=%xmm10 +vpmuludq 304(%rsp),%xmm1,%xmm10 + +# qhasm: 2x m4 += r +# asm 1: paddq m5=reg128#11 +# asm 2: vpmuludq m5=%xmm10 +vpmuludq 352(%rsp),%xmm6,%xmm10 + +# qhasm: 2x r = g1 * f4_stack +# asm 1: vpmuludq r=reg128#12 +# asm 2: vpmuludq r=%xmm11 +vpmuludq 336(%rsp),%xmm1,%xmm11 + +# qhasm: 2x m5 += r +# asm 1: paddq m6=reg128#12 +# asm 2: vpmuludq m6=%xmm11 +vpmuludq 400(%rsp),%xmm6,%xmm11 + +# qhasm: 2x r = g1 * f5_2_stack +# asm 1: vpmuludq r=reg128#13 +# asm 2: vpmuludq r=%xmm12 +vpmuludq 368(%rsp),%xmm1,%xmm12 + +# qhasm: 2x m6 += r +# asm 1: paddq m7=reg128#13 +# asm 2: vpmuludq m7=%xmm12 +vpmuludq 416(%rsp),%xmm6,%xmm12 + +# qhasm: 2x r = g1 * f6_stack +# asm 1: vpmuludq r=reg128#14 +# asm 2: vpmuludq r=%xmm13 +vpmuludq 400(%rsp),%xmm1,%xmm13 + +# qhasm: 2x m7 += r +# asm 1: paddq m8=reg128#14 +# asm 2: vpmuludq m8=%xmm13 +vpmuludq 448(%rsp),%xmm6,%xmm13 + +# qhasm: 2x r = g1 * f7_2_stack +# asm 1: vpmuludq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq 432(%rsp),%xmm1,%xmm14 + +# qhasm: 2x m8 += r +# asm 1: paddq m9=reg128#15 +# asm 2: vpmuludq m9=%xmm14 +vpmuludq 464(%rsp),%xmm6,%xmm14 + +# qhasm: 2x r = g1 * f8_stack +# asm 1: vpmuludq r=reg128#16 +# asm 2: vpmuludq r=%xmm15 +vpmuludq 448(%rsp),%xmm1,%xmm15 + +# qhasm: 2x m9 += r +# asm 1: paddq m0=reg128#7 +# asm 2: vpmuludq m0=%xmm6 +vpmuludq 192(%rsp),%xmm6,%xmm6 + +# qhasm: 2x g1 *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,r=reg128#2 +# asm 2: vpmuludq r=%xmm1 +vpmuludq 480(%rsp),%xmm1,%xmm1 + +# qhasm: 2x m0 += r +# asm 1: paddq h2=reg128#2 +# asm 2: movdqa h2=%xmm1 +movdqa 256(%rsp),%xmm1 + +# qhasm: 2x h3 += h2 +# asm 1: paddq g2=reg128#16 +# asm 2: vpunpcklqdq g2=%xmm15 +vpunpcklqdq %xmm2,%xmm1,%xmm15 + +# qhasm: g3 = unpack_high(h2, h3) +# asm 1: vpunpckhqdq g3=reg128#2 +# asm 2: vpunpckhqdq g3=%xmm1 +vpunpckhqdq %xmm2,%xmm1,%xmm1 + +# qhasm: 2x r2 = g2 * f0_stack +# asm 1: vpmuludq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 192(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m2 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 224(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m3 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 272(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m4 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 288(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m5 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 336(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m6 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 352(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m7 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 400(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m8 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 416(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m9 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 448(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m0 += r2 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 192(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m3 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 240(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m4 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 272(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m5 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 304(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m6 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 336(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m7 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 368(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m8 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 400(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m9 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 432(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m0 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 448(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m1 += r3 +# asm 1: paddq h4=reg128#2 +# asm 2: movdqa h4=%xmm1 +movdqa 320(%rsp),%xmm1 + +# qhasm: 2x h5 += h4 +# asm 1: paddq g4=reg128#3 +# asm 2: vpunpcklqdq g4=%xmm2 +vpunpcklqdq %xmm3,%xmm1,%xmm2 + +# qhasm: g5 = unpack_high(h4, h5) +# asm 1: vpunpckhqdq g5=reg128#2 +# asm 2: vpunpckhqdq g5=%xmm1 +vpunpckhqdq %xmm3,%xmm1,%xmm1 + +# qhasm: 2x r4 = g4 * f0_stack +# asm 1: vpmuludq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 192(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m4 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 224(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m5 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 272(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m6 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 288(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m7 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 336(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m8 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 352(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m9 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 400(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m0 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 416(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m1 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 448(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m2 += r4 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 192(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m5 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 240(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m6 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 272(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m7 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 304(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m8 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 336(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m9 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 368(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m0 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 400(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m1 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 432(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m2 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 448(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m3 += r5 +# asm 1: paddq h6=reg128#2 +# asm 2: movdqa h6=%xmm1 +movdqa 384(%rsp),%xmm1 + +# qhasm: 2x h7 += h6 +# asm 1: paddq g6=reg128#3 +# asm 2: vpunpcklqdq g6=%xmm2 +vpunpcklqdq %xmm4,%xmm1,%xmm2 + +# qhasm: g7 = unpack_high(h6, h7) +# asm 1: vpunpckhqdq g7=reg128#2 +# asm 2: vpunpckhqdq g7=%xmm1 +vpunpckhqdq %xmm4,%xmm1,%xmm1 + +# qhasm: 2x r6 = g6 * f0_stack +# asm 1: vpmuludq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 192(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m6 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 224(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m7 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 272(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m8 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 288(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m9 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 336(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m0 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 352(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m1 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 400(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m2 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 416(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m3 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 448(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m4 += r6 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 192(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m7 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 240(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m8 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 272(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m9 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 304(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m0 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 336(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m1 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 368(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m2 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 400(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m3 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 432(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m4 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 448(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m5 += r7 +# asm 1: paddq h8=reg128#2 +# asm 2: movdqa h8=%xmm1 +movdqa 160(%rsp),%xmm1 + +# qhasm: 2x h9 += h8 +# asm 1: paddq g8=reg128#3 +# asm 2: vpunpcklqdq g8=%xmm2 +vpunpcklqdq %xmm0,%xmm1,%xmm2 + +# qhasm: g9 = unpack_high(h8, h9) +# asm 1: vpunpckhqdq g9=reg128#1 +# asm 2: vpunpckhqdq g9=%xmm0 +vpunpckhqdq %xmm0,%xmm1,%xmm0 + +# qhasm: 2x r8 = g8 * f0_stack +# asm 1: vpmuludq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 192(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m8 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 224(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m9 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 272(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m0 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 288(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m1 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 336(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m2 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 352(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m3 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 400(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m4 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 416(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m5 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 448(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m6 += r8 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 192(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m9 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 240(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m0 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 272(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m1 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 304(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m2 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 336(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m3 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 368(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m4 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 400(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m5 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 432(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m6 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 448(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m7 += r9 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#1 +# asm 2: vpsrlq $26,carry0=%xmm0 +vpsrlq $26,%xmm6,%xmm0 + +# qhasm: 2x m1 += carry0 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#1 +# asm 2: vpsrlq $25,carry5=%xmm0 +vpsrlq $25,%xmm10,%xmm0 + +# qhasm: 2x m6 += carry5 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry1=reg128#1 +# asm 2: vpsrlq $25,carry1=%xmm0 +vpsrlq $25,%xmm5,%xmm0 + +# qhasm: 2x m2 += carry1 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry6=reg128#1 +# asm 2: vpsrlq $26,carry6=%xmm0 +vpsrlq $26,%xmm11,%xmm0 + +# qhasm: 2x m7 += carry6 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry2=reg128#1 +# asm 2: vpsrlq $26,carry2=%xmm0 +vpsrlq $26,%xmm7,%xmm0 + +# qhasm: 2x m3 += carry2 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry7=reg128#1 +# asm 2: vpsrlq $25,carry7=%xmm0 +vpsrlq $25,%xmm12,%xmm0 + +# qhasm: 2x m8 += carry7 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry3=reg128#1 +# asm 2: vpsrlq $25,carry3=%xmm0 +vpsrlq $25,%xmm8,%xmm0 + +# qhasm: 2x m4 += carry3 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry8=reg128#1 +# asm 2: vpsrlq $26,carry8=%xmm0 +vpsrlq $26,%xmm13,%xmm0 + +# qhasm: 2x m9 += carry8 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry4=reg128#1 +# asm 2: vpsrlq $26,carry4=%xmm0 +vpsrlq $26,%xmm9,%xmm0 + +# qhasm: 2x m5 += carry4 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry9=reg128#1 +# asm 2: vpsrlq $25,carry9=%xmm0 +vpsrlq $25,%xmm14,%xmm0 + +# qhasm: 2x r0 = carry9 << 4 +# asm 1: vpsllq $4,r0=reg128#2 +# asm 2: vpsllq $4,r0=%xmm1 +vpsllq $4,%xmm0,%xmm1 + +# qhasm: 2x m0 += carry9 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#1 +# asm 2: vpsrlq $25,carry5=%xmm0 +vpsrlq $25,%xmm10,%xmm0 + +# qhasm: 2x m6 += carry5 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#1 +# asm 2: vpsrlq $26,carry0=%xmm0 +vpsrlq $26,%xmm6,%xmm0 + +# qhasm: 2x m1 += carry0 +# asm 1: paddq f1=reg128#2 +# asm 2: vpunpckhqdq f1=%xmm1 +vpunpckhqdq %xmm5,%xmm6,%xmm1 + +# qhasm: f0 = unpack_low( m0, m1 ) +# asm 1: vpunpcklqdq f0=reg128#1 +# asm 2: vpunpcklqdq f0=%xmm0 +vpunpcklqdq %xmm5,%xmm6,%xmm0 + +# qhasm: f3 = unpack_high( m2, m3 ) +# asm 1: vpunpckhqdq f3=reg128#4 +# asm 2: vpunpckhqdq f3=%xmm3 +vpunpckhqdq %xmm8,%xmm7,%xmm3 + +# qhasm: f2 = unpack_low( m2, m3 ) +# asm 1: vpunpcklqdq f2=reg128#3 +# asm 2: vpunpcklqdq f2=%xmm2 +vpunpcklqdq %xmm8,%xmm7,%xmm2 + +# qhasm: f5 = unpack_high( m4, m5 ) +# asm 1: vpunpckhqdq f5=reg128#6 +# asm 2: vpunpckhqdq f5=%xmm5 +vpunpckhqdq %xmm10,%xmm9,%xmm5 + +# qhasm: f4 = unpack_low( m4, m5 ) +# asm 1: vpunpcklqdq f4=reg128#5 +# asm 2: vpunpcklqdq f4=%xmm4 +vpunpcklqdq %xmm10,%xmm9,%xmm4 + +# qhasm: f7 = unpack_high( m6, m7 ) +# asm 1: vpunpckhqdq f7=reg128#8 +# asm 2: vpunpckhqdq f7=%xmm7 +vpunpckhqdq %xmm12,%xmm11,%xmm7 + +# qhasm: f6 = unpack_low( m6, m7 ) +# asm 1: vpunpcklqdq f6=reg128#7 +# asm 2: vpunpcklqdq f6=%xmm6 +vpunpcklqdq %xmm12,%xmm11,%xmm6 + +# qhasm: f9 = unpack_high( m8, m9 ) +# asm 1: vpunpckhqdq f9=reg128#10 +# asm 2: vpunpckhqdq f9=%xmm9 +vpunpckhqdq %xmm14,%xmm13,%xmm9 + +# qhasm: f8 = unpack_low( m8, m9 ) +# asm 1: vpunpcklqdq f8=reg128#9 +# asm 2: vpunpcklqdq f8=%xmm8 +vpunpcklqdq %xmm14,%xmm13,%xmm8 + +# qhasm: =? pos - 0 +# asm 1: cmp $0,caller_r11=int64#9 +# asm 2: movq caller_r11=%r11 +movq 1536(%rsp),%r11 + +# qhasm: caller_r12 = r12_stack +# asm 1: movq caller_r12=int64#10 +# asm 2: movq caller_r12=%r12 +movq 1544(%rsp),%r12 + +# qhasm: caller_r13 = r13_stack +# asm 1: movq caller_r13=int64#11 +# asm 2: movq caller_r13=%r13 +movq 1552(%rsp),%r13 + +# qhasm: return +add %r11,%rsp +ret diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/ladder_base.h b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/ladder_base.h new file mode 100644 index 0000000000..1d6a84c1c7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/ladder_base.h @@ -0,0 +1,10 @@ +#ifndef LADDER_BASE_H +#define LADDER_BASE_H + +#include "fe.h" +#include "ladder_base_namespace.h" + +extern void ladder_base(fe *, const unsigned char *); + +#endif //ifndef LADDER_BASE_H + diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/ladder_base_namespace.h b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/ladder_base_namespace.h new file mode 100644 index 0000000000..eb1961912b --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/ladder_base_namespace.h @@ -0,0 +1,8 @@ +#ifndef LADDER_BASE_NAMESPACE_H +#define LADDER_BASE_NAMESPACE_H + +#define ladder_base CRYPTO_SHARED_NAMESPACE(ladder_base) +#define _ladder_base _CRYPTO_SHARED_NAMESPACE(ladder_base) + +#endif //ifndef LADDER_BASE_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/shared-consts.c b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/shared-consts.c new file mode 100644 index 0000000000..0582a7e0d5 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/sandy2x/shared-consts.c @@ -0,0 +1,42 @@ +// linker define v0_0 +// linker define v1_0 +// linker define v2_1 +// linker define v2_2 +// linker define v9_0 +// linker define v9_9 +// linker define v19_19 +// linker define v38_1 +// linker define v38_19 +// linker define v38_38 +// linker define v121666_121666 +// linker define m25 +// linker define m26 +// linker define subc0 +// linker define subc2 +// linker define REDMASK51 + +/* + REDMASK51 is from amd64-51/consts.s. +*/ + +#include "consts_namespace.h" +#include "crypto_uint64.h" + +const crypto_uint64 v0_0[] = { 0, 0 }; +const crypto_uint64 v1_0[] = { 1, 0 }; +const crypto_uint64 v2_1[] = { 2, 1 }; +const crypto_uint64 v2_2[] = { 2, 2 }; +const crypto_uint64 v9_0[] = { 9, 0 }; +const crypto_uint64 v9_9[] = { 9, 9 }; +const crypto_uint64 v19_19[] = { 19, 19 }; +const crypto_uint64 v38_1[] = { 38, 1 }; +const crypto_uint64 v38_19[] = { 38, 19 }; +const crypto_uint64 v38_38[] = { 38, 38 }; +const crypto_uint64 v121666_121666[] = { 121666, 121666 }; +const crypto_uint64 m25[] = { 33554431, 33554431 }; +const crypto_uint64 m26[] = { 67108863, 67108863 }; + +const crypto_uint64 subc0[] = { 0x07FFFFDA, 0x03FFFFFE }; +const crypto_uint64 subc2[] = { 0x07FFFFFE, 0x03FFFFFE }; + +const crypto_uint64 REDMASK51[] = { 0x0007FFFFFFFFFFFF }; diff --git a/lib-25519/lib25519/crypto_nG/montgomery25519/usemerged/base.c b/lib-25519/lib25519/crypto_nG/montgomery25519/usemerged/base.c new file mode 100644 index 0000000000..401842e274 --- /dev/null +++ b/lib-25519/lib25519/crypto_nG/montgomery25519/usemerged/base.c @@ -0,0 +1,13 @@ +#include "crypto_nG_merged25519.h" +#include "crypto_nG.h" + +void crypto_nG(unsigned char *nG,const unsigned char *n) +{ + unsigned char e[32]; + for (int i = 0;i < 32;++i) e[i] = n[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 192; + crypto_nG_merged25519(nG,e); +} + diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/architectures new file mode 120000 index 0000000000..f92e7d6fe1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/architectures @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519.h new file mode 120000 index 0000000000..50274671b7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519.h @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-51/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_freeze.S new file mode 120000 index 0000000000..fd20322b9e --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_mul.S new file mode 120000 index 0000000000..2126ab3394 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_pack.c new file mode 120000 index 0000000000..fe8ef76603 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_setint.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_setint.c new file mode 120000 index 0000000000..866d1c9abd --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_setint.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_setint.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_square.S new file mode 120000 index 0000000000..89efb949d4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_unpack.c new file mode 120000 index 0000000000..15a19f6e1d --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/implementors new file mode 120000 index 0000000000..3535539aea --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/implementors @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/ladderstep.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/ladderstep.S new file mode 100644 index 0000000000..bded579bec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/ladderstep.S @@ -0,0 +1,7200 @@ +// linker define ladderstep +// linker use REDMASK51 +// linker use 2P0 +// linker use 2P1234 +// linker use 121666_213 + +# qhasm: int64 workp + +# qhasm: input workp + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 t10 + +# qhasm: int64 t11 + +# qhasm: int64 t12 + +# qhasm: int64 t13 + +# qhasm: int64 t14 + +# qhasm: stack64 t10_stack + +# qhasm: stack64 t11_stack + +# qhasm: stack64 t12_stack + +# qhasm: stack64 t13_stack + +# qhasm: stack64 t14_stack + +# qhasm: int64 t20 + +# qhasm: int64 t21 + +# qhasm: int64 t22 + +# qhasm: int64 t23 + +# qhasm: int64 t24 + +# qhasm: stack64 t20_stack + +# qhasm: stack64 t21_stack + +# qhasm: stack64 t22_stack + +# qhasm: stack64 t23_stack + +# qhasm: stack64 t24_stack + +# qhasm: int64 t30 + +# qhasm: int64 t31 + +# qhasm: int64 t32 + +# qhasm: int64 t33 + +# qhasm: int64 t34 + +# qhasm: stack64 t30_stack + +# qhasm: stack64 t31_stack + +# qhasm: stack64 t32_stack + +# qhasm: stack64 t33_stack + +# qhasm: stack64 t34_stack + +# qhasm: int64 t40 + +# qhasm: int64 t41 + +# qhasm: int64 t42 + +# qhasm: int64 t43 + +# qhasm: int64 t44 + +# qhasm: stack64 t40_stack + +# qhasm: stack64 t41_stack + +# qhasm: stack64 t42_stack + +# qhasm: stack64 t43_stack + +# qhasm: stack64 t44_stack + +# qhasm: int64 t50 + +# qhasm: int64 t51 + +# qhasm: int64 t52 + +# qhasm: int64 t53 + +# qhasm: int64 t54 + +# qhasm: stack64 t50_stack + +# qhasm: stack64 t51_stack + +# qhasm: stack64 t52_stack + +# qhasm: stack64 t53_stack + +# qhasm: stack64 t54_stack + +# qhasm: int64 t60 + +# qhasm: int64 t61 + +# qhasm: int64 t62 + +# qhasm: int64 t63 + +# qhasm: int64 t64 + +# qhasm: stack64 t60_stack + +# qhasm: stack64 t61_stack + +# qhasm: stack64 t62_stack + +# qhasm: stack64 t63_stack + +# qhasm: stack64 t64_stack + +# qhasm: int64 t70 + +# qhasm: int64 t71 + +# qhasm: int64 t72 + +# qhasm: int64 t73 + +# qhasm: int64 t74 + +# qhasm: stack64 t70_stack + +# qhasm: stack64 t71_stack + +# qhasm: stack64 t72_stack + +# qhasm: stack64 t73_stack + +# qhasm: stack64 t74_stack + +# qhasm: int64 t80 + +# qhasm: int64 t81 + +# qhasm: int64 t82 + +# qhasm: int64 t83 + +# qhasm: int64 t84 + +# qhasm: stack64 t80_stack + +# qhasm: stack64 t81_stack + +# qhasm: stack64 t82_stack + +# qhasm: stack64 t83_stack + +# qhasm: stack64 t84_stack + +# qhasm: int64 t90 + +# qhasm: int64 t91 + +# qhasm: int64 t92 + +# qhasm: int64 t93 + +# qhasm: int64 t94 + +# qhasm: stack64 t90_stack + +# qhasm: stack64 t91_stack + +# qhasm: stack64 t92_stack + +# qhasm: stack64 t93_stack + +# qhasm: stack64 t94_stack + +# qhasm: int64 xp0 + +# qhasm: int64 xp1 + +# qhasm: int64 xp2 + +# qhasm: int64 xp3 + +# qhasm: int64 xp4 + +# qhasm: int64 zp0 + +# qhasm: int64 zp1 + +# qhasm: int64 zp2 + +# qhasm: int64 zp3 + +# qhasm: int64 zp4 + +# qhasm: int64 xq0 + +# qhasm: int64 xq1 + +# qhasm: int64 xq2 + +# qhasm: int64 xq3 + +# qhasm: int64 xq4 + +# qhasm: int64 zq0 + +# qhasm: int64 zq1 + +# qhasm: int64 zq2 + +# qhasm: int64 zq3 + +# qhasm: int64 zq4 + +# qhasm: int64 mulr01 + +# qhasm: int64 mulr11 + +# qhasm: int64 mulr21 + +# qhasm: int64 mulr31 + +# qhasm: int64 mulr41 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mult + +# qhasm: int64 mulredmask + +# qhasm: stack64 mulx219_stack + +# qhasm: stack64 mulx319_stack + +# qhasm: stack64 mulx419_stack + +# qhasm: int64 squarer01 + +# qhasm: int64 squarer11 + +# qhasm: int64 squarer21 + +# qhasm: int64 squarer31 + +# qhasm: int64 squarer41 + +# qhasm: int64 squarerax + +# qhasm: int64 squarerdx + +# qhasm: int64 squaret + +# qhasm: int64 squareredmask + +# qhasm: int64 mul121666rax + +# qhasm: int64 mul121666rdx + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ladderstep) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ladderstep) +.globl CRYPTO_SHARED_NAMESPACE(ladderstep) +_CRYPTO_SHARED_NAMESPACE(ladderstep): +CRYPTO_SHARED_NAMESPACE(ladderstep): +mov %rsp,%r11 +and $31,%r11 +add $352,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: t10 = *(uint64 *)(workp + 40) +# asm 1: movq 40(t10=int64#2 +# asm 2: movq 40(t10=%rsi +movq 40(%rdi),%rsi + +# qhasm: t11 = *(uint64 *)(workp + 48) +# asm 1: movq 48(t11=int64#3 +# asm 2: movq 48(t11=%rdx +movq 48(%rdi),%rdx + +# qhasm: t12 = *(uint64 *)(workp + 56) +# asm 1: movq 56(t12=int64#4 +# asm 2: movq 56(t12=%rcx +movq 56(%rdi),%rcx + +# qhasm: t13 = *(uint64 *)(workp + 64) +# asm 1: movq 64(t13=int64#5 +# asm 2: movq 64(t13=%r8 +movq 64(%rdi),%r8 + +# qhasm: t14 = *(uint64 *)(workp + 72) +# asm 1: movq 72(t14=int64#6 +# asm 2: movq 72(t14=%r9 +movq 72(%rdi),%r9 + +# qhasm: t20 = t10 +# asm 1: mov t20=int64#7 +# asm 2: mov t20=%rax +mov %rsi,%rax + +# qhasm: t21 = t11 +# asm 1: mov t21=int64#8 +# asm 2: mov t21=%r10 +mov %rdx,%r10 + +# qhasm: t22 = t12 +# asm 1: mov t22=int64#9 +# asm 2: mov t22=%r11 +mov %rcx,%r11 + +# qhasm: t23 = t13 +# asm 1: mov t23=int64#10 +# asm 2: mov t23=%r12 +mov %r8,%r12 + +# qhasm: t24 = t14 +# asm 1: mov t24=int64#11 +# asm 2: mov t24=%r13 +mov %r9,%r13 + +# qhasm: t20 += *(uint64 *) &CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: add CRYPTO_SHARED_NAMESPACE(2P0),t10_stack=stack64#8 +# asm 2: movq t10_stack=56(%rsp) +movq %rsi,56(%rsp) + +# qhasm: t11_stack = t11 +# asm 1: movq t11_stack=stack64#9 +# asm 2: movq t11_stack=64(%rsp) +movq %rdx,64(%rsp) + +# qhasm: t12_stack = t12 +# asm 1: movq t12_stack=stack64#10 +# asm 2: movq t12_stack=72(%rsp) +movq %rcx,72(%rsp) + +# qhasm: t13_stack = t13 +# asm 1: movq t13_stack=stack64#11 +# asm 2: movq t13_stack=80(%rsp) +movq %r8,80(%rsp) + +# qhasm: t14_stack = t14 +# asm 1: movq t14_stack=stack64#12 +# asm 2: movq t14_stack=88(%rsp) +movq %r9,88(%rsp) + +# qhasm: t20_stack = t20 +# asm 1: movq t20_stack=stack64#13 +# asm 2: movq t20_stack=96(%rsp) +movq %rax,96(%rsp) + +# qhasm: t21_stack = t21 +# asm 1: movq t21_stack=stack64#14 +# asm 2: movq t21_stack=104(%rsp) +movq %r10,104(%rsp) + +# qhasm: t22_stack = t22 +# asm 1: movq t22_stack=stack64#15 +# asm 2: movq t22_stack=112(%rsp) +movq %r11,112(%rsp) + +# qhasm: t23_stack = t23 +# asm 1: movq t23_stack=stack64#16 +# asm 2: movq t23_stack=120(%rsp) +movq %r12,120(%rsp) + +# qhasm: t24_stack = t24 +# asm 1: movq t24_stack=stack64#17 +# asm 2: movq t24_stack=128(%rsp) +movq %r13,128(%rsp) + +# qhasm: squarerax = t20_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t20_stack +# asm 1: mulq t70=int64#2 +# asm 2: mov t70=%rsi +mov %rax,%rsi + +# qhasm: squarer01 = squarerdx +# asm 1: mov squarer01=int64#4 +# asm 2: mov squarer01=%rcx +mov %rdx,%rcx + +# qhasm: squarerax = t20_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 96(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,t71=int64#5 +# asm 2: mov t71=%r8 +mov %rax,%r8 + +# qhasm: squarer11 = squarerdx +# asm 1: mov squarer11=int64#6 +# asm 2: mov squarer11=%r9 +mov %rdx,%r9 + +# qhasm: squarerax = t20_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 96(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,t72=int64#8 +# asm 2: mov t72=%r10 +mov %rax,%r10 + +# qhasm: squarer21 = squarerdx +# asm 1: mov squarer21=int64#9 +# asm 2: mov squarer21=%r11 +mov %rdx,%r11 + +# qhasm: squarerax = t20_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 96(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,t73=int64#10 +# asm 2: mov t73=%r12 +mov %rax,%r12 + +# qhasm: squarer31 = squarerdx +# asm 1: mov squarer31=int64#11 +# asm 2: mov squarer31=%r13 +mov %rdx,%r13 + +# qhasm: squarerax = t20_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 96(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,t74=int64#12 +# asm 2: mov t74=%r14 +mov %rax,%r14 + +# qhasm: squarer41 = squarerdx +# asm 1: mov squarer41=int64#13 +# asm 2: mov squarer41=%r15 +mov %rdx,%r15 + +# qhasm: squarerax = t21_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t21_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 104(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 104(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 104(%rsp),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t24_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t22_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 112(%rsp),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t23_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 112(%rsp),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t24_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 120(%rsp),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t23_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 120(%rsp),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t24_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 128(%rsp),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t24_stack +# asm 1: mulq squareredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>squareredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: squarer01 = (squarer01.t70) << 13 +# asm 1: shld $13,squarer41=int64#4 +# asm 2: imulq $19,squarer41=%rcx +imulq $19,%r15,%rcx + +# qhasm: t70 += squarer41 +# asm 1: add squaret=int64#4 +# asm 2: mov squaret=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,t71=int64#5 +# asm 2: mov t71=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,t72=int64#6 +# asm 2: mov t72=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,t73=int64#7 +# asm 2: mov t73=%rax +mov %rcx,%rax + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,t74=int64#8 +# asm 2: mov t74=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,squaret=int64#4 +# asm 2: imulq $19,squaret=%rcx +imulq $19,%rcx,%rcx + +# qhasm: t70 += squaret +# asm 1: add t70_stack=stack64#18 +# asm 2: movq t70_stack=136(%rsp) +movq %rsi,136(%rsp) + +# qhasm: t71_stack = t71 +# asm 1: movq t71_stack=stack64#19 +# asm 2: movq t71_stack=144(%rsp) +movq %r8,144(%rsp) + +# qhasm: t72_stack = t72 +# asm 1: movq t72_stack=stack64#20 +# asm 2: movq t72_stack=152(%rsp) +movq %r9,152(%rsp) + +# qhasm: t73_stack = t73 +# asm 1: movq t73_stack=stack64#21 +# asm 2: movq t73_stack=160(%rsp) +movq %rax,160(%rsp) + +# qhasm: t74_stack = t74 +# asm 1: movq t74_stack=stack64#22 +# asm 2: movq t74_stack=168(%rsp) +movq %r10,168(%rsp) + +# qhasm: squarerax = t10_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t10_stack +# asm 1: mulq t60=int64#2 +# asm 2: mov t60=%rsi +mov %rax,%rsi + +# qhasm: squarer01 = squarerdx +# asm 1: mov squarer01=int64#4 +# asm 2: mov squarer01=%rcx +mov %rdx,%rcx + +# qhasm: squarerax = t10_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 56(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,t61=int64#5 +# asm 2: mov t61=%r8 +mov %rax,%r8 + +# qhasm: squarer11 = squarerdx +# asm 1: mov squarer11=int64#6 +# asm 2: mov squarer11=%r9 +mov %rdx,%r9 + +# qhasm: squarerax = t10_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 56(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,t62=int64#8 +# asm 2: mov t62=%r10 +mov %rax,%r10 + +# qhasm: squarer21 = squarerdx +# asm 1: mov squarer21=int64#9 +# asm 2: mov squarer21=%r11 +mov %rdx,%r11 + +# qhasm: squarerax = t10_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 56(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,t63=int64#10 +# asm 2: mov t63=%r12 +mov %rax,%r12 + +# qhasm: squarer31 = squarerdx +# asm 1: mov squarer31=int64#11 +# asm 2: mov squarer31=%r13 +mov %rdx,%r13 + +# qhasm: squarerax = t10_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 56(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,t64=int64#12 +# asm 2: mov t64=%r14 +mov %rax,%r14 + +# qhasm: squarer41 = squarerdx +# asm 1: mov squarer41=int64#13 +# asm 2: mov squarer41=%r15 +mov %rdx,%r15 + +# qhasm: squarerax = t11_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t11_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 64(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 64(%rsp),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 64(%rsp),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t14_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t12_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 72(%rsp),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t13_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 72(%rsp),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t14_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 80(%rsp),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t13_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 80(%rsp),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t14_stack +# asm 1: mulq squarerax=int64#3 +# asm 2: movq squarerax=%rdx +movq 88(%rsp),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t14_stack +# asm 1: mulq squareredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>squareredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: squarer01 = (squarer01.t60) << 13 +# asm 1: shld $13,squarer41=int64#4 +# asm 2: imulq $19,squarer41=%rcx +imulq $19,%r15,%rcx + +# qhasm: t60 += squarer41 +# asm 1: add squaret=int64#4 +# asm 2: mov squaret=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,t61=int64#5 +# asm 2: mov t61=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,t62=int64#6 +# asm 2: mov t62=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,t63=int64#7 +# asm 2: mov t63=%rax +mov %rcx,%rax + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,t64=int64#8 +# asm 2: mov t64=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,squaret=int64#4 +# asm 2: imulq $19,squaret=%rcx +imulq $19,%rcx,%rcx + +# qhasm: t60 += squaret +# asm 1: add t60_stack=stack64#23 +# asm 2: movq t60_stack=176(%rsp) +movq %rsi,176(%rsp) + +# qhasm: t61_stack = t61 +# asm 1: movq t61_stack=stack64#24 +# asm 2: movq t61_stack=184(%rsp) +movq %r8,184(%rsp) + +# qhasm: t62_stack = t62 +# asm 1: movq t62_stack=stack64#25 +# asm 2: movq t62_stack=192(%rsp) +movq %r9,192(%rsp) + +# qhasm: t63_stack = t63 +# asm 1: movq t63_stack=stack64#26 +# asm 2: movq t63_stack=200(%rsp) +movq %rax,200(%rsp) + +# qhasm: t64_stack = t64 +# asm 1: movq t64_stack=stack64#27 +# asm 2: movq t64_stack=208(%rsp) +movq %r10,208(%rsp) + +# qhasm: t50 = t60 +# asm 1: mov t50=int64#2 +# asm 2: mov t50=%rsi +mov %rsi,%rsi + +# qhasm: t51 = t61 +# asm 1: mov t51=int64#3 +# asm 2: mov t51=%rdx +mov %r8,%rdx + +# qhasm: t52 = t62 +# asm 1: mov t52=int64#4 +# asm 2: mov t52=%rcx +mov %r9,%rcx + +# qhasm: t53 = t63 +# asm 1: mov t53=int64#5 +# asm 2: mov t53=%r8 +mov %rax,%r8 + +# qhasm: t54 = t64 +# asm 1: mov t54=int64#6 +# asm 2: mov t54=%r9 +mov %r10,%r9 + +# qhasm: t50 += *(uint64 *) &CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: add CRYPTO_SHARED_NAMESPACE(2P0),t50_stack=stack64#28 +# asm 2: movq t50_stack=216(%rsp) +movq %rsi,216(%rsp) + +# qhasm: t51_stack = t51 +# asm 1: movq t51_stack=stack64#29 +# asm 2: movq t51_stack=224(%rsp) +movq %rdx,224(%rsp) + +# qhasm: t52_stack = t52 +# asm 1: movq t52_stack=stack64#30 +# asm 2: movq t52_stack=232(%rsp) +movq %rcx,232(%rsp) + +# qhasm: t53_stack = t53 +# asm 1: movq t53_stack=stack64#31 +# asm 2: movq t53_stack=240(%rsp) +movq %r8,240(%rsp) + +# qhasm: t54_stack = t54 +# asm 1: movq t54_stack=stack64#32 +# asm 2: movq t54_stack=248(%rsp) +movq %r9,248(%rsp) + +# qhasm: t30 = *(uint64 *)(workp + 120) +# asm 1: movq 120(t30=int64#2 +# asm 2: movq 120(t30=%rsi +movq 120(%rdi),%rsi + +# qhasm: t31 = *(uint64 *)(workp + 128) +# asm 1: movq 128(t31=int64#3 +# asm 2: movq 128(t31=%rdx +movq 128(%rdi),%rdx + +# qhasm: t32 = *(uint64 *)(workp + 136) +# asm 1: movq 136(t32=int64#4 +# asm 2: movq 136(t32=%rcx +movq 136(%rdi),%rcx + +# qhasm: t33 = *(uint64 *)(workp + 144) +# asm 1: movq 144(t33=int64#5 +# asm 2: movq 144(t33=%r8 +movq 144(%rdi),%r8 + +# qhasm: t34 = *(uint64 *)(workp + 152) +# asm 1: movq 152(t34=int64#6 +# asm 2: movq 152(t34=%r9 +movq 152(%rdi),%r9 + +# qhasm: t40 = t30 +# asm 1: mov t40=int64#7 +# asm 2: mov t40=%rax +mov %rsi,%rax + +# qhasm: t41 = t31 +# asm 1: mov t41=int64#8 +# asm 2: mov t41=%r10 +mov %rdx,%r10 + +# qhasm: t42 = t32 +# asm 1: mov t42=int64#9 +# asm 2: mov t42=%r11 +mov %rcx,%r11 + +# qhasm: t43 = t33 +# asm 1: mov t43=int64#10 +# asm 2: mov t43=%r12 +mov %r8,%r12 + +# qhasm: t44 = t34 +# asm 1: mov t44=int64#11 +# asm 2: mov t44=%r13 +mov %r9,%r13 + +# qhasm: t40 += *(uint64 *) &CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: add CRYPTO_SHARED_NAMESPACE(2P0),t30_stack=stack64#33 +# asm 2: movq t30_stack=256(%rsp) +movq %rsi,256(%rsp) + +# qhasm: t31_stack = t31 +# asm 1: movq t31_stack=stack64#34 +# asm 2: movq t31_stack=264(%rsp) +movq %rdx,264(%rsp) + +# qhasm: t32_stack = t32 +# asm 1: movq t32_stack=stack64#35 +# asm 2: movq t32_stack=272(%rsp) +movq %rcx,272(%rsp) + +# qhasm: t33_stack = t33 +# asm 1: movq t33_stack=stack64#36 +# asm 2: movq t33_stack=280(%rsp) +movq %r8,280(%rsp) + +# qhasm: t34_stack = t34 +# asm 1: movq t34_stack=stack64#37 +# asm 2: movq t34_stack=288(%rsp) +movq %r9,288(%rsp) + +# qhasm: t40_stack = t40 +# asm 1: movq t40_stack=stack64#38 +# asm 2: movq t40_stack=296(%rsp) +movq %rax,296(%rsp) + +# qhasm: t41_stack = t41 +# asm 1: movq t41_stack=stack64#39 +# asm 2: movq t41_stack=304(%rsp) +movq %r10,304(%rsp) + +# qhasm: t42_stack = t42 +# asm 1: movq t42_stack=stack64#40 +# asm 2: movq t42_stack=312(%rsp) +movq %r11,312(%rsp) + +# qhasm: t43_stack = t43 +# asm 1: movq t43_stack=stack64#41 +# asm 2: movq t43_stack=320(%rsp) +movq %r12,320(%rsp) + +# qhasm: t44_stack = t44 +# asm 1: movq t44_stack=stack64#42 +# asm 2: movq t44_stack=328(%rsp) +movq %r13,328(%rsp) + +# qhasm: mulrax = t33_stack +# asm 1: movq mulrax=int64#2 +# asm 2: movq mulrax=%rsi +movq 280(%rsp),%rsi + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rsi,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#43 +# asm 2: movq mulx319_stack=336(%rsp) +movq %rax,336(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * t22_stack +# asm 1: mulq t90=int64#2 +# asm 2: mov t90=%rsi +mov %rax,%rsi + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#4 +# asm 2: mov mulr01=%rcx +mov %rdx,%rcx + +# qhasm: mulrax = t34_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 288(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#44 +# asm 2: movq mulx419_stack=344(%rsp) +movq %rax,344(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * t21_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 256(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t20_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 256(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t21_stack +# asm 1: mulq t91=int64#5 +# asm 2: mov t91=%r8 +mov %rax,%r8 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#6 +# asm 2: mov mulr11=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = t30_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 256(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t22_stack +# asm 1: mulq t92=int64#8 +# asm 2: mov t92=%r10 +mov %rax,%r10 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#9 +# asm 2: mov mulr21=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = t30_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 256(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t23_stack +# asm 1: mulq t93=int64#10 +# asm 2: mov t93=%r12 +mov %rax,%r12 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#11 +# asm 2: mov mulr31=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = t30_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 256(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t24_stack +# asm 1: mulq t94=int64#12 +# asm 2: mov t94=%r14 +mov %rax,%r14 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#13 +# asm 2: mov mulr41=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = t31_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 264(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t20_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 264(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t21_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 264(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t22_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 264(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t23_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 264(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t24_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 272(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t20_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 272(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t21_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 272(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t22_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 272(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t23_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 272(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t24_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 280(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t20_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 280(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t21_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 336(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t23_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 336(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t24_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 288(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t20_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 344(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t22_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 344(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t23_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 344(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t24_stack +# asm 1: mulq mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.t90) << 13 +# asm 1: shld $13,mulr41=int64#4 +# asm 2: imulq $19,mulr41=%rcx +imulq $19,%r15,%rcx + +# qhasm: t90 += mulr41 +# asm 1: add mult=int64#4 +# asm 2: mov mult=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t91=int64#5 +# asm 2: mov t91=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t92=int64#6 +# asm 2: mov t92=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t93=int64#7 +# asm 2: mov t93=%rax +mov %rcx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t94=int64#8 +# asm 2: mov t94=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#4 +# asm 2: imulq $19,mult=%rcx +imulq $19,%rcx,%rcx + +# qhasm: t90 += mult +# asm 1: add t90_stack=stack64#13 +# asm 2: movq t90_stack=96(%rsp) +movq %rsi,96(%rsp) + +# qhasm: t91_stack = t91 +# asm 1: movq t91_stack=stack64#14 +# asm 2: movq t91_stack=104(%rsp) +movq %r8,104(%rsp) + +# qhasm: t92_stack = t92 +# asm 1: movq t92_stack=stack64#15 +# asm 2: movq t92_stack=112(%rsp) +movq %r9,112(%rsp) + +# qhasm: t93_stack = t93 +# asm 1: movq t93_stack=stack64#16 +# asm 2: movq t93_stack=120(%rsp) +movq %rax,120(%rsp) + +# qhasm: t94_stack = t94 +# asm 1: movq t94_stack=stack64#17 +# asm 2: movq t94_stack=128(%rsp) +movq %r10,128(%rsp) + +# qhasm: mulrax = t43_stack +# asm 1: movq mulrax=int64#2 +# asm 2: movq mulrax=%rsi +movq 320(%rsp),%rsi + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rsi,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#33 +# asm 2: movq mulx319_stack=256(%rsp) +movq %rax,256(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * t12_stack +# asm 1: mulq t80=int64#2 +# asm 2: mov t80=%rsi +mov %rax,%rsi + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#4 +# asm 2: mov mulr01=%rcx +mov %rdx,%rcx + +# qhasm: mulrax = t44_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 328(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#34 +# asm 2: movq mulx419_stack=264(%rsp) +movq %rax,264(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * t11_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 296(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t10_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 296(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t11_stack +# asm 1: mulq t81=int64#5 +# asm 2: mov t81=%r8 +mov %rax,%r8 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#6 +# asm 2: mov mulr11=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = t40_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 296(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t12_stack +# asm 1: mulq t82=int64#8 +# asm 2: mov t82=%r10 +mov %rax,%r10 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#9 +# asm 2: mov mulr21=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = t40_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 296(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t13_stack +# asm 1: mulq t83=int64#10 +# asm 2: mov t83=%r12 +mov %rax,%r12 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#11 +# asm 2: mov mulr31=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = t40_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 296(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t14_stack +# asm 1: mulq t84=int64#12 +# asm 2: mov t84=%r14 +mov %rax,%r14 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#13 +# asm 2: mov mulr41=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = t41_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 304(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t10_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 304(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t11_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 304(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t12_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 304(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t13_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 304(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t14_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 312(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t10_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 312(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t11_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 312(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t12_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 312(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t13_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 312(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t14_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 320(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t10_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 320(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t11_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 256(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t13_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 256(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t14_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 328(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t10_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 264(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t12_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 264(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t13_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 264(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t14_stack +# asm 1: mulq mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.t80) << 13 +# asm 1: shld $13,mulr41=int64#4 +# asm 2: imulq $19,mulr41=%rcx +imulq $19,%r15,%rcx + +# qhasm: t80 += mulr41 +# asm 1: add mult=int64#4 +# asm 2: mov mult=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t81=int64#5 +# asm 2: mov t81=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t82=int64#6 +# asm 2: mov t82=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t83=int64#7 +# asm 2: mov t83=%rax +mov %rcx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,t84=int64#8 +# asm 2: mov t84=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#4 +# asm 2: imulq $19,mult=%rcx +imulq $19,%rcx,%rcx + +# qhasm: t80 += mult +# asm 1: add zq0=int64#3 +# asm 2: mov zq0=%rdx +mov %rsi,%rdx + +# qhasm: zq1 = t81 +# asm 1: mov zq1=int64#4 +# asm 2: mov zq1=%rcx +mov %r8,%rcx + +# qhasm: zq2 = t82 +# asm 1: mov zq2=int64#9 +# asm 2: mov zq2=%r11 +mov %r9,%r11 + +# qhasm: zq3 = t83 +# asm 1: mov zq3=int64#10 +# asm 2: mov zq3=%r12 +mov %rax,%r12 + +# qhasm: zq4 = t84 +# asm 1: mov zq4=int64#11 +# asm 2: mov zq4=%r13 +mov %r10,%r13 + +# qhasm: zq0 += *(uint64 *) &CRYPTO_SHARED_NAMESPACE(2P0) +# asm 1: add CRYPTO_SHARED_NAMESPACE(2P0),squarerax=int64#7 +# asm 2: movq 120(squarerax=%rax +movq 120(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 120) +# asm 1: mulq 120(xq0=int64#2 +# asm 2: mov xq0=%rsi +mov %rax,%rsi + +# qhasm: squarer01 = squarerdx +# asm 1: mov squarer01=int64#4 +# asm 2: mov squarer01=%rcx +mov %rdx,%rcx + +# qhasm: squarerax = *(uint64 *)(workp + 120) +# asm 1: movq 120(squarerax=int64#7 +# asm 2: movq 120(squarerax=%rax +movq 120(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,xq1=int64#5 +# asm 2: mov xq1=%r8 +mov %rax,%r8 + +# qhasm: squarer11 = squarerdx +# asm 1: mov squarer11=int64#6 +# asm 2: mov squarer11=%r9 +mov %rdx,%r9 + +# qhasm: squarerax = *(uint64 *)(workp + 120) +# asm 1: movq 120(squarerax=int64#7 +# asm 2: movq 120(squarerax=%rax +movq 120(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,xq2=int64#8 +# asm 2: mov xq2=%r10 +mov %rax,%r10 + +# qhasm: squarer21 = squarerdx +# asm 1: mov squarer21=int64#9 +# asm 2: mov squarer21=%r11 +mov %rdx,%r11 + +# qhasm: squarerax = *(uint64 *)(workp + 120) +# asm 1: movq 120(squarerax=int64#7 +# asm 2: movq 120(squarerax=%rax +movq 120(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,xq3=int64#10 +# asm 2: mov xq3=%r12 +mov %rax,%r12 + +# qhasm: squarer31 = squarerdx +# asm 1: mov squarer31=int64#11 +# asm 2: mov squarer31=%r13 +mov %rdx,%r13 + +# qhasm: squarerax = *(uint64 *)(workp + 120) +# asm 1: movq 120(squarerax=int64#7 +# asm 2: movq 120(squarerax=%rax +movq 120(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,xq4=int64#12 +# asm 2: mov xq4=%r14 +mov %rax,%r14 + +# qhasm: squarer41 = squarerdx +# asm 1: mov squarer41=int64#13 +# asm 2: mov squarer41=%r15 +mov %rdx,%r15 + +# qhasm: squarerax = *(uint64 *)(workp + 128) +# asm 1: movq 128(squarerax=int64#7 +# asm 2: movq 128(squarerax=%rax +movq 128(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 128) +# asm 1: mulq 128(squarerax=int64#7 +# asm 2: movq 128(squarerax=%rax +movq 128(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#7 +# asm 2: movq 128(squarerax=%rax +movq 128(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#3 +# asm 2: movq 128(squarerax=%rdx +movq 128(%rdi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 152) +# asm 1: mulq 152(squarerax=int64#7 +# asm 2: movq 136(squarerax=%rax +movq 136(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 136) +# asm 1: mulq 136(squarerax=int64#3 +# asm 2: movq 136(squarerax=%rdx +movq 136(%rdi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 144) +# asm 1: mulq 144(squarerax=int64#3 +# asm 2: movq 136(squarerax=%rdx +movq 136(%rdi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 152) +# asm 1: mulq 152(squarerax=int64#3 +# asm 2: movq 144(squarerax=%rdx +movq 144(%rdi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 144) +# asm 1: mulq 144(squarerax=int64#3 +# asm 2: movq 144(squarerax=%rdx +movq 144(%rdi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 152) +# asm 1: mulq 152(squarerax=int64#3 +# asm 2: movq 152(squarerax=%rdx +movq 152(%rdi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 152) +# asm 1: mulq 152(squareredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>squareredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: squarer01 = (squarer01.xq0) << 13 +# asm 1: shld $13,squarer41=int64#4 +# asm 2: imulq $19,squarer41=%rcx +imulq $19,%r15,%rcx + +# qhasm: xq0 += squarer41 +# asm 1: add squaret=int64#4 +# asm 2: mov squaret=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,xq1=int64#5 +# asm 2: mov xq1=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,xq2=int64#6 +# asm 2: mov xq2=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,xq3=int64#7 +# asm 2: mov xq3=%rax +mov %rcx,%rax + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,xq4=int64#8 +# asm 2: mov xq4=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,squaret=int64#4 +# asm 2: imulq $19,squaret=%rcx +imulq $19,%rcx,%rcx + +# qhasm: xq0 += squaret +# asm 1: add squarerax=int64#7 +# asm 2: movq 160(squarerax=%rax +movq 160(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 160) +# asm 1: mulq 160(zq0=int64#2 +# asm 2: mov zq0=%rsi +mov %rax,%rsi + +# qhasm: squarer01 = squarerdx +# asm 1: mov squarer01=int64#4 +# asm 2: mov squarer01=%rcx +mov %rdx,%rcx + +# qhasm: squarerax = *(uint64 *)(workp + 160) +# asm 1: movq 160(squarerax=int64#7 +# asm 2: movq 160(squarerax=%rax +movq 160(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,zq1=int64#5 +# asm 2: mov zq1=%r8 +mov %rax,%r8 + +# qhasm: squarer11 = squarerdx +# asm 1: mov squarer11=int64#6 +# asm 2: mov squarer11=%r9 +mov %rdx,%r9 + +# qhasm: squarerax = *(uint64 *)(workp + 160) +# asm 1: movq 160(squarerax=int64#7 +# asm 2: movq 160(squarerax=%rax +movq 160(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,zq2=int64#8 +# asm 2: mov zq2=%r10 +mov %rax,%r10 + +# qhasm: squarer21 = squarerdx +# asm 1: mov squarer21=int64#9 +# asm 2: mov squarer21=%r11 +mov %rdx,%r11 + +# qhasm: squarerax = *(uint64 *)(workp + 160) +# asm 1: movq 160(squarerax=int64#7 +# asm 2: movq 160(squarerax=%rax +movq 160(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,zq3=int64#10 +# asm 2: mov zq3=%r12 +mov %rax,%r12 + +# qhasm: squarer31 = squarerdx +# asm 1: mov squarer31=int64#11 +# asm 2: mov squarer31=%r13 +mov %rdx,%r13 + +# qhasm: squarerax = *(uint64 *)(workp + 160) +# asm 1: movq 160(squarerax=int64#7 +# asm 2: movq 160(squarerax=%rax +movq 160(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,zq4=int64#12 +# asm 2: mov zq4=%r14 +mov %rax,%r14 + +# qhasm: squarer41 = squarerdx +# asm 1: mov squarer41=int64#13 +# asm 2: mov squarer41=%r15 +mov %rdx,%r15 + +# qhasm: squarerax = *(uint64 *)(workp + 168) +# asm 1: movq 168(squarerax=int64#7 +# asm 2: movq 168(squarerax=%rax +movq 168(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 168) +# asm 1: mulq 168(squarerax=int64#7 +# asm 2: movq 168(squarerax=%rax +movq 168(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#7 +# asm 2: movq 168(squarerax=%rax +movq 168(%rdi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#3 +# asm 2: movq 168(squarerax=%rdx +movq 168(%rdi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 192) +# asm 1: mulq 192(squarerax=int64#7 +# asm 2: movq 176(squarerax=%rax +movq 176(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 176) +# asm 1: mulq 176(squarerax=int64#3 +# asm 2: movq 176(squarerax=%rdx +movq 176(%rdi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 184) +# asm 1: mulq 184(squarerax=int64#3 +# asm 2: movq 176(squarerax=%rdx +movq 176(%rdi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 192) +# asm 1: mulq 192(squarerax=int64#3 +# asm 2: movq 184(squarerax=%rdx +movq 184(%rdi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 184) +# asm 1: mulq 184(squarerax=int64#3 +# asm 2: movq 184(squarerax=%rdx +movq 184(%rdi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 192) +# asm 1: mulq 192(squarerax=int64#3 +# asm 2: movq 192(squarerax=%rdx +movq 192(%rdi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 192) +# asm 1: mulq 192(squareredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>squareredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: squarer01 = (squarer01.zq0) << 13 +# asm 1: shld $13,squarer41=int64#4 +# asm 2: imulq $19,squarer41=%rcx +imulq $19,%r15,%rcx + +# qhasm: zq0 += squarer41 +# asm 1: add squaret=int64#4 +# asm 2: mov squaret=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,zq1=int64#5 +# asm 2: mov zq1=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,zq2=int64#6 +# asm 2: mov zq2=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,zq3=int64#7 +# asm 2: mov zq3=%rax +mov %rcx,%rax + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,zq4=int64#8 +# asm 2: mov zq4=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,squaret=int64#4 +# asm 2: imulq $19,squaret=%rcx +imulq $19,%rcx,%rcx + +# qhasm: zq0 += squaret +# asm 1: add mulrax=int64#2 +# asm 2: movq 184(mulrax=%rsi +movq 184(%rdi),%rsi + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rsi,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 16) +# asm 1: mulq 16(zq0=int64#2 +# asm 2: mov zq0=%rsi +mov %rax,%rsi + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#4 +# asm 2: mov mulr01=%rcx +mov %rdx,%rcx + +# qhasm: mulrax = *(uint64 *)(workp + 192) +# asm 1: movq 192(mulrax=int64#3 +# asm 2: movq 192(mulrax=%rdx +movq 192(%rdi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq 160(mulrax=%rax +movq 160(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 160(mulrax=%rax +movq 160(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 8) +# asm 1: mulq 8(zq1=int64#5 +# asm 2: mov zq1=%r8 +mov %rax,%r8 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#6 +# asm 2: mov mulr11=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = *(uint64 *)(workp + 160) +# asm 1: movq 160(mulrax=int64#7 +# asm 2: movq 160(mulrax=%rax +movq 160(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 16) +# asm 1: mulq 16(zq2=int64#8 +# asm 2: mov zq2=%r10 +mov %rax,%r10 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#9 +# asm 2: mov mulr21=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = *(uint64 *)(workp + 160) +# asm 1: movq 160(mulrax=int64#7 +# asm 2: movq 160(mulrax=%rax +movq 160(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 24) +# asm 1: mulq 24(zq3=int64#10 +# asm 2: mov zq3=%r12 +mov %rax,%r12 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#11 +# asm 2: mov mulr31=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(workp + 160) +# asm 1: movq 160(mulrax=int64#7 +# asm 2: movq 160(mulrax=%rax +movq 160(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 32) +# asm 1: mulq 32(zq4=int64#12 +# asm 2: mov zq4=%r14 +mov %rax,%r14 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#13 +# asm 2: mov mulr41=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = *(uint64 *)(workp + 168) +# asm 1: movq 168(mulrax=int64#7 +# asm 2: movq 168(mulrax=%rax +movq 168(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 168(mulrax=%rax +movq 168(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq 168(mulrax=%rax +movq 168(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 16) +# asm 1: mulq 16(mulrax=int64#7 +# asm 2: movq 168(mulrax=%rax +movq 168(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 24) +# asm 1: mulq 24(mulrax=int64#3 +# asm 2: movq 168(mulrax=%rdx +movq 168(%rdi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq 176(mulrax=%rax +movq 176(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 176(mulrax=%rax +movq 176(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq 176(mulrax=%rax +movq 176(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 16) +# asm 1: mulq 16(mulrax=int64#3 +# asm 2: movq 176(mulrax=%rdx +movq 176(%rdi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 24) +# asm 1: mulq 24(mulrax=int64#3 +# asm 2: movq 176(mulrax=%rdx +movq 176(%rdi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq 184(mulrax=%rax +movq 184(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 184(mulrax=%rax +movq 184(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 24) +# asm 1: mulq 24(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq 192(mulrax=%rax +movq 192(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 16) +# asm 1: mulq 16(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 24) +# asm 1: mulq 24(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(workp + 32) +# asm 1: mulq 32(mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.zq0) << 13 +# asm 1: shld $13,mulr41=int64#4 +# asm 2: imulq $19,mulr41=%rcx +imulq $19,%r15,%rcx + +# qhasm: zq0 += mulr41 +# asm 1: add mult=int64#4 +# asm 2: mov mult=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,zq1=int64#5 +# asm 2: mov zq1=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,zq2=int64#6 +# asm 2: mov zq2=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,zq3=int64#7 +# asm 2: mov zq3=%rax +mov %rcx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,zq4=int64#8 +# asm 2: mov zq4=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#4 +# asm 2: imulq $19,mult=%rcx +imulq $19,%rcx,%rcx + +# qhasm: zq0 += mult +# asm 1: add mulrax=int64#2 +# asm 2: movq mulrax=%rsi +movq 200(%rsp),%rsi + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rsi,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * t72_stack +# asm 1: mulq xp0=int64#2 +# asm 2: mov xp0=%rsi +mov %rax,%rsi + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#4 +# asm 2: mov mulr01=%rcx +mov %rdx,%rcx + +# qhasm: mulrax = t64_stack +# asm 1: movq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 208(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * t71_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 176(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t70_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 176(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t71_stack +# asm 1: mulq xp1=int64#5 +# asm 2: mov xp1=%r8 +mov %rax,%r8 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#6 +# asm 2: mov mulr11=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = t60_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 176(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t72_stack +# asm 1: mulq xp2=int64#8 +# asm 2: mov xp2=%r10 +mov %rax,%r10 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#9 +# asm 2: mov mulr21=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = t60_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 176(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t73_stack +# asm 1: mulq xp3=int64#10 +# asm 2: mov xp3=%r12 +mov %rax,%r12 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#11 +# asm 2: mov mulr31=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = t60_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 176(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t74_stack +# asm 1: mulq xp4=int64#12 +# asm 2: mov xp4=%r14 +mov %rax,%r14 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#13 +# asm 2: mov mulr41=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = t61_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 184(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t70_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 184(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t71_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 184(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t72_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 184(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t73_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 184(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t74_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 192(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t70_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 192(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t71_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 192(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t72_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 192(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t73_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq mulrax=%rdx +movq 192(%rsp),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t74_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 200(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t70_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 200(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t71_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t73_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t74_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 208(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t70_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t72_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t73_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t74_stack +# asm 1: mulq mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.xp0) << 13 +# asm 1: shld $13,mulr41=int64#4 +# asm 2: imulq $19,mulr41=%rcx +imulq $19,%r15,%rcx + +# qhasm: xp0 += mulr41 +# asm 1: add mult=int64#4 +# asm 2: mov mult=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,xp1=int64#5 +# asm 2: mov xp1=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,xp2=int64#6 +# asm 2: mov xp2=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,xp3=int64#7 +# asm 2: mov xp3=%rax +mov %rcx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,xp4=int64#8 +# asm 2: mov xp4=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#4 +# asm 2: imulq $19,mult=%rcx +imulq $19,%rcx,%rcx + +# qhasm: xp0 += mult +# asm 1: add mul121666rax=int64#7 +# asm 2: movq mul121666rax=%rax +movq 216(%rsp),%rax + +# qhasm: (uint128) mul121666rdx mul121666rax = mul121666rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(121666_213) +mulq CRYPTO_SHARED_NAMESPACE(121666_213)(%rip) + +# qhasm: (uint64) mul121666rax >>= 13 +# asm 1: shr $13,zp0=int64#2 +# asm 2: mov zp0=%rsi +mov %rax,%rsi + +# qhasm: zp1 = mul121666rdx +# asm 1: mov zp1=int64#4 +# asm 2: mov zp1=%rcx +mov %rdx,%rcx + +# qhasm: mul121666rax = t51_stack +# asm 1: movq mul121666rax=int64#7 +# asm 2: movq mul121666rax=%rax +movq 224(%rsp),%rax + +# qhasm: (uint128) mul121666rdx mul121666rax = mul121666rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(121666_213) +mulq CRYPTO_SHARED_NAMESPACE(121666_213)(%rip) + +# qhasm: (uint64) mul121666rax >>= 13 +# asm 1: shr $13,zp2=int64#5 +# asm 2: mov zp2=%r8 +mov %rdx,%r8 + +# qhasm: mul121666rax = t52_stack +# asm 1: movq mul121666rax=int64#7 +# asm 2: movq mul121666rax=%rax +movq 232(%rsp),%rax + +# qhasm: (uint128) mul121666rdx mul121666rax = mul121666rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(121666_213) +mulq CRYPTO_SHARED_NAMESPACE(121666_213)(%rip) + +# qhasm: (uint64) mul121666rax >>= 13 +# asm 1: shr $13,zp3=int64#6 +# asm 2: mov zp3=%r9 +mov %rdx,%r9 + +# qhasm: mul121666rax = t53_stack +# asm 1: movq mul121666rax=int64#7 +# asm 2: movq mul121666rax=%rax +movq 240(%rsp),%rax + +# qhasm: (uint128) mul121666rdx mul121666rax = mul121666rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(121666_213) +mulq CRYPTO_SHARED_NAMESPACE(121666_213)(%rip) + +# qhasm: (uint64) mul121666rax >>= 13 +# asm 1: shr $13,zp4=int64#8 +# asm 2: mov zp4=%r10 +mov %rdx,%r10 + +# qhasm: mul121666rax = t54_stack +# asm 1: movq mul121666rax=int64#7 +# asm 2: movq mul121666rax=%rax +movq 248(%rsp),%rax + +# qhasm: (uint128) mul121666rdx mul121666rax = mul121666rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(121666_213) +mulq CRYPTO_SHARED_NAMESPACE(121666_213)(%rip) + +# qhasm: (uint64) mul121666rax >>= 13 +# asm 1: shr $13,mul121666rdx=int64#3 +# asm 2: imulq $19,mul121666rdx=%rdx +imulq $19,%rdx,%rdx + +# qhasm: zp0 += mul121666rdx +# asm 1: add mulrax=int64#2 +# asm 2: movq 104(mulrax=%rsi +movq 104(%rdi),%rsi + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rsi,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#8 +# asm 2: movq mulx319_stack=56(%rsp) +movq %rax,56(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * t52_stack +# asm 1: mulq zp0=int64#2 +# asm 2: mov zp0=%rsi +mov %rax,%rsi + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#4 +# asm 2: mov mulr01=%rcx +mov %rdx,%rcx + +# qhasm: mulrax = *(uint64 *)(workp + 112) +# asm 1: movq 112(mulrax=int64#3 +# asm 2: movq 112(mulrax=%rdx +movq 112(%rdi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#9 +# asm 2: movq mulx419_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * t51_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t50_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t51_stack +# asm 1: mulq zp1=int64#5 +# asm 2: mov zp1=%r8 +mov %rax,%r8 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#6 +# asm 2: mov mulr11=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = *(uint64 *)(workp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t52_stack +# asm 1: mulq zp2=int64#8 +# asm 2: mov zp2=%r10 +mov %rax,%r10 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#9 +# asm 2: mov mulr21=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = *(uint64 *)(workp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t53_stack +# asm 1: mulq zp3=int64#10 +# asm 2: mov zp3=%r12 +mov %rax,%r12 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#11 +# asm 2: mov mulr31=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(workp + 80) +# asm 1: movq 80(mulrax=int64#7 +# asm 2: movq 80(mulrax=%rax +movq 80(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t54_stack +# asm 1: mulq zp4=int64#12 +# asm 2: mov zp4=%r14 +mov %rax,%r14 + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#13 +# asm 2: mov mulr41=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = *(uint64 *)(workp + 88) +# asm 1: movq 88(mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t50_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t51_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t52_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq 88(mulrax=%rax +movq 88(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t53_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq 88(mulrax=%rdx +movq 88(%rdi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t54_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t50_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t51_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq 96(mulrax=%rax +movq 96(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t52_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq 96(mulrax=%rdx +movq 96(%rdi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t53_stack +# asm 1: mulq mulrax=int64#3 +# asm 2: movq 96(mulrax=%rdx +movq 96(%rdi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t54_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t50_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq 104(mulrax=%rax +movq 104(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t51_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t53_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t54_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq 112(mulrax=%rax +movq 112(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t50_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t52_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t53_stack +# asm 1: mulq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * t54_stack +# asm 1: mulq mulredmask=int64#3 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(REDMASK51),>mulredmask=%rdx +movq CRYPTO_SHARED_NAMESPACE(REDMASK51)(%rip),%rdx + +# qhasm: mulr01 = (mulr01.zp0) << 13 +# asm 1: shld $13,mulr41=int64#4 +# asm 2: imulq $19,mulr41=%rcx +imulq $19,%r15,%rcx + +# qhasm: zp0 += mulr41 +# asm 1: add mult=int64#4 +# asm 2: mov mult=%rcx +mov %rsi,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,zp1=int64#5 +# asm 2: mov zp1=%r8 +mov %rcx,%r8 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,zp2=int64#6 +# asm 2: mov zp2=%r9 +mov %rcx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,zp3=int64#7 +# asm 2: mov zp3=%rax +mov %rcx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,zp4=int64#8 +# asm 2: mov zp4=%r10 +mov %rcx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#4 +# asm 2: imulq $19,mult=%rcx +imulq $19,%rcx,%rcx + +# qhasm: zp0 += mult +# asm 1: add caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/mont25519.c new file mode 100644 index 0000000000..bcec27bb0a --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/mont25519.c @@ -0,0 +1,61 @@ +#include "randombytes.h" +#include "crypto_nP.h" +#include "fe25519.h" + +#define work_cswap CRYPTO_SHARED_NAMESPACE(work_cswap) +#define ladderstep CRYPTO_SHARED_NAMESPACE(ladderstep) + +extern void work_cswap(fe25519 *, unsigned long long); +extern void ladderstep(fe25519 *work); + +static void mladder(fe25519 *xr, fe25519 *zr, const unsigned char s[32]) +{ + fe25519 work[5]; + unsigned char bit, prevbit=0; + unsigned long long swap; + int j; + int i; + + work[0] = *xr; + fe25519_setint(work+1,1); + fe25519_setint(work+2,0); + work[3] = *xr; + fe25519_setint(work+4,1); + + j = 6; + for(i=31;i>=0;i--) + { + while(j >= 0) + { + bit = 1&(s[i]>>j); + swap = bit ^ prevbit; + prevbit = bit; + work_cswap(work+1, swap); + ladderstep(work); + j -= 1; + } + j = 7; + } + *xr = work[1]; + *zr = work[2]; +} + +void crypto_nP(unsigned char *nP, + const unsigned char *n, + const unsigned char *P) +{ + unsigned char e[32]; + int i; + for(i=0;i<32;i++) e[i] = n[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fe25519 t; + fe25519 z; + fe25519_unpack(&t, P); + mladder(&t, &z, e); + fe25519_invert(&z, &z); + fe25519_mul(&t, &t, &z); + fe25519_pack(nP, &t); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/shared-consts.c new file mode 120000 index 0000000000..42fa8c141a --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/work_cswap.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/work_cswap.S new file mode 100644 index 0000000000..fdc5c1b481 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-51/work_cswap.S @@ -0,0 +1,484 @@ +// linker define work_cswap + +# qhasm: int64 workp + +# qhasm: int64 swap + +# qhasm: input workp + +# qhasm: input swap + +# qhasm: int64 w0 + +# qhasm: int64 w1 + +# qhasm: int64 w2 + +# qhasm: int64 w3 + +# qhasm: int64 w4 + +# qhasm: int64 w5 + +# qhasm: int64 w6 + +# qhasm: int64 w7 + +# qhasm: int64 w8 + +# qhasm: int64 w9 + +# qhasm: int64 w10 + +# qhasm: int64 w11 + +# qhasm: int64 w12 + +# qhasm: int64 w13 + +# qhasm: int64 w14 + +# qhasm: int64 w15 + +# qhasm: int64 w16 + +# qhasm: int64 w17 + +# qhasm: int64 w18 + +# qhasm: int64 w19 + +# qhasm: int64 t0 + +# qhasm: int64 t1 + +# qhasm: int64 t2 + +# qhasm: int64 t3 + +# qhasm: int64 t4 + +# qhasm: int64 t5 + +# qhasm: int64 t6 + +# qhasm: int64 t7 + +# qhasm: int64 t8 + +# qhasm: int64 t9 + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(work_cswap) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(work_cswap) +.globl CRYPTO_SHARED_NAMESPACE(work_cswap) +_CRYPTO_SHARED_NAMESPACE(work_cswap): +CRYPTO_SHARED_NAMESPACE(work_cswap): +mov %rsp,%r11 +and $31,%r11 +add $0,%r11 +sub %r11,%rsp + +# qhasm: =? swap - 1 +# asm 1: cmp $1,w0=int64#2 +# asm 2: movq 0(w0=%rsi +movq 0(%rdi),%rsi + +# qhasm: w10 = *(uint64 *)(workp + 80) +# asm 1: movq 80(w10=int64#3 +# asm 2: movq 80(w10=%rdx +movq 80(%rdi),%rdx + +# qhasm: w1 = *(uint64 *)(workp + 8) +# asm 1: movq 8(w1=int64#4 +# asm 2: movq 8(w1=%rcx +movq 8(%rdi),%rcx + +# qhasm: w11 = *(uint64 *)(workp + 88) +# asm 1: movq 88(w11=int64#5 +# asm 2: movq 88(w11=%r8 +movq 88(%rdi),%r8 + +# qhasm: t0 = w0 +# asm 1: mov t0=int64#6 +# asm 2: mov t0=%r9 +mov %rsi,%r9 + +# qhasm: w0 = w10 if = +# asm 1: cmove t1=int64#6 +# asm 2: mov t1=%r9 +mov %rcx,%r9 + +# qhasm: w1 = w11 if = +# asm 1: cmove w2=int64#2 +# asm 2: movq 16(w2=%rsi +movq 16(%rdi),%rsi + +# qhasm: w12 = *(uint64 *)(workp + 96) +# asm 1: movq 96(w12=int64#3 +# asm 2: movq 96(w12=%rdx +movq 96(%rdi),%rdx + +# qhasm: w3 = *(uint64 *)(workp + 24) +# asm 1: movq 24(w3=int64#4 +# asm 2: movq 24(w3=%rcx +movq 24(%rdi),%rcx + +# qhasm: w13 = *(uint64 *)(workp + 104) +# asm 1: movq 104(w13=int64#5 +# asm 2: movq 104(w13=%r8 +movq 104(%rdi),%r8 + +# qhasm: t2 = w2 +# asm 1: mov t2=int64#6 +# asm 2: mov t2=%r9 +mov %rsi,%r9 + +# qhasm: w2 = w12 if = +# asm 1: cmove t3=int64#6 +# asm 2: mov t3=%r9 +mov %rcx,%r9 + +# qhasm: w3 = w13 if = +# asm 1: cmove w4=int64#2 +# asm 2: movq 32(w4=%rsi +movq 32(%rdi),%rsi + +# qhasm: w14 = *(uint64 *)(workp + 112) +# asm 1: movq 112(w14=int64#3 +# asm 2: movq 112(w14=%rdx +movq 112(%rdi),%rdx + +# qhasm: w5 = *(uint64 *)(workp + 40) +# asm 1: movq 40(w5=int64#4 +# asm 2: movq 40(w5=%rcx +movq 40(%rdi),%rcx + +# qhasm: w15 = *(uint64 *)(workp + 120) +# asm 1: movq 120(w15=int64#5 +# asm 2: movq 120(w15=%r8 +movq 120(%rdi),%r8 + +# qhasm: t4 = w4 +# asm 1: mov t4=int64#6 +# asm 2: mov t4=%r9 +mov %rsi,%r9 + +# qhasm: w4 = w14 if = +# asm 1: cmove t5=int64#6 +# asm 2: mov t5=%r9 +mov %rcx,%r9 + +# qhasm: w5 = w15 if = +# asm 1: cmove w6=int64#2 +# asm 2: movq 48(w6=%rsi +movq 48(%rdi),%rsi + +# qhasm: w16 = *(uint64 *)(workp + 128) +# asm 1: movq 128(w16=int64#3 +# asm 2: movq 128(w16=%rdx +movq 128(%rdi),%rdx + +# qhasm: w7 = *(uint64 *)(workp + 56) +# asm 1: movq 56(w7=int64#4 +# asm 2: movq 56(w7=%rcx +movq 56(%rdi),%rcx + +# qhasm: w17 = *(uint64 *)(workp + 136) +# asm 1: movq 136(w17=int64#5 +# asm 2: movq 136(w17=%r8 +movq 136(%rdi),%r8 + +# qhasm: t6 = w6 +# asm 1: mov t6=int64#6 +# asm 2: mov t6=%r9 +mov %rsi,%r9 + +# qhasm: w6 = w16 if = +# asm 1: cmove t7=int64#6 +# asm 2: mov t7=%r9 +mov %rcx,%r9 + +# qhasm: w7 = w17 if = +# asm 1: cmove w8=int64#2 +# asm 2: movq 64(w8=%rsi +movq 64(%rdi),%rsi + +# qhasm: w18 = *(uint64 *)(workp + 144) +# asm 1: movq 144(w18=int64#3 +# asm 2: movq 144(w18=%rdx +movq 144(%rdi),%rdx + +# qhasm: w9 = *(uint64 *)(workp + 72) +# asm 1: movq 72(w9=int64#4 +# asm 2: movq 72(w9=%rcx +movq 72(%rdi),%rcx + +# qhasm: w19 = *(uint64 *)(workp + 152) +# asm 1: movq 152(w19=int64#5 +# asm 2: movq 152(w19=%r8 +movq 152(%rdi),%r8 + +# qhasm: t8 = w8 +# asm 1: mov t8=int64#6 +# asm 2: mov t8=%r9 +mov %rsi,%r9 + +# qhasm: w8 = w18 if = +# asm 1: cmove t9=int64#6 +# asm 2: mov t9=%r9 +mov %rcx,%r9 + +# qhasm: w9 = w19 if = +# asm 1: cmove caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: t10 = *(uint64 *)(workp + 32) +# asm 1: movq 32(t10=int64#2 +# asm 2: movq 32(t10=%rsi +movq 32(%rdi),%rsi + +# qhasm: t11 = *(uint64 *)(workp + 40) +# asm 1: movq 40(t11=int64#3 +# asm 2: movq 40(t11=%rdx +movq 40(%rdi),%rdx + +# qhasm: t12 = *(uint64 *)(workp + 48) +# asm 1: movq 48(t12=int64#4 +# asm 2: movq 48(t12=%rcx +movq 48(%rdi),%rcx + +# qhasm: t13 = *(uint64 *)(workp + 56) +# asm 1: movq 56(t13=int64#5 +# asm 2: movq 56(t13=%r8 +movq 56(%rdi),%r8 + +# qhasm: t20 = t10 +# asm 1: mov t20=int64#6 +# asm 2: mov t20=%r9 +mov %rsi,%r9 + +# qhasm: t21 = t11 +# asm 1: mov t21=int64#7 +# asm 2: mov t21=%rax +mov %rdx,%rax + +# qhasm: t22 = t12 +# asm 1: mov t22=int64#8 +# asm 2: mov t22=%r10 +mov %rcx,%r10 + +# qhasm: t23 = t13 +# asm 1: mov t23=int64#9 +# asm 2: mov t23=%r11 +mov %r8,%r11 + +# qhasm: carry? t10 += *(uint64 *)(workp + 64) +# asm 1: addq 64(addt0=int64#10 +# asm 2: mov $0,>addt0=%r12 +mov $0,%r12 + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#11 +# asm 2: mov $38,>addt1=%r13 +mov $38,%r13 + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae subt0=int64#10 +# asm 2: mov $0,>subt0=%r12 +mov $0,%r12 + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#11 +# asm 2: mov $38,>subt1=%r13 +mov $38,%r13 + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae t10_stack=stack64#8 +# asm 2: movq t10_stack=56(%rsp) +movq %rsi,56(%rsp) + +# qhasm: t11_stack = t11 +# asm 1: movq t11_stack=stack64#9 +# asm 2: movq t11_stack=64(%rsp) +movq %rdx,64(%rsp) + +# qhasm: t12_stack = t12 +# asm 1: movq t12_stack=stack64#10 +# asm 2: movq t12_stack=72(%rsp) +movq %rcx,72(%rsp) + +# qhasm: t13_stack = t13 +# asm 1: movq t13_stack=stack64#11 +# asm 2: movq t13_stack=80(%rsp) +movq %r8,80(%rsp) + +# qhasm: t20_stack = t20 +# asm 1: movq t20_stack=stack64#12 +# asm 2: movq t20_stack=88(%rsp) +movq %r9,88(%rsp) + +# qhasm: t21_stack = t21 +# asm 1: movq t21_stack=stack64#13 +# asm 2: movq t21_stack=96(%rsp) +movq %rax,96(%rsp) + +# qhasm: t22_stack = t22 +# asm 1: movq t22_stack=stack64#14 +# asm 2: movq t22_stack=104(%rsp) +movq %r10,104(%rsp) + +# qhasm: t23_stack = t23 +# asm 1: movq t23_stack=stack64#15 +# asm 2: movq t23_stack=112(%rsp) +movq %r11,112(%rsp) + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#2 +# asm 2: mov $0,>squarer7=%rsi +mov $0,%rsi + +# qhasm: squarerax = t21_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t20_stack +# asm 1: mulq t71=int64#4 +# asm 2: mov t71=%rcx +mov %rax,%rcx + +# qhasm: t72 = squarerdx +# asm 1: mov t72=int64#5 +# asm 2: mov t72=%r8 +mov %rdx,%r8 + +# qhasm: squarerax = t22_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t21_stack +# asm 1: mulq t73=int64#6 +# asm 2: mov t73=%r9 +mov %rax,%r9 + +# qhasm: squarer4 = squarerdx +# asm 1: mov squarer4=int64#8 +# asm 2: mov squarer4=%r10 +mov %rdx,%r10 + +# qhasm: squarerax = t23_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t22_stack +# asm 1: mulq squarer5=int64#9 +# asm 2: mov squarer5=%r11 +mov %rax,%r11 + +# qhasm: squarer6 = squarerdx +# asm 1: mov squarer6=int64#10 +# asm 2: mov squarer6=%r12 +mov %rdx,%r12 + +# qhasm: squarerax = t22_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t20_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t21_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t20_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 88(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t20_stack +# asm 1: mulq t70=int64#11 +# asm 2: mov t70=%r13 +mov %rax,%r13 + +# qhasm: squaret1 = squarerdx +# asm 1: mov squaret1=int64#12 +# asm 2: mov squaret1=%r14 +mov %rdx,%r14 + +# qhasm: squarerax = t21_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t21_stack +# asm 1: mulq squaret2=int64#13 +# asm 2: mov squaret2=%r15 +mov %rax,%r15 + +# qhasm: squaret3 = squarerdx +# asm 1: mov squaret3=int64#14 +# asm 2: mov squaret3=%rbx +mov %rdx,%rbx + +# qhasm: squarerax = t22_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t22_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t23_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r10,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: squarer4 = squarerax +# asm 1: mov squarer4=int64#8 +# asm 2: mov squarer4=%r10 +mov %rax,%r10 + +# qhasm: squarerax = squarer5 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r11,%rax + +# qhasm: squarer5 = squarerdx +# asm 1: mov squarer5=int64#9 +# asm 2: mov squarer5=%r11 +mov %rdx,%r11 + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? squarer5 += squarerax +# asm 1: add squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r12,%rax + +# qhasm: squarer6 = 0 +# asm 1: mov $0,>squarer6=int64#10 +# asm 2: mov $0,>squarer6=%r12 +mov $0,%r12 + +# qhasm: squarer6 += squarerdx + carry +# asm 1: adc squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rsi,%rax + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#2 +# asm 2: mov $0,>squarer7=%rsi +mov $0,%rsi + +# qhasm: squarer7 += squarerdx + carry +# asm 1: adc squarer8=int64#7 +# asm 2: mov $0,>squarer8=%rax +mov $0,%rax + +# qhasm: squarer8 += squarerdx + carry +# asm 1: adc squarezero=int64#2 +# asm 2: mov $0,>squarezero=%rsi +mov $0,%rsi + +# qhasm: squarer8 += squarezero + carry +# asm 1: adc squarer8=int64#3 +# asm 2: imulq $38,squarer8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? t70 += squarer8 +# asm 1: add squarezero=int64#2 +# asm 2: imulq $38,squarezero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: t70 += squarezero +# asm 1: add t70_stack=stack64#16 +# asm 2: movq t70_stack=120(%rsp) +movq %r13,120(%rsp) + +# qhasm: t71_stack = t71 +# asm 1: movq t71_stack=stack64#17 +# asm 2: movq t71_stack=128(%rsp) +movq %rcx,128(%rsp) + +# qhasm: t72_stack = t72 +# asm 1: movq t72_stack=stack64#18 +# asm 2: movq t72_stack=136(%rsp) +movq %r8,136(%rsp) + +# qhasm: t73_stack = t73 +# asm 1: movq t73_stack=stack64#19 +# asm 2: movq t73_stack=144(%rsp) +movq %r9,144(%rsp) + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#2 +# asm 2: mov $0,>squarer7=%rsi +mov $0,%rsi + +# qhasm: squarerax = t11_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t10_stack +# asm 1: mulq t61=int64#4 +# asm 2: mov t61=%rcx +mov %rax,%rcx + +# qhasm: t62 = squarerdx +# asm 1: mov t62=int64#5 +# asm 2: mov t62=%r8 +mov %rdx,%r8 + +# qhasm: squarerax = t12_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t11_stack +# asm 1: mulq t63=int64#6 +# asm 2: mov t63=%r9 +mov %rax,%r9 + +# qhasm: squarer4 = squarerdx +# asm 1: mov squarer4=int64#8 +# asm 2: mov squarer4=%r10 +mov %rdx,%r10 + +# qhasm: squarerax = t13_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t12_stack +# asm 1: mulq squarer5=int64#9 +# asm 2: mov squarer5=%r11 +mov %rax,%r11 + +# qhasm: squarer6 = squarerdx +# asm 1: mov squarer6=int64#10 +# asm 2: mov squarer6=%r12 +mov %rdx,%r12 + +# qhasm: squarerax = t12_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t10_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t11_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t10_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t10_stack +# asm 1: mulq t60=int64#11 +# asm 2: mov t60=%r13 +mov %rax,%r13 + +# qhasm: squaret1 = squarerdx +# asm 1: mov squaret1=int64#12 +# asm 2: mov squaret1=%r14 +mov %rdx,%r14 + +# qhasm: squarerax = t11_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t11_stack +# asm 1: mulq squaret2=int64#13 +# asm 2: mov squaret2=%r15 +mov %rax,%r15 + +# qhasm: squaret3 = squarerdx +# asm 1: mov squaret3=int64#14 +# asm 2: mov squaret3=%rbx +mov %rdx,%rbx + +# qhasm: squarerax = t12_stack +# asm 1: movq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t12_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: movq squarerax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * t13_stack +# asm 1: mulq squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r10,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: squarer4 = squarerax +# asm 1: mov squarer4=int64#8 +# asm 2: mov squarer4=%r10 +mov %rax,%r10 + +# qhasm: squarerax = squarer5 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r11,%rax + +# qhasm: squarer5 = squarerdx +# asm 1: mov squarer5=int64#9 +# asm 2: mov squarer5=%r11 +mov %rdx,%r11 + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? squarer5 += squarerax +# asm 1: add squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r12,%rax + +# qhasm: squarer6 = 0 +# asm 1: mov $0,>squarer6=int64#10 +# asm 2: mov $0,>squarer6=%r12 +mov $0,%r12 + +# qhasm: squarer6 += squarerdx + carry +# asm 1: adc squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rsi,%rax + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#2 +# asm 2: mov $0,>squarer7=%rsi +mov $0,%rsi + +# qhasm: squarer7 += squarerdx + carry +# asm 1: adc squarer8=int64#7 +# asm 2: mov $0,>squarer8=%rax +mov $0,%rax + +# qhasm: squarer8 += squarerdx + carry +# asm 1: adc squarezero=int64#2 +# asm 2: mov $0,>squarezero=%rsi +mov $0,%rsi + +# qhasm: squarer8 += squarezero + carry +# asm 1: adc squarer8=int64#3 +# asm 2: imulq $38,squarer8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? t60 += squarer8 +# asm 1: add squarezero=int64#2 +# asm 2: imulq $38,squarezero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: t60 += squarezero +# asm 1: add t60_stack=stack64#20 +# asm 2: movq t60_stack=152(%rsp) +movq %r13,152(%rsp) + +# qhasm: t61_stack = t61 +# asm 1: movq t61_stack=stack64#21 +# asm 2: movq t61_stack=160(%rsp) +movq %rcx,160(%rsp) + +# qhasm: t62_stack = t62 +# asm 1: movq t62_stack=stack64#22 +# asm 2: movq t62_stack=168(%rsp) +movq %r8,168(%rsp) + +# qhasm: t63_stack = t63 +# asm 1: movq t63_stack=stack64#23 +# asm 2: movq t63_stack=176(%rsp) +movq %r9,176(%rsp) + +# qhasm: t50 = t60 +# asm 1: mov t50=int64#2 +# asm 2: mov t50=%rsi +mov %r13,%rsi + +# qhasm: t51 = t61 +# asm 1: mov t51=int64#3 +# asm 2: mov t51=%rdx +mov %rcx,%rdx + +# qhasm: t52 = t62 +# asm 1: mov t52=int64#4 +# asm 2: mov t52=%rcx +mov %r8,%rcx + +# qhasm: t53 = t63 +# asm 1: mov t53=int64#5 +# asm 2: mov t53=%r8 +mov %r9,%r8 + +# qhasm: carry? t50 -= t70_stack +# asm 1: subq subt0=int64#6 +# asm 2: mov $0,>subt0=%r9 +mov $0,%r9 + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#7 +# asm 2: mov $38,>subt1=%rax +mov $38,%rax + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae t50_stack=stack64#24 +# asm 2: movq t50_stack=184(%rsp) +movq %rsi,184(%rsp) + +# qhasm: t51_stack = t51 +# asm 1: movq t51_stack=stack64#25 +# asm 2: movq t51_stack=192(%rsp) +movq %rdx,192(%rsp) + +# qhasm: t52_stack = t52 +# asm 1: movq t52_stack=stack64#26 +# asm 2: movq t52_stack=200(%rsp) +movq %rcx,200(%rsp) + +# qhasm: t53_stack = t53 +# asm 1: movq t53_stack=stack64#27 +# asm 2: movq t53_stack=208(%rsp) +movq %r8,208(%rsp) + +# qhasm: t30 = *(uint64 *)(workp + 96) +# asm 1: movq 96(t30=int64#2 +# asm 2: movq 96(t30=%rsi +movq 96(%rdi),%rsi + +# qhasm: t31 = *(uint64 *)(workp + 104) +# asm 1: movq 104(t31=int64#3 +# asm 2: movq 104(t31=%rdx +movq 104(%rdi),%rdx + +# qhasm: t32 = *(uint64 *)(workp + 112) +# asm 1: movq 112(t32=int64#4 +# asm 2: movq 112(t32=%rcx +movq 112(%rdi),%rcx + +# qhasm: t33 = *(uint64 *)(workp + 120) +# asm 1: movq 120(t33=int64#5 +# asm 2: movq 120(t33=%r8 +movq 120(%rdi),%r8 + +# qhasm: t40 = t30 +# asm 1: mov t40=int64#6 +# asm 2: mov t40=%r9 +mov %rsi,%r9 + +# qhasm: t41 = t31 +# asm 1: mov t41=int64#7 +# asm 2: mov t41=%rax +mov %rdx,%rax + +# qhasm: t42 = t32 +# asm 1: mov t42=int64#8 +# asm 2: mov t42=%r10 +mov %rcx,%r10 + +# qhasm: t43 = t33 +# asm 1: mov t43=int64#9 +# asm 2: mov t43=%r11 +mov %r8,%r11 + +# qhasm: carry? t30 += *(uint64 *)(workp + 128) +# asm 1: addq 128(addt0=int64#10 +# asm 2: mov $0,>addt0=%r12 +mov $0,%r12 + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#11 +# asm 2: mov $38,>addt1=%r13 +mov $38,%r13 + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae subt0=int64#10 +# asm 2: mov $0,>subt0=%r12 +mov $0,%r12 + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#11 +# asm 2: mov $38,>subt1=%r13 +mov $38,%r13 + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae t30_stack=stack64#28 +# asm 2: movq t30_stack=216(%rsp) +movq %rsi,216(%rsp) + +# qhasm: t31_stack = t31 +# asm 1: movq t31_stack=stack64#29 +# asm 2: movq t31_stack=224(%rsp) +movq %rdx,224(%rsp) + +# qhasm: t32_stack = t32 +# asm 1: movq t32_stack=stack64#30 +# asm 2: movq t32_stack=232(%rsp) +movq %rcx,232(%rsp) + +# qhasm: t33_stack = t33 +# asm 1: movq t33_stack=stack64#31 +# asm 2: movq t33_stack=240(%rsp) +movq %r8,240(%rsp) + +# qhasm: t40_stack = t40 +# asm 1: movq t40_stack=stack64#32 +# asm 2: movq t40_stack=248(%rsp) +movq %r9,248(%rsp) + +# qhasm: t41_stack = t41 +# asm 1: movq t41_stack=stack64#33 +# asm 2: movq t41_stack=256(%rsp) +movq %rax,256(%rsp) + +# qhasm: t42_stack = t42 +# asm 1: movq t42_stack=stack64#34 +# asm 2: movq t42_stack=264(%rsp) +movq %r10,264(%rsp) + +# qhasm: t43_stack = t43 +# asm 1: movq t43_stack=stack64#35 +# asm 2: movq t43_stack=272(%rsp) +movq %r11,272(%rsp) + +# qhasm: mulr4 = 0 +# asm 1: mov $0,>mulr4=int64#2 +# asm 2: mov $0,>mulr4=%rsi +mov $0,%rsi + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#4 +# asm 2: mov $0,>mulr5=%rcx +mov $0,%rcx + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulx0 = t30_stack +# asm 1: movq mulx0=int64#8 +# asm 2: movq mulx0=%r10 +movq 216(%rsp),%r10 + +# qhasm: mulrax = t20_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 88(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul t90=int64#9 +# asm 2: mov t90=%r11 +mov %rax,%r11 + +# qhasm: t91 = mulrdx +# asm 1: mov t91=int64#10 +# asm 2: mov t91=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = t21_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul t92=int64#11 +# asm 2: mov $0,>t92=%r13 +mov $0,%r13 + +# qhasm: t92 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul t93=int64#12 +# asm 2: mov $0,>t93=%r14 +mov $0,%r14 + +# qhasm: t93 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#8 +# asm 2: movq mulx1=%r10 +movq 224(%rsp),%r10 + +# qhasm: mulrax = t20_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 88(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#8 +# asm 2: movq mulx2=%r10 +movq 232(%rsp),%r10 + +# qhasm: mulrax = t20_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 88(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#8 +# asm 2: movq mulx3=%r10 +movq 240(%rsp),%r10 + +# qhasm: mulrax = t20_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 88(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 96(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 104(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 112(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rsi,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#2 +# asm 2: mov mulr4=%rsi +mov %rax,%rsi + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#4 +# asm 2: mov mulr5=%rcx +mov %rdx,%rcx + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#2 +# asm 2: mov $0,>mulzero=%rsi +mov $0,%rsi + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#3 +# asm 2: imulq $38,mulr8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? t90 += mulr8 +# asm 1: add mulzero=int64#2 +# asm 2: imulq $38,mulzero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: t90 += mulzero +# asm 1: add t90_stack=stack64#12 +# asm 2: movq t90_stack=88(%rsp) +movq %r11,88(%rsp) + +# qhasm: t91_stack = t91 +# asm 1: movq t91_stack=stack64#13 +# asm 2: movq t91_stack=96(%rsp) +movq %r12,96(%rsp) + +# qhasm: t92_stack = t92 +# asm 1: movq t92_stack=stack64#14 +# asm 2: movq t92_stack=104(%rsp) +movq %r13,104(%rsp) + +# qhasm: t93_stack = t93 +# asm 1: movq t93_stack=stack64#15 +# asm 2: movq t93_stack=112(%rsp) +movq %r14,112(%rsp) + +# qhasm: mulr4 = 0 +# asm 1: mov $0,>mulr4=int64#2 +# asm 2: mov $0,>mulr4=%rsi +mov $0,%rsi + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#4 +# asm 2: mov $0,>mulr5=%rcx +mov $0,%rcx + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulx0 = t40_stack +# asm 1: movq mulx0=int64#8 +# asm 2: movq mulx0=%r10 +movq 248(%rsp),%r10 + +# qhasm: mulrax = t10_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul t80=int64#9 +# asm 2: mov t80=%r11 +mov %rax,%r11 + +# qhasm: t81 = mulrdx +# asm 1: mov t81=int64#10 +# asm 2: mov t81=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = t11_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul t82=int64#11 +# asm 2: mov $0,>t82=%r13 +mov $0,%r13 + +# qhasm: t82 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul t83=int64#12 +# asm 2: mov $0,>t83=%r14 +mov $0,%r14 + +# qhasm: t83 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#8 +# asm 2: movq mulx1=%r10 +movq 256(%rsp),%r10 + +# qhasm: mulrax = t10_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#8 +# asm 2: movq mulx2=%r10 +movq 264(%rsp),%r10 + +# qhasm: mulrax = t10_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#8 +# asm 2: movq mulx3=%r10 +movq 272(%rsp),%r10 + +# qhasm: mulrax = t10_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rsi,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#2 +# asm 2: mov mulr4=%rsi +mov %rax,%rsi + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#4 +# asm 2: mov mulr5=%rcx +mov %rdx,%rcx + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#2 +# asm 2: mov $0,>mulzero=%rsi +mov $0,%rsi + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#3 +# asm 2: imulq $38,mulr8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? t80 += mulr8 +# asm 1: add mulzero=int64#2 +# asm 2: imulq $38,mulzero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: t80 += mulzero +# asm 1: add zq0=int64#2 +# asm 2: mov zq0=%rsi +mov %r11,%rsi + +# qhasm: zq1 = t81 +# asm 1: mov zq1=int64#3 +# asm 2: mov zq1=%rdx +mov %r12,%rdx + +# qhasm: zq2 = t82 +# asm 1: mov zq2=int64#4 +# asm 2: mov zq2=%rcx +mov %r13,%rcx + +# qhasm: zq3 = t83 +# asm 1: mov zq3=int64#5 +# asm 2: mov zq3=%r8 +mov %r14,%r8 + +# qhasm: carry? zq0 -= t90_stack +# asm 1: subq subt0=int64#6 +# asm 2: mov $0,>subt0=%r9 +mov $0,%r9 + +# qhasm: subt1 = 38 +# asm 1: mov $38,>subt1=int64#7 +# asm 2: mov $38,>subt1=%rax +mov $38,%rax + +# qhasm: subt1 = subt0 if !carry +# asm 1: cmovae addt0=int64#6 +# asm 2: mov $0,>addt0=%r9 +mov $0,%r9 + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#7 +# asm 2: mov $38,>addt1=%rax +mov $38,%rax + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae squarer7=int64#2 +# asm 2: mov $0,>squarer7=%rsi +mov $0,%rsi + +# qhasm: squarerax = *(uint64 *)(workp + 104) +# asm 1: movq 104(squarerax=int64#7 +# asm 2: movq 104(squarerax=%rax +movq 104(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 96) +# asm 1: mulq 96(xq1=int64#4 +# asm 2: mov xq1=%rcx +mov %rax,%rcx + +# qhasm: xq2 = squarerdx +# asm 1: mov xq2=int64#5 +# asm 2: mov xq2=%r8 +mov %rdx,%r8 + +# qhasm: squarerax = *(uint64 *)(workp + 112) +# asm 1: movq 112(squarerax=int64#7 +# asm 2: movq 112(squarerax=%rax +movq 112(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 104) +# asm 1: mulq 104(xq3=int64#6 +# asm 2: mov xq3=%r9 +mov %rax,%r9 + +# qhasm: squarer4 = squarerdx +# asm 1: mov squarer4=int64#8 +# asm 2: mov squarer4=%r10 +mov %rdx,%r10 + +# qhasm: squarerax = *(uint64 *)(workp + 120) +# asm 1: movq 120(squarerax=int64#7 +# asm 2: movq 120(squarerax=%rax +movq 120(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 112) +# asm 1: mulq 112(squarer5=int64#9 +# asm 2: mov squarer5=%r11 +mov %rax,%r11 + +# qhasm: squarer6 = squarerdx +# asm 1: mov squarer6=int64#10 +# asm 2: mov squarer6=%r12 +mov %rdx,%r12 + +# qhasm: squarerax = *(uint64 *)(workp + 112) +# asm 1: movq 112(squarerax=int64#7 +# asm 2: movq 112(squarerax=%rax +movq 112(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 96) +# asm 1: mulq 96(squarerax=int64#7 +# asm 2: movq 120(squarerax=%rax +movq 120(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 104) +# asm 1: mulq 104(squarerax=int64#7 +# asm 2: movq 120(squarerax=%rax +movq 120(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 96) +# asm 1: mulq 96(squarerax=int64#7 +# asm 2: movq 96(squarerax=%rax +movq 96(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 96) +# asm 1: mulq 96(xq0=int64#11 +# asm 2: mov xq0=%r13 +mov %rax,%r13 + +# qhasm: squaret1 = squarerdx +# asm 1: mov squaret1=int64#12 +# asm 2: mov squaret1=%r14 +mov %rdx,%r14 + +# qhasm: squarerax = *(uint64 *)(workp + 104) +# asm 1: movq 104(squarerax=int64#7 +# asm 2: movq 104(squarerax=%rax +movq 104(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 104) +# asm 1: mulq 104(squaret2=int64#13 +# asm 2: mov squaret2=%r15 +mov %rax,%r15 + +# qhasm: squaret3 = squarerdx +# asm 1: mov squaret3=int64#14 +# asm 2: mov squaret3=%rbx +mov %rdx,%rbx + +# qhasm: squarerax = *(uint64 *)(workp + 112) +# asm 1: movq 112(squarerax=int64#7 +# asm 2: movq 112(squarerax=%rax +movq 112(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 112) +# asm 1: mulq 112(squarerax=int64#7 +# asm 2: movq 120(squarerax=%rax +movq 120(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 120) +# asm 1: mulq 120(squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r10,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: squarer4 = squarerax +# asm 1: mov squarer4=int64#8 +# asm 2: mov squarer4=%r10 +mov %rax,%r10 + +# qhasm: squarerax = squarer5 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r11,%rax + +# qhasm: squarer5 = squarerdx +# asm 1: mov squarer5=int64#9 +# asm 2: mov squarer5=%r11 +mov %rdx,%r11 + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? squarer5 += squarerax +# asm 1: add squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r12,%rax + +# qhasm: squarer6 = 0 +# asm 1: mov $0,>squarer6=int64#10 +# asm 2: mov $0,>squarer6=%r12 +mov $0,%r12 + +# qhasm: squarer6 += squarerdx + carry +# asm 1: adc squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rsi,%rax + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#2 +# asm 2: mov $0,>squarer7=%rsi +mov $0,%rsi + +# qhasm: squarer7 += squarerdx + carry +# asm 1: adc squarer8=int64#7 +# asm 2: mov $0,>squarer8=%rax +mov $0,%rax + +# qhasm: squarer8 += squarerdx + carry +# asm 1: adc squarezero=int64#2 +# asm 2: mov $0,>squarezero=%rsi +mov $0,%rsi + +# qhasm: squarer8 += squarezero + carry +# asm 1: adc squarer8=int64#3 +# asm 2: imulq $38,squarer8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? xq0 += squarer8 +# asm 1: add squarezero=int64#2 +# asm 2: imulq $38,squarezero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: xq0 += squarezero +# asm 1: add squarer7=int64#2 +# asm 2: mov $0,>squarer7=%rsi +mov $0,%rsi + +# qhasm: squarerax = *(uint64 *)(workp + 136) +# asm 1: movq 136(squarerax=int64#7 +# asm 2: movq 136(squarerax=%rax +movq 136(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 128) +# asm 1: mulq 128(zq1=int64#4 +# asm 2: mov zq1=%rcx +mov %rax,%rcx + +# qhasm: zq2 = squarerdx +# asm 1: mov zq2=int64#5 +# asm 2: mov zq2=%r8 +mov %rdx,%r8 + +# qhasm: squarerax = *(uint64 *)(workp + 144) +# asm 1: movq 144(squarerax=int64#7 +# asm 2: movq 144(squarerax=%rax +movq 144(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 136) +# asm 1: mulq 136(zq3=int64#6 +# asm 2: mov zq3=%r9 +mov %rax,%r9 + +# qhasm: squarer4 = squarerdx +# asm 1: mov squarer4=int64#8 +# asm 2: mov squarer4=%r10 +mov %rdx,%r10 + +# qhasm: squarerax = *(uint64 *)(workp + 152) +# asm 1: movq 152(squarerax=int64#7 +# asm 2: movq 152(squarerax=%rax +movq 152(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 144) +# asm 1: mulq 144(squarer5=int64#9 +# asm 2: mov squarer5=%r11 +mov %rax,%r11 + +# qhasm: squarer6 = squarerdx +# asm 1: mov squarer6=int64#10 +# asm 2: mov squarer6=%r12 +mov %rdx,%r12 + +# qhasm: squarerax = *(uint64 *)(workp + 144) +# asm 1: movq 144(squarerax=int64#7 +# asm 2: movq 144(squarerax=%rax +movq 144(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 128) +# asm 1: mulq 128(squarerax=int64#7 +# asm 2: movq 152(squarerax=%rax +movq 152(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 136) +# asm 1: mulq 136(squarerax=int64#7 +# asm 2: movq 152(squarerax=%rax +movq 152(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 128) +# asm 1: mulq 128(squarerax=int64#7 +# asm 2: movq 128(squarerax=%rax +movq 128(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 128) +# asm 1: mulq 128(zq0=int64#11 +# asm 2: mov zq0=%r13 +mov %rax,%r13 + +# qhasm: squaret1 = squarerdx +# asm 1: mov squaret1=int64#12 +# asm 2: mov squaret1=%r14 +mov %rdx,%r14 + +# qhasm: squarerax = *(uint64 *)(workp + 136) +# asm 1: movq 136(squarerax=int64#7 +# asm 2: movq 136(squarerax=%rax +movq 136(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 136) +# asm 1: mulq 136(squaret2=int64#13 +# asm 2: mov squaret2=%r15 +mov %rax,%r15 + +# qhasm: squaret3 = squarerdx +# asm 1: mov squaret3=int64#14 +# asm 2: mov squaret3=%rbx +mov %rdx,%rbx + +# qhasm: squarerax = *(uint64 *)(workp + 144) +# asm 1: movq 144(squarerax=int64#7 +# asm 2: movq 144(squarerax=%rax +movq 144(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 144) +# asm 1: mulq 144(squarerax=int64#7 +# asm 2: movq 152(squarerax=%rax +movq 152(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(workp + 152) +# asm 1: mulq 152(squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r10,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: squarer4 = squarerax +# asm 1: mov squarer4=int64#8 +# asm 2: mov squarer4=%r10 +mov %rax,%r10 + +# qhasm: squarerax = squarer5 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r11,%rax + +# qhasm: squarer5 = squarerdx +# asm 1: mov squarer5=int64#9 +# asm 2: mov squarer5=%r11 +mov %rdx,%r11 + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? squarer5 += squarerax +# asm 1: add squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r12,%rax + +# qhasm: squarer6 = 0 +# asm 1: mov $0,>squarer6=int64#10 +# asm 2: mov $0,>squarer6=%r12 +mov $0,%r12 + +# qhasm: squarer6 += squarerdx + carry +# asm 1: adc squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rsi,%rax + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#2 +# asm 2: mov $0,>squarer7=%rsi +mov $0,%rsi + +# qhasm: squarer7 += squarerdx + carry +# asm 1: adc squarer8=int64#7 +# asm 2: mov $0,>squarer8=%rax +mov $0,%rax + +# qhasm: squarer8 += squarerdx + carry +# asm 1: adc squarezero=int64#2 +# asm 2: mov $0,>squarezero=%rsi +mov $0,%rsi + +# qhasm: squarer8 += squarezero + carry +# asm 1: adc squarer8=int64#3 +# asm 2: imulq $38,squarer8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? zq0 += squarer8 +# asm 1: add squarezero=int64#2 +# asm 2: imulq $38,squarezero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: zq0 += squarezero +# asm 1: add mulr4=int64#2 +# asm 2: mov $0,>mulr4=%rsi +mov $0,%rsi + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#4 +# asm 2: mov $0,>mulr5=%rcx +mov $0,%rcx + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulx0 = *(uint64 *)(workp + 128) +# asm 1: movq 128(mulx0=int64#8 +# asm 2: movq 128(mulx0=%r10 +movq 128(%rdi),%r10 + +# qhasm: mulrax = *(uint64 *)(workp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul zq0=int64#9 +# asm 2: mov zq0=%r11 +mov %rax,%r11 + +# qhasm: zq1 = mulrdx +# asm 1: mov zq1=int64#10 +# asm 2: mov zq1=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = *(uint64 *)(workp + 8) +# asm 1: movq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul zq2=int64#11 +# asm 2: mov $0,>zq2=%r13 +mov $0,%r13 + +# qhasm: zq2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul zq3=int64#12 +# asm 2: mov $0,>zq3=%r14 +mov $0,%r14 + +# qhasm: zq3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#8 +# asm 2: movq 136(mulx1=%r10 +movq 136(%rdi),%r10 + +# qhasm: mulrax = *(uint64 *)(workp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#8 +# asm 2: movq 144(mulx2=%r10 +movq 144(%rdi),%r10 + +# qhasm: mulrax = *(uint64 *)(workp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#8 +# asm 2: movq 152(mulx3=%r10 +movq 152(%rdi),%r10 + +# qhasm: mulrax = *(uint64 *)(workp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rdi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rsi,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#2 +# asm 2: mov mulr4=%rsi +mov %rax,%rsi + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#4 +# asm 2: mov mulr5=%rcx +mov %rdx,%rcx + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#2 +# asm 2: mov $0,>mulzero=%rsi +mov $0,%rsi + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#3 +# asm 2: imulq $38,mulr8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? zq0 += mulr8 +# asm 1: add mulzero=int64#2 +# asm 2: imulq $38,mulzero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: zq0 += mulzero +# asm 1: add mulr4=int64#2 +# asm 2: mov $0,>mulr4=%rsi +mov $0,%rsi + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#4 +# asm 2: mov $0,>mulr5=%rcx +mov $0,%rcx + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulx0 = t60_stack +# asm 1: movq mulx0=int64#8 +# asm 2: movq mulx0=%r10 +movq 152(%rsp),%r10 + +# qhasm: mulrax = t70_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul xp0=int64#9 +# asm 2: mov xp0=%r11 +mov %rax,%r11 + +# qhasm: xp1 = mulrdx +# asm 1: mov xp1=int64#10 +# asm 2: mov xp1=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = t71_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 128(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul xp2=int64#11 +# asm 2: mov $0,>xp2=%r13 +mov $0,%r13 + +# qhasm: xp2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul xp3=int64#12 +# asm 2: mov $0,>xp3=%r14 +mov $0,%r14 + +# qhasm: xp3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#8 +# asm 2: movq mulx1=%r10 +movq 160(%rsp),%r10 + +# qhasm: mulrax = t70_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 128(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#8 +# asm 2: movq mulx2=%r10 +movq 168(%rsp),%r10 + +# qhasm: mulrax = t70_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 128(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#8 +# asm 2: movq mulx3=%r10 +movq 176(%rsp),%r10 + +# qhasm: mulrax = t70_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 120(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 128(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 136(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 144(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rsi,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#2 +# asm 2: mov mulr4=%rsi +mov %rax,%rsi + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#4 +# asm 2: mov mulr5=%rcx +mov %rdx,%rcx + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#2 +# asm 2: mov $0,>mulzero=%rsi +mov $0,%rsi + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#3 +# asm 2: imulq $38,mulr8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? xp0 += mulr8 +# asm 1: add mulzero=int64#2 +# asm 2: imulq $38,mulzero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: xp0 += mulzero +# asm 1: add mul121666rax=int64#7 +# asm 2: movq mul121666rax=%rax +movq 184(%rsp),%rax + +# qhasm: (uint128) mul121666rdx mul121666rax = mul121666rax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(121666) +mulq CRYPTO_SHARED_NAMESPACE(121666)(%rip) + +# qhasm: zp0 = mul121666rax +# asm 1: mov zp0=int64#2 +# asm 2: mov zp0=%rsi +mov %rax,%rsi + +# qhasm: zp1 = mul121666rdx +# asm 1: mov zp1=int64#4 +# asm 2: mov zp1=%rcx +mov %rdx,%rcx + +# qhasm: mul121666rax = t52_stack +# asm 1: movq mul121666rax=int64#7 +# asm 2: movq mul121666rax=%rax +movq 200(%rsp),%rax + +# qhasm: (uint128) mul121666rdx mul121666rax = mul121666rax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(121666) +mulq CRYPTO_SHARED_NAMESPACE(121666)(%rip) + +# qhasm: zp2 = mul121666rax +# asm 1: mov zp2=int64#5 +# asm 2: mov zp2=%r8 +mov %rax,%r8 + +# qhasm: zp3 = mul121666rdx +# asm 1: mov zp3=int64#6 +# asm 2: mov zp3=%r9 +mov %rdx,%r9 + +# qhasm: mul121666rax = t51_stack +# asm 1: movq mul121666rax=int64#7 +# asm 2: movq mul121666rax=%rax +movq 192(%rsp),%rax + +# qhasm: (uint128) mul121666rdx mul121666rax = mul121666rax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(121666) +mulq CRYPTO_SHARED_NAMESPACE(121666)(%rip) + +# qhasm: mul121666t1 = mul121666rax +# asm 1: mov mul121666t1=int64#8 +# asm 2: mov mul121666t1=%r10 +mov %rax,%r10 + +# qhasm: mul121666t2 = mul121666rdx +# asm 1: mov mul121666t2=int64#9 +# asm 2: mov mul121666t2=%r11 +mov %rdx,%r11 + +# qhasm: mul121666rax = t53_stack +# asm 1: movq mul121666rax=int64#7 +# asm 2: movq mul121666rax=%rax +movq 208(%rsp),%rax + +# qhasm: (uint128) mul121666rdx mul121666rax = mul121666rax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(121666) +mulq CRYPTO_SHARED_NAMESPACE(121666)(%rip) + +# qhasm: mul121666t3 = mul121666rax +# asm 1: mov mul121666t3=int64#7 +# asm 2: mov mul121666t3=%rax +mov %rax,%rax + +# qhasm: mul121666r4 = mul121666rdx +# asm 1: mov mul121666r4=int64#3 +# asm 2: mov mul121666r4=%rdx +mov %rdx,%rdx + +# qhasm: carry? zp1 += mul121666t1 +# asm 1: add mul121666r4=int64#3 +# asm 2: imulq $38,mul121666r4=%rdx +imulq $38,%rdx,%rdx + +# qhasm: carry? zp0 += mul121666r4 +# asm 1: add mul121666t1=int64#3 +# asm 2: mov $38,>mul121666t1=%rdx +mov $38,%rdx + +# qhasm: mul121666t2 = 0 +# asm 1: mov $0,>mul121666t2=int64#7 +# asm 2: mov $0,>mul121666t2=%rax +mov $0,%rax + +# qhasm: mul121666t1 = mul121666t2 if !carry +# asm 1: cmovae addt0=int64#3 +# asm 2: mov $0,>addt0=%rdx +mov $0,%rdx + +# qhasm: addt1 = 38 +# asm 1: mov $38,>addt1=int64#7 +# asm 2: mov $38,>addt1=%rax +mov $38,%rax + +# qhasm: addt1 = addt0 if !carry +# asm 1: cmovae mulr4=int64#2 +# asm 2: mov $0,>mulr4=%rsi +mov $0,%rsi + +# qhasm: mulr5 = 0 +# asm 1: mov $0,>mulr5=int64#4 +# asm 2: mov $0,>mulr5=%rcx +mov $0,%rcx + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulx0 = *(uint64 *)(workp + 64) +# asm 1: movq 64(mulx0=int64#8 +# asm 2: movq 64(mulx0=%r10 +movq 64(%rdi),%r10 + +# qhasm: mulrax = t50_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 184(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul zp0=int64#9 +# asm 2: mov zp0=%r11 +mov %rax,%r11 + +# qhasm: zp1 = mulrdx +# asm 1: mov zp1=int64#10 +# asm 2: mov zp1=%r12 +mov %rdx,%r12 + +# qhasm: mulrax = t51_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 192(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul zp2=int64#11 +# asm 2: mov $0,>zp2=%r13 +mov $0,%r13 + +# qhasm: zp2 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 200(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul zp3=int64#12 +# asm 2: mov $0,>zp3=%r14 +mov $0,%r14 + +# qhasm: zp3 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 208(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx0 +# asm 1: mul mulx1=int64#8 +# asm 2: movq 72(mulx1=%r10 +movq 72(%rdi),%r10 + +# qhasm: mulrax = t50_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 184(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 192(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 200(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 208(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx1 +# asm 1: mul mulx2=int64#8 +# asm 2: movq 80(mulx2=%r10 +movq 80(%rdi),%r10 + +# qhasm: mulrax = t50_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 184(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 192(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 200(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 208(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx2 +# asm 1: mul mulx3=int64#8 +# asm 2: movq 88(mulx3=%r10 +movq 88(%rdi),%r10 + +# qhasm: mulrax = t50_stack +# asm 1: movq mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 184(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 192(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 200(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulc=int64#13 +# asm 2: mov $0,>mulc=%r15 +mov $0,%r15 + +# qhasm: mulc += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 208(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * mulx3 +# asm 1: mul mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rsi,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: mulr4 = mulrax +# asm 1: mov mulr4=int64#2 +# asm 2: mov mulr4=%rsi +mov %rax,%rsi + +# qhasm: mulrax = mulr5 +# asm 1: mov mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %rcx,%rax + +# qhasm: mulr5 = mulrdx +# asm 1: mov mulr5=int64#4 +# asm 2: mov mulr5=%rcx +mov %rdx,%rcx + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? mulr5 += mulrax +# asm 1: add mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r8,%rax + +# qhasm: mulr6 = 0 +# asm 1: mov $0,>mulr6=int64#5 +# asm 2: mov $0,>mulr6=%r8 +mov $0,%r8 + +# qhasm: mulr6 += mulrdx + carry +# asm 1: adc mulrax=int64#7 +# asm 2: mov mulrax=%rax +mov %r9,%rax + +# qhasm: mulr7 = 0 +# asm 1: mov $0,>mulr7=int64#6 +# asm 2: mov $0,>mulr7=%r9 +mov $0,%r9 + +# qhasm: mulr7 += mulrdx + carry +# asm 1: adc mulr8=int64#7 +# asm 2: mov $0,>mulr8=%rax +mov $0,%rax + +# qhasm: mulr8 += mulrdx + carry +# asm 1: adc mulzero=int64#2 +# asm 2: mov $0,>mulzero=%rsi +mov $0,%rsi + +# qhasm: mulr8 += mulzero + carry +# asm 1: adc mulr8=int64#3 +# asm 2: imulq $38,mulr8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? zp0 += mulr8 +# asm 1: add mulzero=int64#2 +# asm 2: imulq $38,mulzero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: zp0 += mulzero +# asm 1: add caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-64/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-64/mont25519.c new file mode 120000 index 0000000000..83687c4fc2 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-64/mont25519.c @@ -0,0 +1 @@ +../amd64-51/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-64/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-64/shared-consts.c new file mode 120000 index 0000000000..1a152a1b20 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-64/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-64/work_cswap.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-64/work_cswap.S new file mode 100644 index 0000000000..446aaa6bdc --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-64/work_cswap.S @@ -0,0 +1,388 @@ +// linker define work_cswap + +# qhasm: int64 workp + +# qhasm: int64 swap + +# qhasm: input workp + +# qhasm: input swap + +# qhasm: int64 w0 + +# qhasm: int64 w1 + +# qhasm: int64 w2 + +# qhasm: int64 w3 + +# qhasm: int64 w4 + +# qhasm: int64 w5 + +# qhasm: int64 w6 + +# qhasm: int64 w7 + +# qhasm: int64 w8 + +# qhasm: int64 w9 + +# qhasm: int64 w10 + +# qhasm: int64 w11 + +# qhasm: int64 w12 + +# qhasm: int64 w13 + +# qhasm: int64 w14 + +# qhasm: int64 w15 + +# qhasm: int64 t + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(work_cswap) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(work_cswap) +.globl CRYPTO_SHARED_NAMESPACE(work_cswap) +_CRYPTO_SHARED_NAMESPACE(work_cswap): +CRYPTO_SHARED_NAMESPACE(work_cswap): +mov %rsp,%r11 +and $31,%r11 +add $0,%r11 +sub %r11,%rsp + +# qhasm: =? swap - 1 +# asm 1: cmp $1,w0=int64#2 +# asm 2: movq 0(w0=%rsi +movq 0(%rdi),%rsi + +# qhasm: w8 = *(uint64 *)(workp + 64) +# asm 1: movq 64(w8=int64#3 +# asm 2: movq 64(w8=%rdx +movq 64(%rdi),%rdx + +# qhasm: t = w0 +# asm 1: mov t=int64#4 +# asm 2: mov t=%rcx +mov %rsi,%rcx + +# qhasm: w0 = w8 if = +# asm 1: cmove w1=int64#2 +# asm 2: movq 8(w1=%rsi +movq 8(%rdi),%rsi + +# qhasm: w9 = *(uint64 *)(workp + 72) +# asm 1: movq 72(w9=int64#3 +# asm 2: movq 72(w9=%rdx +movq 72(%rdi),%rdx + +# qhasm: t = w1 +# asm 1: mov t=int64#4 +# asm 2: mov t=%rcx +mov %rsi,%rcx + +# qhasm: w1 = w9 if = +# asm 1: cmove w2=int64#2 +# asm 2: movq 16(w2=%rsi +movq 16(%rdi),%rsi + +# qhasm: w10 = *(uint64 *)(workp + 80) +# asm 1: movq 80(w10=int64#3 +# asm 2: movq 80(w10=%rdx +movq 80(%rdi),%rdx + +# qhasm: t = w2 +# asm 1: mov t=int64#4 +# asm 2: mov t=%rcx +mov %rsi,%rcx + +# qhasm: w2 = w10 if = +# asm 1: cmove w3=int64#2 +# asm 2: movq 24(w3=%rsi +movq 24(%rdi),%rsi + +# qhasm: w11 = *(uint64 *)(workp + 88) +# asm 1: movq 88(w11=int64#3 +# asm 2: movq 88(w11=%rdx +movq 88(%rdi),%rdx + +# qhasm: t = w3 +# asm 1: mov t=int64#4 +# asm 2: mov t=%rcx +mov %rsi,%rcx + +# qhasm: w3 = w11 if = +# asm 1: cmove w4=int64#2 +# asm 2: movq 32(w4=%rsi +movq 32(%rdi),%rsi + +# qhasm: w12 = *(uint64 *)(workp + 96) +# asm 1: movq 96(w12=int64#3 +# asm 2: movq 96(w12=%rdx +movq 96(%rdi),%rdx + +# qhasm: t = w4 +# asm 1: mov t=int64#4 +# asm 2: mov t=%rcx +mov %rsi,%rcx + +# qhasm: w4 = w12 if = +# asm 1: cmove w5=int64#2 +# asm 2: movq 40(w5=%rsi +movq 40(%rdi),%rsi + +# qhasm: w13 = *(uint64 *)(workp + 104) +# asm 1: movq 104(w13=int64#3 +# asm 2: movq 104(w13=%rdx +movq 104(%rdi),%rdx + +# qhasm: t = w5 +# asm 1: mov t=int64#4 +# asm 2: mov t=%rcx +mov %rsi,%rcx + +# qhasm: w5 = w13 if = +# asm 1: cmove w6=int64#2 +# asm 2: movq 48(w6=%rsi +movq 48(%rdi),%rsi + +# qhasm: w14 = *(uint64 *)(workp + 112) +# asm 1: movq 112(w14=int64#3 +# asm 2: movq 112(w14=%rdx +movq 112(%rdi),%rdx + +# qhasm: t = w6 +# asm 1: mov t=int64#4 +# asm 2: mov t=%rcx +mov %rsi,%rcx + +# qhasm: w6 = w14 if = +# asm 1: cmove w7=int64#2 +# asm 2: movq 56(w7=%rsi +movq 56(%rdi),%rsi + +# qhasm: w15 = *(uint64 *)(workp + 120) +# asm 1: movq 120(w15=int64#3 +# asm 2: movq 120(w15=%rdx +movq 120(%rdi),%rdx + +# qhasm: t = w7 +# asm 1: mov t=int64#4 +# asm 2: mov t=%rcx +mov %rsi,%rcx + +# qhasm: w7 = w15 if = +# asm 1: cmove +vmovdqa 0(%rsi),%ymm0 +vmovdqa 32(%rsi),%ymm1 +vmovdqa 64(%rsi),%ymm2 +vmovdqa 96(%rsi),%ymm3 +vmovdqa 128(%rsi),%ymm4 +vmovdqa 160(%rsi),%ymm5 +vmovdqa 192(%rsi),%ymm6 +vmovdqa 224(%rsi),%ymm7 +vmovdqa 256(%rsi),%ymm8 +vmovdqa 288(%rsi),%ymm9 + +// <0',A',1',X1'> ← Pack-D2N(<0,A,1,X1>) +vpsllq $32,%ymm5,%ymm5 +vpor %ymm5,%ymm0,%ymm0 +vpsllq $32,%ymm6,%ymm6 +vpor %ymm6,%ymm1,%ymm1 +vpsllq $32,%ymm7,%ymm7 +vpor %ymm7,%ymm2,%ymm2 +vpsllq $32,%ymm8,%ymm8 +vpor %ymm8,%ymm3,%ymm3 +vpsllq $32,%ymm9,%ymm9 +vpor %ymm9,%ymm4,%ymm4 + +vmovdqa %ymm0,0(%rsi) +vmovdqa %ymm1,32(%rsi) +vmovdqa %ymm2,64(%rsi) +vmovdqa %ymm3,96(%rsi) +vmovdqa %ymm4,128(%rsi) + +// load +vmovdqa 0(%rdi),%ymm0 +vmovdqa 32(%rdi),%ymm11 +vmovdqa 64(%rdi),%ymm2 +vmovdqa 96(%rdi),%ymm12 +vmovdqa 128(%rdi),%ymm4 +vmovdqa 160(%rdi),%ymm13 +vmovdqa 192(%rdi),%ymm6 +vmovdqa 224(%rdi),%ymm14 +vmovdqa 256(%rdi),%ymm8 +vmovdqa 288(%rdi),%ymm15 + +// ← Pack-D2N() +vpsllq $32,%ymm13,%ymm13 +vpor %ymm13,%ymm0,%ymm0 +vpsllq $32,%ymm6,%ymm6 +vpor %ymm6,%ymm11,%ymm11 +vpsllq $32,%ymm14,%ymm14 +vpor %ymm14,%ymm2,%ymm2 +vpsllq $32,%ymm8,%ymm8 +vpor %ymm8,%ymm12,%ymm12 +vpsllq $32,%ymm15,%ymm15 +vpor %ymm15,%ymm4,%ymm4 + +movq $31,%r15 +movq $6,%rcx + +movb $0,%r8b +movq %rdx,%rax + +.L1: +addq %r15,%rax +movb 0(%rax),%r14b +movq %rdx,%rax + +.L2: +movb %r14b,%bl +shrb %cl,%bl +andb $1,%bl +movb %bl,%r9b +xorb %r8b,%bl +movb %r9b,%r8b + +// ← Dense-Swap(,b) +movzbl %bl,%ebx +imul $4,%ebx,%ebx +movl %ebx,56(%rsp) +vpbroadcastd 56(%rsp),%ymm7 +vpaddd swap_c(%rip),%ymm7,%ymm7 +vpand swap_mask(%rip),%ymm7,%ymm7 + +vpermd %ymm0,%ymm7,%ymm0 +vpermd %ymm11,%ymm7,%ymm11 +vpermd %ymm2,%ymm7,%ymm2 +vpermd %ymm12,%ymm7,%ymm12 +vpermd %ymm4,%ymm7,%ymm4 + +// ← Dense-H-H() +vpshufd $68,%ymm0,%ymm1 +vpshufd $238,%ymm0,%ymm3 +vpaddd hh_p1(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm0 + +vpshufd $68,%ymm11,%ymm1 +vpshufd $238,%ymm11,%ymm3 +vpaddd hh_p2(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm11 + +vpshufd $68,%ymm2,%ymm1 +vpshufd $238,%ymm2,%ymm3 +vpaddd hh_p3(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm2 + +vpshufd $68,%ymm12,%ymm1 +vpshufd $238,%ymm12,%ymm3 +vpaddd hh_p2(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm12 + +vpshufd $68,%ymm4,%ymm1 +vpshufd $238,%ymm4,%ymm3 +vpaddd hh_p3(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm4 + +// ← Pack-N2D() +vpsrlq $32,%ymm0,%ymm13 +vpsrlq $32,%ymm11,%ymm6 +vpsrlq $32,%ymm2,%ymm14 +vpsrlq $32,%ymm12,%ymm8 +vpsrlq $32,%ymm4,%ymm15 + +vmovdqa %ymm0,64(%rsp) +vmovdqa %ymm11,96(%rsp) +vmovdqa %ymm2,128(%rsp) +vmovdqa %ymm12,160(%rsp) +vmovdqa %ymm4,192(%rsp) +vmovdqa %ymm13,224(%rsp) +vmovdqa %ymm6,256(%rsp) +vmovdqa %ymm14,288(%rsp) +vmovdqa %ymm8,320(%rsp) +vmovdqa %ymm15,352(%rsp) + +// ← Dense-Dup() +vpermq $20,%ymm0,%ymm0 +vpermq $20,%ymm11,%ymm1 +vpermq $20,%ymm2,%ymm2 +vpermq $20,%ymm12,%ymm3 +vpermq $20,%ymm4,%ymm4 + +// ← Pack-D2N() +vpsrlq $32,%ymm0,%ymm5 +vpsrlq $32,%ymm1,%ymm6 +vpsrlq $32,%ymm2,%ymm7 +vpsrlq $32,%ymm3,%ymm8 +vpsrlq $32,%ymm4,%ymm9 + +vmovdqa %ymm0,384(%rsp) +vmovdqa %ymm1,416(%rsp) +vmovdqa %ymm2,448(%rsp) +vmovdqa %ymm3,480(%rsp) +vmovdqa %ymm4,512(%rsp) +vmovdqa %ymm5,544(%rsp) +vmovdqa %ymm6,576(%rsp) +vmovdqa %ymm7,608(%rsp) +vmovdqa %ymm8,640(%rsp) +vmovdqa %ymm9,672(%rsp) + +// ← Mul(,) +vpaddq %ymm11,%ymm11,%ymm11 +vpaddq %ymm12,%ymm12,%ymm12 +vpaddq %ymm13,%ymm13,%ymm13 +vpaddq %ymm14,%ymm14,%ymm14 +vpaddq %ymm15,%ymm15,%ymm15 + +vpmuludq vec19(%rip),%ymm1,%ymm1 +vpmuludq vec19(%rip),%ymm2,%ymm2 +vpmuludq vec19(%rip),%ymm3,%ymm3 +vpmuludq vec19(%rip),%ymm4,%ymm4 +vpmuludq vec19(%rip),%ymm5,%ymm5 +vpmuludq vec19(%rip),%ymm6,%ymm6 +vpmuludq vec19(%rip),%ymm7,%ymm7 +vpmuludq vec19(%rip),%ymm8,%ymm8 +vpmuludq vec19(%rip),%ymm9,%ymm9 + +vpmuludq %ymm15,%ymm1,%ymm0 +vpmuludq %ymm14,%ymm3,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm13,%ymm5,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm12,%ymm7,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm11,%ymm9,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 320(%rsp),%ymm2,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 256(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 192(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 128(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 + +vpmuludq 352(%rsp),%ymm2,%ymm1 +vpmuludq 320(%rsp),%ymm3,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 288(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 256(%rsp),%ymm5,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 224(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 192(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 160(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 128(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 + +vpmuludq %ymm15,%ymm3,%ymm2 +vpmuludq %ymm14,%ymm5,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq %ymm13,%ymm7,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq %ymm12,%ymm9,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 320(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 256(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 192(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 416(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 + +vpmuludq 352(%rsp),%ymm4,%ymm3 +vpmuludq 320(%rsp),%ymm5,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 288(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 256(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 224(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 192(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 + +vpmuludq %ymm15,%ymm5,%ymm4 +vpmuludq %ymm14,%ymm7,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq %ymm13,%ymm9,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 320(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 256(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 416(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 480(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 + +vpmuludq 352(%rsp),%ymm6,%ymm5 +vpmuludq 320(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 288(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 256(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 + +vpmuludq %ymm15,%ymm7,%ymm6 +vpmuludq %ymm14,%ymm9,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 320(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 416(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 480(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 544(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 352(%rsp),%ymm8,%ymm7 +vpmuludq 320(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq %ymm15,%ymm9,%ymm8 +vpmuludq 416(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 480(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 544(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 608(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vmovdqa 64(%rsp),%ymm11 +vmovdqa 96(%rsp),%ymm12 +vmovdqa 128(%rsp),%ymm13 +vmovdqa 160(%rsp),%ymm14 +vmovdqa 192(%rsp),%ymm15 +vmovdqa 224(%rsp),%ymm9 + +vpmuludq 384(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 + +vpmuludq 448(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 384(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 + +vpmuludq 480(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 448(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 416(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 384(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 + +vpmuludq 416(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 384(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 + +vpmuludq 512(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 448(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 384(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 + +vpmuludq 544(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 512(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 480(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 448(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 416(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 384(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 + +vpmuludq 576(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 512(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 448(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 608(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 576(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 544(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 512(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 480(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 448(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq 640(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 576(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 512(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vpmuludq 512(%rsp),%ymm9,%ymm9 +vpmuludq 672(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 640(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 608(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 576(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 544(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 + +vmovdqa 256(%rsp),%ymm11 +vmovdqa 288(%rsp),%ymm12 +vmovdqa 320(%rsp),%ymm13 +vmovdqa 352(%rsp),%ymm14 + +vpmuludq 384(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 416(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 384(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq 448(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 384(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vpmuludq 480(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 448(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 416(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 384(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 + +vpsrlq $25,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm5,%ymm15 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $26,%ymm6,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpand vecmask26(%rip),%ymm6,%ymm11 + +vpsrlq $25,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask25(%rip),%ymm1,%ymm1 + +vpsrlq $25,%ymm7,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask25(%rip),%ymm7,%ymm14 + +vpsrlq $26,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpand vecmask26(%rip),%ymm2,%ymm12 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpand vecmask26(%rip),%ymm8,%ymm6 + +vpsrlq $25,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask25(%rip),%ymm3,%ymm13 + +vpsrlq $25,%ymm9,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpsllq $1,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpsllq $3,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask25(%rip),%ymm9,%ymm8 + +vpsrlq $26,%ymm4,%ymm10 +vpaddq %ymm10,%ymm15,%ymm15 +vpand vecmask26(%rip),%ymm4,%ymm7 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm3 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $25,%ymm15,%ymm10 +vpaddq %ymm10,%ymm11,%ymm5 +vpand vecmask25(%rip),%ymm15,%ymm9 + +// ← Pack-N2D() +vpsllq $32,%ymm9,%ymm9 +vpor %ymm9,%ymm0,%ymm0 +vpsllq $32,%ymm5,%ymm5 +vpor %ymm5,%ymm3,%ymm3 +vpsllq $32,%ymm14,%ymm14 +vpor %ymm14,%ymm12,%ymm12 +vpsllq $32,%ymm6,%ymm6 +vpor %ymm6,%ymm13,%ymm13 +vpsllq $32,%ymm8,%ymm8 +vpor %ymm8,%ymm7,%ymm7 + +// ← Dense-H-H() +vpshufd $68,%ymm0,%ymm1 +vpshufd $238,%ymm0,%ymm4 +vpaddd hh_p1(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm4,%ymm4 +vpaddd %ymm1,%ymm4,%ymm0 + +vpshufd $68,%ymm3,%ymm1 +vpshufd $238,%ymm3,%ymm4 +vpaddd hh_p2(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm4,%ymm4 +vpaddd %ymm1,%ymm4,%ymm3 + +vpshufd $68,%ymm12,%ymm1 +vpshufd $238,%ymm12,%ymm4 +vpaddd hh_p3(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm4,%ymm4 +vpaddd %ymm1,%ymm4,%ymm12 + +vpshufd $68,%ymm13,%ymm1 +vpshufd $238,%ymm13,%ymm4 +vpaddd hh_p2(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm4,%ymm4 +vpaddd %ymm1,%ymm4,%ymm13 + +vpshufd $68,%ymm7,%ymm1 +vpshufd $238,%ymm7,%ymm4 +vpaddd hh_p3(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm4,%ymm4 +vpaddd %ymm1,%ymm4,%ymm7 + +vmovdqa %ymm0,640(%rsp) +vmovdqa %ymm3,672(%rsp) +vmovdqa %ymm12,704(%rsp) +vmovdqa %ymm13,736(%rsp) +vmovdqa %ymm7,768(%rsp) + +// ← Dense-Shuffle() +vpshufd $78,%ymm0,%ymm1 +vpshufd $78,%ymm3,%ymm2 +vpshufd $78,%ymm12,%ymm4 +vpshufd $78,%ymm13,%ymm5 +vpshufd $78,%ymm7,%ymm6 + +// ← Dense-Blend(<0',A',1',X1'>,,1000) +vpblendd $252,0(%rsi),%ymm1,%ymm1 +vpblendd $252,32(%rsi),%ymm2,%ymm2 +vpblendd $252,64(%rsi),%ymm4,%ymm4 +vpblendd $252,96(%rsi),%ymm5,%ymm5 +vpblendd $252,128(%rsi),%ymm6,%ymm6 + +// ← Pack-D2N() +vpsrlq $32,%ymm1,%ymm8 +vpsrlq $32,%ymm2,%ymm9 +vpsrlq $32,%ymm4,%ymm10 +vpsrlq $32,%ymm5,%ymm11 +vpsrlq $32,%ymm6,%ymm14 + +vmovdqa %ymm1,64(%rsp) +vmovdqa %ymm2,96(%rsp) +vmovdqa %ymm4,128(%rsp) +vmovdqa %ymm5,160(%rsp) +vmovdqa %ymm6,192(%rsp) +vmovdqa %ymm8,224(%rsp) +vmovdqa %ymm9,256(%rsp) +vmovdqa %ymm10,288(%rsp) +vmovdqa %ymm11,320(%rsp) +vmovdqa %ymm14,352(%rsp) + +// ← Pack-D2N() +vpsrlq $32,%ymm0,%ymm9 +vpsrlq $32,%ymm3,%ymm5 +vpsrlq $32,%ymm12,%ymm14 +vpsrlq $32,%ymm13,%ymm6 +vpsrlq $32,%ymm7,%ymm8 + +// ← Sqr() +vmovdqa %ymm12,384(%rsp) +vmovdqa %ymm13,416(%rsp) +vmovdqa %ymm7,448(%rsp) +vmovdqa %ymm9,480(%rsp) +vmovdqa %ymm5,512(%rsp) +vmovdqa %ymm14,544(%rsp) +vmovdqa %ymm6,576(%rsp) +vmovdqa %ymm8,608(%rsp) + +vpmuludq vec19(%rip),%ymm5,%ymm2 +vpmuludq vec19(%rip),%ymm6,%ymm6 +vpmuludq vec38(%rip),%ymm9,%ymm1 +vpmuludq vec38(%rip),%ymm14,%ymm4 +vpmuludq vec38(%rip),%ymm8,%ymm8 + +vpaddq %ymm0,%ymm0,%ymm10 +vpaddq %ymm3,%ymm3,%ymm11 +vpaddq %ymm12,%ymm12,%ymm12 +vpaddq %ymm13,%ymm13,%ymm13 +vpaddq %ymm7,%ymm7,%ymm7 +vpaddq %ymm9,%ymm9,%ymm9 +vpaddq %ymm5,%ymm5,%ymm5 +vpaddq %ymm14,%ymm14,%ymm14 + +vpmuludq %ymm0,%ymm0,%ymm0 +vpmuludq %ymm11,%ymm8,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpmuludq %ymm12,%ymm6,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpmuludq %ymm13,%ymm4,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpmuludq %ymm7,%ymm2,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpmuludq 480(%rsp),%ymm1,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 + +vpmuludq 512(%rsp),%ymm1,%ymm1 +vpmuludq %ymm3,%ymm10,%ymm15 +vpaddq %ymm15,%ymm1,%ymm1 +vpmuludq 384(%rsp),%ymm8,%ymm15 +vpaddq %ymm15,%ymm1,%ymm1 +vpmuludq %ymm13,%ymm6,%ymm15 +vpaddq %ymm15,%ymm1,%ymm1 +vpmuludq 448(%rsp),%ymm4,%ymm15 +vpaddq %ymm15,%ymm1,%ymm1 + +vpmuludq 512(%rsp),%ymm2,%ymm2 +vpmuludq 384(%rsp),%ymm10,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 +vpmuludq %ymm3,%ymm11,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 +vpmuludq %ymm13,%ymm8,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 +vpmuludq %ymm7,%ymm6,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 +vpmuludq %ymm9,%ymm4,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 + +vpmuludq 416(%rsp),%ymm10,%ymm3 +vpmuludq 384(%rsp),%ymm11,%ymm15 +vpaddq %ymm15,%ymm3,%ymm3 +vpmuludq 448(%rsp),%ymm8,%ymm15 +vpaddq %ymm15,%ymm3,%ymm3 +vpmuludq %ymm9,%ymm6,%ymm15 +vpaddq %ymm15,%ymm3,%ymm3 +vpmuludq 512(%rsp),%ymm4,%ymm15 +vpaddq %ymm15,%ymm3,%ymm3 + +vpmuludq 544(%rsp),%ymm4,%ymm4 +vpmuludq 448(%rsp),%ymm10,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 +vpmuludq %ymm11,%ymm13,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 +vmovdqa 384(%rsp),%ymm15 +vpmuludq %ymm15,%ymm15,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 +vpmuludq %ymm9,%ymm8,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 +vpmuludq %ymm5,%ymm6,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 + +vpmuludq 480(%rsp),%ymm10,%ymm5 +vpmuludq 448(%rsp),%ymm11,%ymm15 +vpaddq %ymm15,%ymm5,%ymm5 +vpmuludq 416(%rsp),%ymm12,%ymm15 +vpaddq %ymm15,%ymm5,%ymm5 +vpmuludq 512(%rsp),%ymm8,%ymm15 +vpaddq %ymm15,%ymm5,%ymm5 +vpmuludq %ymm6,%ymm14,%ymm15 +vpaddq %ymm15,%ymm5,%ymm5 + +vpmuludq 576(%rsp),%ymm6,%ymm6 +vpmuludq 512(%rsp),%ymm10,%ymm15 +vpaddq %ymm15,%ymm6,%ymm6 +vpmuludq %ymm11,%ymm9,%ymm15 +vpaddq %ymm15,%ymm6,%ymm6 +vpmuludq 448(%rsp),%ymm12,%ymm15 +vpaddq %ymm15,%ymm6,%ymm6 +vpmuludq 416(%rsp),%ymm13,%ymm15 +vpaddq %ymm15,%ymm6,%ymm6 +vpmuludq %ymm14,%ymm8,%ymm15 +vpaddq %ymm15,%ymm6,%ymm6 + +vpmuludq 544(%rsp),%ymm10,%ymm7 +vpmuludq 512(%rsp),%ymm11,%ymm15 +vpaddq %ymm15,%ymm7,%ymm7 +vpmuludq 480(%rsp),%ymm12,%ymm15 +vpaddq %ymm15,%ymm7,%ymm7 +vpmuludq 448(%rsp),%ymm13,%ymm15 +vpaddq %ymm15,%ymm7,%ymm7 +vpmuludq 576(%rsp),%ymm8,%ymm15 +vpaddq %ymm15,%ymm7,%ymm7 + +vpmuludq 608(%rsp),%ymm8,%ymm8 +vpmuludq 576(%rsp),%ymm10,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 +vpmuludq %ymm11,%ymm14,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 +vpmuludq 512(%rsp),%ymm12,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 +vpmuludq %ymm13,%ymm9,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 +vmovdqa 448(%rsp),%ymm15 +vpmuludq %ymm15,%ymm15,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 + +vpmuludq 448(%rsp),%ymm9,%ymm9 +vpmuludq 608(%rsp),%ymm10,%ymm15 +vpaddq %ymm15,%ymm9,%ymm9 +vpmuludq 576(%rsp),%ymm11,%ymm15 +vpaddq %ymm15,%ymm9,%ymm9 +vpmuludq 544(%rsp),%ymm12,%ymm15 +vpaddq %ymm15,%ymm9,%ymm9 +vpmuludq 512(%rsp),%ymm13,%ymm15 +vpaddq %ymm15,%ymm9,%ymm9 + +vpsrlq $25,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm5,%ymm5 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $26,%ymm6,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpand vecmask26(%rip),%ymm6,%ymm6 + +vpsrlq $25,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask25(%rip),%ymm1,%ymm1 + +vpsrlq $25,%ymm7,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask25(%rip),%ymm7,%ymm7 + +vpsrlq $26,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpand vecmask26(%rip),%ymm2,%ymm2 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpand vecmask26(%rip),%ymm8,%ymm8 + +vpsrlq $25,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask25(%rip),%ymm3,%ymm3 + +vpsrlq $25,%ymm9,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpsllq $1,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpsllq $3,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask25(%rip),%ymm9,%ymm9 + +vpsrlq $26,%ymm4,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask26(%rip),%ymm4,%ymm4 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $25,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm5,%ymm5 + +// ← Pack-N2D() +vpsllq $32,%ymm5,%ymm5 +vpor %ymm5,%ymm0,%ymm0 +vpsllq $32,%ymm6,%ymm6 +vpor %ymm6,%ymm1,%ymm1 +vpsllq $32,%ymm7,%ymm7 +vpor %ymm7,%ymm2,%ymm2 +vpsllq $32,%ymm8,%ymm8 +vpor %ymm8,%ymm3,%ymm3 +vpsllq $32,%ymm9,%ymm9 +vpor %ymm9,%ymm4,%ymm4 + +// ← Dense-Shuffle() +vpshufd $78,%ymm0,%ymm5 +vpshufd $78,%ymm1,%ymm6 +vpshufd $78,%ymm2,%ymm7 +vpshufd $78,%ymm3,%ymm8 +vpshufd $78,%ymm4,%ymm9 + +// ← Dense-Sub(,) +vpaddd sub_p1(%rip),%ymm0,%ymm10 +vpaddd sub_p2(%rip),%ymm1,%ymm11 +vpaddd sub_p3(%rip),%ymm2,%ymm12 +vpaddd sub_p2(%rip),%ymm3,%ymm13 +vpaddd sub_p3(%rip),%ymm4,%ymm14 +vpsubd %ymm5,%ymm10,%ymm10 +vpsubd %ymm6,%ymm11,%ymm11 +vpsubd %ymm7,%ymm12,%ymm12 +vpsubd %ymm8,%ymm13,%ymm13 +vpsubd %ymm9,%ymm14,%ymm14 + +// ← Dense-Blend(,,0111) +vpblendd $3,640(%rsp),%ymm0,%ymm0 +vpblendd $3,672(%rsp),%ymm1,%ymm1 +vpblendd $3,704(%rsp),%ymm2,%ymm2 +vpblendd $3,736(%rsp),%ymm3,%ymm3 +vpblendd $3,768(%rsp),%ymm4,%ymm4 + +vmovdqa %ymm10,704(%rsp) +vmovdqa %ymm11,736(%rsp) +vmovdqa %ymm12,768(%rsp) +vmovdqa %ymm13,800(%rsp) +vmovdqa %ymm14,832(%rsp) + +// ← Pack-D2N() +vpsrlq $32,%ymm0,%ymm5 +vpsrlq $32,%ymm1,%ymm6 +vpsrlq $32,%ymm2,%ymm7 +vpsrlq $32,%ymm3,%ymm8 +vpsrlq $32,%ymm4,%ymm9 + +vmovdqa %ymm0,384(%rsp) +vmovdqa %ymm1,416(%rsp) +vmovdqa %ymm2,448(%rsp) +vmovdqa %ymm3,480(%rsp) +vmovdqa %ymm4,512(%rsp) +vmovdqa %ymm5,544(%rsp) +vmovdqa %ymm6,576(%rsp) +vmovdqa %ymm7,608(%rsp) +vmovdqa %ymm8,640(%rsp) +vmovdqa %ymm9,672(%rsp) + +// ← Mul(,) +vmovdqa 96(%rsp),%ymm11 +vmovdqa 160(%rsp),%ymm12 +vmovdqa 224(%rsp),%ymm13 +vmovdqa 288(%rsp),%ymm14 +vmovdqa 352(%rsp),%ymm15 + +vpaddq %ymm11,%ymm11,%ymm11 +vpaddq %ymm12,%ymm12,%ymm12 +vpaddq %ymm13,%ymm13,%ymm13 +vpaddq %ymm14,%ymm14,%ymm14 +vpaddq %ymm15,%ymm15,%ymm15 + +vpmuludq vec19(%rip),%ymm1,%ymm1 +vpmuludq vec19(%rip),%ymm2,%ymm2 +vpmuludq vec19(%rip),%ymm3,%ymm3 +vpmuludq vec19(%rip),%ymm4,%ymm4 +vpmuludq vec19(%rip),%ymm5,%ymm5 +vpmuludq vec19(%rip),%ymm6,%ymm6 +vpmuludq vec19(%rip),%ymm7,%ymm7 +vpmuludq vec19(%rip),%ymm8,%ymm8 +vpmuludq vec19(%rip),%ymm9,%ymm9 + +vpmuludq %ymm15,%ymm1,%ymm0 +vpmuludq %ymm14,%ymm3,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm13,%ymm5,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm12,%ymm7,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm11,%ymm9,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 320(%rsp),%ymm2,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 256(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 192(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 128(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 + +vpmuludq 352(%rsp),%ymm2,%ymm1 +vpmuludq 320(%rsp),%ymm3,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 288(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 256(%rsp),%ymm5,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 224(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 192(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 160(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 128(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 + +vpmuludq %ymm15,%ymm3,%ymm2 +vpmuludq %ymm14,%ymm5,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq %ymm13,%ymm7,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq %ymm12,%ymm9,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 320(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 256(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 192(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 416(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 + +vpmuludq 352(%rsp),%ymm4,%ymm3 +vpmuludq 320(%rsp),%ymm5,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 288(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 256(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 224(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 192(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 + +vpmuludq %ymm15,%ymm5,%ymm4 +vpmuludq %ymm14,%ymm7,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq %ymm13,%ymm9,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 320(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 256(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 416(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 480(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 + +vpmuludq 352(%rsp),%ymm6,%ymm5 +vpmuludq 320(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 288(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 256(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 + +vpmuludq %ymm15,%ymm7,%ymm6 +vpmuludq %ymm14,%ymm9,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 320(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 416(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 480(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 544(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 352(%rsp),%ymm8,%ymm7 +vpmuludq 320(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq %ymm15,%ymm9,%ymm8 +vpmuludq 416(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 480(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 544(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 608(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vmovdqa 64(%rsp),%ymm11 +vmovdqa 96(%rsp),%ymm12 +vmovdqa 128(%rsp),%ymm13 +vmovdqa 160(%rsp),%ymm14 +vmovdqa 192(%rsp),%ymm15 +vmovdqa 224(%rsp),%ymm9 + +vpmuludq 384(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 + +vpmuludq 416(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 384(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 + +vpmuludq 448(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 384(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 + +vpmuludq 480(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 448(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 416(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 384(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 + +vpmuludq 512(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 448(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 384(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 + +vpmuludq 544(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 512(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 480(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 448(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 416(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 384(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 + +vpmuludq 576(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 512(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 448(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 608(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 576(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 544(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 512(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 480(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 448(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq 640(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 576(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 512(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vpmuludq 512(%rsp),%ymm9,%ymm9 +vpmuludq 672(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 640(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 608(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 576(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 544(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 + +vmovdqa 256(%rsp),%ymm11 +vmovdqa 288(%rsp),%ymm12 +vmovdqa 320(%rsp),%ymm13 +vmovdqa 352(%rsp),%ymm14 + +vpmuludq 384(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 416(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 384(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq 448(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 384(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vpmuludq 480(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 448(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 416(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 384(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 + +vpsrlq $25,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm5,%ymm5 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $26,%ymm6,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpand vecmask26(%rip),%ymm6,%ymm6 + +vpsrlq $25,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask25(%rip),%ymm1,%ymm1 + +vpsrlq $25,%ymm7,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask25(%rip),%ymm7,%ymm14 + +vpsrlq $26,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpand vecmask26(%rip),%ymm2,%ymm2 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpand vecmask26(%rip),%ymm8,%ymm8 + +vpsrlq $25,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask25(%rip),%ymm3,%ymm12 + +vpsrlq $25,%ymm9,%ymm10 +vpmuludq vec19(%rip),%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask25(%rip),%ymm9,%ymm15 + +vpsrlq $26,%ymm4,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask26(%rip),%ymm4,%ymm4 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm11 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $25,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm5,%ymm13 + +// ← Pack-N2D() +vpsllq $32,%ymm13,%ymm13 +vpor %ymm13,%ymm0,%ymm0 +vpsllq $32,%ymm6,%ymm6 +vpor %ymm6,%ymm11,%ymm11 +vpsllq $32,%ymm14,%ymm14 +vpor %ymm14,%ymm2,%ymm2 +vpsllq $32,%ymm8,%ymm8 +vpor %ymm8,%ymm12,%ymm12 +vpsllq $32,%ymm15,%ymm15 +vpor %ymm15,%ymm4,%ymm4 + +// ← Dense-Add(,) +vpaddd %ymm0,%ymm0,%ymm1 +vpaddd %ymm11,%ymm11,%ymm3 +vpaddd %ymm2,%ymm2,%ymm5 +vpaddd %ymm12,%ymm12,%ymm6 +vpaddd %ymm4,%ymm4,%ymm7 + +// <*,T19',*,*> ← Dense-Shuffle() +vpshufd $78,%ymm1,%ymm1 +vpshufd $78,%ymm3,%ymm3 +vpshufd $78,%ymm5,%ymm5 +vpshufd $78,%ymm6,%ymm6 +vpshufd $78,%ymm7,%ymm7 + +// <*,Z2',*,*> ← Dense-Add(,<*,T19',*,*>) +vpaddd %ymm0,%ymm1,%ymm1 +vpaddd %ymm11,%ymm3,%ymm3 +vpaddd %ymm2,%ymm5,%ymm5 +vpaddd %ymm12,%ymm6,%ymm6 +vpaddd %ymm4,%ymm7,%ymm7 + +// ← Dense-Blend(,<*,Z2',*,*>,0100) +vpblendd $3,704(%rsp),%ymm1,%ymm1 +vpblendd $3,736(%rsp),%ymm3,%ymm3 +vpblendd $3,768(%rsp),%ymm5,%ymm5 +vpblendd $3,800(%rsp),%ymm6,%ymm6 +vpblendd $3,832(%rsp),%ymm7,%ymm7 + +// ← Dense-Blend(,,0011) +vpblendd $15,%ymm1,%ymm0,%ymm0 +vpblendd $15,%ymm3,%ymm11,%ymm11 +vpblendd $15,%ymm5,%ymm2,%ymm2 +vpblendd $15,%ymm6,%ymm12,%ymm12 +vpblendd $15,%ymm7,%ymm4,%ymm4 + +// ← Reduce() +vpsrlvd sh2625(%rip),%ymm0,%ymm15 +vpaddd %ymm15,%ymm11,%ymm11 +vpand vecmask2625(%rip),%ymm0,%ymm0 + +vpsrlvd sh2526(%rip),%ymm11,%ymm15 +vpaddd %ymm15,%ymm2,%ymm2 +vpand vecmask2526(%rip),%ymm11,%ymm11 + +vpsrlvd sh2625(%rip),%ymm2,%ymm15 +vpaddd %ymm15,%ymm12,%ymm12 +vpand vecmask2625(%rip),%ymm2,%ymm2 + +vpsrlvd sh2526(%rip),%ymm12,%ymm15 +vpaddd %ymm15,%ymm4,%ymm4 +vpand vecmask2526(%rip),%ymm12,%ymm12 + +vpsrld $26,%ymm4,%ymm15 +vpsllq $32,%ymm15,%ymm15 +vpaddd %ymm15,%ymm0,%ymm0 +vpsrlq $57,%ymm4,%ymm15 +vpmuludq vec19(%rip),%ymm15,%ymm15 +vpaddd %ymm15,%ymm0,%ymm0 +vpand vecmask2625(%rip),%ymm4,%ymm4 + +subb $1,%cl +cmpb $0,%cl +jge .L2 + +movb $7,%cl +subq $1,%r15 +cmpq $0,%r15 +jge .L1 + +// ← Pack-D2N() +vpsrlq $32,%ymm0,%ymm13 +vpand vecmask32(%rip),%ymm0,%ymm0 +vpsrlq $32,%ymm11,%ymm6 +vpand vecmask32(%rip),%ymm11,%ymm11 +vpsrlq $32,%ymm2,%ymm14 +vpand vecmask32(%rip),%ymm2,%ymm2 +vpsrlq $32,%ymm12,%ymm8 +vpand vecmask32(%rip),%ymm12,%ymm12 +vpsrlq $32,%ymm4,%ymm15 +vpand vecmask32(%rip),%ymm4,%ymm4 + +// ← Reduce() +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm11,%ymm11 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $25,%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask25(%rip),%ymm11,%ymm11 + +vpsrlq $26,%ymm2,%ymm10 +vpaddq %ymm10,%ymm12,%ymm12 +vpand vecmask26(%rip),%ymm2,%ymm2 + +vpsrlq $25,%ymm12,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask25(%rip),%ymm12,%ymm12 + +vpsrlq $26,%ymm4,%ymm10 +vpaddq %ymm10,%ymm13,%ymm13 +vpand vecmask26(%rip),%ymm4,%ymm4 + +vpsrlq $25,%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm13,%ymm13 + +vpsrlq $26,%ymm6,%ymm10 +vpaddq %ymm10,%ymm14,%ymm14 +vpand vecmask26(%rip),%ymm6,%ymm6 + +vpsrlq $25,%ymm14,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask25(%rip),%ymm14,%ymm14 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm15,%ymm15 +vpand vecmask26(%rip),%ymm8,%ymm8 + +vpsrlq $25,%ymm15,%ymm10 +vpmuludq vec19(%rip),%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask25(%rip),%ymm15,%ymm15 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm11,%ymm11 +vpand vecmask26(%rip),%ymm0,%ymm0 + +// ← Reduce() +vpsrlq $25,%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask25(%rip),%ymm11,%ymm11 + +vpsrlq $26,%ymm2,%ymm10 +vpaddq %ymm10,%ymm12,%ymm12 +vpand vecmask26(%rip),%ymm2,%ymm2 + +vpsrlq $25,%ymm12,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask25(%rip),%ymm12,%ymm12 + +vpsrlq $26,%ymm4,%ymm10 +vpaddq %ymm10,%ymm13,%ymm13 +vpand vecmask26(%rip),%ymm4,%ymm4 + +vpsrlq $25,%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm13,%ymm13 + +vpsrlq $26,%ymm6,%ymm10 +vpaddq %ymm10,%ymm14,%ymm14 +vpand vecmask26(%rip),%ymm6,%ymm6 + +vpsrlq $25,%ymm14,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask25(%rip),%ymm14,%ymm14 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm15,%ymm15 +vpand vecmask26(%rip),%ymm8,%ymm8 + +vpsrlq $25,%ymm15,%ymm10 +vpmuludq vec19(%rip),%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask25(%rip),%ymm15,%ymm15 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm11,%ymm11 +vpand vecmask26(%rip),%ymm0,%ymm0 + +// store +vmovdqa %ymm0,0(%rdi) +vmovdqa %ymm11,32(%rdi) +vmovdqa %ymm2,64(%rdi) +vmovdqa %ymm12,96(%rdi) +vmovdqa %ymm4,128(%rdi) +vmovdqa %ymm13,160(%rdi) +vmovdqa %ymm6,192(%rdi) +vmovdqa %ymm14,224(%rdi) +vmovdqa %ymm8,256(%rdi) +vmovdqa %ymm15,288(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa4/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa4/mont25519.c new file mode 100644 index 0000000000..214a51e77a --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa4/mont25519.c @@ -0,0 +1,42 @@ +#include "randombytes.h" +#include "crypto_nP.h" +#include "fe25519.h" +#include "crypto_uint64_vec4x1.h" + +#define mladder CRYPTO_SHARED_NAMESPACE(mladder) +extern void mladder(crypto_uint64_vec4x1 *,crypto_uint64_vec4x1 *,const unsigned char *); + +void crypto_nP(unsigned char *r, + const unsigned char *s, + const unsigned char *p) +{ + unsigned char e[32]; + int i; + + crypto_uint64_vec4x1 a[10] = {{0}}; + crypto_uint64_vec4x1 b[10] = {{0}}; + fe25519_10l u,v; + fe25519 z[2]; + + for(i=0;i<32;i++) e[i] = s[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fe25519_unpack(z,p); + fe25519_to_10l(&u,z); + + b[0][0] = b[0][3] = a[0][2] = 1; a[0][1] = 486662; + + for (i=0;i<10;i++) {b[i][2] = u.l[i]; a[i][3] = u.l[i];} + + mladder(b,a,e); + + for (i=0;i<10;i++) {u.l[i] = b[i][0]; v.l[i] = b[i][1];} + + fe25519_from_10l(z,&u); + fe25519_from_10l(z+1,&v); + fe25519_invert(z+1, z+1); + fe25519_mul(z, z, z+1); + fe25519_pack(r, z); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa4/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa4/shared-consts.c new file mode 100644 index 0000000000..a2bcd706a3 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa4/shared-consts.c @@ -0,0 +1,43 @@ +// linker define hh_p1 +// linker define hh_p2 +// linker define hh_p3 +// linker define hh_xor +// linker define sub_p1 +// linker define sub_p2 +// linker define sub_p3 +// linker define swap_c +// linker define swap_mask +// linker define sh2526 +// linker define sh2625 +// linker define vecmask2526 +// linker define vecmask2625 +// linker define vec19 +// linker define vec38 +// linker define vecmask25 +// linker define vecmask26 +// linker define vecmask32 +// linker define mask63 + +#include "consts_namespace.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" + +const crypto_uint32 hh_p1[] = { 0x0,0x0,0x7FFFFDB,0x3FFFFFF,0x0,0x0,0x7FFFFDB,0x3FFFFFF }; +const crypto_uint32 hh_p2[] = { 0x0,0x0,0x3FFFFFF,0x7FFFFFF,0x0,0x0,0x3FFFFFF,0x7FFFFFF }; +const crypto_uint32 hh_p3[] = { 0x0,0x0,0x7FFFFFF,0x3FFFFFF,0x0,0x0,0x7FFFFFF,0x3FFFFFF }; +const crypto_uint32 hh_xor[] = { 0,0,-1,-1,0,0,-1,-1 }; +const crypto_uint32 sub_p1[] = { 0x7FFFFDA,0x3FFFFFE,0x0,0x0,0x0,0x0,0x0,0x0 }; +const crypto_uint32 sub_p2[] = { 0x3FFFFFE,0x7FFFFFE,0x0,0x0,0x0,0x0,0x0,0x0 }; +const crypto_uint32 sub_p3[] = { 0x7FFFFFE,0x3FFFFFE,0x0,0x0,0x0,0x0,0x0,0x0 }; +const crypto_uint32 swap_c[] = { 0,1,2,3,4,5,6,7 }; +const crypto_uint32 swap_mask[] = { 7,7,7,7,7,7,7,7 }; +const crypto_uint32 sh2526[] = { 25,26,25,26,25,26,25,26 }; +const crypto_uint32 sh2625[] = { 26,25,26,25,26,25,26,25 }; +const crypto_uint32 vecmask2526[] = { 0x1FFFFFF,0x3FFFFFF,0x1FFFFFF,0x3FFFFFF,0x1FFFFFF,0x3FFFFFF,0x1FFFFFF,0x3FFFFFF }; +const crypto_uint32 vecmask2625[] = { 0x3FFFFFF,0x1FFFFFF,0x3FFFFFF,0x1FFFFFF,0x3FFFFFF,0x1FFFFFF,0x3FFFFFF,0x1FFFFFF }; +const crypto_uint64 vec19[] = { 19,19,19,19 }; +const crypto_uint64 vec38[] = { 38,38,38,38 }; +const crypto_uint64 vecmask25[] = { 0x1FFFFFF,0x1FFFFFF,0x1FFFFFF,0x1FFFFFF }; +const crypto_uint64 vecmask26[] = { 0x3FFFFFF,0x3FFFFFF,0x3FFFFFF,0x3FFFFFF }; +const crypto_uint64 vecmask32[] = { 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF }; +const crypto_uint64 mask63[] = { 0x7FFFFFFFFFFFFFFF }; diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/consts_namespace.h new file mode 100644 index 0000000000..f3aac3eef1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/consts_namespace.h @@ -0,0 +1,25 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define hh_p1 CRYPTO_SHARED_NAMESPACE(hh_p1) +#define hh_p2 CRYPTO_SHARED_NAMESPACE(hh_p2) +#define hh_p3 CRYPTO_SHARED_NAMESPACE(hh_p3) +#define hh_xor CRYPTO_SHARED_NAMESPACE(hh_xor) +#define sub_p1 CRYPTO_SHARED_NAMESPACE(sub_p1) +#define sub_p2 CRYPTO_SHARED_NAMESPACE(sub_p2) +#define sub_p3 CRYPTO_SHARED_NAMESPACE(sub_p3) +#define swap_c CRYPTO_SHARED_NAMESPACE(swap_c) +#define swap_mask CRYPTO_SHARED_NAMESPACE(swap_mask) +#define sh2526 CRYPTO_SHARED_NAMESPACE(sh2526) +#define sh2625 CRYPTO_SHARED_NAMESPACE(sh2625) +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vec38 CRYPTO_SHARED_NAMESPACE(vec38) +#define vecmask25 CRYPTO_SHARED_NAMESPACE(vecmask25) +#define vecmask26 CRYPTO_SHARED_NAMESPACE(vecmask26) +#define vecmask32 CRYPTO_SHARED_NAMESPACE(vecmask32) +#define vecmask2526 CRYPTO_SHARED_NAMESPACE(vecmask2526) +#define vecmask2625 CRYPTO_SHARED_NAMESPACE(vecmask2625) +#define mask51 CRYPTO_SHARED_NAMESPACE(mask51) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519.h new file mode 120000 index 0000000000..f051c6a9a9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519.h @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa5/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_10l_to_5l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_10l_to_5l.c new file mode 120000 index 0000000000..a966cdac63 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_10l_to_5l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa5/fe25519_10l_to_5l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_from_5l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_from_5l.c new file mode 120000 index 0000000000..2dbe89079f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_from_5l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa5/fe25519_from_5l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_invert.c new file mode 120000 index 0000000000..4884f1cdb9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa5/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_mul.S new file mode 120000 index 0000000000..e0d6e779aa --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_nsquare.S new file mode 120000 index 0000000000..5f68ddec2b --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_to_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_to_10l.c new file mode 120000 index 0000000000..5e5ca1e8e1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_to_10l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519_to_10l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/mladder.S new file mode 120000 index 0000000000..de1063e453 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/mladder.S @@ -0,0 +1 @@ +../amd64-avx2-hey10l-maa4/mladder.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/mont25519.c new file mode 100644 index 0000000000..6d2f6856a2 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/mont25519.c @@ -0,0 +1,44 @@ +#include "randombytes.h" +#include "crypto_nP.h" +#include "fe25519.h" +#include "crypto_uint64_vec4x1.h" + +#define mladder CRYPTO_SHARED_NAMESPACE(mladder) +extern void mladder(crypto_uint64_vec4x1 *,crypto_uint64_vec4x1 *,const unsigned char *); + +void crypto_nP(unsigned char *r, + const unsigned char *s, + const unsigned char *p) +{ + unsigned char e[32]; + int i; + + crypto_uint64_vec4x1 a[10] = {{0}}; + crypto_uint64_vec4x1 b[10] = {{0}}; + fe25519_10l u,v; + fe25519_5l z[2]; + fe25519 w; + + for(i=0;i<32;i++) e[i] = s[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fe25519_unpack(&w,p); + fe25519_to_10l(&u,&w); + + b[0][0] = b[0][3] = a[0][2] = 1; a[0][1] = 486662; + + for (i=0;i<10;i++) {b[i][2] = u.l[i]; a[i][3] = u.l[i];} + + mladder(b,a,e); + + for (i=0;i<10;i++) {u.l[i] = b[i][0]; v.l[i] = b[i][1];} + + fe25519_10l_to_5l(z,&u); + fe25519_10l_to_5l(z+1,&v); + fe25519_invert(z+1, z+1); + fe25519_mul(z, z, z+1); + fe25519_from_5l(&w, z); + fe25519_pack(r, &w); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/shared-consts.c new file mode 100644 index 0000000000..25affedf28 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maa5/shared-consts.c @@ -0,0 +1,43 @@ +// linker define hh_p1 +// linker define hh_p2 +// linker define hh_p3 +// linker define hh_xor +// linker define sub_p1 +// linker define sub_p2 +// linker define sub_p3 +// linker define swap_c +// linker define swap_mask +// linker define sh2526 +// linker define sh2625 +// linker define vecmask2526 +// linker define vecmask2625 +// linker define vec19 +// linker define vec38 +// linker define vecmask25 +// linker define vecmask26 +// linker define vecmask32 +// linker define mask51 + +#include "consts_namespace.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" + +const crypto_uint32 hh_p1[] = { 0x0,0x0,0x7FFFFDB,0x3FFFFFF,0x0,0x0,0x7FFFFDB,0x3FFFFFF }; +const crypto_uint32 hh_p2[] = { 0x0,0x0,0x3FFFFFF,0x7FFFFFF,0x0,0x0,0x3FFFFFF,0x7FFFFFF }; +const crypto_uint32 hh_p3[] = { 0x0,0x0,0x7FFFFFF,0x3FFFFFF,0x0,0x0,0x7FFFFFF,0x3FFFFFF }; +const crypto_uint32 hh_xor[] = { 0,0,-1,-1,0,0,-1,-1 }; +const crypto_uint32 sub_p1[] = { 0x7FFFFDA,0x3FFFFFE,0x0,0x0,0x0,0x0,0x0,0x0 }; +const crypto_uint32 sub_p2[] = { 0x3FFFFFE,0x7FFFFFE,0x0,0x0,0x0,0x0,0x0,0x0 }; +const crypto_uint32 sub_p3[] = { 0x7FFFFFE,0x3FFFFFE,0x0,0x0,0x0,0x0,0x0,0x0 }; +const crypto_uint32 swap_c[] = { 0,1,2,3,4,5,6,7 }; +const crypto_uint32 swap_mask[] = { 7,7,7,7,7,7,7,7 }; +const crypto_uint32 sh2526[] = { 25,26,25,26,25,26,25,26 }; +const crypto_uint32 sh2625[] = { 26,25,26,25,26,25,26,25 }; +const crypto_uint32 vecmask2526[] = { 0x1FFFFFF,0x3FFFFFF,0x1FFFFFF,0x3FFFFFF,0x1FFFFFF,0x3FFFFFF,0x1FFFFFF,0x3FFFFFF }; +const crypto_uint32 vecmask2625[] = { 0x3FFFFFF,0x1FFFFFF,0x3FFFFFF,0x1FFFFFF,0x3FFFFFF,0x1FFFFFF,0x3FFFFFF,0x1FFFFFF }; +const crypto_uint64 vec19[] = { 19,19,19,19 }; +const crypto_uint64 vec38[] = { 38,38,38,38 }; +const crypto_uint64 vecmask25[] = { 0x1FFFFFF,0x1FFFFFF,0x1FFFFFF,0x1FFFFFF }; +const crypto_uint64 vecmask26[] = { 0x3FFFFFF,0x3FFFFFF,0x3FFFFFF,0x3FFFFFF }; +const crypto_uint64 vecmask32[] = { 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF }; +const crypto_uint64 mask51[] = { 0x7FFFFFFFFFFFF }; diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/architectures new file mode 120000 index 0000000000..fc4b638d1f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx2-9l-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/consts_namespace.h new file mode 120000 index 0000000000..b38235d931 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-hey10l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519.h new file mode 120000 index 0000000000..c1d20070e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519.h @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_from_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_from_10l.c new file mode 120000 index 0000000000..71a2ab5077 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_from_10l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519_from_10l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_to_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_to_10l.c new file mode 120000 index 0000000000..5e5ca1e8e1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_to_10l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519_to_10l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/mladder.S new file mode 120000 index 0000000000..de1063e453 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/mladder.S @@ -0,0 +1 @@ +../amd64-avx2-hey10l-maa4/mladder.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/mont25519.c new file mode 120000 index 0000000000..7995253bc4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/mont25519.c @@ -0,0 +1 @@ +../amd64-avx2-hey10l-maa4/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/shared-consts.c new file mode 120000 index 0000000000..7fac5dec7e --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-maax/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-hey10l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/consts_namespace.h new file mode 120000 index 0000000000..b38235d931 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-hey10l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519.h new file mode 120000 index 0000000000..1f57562eab --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519.h @@ -0,0 +1 @@ +../amd64-avx2-ns10l-mxaa/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_from_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_from_10l.c new file mode 120000 index 0000000000..71a2ab5077 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_from_10l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519_from_10l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_mul.S new file mode 120000 index 0000000000..79e7adffa9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_nsquare.S new file mode 120000 index 0000000000..1aef6b0983 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_to_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_to_10l.c new file mode 120000 index 0000000000..5e5ca1e8e1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_to_10l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519_to_10l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/mladder.S new file mode 120000 index 0000000000..de1063e453 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/mladder.S @@ -0,0 +1 @@ +../amd64-avx2-hey10l-maa4/mladder.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/mont25519.c new file mode 120000 index 0000000000..7995253bc4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/mont25519.c @@ -0,0 +1 @@ +../amd64-avx2-hey10l-maa4/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/shared-consts.c new file mode 120000 index 0000000000..7fac5dec7e --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey10l-mxaa/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-hey10l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/consts_namespace.h new file mode 100644 index 0000000000..569c919a16 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/consts_namespace.h @@ -0,0 +1,24 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define hh_p1 CRYPTO_SHARED_NAMESPACE(hh_p1) +#define hh_p2 CRYPTO_SHARED_NAMESPACE(hh_p2) +#define hh_p3 CRYPTO_SHARED_NAMESPACE(hh_p3) +#define hh_xor1 CRYPTO_SHARED_NAMESPACE(hh_xor1) +#define hh_xor2 CRYPTO_SHARED_NAMESPACE(hh_xor2) +#define sub_p1 CRYPTO_SHARED_NAMESPACE(sub_p1) +#define sub_p2 CRYPTO_SHARED_NAMESPACE(sub_p2) +#define sub_p3 CRYPTO_SHARED_NAMESPACE(sub_p3) +#define swap_c CRYPTO_SHARED_NAMESPACE(swap_c) +#define swap_mask CRYPTO_SHARED_NAMESPACE(swap_mask) +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vec1216 CRYPTO_SHARED_NAMESPACE(vec1216) +#define vecmask23 CRYPTO_SHARED_NAMESPACE(vecmask23) +#define vecmask29 CRYPTO_SHARED_NAMESPACE(vecmask29) +#define vecmask29d CRYPTO_SHARED_NAMESPACE(vecmask29d) +#define vecmask32 CRYPTO_SHARED_NAMESPACE(vecmask32) +#define a24 CRYPTO_SHARED_NAMESPACE(a24) +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519.h new file mode 120000 index 0000000000..7a2c948483 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maax/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_from_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_from_9l.c new file mode 120000 index 0000000000..e7ff02d686 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_from_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_from_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_mul.S new file mode 120000 index 0000000000..a969f86af4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_nsquare.S new file mode 120000 index 0000000000..a5dcdec138 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_square.S new file mode 120000 index 0000000000..07c854965f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_to_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_to_9l.c new file mode 120000 index 0000000000..8914a99664 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_to_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_to_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/mladder.S new file mode 100644 index 0000000000..d54c6d52a1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/mladder.S @@ -0,0 +1,1318 @@ +// linker define mladder +// linker use hh_p1 +// linker use hh_p2 +// linker use hh_p3 +// linker use hh_xor1 +// linker use hh_xor2 +// linker use sub_p1 +// linker use sub_p2 +// linker use sub_p3 +// linker use swap_c +// linker use swap_mask +// linker use vec19 +// linker use vec1216 +// linker use vecmask23 +// linker use vecmask29 +// linker use vecmask29d +// linker use vecmask32 + +/* Assembly for Montgomery ladder. */ + +#include "consts_namespace.h" + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(mladder) +.globl CRYPTO_SHARED_NAMESPACE(mladder) +_CRYPTO_SHARED_NAMESPACE(mladder): +CRYPTO_SHARED_NAMESPACE(mladder): + +movq %rsp,%r11 +andq $-32,%rsp +subq $1408,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) + +// load <0,0,1,X1> +vmovdqa 0(%rsi),%ymm0 +vmovdqa 32(%rsi),%ymm1 +vmovdqa 64(%rsi),%ymm2 +vmovdqa 96(%rsi),%ymm3 +vmovdqa 128(%rsi),%ymm4 +vmovdqa 160(%rsi),%ymm5 +vmovdqa 192(%rsi),%ymm6 +vmovdqa 224(%rsi),%ymm7 +vmovdqa 256(%rsi),%ymm8 + +// <0',0',1',X1'> ← Pack-D2N(<0,0,1,X1>) +vpsllq $32,%ymm4,%ymm4 +vpor %ymm4,%ymm0,%ymm0 +vpsllq $32,%ymm5,%ymm5 +vpor %ymm5,%ymm1,%ymm1 +vpsllq $32,%ymm6,%ymm6 +vpor %ymm6,%ymm2,%ymm2 +vpsllq $32,%ymm7,%ymm7 +vpor %ymm7,%ymm3,%ymm3 + +vmovdqa %ymm0,0(%rsi) +vmovdqa %ymm1,32(%rsi) +vmovdqa %ymm2,64(%rsi) +vmovdqa %ymm3,96(%rsi) +vmovdqa %ymm8,128(%rsi) + +// load +vmovdqa 0(%rdi),%ymm10 +vmovdqa 32(%rdi),%ymm11 +vmovdqa 64(%rdi),%ymm12 +vmovdqa 96(%rdi),%ymm13 +vmovdqa 128(%rdi),%ymm0 +vmovdqa 160(%rdi),%ymm1 +vmovdqa 192(%rdi),%ymm2 +vmovdqa 224(%rdi),%ymm3 +vmovdqa 256(%rdi),%ymm4 + +// ← Pack-D2N() +vpsllq $32,%ymm0,%ymm0 +vpor %ymm0,%ymm10,%ymm10 +vpsllq $32,%ymm1,%ymm1 +vpor %ymm1,%ymm11,%ymm11 +vpsllq $32,%ymm2,%ymm2 +vpor %ymm2,%ymm12,%ymm12 +vpsllq $32,%ymm3,%ymm3 +vpor %ymm3,%ymm13,%ymm13 + +movq $31,%r15 +movq $6,%rcx + +movb $0,%r8b +movq %rdx,%rax + +.L1: +addq %r15,%rax +movb 0(%rax),%r14b +movq %rdx,%rax + +.L2: +movb %r14b,%bl +shrb %cl,%bl +andb $1,%bl +movb %bl,%r9b +xorb %r8b,%bl +movb %r9b,%r8b + +// ← Dense-Swap(,b) +movzbl %bl,%ebx +imul $4,%ebx,%ebx +movl %ebx,56(%rsp) +vpbroadcastd 56(%rsp),%ymm7 +vpaddd swap_c(%rip),%ymm7,%ymm7 +vpand swap_mask(%rip),%ymm7,%ymm7 + +vpermd %ymm10,%ymm7,%ymm10 +vpermd %ymm11,%ymm7,%ymm11 +vpermd %ymm12,%ymm7,%ymm12 +vpermd %ymm13,%ymm7,%ymm13 +vpermd %ymm4,%ymm7,%ymm4 + +// ← Dense-H-H() +vpshufd $68,%ymm10,%ymm5 +vpshufd $238,%ymm10,%ymm6 +vpaddd hh_p1(%rip),%ymm5,%ymm5 +vpxor hh_xor1(%rip),%ymm6,%ymm6 +vpaddd %ymm5,%ymm6,%ymm10 + +vpshufd $68,%ymm11,%ymm5 +vpshufd $238,%ymm11,%ymm6 +vpaddd hh_p2(%rip),%ymm5,%ymm5 +vpxor hh_xor1(%rip),%ymm6,%ymm6 +vpaddd %ymm5,%ymm6,%ymm11 + +vpshufd $68,%ymm12,%ymm5 +vpshufd $238,%ymm12,%ymm6 +vpaddd hh_p2(%rip),%ymm5,%ymm5 +vpxor hh_xor1(%rip),%ymm6,%ymm6 +vpaddd %ymm5,%ymm6,%ymm12 + +vpshufd $68,%ymm13,%ymm5 +vpshufd $238,%ymm13,%ymm6 +vpaddd hh_p2(%rip),%ymm5,%ymm5 +vpxor hh_xor1(%rip),%ymm6,%ymm6 +vpaddd %ymm5,%ymm6,%ymm13 + +vpshufd $68,%ymm4,%ymm5 +vpshufd $238,%ymm4,%ymm6 +vpaddd hh_p3(%rip),%ymm5,%ymm5 +vpxor hh_xor2(%rip),%ymm6,%ymm6 +vpaddd %ymm5,%ymm6,%ymm4 + +vpsrld $29,%ymm10,%ymm15 +vpaddd %ymm15,%ymm11,%ymm11 +vpand vecmask29d(%rip),%ymm10,%ymm10 + +vpsrld $29,%ymm11,%ymm15 +vpaddd %ymm15,%ymm12,%ymm12 +vpand vecmask29d(%rip),%ymm11,%ymm11 + +vpsrld $29,%ymm12,%ymm15 +vpaddd %ymm15,%ymm13,%ymm13 +vpand vecmask29d(%rip),%ymm12,%ymm12 + +vpsrld $29,%ymm13,%ymm15 +vpsllq $32,%ymm15,%ymm15 +vpaddd %ymm15,%ymm10,%ymm10 +vpsrlq $61,%ymm13,%ymm15 +vpaddd %ymm15,%ymm4,%ymm4 +vpand vecmask29d(%rip),%ymm13,%ymm13 + +vpsrlq $23,%ymm4,%ymm15 +vpmuludq vec19(%rip),%ymm15,%ymm15 +vpaddd %ymm15,%ymm10,%ymm10 +vpand vecmask23(%rip),%ymm4,%ymm9 + +// ← Pack-N2D() +vpsrlq $32,%ymm10,%ymm5 +vpsrlq $32,%ymm11,%ymm6 +vpsrlq $32,%ymm12,%ymm7 +vpsrlq $32,%ymm13,%ymm8 + +vmovdqa %ymm10,192(%rsp) +vmovdqa %ymm11,224(%rsp) +vmovdqa %ymm12,256(%rsp) +vmovdqa %ymm13,288(%rsp) + +// ← Dense-Dup() +vpermq $20,%ymm10,%ymm10 +vpermq $20,%ymm11,%ymm11 +vpermq $20,%ymm12,%ymm12 +vpermq $20,%ymm13,%ymm13 +vpermq $20,%ymm9,%ymm4 + +// ← Pack-D2N() +vpsrlq $32,%ymm10,%ymm0 +vpsrlq $32,%ymm11,%ymm1 +vpsrlq $32,%ymm12,%ymm2 +vpsrlq $32,%ymm13,%ymm3 + +// ← Mul(,) +vpmuludq %ymm5,%ymm0,%ymm15 +vmovdqa %ymm15,480(%rsp) + +vpmuludq %ymm6,%ymm0,%ymm15 +vpmuludq %ymm5,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,512(%rsp) + +vpmuludq %ymm7,%ymm0,%ymm15 +vpmuludq %ymm6,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,544(%rsp) + +vpmuludq %ymm8,%ymm0,%ymm15 +vpmuludq %ymm7,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,576(%rsp) + +vpmuludq %ymm9,%ymm0,%ymm15 +vpmuludq %ymm8,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,608(%rsp) + +vpmuludq %ymm9,%ymm1,%ymm15 +vpmuludq %ymm8,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,640(%rsp) + +vpmuludq %ymm9,%ymm2,%ymm15 +vpmuludq %ymm8,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,672(%rsp) + +vpmuludq %ymm9,%ymm3,%ymm15 +vpmuludq %ymm8,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,704(%rsp) + +vpmuludq %ymm9,%ymm4,%ymm15 +vmovdqa %ymm15,736(%rsp) + +vpaddq %ymm10,%ymm0,%ymm0 +vpaddq %ymm11,%ymm1,%ymm1 +vpaddq %ymm12,%ymm2,%ymm2 +vpaddq %ymm13,%ymm3,%ymm3 +vpaddq 192(%rsp),%ymm5,%ymm5 +vpaddq 224(%rsp),%ymm6,%ymm6 +vpaddq 256(%rsp),%ymm7,%ymm7 +vpaddq 288(%rsp),%ymm8,%ymm8 + +vpmuludq 192(%rsp),%ymm10,%ymm15 +vmovdqa %ymm15,768(%rsp) +vpaddq 480(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,992(%rsp) + +vpmuludq 224(%rsp),%ymm10,%ymm15 +vpmuludq 192(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,800(%rsp) +vpaddq 512(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1024(%rsp) + +vpmuludq 256(%rsp),%ymm10,%ymm15 +vpmuludq 224(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 192(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,832(%rsp) +vpaddq 544(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1056(%rsp) + +vpmuludq 288(%rsp),%ymm10,%ymm15 +vpmuludq 256(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 224(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 192(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,864(%rsp) +vpaddq 576(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1088(%rsp) + +vpmuludq 288(%rsp),%ymm11,%ymm15 +vpmuludq 256(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 224(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,896(%rsp) +vpaddq 608(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1120(%rsp) + +vpmuludq 288(%rsp),%ymm12,%ymm15 +vpmuludq 256(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,928(%rsp) +vpaddq 640(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1152(%rsp) + +vpmuludq 288(%rsp),%ymm13,%ymm15 +vmovdqa %ymm15,960(%rsp) +vpaddq 672(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1184(%rsp) + +vpmuludq %ymm5,%ymm0,%ymm15 +vmovdqa %ymm15,1216(%rsp) + +vpmuludq %ymm6,%ymm0,%ymm15 +vpmuludq %ymm5,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm10 + +vpmuludq %ymm7,%ymm0,%ymm15 +vpmuludq %ymm6,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm11 + +vpmuludq %ymm8,%ymm0,%ymm15 +vpmuludq %ymm7,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm12 + +vpmuludq %ymm9,%ymm0,%ymm15 +vpmuludq %ymm8,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm13 + +vpmuludq %ymm9,%ymm1,%ymm15 +vpmuludq %ymm8,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm0 + +vpmuludq %ymm9,%ymm2,%ymm15 +vpmuludq %ymm8,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm1 + +vpmuludq %ymm9,%ymm3,%ymm15 +vpmuludq %ymm8,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm2 + +vpmuludq %ymm9,%ymm4,%ymm3 + +vmovdqa 1216(%rsp),%ymm9 + +vpsubq 992(%rsp),%ymm9,%ymm9 +vpaddq 896(%rsp),%ymm9,%ymm9 +vpsubq 1024(%rsp),%ymm10,%ymm10 +vpaddq 928(%rsp),%ymm10,%ymm10 +vpsubq 1056(%rsp),%ymm11,%ymm11 +vpaddq 960(%rsp),%ymm11,%ymm11 +vpsubq 1088(%rsp),%ymm12,%ymm12 +vpsubq 1120(%rsp),%ymm13,%ymm13 +vpaddq 480(%rsp),%ymm13,%ymm13 +vpsubq 1152(%rsp),%ymm0,%ymm0 +vpaddq 512(%rsp),%ymm0,%ymm0 +vpsubq 1184(%rsp),%ymm1,%ymm1 +vpaddq 544(%rsp),%ymm1,%ymm1 +vpsubq 704(%rsp),%ymm2,%ymm2 +vpaddq 576(%rsp),%ymm2,%ymm2 +vpsubq 736(%rsp),%ymm3,%ymm3 +vpaddq 608(%rsp),%ymm3,%ymm3 + +vpsrlq $29,%ymm0,%ymm14 +vpaddq %ymm14,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 +vpmuludq vec1216(%rip),%ymm0,%ymm0 +vpaddq 768(%rsp),%ymm0,%ymm0 + +vpsrlq $29,%ymm1,%ymm14 +vpaddq %ymm14,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 +vpmuludq vec1216(%rip),%ymm1,%ymm1 +vpaddq 800(%rsp),%ymm1,%ymm1 + +vpsrlq $29,%ymm2,%ymm14 +vpaddq %ymm14,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 +vpmuludq vec1216(%rip),%ymm2,%ymm2 +vpaddq 832(%rsp),%ymm2,%ymm2 + +vpsrlq $29,%ymm3,%ymm14 +vpaddq 640(%rsp),%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm3,%ymm3 +vpmuludq vec1216(%rip),%ymm3,%ymm3 +vpaddq 864(%rsp),%ymm3,%ymm3 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq 672(%rsp),%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm4 +vpmuludq vec1216(%rip),%ymm4,%ymm4 +vpaddq %ymm9,%ymm4,%ymm4 + +vpsrlq $29,%ymm15,%ymm14 +vpaddq 704(%rsp),%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm15,%ymm5 +vpmuludq vec1216(%rip),%ymm5,%ymm5 +vpaddq %ymm10,%ymm5,%ymm5 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq 736(%rsp),%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm6 +vpmuludq vec1216(%rip),%ymm6,%ymm6 +vpaddq %ymm11,%ymm6,%ymm6 + +vpsrlq $29,%ymm15,%ymm8 +vpand vecmask29(%rip),%ymm15,%ymm7 + +vpmuludq vec1216(%rip),%ymm7,%ymm7 +vpaddq %ymm12,%ymm7,%ymm7 +vpmuludq vec1216(%rip),%ymm8,%ymm8 +vpaddq %ymm13,%ymm8,%ymm8 + +vpsrlq $29,%ymm4,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +vpsrlq $29,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask29(%rip),%ymm5,%ymm5 + +vpsrlq $29,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 + +vpsrlq $29,%ymm6,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpand vecmask29(%rip),%ymm6,%ymm6 + +vpsrlq $29,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 + +vpsrlq $29,%ymm7,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask29(%rip),%ymm7,%ymm7 + +vpsrlq $29,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask29(%rip),%ymm3,%ymm3 + +vpsrlq $23,%ymm8,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpaddq %ymm10,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpsllq $3,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask23(%rip),%ymm8,%ymm8 + +vpsrlq $29,%ymm4,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +// ← Pack-N2D() +vpsllq $32,%ymm4,%ymm4 +vpor %ymm4,%ymm0,%ymm0 +vpsllq $32,%ymm5,%ymm5 +vpor %ymm5,%ymm1,%ymm1 +vpsllq $32,%ymm6,%ymm6 +vpor %ymm6,%ymm2,%ymm2 +vpsllq $32,%ymm7,%ymm7 +vpor %ymm7,%ymm3,%ymm3 + +// ← Dense-H-H() +vpshufd $68,%ymm0,%ymm9 +vpshufd $238,%ymm0,%ymm10 +vpaddd hh_p1(%rip),%ymm9,%ymm9 +vpxor hh_xor1(%rip),%ymm10,%ymm10 +vpaddd %ymm9,%ymm10,%ymm0 + +vpshufd $68,%ymm1,%ymm9 +vpshufd $238,%ymm1,%ymm10 +vpaddd hh_p2(%rip),%ymm9,%ymm9 +vpxor hh_xor1(%rip),%ymm10,%ymm10 +vpaddd %ymm9,%ymm10,%ymm1 + +vpshufd $68,%ymm2,%ymm9 +vpshufd $238,%ymm2,%ymm10 +vpaddd hh_p2(%rip),%ymm9,%ymm9 +vpxor hh_xor1(%rip),%ymm10,%ymm10 +vpaddd %ymm9,%ymm10,%ymm2 + +vpshufd $68,%ymm3,%ymm9 +vpshufd $238,%ymm3,%ymm10 +vpaddd hh_p2(%rip),%ymm9,%ymm9 +vpxor hh_xor1(%rip),%ymm10,%ymm10 +vpaddd %ymm9,%ymm10,%ymm3 + +vpshufd $68,%ymm8,%ymm9 +vpshufd $238,%ymm8,%ymm10 +vpaddd hh_p3(%rip),%ymm9,%ymm9 +vpxor hh_xor2(%rip),%ymm10,%ymm10 +vpaddd %ymm9,%ymm10,%ymm8 + +vpsrld $29,%ymm0,%ymm15 +vpaddd %ymm15,%ymm1,%ymm1 +vpand vecmask29d(%rip),%ymm0,%ymm0 + +vpsrld $29,%ymm1,%ymm15 +vpaddd %ymm15,%ymm2,%ymm2 +vpand vecmask29d(%rip),%ymm1,%ymm1 + +vpsrld $29,%ymm2,%ymm15 +vpaddd %ymm15,%ymm3,%ymm3 +vpand vecmask29d(%rip),%ymm2,%ymm2 + +vpsrld $29,%ymm3,%ymm15 +vpsllq $32,%ymm15,%ymm15 +vpaddd %ymm15,%ymm0,%ymm0 +vpsrlq $61,%ymm3,%ymm15 +vpaddd %ymm15,%ymm8,%ymm8 +vpand vecmask29d(%rip),%ymm3,%ymm3 + +vpsrlq $23,%ymm8,%ymm15 +vpmuludq vec19(%rip),%ymm15,%ymm15 +vpaddd %ymm15,%ymm0,%ymm0 +vpand vecmask23(%rip),%ymm8,%ymm8 + +vmovdqa %ymm0,480(%rsp) +vmovdqa %ymm1,512(%rsp) +vmovdqa %ymm2,544(%rsp) +vmovdqa %ymm3,576(%rsp) +vmovdqa %ymm8,608(%rsp) + +// ← Dense-Shuffle() +vpshufd $78,%ymm0,%ymm4 +vpshufd $78,%ymm1,%ymm5 +vpshufd $78,%ymm2,%ymm6 +vpshufd $78,%ymm3,%ymm7 +vpshufd $78,%ymm8,%ymm9 + +// ← Dense-Blend(<0',A',1',X1'>,,1000) +vpblendd $252,0(%rsi),%ymm4,%ymm4 +vpblendd $252,32(%rsi),%ymm5,%ymm5 +vpblendd $252,64(%rsi),%ymm6,%ymm6 +vpblendd $252,96(%rsi),%ymm7,%ymm7 +vpblendd $252,128(%rsi),%ymm9,%ymm9 + +// ← Pack-D2N() +vpsrlq $32,%ymm4,%ymm10 +vpsrlq $32,%ymm5,%ymm11 +vpsrlq $32,%ymm6,%ymm12 +vpsrlq $32,%ymm7,%ymm13 + +vmovdqa %ymm4,192(%rsp) +vmovdqa %ymm5,224(%rsp) +vmovdqa %ymm6,256(%rsp) +vmovdqa %ymm7,288(%rsp) +vmovdqa %ymm10,320(%rsp) +vmovdqa %ymm11,352(%rsp) +vmovdqa %ymm12,384(%rsp) +vmovdqa %ymm13,416(%rsp) +vmovdqa %ymm9,448(%rsp) + +// ← Pack-D2N() +vpsrlq $32,%ymm0,%ymm4 +vpsrlq $32,%ymm1,%ymm5 +vpsrlq $32,%ymm2,%ymm6 +vpsrlq $32,%ymm3,%ymm7 + +// ← Sqr() +vpmuludq %ymm1,%ymm8,%ymm15 +vpmuludq %ymm2,%ymm7,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm3,%ymm6,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm4,%ymm5,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpsllq $1,%ymm15,%ymm9 + +vpmuludq %ymm2,%ymm8,%ymm15 +vpmuludq %ymm3,%ymm7,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm4,%ymm6,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpsllq $1,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm5,%ymm14 +vpaddq %ymm14,%ymm15,%ymm10 + +vpsrlq $29,%ymm9,%ymm14 +vpaddq %ymm14,%ymm10,%ymm10 +vpand vecmask29(%rip),%ymm9,%ymm9 + +vpmuludq vec1216(%rip),%ymm9,%ymm9 +vpmuludq %ymm0,%ymm0,%ymm15 +vpaddq %ymm15,%ymm9,%ymm9 + +vpmuludq %ymm3,%ymm8,%ymm15 +vpmuludq %ymm4,%ymm7,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm6,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpsllq $1,%ymm15,%ymm11 + +vpsrlq $29,%ymm10,%ymm14 +vpaddq %ymm14,%ymm11,%ymm11 +vpand vecmask29(%rip),%ymm10,%ymm10 + +vpmuludq vec1216(%rip),%ymm10,%ymm10 +vpmuludq %ymm0,%ymm1,%ymm15 +vpsllq $1,%ymm15,%ymm15 +vpaddq %ymm15,%ymm10,%ymm10 +vpmuludq %ymm4,%ymm8,%ymm15 +vpmuludq %ymm5,%ymm7,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpsllq $1,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm6,%ymm14 +vpaddq %ymm14,%ymm15,%ymm12 + +vpsrlq $29,%ymm11,%ymm14 +vpaddq %ymm14,%ymm12,%ymm12 +vpand vecmask29(%rip),%ymm11,%ymm11 +vpmuludq vec1216(%rip),%ymm11,%ymm11 +vpmuludq %ymm0,%ymm2,%ymm15 +vpsllq $1,%ymm15,%ymm15 +vpmuludq %ymm1,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpaddq %ymm15,%ymm11,%ymm11 +vpmuludq %ymm5,%ymm8,%ymm15 +vpmuludq %ymm6,%ymm7,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpsllq $1,%ymm15,%ymm13 + +vpsrlq $29,%ymm12,%ymm14 +vpaddq %ymm14,%ymm13,%ymm13 +vpand vecmask29(%rip),%ymm12,%ymm12 + +vpmuludq vec1216(%rip),%ymm12,%ymm12 +vpmuludq %ymm0,%ymm3,%ymm15 +vpmuludq %ymm1,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpsllq $1,%ymm15,%ymm15 +vpaddq %ymm15,%ymm12,%ymm12 + +vmovdqa %ymm11,64(%rsp) + +vpmuludq %ymm6,%ymm8,%ymm15 +vpsllq $1,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm7,%ymm14 +vpaddq %ymm14,%ymm15,%ymm14 + +vpsrlq $29,%ymm13,%ymm15 +vpaddq %ymm15,%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm13,%ymm13 + +vpmuludq vec1216(%rip),%ymm13,%ymm13 +vpmuludq %ymm0,%ymm4,%ymm15 +vpmuludq %ymm1,%ymm3,%ymm11 +vpaddq %ymm11,%ymm15,%ymm15 +vpsllq $1,%ymm15,%ymm15 +vpmuludq %ymm2,%ymm2,%ymm11 +vpaddq %ymm11,%ymm15,%ymm15 +vpaddq %ymm15,%ymm13,%ymm13 + +vmovdqa %ymm12,96(%rsp) + +vpmuludq %ymm7,%ymm8,%ymm15 +vpsllq $1,%ymm15,%ymm15 + +vpsrlq $29,%ymm14,%ymm11 +vpaddq %ymm11,%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm14 + +vpmuludq vec1216(%rip),%ymm14,%ymm14 +vpmuludq %ymm0,%ymm5,%ymm12 +vpmuludq %ymm1,%ymm4,%ymm11 +vpaddq %ymm11,%ymm12,%ymm12 +vpmuludq %ymm2,%ymm3,%ymm11 +vpaddq %ymm11,%ymm12,%ymm12 +vpsllq $1,%ymm12,%ymm12 +vpaddq %ymm12,%ymm14,%ymm14 + +vmovdqa %ymm13,128(%rsp) + +vpmuludq %ymm8,%ymm8,%ymm11 + +vpsrlq $29,%ymm15,%ymm12 +vpaddq %ymm12,%ymm11,%ymm11 +vpand vecmask29(%rip),%ymm15,%ymm15 + +vpmuludq vec1216(%rip),%ymm15,%ymm15 +vpmuludq %ymm0,%ymm6,%ymm12 +vpmuludq %ymm1,%ymm5,%ymm13 +vpaddq %ymm12,%ymm13,%ymm13 +vpmuludq %ymm2,%ymm4,%ymm12 +vpaddq %ymm12,%ymm13,%ymm13 +vpsllq $1,%ymm13,%ymm13 +vpmuludq %ymm3,%ymm3,%ymm12 +vpaddq %ymm12,%ymm13,%ymm13 +vpaddq %ymm13,%ymm15,%ymm15 + +vmovdqa %ymm14,160(%rsp) + +vpsrlq $29,%ymm11,%ymm12 +vpand vecmask29(%rip),%ymm11,%ymm11 + +vpmuludq vec1216(%rip),%ymm11,%ymm11 +vpmuludq %ymm0,%ymm7,%ymm13 +vpmuludq %ymm1,%ymm6,%ymm14 +vpaddq %ymm13,%ymm14,%ymm14 +vpmuludq %ymm2,%ymm5,%ymm13 +vpaddq %ymm13,%ymm14,%ymm14 +vpmuludq %ymm3,%ymm4,%ymm13 +vpaddq %ymm13,%ymm14,%ymm14 +vpsllq $1,%ymm14,%ymm14 +vpaddq %ymm14,%ymm11,%ymm11 + +vpmuludq vec1216(%rip),%ymm12,%ymm12 +vpmuludq %ymm0,%ymm8,%ymm13 +vpmuludq %ymm1,%ymm7,%ymm14 +vpaddq %ymm13,%ymm14,%ymm14 +vpmuludq %ymm2,%ymm6,%ymm13 +vpaddq %ymm13,%ymm14,%ymm14 +vpmuludq %ymm3,%ymm5,%ymm13 +vpaddq %ymm13,%ymm14,%ymm14 +vpsllq $1,%ymm14,%ymm14 +vpmuludq %ymm4,%ymm4,%ymm13 +vpaddq %ymm13,%ymm14,%ymm14 +vpaddq %ymm14,%ymm12,%ymm12 + +vmovdqa 128(%rsp),%ymm4 +vpsrlq $29,%ymm4,%ymm5 +vpaddq 160(%rsp),%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm9,%ymm14 +vpaddq %ymm14,%ymm10,%ymm1 +vpand vecmask29(%rip),%ymm9,%ymm0 + +vpsrlq $29,%ymm5,%ymm6 +vpaddq %ymm15,%ymm6,%ymm6 +vpand vecmask29(%rip),%ymm5,%ymm5 + +vpsrlq $29,%ymm1,%ymm14 +vpaddq 64(%rsp),%ymm14,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 + +vpsrlq $29,%ymm6,%ymm7 +vpaddq %ymm11,%ymm7,%ymm7 +vpand vecmask29(%rip),%ymm6,%ymm6 + +vpsrlq $29,%ymm2,%ymm14 +vpaddq 96(%rsp),%ymm14,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 + +vpsrlq $29,%ymm7,%ymm8 +vpaddq %ymm12,%ymm8,%ymm8 +vpand vecmask29(%rip),%ymm7,%ymm7 + +vpsrlq $29,%ymm3,%ymm14 +vpaddq %ymm14,%ymm4,%ymm4 +vpand vecmask29(%rip),%ymm3,%ymm3 + +vpsrlq $23,%ymm8,%ymm14 +vpaddq %ymm14,%ymm0,%ymm0 +vpsllq $1,%ymm14,%ymm14 +vpaddq %ymm14,%ymm0,%ymm0 +vpsllq $3,%ymm14,%ymm14 +vpaddq %ymm14,%ymm0,%ymm0 +vpand vecmask23(%rip),%ymm8,%ymm8 + +vpsrlq $29,%ymm4,%ymm14 +vpaddq %ymm14,%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm0,%ymm14 +vpaddq %ymm14,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +// ← Pack-N2D() +vpsllq $32,%ymm4,%ymm4 +vpor %ymm4,%ymm0,%ymm10 +vpsllq $32,%ymm5,%ymm5 +vpor %ymm5,%ymm1,%ymm11 +vpsllq $32,%ymm6,%ymm6 +vpor %ymm6,%ymm2,%ymm12 +vpsllq $32,%ymm7,%ymm7 +vpor %ymm7,%ymm3,%ymm13 + +// ← Dense-Shuffle() +vpshufd $78,%ymm10,%ymm0 +vpshufd $78,%ymm11,%ymm1 +vpshufd $78,%ymm12,%ymm2 +vpshufd $78,%ymm13,%ymm3 +vpshufd $78,%ymm8,%ymm4 + +// ← Dense-Sub(,) +vpaddd sub_p1(%rip),%ymm10,%ymm5 +vpaddd sub_p2(%rip),%ymm11,%ymm6 +vpaddd sub_p2(%rip),%ymm12,%ymm7 +vpaddd sub_p2(%rip),%ymm13,%ymm9 +vpaddd sub_p3(%rip),%ymm8,%ymm14 +vpsubd %ymm0,%ymm5,%ymm5 +vpsubd %ymm1,%ymm6,%ymm6 +vpsubd %ymm2,%ymm7,%ymm7 +vpsubd %ymm3,%ymm9,%ymm9 +vpsubd %ymm4,%ymm14,%ymm14 + +vmovdqa %ymm5,1248(%rsp) +vmovdqa %ymm6,1280(%rsp) +vmovdqa %ymm7,1312(%rsp) +vmovdqa %ymm9,1344(%rsp) +vmovdqa %ymm14,1376(%rsp) + +// ← Dense-Blend(,,0111) +vpblendd $3,480(%rsp),%ymm10,%ymm10 +vpblendd $3,512(%rsp),%ymm11,%ymm11 +vpblendd $3,544(%rsp),%ymm12,%ymm12 +vpblendd $3,576(%rsp),%ymm13,%ymm13 +vpblendd $3,608(%rsp),%ymm8,%ymm4 + +// ← Pack-D2N() +vpsrlq $32,%ymm10,%ymm0 +vpsrlq $32,%ymm11,%ymm1 +vpsrlq $32,%ymm12,%ymm2 +vpsrlq $32,%ymm13,%ymm3 + +// ← Mul(,) +vmovdqa 320(%rsp),%ymm5 +vmovdqa 352(%rsp),%ymm6 +vmovdqa 384(%rsp),%ymm7 +vmovdqa 416(%rsp),%ymm8 +vmovdqa 448(%rsp),%ymm9 + +vpmuludq %ymm5,%ymm0,%ymm15 +vmovdqa %ymm15,480(%rsp) + +vpmuludq %ymm6,%ymm0,%ymm15 +vpmuludq %ymm5,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,512(%rsp) + +vpmuludq %ymm7,%ymm0,%ymm15 +vpmuludq %ymm6,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,544(%rsp) + +vpmuludq %ymm8,%ymm0,%ymm15 +vpmuludq %ymm7,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,576(%rsp) + +vpmuludq %ymm9,%ymm0,%ymm15 +vpmuludq %ymm8,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,608(%rsp) + +vpmuludq %ymm9,%ymm1,%ymm15 +vpmuludq %ymm8,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,640(%rsp) + +vpmuludq %ymm9,%ymm2,%ymm15 +vpmuludq %ymm8,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,672(%rsp) + +vpmuludq %ymm9,%ymm3,%ymm15 +vpmuludq %ymm8,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,704(%rsp) + +vpmuludq %ymm9,%ymm4,%ymm15 +vmovdqa %ymm15,736(%rsp) + +vpaddq %ymm10,%ymm0,%ymm0 +vpaddq %ymm11,%ymm1,%ymm1 +vpaddq %ymm12,%ymm2,%ymm2 +vpaddq %ymm13,%ymm3,%ymm3 +vpaddq 192(%rsp),%ymm5,%ymm5 +vpaddq 224(%rsp),%ymm6,%ymm6 +vpaddq 256(%rsp),%ymm7,%ymm7 +vpaddq 288(%rsp),%ymm8,%ymm8 + +vpmuludq 192(%rsp),%ymm10,%ymm15 +vmovdqa %ymm15,768(%rsp) +vpaddq 480(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,992(%rsp) + +vpmuludq 224(%rsp),%ymm10,%ymm15 +vpmuludq 192(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,800(%rsp) +vpaddq 512(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1024(%rsp) + +vpmuludq 256(%rsp),%ymm10,%ymm15 +vpmuludq 224(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 192(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,832(%rsp) +vpaddq 544(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1056(%rsp) + +vpmuludq 288(%rsp),%ymm10,%ymm15 +vpmuludq 256(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 224(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 192(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,864(%rsp) +vpaddq 576(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1088(%rsp) + +vpmuludq 288(%rsp),%ymm11,%ymm15 +vpmuludq 256(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 224(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,896(%rsp) +vpaddq 608(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1120(%rsp) + +vpmuludq 288(%rsp),%ymm12,%ymm15 +vpmuludq 256(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,928(%rsp) +vpaddq 640(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1152(%rsp) + +vpmuludq 288(%rsp),%ymm13,%ymm15 +vmovdqa %ymm15,960(%rsp) +vpaddq 672(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1184(%rsp) + +vpmuludq %ymm5,%ymm0,%ymm15 +vmovdqa %ymm15,1216(%rsp) + +vpmuludq %ymm6,%ymm0,%ymm15 +vpmuludq %ymm5,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm10 + +vpmuludq %ymm7,%ymm0,%ymm15 +vpmuludq %ymm6,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm11 + +vpmuludq %ymm8,%ymm0,%ymm15 +vpmuludq %ymm7,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm12 + +vpmuludq %ymm9,%ymm0,%ymm15 +vpmuludq %ymm8,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm13 + +vpmuludq %ymm9,%ymm1,%ymm15 +vpmuludq %ymm8,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm0 + +vpmuludq %ymm9,%ymm2,%ymm15 +vpmuludq %ymm8,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm1 + +vpmuludq %ymm9,%ymm3,%ymm15 +vpmuludq %ymm8,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm2 + +vpmuludq %ymm9,%ymm4,%ymm3 + +vmovdqa 1216(%rsp),%ymm9 + +vpsubq 992(%rsp),%ymm9,%ymm9 +vpaddq 896(%rsp),%ymm9,%ymm9 +vpsubq 1024(%rsp),%ymm10,%ymm10 +vpaddq 928(%rsp),%ymm10,%ymm10 +vpsubq 1056(%rsp),%ymm11,%ymm11 +vpaddq 960(%rsp),%ymm11,%ymm11 +vpsubq 1088(%rsp),%ymm12,%ymm12 +vpsubq 1120(%rsp),%ymm13,%ymm13 +vpaddq 480(%rsp),%ymm13,%ymm13 +vpsubq 1152(%rsp),%ymm0,%ymm0 +vpaddq 512(%rsp),%ymm0,%ymm0 +vpsubq 1184(%rsp),%ymm1,%ymm1 +vpaddq 544(%rsp),%ymm1,%ymm1 +vpsubq 704(%rsp),%ymm2,%ymm2 +vpaddq 576(%rsp),%ymm2,%ymm2 +vpsubq 736(%rsp),%ymm3,%ymm3 +vpaddq 608(%rsp),%ymm3,%ymm3 + +vpsrlq $29,%ymm0,%ymm14 +vpaddq %ymm14,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 +vpmuludq vec1216(%rip),%ymm0,%ymm0 +vpaddq 768(%rsp),%ymm0,%ymm0 + +vpsrlq $29,%ymm1,%ymm14 +vpaddq %ymm14,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 +vpmuludq vec1216(%rip),%ymm1,%ymm1 +vpaddq 800(%rsp),%ymm1,%ymm1 + +vpsrlq $29,%ymm2,%ymm14 +vpaddq %ymm14,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 +vpmuludq vec1216(%rip),%ymm2,%ymm2 +vpaddq 832(%rsp),%ymm2,%ymm2 + +vpsrlq $29,%ymm3,%ymm14 +vpaddq 640(%rsp),%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm3,%ymm3 +vpmuludq vec1216(%rip),%ymm3,%ymm3 +vpaddq 864(%rsp),%ymm3,%ymm3 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq 672(%rsp),%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm4 +vpmuludq vec1216(%rip),%ymm4,%ymm4 +vpaddq %ymm9,%ymm4,%ymm4 + +vpsrlq $29,%ymm15,%ymm14 +vpaddq 704(%rsp),%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm15,%ymm5 +vpmuludq vec1216(%rip),%ymm5,%ymm5 +vpaddq %ymm10,%ymm5,%ymm5 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq 736(%rsp),%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm6 +vpmuludq vec1216(%rip),%ymm6,%ymm6 +vpaddq %ymm11,%ymm6,%ymm6 + +vpsrlq $29,%ymm15,%ymm8 +vpand vecmask29(%rip),%ymm15,%ymm7 + +vpmuludq vec1216(%rip),%ymm7,%ymm7 +vpaddq %ymm12,%ymm7,%ymm7 +vpmuludq vec1216(%rip),%ymm8,%ymm8 +vpaddq %ymm13,%ymm8,%ymm8 + +vpsrlq $29,%ymm4,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +vpsrlq $29,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask29(%rip),%ymm5,%ymm5 + +vpsrlq $29,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 + +vpsrlq $29,%ymm6,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpand vecmask29(%rip),%ymm6,%ymm6 + +vpsrlq $29,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 + +vpsrlq $29,%ymm7,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask29(%rip),%ymm7,%ymm7 + +vpsrlq $29,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm9 +vpand vecmask29(%rip),%ymm3,%ymm3 + +vpsrlq $23,%ymm8,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpaddq %ymm10,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpsllq $3,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask23(%rip),%ymm8,%ymm4 + +vpsrlq $29,%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm9,%ymm9 + +vpsrlq $29,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +// ← Pack-N2D() +vpsllq $32,%ymm9,%ymm9 +vpor %ymm9,%ymm0,%ymm10 +vpsllq $32,%ymm5,%ymm5 +vpor %ymm5,%ymm1,%ymm11 +vpsllq $32,%ymm6,%ymm6 +vpor %ymm6,%ymm2,%ymm12 +vpsllq $32,%ymm7,%ymm7 +vpor %ymm7,%ymm3,%ymm13 + +// ← Dense-Add(,) +vpaddd %ymm10,%ymm10,%ymm0 +vpaddd %ymm11,%ymm11,%ymm1 +vpaddd %ymm12,%ymm12,%ymm2 +vpaddd %ymm13,%ymm13,%ymm3 +vpaddd %ymm4,%ymm4,%ymm5 + +// <*,T19',*,*> ← Dense-Shuffle() +vpshufd $78,%ymm0,%ymm0 +vpshufd $78,%ymm1,%ymm1 +vpshufd $78,%ymm2,%ymm2 +vpshufd $78,%ymm3,%ymm3 +vpshufd $78,%ymm5,%ymm5 + +// <*,Z2',*,*> ← Dense-Add(,<*,T19',*,*>) +vpaddd %ymm10,%ymm0,%ymm0 +vpaddd %ymm11,%ymm1,%ymm1 +vpaddd %ymm12,%ymm2,%ymm2 +vpaddd %ymm13,%ymm3,%ymm3 +vpaddd %ymm4,%ymm5,%ymm5 + +// ← Dense-Blend(,<*,Z2',*,*>,0100) +vpblendd $3,1248(%rsp),%ymm0,%ymm0 +vpblendd $3,1280(%rsp),%ymm1,%ymm1 +vpblendd $3,1312(%rsp),%ymm2,%ymm2 +vpblendd $3,1344(%rsp),%ymm3,%ymm3 +vpblendd $3,1376(%rsp),%ymm5,%ymm5 + +// ← Dense-Blend(,,0011) +vpblendd $15,%ymm0,%ymm10,%ymm10 +vpblendd $15,%ymm1,%ymm11,%ymm11 +vpblendd $15,%ymm2,%ymm12,%ymm12 +vpblendd $15,%ymm3,%ymm13,%ymm13 +vpblendd $15,%ymm5,%ymm4,%ymm4 + +subb $1,%cl +cmpb $0,%cl +jge .L2 + +movb $7,%cl +subq $1,%r15 +cmpq $0,%r15 +jge .L1 + +// ← Pack-D2N() +vpsrlq $32,%ymm10,%ymm0 +vpand vecmask32(%rip),%ymm10,%ymm10 +vpsrlq $32,%ymm11,%ymm1 +vpand vecmask32(%rip),%ymm11,%ymm11 +vpsrlq $32,%ymm12,%ymm2 +vpand vecmask32(%rip),%ymm12,%ymm12 +vpsrlq $32,%ymm13,%ymm3 +vpand vecmask32(%rip),%ymm13,%ymm13 + +// ← Reduce() +vpsrlq $29,%ymm10,%ymm15 +vpaddq %ymm15,%ymm11,%ymm11 +vpand vecmask29(%rip),%ymm10,%ymm10 + +vpsrlq $29,%ymm11,%ymm15 +vpaddq %ymm15,%ymm12,%ymm12 +vpand vecmask29(%rip),%ymm11,%ymm11 + +vpsrlq $29,%ymm12,%ymm15 +vpaddq %ymm15,%ymm13,%ymm13 +vpand vecmask29(%rip),%ymm12,%ymm12 + +vpsrlq $29,%ymm13,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpand vecmask29(%rip),%ymm13,%ymm13 + +vpsrlq $29,%ymm0,%ymm15 +vpaddq %ymm15,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +vpsrlq $29,%ymm1,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 + +vpsrlq $29,%ymm2,%ymm15 +vpaddq %ymm15,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 + +vpsrlq $29,%ymm3,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 +vpand vecmask29(%rip),%ymm3,%ymm3 + +vpsrlq $23,%ymm4,%ymm15 +vpmuludq vec19(%rip),%ymm15,%ymm15 +vpaddq %ymm15,%ymm10,%ymm10 +vpand vecmask23(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm10,%ymm15 +vpaddq %ymm15,%ymm11,%ymm11 +vpand vecmask29(%rip),%ymm10,%ymm10 + +// ← Reduce() +vpsrlq $29,%ymm11,%ymm15 +vpaddq %ymm15,%ymm12,%ymm12 +vpand vecmask29(%rip),%ymm11,%ymm11 + +vpsrlq $29,%ymm12,%ymm15 +vpaddq %ymm15,%ymm13,%ymm13 +vpand vecmask29(%rip),%ymm12,%ymm12 + +vpsrlq $29,%ymm13,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpand vecmask29(%rip),%ymm13,%ymm13 + +vpsrlq $29,%ymm0,%ymm15 +vpaddq %ymm15,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +vpsrlq $29,%ymm1,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 + +vpsrlq $29,%ymm2,%ymm15 +vpaddq %ymm15,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 + +vpsrlq $29,%ymm3,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 +vpand vecmask29(%rip),%ymm3,%ymm3 + +vpsrlq $23,%ymm4,%ymm15 +vpmuludq vec19(%rip),%ymm15,%ymm15 +vpaddq %ymm15,%ymm10,%ymm10 +vpand vecmask23(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm10,%ymm15 +vpaddq %ymm15,%ymm11,%ymm11 +vpand vecmask29(%rip),%ymm10,%ymm10 + +// store +vmovdqa %ymm10,0(%rdi) +vmovdqa %ymm11,32(%rdi) +vmovdqa %ymm12,64(%rdi) +vmovdqa %ymm13,96(%rdi) +vmovdqa %ymm0,128(%rdi) +vmovdqa %ymm1,160(%rdi) +vmovdqa %ymm2,192(%rdi) +vmovdqa %ymm3,224(%rdi) +vmovdqa %ymm4,256(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/mont25519.c new file mode 100644 index 0000000000..d7a12a54d9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/mont25519.c @@ -0,0 +1,42 @@ +#include "randombytes.h" +#include "crypto_nP.h" +#include "fe25519.h" +#include "crypto_uint64_vec4x1.h" + +#define mladder CRYPTO_SHARED_NAMESPACE(mladder) +extern void mladder(crypto_uint64_vec4x1 *,crypto_uint64_vec4x1 *,const unsigned char *); + +void crypto_nP(unsigned char *r, + const unsigned char *s, + const unsigned char *p) +{ + unsigned char e[32]; + int i; + + crypto_uint64_vec4x1 a[10] = {{0}}; + crypto_uint64_vec4x1 b[10] = {{0}}; + fe25519_9l u,v; + fe25519 z[2]; + + for(i=0;i<32;i++) e[i] = s[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fe25519_unpack(z,p); + fe25519_to_9l(&u,z); + + b[0][0] = b[0][3] = a[0][2] = 1; a[0][1] = 486662; + + for (i=0;i<9;i++) {b[i][2] = u.l[i]; a[i][3] = u.l[i];} + + mladder(b,a,e); + + for (i=0;i<9;i++) {u.l[i] = b[i][0]; v.l[i] = b[i][1];} + + fe25519_from_9l(z,&u); + fe25519_from_9l(z+1,&v); + fe25519_invert(z+1, z+1); + fe25519_mul(z, z, z+1); + fe25519_pack(r, z); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/shared-consts.c new file mode 100644 index 0000000000..5af490301e --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa4/shared-consts.c @@ -0,0 +1,39 @@ +// linker define hh_p1 +// linker define hh_p2 +// linker define hh_p3 +// linker define hh_xor1 +// linker define hh_xor2 +// linker define sub_p1 +// linker define sub_p2 +// linker define sub_p3 +// linker define swap_c +// linker define swap_mask +// linker define vecmask29d +// linker define vec19 +// linker define vec1216 +// linker define vecmask23 +// linker define vecmask29 +// linker define vecmask32 +// linker define mask63 + +#include "consts_namespace.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" + +const crypto_uint32 hh_p1[] = { 0x0,0x0,0x5FFFFFC8,0x5FFFFFFE,0x0,0x0,0x5FFFFFC8,0x5FFFFFFE }; +const crypto_uint32 hh_p2[] = { 0x0,0x0,0x5FFFFFFE,0x5FFFFFFE,0x0,0x0,0x5FFFFFFE,0x5FFFFFFE }; +const crypto_uint32 hh_p3[] = { 0x0,0x0,0x17FFFFE,0x0,0x0,0x0,0x17FFFFE,0x0 }; +const crypto_uint32 hh_xor1[] = { 0,0,-1,-1,0,0,-1,-1 }; +const crypto_uint32 hh_xor2[] = { 0,0,-1,0,0,0,-1,0 }; +const crypto_uint32 sub_p1[] = { 0x3FFFFFDA,0x3FFFFFFE,0x0,0x0,0x0,0x0,0x0,0x0 }; +const crypto_uint32 sub_p2[] = { 0x3FFFFFFE,0x3FFFFFFE,0x0,0x0,0x0,0x0,0x0,0x0 }; +const crypto_uint32 sub_p3[] = { 0xFFFFFE,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; +const crypto_uint32 swap_c[] = { 0,1,2,3,4,5,6,7 }; +const crypto_uint32 swap_mask[] = { 7,7,7,7,7,7,7,7 }; +const crypto_uint32 vecmask29d[] = { 0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF }; +const crypto_uint64 vec19[] = { 19,19,19,19 }; +const crypto_uint64 vec1216[] = { 1216,1216,1216,1216 }; +const crypto_uint64 vecmask23[] = { 0x7FFFFF,0x7FFFFF,0x7FFFFF,0x7FFFFF }; +const crypto_uint64 vecmask29[] = { 0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF }; +const crypto_uint64 vecmask32[] = { 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF }; +const crypto_uint64 mask63[] = { 0x7FFFFFFFFFFFFFFF }; diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/consts_namespace.h new file mode 100644 index 0000000000..202e6d918e --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/consts_namespace.h @@ -0,0 +1,24 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define hh_p1 CRYPTO_SHARED_NAMESPACE(hh_p1) +#define hh_p2 CRYPTO_SHARED_NAMESPACE(hh_p2) +#define hh_p3 CRYPTO_SHARED_NAMESPACE(hh_p3) +#define hh_xor1 CRYPTO_SHARED_NAMESPACE(hh_xor1) +#define hh_xor2 CRYPTO_SHARED_NAMESPACE(hh_xor2) +#define sub_p1 CRYPTO_SHARED_NAMESPACE(sub_p1) +#define sub_p2 CRYPTO_SHARED_NAMESPACE(sub_p2) +#define sub_p3 CRYPTO_SHARED_NAMESPACE(sub_p3) +#define swap_c CRYPTO_SHARED_NAMESPACE(swap_c) +#define swap_mask CRYPTO_SHARED_NAMESPACE(swap_mask) +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vec1216 CRYPTO_SHARED_NAMESPACE(vec1216) +#define vecmask23 CRYPTO_SHARED_NAMESPACE(vecmask23) +#define vecmask29 CRYPTO_SHARED_NAMESPACE(vecmask29) +#define vecmask29d CRYPTO_SHARED_NAMESPACE(vecmask29d) +#define vecmask32 CRYPTO_SHARED_NAMESPACE(vecmask32) +#define a24 CRYPTO_SHARED_NAMESPACE(a24) +#define mask51 CRYPTO_SHARED_NAMESPACE(mask51) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519.h new file mode 120000 index 0000000000..b5f68846b3 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa5/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_9l_to_5l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_9l_to_5l.c new file mode 120000 index 0000000000..5e589cb417 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_9l_to_5l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa5/fe25519_9l_to_5l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_from_5l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_from_5l.c new file mode 120000 index 0000000000..2dbe89079f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_from_5l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa5/fe25519_from_5l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_invert.c new file mode 120000 index 0000000000..d12ca4a21a --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa5/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_mul.S new file mode 120000 index 0000000000..e0d6e779aa --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_nsquare.S new file mode 120000 index 0000000000..5f68ddec2b --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_to_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_to_9l.c new file mode 120000 index 0000000000..8914a99664 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_to_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_to_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/mladder.S new file mode 120000 index 0000000000..6a611e3e48 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/mladder.S @@ -0,0 +1 @@ +../amd64-avx2-hey9l-maa4/mladder.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/mont25519.c new file mode 100644 index 0000000000..8f3aea70c9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/mont25519.c @@ -0,0 +1,44 @@ +#include "randombytes.h" +#include "crypto_nP.h" +#include "fe25519.h" +#include "crypto_uint64_vec4x1.h" + +#define mladder CRYPTO_SHARED_NAMESPACE(mladder) +extern void mladder(crypto_uint64_vec4x1 *,crypto_uint64_vec4x1 *,const unsigned char *); + +void crypto_nP(unsigned char *r, + const unsigned char *s, + const unsigned char *p) +{ + unsigned char e[32]; + int i; + + crypto_uint64_vec4x1 a[9] = {{0}}; + crypto_uint64_vec4x1 b[9] = {{0}}; + fe25519_9l u,v; + fe25519_5l z[2]; + fe25519 w; + + for(i=0;i<32;i++) e[i] = s[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fe25519_unpack(&w,p); + fe25519_to_9l(&u,&w); + + b[0][0] = b[0][3] = a[0][2] = 1; a[0][1] = 486662; + + for (i=0;i<9;i++) {b[i][2] = u.l[i]; a[i][3] = u.l[i];} + + mladder(b,a,e); + + for (i=0;i<9;i++) {u.l[i] = b[i][0]; v.l[i] = b[i][1];} + + fe25519_9l_to_5l(z,&u); + fe25519_9l_to_5l(z+1,&v); + fe25519_invert(z+1, z+1); + fe25519_mul(z, z, z+1); + fe25519_from_5l(&w, z); + fe25519_pack(r, &w); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/shared-consts.c new file mode 100644 index 0000000000..3f2aaebd8b --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maa5/shared-consts.c @@ -0,0 +1,39 @@ +// linker define hh_p1 +// linker define hh_p2 +// linker define hh_p3 +// linker define hh_xor1 +// linker define hh_xor2 +// linker define sub_p1 +// linker define sub_p2 +// linker define sub_p3 +// linker define swap_c +// linker define swap_mask +// linker define vecmask29d +// linker define vec19 +// linker define vec1216 +// linker define vecmask23 +// linker define vecmask29 +// linker define vecmask32 +// linker define mask51 + +#include "consts_namespace.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" + +const crypto_uint32 hh_p1[] = { 0x0,0x0,0x5FFFFFC8,0x5FFFFFFE,0x0,0x0,0x5FFFFFC8,0x5FFFFFFE }; +const crypto_uint32 hh_p2[] = { 0x0,0x0,0x5FFFFFFE,0x5FFFFFFE,0x0,0x0,0x5FFFFFFE,0x5FFFFFFE }; +const crypto_uint32 hh_p3[] = { 0x0,0x0,0x17FFFFE,0x0,0x0,0x0,0x17FFFFE,0x0 }; +const crypto_uint32 hh_xor1[] = { 0,0,-1,-1,0,0,-1,-1 }; +const crypto_uint32 hh_xor2[] = { 0,0,-1,0,0,0,-1,0 }; +const crypto_uint32 sub_p1[] = { 0x3FFFFFDA,0x3FFFFFFE,0x0,0x0,0x0,0x0,0x0,0x0 }; +const crypto_uint32 sub_p2[] = { 0x3FFFFFFE,0x3FFFFFFE,0x0,0x0,0x0,0x0,0x0,0x0 }; +const crypto_uint32 sub_p3[] = { 0xFFFFFE,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; +const crypto_uint32 swap_c[] = { 0,1,2,3,4,5,6,7 }; +const crypto_uint32 swap_mask[] = { 7,7,7,7,7,7,7,7 }; +const crypto_uint32 vecmask29d[] = { 0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF }; +const crypto_uint64 vec19[] = { 19,19,19,19 }; +const crypto_uint64 vec1216[] = { 1216,1216,1216,1216 }; +const crypto_uint64 vecmask23[] = { 0x7FFFFF,0x7FFFFF,0x7FFFFF,0x7FFFFF }; +const crypto_uint64 vecmask29[] = { 0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF }; +const crypto_uint64 vecmask32[] = { 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF }; +const crypto_uint64 mask51[] = { 0x7FFFFFFFFFFFF }; diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/architectures new file mode 120000 index 0000000000..fc4b638d1f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx2-9l-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/consts_namespace.h new file mode 120000 index 0000000000..b68746a278 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-hey9l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519.h new file mode 120000 index 0000000000..7a2c948483 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maax/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_from_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_from_9l.c new file mode 120000 index 0000000000..e7ff02d686 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_from_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_from_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_to_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_to_9l.c new file mode 120000 index 0000000000..8914a99664 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_to_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_to_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/mladder.S new file mode 120000 index 0000000000..6a611e3e48 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/mladder.S @@ -0,0 +1 @@ +../amd64-avx2-hey9l-maa4/mladder.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/mont25519.c new file mode 120000 index 0000000000..3a8748501f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/mont25519.c @@ -0,0 +1 @@ +../amd64-avx2-hey9l-maa4/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/shared-consts.c new file mode 120000 index 0000000000..0b297641ad --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-maax/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-hey9l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/consts_namespace.h new file mode 120000 index 0000000000..b68746a278 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-hey9l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519.h new file mode 120000 index 0000000000..d179df48d4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-mxaa/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_from_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_from_9l.c new file mode 120000 index 0000000000..e7ff02d686 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_from_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_from_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_mul.S new file mode 120000 index 0000000000..79e7adffa9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_nsquare.S new file mode 120000 index 0000000000..1aef6b0983 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_to_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_to_9l.c new file mode 120000 index 0000000000..8914a99664 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_to_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_to_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/mladder.S new file mode 120000 index 0000000000..6a611e3e48 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/mladder.S @@ -0,0 +1 @@ +../amd64-avx2-hey9l-maa4/mladder.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/mont25519.c new file mode 120000 index 0000000000..3a8748501f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/mont25519.c @@ -0,0 +1 @@ +../amd64-avx2-hey9l-maa4/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/shared-consts.c new file mode 120000 index 0000000000..0b297641ad --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-hey9l-mxaa/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-hey9l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/consts_namespace.h new file mode 100644 index 0000000000..cb70bab9c4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/consts_namespace.h @@ -0,0 +1,22 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define hh1_p1 CRYPTO_SHARED_NAMESPACE(hh1_p1) +#define hh1_p2 CRYPTO_SHARED_NAMESPACE(hh1_p2) +#define h2h_p1 CRYPTO_SHARED_NAMESPACE(h2h_p1) +#define h2h_p2 CRYPTO_SHARED_NAMESPACE(h2h_p2) +#define hh1_xor CRYPTO_SHARED_NAMESPACE(hh1_xor) +#define h2h_xor CRYPTO_SHARED_NAMESPACE(h2h_xor) +#define swap_c CRYPTO_SHARED_NAMESPACE(swap_c) +#define swap_mask CRYPTO_SHARED_NAMESPACE(swap_mask) +#define h2h_mask CRYPTO_SHARED_NAMESPACE(h2h_mask) +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vec38 CRYPTO_SHARED_NAMESPACE(vec38) +#define vecmask25 CRYPTO_SHARED_NAMESPACE(vecmask25) +#define vecmask26 CRYPTO_SHARED_NAMESPACE(vecmask26) +#define vecmask32 CRYPTO_SHARED_NAMESPACE(vecmask32) +#define a24 CRYPTO_SHARED_NAMESPACE(a24) +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519.h new file mode 100644 index 0000000000..ef33f981c7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519.h @@ -0,0 +1,45 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_10l CRYPTO_NAMESPACE(fe25519_10l) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_square CRYPTO_SHARED_NAMESPACE(fe25519_square) +#define fe25519_nsquare CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) +#define fe25519_to_10l CRYPTO_NAMESPACE(fe25519_to_10l) +#define fe25519_from_10l CRYPTO_NAMESPACE(fe25519_from_10l) + +typedef struct +{ + unsigned long long l[4]; +} +fe25519; + +typedef struct { + unsigned long long l[10]; +} +fe25519_10l; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_square(fe25519 *r, const fe25519 *x); + +void fe25519_nsquare(fe25519 *r, const fe25519 *x, long long n); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +void fe25519_to_10l(fe25519_10l *r, const fe25519 *x); + +void fe25519_from_10l(fe25519 *r, const fe25519_10l *x); + +#endif diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_from_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_from_10l.c new file mode 100644 index 0000000000..add87cc41c --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_from_10l.c @@ -0,0 +1,11 @@ +// linker define fe25519_from_10l + +#include "fe25519.h" + +void fe25519_from_10l(fe25519 *r, const fe25519_10l *x) { + + r->l[0] = ((x->l[0] & 0x0000000003FFFFFF)) | ((x->l[1] & 0x0000000001FFFFFF) << 26) | ((x->l[2] & 0x0000000000001FFF) << 51); + r->l[1] = ((x->l[2] & 0x0000000003FFE000) >> 13) | ((x->l[3] & 0x0000000001FFFFFF) << 13) | ((x->l[4] & 0x0000000003FFFFFF) << 38); + r->l[2] = ((x->l[5] & 0x0000000001FFFFFF)) | ((x->l[6] & 0x0000000003FFFFFF) << 25) | ((x->l[7] & 0x0000000000001FFF) << 51); + r->l[3] = ((x->l[7] & 0x0000000001FFE000) >> 13) | ((x->l[8] & 0x0000000003FFFFFF) << 12) | ((x->l[9] & 0x0000000001FFFFFF) << 38); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_mul.S new file mode 120000 index 0000000000..a969f86af4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_nsquare.S new file mode 120000 index 0000000000..a5dcdec138 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_square.S new file mode 120000 index 0000000000..07c854965f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_to_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_to_10l.c new file mode 100644 index 0000000000..dfda94fd22 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_to_10l.c @@ -0,0 +1,17 @@ +// linker define fe25519_to_10l + +#include "fe25519.h" + +void fe25519_to_10l(fe25519_10l *r, const fe25519 *x) { + + r->l[0] = ((x->l[0] & 0x0000000003FFFFFF)); + r->l[1] = ((x->l[0] & 0x0007FFFFFC000000) >> 26); + r->l[2] = ((x->l[0] & 0xFFF8000000000000) >> 51) | ((x->l[1] & 0x0000000000001FFF) << 13); + r->l[3] = ((x->l[1] & 0x0000003FFFFFE000) >> 13); + r->l[4] = ((x->l[1] & 0xFFFFFFC000000000) >> 38); + r->l[5] = ((x->l[2] & 0x0000000001FFFFFF)); + r->l[6] = ((x->l[2] & 0x0007FFFFFE000000) >> 25); + r->l[7] = ((x->l[2] & 0xFFF8000000000000) >> 51) | ((x->l[3] & 0x0000000000000FFF) << 13); + r->l[8] = ((x->l[3] & 0x0000003FFFFFF000) >> 12); + r->l[9] = ((x->l[3] & 0x7FFFFFC000000000) >> 38); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/mladder.S new file mode 100644 index 0000000000..83cad86a2a --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/mladder.S @@ -0,0 +1,1277 @@ +// linker define mladder +// linker use hh1_p1 +// linker use hh1_p2 +// linker use h2h_p1 +// linker use h2h_p2 +// linker use hh1_xor +// linker use h2h_xor +// linker use swap_c +// linker use swap_mask +// linker use h2h_mask +// linker use vec19 +// linker use vec38 +// linker use vecmask25 +// linker use vecmask26 +// linker use vecmask32 +// linker use a24 + +/* Assembly for Montgomery ladder. */ + +#include "consts_namespace.h" + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(mladder) +.globl CRYPTO_SHARED_NAMESPACE(mladder) +_CRYPTO_SHARED_NAMESPACE(mladder): +CRYPTO_SHARED_NAMESPACE(mladder): + +movq %rsp,%r11 +andq $-32,%rsp +subq $960,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) + +// load <0,0,1,X1> +vmovdqa 0(%rsi),%ymm0 +vmovdqa 32(%rsi),%ymm11 +vmovdqa 64(%rsi),%ymm2 +vmovdqa 96(%rsi),%ymm12 +vmovdqa 128(%rsi),%ymm4 +vmovdqa 160(%rsi),%ymm13 +vmovdqa 192(%rsi),%ymm6 +vmovdqa 224(%rsi),%ymm14 +vmovdqa 256(%rsi),%ymm8 +vmovdqa 288(%rsi),%ymm15 + +// <0',0',1',X1'> ← Pack-D2N(<0,0,1,X1>) +vpsllq $32,%ymm11,%ymm11 +vpor %ymm11,%ymm0,%ymm0 +vpsllq $32,%ymm12,%ymm12 +vpor %ymm12,%ymm2,%ymm2 +vpsllq $32,%ymm13,%ymm13 +vpor %ymm13,%ymm4,%ymm4 +vpsllq $32,%ymm14,%ymm14 +vpor %ymm14,%ymm6,%ymm6 +vpsllq $32,%ymm15,%ymm15 +vpor %ymm15,%ymm8,%ymm8 + +vmovdqa %ymm0,0(%rsi) +vmovdqa %ymm2,32(%rsi) +vmovdqa %ymm4,64(%rsi) +vmovdqa %ymm6,96(%rsi) +vmovdqa %ymm8,128(%rsi) + +// load +vmovdqa 0(%rdi),%ymm0 +vmovdqa 32(%rdi),%ymm11 +vmovdqa 64(%rdi),%ymm2 +vmovdqa 96(%rdi),%ymm12 +vmovdqa 128(%rdi),%ymm4 +vmovdqa 160(%rdi),%ymm13 +vmovdqa 192(%rdi),%ymm6 +vmovdqa 224(%rdi),%ymm14 +vmovdqa 256(%rdi),%ymm8 +vmovdqa 288(%rdi),%ymm15 + +// ← Pack-D2N() +vpsllq $32,%ymm11,%ymm11 +vpor %ymm11,%ymm0,%ymm0 +vpsllq $32,%ymm12,%ymm12 +vpor %ymm12,%ymm2,%ymm2 +vpsllq $32,%ymm13,%ymm13 +vpor %ymm13,%ymm4,%ymm4 +vpsllq $32,%ymm14,%ymm14 +vpor %ymm14,%ymm6,%ymm6 +vpsllq $32,%ymm15,%ymm15 +vpor %ymm15,%ymm8,%ymm8 + +movq $31,%r15 +movq $6,%rcx + +movb $0,%r8b +movq %rdx,%rax + +.L1: +addq %r15,%rax +movb 0(%rax),%r14b +movq %rdx,%rax + +.L2: +movb %r14b,%bl +shrb %cl,%bl +andb $1,%bl +movb %bl,%r9b +xorb %r8b,%bl +movb %r9b,%r8b + +// ← Dense-Swap(,b) +movzbl %bl,%ebx +imul $4,%ebx,%ebx +movl %ebx,56(%rsp) +vpbroadcastd 56(%rsp),%ymm7 +vpaddd swap_c(%rip),%ymm7,%ymm7 +vpand swap_mask(%rip),%ymm7,%ymm7 + +vpermd %ymm0,%ymm7,%ymm0 +vpermd %ymm2,%ymm7,%ymm2 +vpermd %ymm4,%ymm7,%ymm4 +vpermd %ymm6,%ymm7,%ymm6 +vpermd %ymm8,%ymm7,%ymm8 + +// ← Dense-H-H1() +vpshufd $68,%ymm0,%ymm1 +vpshufd $238,%ymm0,%ymm3 +vpaddd hh1_p1(%rip),%ymm1,%ymm1 +vpxor hh1_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm0 + +vpshufd $68,%ymm2,%ymm1 +vpshufd $238,%ymm2,%ymm3 +vpaddd hh1_p2(%rip),%ymm1,%ymm1 +vpxor hh1_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm2 + +vpshufd $68,%ymm4,%ymm1 +vpshufd $238,%ymm4,%ymm3 +vpaddd hh1_p2(%rip),%ymm1,%ymm1 +vpxor hh1_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm4 + +vpshufd $68,%ymm6,%ymm1 +vpshufd $238,%ymm6,%ymm3 +vpaddd hh1_p2(%rip),%ymm1,%ymm1 +vpxor hh1_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm6 + +vpshufd $68,%ymm8,%ymm1 +vpshufd $238,%ymm8,%ymm3 +vpaddd hh1_p2(%rip),%ymm1,%ymm1 +vpxor hh1_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm8 + +// ← Pack-N2D() +vpsrlq $32,%ymm0,%ymm11 +vpsrlq $32,%ymm2,%ymm12 +vpsrlq $32,%ymm4,%ymm13 +vpsrlq $32,%ymm6,%ymm14 +vpsrlq $32,%ymm8,%ymm15 + +vmovdqa %ymm0,64(%rsp) +vmovdqa %ymm11,96(%rsp) +vmovdqa %ymm2,128(%rsp) +vmovdqa %ymm12,160(%rsp) +vmovdqa %ymm4,192(%rsp) +vmovdqa %ymm13,224(%rsp) +vmovdqa %ymm6,256(%rsp) +vmovdqa %ymm14,288(%rsp) +vmovdqa %ymm8,320(%rsp) +vmovdqa %ymm15,352(%rsp) + +// ← Dense-Dup() +vpermq $68,%ymm0,%ymm0 +vpermq $68,%ymm2,%ymm2 +vpermq $68,%ymm4,%ymm4 +vpermq $68,%ymm6,%ymm6 +vpermq $68,%ymm8,%ymm8 + +// ← Pack-D2N() +vpsrlq $32,%ymm0,%ymm1 +vpsrlq $32,%ymm2,%ymm3 +vpsrlq $32,%ymm4,%ymm5 +vpsrlq $32,%ymm6,%ymm7 +vpsrlq $32,%ymm8,%ymm9 + +vmovdqa %ymm0,384(%rsp) +vmovdqa %ymm1,416(%rsp) +vmovdqa %ymm2,448(%rsp) +vmovdqa %ymm3,480(%rsp) +vmovdqa %ymm4,512(%rsp) +vmovdqa %ymm5,544(%rsp) +vmovdqa %ymm6,576(%rsp) +vmovdqa %ymm7,608(%rsp) +vmovdqa %ymm8,640(%rsp) +vmovdqa %ymm9,672(%rsp) + +// ← Mul(,) +vpaddq %ymm11,%ymm11,%ymm11 +vpaddq %ymm12,%ymm12,%ymm12 +vpaddq %ymm13,%ymm13,%ymm13 +vpaddq %ymm14,%ymm14,%ymm14 +vpaddq %ymm15,%ymm15,%ymm15 + +vpmuludq vec19(%rip),%ymm1,%ymm1 +vpmuludq vec19(%rip),%ymm2,%ymm2 +vpmuludq vec19(%rip),%ymm3,%ymm3 +vpmuludq vec19(%rip),%ymm4,%ymm4 +vpmuludq vec19(%rip),%ymm5,%ymm5 +vpmuludq vec19(%rip),%ymm6,%ymm6 +vpmuludq vec19(%rip),%ymm7,%ymm7 +vpmuludq vec19(%rip),%ymm8,%ymm8 +vpmuludq vec19(%rip),%ymm9,%ymm9 + +vpmuludq %ymm15,%ymm1,%ymm0 +vpmuludq %ymm14,%ymm3,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm13,%ymm5,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm12,%ymm7,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm11,%ymm9,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 320(%rsp),%ymm2,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 256(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 192(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 128(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 + +vpmuludq 352(%rsp),%ymm2,%ymm1 +vpmuludq 320(%rsp),%ymm3,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 288(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 256(%rsp),%ymm5,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 224(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 192(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 160(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 128(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 + +vpmuludq %ymm15,%ymm3,%ymm2 +vpmuludq %ymm14,%ymm5,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq %ymm13,%ymm7,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq %ymm12,%ymm9,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 320(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 256(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 192(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 416(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 + +vpmuludq 352(%rsp),%ymm4,%ymm3 +vpmuludq 320(%rsp),%ymm5,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 288(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 256(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 224(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 192(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 + +vpmuludq %ymm15,%ymm5,%ymm4 +vpmuludq %ymm14,%ymm7,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq %ymm13,%ymm9,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 320(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 256(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 416(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 480(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 + +vpmuludq 352(%rsp),%ymm6,%ymm5 +vpmuludq 320(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 288(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 256(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 + +vpmuludq %ymm15,%ymm7,%ymm6 +vpmuludq %ymm14,%ymm9,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 320(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 416(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 480(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 544(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 352(%rsp),%ymm8,%ymm7 +vpmuludq 320(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq %ymm15,%ymm9,%ymm8 +vpmuludq 416(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 480(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 544(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 608(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vmovdqa 64(%rsp),%ymm11 +vmovdqa 96(%rsp),%ymm12 +vmovdqa 128(%rsp),%ymm13 +vmovdqa 160(%rsp),%ymm14 +vmovdqa 192(%rsp),%ymm15 +vmovdqa 224(%rsp),%ymm9 + +vpmuludq 384(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 + +vpmuludq 448(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 384(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 + +vpmuludq 480(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 448(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 416(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 384(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 + +vpmuludq 416(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 384(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 + +vpmuludq 512(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 448(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 384(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 + +vpmuludq 544(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 512(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 480(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 448(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 416(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 384(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 + +vpmuludq 576(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 512(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 448(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 608(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 576(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 544(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 512(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 480(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 448(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq 640(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 576(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 512(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vpmuludq 512(%rsp),%ymm9,%ymm9 +vpmuludq 672(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 640(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 608(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 576(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 544(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 + +vmovdqa 256(%rsp),%ymm11 +vmovdqa 288(%rsp),%ymm12 +vmovdqa 320(%rsp),%ymm13 +vmovdqa 352(%rsp),%ymm14 + +vpmuludq 384(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 416(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 384(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq 448(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 384(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vpmuludq 480(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 448(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 416(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 384(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 + +vpsrlq $25,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm5,%ymm15 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $26,%ymm6,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpand vecmask26(%rip),%ymm6,%ymm11 + +vpsrlq $25,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask25(%rip),%ymm1,%ymm1 + +vpsrlq $25,%ymm7,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask25(%rip),%ymm7,%ymm14 + +vpsrlq $26,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpand vecmask26(%rip),%ymm2,%ymm12 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpand vecmask26(%rip),%ymm8,%ymm6 + +vpsrlq $25,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask25(%rip),%ymm3,%ymm13 + +vpsrlq $25,%ymm9,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpsllq $1,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpsllq $3,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask25(%rip),%ymm9,%ymm8 + +vpsrlq $26,%ymm4,%ymm10 +vpaddq %ymm10,%ymm15,%ymm15 +vpand vecmask26(%rip),%ymm4,%ymm7 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm3 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $25,%ymm15,%ymm10 +vpaddq %ymm10,%ymm11,%ymm5 +vpand vecmask25(%rip),%ymm15,%ymm9 + +vmovdqa %ymm0,640(%rsp) +vmovdqa %ymm3,672(%rsp) +vmovdqa %ymm12,704(%rsp) +vmovdqa %ymm13,736(%rsp) +vmovdqa %ymm7,768(%rsp) +vmovdqa %ymm9,800(%rsp) +vmovdqa %ymm5,832(%rsp) +vmovdqa %ymm14,864(%rsp) +vmovdqa %ymm6,896(%rsp) +vmovdqa %ymm8,928(%rsp) + +// ← Pack-N2D() +vpsllq $32,%ymm3,%ymm3 +vpor %ymm3,%ymm0,%ymm0 +vpsllq $32,%ymm13,%ymm13 +vpor %ymm13,%ymm12,%ymm2 +vpsllq $32,%ymm9,%ymm9 +vpor %ymm9,%ymm7,%ymm4 +vpsllq $32,%ymm8,%ymm8 +vpor %ymm8,%ymm6,%ymm8 +vpsllq $32,%ymm14,%ymm14 +vpor %ymm14,%ymm5,%ymm6 + +// ← Dense-H2-H() +vpshufd $68,%ymm0,%ymm1 +vpand h2h_mask(%rip),%ymm1,%ymm1 +vpshufd $238,%ymm0,%ymm3 +vpaddd h2h_p1(%rip),%ymm1,%ymm1 +vpxor h2h_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm0 + +vpshufd $68,%ymm2,%ymm1 +vpand h2h_mask(%rip),%ymm1,%ymm1 +vpshufd $238,%ymm2,%ymm3 +vpaddd h2h_p2(%rip),%ymm1,%ymm1 +vpxor h2h_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm12 + +vpshufd $68,%ymm4,%ymm1 +vpand h2h_mask(%rip),%ymm1,%ymm1 +vpshufd $238,%ymm4,%ymm3 +vpaddd h2h_p2(%rip),%ymm1,%ymm1 +vpxor h2h_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm7 + +vpshufd $68,%ymm6,%ymm1 +vpand h2h_mask(%rip),%ymm1,%ymm1 +vpshufd $238,%ymm6,%ymm3 +vpaddd h2h_p2(%rip),%ymm1,%ymm1 +vpxor h2h_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm5 + +vpshufd $68,%ymm8,%ymm1 +vpand h2h_mask(%rip),%ymm1,%ymm1 +vpshufd $238,%ymm8,%ymm3 +vpaddd h2h_p2(%rip),%ymm1,%ymm1 +vpxor h2h_xor(%rip),%ymm3,%ymm3 +vpaddd %ymm1,%ymm3,%ymm6 + +// ← Blend(<0',0',1',X1'>,,1100) +vpblendd $240,0(%rsi),%ymm0,%ymm10 +vpblendd $240,32(%rsi),%ymm12,%ymm11 +vpblendd $240,64(%rsi),%ymm7,%ymm13 +vpblendd $240,96(%rsi),%ymm5,%ymm14 +vpblendd $240,128(%rsi),%ymm6,%ymm15 + +// ← Pack-D2N() +vmovdqa %ymm10,64(%rsp) +vpsrlq $32,%ymm10,%ymm10 +vmovdqa %ymm10,96(%rsp) +vmovdqa %ymm11,128(%rsp) +vpsrlq $32,%ymm11,%ymm11 +vmovdqa %ymm11,160(%rsp) +vmovdqa %ymm13,192(%rsp) +vpsrlq $32,%ymm13,%ymm13 +vmovdqa %ymm13,224(%rsp) +vmovdqa %ymm14,256(%rsp) +vpsrlq $32,%ymm14,%ymm14 +vmovdqa %ymm14,288(%rsp) +vmovdqa %ymm15,320(%rsp) +vpsrlq $32,%ymm15,%ymm15 +vmovdqa %ymm15,352(%rsp) + +// ← Pack-D2N() +vpsrlq $32,%ymm0,%ymm3 +vpsrlq $32,%ymm12,%ymm13 +vpsrlq $32,%ymm7,%ymm9 +vpsrlq $32,%ymm5,%ymm14 +vpsrlq $32,%ymm6,%ymm8 + +// <0,T13,0,0> ← Unreduced-Mulc(,<0,a24,0,0>) +// ← Add(<0,T13,0,0>,) +vpmuludq a24(%rip),%ymm0,%ymm1 +vpaddq 640(%rsp),%ymm1,%ymm1 +vpmuludq a24(%rip),%ymm3,%ymm2 +vpaddq 672(%rsp),%ymm2,%ymm2 +vpmuludq a24(%rip),%ymm12,%ymm4 +vpaddq 704(%rsp),%ymm4,%ymm4 +vpmuludq a24(%rip),%ymm9,%ymm11 +vpaddq 800(%rsp),%ymm11,%ymm11 +vpmuludq a24(%rip),%ymm5,%ymm15 +vpaddq 832(%rsp),%ymm15,%ymm15 + +vpsrlq $26,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask26(%rip),%ymm1,%ymm1 + +vpsrlq $25,%ymm11,%ymm10 +vpaddq %ymm10,%ymm15,%ymm15 +vpand vecmask25(%rip),%ymm11,%ymm11 + +vpsrlq $25,%ymm2,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask25(%rip),%ymm2,%ymm2 +vmovdqa %ymm2,672(%rsp) + +vpmuludq a24(%rip),%ymm14,%ymm2 +vpaddq 864(%rsp),%ymm2,%ymm2 + +vpsrlq $26,%ymm15,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask26(%rip),%ymm15,%ymm15 +vmovdqa %ymm15,832(%rsp) + +vpmuludq a24(%rip),%ymm13,%ymm15 +vpaddq 736(%rsp),%ymm15,%ymm15 + +vpsrlq $26,%ymm4,%ymm10 +vpaddq %ymm10,%ymm15,%ymm15 +vpand vecmask26(%rip),%ymm4,%ymm4 +vmovdqa %ymm4,704(%rsp) + +vpmuludq a24(%rip),%ymm6,%ymm4 +vpaddq 896(%rsp),%ymm4,%ymm4 + +vpsrlq $25,%ymm2,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask25(%rip),%ymm2,%ymm2 +vmovdqa %ymm2,864(%rsp) + +vpmuludq a24(%rip),%ymm7,%ymm2 +vpaddq 768(%rsp),%ymm2,%ymm2 + +vpsrlq $25,%ymm15,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask25(%rip),%ymm15,%ymm15 +vmovdqa %ymm15,736(%rsp) + +vpmuludq a24(%rip),%ymm8,%ymm15 +vpaddq 928(%rsp),%ymm15,%ymm15 + +vpsrlq $26,%ymm4,%ymm10 +vpaddq %ymm10,%ymm15,%ymm15 +vpand vecmask26(%rip),%ymm4,%ymm4 +vmovdqa %ymm4,896(%rsp) + +vpsrlq $26,%ymm2,%ymm10 +vpaddq %ymm10,%ymm11,%ymm11 +vpand vecmask26(%rip),%ymm2,%ymm2 +vmovdqa %ymm2,768(%rsp) +vmovdqa %ymm11,800(%rsp) + +vpsrlq $25,%ymm15,%ymm10 +vpmuludq vec19(%rip),%ymm10,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask25(%rip),%ymm15,%ymm15 +vmovdqa %ymm15,928(%rsp) +vmovdqa %ymm1,640(%rsp) + +// <*,*,T15,T16> ← Sqr() +vmovdqa %ymm12,384(%rsp) +vmovdqa %ymm13,416(%rsp) +vmovdqa %ymm7,448(%rsp) +vmovdqa %ymm9,480(%rsp) +vmovdqa %ymm5,512(%rsp) +vmovdqa %ymm14,544(%rsp) +vmovdqa %ymm6,576(%rsp) +vmovdqa %ymm8,608(%rsp) + +vpmuludq vec19(%rip),%ymm5,%ymm2 +vpmuludq vec19(%rip),%ymm6,%ymm6 +vpmuludq vec38(%rip),%ymm9,%ymm1 +vpmuludq vec38(%rip),%ymm14,%ymm4 +vpmuludq vec38(%rip),%ymm8,%ymm8 + +vpaddq %ymm0,%ymm0,%ymm10 +vpaddq %ymm3,%ymm3,%ymm11 +vpaddq %ymm12,%ymm12,%ymm12 +vpaddq %ymm13,%ymm13,%ymm13 +vpaddq %ymm7,%ymm7,%ymm7 +vpaddq %ymm9,%ymm9,%ymm9 +vpaddq %ymm5,%ymm5,%ymm5 +vpaddq %ymm14,%ymm14,%ymm14 + +vpmuludq %ymm0,%ymm0,%ymm0 +vpmuludq %ymm11,%ymm8,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpmuludq %ymm12,%ymm6,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpmuludq %ymm13,%ymm4,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpmuludq %ymm7,%ymm2,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpmuludq 480(%rsp),%ymm1,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 + +vpmuludq 512(%rsp),%ymm1,%ymm1 +vpmuludq %ymm3,%ymm10,%ymm15 +vpaddq %ymm15,%ymm1,%ymm1 +vpmuludq 384(%rsp),%ymm8,%ymm15 +vpaddq %ymm15,%ymm1,%ymm1 +vpmuludq %ymm13,%ymm6,%ymm15 +vpaddq %ymm15,%ymm1,%ymm1 +vpmuludq 448(%rsp),%ymm4,%ymm15 +vpaddq %ymm15,%ymm1,%ymm1 + +vpmuludq 512(%rsp),%ymm2,%ymm2 +vpmuludq 384(%rsp),%ymm10,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 +vpmuludq %ymm3,%ymm11,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 +vpmuludq %ymm13,%ymm8,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 +vpmuludq %ymm7,%ymm6,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 +vpmuludq %ymm9,%ymm4,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 + +vpmuludq 416(%rsp),%ymm10,%ymm3 +vpmuludq 384(%rsp),%ymm11,%ymm15 +vpaddq %ymm15,%ymm3,%ymm3 +vpmuludq 448(%rsp),%ymm8,%ymm15 +vpaddq %ymm15,%ymm3,%ymm3 +vpmuludq %ymm9,%ymm6,%ymm15 +vpaddq %ymm15,%ymm3,%ymm3 +vpmuludq 512(%rsp),%ymm4,%ymm15 +vpaddq %ymm15,%ymm3,%ymm3 + +vpmuludq 544(%rsp),%ymm4,%ymm4 +vpmuludq 448(%rsp),%ymm10,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 +vpmuludq %ymm11,%ymm13,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 +vmovdqa 384(%rsp),%ymm15 +vpmuludq %ymm15,%ymm15,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 +vpmuludq %ymm9,%ymm8,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 +vpmuludq %ymm5,%ymm6,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 + +vpmuludq 480(%rsp),%ymm10,%ymm5 +vpmuludq 448(%rsp),%ymm11,%ymm15 +vpaddq %ymm15,%ymm5,%ymm5 +vpmuludq 416(%rsp),%ymm12,%ymm15 +vpaddq %ymm15,%ymm5,%ymm5 +vpmuludq 512(%rsp),%ymm8,%ymm15 +vpaddq %ymm15,%ymm5,%ymm5 +vpmuludq %ymm6,%ymm14,%ymm15 +vpaddq %ymm15,%ymm5,%ymm5 + +vpmuludq 576(%rsp),%ymm6,%ymm6 +vpmuludq 512(%rsp),%ymm10,%ymm15 +vpaddq %ymm15,%ymm6,%ymm6 +vpmuludq %ymm11,%ymm9,%ymm15 +vpaddq %ymm15,%ymm6,%ymm6 +vpmuludq 448(%rsp),%ymm12,%ymm15 +vpaddq %ymm15,%ymm6,%ymm6 +vpmuludq 416(%rsp),%ymm13,%ymm15 +vpaddq %ymm15,%ymm6,%ymm6 +vpmuludq %ymm14,%ymm8,%ymm15 +vpaddq %ymm15,%ymm6,%ymm6 + +vpmuludq 544(%rsp),%ymm10,%ymm7 +vpmuludq 512(%rsp),%ymm11,%ymm15 +vpaddq %ymm15,%ymm7,%ymm7 +vpmuludq 480(%rsp),%ymm12,%ymm15 +vpaddq %ymm15,%ymm7,%ymm7 +vpmuludq 448(%rsp),%ymm13,%ymm15 +vpaddq %ymm15,%ymm7,%ymm7 +vpmuludq 576(%rsp),%ymm8,%ymm15 +vpaddq %ymm15,%ymm7,%ymm7 + +vpmuludq 608(%rsp),%ymm8,%ymm8 +vpmuludq 576(%rsp),%ymm10,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 +vpmuludq %ymm11,%ymm14,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 +vpmuludq 512(%rsp),%ymm12,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 +vpmuludq %ymm13,%ymm9,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 +vmovdqa 448(%rsp),%ymm15 +vpmuludq %ymm15,%ymm15,%ymm15 +vpaddq %ymm15,%ymm8,%ymm8 + +vpmuludq 448(%rsp),%ymm9,%ymm9 +vpmuludq 608(%rsp),%ymm10,%ymm15 +vpaddq %ymm15,%ymm9,%ymm9 +vpmuludq 576(%rsp),%ymm11,%ymm15 +vpaddq %ymm15,%ymm9,%ymm9 +vpmuludq 544(%rsp),%ymm12,%ymm15 +vpaddq %ymm15,%ymm9,%ymm9 +vpmuludq 512(%rsp),%ymm13,%ymm15 +vpaddq %ymm15,%ymm9,%ymm9 + +vpsrlq $25,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm5,%ymm5 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $26,%ymm6,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpand vecmask26(%rip),%ymm6,%ymm6 + +vpsrlq $25,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask25(%rip),%ymm1,%ymm1 + +vpsrlq $25,%ymm7,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask25(%rip),%ymm7,%ymm7 + +vpsrlq $26,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpand vecmask26(%rip),%ymm2,%ymm2 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpand vecmask26(%rip),%ymm8,%ymm8 + +vpsrlq $25,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask25(%rip),%ymm3,%ymm3 + +vpsrlq $25,%ymm9,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpsllq $1,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpsllq $3,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask25(%rip),%ymm9,%ymm9 + +vpsrlq $26,%ymm4,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask26(%rip),%ymm4,%ymm4 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $25,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm5,%ymm5 + +// ← Blend(,<*,*,T15,T16>,0011) +vpblendd $15,640(%rsp),%ymm0,%ymm0 +vpblendd $15,672(%rsp),%ymm1,%ymm1 +vmovdqa %ymm0,384(%rsp) +vmovdqa %ymm1,416(%rsp) + +vpblendd $15,704(%rsp),%ymm2,%ymm2 +vpblendd $15,736(%rsp),%ymm3,%ymm3 +vmovdqa %ymm2,448(%rsp) +vmovdqa %ymm3,480(%rsp) + +vpblendd $15,768(%rsp),%ymm4,%ymm4 +vpblendd $15,800(%rsp),%ymm5,%ymm5 +vmovdqa %ymm4,512(%rsp) +vmovdqa %ymm5,544(%rsp) + +vpblendd $15,832(%rsp),%ymm6,%ymm6 +vpblendd $15,864(%rsp),%ymm7,%ymm7 +vmovdqa %ymm6,576(%rsp) +vmovdqa %ymm7,608(%rsp) + +vpblendd $15,896(%rsp),%ymm8,%ymm8 +vpblendd $15,928(%rsp),%ymm9,%ymm9 +vmovdqa %ymm8,640(%rsp) +vmovdqa %ymm9,672(%rsp) + +// ← Mul(,) +vmovdqa 96(%rsp),%ymm11 +vmovdqa 160(%rsp),%ymm12 +vmovdqa 224(%rsp),%ymm13 +vmovdqa 288(%rsp),%ymm14 +vmovdqa 352(%rsp),%ymm15 + +vpaddq %ymm11,%ymm11,%ymm11 +vpaddq %ymm12,%ymm12,%ymm12 +vpaddq %ymm13,%ymm13,%ymm13 +vpaddq %ymm14,%ymm14,%ymm14 +vpaddq %ymm15,%ymm15,%ymm15 + +vpmuludq vec19(%rip),%ymm1,%ymm1 +vpmuludq vec19(%rip),%ymm2,%ymm2 +vpmuludq vec19(%rip),%ymm3,%ymm3 +vpmuludq vec19(%rip),%ymm4,%ymm4 +vpmuludq vec19(%rip),%ymm5,%ymm5 +vpmuludq vec19(%rip),%ymm6,%ymm6 +vpmuludq vec19(%rip),%ymm7,%ymm7 +vpmuludq vec19(%rip),%ymm8,%ymm8 +vpmuludq vec19(%rip),%ymm9,%ymm9 + +vpmuludq %ymm15,%ymm1,%ymm0 +vpmuludq %ymm14,%ymm3,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm13,%ymm5,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm12,%ymm7,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq %ymm11,%ymm9,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 320(%rsp),%ymm2,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 256(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 192(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpmuludq 128(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 + +vpmuludq 352(%rsp),%ymm2,%ymm1 +vpmuludq 320(%rsp),%ymm3,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 288(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 256(%rsp),%ymm5,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 224(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 192(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 160(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 128(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 + +vpmuludq %ymm15,%ymm3,%ymm2 +vpmuludq %ymm14,%ymm5,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq %ymm13,%ymm7,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq %ymm12,%ymm9,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 320(%rsp),%ymm4,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 256(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 192(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 416(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 + +vpmuludq 352(%rsp),%ymm4,%ymm3 +vpmuludq 320(%rsp),%ymm5,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 288(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 256(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 224(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 192(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 + +vpmuludq %ymm15,%ymm5,%ymm4 +vpmuludq %ymm14,%ymm7,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq %ymm13,%ymm9,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 320(%rsp),%ymm6,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 256(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 416(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 480(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 + +vpmuludq 352(%rsp),%ymm6,%ymm5 +vpmuludq 320(%rsp),%ymm7,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 288(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 256(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 + +vpmuludq %ymm15,%ymm7,%ymm6 +vpmuludq %ymm14,%ymm9,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 320(%rsp),%ymm8,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 416(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 480(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 544(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 352(%rsp),%ymm8,%ymm7 +vpmuludq 320(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq %ymm15,%ymm9,%ymm8 +vpmuludq 416(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 480(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 544(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 608(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vmovdqa 64(%rsp),%ymm11 +vmovdqa 96(%rsp),%ymm12 +vmovdqa 128(%rsp),%ymm13 +vmovdqa 160(%rsp),%ymm14 +vmovdqa 192(%rsp),%ymm15 +vmovdqa 224(%rsp),%ymm9 + +vpmuludq 384(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 + +vpmuludq 416(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpmuludq 384(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 + +vpmuludq 448(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpmuludq 384(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 + +vpmuludq 480(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 448(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 416(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpmuludq 384(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 + +vpmuludq 512(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 448(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpmuludq 384(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 + +vpmuludq 544(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 512(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 480(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 448(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 416(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpmuludq 384(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 + +vpmuludq 576(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 512(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpmuludq 448(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 608(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 576(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 544(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 512(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 480(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 448(%rsp),%ymm9,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq 640(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 576(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 512(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vpmuludq 512(%rsp),%ymm9,%ymm9 +vpmuludq 672(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 640(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 608(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 576(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 544(%rsp),%ymm15,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 + +vmovdqa 256(%rsp),%ymm11 +vmovdqa 288(%rsp),%ymm12 +vmovdqa 320(%rsp),%ymm13 +vmovdqa 352(%rsp),%ymm14 + +vpmuludq 384(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 + +vpmuludq 416(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpmuludq 384(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 + +vpmuludq 448(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpmuludq 384(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 + +vpmuludq 480(%rsp),%ymm11,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 448(%rsp),%ymm12,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 416(%rsp),%ymm13,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpmuludq 384(%rsp),%ymm14,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 + +vpsrlq $25,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm5,%ymm5 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $26,%ymm6,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpand vecmask26(%rip),%ymm6,%ymm6 + +vpsrlq $25,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask25(%rip),%ymm1,%ymm1 + +vpsrlq $25,%ymm7,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask25(%rip),%ymm7,%ymm14 + +vpsrlq $26,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpand vecmask26(%rip),%ymm2,%ymm2 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm9,%ymm9 +vpand vecmask26(%rip),%ymm8,%ymm8 + +vpsrlq $25,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask25(%rip),%ymm3,%ymm12 + +vpsrlq $25,%ymm9,%ymm10 +vpmuludq vec19(%rip),%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask25(%rip),%ymm9,%ymm15 + +vpsrlq $26,%ymm4,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask26(%rip),%ymm4,%ymm4 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm11 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $25,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm5,%ymm13 + +// ← Pack-N2D() +vpsllq $32,%ymm11,%ymm11 +vpor %ymm11,%ymm0,%ymm0 +vpsllq $32,%ymm12,%ymm12 +vpor %ymm12,%ymm2,%ymm2 +vpsllq $32,%ymm13,%ymm13 +vpor %ymm13,%ymm4,%ymm4 +vpsllq $32,%ymm14,%ymm14 +vpor %ymm14,%ymm6,%ymm6 +vpsllq $32,%ymm15,%ymm15 +vpor %ymm15,%ymm8,%ymm8 + +subb $1,%cl +cmpb $0,%cl +jge .L2 + +movb $7,%cl +subq $1,%r15 +cmpq $0,%r15 +jge .L1 + +// ← Pack-D2N() +vpsrlq $32,%ymm0,%ymm11 +vpand vecmask32(%rip),%ymm0,%ymm0 +vpsrlq $32,%ymm2,%ymm12 +vpand vecmask32(%rip),%ymm2,%ymm2 +vpsrlq $32,%ymm4,%ymm13 +vpand vecmask32(%rip),%ymm4,%ymm4 +vpsrlq $32,%ymm6,%ymm14 +vpand vecmask32(%rip),%ymm6,%ymm6 +vpsrlq $32,%ymm8,%ymm15 +vpand vecmask32(%rip),%ymm8,%ymm8 + +// ← Reduce() +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm11,%ymm11 +vpand vecmask26(%rip),%ymm0,%ymm0 + +vpsrlq $25,%ymm11,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask25(%rip),%ymm11,%ymm11 + +vpsrlq $26,%ymm2,%ymm10 +vpaddq %ymm10,%ymm12,%ymm12 +vpand vecmask26(%rip),%ymm2,%ymm2 + +vpsrlq $25,%ymm12,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask25(%rip),%ymm12,%ymm12 + +vpsrlq $26,%ymm4,%ymm10 +vpaddq %ymm10,%ymm13,%ymm13 +vpand vecmask26(%rip),%ymm4,%ymm4 + +vpsrlq $25,%ymm13,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask25(%rip),%ymm13,%ymm13 + +vpsrlq $26,%ymm6,%ymm10 +vpaddq %ymm10,%ymm14,%ymm14 +vpand vecmask26(%rip),%ymm6,%ymm6 + +vpsrlq $25,%ymm14,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask25(%rip),%ymm14,%ymm14 + +vpsrlq $26,%ymm8,%ymm10 +vpaddq %ymm10,%ymm15,%ymm15 +vpand vecmask26(%rip),%ymm8,%ymm8 + +vpsrlq $25,%ymm15,%ymm10 +vpmuludq vec19(%rip),%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask25(%rip),%ymm15,%ymm15 + +vpsrlq $26,%ymm0,%ymm10 +vpaddq %ymm10,%ymm11,%ymm11 +vpand vecmask26(%rip),%ymm0,%ymm0 + +// store +vmovdqa %ymm0,0(%rdi) +vmovdqa %ymm11,32(%rdi) +vmovdqa %ymm2,64(%rdi) +vmovdqa %ymm12,96(%rdi) +vmovdqa %ymm4,128(%rdi) +vmovdqa %ymm13,160(%rdi) +vmovdqa %ymm6,192(%rdi) +vmovdqa %ymm14,224(%rdi) +vmovdqa %ymm8,256(%rdi) +vmovdqa %ymm15,288(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/mont25519.c new file mode 100644 index 0000000000..9884152dc7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/mont25519.c @@ -0,0 +1,42 @@ +#include "randombytes.h" +#include "crypto_nP.h" +#include "fe25519.h" +#include "crypto_uint64_vec4x1.h" + +#define mladder CRYPTO_SHARED_NAMESPACE(mladder) +extern void mladder(crypto_uint64_vec4x1 *,crypto_uint64_vec4x1 *,const unsigned char *); + +void crypto_nP(unsigned char *r, + const unsigned char *s, + const unsigned char *p) +{ + unsigned char e[32]; + int i; + + crypto_uint64_vec4x1 a[10] = {{0}}; + crypto_uint64_vec4x1 b[10] = {{0}}; + fe25519_10l u,v; + fe25519 z[2]; + + for(i=0;i<32;i++) e[i] = s[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fe25519_unpack(z,p); + fe25519_to_10l(&u,z); + + b[0][0] = b[0][3] = a[0][2] = 1; + + for (i=0;i<10;i++) {b[i][2] = u.l[i]; a[i][3] = u.l[i];} + + mladder(b,a,e); + + for (i=0;i<10;i++) {u.l[i] = b[i][0]; v.l[i] = b[i][1];} + + fe25519_from_10l(z,&u); + fe25519_from_10l(z+1,&v); + fe25519_invert(z+1, z+1); + fe25519_mul(z, z, z+1); + fe25519_pack(r, z); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/shared-consts.c new file mode 100644 index 0000000000..5cbc7149a6 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa4/shared-consts.c @@ -0,0 +1,37 @@ +// linker define hh1_p1 +// linker define hh1_p2 +// linker define h2h_p1 +// linker define h2h_p2 +// linker define hh1_xor +// linker define h2h_xor +// linker define swap_c +// linker define swap_mask +// linker define h2h_mask +// linker define vec19 +// linker define vec38 +// linker define vecmask25 +// linker define vecmask26 +// linker define vecmask32 +// linker define a24 +// linker define mask63 + +#include "consts_namespace.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" + +const crypto_uint32 hh1_p1[] = { 0x0,0x0,0x7FFFFDB,0x3FFFFFF,0x7FFFFDB,0x3FFFFFF,0x0,0x0 }; +const crypto_uint32 hh1_p2[] = { 0x0,0x0,0x7FFFFFF,0x3FFFFFF,0x7FFFFFF,0x3FFFFFF,0x0,0x0 }; +const crypto_uint32 h2h_p1[] = { 0x0,0x0,0x7FFFFDB,0x3FFFFFF,0x0,0x0,0x7FFFFDB,0x3FFFFFF }; +const crypto_uint32 h2h_p2[] = { 0x0,0x0,0x7FFFFFF,0x3FFFFFF,0x0,0x0,0x7FFFFFF,0x3FFFFFF }; +const crypto_uint32 hh1_xor[] = { 0,0,-1,-1,-1,-1,0,0 }; +const crypto_uint32 h2h_xor[] = { 0,0,-1,-1,0,0,-1,-1 }; +const crypto_uint32 swap_c[] = { 0,1,2,3,4,5,6,7 }; +const crypto_uint32 swap_mask[] = { 7,7,7,7,7,7,7,7 }; +const crypto_uint64 h2h_mask[] = { 0,-1,-1,-1 }; +const crypto_uint64 vec19[] = { 19,19,19,19 }; +const crypto_uint64 vec38[] = { 38,38,38,38 }; +const crypto_uint64 vecmask25[] = { 0x1FFFFFF,0x1FFFFFF,0x1FFFFFF,0x1FFFFFF }; +const crypto_uint64 vecmask26[] = { 0x3FFFFFF,0x3FFFFFF,0x3FFFFFF,0x3FFFFFF }; +const crypto_uint64 vecmask32[] = { 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF }; +const crypto_uint64 a24[] = { 0,121666,0,0 }; +const crypto_uint64 mask63[] = { 0x7FFFFFFFFFFFFFFF }; diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/consts_namespace.h new file mode 100644 index 0000000000..cc92112363 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/consts_namespace.h @@ -0,0 +1,22 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define hh1_p1 CRYPTO_SHARED_NAMESPACE(hh1_p1) +#define hh1_p2 CRYPTO_SHARED_NAMESPACE(hh1_p2) +#define h2h_p1 CRYPTO_SHARED_NAMESPACE(h2h_p1) +#define h2h_p2 CRYPTO_SHARED_NAMESPACE(h2h_p2) +#define hh1_xor CRYPTO_SHARED_NAMESPACE(hh1_xor) +#define h2h_xor CRYPTO_SHARED_NAMESPACE(h2h_xor) +#define swap_c CRYPTO_SHARED_NAMESPACE(swap_c) +#define swap_mask CRYPTO_SHARED_NAMESPACE(swap_mask) +#define h2h_mask CRYPTO_SHARED_NAMESPACE(h2h_mask) +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vec38 CRYPTO_SHARED_NAMESPACE(vec38) +#define vecmask25 CRYPTO_SHARED_NAMESPACE(vecmask25) +#define vecmask26 CRYPTO_SHARED_NAMESPACE(vecmask26) +#define vecmask32 CRYPTO_SHARED_NAMESPACE(vecmask32) +#define a24 CRYPTO_SHARED_NAMESPACE(a24) +#define mask51 CRYPTO_SHARED_NAMESPACE(mask51) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519.h new file mode 100644 index 0000000000..d0a25df5d3 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519.h @@ -0,0 +1,53 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_5l CRYPTO_NAMESPACE(fe25519_5l) +#define fe25519_10l CRYPTO_NAMESPACE(fe25519_10l) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_nsquare CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) +#define fe25519_to_10l CRYPTO_NAMESPACE(fe25519_to_10l) +#define fe25519_10l_to_5l CRYPTO_NAMESPACE(fe25519_10l_to_5l) +#define fe25519_from_5l CRYPTO_NAMESPACE(fe25519_from_5l) + +#define fe25519_square(x,y) fe25519_nsquare(x,y,1) + +typedef struct +{ + unsigned long long l[4]; +} +fe25519; + +typedef struct { + unsigned long long l[5]; +} +fe25519_5l; + +typedef struct { + unsigned long long l[10]; +} +fe25519_10l; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_mul(fe25519_5l *r, const fe25519_5l *x, const fe25519_5l *y); + +void fe25519_nsquare(fe25519_5l *r, const fe25519_5l *x, long long n); + +void fe25519_invert(fe25519_5l *r, const fe25519_5l *x); + +void fe25519_to_10l(fe25519_10l *r, const fe25519 *x); + +void fe25519_10l_to_5l(fe25519_5l *r, const fe25519_10l *x); + +void fe25519_from_5l(fe25519 *r, const fe25519_5l *x); + +#endif diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_10l_to_5l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_10l_to_5l.c new file mode 100644 index 0000000000..fb4d226636 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_10l_to_5l.c @@ -0,0 +1,12 @@ +// linker define fe25519_10l_to_5l + +#include "fe25519.h" + +void fe25519_10l_to_5l(fe25519_5l *r, const fe25519_10l *x) { + + r->l[0] = ((x->l[0] & 0x0000000003FFFFFF)) | ((x->l[1] & 0x0000000001FFFFFF) << 26); + r->l[1] = ((x->l[2] & 0x0000000003FFFFFF)) | ((x->l[3] & 0x0000000001FFFFFF) << 26); + r->l[2] = ((x->l[4] & 0x0000000003FFFFFF)) | ((x->l[5] & 0x0000000001FFFFFF) << 26); + r->l[3] = ((x->l[6] & 0x0000000003FFFFFF)) | ((x->l[7] & 0x0000000001FFFFFF) << 26); + r->l[4] = ((x->l[8] & 0x0000000003FFFFFF)) | ((x->l[9] & 0x0000000001FFFFFF) << 26); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_from_5l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_from_5l.c new file mode 120000 index 0000000000..2dbe89079f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_from_5l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa5/fe25519_from_5l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_invert.c new file mode 100644 index 0000000000..4fe1c8de63 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_invert.c @@ -0,0 +1,19 @@ +// linker define fe25519_invert +// linker use fe25519_from_5l fe25519_pack fe25519_unpack fe25519_to_10l fe25519_10l_to_5l + +#include "crypto_pow_inv25519.h" +#include "fe25519.h" + +void fe25519_invert(fe25519_5l *r, const fe25519_5l *x) +{ + // XXX: can streamline this + fe25519 t; + fe25519_10l u; + unsigned char s[32]; + fe25519_from_5l(&t,x); + fe25519_pack(s,&t); + crypto_pow_inv25519(s,s); + fe25519_unpack(&t,s); + fe25519_to_10l(&u,&t); + fe25519_10l_to_5l(r,&u); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_mul.S new file mode 120000 index 0000000000..e0d6e779aa --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_nsquare.S new file mode 120000 index 0000000000..5f68ddec2b --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_to_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_to_10l.c new file mode 120000 index 0000000000..5e5ca1e8e1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_to_10l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519_to_10l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/mladder.S new file mode 120000 index 0000000000..25054d2897 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/mladder.S @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/mladder.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/mont25519.c new file mode 100644 index 0000000000..c9d6ec128d --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/mont25519.c @@ -0,0 +1,44 @@ +#include "randombytes.h" +#include "crypto_nP.h" +#include "fe25519.h" +#include "crypto_uint64_vec4x1.h" + +#define mladder CRYPTO_SHARED_NAMESPACE(mladder) +extern void mladder(crypto_uint64_vec4x1 *,crypto_uint64_vec4x1 *,const unsigned char *); + +void crypto_nP(unsigned char *r, + const unsigned char *s, + const unsigned char *p) +{ + unsigned char e[32]; + int i; + + crypto_uint64_vec4x1 a[10] = {{0}}; + crypto_uint64_vec4x1 b[10] = {{0}}; + fe25519_10l u,v; + fe25519_5l z[2]; + fe25519 w; + + for(i=0;i<32;i++) e[i] = s[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fe25519_unpack(&w,p); + fe25519_to_10l(&u,&w); + + b[0][0] = b[0][3] = a[0][2] = 1; + + for (i=0;i<10;i++) {b[i][2] = u.l[i]; a[i][3] = u.l[i];} + + mladder(b,a,e); + + for (i=0;i<10;i++) {u.l[i] = b[i][0]; v.l[i] = b[i][1];} + + fe25519_10l_to_5l(z,&u); + fe25519_10l_to_5l(z+1,&v); + fe25519_invert(z+1, z+1); + fe25519_mul(z, z, z+1); + fe25519_from_5l(&w, z); + fe25519_pack(r, &w); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/shared-consts.c new file mode 100644 index 0000000000..898fbba911 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maa5/shared-consts.c @@ -0,0 +1,37 @@ +// linker define hh1_p1 +// linker define hh1_p2 +// linker define h2h_p1 +// linker define h2h_p2 +// linker define hh1_xor +// linker define h2h_xor +// linker define swap_c +// linker define swap_mask +// linker define h2h_mask +// linker define vec19 +// linker define vec38 +// linker define vecmask25 +// linker define vecmask26 +// linker define vecmask32 +// linker define a24 +// linker define mask51 + +#include "consts_namespace.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" + +const crypto_uint32 hh1_p1[] = { 0x0,0x0,0x7FFFFDB,0x3FFFFFF,0x7FFFFDB,0x3FFFFFF,0x0,0x0 }; +const crypto_uint32 hh1_p2[] = { 0x0,0x0,0x7FFFFFF,0x3FFFFFF,0x7FFFFFF,0x3FFFFFF,0x0,0x0 }; +const crypto_uint32 h2h_p1[] = { 0x0,0x0,0x7FFFFDB,0x3FFFFFF,0x0,0x0,0x7FFFFDB,0x3FFFFFF }; +const crypto_uint32 h2h_p2[] = { 0x0,0x0,0x7FFFFFF,0x3FFFFFF,0x0,0x0,0x7FFFFFF,0x3FFFFFF }; +const crypto_uint32 hh1_xor[] = { 0,0,-1,-1,-1,-1,0,0 }; +const crypto_uint32 h2h_xor[] = { 0,0,-1,-1,0,0,-1,-1 }; +const crypto_uint32 swap_c[] = { 0,1,2,3,4,5,6,7 }; +const crypto_uint32 swap_mask[] = { 7,7,7,7,7,7,7,7 }; +const crypto_uint64 h2h_mask[] = { 0,-1,-1,-1 }; +const crypto_uint64 vec19[] = { 19,19,19,19 }; +const crypto_uint64 vec38[] = { 38,38,38,38 }; +const crypto_uint64 vecmask25[] = { 0x1FFFFFF,0x1FFFFFF,0x1FFFFFF,0x1FFFFFF }; +const crypto_uint64 vecmask26[] = { 0x3FFFFFF,0x3FFFFFF,0x3FFFFFF,0x3FFFFFF }; +const crypto_uint64 vecmask32[] = { 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF }; +const crypto_uint64 a24[] = { 0,121666,0,0 }; +const crypto_uint64 mask51[] = { 0x7FFFFFFFFFFFF }; diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/architectures new file mode 120000 index 0000000000..fc4b638d1f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx2-9l-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/consts_namespace.h new file mode 120000 index 0000000000..a19c9fa7c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519.h new file mode 120000 index 0000000000..c1d20070e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519.h @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_from_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_from_10l.c new file mode 120000 index 0000000000..71a2ab5077 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_from_10l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519_from_10l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_to_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_to_10l.c new file mode 120000 index 0000000000..5e5ca1e8e1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_to_10l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519_to_10l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/mladder.S new file mode 120000 index 0000000000..25054d2897 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/mladder.S @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/mladder.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/mont25519.c new file mode 120000 index 0000000000..11d0dc0d00 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/mont25519.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/shared-consts.c new file mode 120000 index 0000000000..2a368f91ad --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-maax/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/consts_namespace.h new file mode 120000 index 0000000000..a19c9fa7c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519.h new file mode 100644 index 0000000000..89cfafc7b3 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519.h @@ -0,0 +1,44 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_10l CRYPTO_NAMESPACE(fe25519_10l) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_nsquare CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) +#define fe25519_to_10l CRYPTO_NAMESPACE(fe25519_to_10l) +#define fe25519_from_10l CRYPTO_NAMESPACE(fe25519_from_10l) + +#define fe25519_square(x,y) fe25519_nsquare(x,y,1) + +typedef struct +{ + unsigned long long l[4]; +} +fe25519; + +typedef struct { + unsigned long long l[10]; +} +fe25519_10l; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_nsquare(fe25519 *r, const fe25519 *x, long long n); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +void fe25519_to_10l(fe25519_10l *r, const fe25519 *x); + +void fe25519_from_10l(fe25519 *r, const fe25519_10l *x); + +#endif diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_from_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_from_10l.c new file mode 120000 index 0000000000..71a2ab5077 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_from_10l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519_from_10l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_mul.S new file mode 120000 index 0000000000..79e7adffa9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_nsquare.S new file mode 120000 index 0000000000..1aef6b0983 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_to_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_to_10l.c new file mode 120000 index 0000000000..5e5ca1e8e1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_to_10l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519_to_10l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/mladder.S new file mode 120000 index 0000000000..25054d2897 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/mladder.S @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/mladder.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/mont25519.c new file mode 120000 index 0000000000..11d0dc0d00 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/mont25519.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/shared-consts.c new file mode 120000 index 0000000000..2a368f91ad --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns10l-mxaa/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/consts_namespace.h new file mode 100644 index 0000000000..0e4ba1b44c --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/consts_namespace.h @@ -0,0 +1,27 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define hh1_p1 CRYPTO_SHARED_NAMESPACE(hh1_p1) +#define hh1_p2 CRYPTO_SHARED_NAMESPACE(hh1_p2) +#define hh1_p3 CRYPTO_SHARED_NAMESPACE(hh1_p3) +#define h2h_p1 CRYPTO_SHARED_NAMESPACE(h2h_p1) +#define h2h_p2 CRYPTO_SHARED_NAMESPACE(h2h_p2) +#define h2h_p3 CRYPTO_SHARED_NAMESPACE(h2h_p3) +#define hh1_xor1 CRYPTO_SHARED_NAMESPACE(hh1_xor1) +#define h2h_xor1 CRYPTO_SHARED_NAMESPACE(h2h_xor1) +#define hh1_xor2 CRYPTO_SHARED_NAMESPACE(hh1_xor2) +#define h2h_xor2 CRYPTO_SHARED_NAMESPACE(h2h_xor2) +#define swap_c CRYPTO_SHARED_NAMESPACE(swap_c) +#define swap_mask CRYPTO_SHARED_NAMESPACE(swap_mask) +#define h2h_mask CRYPTO_SHARED_NAMESPACE(h2h_mask) +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vec1216 CRYPTO_SHARED_NAMESPACE(vec1216) +#define vecmask23 CRYPTO_SHARED_NAMESPACE(vecmask23) +#define vecmask29 CRYPTO_SHARED_NAMESPACE(vecmask29) +#define vecmask29d CRYPTO_SHARED_NAMESPACE(vecmask29d) +#define vecmask32 CRYPTO_SHARED_NAMESPACE(vecmask32) +#define a24 CRYPTO_SHARED_NAMESPACE(a24) +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h new file mode 100644 index 0000000000..e58951ebde --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h @@ -0,0 +1,6 @@ +#ifndef CRYPTO_UINT64_VEC4X1_H +#define CRYPTO_UINT64_VEC4X1_H + +typedef unsigned long long __attribute__ ((aligned(32))) crypto_uint64_vec4x1[4]; + +#endif diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519.h new file mode 100644 index 0000000000..b759bb4398 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519.h @@ -0,0 +1,46 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_9l CRYPTO_NAMESPACE(fe25519_9l) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_square CRYPTO_SHARED_NAMESPACE(fe25519_square) +#define fe25519_nsquare CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) +#define fe25519_to_9l CRYPTO_NAMESPACE(fe25519_to_9l) +#define fe25519_from_9l CRYPTO_NAMESPACE(fe25519_from_9l) + + +typedef struct +{ + unsigned long long l[4]; +} +fe25519; + +typedef struct { + unsigned long long l[9]; +} +fe25519_9l; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_square(fe25519 *r, const fe25519 *x); + +void fe25519_nsquare(fe25519 *r, const fe25519 *x, long long n); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +void fe25519_to_9l(fe25519_9l *r, const fe25519 *x); + +void fe25519_from_9l(fe25519 *r, const fe25519_9l *x); + +#endif diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_from_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_from_9l.c new file mode 100644 index 0000000000..fc0f5a0922 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_from_9l.c @@ -0,0 +1,11 @@ +// linker define fe25519_from_9l + +#include "fe25519.h" + +void fe25519_from_9l(fe25519 *r, const fe25519_9l *x) { + + r->l[0] = ((x->l[0] & 0x000000001FFFFFFF)) | ((x->l[1] & 0x000000001FFFFFFF) << 29) | ((x->l[2] & 0x000000000000003F) << 58); + r->l[1] = ((x->l[2] & 0x000000001FFFFFC0) >> 6) | ((x->l[3] & 0x000000001FFFFFFF) << 23) | ((x->l[4] & 0x0000000000000FFF) << 52); + r->l[2] = ((x->l[4] & 0x000000001FFFF000) >> 12) | ((x->l[5] & 0x000000001FFFFFFF) << 17) | ((x->l[6] & 0x000000000003FFFF) << 46); + r->l[3] = ((x->l[6] & 0x000000001FFC0000) >> 18) | ((x->l[7] & 0x000000001FFFFFFF) << 11) | ((x->l[8] & 0x00000000007FFFFF) << 40); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_mul.S new file mode 120000 index 0000000000..a969f86af4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_nsquare.S new file mode 120000 index 0000000000..a5dcdec138 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_pack.c new file mode 100644 index 0000000000..ba24b603f5 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_pack.c @@ -0,0 +1,16 @@ +// linker define fe25519_pack +// linker use fe25519_freeze + +#include "fe25519.h" + +/* Assumes input x being reduced below 2^255 */ +void fe25519_pack(unsigned char r[32], const fe25519 *x) +{ + int i; + fe25519 t; + t = *x; + fe25519_freeze(&t); + /* assuming little-endian */ + for(i=0;i<32;i++) r[i] = i[(unsigned char *)&t.l]; +} + diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_square.S new file mode 120000 index 0000000000..07c854965f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_to_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_to_9l.c new file mode 100644 index 0000000000..e8016b706e --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_to_9l.c @@ -0,0 +1,16 @@ +// linker define fe25519_to_9l + +#include "fe25519.h" + +void fe25519_to_9l(fe25519_9l *r, const fe25519 *x) { + + r->l[0] = ((x->l[0] & 0x000000001FFFFFFF)); + r->l[1] = ((x->l[0] & 0x03FFFFFFE0000000) >> 29); + r->l[2] = ((x->l[0] & 0xFC00000000000000) >> 58) | ((x->l[1] & 0x00000000007FFFFF) << 6); + r->l[3] = ((x->l[1] & 0x000FFFFFFF800000) >> 23); + r->l[4] = ((x->l[1] & 0xFFF0000000000000) >> 52) | ((x->l[2] & 0x000000000001FFFF) << 12); + r->l[5] = ((x->l[2] & 0x00003FFFFFFE0000) >> 17); + r->l[6] = ((x->l[2] & 0xFFFFC00000000000) >> 46) | ((x->l[3] & 0x00000000000007FF) << 18); + r->l[7] = ((x->l[3] & 0x000000FFFFFFF800) >> 11); + r->l[8] = ((x->l[3] & 0x7FFFFF0000000000) >> 40); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_unpack.c new file mode 100644 index 0000000000..9f65abfab7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/fe25519_unpack.c @@ -0,0 +1,13 @@ +// linker define fe25519_unpack + +#include "fe25519.h" + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]) +{ + /* assuming little-endian */ + r->l[0] = *(unsigned long long *)x; + r->l[1] = *(((unsigned long long *)x)+1); + r->l[2] = *(((unsigned long long *)x)+2); + r->l[3] = *(((unsigned long long *)x)+3); + r->l[3] &= 0x7fffffffffffffffULL; +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/mladder.S new file mode 100644 index 0000000000..bef4309121 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/mladder.S @@ -0,0 +1,1282 @@ +// linker define mladder +// linker use hh1_p1 +// linker use hh1_p2 +// linker use hh1_p3 +// linker use h2h_p1 +// linker use h2h_p2 +// linker use h2h_p3 +// linker use hh1_xor1 +// linker use h2h_xor1 +// linker use hh1_xor2 +// linker use h2h_xor2 +// linker use swap_c +// linker use swap_mask +// linker use h2h_mask +// linker use vec19 +// linker use vec1216 +// linker use vecmask23 +// linker use vecmask29 +// linker use vecmask29d +// linker use vecmask32 +// linker use a24 + +/* Assembly for Montgomery ladder. */ + +#include "consts_namespace.h" + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(mladder) +.globl CRYPTO_SHARED_NAMESPACE(mladder) +_CRYPTO_SHARED_NAMESPACE(mladder): +CRYPTO_SHARED_NAMESPACE(mladder): + +movq %rsp,%r11 +andq $-32,%rsp +subq $1536,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) + +// load <0,0,1,X1> +vmovdqa 0(%rsi),%ymm0 +vmovdqa 32(%rsi),%ymm1 +vmovdqa 64(%rsi),%ymm2 +vmovdqa 96(%rsi),%ymm3 +vmovdqa 128(%rsi),%ymm4 +vmovdqa 160(%rsi),%ymm5 +vmovdqa 192(%rsi),%ymm6 +vmovdqa 224(%rsi),%ymm7 +vmovdqa 256(%rsi),%ymm8 + +// <0',0',1',X1'> ← Pack-D2N(<0,0,1,X1>) +vpsllq $32,%ymm4,%ymm4 +vpor %ymm4,%ymm0,%ymm0 +vpsllq $32,%ymm5,%ymm5 +vpor %ymm5,%ymm1,%ymm1 +vpsllq $32,%ymm6,%ymm6 +vpor %ymm6,%ymm2,%ymm2 +vpsllq $32,%ymm7,%ymm7 +vpor %ymm7,%ymm3,%ymm3 + +vmovdqa %ymm0,0(%rsi) +vmovdqa %ymm1,32(%rsi) +vmovdqa %ymm2,64(%rsi) +vmovdqa %ymm3,96(%rsi) +vmovdqa %ymm8,128(%rsi) + +// load +vmovdqa 0(%rdi),%ymm10 +vmovdqa 32(%rdi),%ymm11 +vmovdqa 64(%rdi),%ymm12 +vmovdqa 96(%rdi),%ymm13 +vmovdqa 128(%rdi),%ymm0 +vmovdqa 160(%rdi),%ymm1 +vmovdqa 192(%rdi),%ymm2 +vmovdqa 224(%rdi),%ymm3 +vmovdqa 256(%rdi),%ymm4 + +// ← Pack-D2N() +vpsllq $32,%ymm0,%ymm0 +vpor %ymm0,%ymm10,%ymm10 +vpsllq $32,%ymm1,%ymm1 +vpor %ymm1,%ymm11,%ymm11 +vpsllq $32,%ymm2,%ymm2 +vpor %ymm2,%ymm12,%ymm12 +vpsllq $32,%ymm3,%ymm3 +vpor %ymm3,%ymm13,%ymm13 + +movq $31,%r15 +movq $6,%rcx + +movb $0,%r8b +movq %rdx,%rax + +.L1: +addq %r15,%rax +movb 0(%rax),%r14b +movq %rdx,%rax + +.L2: +movb %r14b,%bl +shrb %cl,%bl +andb $1,%bl +movb %bl,%r9b +xorb %r8b,%bl +movb %r9b,%r8b + +// ← Dense-Swap(,b) +movzbl %bl,%ebx +imul $4,%ebx,%ebx +movl %ebx,56(%rsp) +vpbroadcastd 56(%rsp),%ymm7 +vpaddd swap_c(%rip),%ymm7,%ymm7 +vpand swap_mask(%rip),%ymm7,%ymm7 + +vpermd %ymm10,%ymm7,%ymm10 +vpermd %ymm11,%ymm7,%ymm11 +vpermd %ymm12,%ymm7,%ymm12 +vpermd %ymm13,%ymm7,%ymm13 +vpermd %ymm4,%ymm7,%ymm4 + +// ← Dense-H-H1() +vpshufd $68,%ymm10,%ymm5 +vpshufd $238,%ymm10,%ymm6 +vpaddd hh1_p1(%rip),%ymm5,%ymm5 +vpxor hh1_xor1(%rip),%ymm6,%ymm6 +vpaddd %ymm5,%ymm6,%ymm10 + +vpshufd $68,%ymm11,%ymm5 +vpshufd $238,%ymm11,%ymm6 +vpaddd hh1_p2(%rip),%ymm5,%ymm5 +vpxor hh1_xor1(%rip),%ymm6,%ymm6 +vpaddd %ymm5,%ymm6,%ymm11 + +vpshufd $68,%ymm12,%ymm5 +vpshufd $238,%ymm12,%ymm6 +vpaddd hh1_p2(%rip),%ymm5,%ymm5 +vpxor hh1_xor1(%rip),%ymm6,%ymm6 +vpaddd %ymm5,%ymm6,%ymm12 + +vpshufd $68,%ymm13,%ymm5 +vpshufd $238,%ymm13,%ymm6 +vpaddd hh1_p2(%rip),%ymm5,%ymm5 +vpxor hh1_xor1(%rip),%ymm6,%ymm6 +vpaddd %ymm5,%ymm6,%ymm13 + +vpshufd $68,%ymm4,%ymm5 +vpshufd $238,%ymm4,%ymm6 +vpaddd hh1_p3(%rip),%ymm5,%ymm5 +vpxor hh1_xor2(%rip),%ymm6,%ymm6 +vpaddd %ymm5,%ymm6,%ymm4 + +vpsrld $29,%ymm10,%ymm15 +vpaddd %ymm15,%ymm11,%ymm11 +vpand vecmask29d(%rip),%ymm10,%ymm10 + +vpsrld $29,%ymm11,%ymm15 +vpaddd %ymm15,%ymm12,%ymm12 +vpand vecmask29d(%rip),%ymm11,%ymm11 + +vpsrld $29,%ymm12,%ymm15 +vpaddd %ymm15,%ymm13,%ymm13 +vpand vecmask29d(%rip),%ymm12,%ymm12 + +vpsrld $29,%ymm13,%ymm15 +vpsllq $32,%ymm15,%ymm15 +vpaddd %ymm15,%ymm10,%ymm10 +vpsrlq $61,%ymm13,%ymm15 +vpaddd %ymm15,%ymm4,%ymm4 +vpand vecmask29d(%rip),%ymm13,%ymm13 + +vpsrlq $23,%ymm4,%ymm15 +vpmuludq vec19(%rip),%ymm15,%ymm15 +vpaddd %ymm15,%ymm10,%ymm10 +vpand vecmask23(%rip),%ymm4,%ymm9 + +// ← Pack-N2D() +vpsrlq $32,%ymm10,%ymm5 +vpsrlq $32,%ymm11,%ymm6 +vpsrlq $32,%ymm12,%ymm7 +vpsrlq $32,%ymm13,%ymm8 + +vmovdqa %ymm10,192(%rsp) +vmovdqa %ymm11,224(%rsp) +vmovdqa %ymm12,256(%rsp) +vmovdqa %ymm13,288(%rsp) + +// ← Dense-Dup() +vpermq $68,%ymm10,%ymm10 +vpermq $68,%ymm11,%ymm11 +vpermq $68,%ymm12,%ymm12 +vpermq $68,%ymm13,%ymm13 +vpermq $68,%ymm9,%ymm4 + +// ← Pack-D2N() +vpsrlq $32,%ymm10,%ymm0 +vpsrlq $32,%ymm11,%ymm1 +vpsrlq $32,%ymm12,%ymm2 +vpsrlq $32,%ymm13,%ymm3 + +// ← Mul(,) +vpmuludq %ymm5,%ymm0,%ymm15 +vmovdqa %ymm15,480(%rsp) + +vpmuludq %ymm6,%ymm0,%ymm15 +vpmuludq %ymm5,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,512(%rsp) + +vpmuludq %ymm7,%ymm0,%ymm15 +vpmuludq %ymm6,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,544(%rsp) + +vpmuludq %ymm8,%ymm0,%ymm15 +vpmuludq %ymm7,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,576(%rsp) + +vpmuludq %ymm9,%ymm0,%ymm15 +vpmuludq %ymm8,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,608(%rsp) + +vpmuludq %ymm9,%ymm1,%ymm15 +vpmuludq %ymm8,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,640(%rsp) + +vpmuludq %ymm9,%ymm2,%ymm15 +vpmuludq %ymm8,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,672(%rsp) + +vpmuludq %ymm9,%ymm3,%ymm15 +vpmuludq %ymm8,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,704(%rsp) + +vpmuludq %ymm9,%ymm4,%ymm15 +vmovdqa %ymm15,736(%rsp) + +vpaddq %ymm10,%ymm0,%ymm0 +vpaddq %ymm11,%ymm1,%ymm1 +vpaddq %ymm12,%ymm2,%ymm2 +vpaddq %ymm13,%ymm3,%ymm3 +vpaddq 192(%rsp),%ymm5,%ymm5 +vpaddq 224(%rsp),%ymm6,%ymm6 +vpaddq 256(%rsp),%ymm7,%ymm7 +vpaddq 288(%rsp),%ymm8,%ymm8 + +vpmuludq 192(%rsp),%ymm10,%ymm15 +vmovdqa %ymm15,768(%rsp) +vpaddq 480(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,992(%rsp) + +vpmuludq 224(%rsp),%ymm10,%ymm15 +vpmuludq 192(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,800(%rsp) +vpaddq 512(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1024(%rsp) + +vpmuludq 256(%rsp),%ymm10,%ymm15 +vpmuludq 224(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 192(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,832(%rsp) +vpaddq 544(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1056(%rsp) + +vpmuludq 288(%rsp),%ymm10,%ymm15 +vpmuludq 256(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 224(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 192(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,864(%rsp) +vpaddq 576(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1088(%rsp) + +vpmuludq 288(%rsp),%ymm11,%ymm15 +vpmuludq 256(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 224(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,896(%rsp) +vpaddq 608(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1120(%rsp) + +vpmuludq 288(%rsp),%ymm12,%ymm15 +vpmuludq 256(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,928(%rsp) +vpaddq 640(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1152(%rsp) + +vpmuludq 288(%rsp),%ymm13,%ymm15 +vmovdqa %ymm15,960(%rsp) +vpaddq 672(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1184(%rsp) + +vpmuludq %ymm5,%ymm0,%ymm15 +vmovdqa %ymm15,1216(%rsp) + +vpmuludq %ymm6,%ymm0,%ymm15 +vpmuludq %ymm5,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm10 + +vpmuludq %ymm7,%ymm0,%ymm15 +vpmuludq %ymm6,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm11 + +vpmuludq %ymm8,%ymm0,%ymm15 +vpmuludq %ymm7,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm12 + +vpmuludq %ymm9,%ymm0,%ymm15 +vpmuludq %ymm8,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm13 + +vpmuludq %ymm9,%ymm1,%ymm15 +vpmuludq %ymm8,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm0 + +vpmuludq %ymm9,%ymm2,%ymm15 +vpmuludq %ymm8,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm1 + +vpmuludq %ymm9,%ymm3,%ymm15 +vpmuludq %ymm8,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm2 + +vpmuludq %ymm9,%ymm4,%ymm3 + +vmovdqa 1216(%rsp),%ymm9 + +vpsubq 992(%rsp),%ymm9,%ymm9 +vpaddq 896(%rsp),%ymm9,%ymm9 +vpsubq 1024(%rsp),%ymm10,%ymm10 +vpaddq 928(%rsp),%ymm10,%ymm10 +vpsubq 1056(%rsp),%ymm11,%ymm11 +vpaddq 960(%rsp),%ymm11,%ymm11 +vpsubq 1088(%rsp),%ymm12,%ymm12 +vpsubq 1120(%rsp),%ymm13,%ymm13 +vpaddq 480(%rsp),%ymm13,%ymm13 +vpsubq 1152(%rsp),%ymm0,%ymm0 +vpaddq 512(%rsp),%ymm0,%ymm0 +vpsubq 1184(%rsp),%ymm1,%ymm1 +vpaddq 544(%rsp),%ymm1,%ymm1 +vpsubq 704(%rsp),%ymm2,%ymm2 +vpaddq 576(%rsp),%ymm2,%ymm2 +vpsubq 736(%rsp),%ymm3,%ymm3 +vpaddq 608(%rsp),%ymm3,%ymm3 + +vpsrlq $29,%ymm0,%ymm14 +vpaddq %ymm14,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 +vpmuludq vec1216(%rip),%ymm0,%ymm0 +vpaddq 768(%rsp),%ymm0,%ymm0 + +vpsrlq $29,%ymm1,%ymm14 +vpaddq %ymm14,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 +vpmuludq vec1216(%rip),%ymm1,%ymm1 +vpaddq 800(%rsp),%ymm1,%ymm1 + +vpsrlq $29,%ymm2,%ymm14 +vpaddq %ymm14,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 +vpmuludq vec1216(%rip),%ymm2,%ymm2 +vpaddq 832(%rsp),%ymm2,%ymm2 + +vpsrlq $29,%ymm3,%ymm14 +vpaddq 640(%rsp),%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm3,%ymm3 +vpmuludq vec1216(%rip),%ymm3,%ymm3 +vpaddq 864(%rsp),%ymm3,%ymm3 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq 672(%rsp),%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm4 +vpmuludq vec1216(%rip),%ymm4,%ymm4 +vpaddq %ymm9,%ymm4,%ymm4 + +vpsrlq $29,%ymm15,%ymm14 +vpaddq 704(%rsp),%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm15,%ymm5 +vpmuludq vec1216(%rip),%ymm5,%ymm5 +vpaddq %ymm10,%ymm5,%ymm5 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq 736(%rsp),%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm6 +vpmuludq vec1216(%rip),%ymm6,%ymm6 +vpaddq %ymm11,%ymm6,%ymm6 + +vpsrlq $29,%ymm15,%ymm8 +vpand vecmask29(%rip),%ymm15,%ymm7 + +vpmuludq vec1216(%rip),%ymm7,%ymm7 +vpaddq %ymm12,%ymm7,%ymm7 +vpmuludq vec1216(%rip),%ymm8,%ymm8 +vpaddq %ymm13,%ymm8,%ymm8 + +vpsrlq $29,%ymm4,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +vpsrlq $29,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask29(%rip),%ymm5,%ymm5 + +vpsrlq $29,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 + +vpsrlq $29,%ymm6,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpand vecmask29(%rip),%ymm6,%ymm6 + +vpsrlq $29,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 + +vpsrlq $29,%ymm7,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask29(%rip),%ymm7,%ymm7 + +vpsrlq $29,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpand vecmask29(%rip),%ymm3,%ymm3 + +vpsrlq $23,%ymm8,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpaddq %ymm10,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpsllq $3,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask23(%rip),%ymm8,%ymm8 + +vpsrlq $29,%ymm4,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +vmovdqa %ymm0,1248(%rsp) +vmovdqa %ymm1,1280(%rsp) +vmovdqa %ymm2,1312(%rsp) +vmovdqa %ymm3,1344(%rsp) +vmovdqa %ymm4,1376(%rsp) +vmovdqa %ymm5,1408(%rsp) +vmovdqa %ymm6,1440(%rsp) +vmovdqa %ymm7,1472(%rsp) +vmovdqa %ymm8,1504(%rsp) + +// ← Pack-N2D() +vpsllq $32,%ymm4,%ymm4 +vpor %ymm4,%ymm0,%ymm0 +vpsllq $32,%ymm5,%ymm5 +vpor %ymm5,%ymm1,%ymm1 +vpsllq $32,%ymm6,%ymm6 +vpor %ymm6,%ymm2,%ymm2 +vpsllq $32,%ymm7,%ymm7 +vpor %ymm7,%ymm3,%ymm3 + +// ← Dense-H2-H() +vpshufd $68,%ymm0,%ymm9 +vpand h2h_mask(%rip),%ymm9,%ymm9 +vpshufd $238,%ymm0,%ymm10 +vpaddd h2h_p1(%rip),%ymm9,%ymm9 +vpxor h2h_xor1(%rip),%ymm10,%ymm10 +vpaddd %ymm9,%ymm10,%ymm0 + +vpshufd $68,%ymm1,%ymm9 +vpand h2h_mask(%rip),%ymm9,%ymm9 +vpshufd $238,%ymm1,%ymm10 +vpaddd h2h_p2(%rip),%ymm9,%ymm9 +vpxor h2h_xor1(%rip),%ymm10,%ymm10 +vpaddd %ymm9,%ymm10,%ymm1 + +vpshufd $68,%ymm2,%ymm9 +vpand h2h_mask(%rip),%ymm9,%ymm9 +vpshufd $238,%ymm2,%ymm10 +vpaddd h2h_p2(%rip),%ymm9,%ymm9 +vpxor h2h_xor1(%rip),%ymm10,%ymm10 +vpaddd %ymm9,%ymm10,%ymm2 + +vpshufd $68,%ymm3,%ymm9 +vpand h2h_mask(%rip),%ymm9,%ymm9 +vpshufd $238,%ymm3,%ymm10 +vpaddd h2h_p2(%rip),%ymm9,%ymm9 +vpxor h2h_xor1(%rip),%ymm10,%ymm10 +vpaddd %ymm9,%ymm10,%ymm3 + +vpshufd $68,%ymm8,%ymm9 +vpand h2h_mask(%rip),%ymm9,%ymm9 +vpshufd $238,%ymm8,%ymm10 +vpaddd h2h_p3(%rip),%ymm9,%ymm9 +vpxor h2h_xor2(%rip),%ymm10,%ymm10 +vpaddd %ymm9,%ymm10,%ymm8 + +vpsrld $29,%ymm0,%ymm15 +vpaddd %ymm15,%ymm1,%ymm1 +vpand vecmask29d(%rip),%ymm0,%ymm0 + +vpsrld $29,%ymm1,%ymm15 +vpaddd %ymm15,%ymm2,%ymm2 +vpand vecmask29d(%rip),%ymm1,%ymm1 + +vpsrld $29,%ymm2,%ymm15 +vpaddd %ymm15,%ymm3,%ymm3 +vpand vecmask29d(%rip),%ymm2,%ymm2 + +vpsrld $29,%ymm3,%ymm15 +vpsllq $32,%ymm15,%ymm15 +vpaddd %ymm15,%ymm0,%ymm0 +vpsrlq $61,%ymm3,%ymm15 +vpaddd %ymm15,%ymm8,%ymm8 +vpand vecmask29d(%rip),%ymm3,%ymm3 + +vpsrlq $23,%ymm8,%ymm15 +vpmuludq vec19(%rip),%ymm15,%ymm15 +vpaddd %ymm15,%ymm0,%ymm0 +vpand vecmask23(%rip),%ymm8,%ymm8 + +// ← Blend(<0',0',1',X1'>,,1100) +vpblendd $240,0(%rsi),%ymm0,%ymm11 +vpblendd $240,32(%rsi),%ymm1,%ymm12 +vpblendd $240,64(%rsi),%ymm2,%ymm13 +vpblendd $240,96(%rsi),%ymm3,%ymm14 +vpblendd $240,128(%rsi),%ymm8,%ymm15 + +// ← Pack-D2N() +vmovdqa %ymm11,192(%rsp) +vpsrlq $32,%ymm11,%ymm11 +vmovdqa %ymm11,320(%rsp) +vmovdqa %ymm12,224(%rsp) +vpsrlq $32,%ymm12,%ymm12 +vmovdqa %ymm12,352(%rsp) +vmovdqa %ymm13,256(%rsp) +vpsrlq $32,%ymm13,%ymm13 +vmovdqa %ymm13,384(%rsp) +vmovdqa %ymm14,288(%rsp) +vpsrlq $32,%ymm14,%ymm14 +vmovdqa %ymm14,416(%rsp) +vmovdqa %ymm15,448(%rsp) + +// ← Pack-D2N() +vpsrlq $32,%ymm0,%ymm4 +vpsrlq $32,%ymm1,%ymm5 +vpsrlq $32,%ymm2,%ymm6 +vpsrlq $32,%ymm3,%ymm7 + +// <0,T13,0,0> ← Unreduced-Mulc(,<0,a24,0,0>) +// ← Add(<0,T13,0,0>,) +vpmuludq a24(%rip),%ymm0,%ymm9 +vpaddq 1248(%rsp),%ymm9,%ymm9 +vpmuludq a24(%rip),%ymm1,%ymm10 +vpaddq 1280(%rsp),%ymm10,%ymm10 +vpmuludq a24(%rip),%ymm2,%ymm11 +vpaddq 1312(%rsp),%ymm11,%ymm11 +vpmuludq a24(%rip),%ymm4,%ymm12 +vpaddq 1376(%rsp),%ymm12,%ymm12 +vpmuludq a24(%rip),%ymm5,%ymm13 +vpaddq 1408(%rsp),%ymm13,%ymm13 +vpmuludq a24(%rip),%ymm6,%ymm14 +vpaddq 1440(%rsp),%ymm14,%ymm14 + +vpsrlq $29,%ymm12,%ymm15 +vpaddq %ymm15,%ymm13,%ymm13 +vpand vecmask29(%rip),%ymm12,%ymm12 + +vpsrlq $29,%ymm9,%ymm15 +vpaddq %ymm15,%ymm10,%ymm10 +vpand vecmask29(%rip),%ymm9,%ymm9 + +vpsrlq $29,%ymm13,%ymm15 +vpaddq %ymm15,%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm13,%ymm13 +vmovdqa %ymm13,1408(%rsp) + +vpsrlq $29,%ymm10,%ymm15 +vpaddq %ymm15,%ymm11,%ymm11 +vpand vecmask29(%rip),%ymm10,%ymm10 +vmovdqa %ymm10,1280(%rsp) + +vpmuludq a24(%rip),%ymm3,%ymm10 +vpaddq 1344(%rsp),%ymm10,%ymm10 +vpmuludq a24(%rip),%ymm7,%ymm13 +vpaddq 1472(%rsp),%ymm13,%ymm13 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq %ymm15,%ymm13,%ymm13 +vpand vecmask29(%rip),%ymm14,%ymm14 +vmovdqa %ymm14,1440(%rsp) + +vpsrlq $29,%ymm11,%ymm15 +vpaddq %ymm15,%ymm10,%ymm10 +vpand vecmask29(%rip),%ymm11,%ymm11 +vmovdqa %ymm11,1312(%rsp) + +vpmuludq a24(%rip),%ymm8,%ymm14 +vpaddq 1504(%rsp),%ymm14,%ymm14 + +vpsrlq $29,%ymm13,%ymm15 +vpaddq %ymm15,%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm13,%ymm13 +vmovdqa %ymm13,1472(%rsp) + +vpsrlq $29,%ymm10,%ymm15 +vpaddq %ymm15,%ymm12,%ymm12 +vpand vecmask29(%rip),%ymm10,%ymm10 +vmovdqa %ymm10,1344(%rsp) +vmovdqa %ymm12,1376(%rsp) + +vpsrlq $23,%ymm14,%ymm15 +vpmuludq vec19(%rip),%ymm15,%ymm15 +vpaddq %ymm15,%ymm9,%ymm9 +vpand vecmask23(%rip),%ymm14,%ymm14 +vmovdqa %ymm9,1248(%rsp) +vmovdqa %ymm14,1504(%rsp) + +// <*,*,T15,T16> ← Sqr() +vpmuludq %ymm1,%ymm8,%ymm15 +vpmuludq %ymm2,%ymm7,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm3,%ymm6,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm4,%ymm5,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpsllq $1,%ymm15,%ymm9 + +vpmuludq %ymm2,%ymm8,%ymm15 +vpmuludq %ymm3,%ymm7,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm4,%ymm6,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpsllq $1,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm5,%ymm14 +vpaddq %ymm14,%ymm15,%ymm10 + +vpsrlq $29,%ymm9,%ymm14 +vpaddq %ymm14,%ymm10,%ymm10 +vpand vecmask29(%rip),%ymm9,%ymm9 + +vpmuludq vec1216(%rip),%ymm9,%ymm9 +vpmuludq %ymm0,%ymm0,%ymm15 +vpaddq %ymm15,%ymm9,%ymm9 + +vpmuludq %ymm3,%ymm8,%ymm15 +vpmuludq %ymm4,%ymm7,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm6,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpsllq $1,%ymm15,%ymm11 + +vpsrlq $29,%ymm10,%ymm14 +vpaddq %ymm14,%ymm11,%ymm11 +vpand vecmask29(%rip),%ymm10,%ymm10 + +vpmuludq vec1216(%rip),%ymm10,%ymm10 +vpmuludq %ymm0,%ymm1,%ymm15 +vpsllq $1,%ymm15,%ymm15 +vpaddq %ymm15,%ymm10,%ymm10 +vpmuludq %ymm4,%ymm8,%ymm15 +vpmuludq %ymm5,%ymm7,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpsllq $1,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm6,%ymm14 +vpaddq %ymm14,%ymm15,%ymm12 + +vpsrlq $29,%ymm11,%ymm14 +vpaddq %ymm14,%ymm12,%ymm12 +vpand vecmask29(%rip),%ymm11,%ymm11 +vpmuludq vec1216(%rip),%ymm11,%ymm11 +vpmuludq %ymm0,%ymm2,%ymm15 +vpsllq $1,%ymm15,%ymm15 +vpmuludq %ymm1,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpaddq %ymm15,%ymm11,%ymm11 +vpmuludq %ymm5,%ymm8,%ymm15 +vpmuludq %ymm6,%ymm7,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpsllq $1,%ymm15,%ymm13 + +vpsrlq $29,%ymm12,%ymm14 +vpaddq %ymm14,%ymm13,%ymm13 +vpand vecmask29(%rip),%ymm12,%ymm12 + +vpmuludq vec1216(%rip),%ymm12,%ymm12 +vpmuludq %ymm0,%ymm3,%ymm15 +vpmuludq %ymm1,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpsllq $1,%ymm15,%ymm15 +vpaddq %ymm15,%ymm12,%ymm12 + +vmovdqa %ymm11,64(%rsp) + +vpmuludq %ymm6,%ymm8,%ymm15 +vpsllq $1,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm7,%ymm14 +vpaddq %ymm14,%ymm15,%ymm14 + +vpsrlq $29,%ymm13,%ymm15 +vpaddq %ymm15,%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm13,%ymm13 + +vpmuludq vec1216(%rip),%ymm13,%ymm13 +vpmuludq %ymm0,%ymm4,%ymm15 +vpmuludq %ymm1,%ymm3,%ymm11 +vpaddq %ymm11,%ymm15,%ymm15 +vpsllq $1,%ymm15,%ymm15 +vpmuludq %ymm2,%ymm2,%ymm11 +vpaddq %ymm11,%ymm15,%ymm15 +vpaddq %ymm15,%ymm13,%ymm13 + +vmovdqa %ymm12,96(%rsp) + +vpmuludq %ymm7,%ymm8,%ymm15 +vpsllq $1,%ymm15,%ymm15 + +vpsrlq $29,%ymm14,%ymm11 +vpaddq %ymm11,%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm14 + +vpmuludq vec1216(%rip),%ymm14,%ymm14 +vpmuludq %ymm0,%ymm5,%ymm12 +vpmuludq %ymm1,%ymm4,%ymm11 +vpaddq %ymm11,%ymm12,%ymm12 +vpmuludq %ymm2,%ymm3,%ymm11 +vpaddq %ymm11,%ymm12,%ymm12 +vpsllq $1,%ymm12,%ymm12 +vpaddq %ymm12,%ymm14,%ymm14 + +vmovdqa %ymm13,128(%rsp) + +vpmuludq %ymm8,%ymm8,%ymm11 + +vpsrlq $29,%ymm15,%ymm12 +vpaddq %ymm12,%ymm11,%ymm11 +vpand vecmask29(%rip),%ymm15,%ymm15 + +vpmuludq vec1216(%rip),%ymm15,%ymm15 +vpmuludq %ymm0,%ymm6,%ymm12 +vpmuludq %ymm1,%ymm5,%ymm13 +vpaddq %ymm12,%ymm13,%ymm13 +vpmuludq %ymm2,%ymm4,%ymm12 +vpaddq %ymm12,%ymm13,%ymm13 +vpsllq $1,%ymm13,%ymm13 +vpmuludq %ymm3,%ymm3,%ymm12 +vpaddq %ymm12,%ymm13,%ymm13 +vpaddq %ymm13,%ymm15,%ymm15 + +vmovdqa %ymm14,160(%rsp) + +vpsrlq $29,%ymm11,%ymm12 +vpand vecmask29(%rip),%ymm11,%ymm11 + +vpmuludq vec1216(%rip),%ymm11,%ymm11 +vpmuludq %ymm0,%ymm7,%ymm13 +vpmuludq %ymm1,%ymm6,%ymm14 +vpaddq %ymm13,%ymm14,%ymm14 +vpmuludq %ymm2,%ymm5,%ymm13 +vpaddq %ymm13,%ymm14,%ymm14 +vpmuludq %ymm3,%ymm4,%ymm13 +vpaddq %ymm13,%ymm14,%ymm14 +vpsllq $1,%ymm14,%ymm14 +vpaddq %ymm14,%ymm11,%ymm11 + +vpmuludq vec1216(%rip),%ymm12,%ymm12 +vpmuludq %ymm0,%ymm8,%ymm13 +vpmuludq %ymm1,%ymm7,%ymm14 +vpaddq %ymm13,%ymm14,%ymm14 +vpmuludq %ymm2,%ymm6,%ymm13 +vpaddq %ymm13,%ymm14,%ymm14 +vpmuludq %ymm3,%ymm5,%ymm13 +vpaddq %ymm13,%ymm14,%ymm14 +vpsllq $1,%ymm14,%ymm14 +vpmuludq %ymm4,%ymm4,%ymm13 +vpaddq %ymm13,%ymm14,%ymm14 +vpaddq %ymm14,%ymm12,%ymm12 + +vmovdqa 128(%rsp),%ymm4 +vpsrlq $29,%ymm4,%ymm5 +vpaddq 160(%rsp),%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm9,%ymm14 +vpaddq %ymm14,%ymm10,%ymm1 +vpand vecmask29(%rip),%ymm9,%ymm0 + +vpsrlq $29,%ymm5,%ymm6 +vpaddq %ymm15,%ymm6,%ymm6 +vpand vecmask29(%rip),%ymm5,%ymm5 + +vpsrlq $29,%ymm1,%ymm14 +vpaddq 64(%rsp),%ymm14,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 + +vpsrlq $29,%ymm6,%ymm7 +vpaddq %ymm11,%ymm7,%ymm7 +vpand vecmask29(%rip),%ymm6,%ymm6 + +vpsrlq $29,%ymm2,%ymm14 +vpaddq 96(%rsp),%ymm14,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 + +vpsrlq $29,%ymm7,%ymm8 +vpaddq %ymm12,%ymm8,%ymm8 +vpand vecmask29(%rip),%ymm7,%ymm7 + +vpsrlq $29,%ymm3,%ymm14 +vpaddq %ymm14,%ymm4,%ymm4 +vpand vecmask29(%rip),%ymm3,%ymm3 + +vpsrlq $23,%ymm8,%ymm14 +vpaddq %ymm14,%ymm0,%ymm0 +vpsllq $1,%ymm14,%ymm14 +vpaddq %ymm14,%ymm0,%ymm0 +vpsllq $3,%ymm14,%ymm14 +vpaddq %ymm14,%ymm0,%ymm0 +vpand vecmask23(%rip),%ymm8,%ymm8 + +vpsrlq $29,%ymm4,%ymm14 +vpaddq %ymm14,%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm0,%ymm14 +vpaddq %ymm14,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +// ← Blend(,<*,*,T15,T16>,0011) +vpblendd $15,1248(%rsp),%ymm0,%ymm10 +vpblendd $15,1280(%rsp),%ymm1,%ymm11 +vpblendd $15,1312(%rsp),%ymm2,%ymm12 +vpblendd $15,1344(%rsp),%ymm3,%ymm13 +vpblendd $15,1376(%rsp),%ymm4,%ymm0 +vpblendd $15,1408(%rsp),%ymm5,%ymm1 +vpblendd $15,1440(%rsp),%ymm6,%ymm2 +vpblendd $15,1472(%rsp),%ymm7,%ymm3 +vpblendd $15,1504(%rsp),%ymm8,%ymm4 + +// ← Mul(,) +vmovdqa 320(%rsp),%ymm5 +vmovdqa 352(%rsp),%ymm6 +vmovdqa 384(%rsp),%ymm7 +vmovdqa 416(%rsp),%ymm8 +vmovdqa 448(%rsp),%ymm9 + +vpmuludq %ymm5,%ymm0,%ymm15 +vmovdqa %ymm15,480(%rsp) + +vpmuludq %ymm6,%ymm0,%ymm15 +vpmuludq %ymm5,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,512(%rsp) + +vpmuludq %ymm7,%ymm0,%ymm15 +vpmuludq %ymm6,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,544(%rsp) + +vpmuludq %ymm8,%ymm0,%ymm15 +vpmuludq %ymm7,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,576(%rsp) + +vpmuludq %ymm9,%ymm0,%ymm15 +vpmuludq %ymm8,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,608(%rsp) + +vpmuludq %ymm9,%ymm1,%ymm15 +vpmuludq %ymm8,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,640(%rsp) + +vpmuludq %ymm9,%ymm2,%ymm15 +vpmuludq %ymm8,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,672(%rsp) + +vpmuludq %ymm9,%ymm3,%ymm15 +vpmuludq %ymm8,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,704(%rsp) + +vpmuludq %ymm9,%ymm4,%ymm15 +vmovdqa %ymm15,736(%rsp) + +vpaddq %ymm10,%ymm0,%ymm0 +vpaddq %ymm11,%ymm1,%ymm1 +vpaddq %ymm12,%ymm2,%ymm2 +vpaddq %ymm13,%ymm3,%ymm3 +vpaddq 192(%rsp),%ymm5,%ymm5 +vpaddq 224(%rsp),%ymm6,%ymm6 +vpaddq 256(%rsp),%ymm7,%ymm7 +vpaddq 288(%rsp),%ymm8,%ymm8 + +vpmuludq 192(%rsp),%ymm10,%ymm15 +vmovdqa %ymm15,768(%rsp) +vpaddq 480(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,992(%rsp) + +vpmuludq 224(%rsp),%ymm10,%ymm15 +vpmuludq 192(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,800(%rsp) +vpaddq 512(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1024(%rsp) + +vpmuludq 256(%rsp),%ymm10,%ymm15 +vpmuludq 224(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 192(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,832(%rsp) +vpaddq 544(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1056(%rsp) + +vpmuludq 288(%rsp),%ymm10,%ymm15 +vpmuludq 256(%rsp),%ymm11,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 224(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 192(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,864(%rsp) +vpaddq 576(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1088(%rsp) + +vpmuludq 288(%rsp),%ymm11,%ymm15 +vpmuludq 256(%rsp),%ymm12,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq 224(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,896(%rsp) +vpaddq 608(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1120(%rsp) + +vpmuludq 288(%rsp),%ymm12,%ymm15 +vpmuludq 256(%rsp),%ymm13,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vmovdqa %ymm15,928(%rsp) +vpaddq 640(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1152(%rsp) + +vpmuludq 288(%rsp),%ymm13,%ymm15 +vmovdqa %ymm15,960(%rsp) +vpaddq 672(%rsp),%ymm15,%ymm15 +vmovdqa %ymm15,1184(%rsp) + +vpmuludq %ymm5,%ymm0,%ymm15 +vmovdqa %ymm15,1216(%rsp) + +vpmuludq %ymm6,%ymm0,%ymm15 +vpmuludq %ymm5,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm10 + +vpmuludq %ymm7,%ymm0,%ymm15 +vpmuludq %ymm6,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm11 + +vpmuludq %ymm8,%ymm0,%ymm15 +vpmuludq %ymm7,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm12 + +vpmuludq %ymm9,%ymm0,%ymm15 +vpmuludq %ymm8,%ymm1,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm5,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm13 + +vpmuludq %ymm9,%ymm1,%ymm15 +vpmuludq %ymm8,%ymm2,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm6,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm0 + +vpmuludq %ymm9,%ymm2,%ymm15 +vpmuludq %ymm8,%ymm3,%ymm14 +vpaddq %ymm14,%ymm15,%ymm15 +vpmuludq %ymm7,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm1 + +vpmuludq %ymm9,%ymm3,%ymm15 +vpmuludq %ymm8,%ymm4,%ymm14 +vpaddq %ymm14,%ymm15,%ymm2 + +vpmuludq %ymm9,%ymm4,%ymm3 + +vmovdqa 1216(%rsp),%ymm9 + +vpsubq 992(%rsp),%ymm9,%ymm9 +vpaddq 896(%rsp),%ymm9,%ymm9 +vpsubq 1024(%rsp),%ymm10,%ymm10 +vpaddq 928(%rsp),%ymm10,%ymm10 +vpsubq 1056(%rsp),%ymm11,%ymm11 +vpaddq 960(%rsp),%ymm11,%ymm11 +vpsubq 1088(%rsp),%ymm12,%ymm12 +vpsubq 1120(%rsp),%ymm13,%ymm13 +vpaddq 480(%rsp),%ymm13,%ymm13 +vpsubq 1152(%rsp),%ymm0,%ymm0 +vpaddq 512(%rsp),%ymm0,%ymm0 +vpsubq 1184(%rsp),%ymm1,%ymm1 +vpaddq 544(%rsp),%ymm1,%ymm1 +vpsubq 704(%rsp),%ymm2,%ymm2 +vpaddq 576(%rsp),%ymm2,%ymm2 +vpsubq 736(%rsp),%ymm3,%ymm3 +vpaddq 608(%rsp),%ymm3,%ymm3 + +vpsrlq $29,%ymm0,%ymm14 +vpaddq %ymm14,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 +vpmuludq vec1216(%rip),%ymm0,%ymm0 +vpaddq 768(%rsp),%ymm0,%ymm0 + +vpsrlq $29,%ymm1,%ymm14 +vpaddq %ymm14,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 +vpmuludq vec1216(%rip),%ymm1,%ymm1 +vpaddq 800(%rsp),%ymm1,%ymm1 + +vpsrlq $29,%ymm2,%ymm14 +vpaddq %ymm14,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 +vpmuludq vec1216(%rip),%ymm2,%ymm2 +vpaddq 832(%rsp),%ymm2,%ymm2 + +vpsrlq $29,%ymm3,%ymm14 +vpaddq 640(%rsp),%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm3,%ymm3 +vpmuludq vec1216(%rip),%ymm3,%ymm3 +vpaddq 864(%rsp),%ymm3,%ymm3 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq 672(%rsp),%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm4 +vpmuludq vec1216(%rip),%ymm4,%ymm4 +vpaddq %ymm9,%ymm4,%ymm4 + +vpsrlq $29,%ymm15,%ymm14 +vpaddq 704(%rsp),%ymm14,%ymm14 +vpand vecmask29(%rip),%ymm15,%ymm5 +vpmuludq vec1216(%rip),%ymm5,%ymm5 +vpaddq %ymm10,%ymm5,%ymm5 + +vpsrlq $29,%ymm14,%ymm15 +vpaddq 736(%rsp),%ymm15,%ymm15 +vpand vecmask29(%rip),%ymm14,%ymm6 +vpmuludq vec1216(%rip),%ymm6,%ymm6 +vpaddq %ymm11,%ymm6,%ymm6 + +vpsrlq $29,%ymm15,%ymm8 +vpand vecmask29(%rip),%ymm15,%ymm7 + +vpmuludq vec1216(%rip),%ymm7,%ymm7 +vpaddq %ymm12,%ymm7,%ymm7 +vpmuludq vec1216(%rip),%ymm8,%ymm8 +vpaddq %ymm13,%ymm8,%ymm8 + +vpsrlq $29,%ymm4,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +vpsrlq $29,%ymm5,%ymm10 +vpaddq %ymm10,%ymm6,%ymm6 +vpand vecmask29(%rip),%ymm5,%ymm5 + +vpsrlq $29,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 + +vpsrlq $29,%ymm6,%ymm10 +vpaddq %ymm10,%ymm7,%ymm7 +vpand vecmask29(%rip),%ymm6,%ymm6 + +vpsrlq $29,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 + +vpsrlq $29,%ymm7,%ymm10 +vpaddq %ymm10,%ymm8,%ymm8 +vpand vecmask29(%rip),%ymm7,%ymm7 + +vpsrlq $29,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm9 +vpand vecmask29(%rip),%ymm3,%ymm3 + +vpsrlq $23,%ymm8,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpaddq %ymm10,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpsllq $3,%ymm10,%ymm10 +vpaddq %ymm10,%ymm0,%ymm0 +vpand vecmask23(%rip),%ymm8,%ymm4 + +vpsrlq $29,%ymm9,%ymm10 +vpaddq %ymm10,%ymm5,%ymm5 +vpand vecmask29(%rip),%ymm9,%ymm9 + +vpsrlq $29,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +// ← Pack-N2D() +vpsllq $32,%ymm9,%ymm9 +vpor %ymm9,%ymm0,%ymm10 +vpsllq $32,%ymm5,%ymm5 +vpor %ymm5,%ymm1,%ymm11 +vpsllq $32,%ymm6,%ymm6 +vpor %ymm6,%ymm2,%ymm12 +vpsllq $32,%ymm7,%ymm7 +vpor %ymm7,%ymm3,%ymm13 + +subb $1,%cl +cmpb $0,%cl +jge .L2 + +movb $7,%cl +subq $1,%r15 +cmpq $0,%r15 +jge .L1 + +// ← Pack-D2N() +vpsrlq $32,%ymm10,%ymm0 +vpand vecmask32(%rip),%ymm10,%ymm10 +vpsrlq $32,%ymm11,%ymm1 +vpand vecmask32(%rip),%ymm11,%ymm11 +vpsrlq $32,%ymm12,%ymm2 +vpand vecmask32(%rip),%ymm12,%ymm12 +vpsrlq $32,%ymm13,%ymm3 +vpand vecmask32(%rip),%ymm13,%ymm13 + +// ← Reduce() +vpsrlq $29,%ymm10,%ymm15 +vpaddq %ymm15,%ymm11,%ymm11 +vpand vecmask29(%rip),%ymm10,%ymm10 + +vpsrlq $29,%ymm11,%ymm15 +vpaddq %ymm15,%ymm12,%ymm12 +vpand vecmask29(%rip),%ymm11,%ymm11 + +vpsrlq $29,%ymm12,%ymm15 +vpaddq %ymm15,%ymm13,%ymm13 +vpand vecmask29(%rip),%ymm12,%ymm12 + +vpsrlq $29,%ymm13,%ymm15 +vpaddq %ymm15,%ymm0,%ymm0 +vpand vecmask29(%rip),%ymm13,%ymm13 + +vpsrlq $29,%ymm0,%ymm15 +vpaddq %ymm15,%ymm1,%ymm1 +vpand vecmask29(%rip),%ymm0,%ymm0 + +vpsrlq $29,%ymm1,%ymm15 +vpaddq %ymm15,%ymm2,%ymm2 +vpand vecmask29(%rip),%ymm1,%ymm1 + +vpsrlq $29,%ymm2,%ymm15 +vpaddq %ymm15,%ymm3,%ymm3 +vpand vecmask29(%rip),%ymm2,%ymm2 + +vpsrlq $29,%ymm3,%ymm15 +vpaddq %ymm15,%ymm4,%ymm4 +vpand vecmask29(%rip),%ymm3,%ymm3 + +vpsrlq $23,%ymm4,%ymm15 +vpmuludq vec19(%rip),%ymm15,%ymm15 +vpaddq %ymm15,%ymm10,%ymm10 +vpand vecmask23(%rip),%ymm4,%ymm4 + +vpsrlq $29,%ymm10,%ymm15 +vpaddq %ymm15,%ymm11,%ymm11 +vpand vecmask29(%rip),%ymm10,%ymm10 + +// store +vmovdqa %ymm10,0(%rdi) +vmovdqa %ymm11,32(%rdi) +vmovdqa %ymm12,64(%rdi) +vmovdqa %ymm13,96(%rdi) +vmovdqa %ymm0,128(%rdi) +vmovdqa %ymm1,160(%rdi) +vmovdqa %ymm2,192(%rdi) +vmovdqa %ymm3,224(%rdi) +vmovdqa %ymm4,256(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/mont25519.c new file mode 100644 index 0000000000..0b282e8d3e --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/mont25519.c @@ -0,0 +1,42 @@ +#include "randombytes.h" +#include "crypto_nP.h" +#include "fe25519.h" +#include "crypto_uint64_vec4x1.h" + +#define mladder CRYPTO_SHARED_NAMESPACE(mladder) +extern void mladder(crypto_uint64_vec4x1 *,crypto_uint64_vec4x1 *,const unsigned char *); + +void crypto_nP(unsigned char *r, + const unsigned char *s, + const unsigned char *p) +{ + unsigned char e[32]; + int i; + + crypto_uint64_vec4x1 a[9] = {{0}}; + crypto_uint64_vec4x1 b[9] = {{0}}; + fe25519_9l u,v; + fe25519 z[2]; + + for(i=0;i<32;i++) e[i] = s[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fe25519_unpack(z,p); + fe25519_to_9l(&u,z); + + b[0][0] = b[0][3] = a[0][2] = 1; + + for (i=0;i<9;i++) {b[i][2] = u.l[i]; a[i][3] = u.l[i];} + + mladder(b,a,e); + + for (i=0;i<9;i++) {u.l[i] = b[i][0]; v.l[i] = b[i][1];} + + fe25519_from_9l(z,&u); + fe25519_from_9l(z+1,&v); + fe25519_invert(z+1, z+1); + fe25519_mul(z, z, z+1); + fe25519_pack(r, z); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/shared-consts.c new file mode 100644 index 0000000000..72cedcdcd8 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa4/shared-consts.c @@ -0,0 +1,47 @@ +// linker define hh1_p1 +// linker define hh1_p2 +// linker define hh1_p3 +// linker define h2h_p1 +// linker define h2h_p2 +// linker define h2h_p3 +// linker define vecmask29d +// linker define hh1_xor1 +// linker define h2h_xor1 +// linker define hh1_xor2 +// linker define h2h_xor2 +// linker define swap_c +// linker define swap_mask +// linker define h2h_mask +// linker define vec19 +// linker define vec1216 +// linker define vecmask23 +// linker define vecmask29 +// linker define vecmask32 +// linker define a24 +// linker define mask63 + +#include "consts_namespace.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" + +const crypto_uint32 hh1_p1[] = { 0x0,0x0,0x3FFFFFDB,0x3FFFFFFF,0x3FFFFFDB,0x3FFFFFFF,0x0,0x0 }; +const crypto_uint32 hh1_p2[] = { 0x0,0x0,0x3FFFFFFF,0x3FFFFFFF,0x3FFFFFFF,0x3FFFFFFF,0x0,0x0 }; +const crypto_uint32 hh1_p3[] = { 0x0,0x0,0xFFFFFF,0x0,0xFFFFFF,0x0,0x0,0x0 }; +const crypto_uint32 h2h_p1[] = { 0x0,0x0,0x3FFFFFDB,0x3FFFFFFF,0x0,0x0,0x3FFFFFDB,0x3FFFFFFF }; +const crypto_uint32 h2h_p2[] = { 0x0,0x0,0x3FFFFFFF,0x3FFFFFFF,0x0,0x0,0x3FFFFFFF,0x3FFFFFFF }; +const crypto_uint32 h2h_p3[] = { 0x0,0x0,0xFFFFFF,0x0,0x0,0x0,0xFFFFFF,0x0 }; +const crypto_uint32 vecmask29d[] = { 0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF }; +const crypto_uint32 hh1_xor1[] = { 0,0,-1,-1,-1,-1,0,0 }; +const crypto_uint32 h2h_xor1[] = { 0,0,-1,-1,0,0,-1,-1 }; +const crypto_uint32 hh1_xor2[] = { 0,0,-1,0,-1,0,0,0 }; +const crypto_uint32 h2h_xor2[] = { 0,0,-1,0,0,0,-1,0 }; +const crypto_uint32 swap_c[] = { 0,1,2,3,4,5,6,7 }; +const crypto_uint32 swap_mask[] = { 7,7,7,7,7,7,7,7 }; +const crypto_uint64 h2h_mask[] = { 0,-1,-1,-1 }; +const crypto_uint64 vec19[] = { 19,19,19,19 }; +const crypto_uint64 vec1216[] = { 1216,1216,1216,1216 }; +const crypto_uint64 vecmask23[] = { 0x7FFFFF,0x7FFFFF,0x7FFFFF,0x7FFFFF }; +const crypto_uint64 vecmask29[] = { 0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF }; +const crypto_uint64 vecmask32[] = { 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF }; +const crypto_uint64 a24[] = { 0,121666,0,0 }; +const crypto_uint64 mask63[] = { 0x7FFFFFFFFFFFFFFF }; diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/consts_namespace.h new file mode 100644 index 0000000000..3993450802 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/consts_namespace.h @@ -0,0 +1,27 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define hh1_p1 CRYPTO_SHARED_NAMESPACE(hh1_p1) +#define hh1_p2 CRYPTO_SHARED_NAMESPACE(hh1_p2) +#define hh1_p3 CRYPTO_SHARED_NAMESPACE(hh1_p3) +#define h2h_p1 CRYPTO_SHARED_NAMESPACE(h2h_p1) +#define h2h_p2 CRYPTO_SHARED_NAMESPACE(h2h_p2) +#define h2h_p3 CRYPTO_SHARED_NAMESPACE(h2h_p3) +#define hh1_xor1 CRYPTO_SHARED_NAMESPACE(hh1_xor1) +#define h2h_xor1 CRYPTO_SHARED_NAMESPACE(h2h_xor1) +#define hh1_xor2 CRYPTO_SHARED_NAMESPACE(hh1_xor2) +#define h2h_xor2 CRYPTO_SHARED_NAMESPACE(h2h_xor2) +#define swap_c CRYPTO_SHARED_NAMESPACE(swap_c) +#define swap_mask CRYPTO_SHARED_NAMESPACE(swap_mask) +#define h2h_mask CRYPTO_SHARED_NAMESPACE(h2h_mask) +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vec1216 CRYPTO_SHARED_NAMESPACE(vec1216) +#define vecmask23 CRYPTO_SHARED_NAMESPACE(vecmask23) +#define vecmask29 CRYPTO_SHARED_NAMESPACE(vecmask29) +#define vecmask29d CRYPTO_SHARED_NAMESPACE(vecmask29d) +#define vecmask32 CRYPTO_SHARED_NAMESPACE(vecmask32) +#define a24 CRYPTO_SHARED_NAMESPACE(a24) +#define mask51 CRYPTO_SHARED_NAMESPACE(mask51) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519.h new file mode 100644 index 0000000000..d1f7ec7ee0 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519.h @@ -0,0 +1,53 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_5l CRYPTO_NAMESPACE(fe25519_5l) +#define fe25519_9l CRYPTO_NAMESPACE(fe25519_9l) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_nsquare CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) +#define fe25519_to_9l CRYPTO_NAMESPACE(fe25519_to_9l) +#define fe25519_9l_to_5l CRYPTO_NAMESPACE(fe25519_9l_to_5l) +#define fe25519_from_5l CRYPTO_NAMESPACE(fe25519_from_5l) + +#define fe25519_square(x,y) fe25519_nsquare(x,y,1) + +typedef struct +{ + unsigned long long l[4]; +} +fe25519; + +typedef struct { + unsigned long long l[5]; +} +fe25519_5l; + +typedef struct { + unsigned long long l[9]; +} +fe25519_9l; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_mul(fe25519_5l *r, const fe25519_5l *x, const fe25519_5l *y); + +void fe25519_nsquare(fe25519_5l *r, const fe25519_5l *x, long long n); + +void fe25519_invert(fe25519_5l *r, const fe25519_5l *x); + +void fe25519_to_9l(fe25519_9l *r, const fe25519 *x); + +void fe25519_9l_to_5l(fe25519_5l *r, const fe25519_9l *x); + +void fe25519_from_5l(fe25519 *r, const fe25519_5l *x); + +#endif diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_9l_to_5l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_9l_to_5l.c new file mode 100644 index 0000000000..27de2209bc --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_9l_to_5l.c @@ -0,0 +1,12 @@ +// linker define fe25519_9l_to_5l + +#include "fe25519.h" + +void fe25519_9l_to_5l(fe25519_5l *r, const fe25519_9l *x) { + + r->l[0] = ((x->l[0] & 0x000000001FFFFFFF)) | ((x->l[1] & 0x00000000003FFFFF) << 29); + r->l[1] = ((x->l[1] & 0x000000001FC00000) >> 22) | ((x->l[2] & 0x000000001FFFFFFF) << 7) | ((x->l[3] & 0x0000000000007FFF) << 36); + r->l[2] = ((x->l[3] & 0x000000001FFF8000) >> 15) | ((x->l[4] & 0x000000001FFFFFFF) << 14) | ((x->l[5] & 0x00000000000000FF) << 43); + r->l[3] = ((x->l[5] & 0x000000001FFFFF00) >> 8) | ((x->l[6] & 0x000000001FFFFFFF) << 21) | ((x->l[7] & 0x0000000000000001) << 50); + r->l[4] = ((x->l[7] & 0x000000001FFFFFFE) >> 1) | ((x->l[8] & 0x00000000007FFFFF) << 28); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_from_5l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_from_5l.c new file mode 100644 index 0000000000..0cb3171410 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_from_5l.c @@ -0,0 +1,11 @@ +// linker define fe25519_from_5l + +#include "fe25519.h" + +void fe25519_from_5l(fe25519 *r, const fe25519_5l *x) { + + r->l[0] = ((x->l[0] & 0x0007FFFFFFFFFFFF)) | ((x->l[1] & 0x0000000000001FFF) << 51); + r->l[1] = ((x->l[1] & 0x0007FFFFFFFFE000) >> 13) | ((x->l[2] & 0x0000000003FFFFFF) << 38); + r->l[2] = ((x->l[2] & 0x0007FFFFFC000000) >> 26) | ((x->l[3] & 0x0000007FFFFFFFFF) << 25); + r->l[3] = ((x->l[3] & 0x0007FF8000000000) >> 39) | ((x->l[4] & 0x0007FFFFFFFFFFFF) << 12); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_invert.c new file mode 100644 index 0000000000..8db7ca0d19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_invert.c @@ -0,0 +1,19 @@ +// linker define fe25519_invert +// linker use fe25519_from_5l fe25519_pack fe25519_unpack fe25519_to_9l fe25519_9l_to_5l + +#include "crypto_pow_inv25519.h" +#include "fe25519.h" + +void fe25519_invert(fe25519_5l *r, const fe25519_5l *x) +{ + // XXX: can streamline this + fe25519 t; + fe25519_9l u; + unsigned char s[32]; + fe25519_from_5l(&t,x); + fe25519_pack(s,&t); + crypto_pow_inv25519(s,s); + fe25519_unpack(&t,s); + fe25519_to_9l(&u,&t); + fe25519_9l_to_5l(r,&u); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_mul.S new file mode 120000 index 0000000000..e0d6e779aa --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_nsquare.S new file mode 120000 index 0000000000..5f68ddec2b --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_to_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_to_9l.c new file mode 120000 index 0000000000..8914a99664 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_to_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_to_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/mladder.S new file mode 120000 index 0000000000..d4d1b04fa1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/mladder.S @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/mladder.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/mont25519.c new file mode 100644 index 0000000000..6a3efb6eac --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/mont25519.c @@ -0,0 +1,44 @@ +#include "randombytes.h" +#include "crypto_nP.h" +#include "fe25519.h" +#include "crypto_uint64_vec4x1.h" + +#define mladder CRYPTO_SHARED_NAMESPACE(mladder) +extern void mladder(crypto_uint64_vec4x1 *,crypto_uint64_vec4x1 *,const unsigned char *); + +void crypto_nP(unsigned char *r, + const unsigned char *s, + const unsigned char *p) +{ + unsigned char e[32]; + int i; + + crypto_uint64_vec4x1 a[9] = {{0}}; + crypto_uint64_vec4x1 b[9] = {{0}}; + fe25519_9l u,v; + fe25519_5l z[2]; + fe25519 w; + + for(i=0;i<32;i++) e[i] = s[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fe25519_unpack(&w,p); + fe25519_to_9l(&u,&w); + + b[0][0] = b[0][3] = a[0][2] = 1; + + for (i=0;i<9;i++) {b[i][2] = u.l[i]; a[i][3] = u.l[i];} + + mladder(b,a,e); + + for (i=0;i<9;i++) {u.l[i] = b[i][0]; v.l[i] = b[i][1];} + + fe25519_9l_to_5l(z,&u); + fe25519_9l_to_5l(z+1,&v); + fe25519_invert(z+1, z+1); + fe25519_mul(z, z, z+1); + fe25519_from_5l(&w, z); + fe25519_pack(r, &w); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/shared-consts.c new file mode 100644 index 0000000000..57b6dd3366 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maa5/shared-consts.c @@ -0,0 +1,47 @@ +// linker define hh1_p1 +// linker define hh1_p2 +// linker define hh1_p3 +// linker define h2h_p1 +// linker define h2h_p2 +// linker define h2h_p3 +// linker define vecmask29d +// linker define hh1_xor1 +// linker define h2h_xor1 +// linker define hh1_xor2 +// linker define h2h_xor2 +// linker define swap_c +// linker define swap_mask +// linker define h2h_mask +// linker define vec19 +// linker define vec1216 +// linker define vecmask23 +// linker define vecmask29 +// linker define vecmask32 +// linker define a24 +// linker define mask51 + +#include "consts_namespace.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" + +const crypto_uint32 hh1_p1[] = { 0x0,0x0,0x3FFFFFDB,0x3FFFFFFF,0x3FFFFFDB,0x3FFFFFFF,0x0,0x0 }; +const crypto_uint32 hh1_p2[] = { 0x0,0x0,0x3FFFFFFF,0x3FFFFFFF,0x3FFFFFFF,0x3FFFFFFF,0x0,0x0 }; +const crypto_uint32 hh1_p3[] = { 0x0,0x0,0xFFFFFF,0x0,0xFFFFFF,0x0,0x0,0x0 }; +const crypto_uint32 h2h_p1[] = { 0x0,0x0,0x3FFFFFDB,0x3FFFFFFF,0x0,0x0,0x3FFFFFDB,0x3FFFFFFF }; +const crypto_uint32 h2h_p2[] = { 0x0,0x0,0x3FFFFFFF,0x3FFFFFFF,0x0,0x0,0x3FFFFFFF,0x3FFFFFFF }; +const crypto_uint32 h2h_p3[] = { 0x0,0x0,0xFFFFFF,0x0,0x0,0x0,0xFFFFFF,0x0 }; +const crypto_uint32 vecmask29d[] = { 0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF }; +const crypto_uint32 hh1_xor1[] = { 0,0,-1,-1,-1,-1,0,0 }; +const crypto_uint32 h2h_xor1[] = { 0,0,-1,-1,0,0,-1,-1 }; +const crypto_uint32 hh1_xor2[] = { 0,0,-1,0,-1,0,0,0 }; +const crypto_uint32 h2h_xor2[] = { 0,0,-1,0,0,0,-1,0 }; +const crypto_uint32 swap_c[] = { 0,1,2,3,4,5,6,7 }; +const crypto_uint32 swap_mask[] = { 7,7,7,7,7,7,7,7 }; +const crypto_uint64 h2h_mask[] = { 0,-1,-1,-1 }; +const crypto_uint64 vec19[] = { 19,19,19,19 }; +const crypto_uint64 vec1216[] = { 1216,1216,1216,1216 }; +const crypto_uint64 vecmask23[] = { 0x7FFFFF,0x7FFFFF,0x7FFFFF,0x7FFFFF }; +const crypto_uint64 vecmask29[] = { 0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF,0x1FFFFFFF }; +const crypto_uint64 vecmask32[] = { 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF }; +const crypto_uint64 a24[] = { 0,121666,0,0 }; +const crypto_uint64 mask51[] = { 0x7FFFFFFFFFFFF }; diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/architectures new file mode 120000 index 0000000000..fc4b638d1f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx2-9l-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/consts_namespace.h new file mode 120000 index 0000000000..5ef1899d82 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519.h new file mode 100644 index 0000000000..5ab6ec572c --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519.h @@ -0,0 +1,45 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_9l CRYPTO_NAMESPACE(fe25519_9l) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_square CRYPTO_SHARED_NAMESPACE(fe25519_square) +#define fe25519_nsquare CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) +#define fe25519_to_9l CRYPTO_NAMESPACE(fe25519_to_9l) +#define fe25519_from_9l CRYPTO_NAMESPACE(fe25519_from_9l) + +typedef struct +{ + unsigned long long l[4]; +} +fe25519; + +typedef struct { + unsigned long long l[9]; +} +fe25519_9l; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_square(fe25519 *r, const fe25519 *x); + +void fe25519_nsquare(fe25519 *r, const fe25519 *x, long long n); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +void fe25519_to_9l(fe25519_9l *r, const fe25519 *x); + +void fe25519_from_9l(fe25519 *r, const fe25519_9l *x); + +#endif diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_from_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_from_9l.c new file mode 120000 index 0000000000..e7ff02d686 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_from_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_from_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_to_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_to_9l.c new file mode 120000 index 0000000000..8914a99664 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_to_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_to_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/mladder.S new file mode 120000 index 0000000000..d4d1b04fa1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/mladder.S @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/mladder.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/mont25519.c new file mode 120000 index 0000000000..77cb0d1cc1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/mont25519.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/shared-consts.c new file mode 120000 index 0000000000..69b60ab641 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-maax/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/architectures new file mode 120000 index 0000000000..f7aed4af26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/consts_namespace.h new file mode 120000 index 0000000000..5ef1899d82 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519.h new file mode 100644 index 0000000000..1475361eae --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519.h @@ -0,0 +1,44 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_9l CRYPTO_NAMESPACE(fe25519_9l) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_nsquare CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) +#define fe25519_to_9l CRYPTO_NAMESPACE(fe25519_to_9l) +#define fe25519_from_9l CRYPTO_NAMESPACE(fe25519_from_9l) + +#define fe25519_square(x,y) fe25519_nsquare(x,y,1) + +typedef struct +{ + unsigned long long l[4]; +} +fe25519; + +typedef struct { + unsigned long long l[9]; +} +fe25519_9l; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_nsquare(fe25519 *r, const fe25519 *x, long long n); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +void fe25519_to_9l(fe25519_9l *r, const fe25519 *x); + +void fe25519_from_9l(fe25519 *r, const fe25519_9l *x); + +#endif diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_from_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_from_9l.c new file mode 120000 index 0000000000..e7ff02d686 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_from_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_from_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_mul.S new file mode 120000 index 0000000000..79e7adffa9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_nsquare.S new file mode 120000 index 0000000000..1aef6b0983 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_to_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_to_9l.c new file mode 120000 index 0000000000..8914a99664 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_to_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_to_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/mladder.S new file mode 120000 index 0000000000..d4d1b04fa1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/mladder.S @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/mladder.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/mont25519.c new file mode 120000 index 0000000000..77cb0d1cc1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/mont25519.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/shared-consts.c new file mode 120000 index 0000000000..69b60ab641 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx2-ns9l-mxaa/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/architectures new file mode 120000 index 0000000000..b31b1cd314 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/architectures @@ -0,0 +1 @@ +../amd64-avx512-ns9l-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/consts_namespace.h new file mode 120000 index 0000000000..b38235d931 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-hey10l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519.h new file mode 120000 index 0000000000..c1d20070e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519.h @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_from_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_from_10l.c new file mode 120000 index 0000000000..71a2ab5077 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_from_10l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519_from_10l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_to_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_to_10l.c new file mode 120000 index 0000000000..5e5ca1e8e1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_to_10l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519_to_10l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/mladder.S new file mode 100644 index 0000000000..b847b2710d --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/mladder.S @@ -0,0 +1,1266 @@ +// linker define mladder +// linker use hh_p1 +// linker use hh_p2 +// linker use hh_p3 +// linker use hh_xor +// linker use sub_p1 +// linker use sub_p2 +// linker use sub_p3 +// linker use swap_c +// linker use swap_mask +// linker use sh2526 +// linker use sh2625 +// linker use vec19 +// linker use vec38 +// linker use vecmask25 +// linker use vecmask26 +// linker use vecmask32 +// linker use vecmask2526 +// linker use vecmask2625 + +/* Assembly for Montgomery ladder. */ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(mladder) + .globl CRYPTO_SHARED_NAMESPACE(mladder) + +_CRYPTO_SHARED_NAMESPACE(mladder): +CRYPTO_SHARED_NAMESPACE(mladder): + + movq %rsp,%r11 + andq $-32,%rsp + subq $352,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + // load <0,A,1,X1> + vmovdqa 0(%rsi),%ymm0 + vmovdqa 32(%rsi),%ymm1 + vmovdqa 64(%rsi),%ymm2 + vmovdqa 96(%rsi),%ymm3 + vmovdqa 128(%rsi),%ymm4 + vmovdqa 160(%rsi),%ymm5 + vmovdqa 192(%rsi),%ymm6 + vmovdqa 224(%rsi),%ymm7 + vmovdqa 256(%rsi),%ymm8 + vmovdqa 288(%rsi),%ymm9 + + // <0',A',1',X1'> ← Pack-D2N(<0,A,1,X1>) + vpsllq $32,%ymm5,%ymm5 + vpor %ymm5,%ymm0,%ymm0 + vpsllq $32,%ymm6,%ymm6 + vpor %ymm6,%ymm1,%ymm1 + vpsllq $32,%ymm7,%ymm7 + vpor %ymm7,%ymm2,%ymm2 + vpsllq $32,%ymm8,%ymm8 + vpor %ymm8,%ymm3,%ymm3 + vpsllq $32,%ymm9,%ymm9 + vpor %ymm9,%ymm4,%ymm4 + + vmovdqa %ymm0,0(%rsi) + vmovdqa %ymm1,32(%rsi) + vmovdqa %ymm2,64(%rsi) + vmovdqa %ymm3,96(%rsi) + vmovdqa %ymm4,128(%rsi) + + // load + vmovdqa 0(%rdi),%ymm0 + vmovdqa 32(%rdi),%ymm11 + vmovdqa 64(%rdi),%ymm2 + vmovdqa 96(%rdi),%ymm12 + vmovdqa 128(%rdi),%ymm4 + vmovdqa 160(%rdi),%ymm13 + vmovdqa 192(%rdi),%ymm6 + vmovdqa 224(%rdi),%ymm14 + vmovdqa 256(%rdi),%ymm8 + vmovdqa 288(%rdi),%ymm15 + + // ← Pack-D2N() + vpsllq $32,%ymm13,%ymm13 + vpor %ymm13,%ymm0,%ymm0 + vpsllq $32,%ymm6,%ymm6 + vpor %ymm6,%ymm11,%ymm11 + vpsllq $32,%ymm14,%ymm14 + vpor %ymm14,%ymm2,%ymm2 + vpsllq $32,%ymm8,%ymm8 + vpor %ymm8,%ymm12,%ymm12 + vpsllq $32,%ymm15,%ymm15 + vpor %ymm15,%ymm4,%ymm4 + + movq $31,%r15 + movq $6,%rcx + + movb $0,%r8b + movq %rdx,%rax + +.L1: + addq %r15,%rax + movb 0(%rax),%r14b + movq %rdx,%rax + +.L2: + movb %r14b,%bl + shrb %cl,%bl + andb $1,%bl + movb %bl,%r9b + xorb %r8b,%bl + movb %r9b,%r8b + + // ← Dense-Swap(,b) + movzbl %bl,%ebx + imul $4,%ebx,%ebx + movl %ebx,56(%rsp) + vpbroadcastd 56(%rsp),%ymm7 + vpaddd swap_c(%rip),%ymm7,%ymm7 + vpand swap_mask(%rip),%ymm7,%ymm7 + + vpermd %ymm0,%ymm7,%ymm0 + vpermd %ymm11,%ymm7,%ymm11 + vpermd %ymm2,%ymm7,%ymm2 + vpermd %ymm12,%ymm7,%ymm12 + vpermd %ymm4,%ymm7,%ymm4 + + // ← Dense-H-H() + vpshufd $68,%ymm0,%ymm1 + vpshufd $238,%ymm0,%ymm3 + vpaddd hh_p1(%rip),%ymm1,%ymm1 + vpxor hh_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm16 + + vpshufd $68,%ymm11,%ymm1 + vpshufd $238,%ymm11,%ymm3 + vpaddd hh_p2(%rip),%ymm1,%ymm1 + vpxor hh_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm17 + + vpshufd $68,%ymm2,%ymm1 + vpshufd $238,%ymm2,%ymm3 + vpaddd hh_p3(%rip),%ymm1,%ymm1 + vpxor hh_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm18 + + vpshufd $68,%ymm12,%ymm1 + vpshufd $238,%ymm12,%ymm3 + vpaddd hh_p2(%rip),%ymm1,%ymm1 + vpxor hh_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm19 + + vpshufd $68,%ymm4,%ymm1 + vpshufd $238,%ymm4,%ymm3 + vpaddd hh_p3(%rip),%ymm1,%ymm1 + vpxor hh_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm20 + + // ← Pack-N2D() + vpsrlq $32,%ymm16,%ymm21 + vpsrlq $32,%ymm17,%ymm22 + vpsrlq $32,%ymm18,%ymm23 + vpsrlq $32,%ymm19,%ymm24 + vpsrlq $32,%ymm20,%ymm25 + + // ← Dense-Dup() + vpermq $20,%ymm16,%ymm26 + vpermq $20,%ymm17,%ymm27 + vpermq $20,%ymm18,%ymm28 + vpermq $20,%ymm19,%ymm29 + vpermq $20,%ymm20,%ymm30 + + // ← Pack-D2N() + vpsrlq $32,%ymm26,%ymm31 + vpsrlq $32,%ymm27,%ymm6 + vpsrlq $32,%ymm28,%ymm7 + vpsrlq $32,%ymm29,%ymm8 + vpsrlq $32,%ymm30,%ymm9 + + // ← Mul(,) + vmovdqa %ymm6,64(%rsp) + vmovdqa %ymm7,96(%rsp) + vmovdqa %ymm8,128(%rsp) + vmovdqa %ymm9,160(%rsp) + + vpaddq %ymm17,%ymm17,%ymm11 + vpaddq %ymm19,%ymm19,%ymm12 + vpaddq %ymm21,%ymm21,%ymm13 + vpaddq %ymm23,%ymm23,%ymm14 + vpaddq %ymm25,%ymm25,%ymm15 + + vpmuludq vec19(%rip),%ymm27,%ymm1 + vpmuludq vec19(%rip),%ymm28,%ymm2 + vpmuludq vec19(%rip),%ymm29,%ymm3 + vpmuludq vec19(%rip),%ymm30,%ymm4 + vpmuludq vec19(%rip),%ymm31,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm24,%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm22,%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm20,%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm18,%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq %ymm25,%ymm2,%ymm1 + vpmuludq %ymm24,%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm23,%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm22,%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm21,%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm20,%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm19,%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm18,%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm24,%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm22,%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm20,%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm27,%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq %ymm25,%ymm4,%ymm3 + vpmuludq %ymm24,%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm23,%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm22,%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm21,%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm20,%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm24,%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm22,%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm27,%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm29,%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq %ymm25,%ymm6,%ymm5 + vpmuludq %ymm24,%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm23,%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm22,%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm24,%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm27,%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm29,%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm31,%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq %ymm25,%ymm8,%ymm7 + vpmuludq %ymm24,%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq %ymm27,%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm29,%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm31,%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 96(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq %ymm26,%ymm16,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq %ymm28,%ymm16,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm26,%ymm18,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq %ymm29,%ymm16,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm28,%ymm17,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm27,%ymm18,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm26,%ymm19,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm27,%ymm16,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm26,%ymm17,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm30,%ymm16,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm28,%ymm18,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm26,%ymm20,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq %ymm31,%ymm16,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm30,%ymm17,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm29,%ymm18,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm28,%ymm19,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm27,%ymm20,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm26,%ymm21,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 64(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm30,%ymm18,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm28,%ymm20,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 96(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 64(%rsp),%ymm17,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm31,%ymm18,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm30,%ymm19,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm29,%ymm20,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm28,%ymm21,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 128(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 64(%rsp),%ymm18,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm30,%ymm20,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq %ymm30,%ymm21,%ymm21 + vpmuludq 160(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq 128(%rsp),%ymm17,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq 96(%rsp),%ymm18,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq 64(%rsp),%ymm19,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq %ymm31,%ymm20,%ymm10 + vpaddq %ymm10,%ymm21,%ymm9 + + vpmuludq %ymm26,%ymm22,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq %ymm27,%ymm22,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm26,%ymm23,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm28,%ymm22,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm26,%ymm24,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq %ymm29,%ymm22,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq %ymm28,%ymm23,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq %ymm27,%ymm24,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq %ymm26,%ymm25,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm15 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm11 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm14 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm12 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm6 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm13 + + vpsrlq $25,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpsllq $1,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpsllq $3,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm8 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm15,%ymm15 + vpand vecmask26(%rip),%ymm4,%ymm7 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm3 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm15,%ymm10 + vpaddq %ymm10,%ymm11,%ymm5 + vpand vecmask25(%rip),%ymm15,%ymm9 + + // ← Pack-N2D() + vpsllq $32,%ymm9,%ymm9 + vpor %ymm9,%ymm0,%ymm0 + vpsllq $32,%ymm5,%ymm5 + vpor %ymm5,%ymm3,%ymm3 + vpsllq $32,%ymm14,%ymm14 + vpor %ymm14,%ymm12,%ymm12 + vpsllq $32,%ymm6,%ymm6 + vpor %ymm6,%ymm13,%ymm13 + vpsllq $32,%ymm8,%ymm8 + vpor %ymm8,%ymm7,%ymm7 + + // ← Dense-H-H() + vpshufd $68,%ymm0,%ymm1 + vpshufd $238,%ymm0,%ymm4 + vpaddd hh_p1(%rip),%ymm1,%ymm1 + vpxor hh_xor(%rip),%ymm4,%ymm4 + vpaddd %ymm1,%ymm4,%ymm26 + + vpshufd $68,%ymm3,%ymm1 + vpshufd $238,%ymm3,%ymm4 + vpaddd hh_p2(%rip),%ymm1,%ymm1 + vpxor hh_xor(%rip),%ymm4,%ymm4 + vpaddd %ymm1,%ymm4,%ymm27 + + vpshufd $68,%ymm12,%ymm1 + vpshufd $238,%ymm12,%ymm4 + vpaddd hh_p3(%rip),%ymm1,%ymm1 + vpxor hh_xor(%rip),%ymm4,%ymm4 + vpaddd %ymm1,%ymm4,%ymm28 + + vpshufd $68,%ymm13,%ymm1 + vpshufd $238,%ymm13,%ymm4 + vpaddd hh_p2(%rip),%ymm1,%ymm1 + vpxor hh_xor(%rip),%ymm4,%ymm4 + vpaddd %ymm1,%ymm4,%ymm29 + + vpshufd $68,%ymm7,%ymm1 + vpshufd $238,%ymm7,%ymm4 + vpaddd hh_p3(%rip),%ymm1,%ymm1 + vpxor hh_xor(%rip),%ymm4,%ymm4 + vpaddd %ymm1,%ymm4,%ymm30 + + // ← Dense-Shuffle() + vpshufd $78,%ymm26,%ymm1 + vpshufd $78,%ymm27,%ymm2 + vpshufd $78,%ymm28,%ymm4 + vpshufd $78,%ymm29,%ymm5 + vpshufd $78,%ymm30,%ymm6 + + // ← Dense-Blend(<0',A',1',X1'>,,1000) + movl $252,%ebx + kmovw %ebx,%k1 + vpblendmd 0(%rsi),%ymm1,%ymm16{%k1} + vpblendmd 32(%rsi),%ymm2,%ymm17{%k1} + vpblendmd 64(%rsi),%ymm4,%ymm18{%k1} + vpblendmd 96(%rsi),%ymm5,%ymm19{%k1} + vpblendmd 128(%rsi),%ymm6,%ymm20{%k1} + + // ← Pack-D2N() + vpsrlq $32,%ymm16,%ymm21 + vpsrlq $32,%ymm17,%ymm22 + vpsrlq $32,%ymm18,%ymm23 + vpsrlq $32,%ymm19,%ymm24 + vpsrlq $32,%ymm20,%ymm25 + + // ← Pack-D2N() + vpsrlq $32,%ymm26,%ymm31 + vpsrlq $32,%ymm27,%ymm5 + vpsrlq $32,%ymm28,%ymm14 + vpsrlq $32,%ymm29,%ymm6 + vpsrlq $32,%ymm30,%ymm8 + + // ← Sqr() + vmovdqa %ymm5,64(%rsp) + vmovdqa %ymm14,96(%rsp) + vmovdqa %ymm6,128(%rsp) + vmovdqa %ymm8,160(%rsp) + + vpmuludq vec19(%rip),%ymm5,%ymm2 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec38(%rip),%ymm31,%ymm1 + vpmuludq vec38(%rip),%ymm14,%ymm4 + vpmuludq vec38(%rip),%ymm8,%ymm8 + + vpaddq %ymm26,%ymm26,%ymm10 + vpaddq %ymm27,%ymm27,%ymm11 + vpaddq %ymm28,%ymm28,%ymm12 + vpaddq %ymm29,%ymm29,%ymm13 + vpaddq %ymm30,%ymm30,%ymm7 + vpaddq %ymm31,%ymm31,%ymm9 + vpaddq %ymm5,%ymm5,%ymm5 + vpaddq %ymm14,%ymm14,%ymm14 + + vpmuludq %ymm26,%ymm26,%ymm0 + vpmuludq %ymm11,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm6,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm4,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpmuludq %ymm7,%ymm2,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpmuludq %ymm31,%ymm1,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + + vpmuludq 64(%rsp),%ymm1,%ymm1 + vpmuludq %ymm27,%ymm10,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpmuludq %ymm28,%ymm8,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpmuludq %ymm13,%ymm6,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpmuludq %ymm30,%ymm4,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + + vpmuludq 64(%rsp),%ymm2,%ymm2 + vpmuludq %ymm28,%ymm10,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpmuludq %ymm27,%ymm11,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm8,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpmuludq %ymm7,%ymm6,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpmuludq %ymm9,%ymm4,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + + vpmuludq %ymm29,%ymm10,%ymm3 + vpmuludq %ymm28,%ymm11,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpmuludq %ymm30,%ymm8,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpmuludq %ymm9,%ymm6,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpmuludq 64(%rsp),%ymm4,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + + vpmuludq 96(%rsp),%ymm4,%ymm4 + vpmuludq %ymm30,%ymm10,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpmuludq %ymm11,%ymm13,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpmuludq %ymm28,%ymm28,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpmuludq %ymm9,%ymm8,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpmuludq %ymm5,%ymm6,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + + vpmuludq %ymm31,%ymm10,%ymm5 + vpmuludq %ymm30,%ymm11,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpmuludq %ymm29,%ymm12,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpmuludq 64(%rsp),%ymm8,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpmuludq %ymm6,%ymm14,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + + vpmuludq 128(%rsp),%ymm6,%ymm6 + vpmuludq 64(%rsp),%ymm10,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpmuludq %ymm11,%ymm9,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpmuludq %ymm30,%ymm12,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpmuludq %ymm29,%ymm13,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpmuludq %ymm14,%ymm8,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + + vpmuludq 96(%rsp),%ymm10,%ymm7 + vpmuludq 64(%rsp),%ymm11,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpmuludq %ymm31,%ymm12,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpmuludq %ymm30,%ymm13,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpmuludq 128(%rsp),%ymm8,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + + vpmuludq 160(%rsp),%ymm8,%ymm8 + vpmuludq 128(%rsp),%ymm10,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpmuludq %ymm11,%ymm14,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpmuludq 64(%rsp),%ymm12,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpmuludq %ymm13,%ymm9,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpmuludq %ymm30,%ymm30,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + + vpmuludq %ymm30,%ymm9,%ymm9 + vpmuludq 160(%rsp),%ymm10,%ymm15 + vpaddq %ymm15,%ymm9,%ymm9 + vpmuludq 128(%rsp),%ymm11,%ymm15 + vpaddq %ymm15,%ymm9,%ymm9 + vpmuludq 96(%rsp),%ymm12,%ymm15 + vpaddq %ymm15,%ymm9,%ymm9 + vpmuludq 64(%rsp),%ymm13,%ymm15 + vpaddq %ymm15,%ymm9,%ymm9 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $25,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpsllq $1,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpsllq $3,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + // ← Pack-N2D() + vpsllq $32,%ymm5,%ymm5 + vpor %ymm5,%ymm0,%ymm0 + vpsllq $32,%ymm6,%ymm6 + vpor %ymm6,%ymm1,%ymm1 + vpsllq $32,%ymm7,%ymm7 + vpor %ymm7,%ymm2,%ymm2 + vpsllq $32,%ymm8,%ymm8 + vpor %ymm8,%ymm3,%ymm3 + vpsllq $32,%ymm9,%ymm9 + vpor %ymm9,%ymm4,%ymm4 + + // ← Dense-Shuffle() + vpshufd $78,%ymm0,%ymm5 + vpshufd $78,%ymm1,%ymm6 + vpshufd $78,%ymm2,%ymm7 + vpshufd $78,%ymm3,%ymm8 + vpshufd $78,%ymm4,%ymm9 + + // ← Dense-Sub(,) + vpaddd sub_p1(%rip),%ymm0,%ymm10 + vpaddd sub_p2(%rip),%ymm1,%ymm11 + vpaddd sub_p3(%rip),%ymm2,%ymm12 + vpaddd sub_p2(%rip),%ymm3,%ymm13 + vpaddd sub_p3(%rip),%ymm4,%ymm14 + vpsubd %ymm5,%ymm10,%ymm10 + vpsubd %ymm6,%ymm11,%ymm11 + vpsubd %ymm7,%ymm12,%ymm12 + vpsubd %ymm8,%ymm13,%ymm13 + vpsubd %ymm9,%ymm14,%ymm14 + + // ← Dense-Blend(,,0111) + movl $3,%ebx + kmovw %ebx,%k1 + vpblendmd %ymm26,%ymm0,%ymm26{%k1} + vpblendmd %ymm27,%ymm1,%ymm27{%k1} + vpblendmd %ymm28,%ymm2,%ymm28{%k1} + vpblendmd %ymm29,%ymm3,%ymm29{%k1} + vpblendmd %ymm30,%ymm4,%ymm30{%k1} + + vmovdqa %ymm10,192(%rsp) + vmovdqa %ymm11,224(%rsp) + vmovdqa %ymm12,256(%rsp) + vmovdqa %ymm13,288(%rsp) + vmovdqa %ymm14,320(%rsp) + + // ← Pack-D2N() + vpsrlq $32,%ymm26,%ymm31 + vpsrlq $32,%ymm27,%ymm6 + vpsrlq $32,%ymm28,%ymm7 + vpsrlq $32,%ymm29,%ymm8 + vpsrlq $32,%ymm30,%ymm9 + + // ← Mul(,) + vmovdqa %ymm6,64(%rsp) + vmovdqa %ymm7,96(%rsp) + vmovdqa %ymm8,128(%rsp) + vmovdqa %ymm9,160(%rsp) + + vpaddq %ymm17,%ymm17,%ymm11 + vpaddq %ymm19,%ymm19,%ymm12 + vpaddq %ymm21,%ymm21,%ymm13 + vpaddq %ymm23,%ymm23,%ymm14 + vpaddq %ymm25,%ymm25,%ymm15 + + vpmuludq vec19(%rip),%ymm27,%ymm1 + vpmuludq vec19(%rip),%ymm28,%ymm2 + vpmuludq vec19(%rip),%ymm29,%ymm3 + vpmuludq vec19(%rip),%ymm30,%ymm4 + vpmuludq vec19(%rip),%ymm31,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm24,%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm22,%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm20,%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm18,%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq %ymm25,%ymm2,%ymm1 + vpmuludq %ymm24,%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm23,%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm22,%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm21,%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm20,%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm19,%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm18,%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm24,%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm22,%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm20,%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm27,%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq %ymm25,%ymm4,%ymm3 + vpmuludq %ymm24,%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm23,%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm22,%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm21,%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm20,%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm24,%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm22,%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm27,%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm29,%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq %ymm25,%ymm6,%ymm5 + vpmuludq %ymm24,%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm23,%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm22,%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm24,%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm27,%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm29,%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm31,%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq %ymm25,%ymm8,%ymm7 + vpmuludq %ymm24,%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq %ymm27,%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm29,%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm31,%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 96(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq %ymm26,%ymm16,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq %ymm28,%ymm16,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm26,%ymm18,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq %ymm29,%ymm16,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm28,%ymm17,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm27,%ymm18,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm26,%ymm19,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm27,%ymm16,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm26,%ymm17,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm30,%ymm16,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm28,%ymm18,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm26,%ymm20,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq %ymm31,%ymm16,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm30,%ymm17,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm29,%ymm18,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm28,%ymm19,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm27,%ymm20,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm26,%ymm21,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 64(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm30,%ymm18,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm28,%ymm20,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 96(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 64(%rsp),%ymm17,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm31,%ymm18,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm30,%ymm19,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm29,%ymm20,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm28,%ymm21,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 128(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 64(%rsp),%ymm18,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm30,%ymm20,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq %ymm30,%ymm21,%ymm21 + vpmuludq 160(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq 128(%rsp),%ymm17,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq 96(%rsp),%ymm18,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq 64(%rsp),%ymm19,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq %ymm31,%ymm20,%ymm10 + vpaddq %ymm10,%ymm21,%ymm9 + + vpmuludq %ymm26,%ymm22,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq %ymm27,%ymm22,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm26,%ymm23,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm28,%ymm22,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm26,%ymm24,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq %ymm29,%ymm22,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq %ymm28,%ymm23,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq %ymm27,%ymm24,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq %ymm26,%ymm25,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm14 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm12 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm15 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm11 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm13 + + // ← Pack-N2D() + vpsllq $32,%ymm13,%ymm13 + vpor %ymm13,%ymm0,%ymm0 + vpsllq $32,%ymm6,%ymm6 + vpor %ymm6,%ymm11,%ymm11 + vpsllq $32,%ymm14,%ymm14 + vpor %ymm14,%ymm2,%ymm2 + vpsllq $32,%ymm8,%ymm8 + vpor %ymm8,%ymm12,%ymm12 + vpsllq $32,%ymm15,%ymm15 + vpor %ymm15,%ymm4,%ymm4 + + // ← Dense-Add(,) + vpaddd %ymm0,%ymm0,%ymm1 + vpaddd %ymm11,%ymm11,%ymm3 + vpaddd %ymm2,%ymm2,%ymm5 + vpaddd %ymm12,%ymm12,%ymm6 + vpaddd %ymm4,%ymm4,%ymm7 + + // <*,T19',*,*> ← Dense-Shuffle() + vpshufd $78,%ymm1,%ymm1 + vpshufd $78,%ymm3,%ymm3 + vpshufd $78,%ymm5,%ymm5 + vpshufd $78,%ymm6,%ymm6 + vpshufd $78,%ymm7,%ymm7 + + // <*,Z2',*,*> ← Dense-Add(,<*,T19',*,*>) + vpaddd %ymm0,%ymm1,%ymm1 + vpaddd %ymm11,%ymm3,%ymm3 + vpaddd %ymm2,%ymm5,%ymm5 + vpaddd %ymm12,%ymm6,%ymm6 + vpaddd %ymm4,%ymm7,%ymm7 + + // ← Dense-Blend(,<*,Z2',*,*>,0100) + vpblendd $3,192(%rsp),%ymm1,%ymm1 + vpblendd $3,224(%rsp),%ymm3,%ymm3 + vpblendd $3,256(%rsp),%ymm5,%ymm5 + vpblendd $3,288(%rsp),%ymm6,%ymm6 + vpblendd $3,320(%rsp),%ymm7,%ymm7 + + // ← Dense-Blend(,,0011) + vpblendd $15,%ymm1,%ymm0,%ymm0 + vpblendd $15,%ymm3,%ymm11,%ymm11 + vpblendd $15,%ymm5,%ymm2,%ymm2 + vpblendd $15,%ymm6,%ymm12,%ymm12 + vpblendd $15,%ymm7,%ymm4,%ymm4 + + // ← Reduce() + vpsrlvd sh2625(%rip),%ymm0,%ymm15 + vpaddd %ymm15,%ymm11,%ymm11 + vpand vecmask2625(%rip),%ymm0,%ymm0 + + vpsrlvd sh2526(%rip),%ymm11,%ymm15 + vpaddd %ymm15,%ymm2,%ymm2 + vpand vecmask2526(%rip),%ymm11,%ymm11 + + vpsrlvd sh2625(%rip),%ymm2,%ymm15 + vpaddd %ymm15,%ymm12,%ymm12 + vpand vecmask2625(%rip),%ymm2,%ymm2 + + vpsrlvd sh2526(%rip),%ymm12,%ymm15 + vpaddd %ymm15,%ymm4,%ymm4 + vpand vecmask2526(%rip),%ymm12,%ymm12 + + vpsrld $26,%ymm4,%ymm15 + vpsllq $32,%ymm15,%ymm15 + vpaddd %ymm15,%ymm0,%ymm0 + vpsrlq $57,%ymm4,%ymm15 + vpmuludq vec19(%rip),%ymm15,%ymm15 + vpaddd %ymm15,%ymm0,%ymm0 + vpand vecmask2625(%rip),%ymm4,%ymm4 + + subb $1,%cl + cmpb $0,%cl + jge .L2 + + movb $7,%cl + subq $1,%r15 + cmpq $0,%r15 + jge .L1 + + // ← Pack-D2N() + vpsrlq $32,%ymm0,%ymm13 + vpand vecmask32(%rip),%ymm0,%ymm0 + vpsrlq $32,%ymm11,%ymm6 + vpand vecmask32(%rip),%ymm11,%ymm11 + vpsrlq $32,%ymm2,%ymm14 + vpand vecmask32(%rip),%ymm2,%ymm2 + vpsrlq $32,%ymm12,%ymm8 + vpand vecmask32(%rip),%ymm12,%ymm12 + vpsrlq $32,%ymm4,%ymm15 + vpand vecmask32(%rip),%ymm4,%ymm4 + + // ← Reduce() + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm11,%ymm11 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm11,%ymm11 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm12,%ymm12 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm12,%ymm12 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm13,%ymm13 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm13,%ymm13 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm14,%ymm14 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm14,%ymm14 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm15,%ymm15 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm15,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm15,%ymm15 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm11,%ymm11 + vpand vecmask26(%rip),%ymm0,%ymm0 + + // ← Reduce() + vpsrlq $25,%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm11,%ymm11 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm12,%ymm12 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm12,%ymm12 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm13,%ymm13 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm13,%ymm13 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm14,%ymm14 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm14,%ymm14 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm15,%ymm15 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm15,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm15,%ymm15 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm11,%ymm11 + vpand vecmask26(%rip),%ymm0,%ymm0 + + // store + vmovdqa %ymm0,0(%rdi) + vmovdqa %ymm11,32(%rdi) + vmovdqa %ymm2,64(%rdi) + vmovdqa %ymm12,96(%rdi) + vmovdqa %ymm4,128(%rdi) + vmovdqa %ymm13,160(%rdi) + vmovdqa %ymm6,192(%rdi) + vmovdqa %ymm14,224(%rdi) + vmovdqa %ymm8,256(%rdi) + vmovdqa %ymm15,288(%rdi) + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/mont25519.c new file mode 120000 index 0000000000..7995253bc4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/mont25519.c @@ -0,0 +1 @@ +../amd64-avx2-hey10l-maa4/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/shared-consts.c new file mode 120000 index 0000000000..7fac5dec7e --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey10l-maax/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-hey10l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/architectures new file mode 120000 index 0000000000..b31b1cd314 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/architectures @@ -0,0 +1 @@ +../amd64-avx512-ns9l-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/consts_namespace.h new file mode 120000 index 0000000000..b68746a278 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-hey9l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519.h new file mode 120000 index 0000000000..7a2c948483 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maax/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_from_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_from_9l.c new file mode 120000 index 0000000000..e7ff02d686 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_from_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_from_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_to_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_to_9l.c new file mode 120000 index 0000000000..8914a99664 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_to_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_to_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/mladder.S new file mode 100644 index 0000000000..e0f7a4a416 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/mladder.S @@ -0,0 +1,1284 @@ +// linker define mladder +// linker use hh_p1 +// linker use hh_p2 +// linker use hh_p3 +// linker use hh_xor1 +// linker use hh_xor2 +// linker use sub_p1 +// linker use sub_p2 +// linker use sub_p3 +// linker use swap_c +// linker use swap_mask +// linker use vec19 +// linker use vec1216 +// linker use vecmask23 +// linker use vecmask29 +// linker use vecmask29d +// linker use vecmask32 + +/* Assembly for Montgomery ladder. */ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(mladder) + .globl CRYPTO_SHARED_NAMESPACE(mladder) + +_CRYPTO_SHARED_NAMESPACE(mladder): +CRYPTO_SHARED_NAMESPACE(mladder): + + movq %rsp,%r11 + andq $-32,%rsp + subq $608,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + // load <0,0,1,X1> + vmovdqa 0(%rsi),%ymm0 + vmovdqa 32(%rsi),%ymm1 + vmovdqa 64(%rsi),%ymm2 + vmovdqa 96(%rsi),%ymm3 + vmovdqa 128(%rsi),%ymm4 + vmovdqa 160(%rsi),%ymm5 + vmovdqa 192(%rsi),%ymm6 + vmovdqa 224(%rsi),%ymm7 + vmovdqa 256(%rsi),%ymm8 + + // <0',0',1',X1'> ← Pack-D2N(<0,0,1,X1>) + vpsllq $32,%ymm4,%ymm4 + vpor %ymm4,%ymm0,%ymm0 + vpsllq $32,%ymm5,%ymm5 + vpor %ymm5,%ymm1,%ymm1 + vpsllq $32,%ymm6,%ymm6 + vpor %ymm6,%ymm2,%ymm2 + vpsllq $32,%ymm7,%ymm7 + vpor %ymm7,%ymm3,%ymm3 + + vmovdqa %ymm0,0(%rsi) + vmovdqa %ymm1,32(%rsi) + vmovdqa %ymm2,64(%rsi) + vmovdqa %ymm3,96(%rsi) + vmovdqa %ymm8,128(%rsi) + + // load + vmovdqa 0(%rdi),%ymm10 + vmovdqa 32(%rdi),%ymm11 + vmovdqa 64(%rdi),%ymm12 + vmovdqa 96(%rdi),%ymm13 + vmovdqa 128(%rdi),%ymm0 + vmovdqa 160(%rdi),%ymm1 + vmovdqa 192(%rdi),%ymm2 + vmovdqa 224(%rdi),%ymm3 + vmovdqa 256(%rdi),%ymm4 + + // ← Pack-D2N() + vpsllq $32,%ymm0,%ymm0 + vpor %ymm0,%ymm10,%ymm10 + vpsllq $32,%ymm1,%ymm1 + vpor %ymm1,%ymm11,%ymm11 + vpsllq $32,%ymm2,%ymm2 + vpor %ymm2,%ymm12,%ymm12 + vpsllq $32,%ymm3,%ymm3 + vpor %ymm3,%ymm13,%ymm13 + + movq $31,%r15 + movq $6,%rcx + + movb $0,%r8b + movq %rdx,%rax + +.L1: + addq %r15,%rax + movb 0(%rax),%r14b + movq %rdx,%rax + +.L2: + movb %r14b,%bl + shrb %cl,%bl + andb $1,%bl + movb %bl,%r9b + xorb %r8b,%bl + movb %r9b,%r8b + + // ← Dense-Swap(,b) + movzbl %bl,%ebx + imul $4,%ebx,%ebx + movl %ebx,56(%rsp) + vpbroadcastd 56(%rsp),%ymm7 + vpaddd swap_c(%rip),%ymm7,%ymm7 + vpand swap_mask(%rip),%ymm7,%ymm7 + + vpermd %ymm10,%ymm7,%ymm10 + vpermd %ymm11,%ymm7,%ymm11 + vpermd %ymm12,%ymm7,%ymm12 + vpermd %ymm13,%ymm7,%ymm13 + vpermd %ymm4,%ymm7,%ymm4 + + // ← Dense-H-H() + vpshufd $68,%ymm10,%ymm5 + vpshufd $238,%ymm10,%ymm6 + vpaddd hh_p1(%rip),%ymm5,%ymm5 + vpxor hh_xor1(%rip),%ymm6,%ymm6 + vpaddd %ymm5,%ymm6,%ymm10 + + vpshufd $68,%ymm11,%ymm5 + vpshufd $238,%ymm11,%ymm6 + vpaddd hh_p2(%rip),%ymm5,%ymm5 + vpxor hh_xor1(%rip),%ymm6,%ymm6 + vpaddd %ymm5,%ymm6,%ymm11 + + vpshufd $68,%ymm12,%ymm5 + vpshufd $238,%ymm12,%ymm6 + vpaddd hh_p2(%rip),%ymm5,%ymm5 + vpxor hh_xor1(%rip),%ymm6,%ymm6 + vpaddd %ymm5,%ymm6,%ymm12 + + vpshufd $68,%ymm13,%ymm5 + vpshufd $238,%ymm13,%ymm6 + vpaddd hh_p2(%rip),%ymm5,%ymm5 + vpxor hh_xor1(%rip),%ymm6,%ymm6 + vpaddd %ymm5,%ymm6,%ymm13 + + vpshufd $68,%ymm4,%ymm5 + vpshufd $238,%ymm4,%ymm6 + vpaddd hh_p3(%rip),%ymm5,%ymm5 + vpxor hh_xor2(%rip),%ymm6,%ymm6 + vpaddd %ymm5,%ymm6,%ymm4 + + vpsrld $29,%ymm10,%ymm15 + vpaddd %ymm15,%ymm11,%ymm11 + vpand vecmask29d(%rip),%ymm10,%ymm10 + + vpsrld $29,%ymm11,%ymm15 + vpaddd %ymm15,%ymm12,%ymm12 + vpandq vecmask29d(%rip),%ymm11,%ymm17 + + vpsrld $29,%ymm12,%ymm15 + vpaddd %ymm15,%ymm13,%ymm13 + vpandq vecmask29d(%rip),%ymm12,%ymm18 + + vpsrld $29,%ymm13,%ymm15 + vpsllq $32,%ymm15,%ymm15 + vpaddd %ymm15,%ymm10,%ymm10 + vpsrlq $61,%ymm13,%ymm15 + vpaddd %ymm15,%ymm4,%ymm4 + vpandq vecmask29d(%rip),%ymm13,%ymm19 + + vpsrlq $23,%ymm4,%ymm15 + vpmuludq vec19(%rip),%ymm15,%ymm15 + vpaddd %ymm15,%ymm10,%ymm16 + vpand vecmask23(%rip),%ymm4,%ymm9 + + // ← Pack-N2D() + vpsrlq $32,%ymm16,%ymm5 + vpsrlq $32,%ymm17,%ymm6 + vpsrlq $32,%ymm18,%ymm7 + vpsrlq $32,%ymm19,%ymm8 + + // ← Dense-Dup() + vpermq $20,%ymm16,%ymm10 + vpermq $20,%ymm17,%ymm11 + vpermq $20,%ymm18,%ymm12 + vpermq $20,%ymm19,%ymm13 + vpermq $20,%ymm9,%ymm4 + + // ← Pack-D2N() + vpsrlq $32,%ymm10,%ymm0 + vpsrlq $32,%ymm11,%ymm1 + vpsrlq $32,%ymm12,%ymm2 + vpsrlq $32,%ymm13,%ymm3 + + // ← Mul(,) + vpmuludq %ymm5,%ymm0,%ymm20 + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm21 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm22 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm23 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm24 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm25 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm26 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm27 + + vpmuludq %ymm9,%ymm4,%ymm28 + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq %ymm16,%ymm5,%ymm5 + vpaddq %ymm17,%ymm6,%ymm6 + vpaddq %ymm18,%ymm7,%ymm7 + vpaddq %ymm19,%ymm8,%ymm8 + + vpmuludq %ymm16,%ymm10,%ymm29 + vpaddq %ymm20,%ymm29,%ymm15 + vmovdqa %ymm15,192(%rsp) + + vpmuludq %ymm17,%ymm10,%ymm15 + vpmuludq %ymm16,%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm30 + vpaddq %ymm21,%ymm30,%ymm15 + vmovdqa %ymm15,224(%rsp) + + vpmuludq %ymm18,%ymm10,%ymm15 + vpmuludq %ymm17,%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm16,%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm31 + vpaddq %ymm22,%ymm31,%ymm15 + vmovdqa %ymm15,256(%rsp) + + vpmuludq %ymm19,%ymm10,%ymm15 + vpmuludq %ymm18,%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm17,%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm16,%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,64(%rsp) + vpaddq %ymm23,%ymm15,%ymm15 + vmovdqa %ymm15,288(%rsp) + + vpmuludq %ymm19,%ymm11,%ymm15 + vpmuludq %ymm18,%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm17,%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,96(%rsp) + vpaddq %ymm24,%ymm15,%ymm15 + vmovdqa %ymm15,320(%rsp) + + vpmuludq %ymm19,%ymm12,%ymm15 + vpmuludq %ymm18,%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,128(%rsp) + vpaddq %ymm25,%ymm15,%ymm15 + vmovdqa %ymm15,352(%rsp) + + vpmuludq %ymm19,%ymm13,%ymm15 + vmovdqa %ymm15,160(%rsp) + vpaddq %ymm26,%ymm15,%ymm15 + vmovdqa %ymm15,384(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,416(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 416(%rsp),%ymm9 + + vpsubq 192(%rsp),%ymm9,%ymm9 + vpaddq 96(%rsp),%ymm9,%ymm9 + vpsubq 224(%rsp),%ymm10,%ymm10 + vpaddq 128(%rsp),%ymm10,%ymm10 + vpsubq 256(%rsp),%ymm11,%ymm11 + vpaddq 160(%rsp),%ymm11,%ymm11 + vpsubq 288(%rsp),%ymm12,%ymm12 + vpsubq 320(%rsp),%ymm13,%ymm13 + vpaddq %ymm20,%ymm13,%ymm13 + vpsubq 352(%rsp),%ymm0,%ymm0 + vpaddq %ymm21,%ymm0,%ymm0 + vpsubq 384(%rsp),%ymm1,%ymm1 + vpaddq %ymm22,%ymm1,%ymm1 + vpsubq %ymm27,%ymm2,%ymm2 + vpaddq %ymm23,%ymm2,%ymm2 + vpsubq %ymm28,%ymm3,%ymm3 + vpaddq %ymm24,%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq %ymm29,%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq %ymm30,%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq %ymm31,%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq %ymm25,%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 64(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq %ymm26,%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq %ymm27,%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq %ymm28,%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $29,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $23,%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm10,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpsllq $3,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + // ← Pack-N2D() + vpsllq $32,%ymm4,%ymm4 + vpor %ymm4,%ymm0,%ymm0 + vpsllq $32,%ymm5,%ymm5 + vpor %ymm5,%ymm1,%ymm1 + vpsllq $32,%ymm6,%ymm6 + vpor %ymm6,%ymm2,%ymm2 + vpsllq $32,%ymm7,%ymm7 + vpor %ymm7,%ymm3,%ymm3 + + // ← Dense-H-H() + vpshufd $68,%ymm0,%ymm9 + vpshufd $238,%ymm0,%ymm10 + vpaddd hh_p1(%rip),%ymm9,%ymm9 + vpxor hh_xor1(%rip),%ymm10,%ymm10 + vpaddd %ymm9,%ymm10,%ymm0 + + vpshufd $68,%ymm1,%ymm9 + vpshufd $238,%ymm1,%ymm10 + vpaddd hh_p2(%rip),%ymm9,%ymm9 + vpxor hh_xor1(%rip),%ymm10,%ymm10 + vpaddd %ymm9,%ymm10,%ymm1 + + vpshufd $68,%ymm2,%ymm9 + vpshufd $238,%ymm2,%ymm10 + vpaddd hh_p2(%rip),%ymm9,%ymm9 + vpxor hh_xor1(%rip),%ymm10,%ymm10 + vpaddd %ymm9,%ymm10,%ymm2 + + vpshufd $68,%ymm3,%ymm9 + vpshufd $238,%ymm3,%ymm10 + vpaddd hh_p2(%rip),%ymm9,%ymm9 + vpxor hh_xor1(%rip),%ymm10,%ymm10 + vpaddd %ymm9,%ymm10,%ymm3 + + vpshufd $68,%ymm8,%ymm9 + vpshufd $238,%ymm8,%ymm10 + vpaddd hh_p3(%rip),%ymm9,%ymm9 + vpxor hh_xor2(%rip),%ymm10,%ymm10 + vpaddd %ymm9,%ymm10,%ymm8 + + vpsrld $29,%ymm0,%ymm15 + vpaddd %ymm15,%ymm1,%ymm1 + vpand vecmask29d(%rip),%ymm0,%ymm0 + + vpsrld $29,%ymm1,%ymm15 + vpaddd %ymm15,%ymm2,%ymm2 + vpandq vecmask29d(%rip),%ymm1,%ymm21 + + vpsrld $29,%ymm2,%ymm15 + vpaddd %ymm15,%ymm3,%ymm3 + vpandq vecmask29d(%rip),%ymm2,%ymm22 + + vpsrld $29,%ymm3,%ymm15 + vpsllq $32,%ymm15,%ymm15 + vpaddd %ymm15,%ymm0,%ymm0 + vpsrlq $61,%ymm3,%ymm15 + vpaddd %ymm15,%ymm8,%ymm8 + vpandq vecmask29d(%rip),%ymm3,%ymm23 + + vpsrlq $23,%ymm8,%ymm15 + vpmuludq vec19(%rip),%ymm15,%ymm15 + vpaddd %ymm15,%ymm0,%ymm20 + vpandq vecmask23(%rip),%ymm8,%ymm24 + + // ← Dense-Shuffle() + vpshufd $78,%ymm20,%ymm4 + vpshufd $78,%ymm21,%ymm5 + vpshufd $78,%ymm22,%ymm6 + vpshufd $78,%ymm23,%ymm7 + vpshufd $78,%ymm24,%ymm9 + + // ← Dense-Blend(<0',A',1',X1'>,,1000) + movl $252,%ebx + kmovw %ebx,%k1 + vpblendmd 0(%rsi),%ymm4,%ymm16{%k1} + vpblendmd 32(%rsi),%ymm5,%ymm17{%k1} + vpblendmd 64(%rsi),%ymm6,%ymm18{%k1} + vpblendmd 96(%rsi),%ymm7,%ymm19{%k1} + vpblendmd 128(%rsi),%ymm9,%ymm9{%k1} + + // ← Pack-D2N() + vpsrlq $32,%ymm16,%ymm10 + vpsrlq $32,%ymm17,%ymm11 + vpsrlq $32,%ymm18,%ymm12 + vpsrlq $32,%ymm19,%ymm13 + + vmovdqa %ymm10,192(%rsp) + vmovdqa %ymm11,224(%rsp) + vmovdqa %ymm12,256(%rsp) + vmovdqa %ymm13,288(%rsp) + vmovdqa %ymm9,320(%rsp) + + // ← Pack-D2N() + vpsrlq $32,%ymm20,%ymm4 + vpsrlq $32,%ymm21,%ymm5 + vpsrlq $32,%ymm22,%ymm6 + vpsrlq $32,%ymm23,%ymm7 + + // ← Sqr() + vpmuludq %ymm21,%ymm24,%ymm15 + vpmuludq %ymm22,%ymm7,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm23,%ymm6,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm4,%ymm5,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpsllq $1,%ymm15,%ymm9 + + vpmuludq %ymm22,%ymm24,%ymm15 + vpmuludq %ymm23,%ymm7,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm4,%ymm6,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpsllq $1,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm5,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpsrlq $29,%ymm9,%ymm14 + vpaddq %ymm14,%ymm10,%ymm10 + vpand vecmask29(%rip),%ymm9,%ymm9 + + vpmuludq vec1216(%rip),%ymm9,%ymm9 + vpmuludq %ymm20,%ymm20,%ymm15 + vpaddq %ymm15,%ymm9,%ymm9 + + vpmuludq %ymm23,%ymm24,%ymm15 + vpmuludq %ymm4,%ymm7,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm6,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpsllq $1,%ymm15,%ymm11 + + vpsrlq $29,%ymm10,%ymm14 + vpaddq %ymm14,%ymm11,%ymm11 + vpand vecmask29(%rip),%ymm10,%ymm10 + + vpmuludq vec1216(%rip),%ymm10,%ymm10 + vpmuludq %ymm20,%ymm21,%ymm15 + vpsllq $1,%ymm15,%ymm15 + vpaddq %ymm15,%ymm10,%ymm10 + vpmuludq %ymm4,%ymm24,%ymm15 + vpmuludq %ymm5,%ymm7,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpsllq $1,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm6,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpsrlq $29,%ymm11,%ymm14 + vpaddq %ymm14,%ymm12,%ymm12 + vpand vecmask29(%rip),%ymm11,%ymm11 + vpmuludq vec1216(%rip),%ymm11,%ymm11 + vpmuludq %ymm20,%ymm22,%ymm15 + vpsllq $1,%ymm15,%ymm15 + vpmuludq %ymm21,%ymm21,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpaddq %ymm15,%ymm11,%ymm11 + vpmuludq %ymm5,%ymm24,%ymm15 + vpmuludq %ymm6,%ymm7,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpsllq $1,%ymm15,%ymm13 + + vpsrlq $29,%ymm12,%ymm14 + vpaddq %ymm14,%ymm13,%ymm13 + vpand vecmask29(%rip),%ymm12,%ymm12 + + vpmuludq vec1216(%rip),%ymm12,%ymm12 + vpmuludq %ymm20,%ymm23,%ymm15 + vpmuludq %ymm21,%ymm22,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpsllq $1,%ymm15,%ymm15 + vpaddq %ymm15,%ymm12,%ymm12 + + vmovdqa %ymm11,64(%rsp) + + vpmuludq %ymm6,%ymm24,%ymm15 + vpsllq $1,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm7,%ymm14 + vpaddq %ymm14,%ymm15,%ymm14 + + vpsrlq $29,%ymm13,%ymm15 + vpaddq %ymm15,%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm13,%ymm13 + + vpmuludq vec1216(%rip),%ymm13,%ymm13 + vpmuludq %ymm20,%ymm4,%ymm15 + vpmuludq %ymm21,%ymm23,%ymm11 + vpaddq %ymm11,%ymm15,%ymm15 + vpsllq $1,%ymm15,%ymm15 + vpmuludq %ymm22,%ymm22,%ymm11 + vpaddq %ymm11,%ymm15,%ymm15 + vpaddq %ymm15,%ymm13,%ymm13 + + vmovdqa %ymm12,96(%rsp) + + vpmuludq %ymm7,%ymm24,%ymm15 + vpsllq $1,%ymm15,%ymm15 + + vpsrlq $29,%ymm14,%ymm11 + vpaddq %ymm11,%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm14 + + vpmuludq vec1216(%rip),%ymm14,%ymm14 + vpmuludq %ymm20,%ymm5,%ymm12 + vpmuludq %ymm21,%ymm4,%ymm11 + vpaddq %ymm11,%ymm12,%ymm12 + vpmuludq %ymm22,%ymm23,%ymm11 + vpaddq %ymm11,%ymm12,%ymm12 + vpsllq $1,%ymm12,%ymm12 + vpaddq %ymm12,%ymm14,%ymm14 + + vmovdqa %ymm13,128(%rsp) + + vpmuludq %ymm24,%ymm24,%ymm11 + + vpsrlq $29,%ymm15,%ymm12 + vpaddq %ymm12,%ymm11,%ymm11 + vpand vecmask29(%rip),%ymm15,%ymm15 + + vpmuludq vec1216(%rip),%ymm15,%ymm15 + vpmuludq %ymm20,%ymm6,%ymm12 + vpmuludq %ymm21,%ymm5,%ymm13 + vpaddq %ymm12,%ymm13,%ymm13 + vpmuludq %ymm22,%ymm4,%ymm12 + vpaddq %ymm12,%ymm13,%ymm13 + vpsllq $1,%ymm13,%ymm13 + vpmuludq %ymm23,%ymm23,%ymm12 + vpaddq %ymm12,%ymm13,%ymm13 + vpaddq %ymm13,%ymm15,%ymm15 + + vmovdqa %ymm14,160(%rsp) + + vpsrlq $29,%ymm11,%ymm12 + vpand vecmask29(%rip),%ymm11,%ymm11 + + vpmuludq vec1216(%rip),%ymm11,%ymm11 + vpmuludq %ymm20,%ymm7,%ymm13 + vpmuludq %ymm21,%ymm6,%ymm14 + vpaddq %ymm13,%ymm14,%ymm14 + vpmuludq %ymm22,%ymm5,%ymm13 + vpaddq %ymm13,%ymm14,%ymm14 + vpmuludq %ymm23,%ymm4,%ymm13 + vpaddq %ymm13,%ymm14,%ymm14 + vpsllq $1,%ymm14,%ymm14 + vpaddq %ymm14,%ymm11,%ymm11 + + vpmuludq vec1216(%rip),%ymm12,%ymm12 + vpmuludq %ymm20,%ymm24,%ymm13 + vpmuludq %ymm21,%ymm7,%ymm14 + vpaddq %ymm13,%ymm14,%ymm14 + vpmuludq %ymm22,%ymm6,%ymm13 + vpaddq %ymm13,%ymm14,%ymm14 + vpmuludq %ymm23,%ymm5,%ymm13 + vpaddq %ymm13,%ymm14,%ymm14 + vpsllq $1,%ymm14,%ymm14 + vpmuludq %ymm4,%ymm4,%ymm13 + vpaddq %ymm13,%ymm14,%ymm14 + vpaddq %ymm14,%ymm12,%ymm12 + + vmovdqa 128(%rsp),%ymm4 + vpsrlq $29,%ymm4,%ymm5 + vpaddq 160(%rsp),%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm9,%ymm14 + vpaddq %ymm14,%ymm10,%ymm1 + vpand vecmask29(%rip),%ymm9,%ymm0 + + vpsrlq $29,%ymm5,%ymm6 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq 64(%rsp),%ymm14,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm6,%ymm7 + vpaddq %ymm11,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq 96(%rsp),%ymm14,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm7,%ymm8 + vpaddq %ymm12,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq %ymm14,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $23,%ymm8,%ymm14 + vpaddq %ymm14,%ymm0,%ymm0 + vpsllq $1,%ymm14,%ymm14 + vpaddq %ymm14,%ymm0,%ymm0 + vpsllq $3,%ymm14,%ymm14 + vpaddq %ymm14,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm4,%ymm14 + vpaddq %ymm14,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + // ← Pack-N2D() + vpsllq $32,%ymm4,%ymm4 + vpor %ymm4,%ymm0,%ymm10 + vpsllq $32,%ymm5,%ymm5 + vpor %ymm5,%ymm1,%ymm11 + vpsllq $32,%ymm6,%ymm6 + vpor %ymm6,%ymm2,%ymm12 + vpsllq $32,%ymm7,%ymm7 + vpor %ymm7,%ymm3,%ymm13 + + // ← Dense-Shuffle() + vpshufd $78,%ymm10,%ymm0 + vpshufd $78,%ymm11,%ymm1 + vpshufd $78,%ymm12,%ymm2 + vpshufd $78,%ymm13,%ymm3 + vpshufd $78,%ymm8,%ymm4 + + // ← Dense-Sub(,) + vpaddd sub_p1(%rip),%ymm10,%ymm5 + vpaddd sub_p2(%rip),%ymm11,%ymm6 + vpaddd sub_p2(%rip),%ymm12,%ymm7 + vpaddd sub_p2(%rip),%ymm13,%ymm9 + vpaddd sub_p3(%rip),%ymm8,%ymm14 + vpsubd %ymm0,%ymm5,%ymm5 + vpsubd %ymm1,%ymm6,%ymm6 + vpsubd %ymm2,%ymm7,%ymm7 + vpsubd %ymm3,%ymm9,%ymm9 + vpsubd %ymm4,%ymm14,%ymm14 + + vmovdqa %ymm5,448(%rsp) + vmovdqa %ymm6,480(%rsp) + vmovdqa %ymm7,512(%rsp) + vmovdqa %ymm9,544(%rsp) + vmovdqa %ymm14,576(%rsp) + + // ← Dense-Blend(,,0111) + movl $3,%ebx + kmovw %ebx,%k1 + vpblendmd %ymm20,%ymm10,%ymm10{%k1} + vpblendmd %ymm21,%ymm11,%ymm11{%k1} + vpblendmd %ymm22,%ymm12,%ymm12{%k1} + vpblendmd %ymm23,%ymm13,%ymm13{%k1} + vpblendmd %ymm24,%ymm8,%ymm4{%k1} + + // ← Pack-D2N() + vpsrlq $32,%ymm10,%ymm0 + vpsrlq $32,%ymm11,%ymm1 + vpsrlq $32,%ymm12,%ymm2 + vpsrlq $32,%ymm13,%ymm3 + + // ← Mul(,) + vmovdqa 192(%rsp),%ymm5 + vmovdqa 224(%rsp),%ymm6 + vmovdqa 256(%rsp),%ymm7 + vmovdqa 288(%rsp),%ymm8 + vmovdqa 320(%rsp),%ymm9 + + vpmuludq %ymm5,%ymm0,%ymm20 + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm21 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm22 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm23 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm24 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm25 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm26 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm27 + + vpmuludq %ymm9,%ymm4,%ymm28 + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq %ymm16,%ymm5,%ymm5 + vpaddq %ymm17,%ymm6,%ymm6 + vpaddq %ymm18,%ymm7,%ymm7 + vpaddq %ymm19,%ymm8,%ymm8 + + vpmuludq %ymm16,%ymm10,%ymm29 + vpaddq %ymm20,%ymm29,%ymm15 + vmovdqa %ymm15,192(%rsp) + + vpmuludq %ymm17,%ymm10,%ymm15 + vpmuludq %ymm16,%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm30 + vpaddq %ymm21,%ymm30,%ymm15 + vmovdqa %ymm15,224(%rsp) + + vpmuludq %ymm18,%ymm10,%ymm15 + vpmuludq %ymm17,%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm16,%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm31 + vpaddq %ymm22,%ymm31,%ymm15 + vmovdqa %ymm15,256(%rsp) + + vpmuludq %ymm19,%ymm10,%ymm15 + vpmuludq %ymm18,%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm17,%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm16,%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,64(%rsp) + vpaddq %ymm23,%ymm15,%ymm15 + vmovdqa %ymm15,288(%rsp) + + vpmuludq %ymm19,%ymm11,%ymm15 + vpmuludq %ymm18,%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm17,%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,96(%rsp) + vpaddq %ymm24,%ymm15,%ymm15 + vmovdqa %ymm15,320(%rsp) + + vpmuludq %ymm19,%ymm12,%ymm15 + vpmuludq %ymm18,%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,128(%rsp) + vpaddq %ymm25,%ymm15,%ymm15 + vmovdqa %ymm15,352(%rsp) + + vpmuludq %ymm19,%ymm13,%ymm15 + vmovdqa %ymm15,160(%rsp) + vpaddq %ymm26,%ymm15,%ymm15 + vmovdqa %ymm15,384(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,416(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 416(%rsp),%ymm9 + + vpsubq 192(%rsp),%ymm9,%ymm9 + vpaddq 96(%rsp),%ymm9,%ymm9 + vpsubq 224(%rsp),%ymm10,%ymm10 + vpaddq 128(%rsp),%ymm10,%ymm10 + vpsubq 256(%rsp),%ymm11,%ymm11 + vpaddq 160(%rsp),%ymm11,%ymm11 + vpsubq 288(%rsp),%ymm12,%ymm12 + vpsubq 320(%rsp),%ymm13,%ymm13 + vpaddq %ymm20,%ymm13,%ymm13 + vpsubq 352(%rsp),%ymm0,%ymm0 + vpaddq %ymm21,%ymm0,%ymm0 + vpsubq 384(%rsp),%ymm1,%ymm1 + vpaddq %ymm22,%ymm1,%ymm1 + vpsubq %ymm27,%ymm2,%ymm2 + vpaddq %ymm23,%ymm2,%ymm2 + vpsubq %ymm28,%ymm3,%ymm3 + vpaddq %ymm24,%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq %ymm29,%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq %ymm30,%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq %ymm31,%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq %ymm25,%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 64(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq %ymm26,%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq %ymm27,%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq %ymm28,%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $29,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm9 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $23,%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm10,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpsllq $3,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm4 + + vpsrlq $29,%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm9,%ymm9 + + vpsrlq $29,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + // ← Pack-N2D() + vpsllq $32,%ymm9,%ymm9 + vpor %ymm9,%ymm0,%ymm10 + vpsllq $32,%ymm5,%ymm5 + vpor %ymm5,%ymm1,%ymm11 + vpsllq $32,%ymm6,%ymm6 + vpor %ymm6,%ymm2,%ymm12 + vpsllq $32,%ymm7,%ymm7 + vpor %ymm7,%ymm3,%ymm13 + + // ← Dense-Add(,) + vpaddd %ymm10,%ymm10,%ymm0 + vpaddd %ymm11,%ymm11,%ymm1 + vpaddd %ymm12,%ymm12,%ymm2 + vpaddd %ymm13,%ymm13,%ymm3 + vpaddd %ymm4,%ymm4,%ymm5 + + // <*,T19',*,*> ← Dense-Shuffle() + vpshufd $78,%ymm0,%ymm0 + vpshufd $78,%ymm1,%ymm1 + vpshufd $78,%ymm2,%ymm2 + vpshufd $78,%ymm3,%ymm3 + vpshufd $78,%ymm5,%ymm5 + + // <*,Z2',*,*> ← Dense-Add(,<*,T19',*,*>) + vpaddd %ymm10,%ymm0,%ymm0 + vpaddd %ymm11,%ymm1,%ymm1 + vpaddd %ymm12,%ymm2,%ymm2 + vpaddd %ymm13,%ymm3,%ymm3 + vpaddd %ymm4,%ymm5,%ymm5 + + // ← Dense-Blend(,<*,Z2',*,*>,0100) + vpblendd $3,448(%rsp),%ymm0,%ymm0 + vpblendd $3,480(%rsp),%ymm1,%ymm1 + vpblendd $3,512(%rsp),%ymm2,%ymm2 + vpblendd $3,544(%rsp),%ymm3,%ymm3 + vpblendd $3,576(%rsp),%ymm5,%ymm5 + + // ← Dense-Blend(,,0011) + vpblendd $15,%ymm0,%ymm10,%ymm10 + vpblendd $15,%ymm1,%ymm11,%ymm11 + vpblendd $15,%ymm2,%ymm12,%ymm12 + vpblendd $15,%ymm3,%ymm13,%ymm13 + vpblendd $15,%ymm5,%ymm4,%ymm4 + + subb $1,%cl + cmpb $0,%cl + jge .L2 + + movb $7,%cl + subq $1,%r15 + cmpq $0,%r15 + jge .L1 + + // ← Pack-D2N() + vpsrlq $32,%ymm10,%ymm0 + vpand vecmask32(%rip),%ymm10,%ymm10 + vpsrlq $32,%ymm11,%ymm1 + vpand vecmask32(%rip),%ymm11,%ymm11 + vpsrlq $32,%ymm12,%ymm2 + vpand vecmask32(%rip),%ymm12,%ymm12 + vpsrlq $32,%ymm13,%ymm3 + vpand vecmask32(%rip),%ymm13,%ymm13 + + // ← Reduce() + vpsrlq $29,%ymm10,%ymm15 + vpaddq %ymm15,%ymm11,%ymm11 + vpand vecmask29(%rip),%ymm10,%ymm10 + + vpsrlq $29,%ymm11,%ymm15 + vpaddq %ymm15,%ymm12,%ymm12 + vpand vecmask29(%rip),%ymm11,%ymm11 + + vpsrlq $29,%ymm12,%ymm15 + vpaddq %ymm15,%ymm13,%ymm13 + vpand vecmask29(%rip),%ymm12,%ymm12 + + vpsrlq $29,%ymm13,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask29(%rip),%ymm13,%ymm13 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $23,%ymm4,%ymm15 + vpmuludq vec19(%rip),%ymm15,%ymm15 + vpaddq %ymm15,%ymm10,%ymm10 + vpand vecmask23(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm10,%ymm15 + vpaddq %ymm15,%ymm11,%ymm11 + vpand vecmask29(%rip),%ymm10,%ymm10 + + // ← Reduce() + vpsrlq $29,%ymm11,%ymm15 + vpaddq %ymm15,%ymm12,%ymm12 + vpand vecmask29(%rip),%ymm11,%ymm11 + + vpsrlq $29,%ymm12,%ymm15 + vpaddq %ymm15,%ymm13,%ymm13 + vpand vecmask29(%rip),%ymm12,%ymm12 + + vpsrlq $29,%ymm13,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask29(%rip),%ymm13,%ymm13 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $23,%ymm4,%ymm15 + vpmuludq vec19(%rip),%ymm15,%ymm15 + vpaddq %ymm15,%ymm10,%ymm10 + vpand vecmask23(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm10,%ymm15 + vpaddq %ymm15,%ymm11,%ymm11 + vpand vecmask29(%rip),%ymm10,%ymm10 + + // store + vmovdqa %ymm10,0(%rdi) + vmovdqa %ymm11,32(%rdi) + vmovdqa %ymm12,64(%rdi) + vmovdqa %ymm13,96(%rdi) + vmovdqa %ymm0,128(%rdi) + vmovdqa %ymm1,160(%rdi) + vmovdqa %ymm2,192(%rdi) + vmovdqa %ymm3,224(%rdi) + vmovdqa %ymm4,256(%rdi) + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/mont25519.c new file mode 120000 index 0000000000..3a8748501f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/mont25519.c @@ -0,0 +1 @@ +../amd64-avx2-hey9l-maa4/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/shared-consts.c new file mode 120000 index 0000000000..0b297641ad --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-hey9l-maax/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-hey9l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/architectures new file mode 120000 index 0000000000..b31b1cd314 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/architectures @@ -0,0 +1 @@ +../amd64-avx512-ns9l-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/consts_namespace.h new file mode 120000 index 0000000000..a19c9fa7c2 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519.h new file mode 120000 index 0000000000..c1d20070e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519.h @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_from_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_from_10l.c new file mode 120000 index 0000000000..71a2ab5077 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_from_10l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519_from_10l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_to_10l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_to_10l.c new file mode 120000 index 0000000000..5e5ca1e8e1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_to_10l.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/fe25519_to_10l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/mladder.S new file mode 100644 index 0000000000..097dababdb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/mladder.S @@ -0,0 +1,1207 @@ +// linker define mladder +// linker use hh1_p1 +// linker use hh1_p2 +// linker use h2h_p1 +// linker use h2h_p2 +// linker use hh1_xor +// linker use h2h_xor +// linker use swap_c +// linker use swap_mask +// linker use h2h_mask +// linker use vec19 +// linker use vec38 +// linker use vecmask25 +// linker use vecmask26 +// linker use vecmask32 +// linker use a24 + +/* Assembly for Montgomery ladder. */ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(mladder) + .globl CRYPTO_SHARED_NAMESPACE(mladder) + +_CRYPTO_SHARED_NAMESPACE(mladder): +CRYPTO_SHARED_NAMESPACE(mladder): + + movq %rsp,%r11 + andq $-32,%rsp + subq $448,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + // load <0,0,1,X1> + vmovdqa 0(%rsi),%ymm0 + vmovdqa 32(%rsi),%ymm11 + vmovdqa 64(%rsi),%ymm2 + vmovdqa 96(%rsi),%ymm12 + vmovdqa 128(%rsi),%ymm4 + vmovdqa 160(%rsi),%ymm13 + vmovdqa 192(%rsi),%ymm6 + vmovdqa 224(%rsi),%ymm14 + vmovdqa 256(%rsi),%ymm8 + vmovdqa 288(%rsi),%ymm15 + + // <0',0',1',X1'> ← Pack-D2N(<0,0,1,X1>) + vpsllq $32,%ymm11,%ymm11 + vpor %ymm11,%ymm0,%ymm0 + vpsllq $32,%ymm12,%ymm12 + vpor %ymm12,%ymm2,%ymm2 + vpsllq $32,%ymm13,%ymm13 + vpor %ymm13,%ymm4,%ymm4 + vpsllq $32,%ymm14,%ymm14 + vpor %ymm14,%ymm6,%ymm6 + vpsllq $32,%ymm15,%ymm15 + vpor %ymm15,%ymm8,%ymm8 + + vmovdqa %ymm0,0(%rsi) + vmovdqa %ymm2,32(%rsi) + vmovdqa %ymm4,64(%rsi) + vmovdqa %ymm6,96(%rsi) + vmovdqa %ymm8,128(%rsi) + + // load + vmovdqa 0(%rdi),%ymm0 + vmovdqa 32(%rdi),%ymm11 + vmovdqa 64(%rdi),%ymm2 + vmovdqa 96(%rdi),%ymm12 + vmovdqa 128(%rdi),%ymm4 + vmovdqa 160(%rdi),%ymm13 + vmovdqa 192(%rdi),%ymm6 + vmovdqa 224(%rdi),%ymm14 + vmovdqa 256(%rdi),%ymm8 + vmovdqa 288(%rdi),%ymm15 + + // ← Pack-D2N() + vpsllq $32,%ymm11,%ymm11 + vpor %ymm11,%ymm0,%ymm0 + vpsllq $32,%ymm12,%ymm12 + vpor %ymm12,%ymm2,%ymm2 + vpsllq $32,%ymm13,%ymm13 + vpor %ymm13,%ymm4,%ymm4 + vpsllq $32,%ymm14,%ymm14 + vpor %ymm14,%ymm6,%ymm6 + vpsllq $32,%ymm15,%ymm15 + vpor %ymm15,%ymm8,%ymm8 + + movq $31,%r15 + movq $6,%rcx + + movb $0,%r8b + movq %rdx,%rax + +.L1: + addq %r15,%rax + movb 0(%rax),%r14b + movq %rdx,%rax + +.L2: + movb %r14b,%bl + shrb %cl,%bl + andb $1,%bl + movb %bl,%r9b + xorb %r8b,%bl + movb %r9b,%r8b + + // ← Dense-Swap(,b) + movzbl %bl,%ebx + imul $4,%ebx,%ebx + movl %ebx,56(%rsp) + vpbroadcastd 56(%rsp),%ymm7 + vpaddd swap_c(%rip),%ymm7,%ymm7 + vpand swap_mask(%rip),%ymm7,%ymm7 + + vpermd %ymm0,%ymm7,%ymm0 + vpermd %ymm2,%ymm7,%ymm2 + vpermd %ymm4,%ymm7,%ymm4 + vpermd %ymm6,%ymm7,%ymm6 + vpermd %ymm8,%ymm7,%ymm8 + + // ← Dense-H-H1() + vpshufd $68,%ymm0,%ymm1 + vpshufd $238,%ymm0,%ymm3 + vpaddd hh1_p1(%rip),%ymm1,%ymm1 + vpxor hh1_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm16 + + vpshufd $68,%ymm2,%ymm1 + vpshufd $238,%ymm2,%ymm3 + vpaddd hh1_p2(%rip),%ymm1,%ymm1 + vpxor hh1_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm18 + + vpshufd $68,%ymm4,%ymm1 + vpshufd $238,%ymm4,%ymm3 + vpaddd hh1_p2(%rip),%ymm1,%ymm1 + vpxor hh1_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm20 + + vpshufd $68,%ymm6,%ymm1 + vpshufd $238,%ymm6,%ymm3 + vpaddd hh1_p2(%rip),%ymm1,%ymm1 + vpxor hh1_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm22 + + vpshufd $68,%ymm8,%ymm1 + vpshufd $238,%ymm8,%ymm3 + vpaddd hh1_p2(%rip),%ymm1,%ymm1 + vpxor hh1_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm24 + + // ← Pack-N2D() + vpsrlq $32,%ymm16,%ymm17 + vpsrlq $32,%ymm18,%ymm19 + vpsrlq $32,%ymm20,%ymm21 + vpsrlq $32,%ymm22,%ymm23 + vpsrlq $32,%ymm24,%ymm25 + + // ← Dense-Dup() + vpermq $68,%ymm16,%ymm26 + vpermq $68,%ymm18,%ymm28 + vpermq $68,%ymm20,%ymm30 + vpermq $68,%ymm22,%ymm6 + vpermq $68,%ymm24,%ymm8 + + // ← Pack-D2N() + vpsrlq $32,%ymm26,%ymm27 + vpsrlq $32,%ymm28,%ymm29 + vpsrlq $32,%ymm30,%ymm31 + vpsrlq $32,%ymm6,%ymm7 + vpsrlq $32,%ymm8,%ymm9 + + vmovdqa %ymm6,64(%rsp) + vmovdqa %ymm7,96(%rsp) + vmovdqa %ymm8,128(%rsp) + vmovdqa %ymm9,160(%rsp) + + // ← Mul(,) + vpaddq %ymm17,%ymm17,%ymm11 + vpaddq %ymm19,%ymm19,%ymm12 + vpaddq %ymm21,%ymm21,%ymm13 + vpaddq %ymm23,%ymm23,%ymm14 + vpaddq %ymm25,%ymm25,%ymm15 + + vpmuludq vec19(%rip),%ymm27,%ymm1 + vpmuludq vec19(%rip),%ymm28,%ymm2 + vpmuludq vec19(%rip),%ymm29,%ymm3 + vpmuludq vec19(%rip),%ymm30,%ymm4 + vpmuludq vec19(%rip),%ymm31,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm24,%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm22,%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm20,%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm18,%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq %ymm25,%ymm2,%ymm1 + vpmuludq %ymm24,%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm23,%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm22,%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm21,%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm20,%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm19,%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm18,%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm24,%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm22,%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm20,%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm27,%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq %ymm25,%ymm4,%ymm3 + vpmuludq %ymm24,%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm23,%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm22,%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm21,%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm20,%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm24,%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm22,%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm27,%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm29,%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq %ymm25,%ymm6,%ymm5 + vpmuludq %ymm24,%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm23,%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm22,%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm24,%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm27,%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm29,%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm31,%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq %ymm25,%ymm8,%ymm7 + vpmuludq %ymm24,%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq %ymm27,%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm29,%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm31,%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 96(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq %ymm26,%ymm16,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq %ymm28,%ymm16,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm26,%ymm18,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq %ymm29,%ymm16,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm28,%ymm17,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm27,%ymm18,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm26,%ymm19,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm27,%ymm16,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm26,%ymm17,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm30,%ymm16,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm28,%ymm18,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm26,%ymm20,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq %ymm31,%ymm16,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm30,%ymm17,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm29,%ymm18,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm28,%ymm19,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm27,%ymm20,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm26,%ymm21,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 64(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm30,%ymm18,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm28,%ymm20,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 96(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 64(%rsp),%ymm17,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm31,%ymm18,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm30,%ymm19,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm29,%ymm20,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm28,%ymm21,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 128(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 64(%rsp),%ymm18,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm30,%ymm20,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq %ymm30,%ymm21,%ymm21 + vpmuludq 160(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq 128(%rsp),%ymm17,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq 96(%rsp),%ymm18,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq 64(%rsp),%ymm19,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq %ymm31,%ymm20,%ymm10 + vpaddq %ymm10,%ymm21,%ymm9 + + vpmuludq %ymm26,%ymm22,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq %ymm27,%ymm22,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm26,%ymm23,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm28,%ymm22,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm26,%ymm24,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq %ymm29,%ymm22,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq %ymm28,%ymm23,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq %ymm27,%ymm24,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq %ymm26,%ymm25,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm15 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm11 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm14 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpandq vecmask26(%rip),%ymm2,%ymm28 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm6 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpandq vecmask25(%rip),%ymm3,%ymm29 + + vpsrlq $25,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpsllq $1,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpsllq $3,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm8 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm15,%ymm15 + vpandq vecmask26(%rip),%ymm4,%ymm30 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm27 + vpandq vecmask26(%rip),%ymm0,%ymm26 + + vpsrlq $25,%ymm15,%ymm10 + vpaddq %ymm10,%ymm11,%ymm5 + vpandq vecmask25(%rip),%ymm15,%ymm31 + + vmovdqa %ymm5,64(%rsp) + vmovdqa %ymm14,96(%rsp) + vmovdqa %ymm6,128(%rsp) + vmovdqa %ymm8,160(%rsp) + + // ← Pack-N2D() + vpsllq $32,%ymm27,%ymm3 + vporq %ymm3,%ymm26,%ymm0 + vpsllq $32,%ymm29,%ymm13 + vporq %ymm13,%ymm28,%ymm2 + vpsllq $32,%ymm31,%ymm9 + vporq %ymm9,%ymm30,%ymm4 + vpsllq $32,%ymm8,%ymm8 + vpor %ymm8,%ymm6,%ymm8 + vpsllq $32,%ymm14,%ymm14 + vpor %ymm14,%ymm5,%ymm6 + + // ← Dense-H2-H() + vpshufd $68,%ymm0,%ymm1 + vpand h2h_mask(%rip),%ymm1,%ymm1 + vpshufd $238,%ymm0,%ymm3 + vpaddd h2h_p1(%rip),%ymm1,%ymm1 + vpxor h2h_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm0 + + vpshufd $68,%ymm2,%ymm1 + vpand h2h_mask(%rip),%ymm1,%ymm1 + vpshufd $238,%ymm2,%ymm3 + vpaddd h2h_p2(%rip),%ymm1,%ymm1 + vpxor h2h_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm12 + + vpshufd $68,%ymm4,%ymm1 + vpand h2h_mask(%rip),%ymm1,%ymm1 + vpshufd $238,%ymm4,%ymm3 + vpaddd h2h_p2(%rip),%ymm1,%ymm1 + vpxor h2h_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm7 + + vpshufd $68,%ymm6,%ymm1 + vpand h2h_mask(%rip),%ymm1,%ymm1 + vpshufd $238,%ymm6,%ymm3 + vpaddd h2h_p2(%rip),%ymm1,%ymm1 + vpxor h2h_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm5 + + vpshufd $68,%ymm8,%ymm1 + vpand h2h_mask(%rip),%ymm1,%ymm1 + vpshufd $238,%ymm8,%ymm3 + vpaddd h2h_p2(%rip),%ymm1,%ymm1 + vpxor h2h_xor(%rip),%ymm3,%ymm3 + vpaddd %ymm1,%ymm3,%ymm6 + + // ← Blend(<0',0',1',X1'>,,1100) + movl $240,%ebx + kmovw %ebx,%k1 + vpblendmd 0(%rsi),%ymm0,%ymm16{%k1} + vpblendmd 32(%rsi),%ymm12,%ymm18{%k1} + vpblendmd 64(%rsi),%ymm7,%ymm20{%k1} + vpblendmd 96(%rsi),%ymm5,%ymm22{%k1} + vpblendmd 128(%rsi),%ymm6,%ymm24{%k1} + + // ← Pack-D2N() + vpsrlq $32,%ymm16,%ymm17 + vpsrlq $32,%ymm18,%ymm19 + vpsrlq $32,%ymm20,%ymm21 + vpsrlq $32,%ymm22,%ymm23 + vpsrlq $32,%ymm24,%ymm25 + + // ← Pack-D2N() + vpsrlq $32,%ymm0,%ymm3 + vpsrlq $32,%ymm12,%ymm13 + vpsrlq $32,%ymm7,%ymm9 + vpsrlq $32,%ymm5,%ymm14 + vpsrlq $32,%ymm6,%ymm8 + + // <0,T13,0,0> ← Unreduced-Mulc(,<0,a24,0,0>) + // ← Add(<0,T13,0,0>,) + vpmuludq a24(%rip),%ymm0,%ymm1 + vpaddq %ymm26,%ymm1,%ymm1 + vpmuludq a24(%rip),%ymm3,%ymm2 + vpaddq %ymm27,%ymm2,%ymm2 + vpmuludq a24(%rip),%ymm12,%ymm4 + vpaddq %ymm28,%ymm4,%ymm4 + vpmuludq a24(%rip),%ymm9,%ymm11 + vpaddq %ymm31,%ymm11,%ymm11 + vpmuludq a24(%rip),%ymm5,%ymm15 + vpaddq 64(%rsp),%ymm15,%ymm15 + + vpsrlq $26,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask26(%rip),%ymm1,%ymm1 + + vpsrlq $25,%ymm11,%ymm10 + vpaddq %ymm10,%ymm15,%ymm15 + vpand vecmask25(%rip),%ymm11,%ymm11 + + vpsrlq $25,%ymm2,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpandq vecmask25(%rip),%ymm2,%ymm27 + + vpmuludq a24(%rip),%ymm14,%ymm2 + vpaddq 96(%rsp),%ymm2,%ymm2 + + vpsrlq $26,%ymm15,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask26(%rip),%ymm15,%ymm15 + vmovdqa %ymm15,64(%rsp) + + vpmuludq a24(%rip),%ymm13,%ymm15 + vpaddq %ymm29,%ymm15,%ymm15 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm15,%ymm15 + vpandq vecmask26(%rip),%ymm4,%ymm28 + + vpmuludq a24(%rip),%ymm6,%ymm4 + vpaddq 128(%rsp),%ymm4,%ymm4 + + vpsrlq $25,%ymm2,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm2,%ymm2 + vmovdqa %ymm2,96(%rsp) + + vpmuludq a24(%rip),%ymm7,%ymm2 + vpaddq %ymm30,%ymm2,%ymm2 + + vpsrlq $25,%ymm15,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpandq vecmask25(%rip),%ymm15,%ymm29 + + vpmuludq a24(%rip),%ymm8,%ymm15 + vpaddq 160(%rsp),%ymm15,%ymm15 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm15,%ymm15 + vpand vecmask26(%rip),%ymm4,%ymm4 + vmovdqa %ymm4,128(%rsp) + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm11,%ymm31 + vpandq vecmask26(%rip),%ymm2,%ymm30 + + vpsrlq $25,%ymm15,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm1,%ymm26 + vpand vecmask25(%rip),%ymm15,%ymm15 + vmovdqa %ymm15,160(%rsp) + + // <*,*,T15,T16> ← Sqr() + vmovdqa %ymm12,192(%rsp) + vmovdqa %ymm13,224(%rsp) + vmovdqa %ymm7,256(%rsp) + vmovdqa %ymm9,288(%rsp) + vmovdqa %ymm5,320(%rsp) + vmovdqa %ymm14,352(%rsp) + vmovdqa %ymm6,384(%rsp) + vmovdqa %ymm8,416(%rsp) + + vpmuludq vec19(%rip),%ymm5,%ymm2 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec38(%rip),%ymm9,%ymm1 + vpmuludq vec38(%rip),%ymm14,%ymm4 + vpmuludq vec38(%rip),%ymm8,%ymm8 + + vpaddq %ymm0,%ymm0,%ymm10 + vpaddq %ymm3,%ymm3,%ymm11 + vpaddq %ymm12,%ymm12,%ymm12 + vpaddq %ymm13,%ymm13,%ymm13 + vpaddq %ymm7,%ymm7,%ymm7 + vpaddq %ymm9,%ymm9,%ymm9 + vpaddq %ymm5,%ymm5,%ymm5 + vpaddq %ymm14,%ymm14,%ymm14 + + vpmuludq %ymm0,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm8,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm6,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm4,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpmuludq %ymm7,%ymm2,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpmuludq 288(%rsp),%ymm1,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + + vpmuludq 320(%rsp),%ymm1,%ymm1 + vpmuludq %ymm3,%ymm10,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpmuludq 192(%rsp),%ymm8,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpmuludq %ymm13,%ymm6,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpmuludq 256(%rsp),%ymm4,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + + vpmuludq 320(%rsp),%ymm2,%ymm2 + vpmuludq 192(%rsp),%ymm10,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpmuludq %ymm3,%ymm11,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm8,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpmuludq %ymm7,%ymm6,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpmuludq %ymm9,%ymm4,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + + vpmuludq 224(%rsp),%ymm10,%ymm3 + vpmuludq 192(%rsp),%ymm11,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpmuludq 256(%rsp),%ymm8,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpmuludq %ymm9,%ymm6,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpmuludq 320(%rsp),%ymm4,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + + vpmuludq 352(%rsp),%ymm4,%ymm4 + vpmuludq 256(%rsp),%ymm10,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpmuludq %ymm11,%ymm13,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vmovdqa 192(%rsp),%ymm15 + vpmuludq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpmuludq %ymm9,%ymm8,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpmuludq %ymm5,%ymm6,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + + vpmuludq 288(%rsp),%ymm10,%ymm5 + vpmuludq 256(%rsp),%ymm11,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpmuludq 224(%rsp),%ymm12,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpmuludq 320(%rsp),%ymm8,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + vpmuludq %ymm6,%ymm14,%ymm15 + vpaddq %ymm15,%ymm5,%ymm5 + + vpmuludq 384(%rsp),%ymm6,%ymm6 + vpmuludq 320(%rsp),%ymm10,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpmuludq %ymm11,%ymm9,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpmuludq 256(%rsp),%ymm12,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpmuludq 224(%rsp),%ymm13,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + vpmuludq %ymm14,%ymm8,%ymm15 + vpaddq %ymm15,%ymm6,%ymm6 + + vpmuludq 352(%rsp),%ymm10,%ymm7 + vpmuludq 320(%rsp),%ymm11,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpmuludq 288(%rsp),%ymm12,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpmuludq 256(%rsp),%ymm13,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + vpmuludq 384(%rsp),%ymm8,%ymm15 + vpaddq %ymm15,%ymm7,%ymm7 + + vpmuludq 416(%rsp),%ymm8,%ymm8 + vpmuludq 384(%rsp),%ymm10,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpmuludq %ymm11,%ymm14,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpmuludq 320(%rsp),%ymm12,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vpmuludq %ymm13,%ymm9,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + vmovdqa 256(%rsp),%ymm15 + vpmuludq %ymm15,%ymm15,%ymm15 + vpaddq %ymm15,%ymm8,%ymm8 + + vpmuludq 256(%rsp),%ymm9,%ymm9 + vpmuludq 416(%rsp),%ymm10,%ymm15 + vpaddq %ymm15,%ymm9,%ymm9 + vpmuludq 384(%rsp),%ymm11,%ymm15 + vpaddq %ymm15,%ymm9,%ymm9 + vpmuludq 352(%rsp),%ymm12,%ymm15 + vpaddq %ymm15,%ymm9,%ymm9 + vpmuludq 320(%rsp),%ymm13,%ymm15 + vpaddq %ymm15,%ymm9,%ymm9 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm7 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm3 + + vpsrlq $25,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpsllq $1,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpsllq $3,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm9 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + // ← Blend(,<*,*,T15,T16>,0011) + movl $15,%ebx + kmovw %ebx,%k1 + vpblendmd %ymm26,%ymm0,%ymm26{%k1} + vpblendmd %ymm27,%ymm1,%ymm27{%k1} + + vpblendmd %ymm28,%ymm2,%ymm28{%k1} + vpblendmd %ymm29,%ymm3,%ymm29{%k1} + + vpblendmd %ymm30,%ymm4,%ymm30{%k1} + vpblendmd %ymm31,%ymm5,%ymm31{%k1} + + vpblendmd 64(%rsp),%ymm6,%ymm6{%k1} + vpblendmd 96(%rsp),%ymm7,%ymm7{%k1} + vmovdqa %ymm6,64(%rsp) + vmovdqa %ymm7,96(%rsp) + + vpblendmd 128(%rsp),%ymm8,%ymm8{%k1} + vpblendmd 160(%rsp),%ymm9,%ymm9{%k1} + vmovdqa %ymm8,128(%rsp) + vmovdqa %ymm9,160(%rsp) + + // ← Mul(,) + vpaddq %ymm17,%ymm17,%ymm11 + vpaddq %ymm19,%ymm19,%ymm12 + vpaddq %ymm21,%ymm21,%ymm13 + vpaddq %ymm23,%ymm23,%ymm14 + vpaddq %ymm25,%ymm25,%ymm15 + + vpmuludq vec19(%rip),%ymm27,%ymm1 + vpmuludq vec19(%rip),%ymm28,%ymm2 + vpmuludq vec19(%rip),%ymm29,%ymm3 + vpmuludq vec19(%rip),%ymm30,%ymm4 + vpmuludq vec19(%rip),%ymm31,%ymm5 + vpmuludq vec19(%rip),%ymm6,%ymm6 + vpmuludq vec19(%rip),%ymm7,%ymm7 + vpmuludq vec19(%rip),%ymm8,%ymm8 + vpmuludq vec19(%rip),%ymm9,%ymm9 + + vpmuludq %ymm15,%ymm1,%ymm0 + vpmuludq %ymm14,%ymm3,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm13,%ymm5,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm12,%ymm7,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm11,%ymm9,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm24,%ymm2,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm22,%ymm4,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm20,%ymm6,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpmuludq %ymm18,%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq %ymm25,%ymm2,%ymm1 + vpmuludq %ymm24,%ymm3,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm23,%ymm4,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm22,%ymm5,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm21,%ymm6,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm20,%ymm7,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm19,%ymm8,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm18,%ymm9,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm15,%ymm3,%ymm2 + vpmuludq %ymm14,%ymm5,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm13,%ymm7,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm12,%ymm9,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm24,%ymm4,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm22,%ymm6,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm20,%ymm8,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm27,%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq %ymm25,%ymm4,%ymm3 + vpmuludq %ymm24,%ymm5,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm23,%ymm6,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm22,%ymm7,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm21,%ymm8,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm20,%ymm9,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm15,%ymm5,%ymm4 + vpmuludq %ymm14,%ymm7,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm13,%ymm9,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm24,%ymm6,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm22,%ymm8,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm27,%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm29,%ymm11,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq %ymm25,%ymm6,%ymm5 + vpmuludq %ymm24,%ymm7,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm23,%ymm8,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm22,%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq %ymm15,%ymm7,%ymm6 + vpmuludq %ymm14,%ymm9,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm24,%ymm8,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm27,%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm29,%ymm12,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm31,%ymm11,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq %ymm25,%ymm8,%ymm7 + vpmuludq %ymm24,%ymm9,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm15,%ymm9,%ymm8 + vpmuludq %ymm27,%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm29,%ymm13,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm31,%ymm12,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 96(%rsp),%ymm11,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq %ymm26,%ymm16,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + + vpmuludq %ymm28,%ymm16,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpmuludq %ymm26,%ymm18,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + + vpmuludq %ymm29,%ymm16,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm28,%ymm17,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm27,%ymm18,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpmuludq %ymm26,%ymm19,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + + vpmuludq %ymm27,%ymm16,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpmuludq %ymm26,%ymm17,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + + vpmuludq %ymm30,%ymm16,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm28,%ymm18,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpmuludq %ymm26,%ymm20,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + + vpmuludq %ymm31,%ymm16,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm30,%ymm17,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm29,%ymm18,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm28,%ymm19,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm27,%ymm20,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpmuludq %ymm26,%ymm21,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + + vpmuludq 64(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm30,%ymm18,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpmuludq %ymm28,%ymm20,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq 96(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq 64(%rsp),%ymm17,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm31,%ymm18,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm30,%ymm19,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm29,%ymm20,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm28,%ymm21,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq 128(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq 64(%rsp),%ymm18,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm30,%ymm20,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq %ymm30,%ymm21,%ymm21 + vpmuludq 160(%rsp),%ymm16,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq 128(%rsp),%ymm17,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq 96(%rsp),%ymm18,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq 64(%rsp),%ymm19,%ymm10 + vpaddq %ymm10,%ymm21,%ymm21 + vpmuludq %ymm31,%ymm20,%ymm10 + vpaddq %ymm10,%ymm21,%ymm9 + + vpmuludq %ymm26,%ymm22,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + + vpmuludq %ymm27,%ymm22,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpmuludq %ymm26,%ymm23,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + + vpmuludq %ymm28,%ymm22,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpmuludq %ymm26,%ymm24,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + + vpmuludq %ymm29,%ymm22,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq %ymm28,%ymm23,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq %ymm27,%ymm24,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpmuludq %ymm26,%ymm25,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm5 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm1,%ymm1 + + vpsrlq $25,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm7,%ymm14 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm9,%ymm9 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm3,%ymm12 + + vpsrlq $25,%ymm9,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm9,%ymm15 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm11 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm5,%ymm13 + + // ← Pack-N2D() + vpsllq $32,%ymm11,%ymm11 + vpor %ymm11,%ymm0,%ymm0 + vpsllq $32,%ymm12,%ymm12 + vpor %ymm12,%ymm2,%ymm2 + vpsllq $32,%ymm13,%ymm13 + vpor %ymm13,%ymm4,%ymm4 + vpsllq $32,%ymm14,%ymm14 + vpor %ymm14,%ymm6,%ymm6 + vpsllq $32,%ymm15,%ymm15 + vpor %ymm15,%ymm8,%ymm8 + + subb $1,%cl + cmpb $0,%cl + jge .L2 + + movb $7,%cl + subq $1,%r15 + cmpq $0,%r15 + jge .L1 + + // ← Pack-D2N() + vpsrlq $32,%ymm0,%ymm11 + vpand vecmask32(%rip),%ymm0,%ymm0 + vpsrlq $32,%ymm2,%ymm12 + vpand vecmask32(%rip),%ymm2,%ymm2 + vpsrlq $32,%ymm4,%ymm13 + vpand vecmask32(%rip),%ymm4,%ymm4 + vpsrlq $32,%ymm6,%ymm14 + vpand vecmask32(%rip),%ymm6,%ymm6 + vpsrlq $32,%ymm8,%ymm15 + vpand vecmask32(%rip),%ymm8,%ymm8 + + // ← Reduce() + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm11,%ymm11 + vpand vecmask26(%rip),%ymm0,%ymm0 + + vpsrlq $25,%ymm11,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask25(%rip),%ymm11,%ymm11 + + vpsrlq $26,%ymm2,%ymm10 + vpaddq %ymm10,%ymm12,%ymm12 + vpand vecmask26(%rip),%ymm2,%ymm2 + + vpsrlq $25,%ymm12,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpand vecmask25(%rip),%ymm12,%ymm12 + + vpsrlq $26,%ymm4,%ymm10 + vpaddq %ymm10,%ymm13,%ymm13 + vpand vecmask26(%rip),%ymm4,%ymm4 + + vpsrlq $25,%ymm13,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask25(%rip),%ymm13,%ymm13 + + vpsrlq $26,%ymm6,%ymm10 + vpaddq %ymm10,%ymm14,%ymm14 + vpand vecmask26(%rip),%ymm6,%ymm6 + + vpsrlq $25,%ymm14,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask25(%rip),%ymm14,%ymm14 + + vpsrlq $26,%ymm8,%ymm10 + vpaddq %ymm10,%ymm15,%ymm15 + vpand vecmask26(%rip),%ymm8,%ymm8 + + vpsrlq $25,%ymm15,%ymm10 + vpmuludq vec19(%rip),%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask25(%rip),%ymm15,%ymm15 + + vpsrlq $26,%ymm0,%ymm10 + vpaddq %ymm10,%ymm11,%ymm11 + vpand vecmask26(%rip),%ymm0,%ymm0 + + // store + vmovdqa %ymm0,0(%rdi) + vmovdqa %ymm11,32(%rdi) + vmovdqa %ymm2,64(%rdi) + vmovdqa %ymm12,96(%rdi) + vmovdqa %ymm4,128(%rdi) + vmovdqa %ymm13,160(%rdi) + vmovdqa %ymm6,192(%rdi) + vmovdqa %ymm14,224(%rdi) + vmovdqa %ymm8,256(%rdi) + vmovdqa %ymm15,288(%rdi) + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/mont25519.c new file mode 120000 index 0000000000..11d0dc0d00 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/mont25519.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/shared-consts.c new file mode 120000 index 0000000000..2a368f91ad --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns10l-maax/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-ns10l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/architectures new file mode 100644 index 0000000000..34410badcd --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/architectures @@ -0,0 +1 @@ +amd64 avx2 adx avx512f diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/consts_namespace.h new file mode 120000 index 0000000000..5ef1899d82 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/consts_namespace.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519.h new file mode 120000 index 0000000000..7a2c948483 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maax/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_from_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_from_9l.c new file mode 120000 index 0000000000..e7ff02d686 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_from_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_from_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_to_9l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_to_9l.c new file mode 120000 index 0000000000..8914a99664 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_to_9l.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_to_9l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/mladder.S new file mode 100644 index 0000000000..e4bfd7bd34 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/mladder.S @@ -0,0 +1,1239 @@ +// linker define mladder +// linker use hh1_p1 +// linker use hh1_p2 +// linker use hh1_p3 +// linker use h2h_p1 +// linker use h2h_p2 +// linker use h2h_p3 +// linker use hh1_xor1 +// linker use h2h_xor1 +// linker use hh1_xor2 +// linker use h2h_xor2 +// linker use swap_c +// linker use swap_mask +// linker use h2h_mask +// linker use vec19 +// linker use vec1216 +// linker use vecmask23 +// linker use vecmask29 +// linker use vecmask29d +// linker use vecmask32 +// linker use a24 + +/* Assembly for Montgomery ladder. */ + +#include "consts_namespace.h" + + .p2align 5 + .globl _CRYPTO_SHARED_NAMESPACE(mladder) + .globl CRYPTO_SHARED_NAMESPACE(mladder) + +_CRYPTO_SHARED_NAMESPACE(mladder): +CRYPTO_SHARED_NAMESPACE(mladder): + + movq %rsp,%r11 + andq $-32,%rsp + subq $448,%rsp + + movq %r11,0(%rsp) + movq %r12,8(%rsp) + movq %r13,16(%rsp) + movq %r14,24(%rsp) + movq %r15,32(%rsp) + movq %rbx,40(%rsp) + movq %rbp,48(%rsp) + + // load <0,0,1,X1> + vmovdqa 0(%rsi),%ymm0 + vmovdqa 32(%rsi),%ymm1 + vmovdqa 64(%rsi),%ymm2 + vmovdqa 96(%rsi),%ymm3 + vmovdqa 128(%rsi),%ymm4 + vmovdqa 160(%rsi),%ymm5 + vmovdqa 192(%rsi),%ymm6 + vmovdqa 224(%rsi),%ymm7 + vmovdqa 256(%rsi),%ymm8 + + // <0',0',1',X1'> ← Pack-D2N(<0,0,1,X1>) + vpsllq $32,%ymm4,%ymm4 + vpor %ymm4,%ymm0,%ymm0 + vpsllq $32,%ymm5,%ymm5 + vpor %ymm5,%ymm1,%ymm1 + vpsllq $32,%ymm6,%ymm6 + vpor %ymm6,%ymm2,%ymm2 + vpsllq $32,%ymm7,%ymm7 + vpor %ymm7,%ymm3,%ymm3 + + vmovdqa %ymm0,0(%rsi) + vmovdqa %ymm1,32(%rsi) + vmovdqa %ymm2,64(%rsi) + vmovdqa %ymm3,96(%rsi) + vmovdqa %ymm8,128(%rsi) + + // load + vmovdqa 0(%rdi),%ymm10 + vmovdqa 32(%rdi),%ymm11 + vmovdqa 64(%rdi),%ymm12 + vmovdqa 96(%rdi),%ymm13 + vmovdqa 128(%rdi),%ymm0 + vmovdqa 160(%rdi),%ymm1 + vmovdqa 192(%rdi),%ymm2 + vmovdqa 224(%rdi),%ymm3 + vmovdqa 256(%rdi),%ymm4 + + // ← Pack-D2N() + vpsllq $32,%ymm0,%ymm0 + vpor %ymm0,%ymm10,%ymm10 + vpsllq $32,%ymm1,%ymm1 + vpor %ymm1,%ymm11,%ymm11 + vpsllq $32,%ymm2,%ymm2 + vpor %ymm2,%ymm12,%ymm12 + vpsllq $32,%ymm3,%ymm3 + vpor %ymm3,%ymm13,%ymm13 + + movq $31,%r15 + movq $6,%rcx + + movb $0,%r8b + movq %rdx,%rax + +.L1: + addq %r15,%rax + movb 0(%rax),%r14b + movq %rdx,%rax + +.L2: + movb %r14b,%bl + shrb %cl,%bl + andb $1,%bl + movb %bl,%r9b + xorb %r8b,%bl + movb %r9b,%r8b + + // ← Dense-Swap(,b) + movzbl %bl,%ebx + imul $4,%ebx,%ebx + movl %ebx,56(%rsp) + vpbroadcastd 56(%rsp),%ymm7 + vpaddd swap_c(%rip),%ymm7,%ymm7 + vpand swap_mask(%rip),%ymm7,%ymm7 + + vpermd %ymm10,%ymm7,%ymm10 + vpermd %ymm11,%ymm7,%ymm11 + vpermd %ymm12,%ymm7,%ymm12 + vpermd %ymm13,%ymm7,%ymm13 + vpermd %ymm4,%ymm7,%ymm4 + + // ← Dense-H-H1() + vpshufd $68,%ymm10,%ymm5 + vpshufd $238,%ymm10,%ymm6 + vpaddd hh1_p1(%rip),%ymm5,%ymm5 + vpxor hh1_xor1(%rip),%ymm6,%ymm6 + vpaddd %ymm5,%ymm6,%ymm10 + + vpshufd $68,%ymm11,%ymm5 + vpshufd $238,%ymm11,%ymm6 + vpaddd hh1_p2(%rip),%ymm5,%ymm5 + vpxor hh1_xor1(%rip),%ymm6,%ymm6 + vpaddd %ymm5,%ymm6,%ymm11 + + vpshufd $68,%ymm12,%ymm5 + vpshufd $238,%ymm12,%ymm6 + vpaddd hh1_p2(%rip),%ymm5,%ymm5 + vpxor hh1_xor1(%rip),%ymm6,%ymm6 + vpaddd %ymm5,%ymm6,%ymm12 + + vpshufd $68,%ymm13,%ymm5 + vpshufd $238,%ymm13,%ymm6 + vpaddd hh1_p2(%rip),%ymm5,%ymm5 + vpxor hh1_xor1(%rip),%ymm6,%ymm6 + vpaddd %ymm5,%ymm6,%ymm13 + + vpshufd $68,%ymm4,%ymm5 + vpshufd $238,%ymm4,%ymm6 + vpaddd hh1_p3(%rip),%ymm5,%ymm5 + vpxor hh1_xor2(%rip),%ymm6,%ymm6 + vpaddd %ymm5,%ymm6,%ymm4 + + vpsrld $29,%ymm10,%ymm15 + vpaddd %ymm15,%ymm11,%ymm11 + vpandq vecmask29d(%rip),%ymm10,%ymm10 + + vpsrld $29,%ymm11,%ymm15 + vpaddd %ymm15,%ymm12,%ymm12 + vpandq vecmask29d(%rip),%ymm11,%ymm17 + + vpsrld $29,%ymm12,%ymm15 + vpaddd %ymm15,%ymm13,%ymm13 + vpandq vecmask29d(%rip),%ymm12,%ymm18 + + vpsrld $29,%ymm13,%ymm15 + vpsllq $32,%ymm15,%ymm15 + vpaddd %ymm15,%ymm10,%ymm10 + vpsrlq $61,%ymm13,%ymm15 + vpaddd %ymm15,%ymm4,%ymm4 + vpandq vecmask29d(%rip),%ymm13,%ymm19 + + vpsrlq $23,%ymm4,%ymm15 + vpmuludq vec19(%rip),%ymm15,%ymm15 + vpaddd %ymm15,%ymm10,%ymm16 + vpand vecmask23(%rip),%ymm4,%ymm9 + + // ← Pack-N2D() + vpsrlq $32,%ymm16,%ymm5 + vpsrlq $32,%ymm17,%ymm6 + vpsrlq $32,%ymm18,%ymm7 + vpsrlq $32,%ymm19,%ymm8 + + // ← Dense-Dup() + vpermq $68,%ymm16,%ymm10 + vpermq $68,%ymm17,%ymm11 + vpermq $68,%ymm18,%ymm12 + vpermq $68,%ymm19,%ymm13 + vpermq $68,%ymm9,%ymm4 + + // ← Pack-D2N() + vpsrlq $32,%ymm10,%ymm0 + vpsrlq $32,%ymm11,%ymm1 + vpsrlq $32,%ymm12,%ymm2 + vpsrlq $32,%ymm13,%ymm3 + + // ← Mul(,) + vpmuludq %ymm5,%ymm0,%ymm20 + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm21 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm22 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm23 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm24 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm25 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm26 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm27 + + vpmuludq %ymm9,%ymm4,%ymm28 + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq %ymm16,%ymm5,%ymm5 + vpaddq %ymm17,%ymm6,%ymm6 + vpaddq %ymm18,%ymm7,%ymm7 + vpaddq %ymm19,%ymm8,%ymm8 + + vpmuludq %ymm16,%ymm10,%ymm29 + vpaddq %ymm20,%ymm29,%ymm15 + vmovdqa %ymm15,192(%rsp) + + vpmuludq %ymm17,%ymm10,%ymm15 + vpmuludq %ymm16,%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm30 + vpaddq %ymm21,%ymm30,%ymm15 + vmovdqa %ymm15,224(%rsp) + + vpmuludq %ymm18,%ymm10,%ymm15 + vpmuludq %ymm17,%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm16,%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm31 + vpaddq %ymm22,%ymm31,%ymm15 + vmovdqa %ymm15,256(%rsp) + + vpmuludq %ymm19,%ymm10,%ymm15 + vpmuludq %ymm18,%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm17,%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm16,%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,64(%rsp) + vpaddq %ymm23,%ymm15,%ymm15 + vmovdqa %ymm15,288(%rsp) + + vpmuludq %ymm19,%ymm11,%ymm15 + vpmuludq %ymm18,%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm17,%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,96(%rsp) + vpaddq %ymm24,%ymm15,%ymm15 + vmovdqa %ymm15,320(%rsp) + + vpmuludq %ymm19,%ymm12,%ymm15 + vpmuludq %ymm18,%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,128(%rsp) + vpaddq %ymm25,%ymm15,%ymm15 + vmovdqa %ymm15,352(%rsp) + + vpmuludq %ymm19,%ymm13,%ymm15 + vmovdqa %ymm15,160(%rsp) + vpaddq %ymm26,%ymm15,%ymm15 + vmovdqa %ymm15,384(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,416(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 416(%rsp),%ymm9 + + vpsubq 192(%rsp),%ymm9,%ymm9 + vpaddq 96(%rsp),%ymm9,%ymm9 + vpsubq 224(%rsp),%ymm10,%ymm10 + vpaddq 128(%rsp),%ymm10,%ymm10 + vpsubq 256(%rsp),%ymm11,%ymm11 + vpaddq 160(%rsp),%ymm11,%ymm11 + vpsubq 288(%rsp),%ymm12,%ymm12 + vpsubq 320(%rsp),%ymm13,%ymm13 + vpaddq %ymm20,%ymm13,%ymm13 + vpsubq 352(%rsp),%ymm0,%ymm0 + vpaddq %ymm21,%ymm0,%ymm0 + vpsubq 384(%rsp),%ymm1,%ymm1 + vpaddq %ymm22,%ymm1,%ymm1 + vpsubq %ymm27,%ymm2,%ymm2 + vpaddq %ymm23,%ymm2,%ymm2 + vpsubq %ymm28,%ymm3,%ymm3 + vpaddq %ymm24,%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq %ymm29,%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq %ymm30,%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq %ymm31,%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq %ymm25,%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 64(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq %ymm26,%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq %ymm27,%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq %ymm28,%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpandq vecmask29(%rip),%ymm6,%ymm26 + + vpsrlq $29,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpandq vecmask29(%rip),%ymm2,%ymm22 + + vpsrlq $29,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpandq vecmask29(%rip),%ymm7,%ymm27 + + vpsrlq $29,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm4 + vpandq vecmask29(%rip),%ymm3,%ymm23 + + vpsrlq $23,%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm10,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpsllq $3,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpandq vecmask23(%rip),%ymm8,%ymm8 + vmovdqa64 %ymm8,%ymm28 + + vpsrlq $29,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm25 + vpandq vecmask29(%rip),%ymm4,%ymm24 + + vpsrlq $29,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm21 + vpandq vecmask29(%rip),%ymm0,%ymm20 + + // ← Pack-N2D() + vpsllq $32,%ymm24,%ymm4 + vporq %ymm4,%ymm20,%ymm0 + vpsllq $32,%ymm25,%ymm5 + vporq %ymm5,%ymm21,%ymm1 + vpsllq $32,%ymm26,%ymm6 + vporq %ymm6,%ymm22,%ymm2 + vpsllq $32,%ymm27,%ymm7 + vporq %ymm7,%ymm23,%ymm3 + + // ← Dense-H2-H() + vpshufd $68,%ymm0,%ymm9 + vpand h2h_mask(%rip),%ymm9,%ymm9 + vpshufd $238,%ymm0,%ymm10 + vpaddd h2h_p1(%rip),%ymm9,%ymm9 + vpxor h2h_xor1(%rip),%ymm10,%ymm10 + vpaddd %ymm9,%ymm10,%ymm0 + + vpshufd $68,%ymm1,%ymm9 + vpand h2h_mask(%rip),%ymm9,%ymm9 + vpshufd $238,%ymm1,%ymm10 + vpaddd h2h_p2(%rip),%ymm9,%ymm9 + vpxor h2h_xor1(%rip),%ymm10,%ymm10 + vpaddd %ymm9,%ymm10,%ymm1 + + vpshufd $68,%ymm2,%ymm9 + vpand h2h_mask(%rip),%ymm9,%ymm9 + vpshufd $238,%ymm2,%ymm10 + vpaddd h2h_p2(%rip),%ymm9,%ymm9 + vpxor h2h_xor1(%rip),%ymm10,%ymm10 + vpaddd %ymm9,%ymm10,%ymm2 + + vpshufd $68,%ymm3,%ymm9 + vpand h2h_mask(%rip),%ymm9,%ymm9 + vpshufd $238,%ymm3,%ymm10 + vpaddd h2h_p2(%rip),%ymm9,%ymm9 + vpxor h2h_xor1(%rip),%ymm10,%ymm10 + vpaddd %ymm9,%ymm10,%ymm3 + + vpshufd $68,%ymm8,%ymm9 + vpand h2h_mask(%rip),%ymm9,%ymm9 + vpshufd $238,%ymm8,%ymm10 + vpaddd h2h_p3(%rip),%ymm9,%ymm9 + vpxor h2h_xor2(%rip),%ymm10,%ymm10 + vpaddd %ymm9,%ymm10,%ymm8 + + vpsrld $29,%ymm0,%ymm15 + vpaddd %ymm15,%ymm1,%ymm1 + vpand vecmask29d(%rip),%ymm0,%ymm0 + + vpsrld $29,%ymm1,%ymm15 + vpaddd %ymm15,%ymm2,%ymm2 + vpand vecmask29d(%rip),%ymm1,%ymm1 + + vpsrld $29,%ymm2,%ymm15 + vpaddd %ymm15,%ymm3,%ymm3 + vpand vecmask29d(%rip),%ymm2,%ymm2 + + vpsrld $29,%ymm3,%ymm15 + vpsllq $32,%ymm15,%ymm15 + vpaddd %ymm15,%ymm0,%ymm0 + vpsrlq $61,%ymm3,%ymm15 + vpaddd %ymm15,%ymm8,%ymm8 + vpand vecmask29d(%rip),%ymm3,%ymm3 + + vpsrlq $23,%ymm8,%ymm15 + vpmuludq vec19(%rip),%ymm15,%ymm15 + vpaddd %ymm15,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + // ← Blend(<0',0',1',X1'>,,1100) + movl $240,%ebx + kmovw %ebx,%k1 + vpblendmd 0(%rsi),%ymm0,%ymm16{%k1} + vpblendmd 32(%rsi),%ymm1,%ymm17{%k1} + vpblendmd 64(%rsi),%ymm2,%ymm18{%k1} + vpblendmd 96(%rsi),%ymm3,%ymm19{%k1} + vpblendmd 128(%rsi),%ymm8,%ymm15{%k1} + + // ← Pack-D2N() + vpsrlq $32,%ymm16,%ymm11 + vpsrlq $32,%ymm17,%ymm12 + vpsrlq $32,%ymm18,%ymm13 + vpsrlq $32,%ymm19,%ymm14 + + vmovdqa %ymm11,96(%rsp) + vmovdqa %ymm12,128(%rsp) + vmovdqa %ymm13,160(%rsp) + vmovdqa %ymm14,192(%rsp) + vmovdqa %ymm15,224(%rsp) + + // ← Pack-D2N() + vpsrlq $32,%ymm0,%ymm4 + vpsrlq $32,%ymm1,%ymm5 + vpsrlq $32,%ymm2,%ymm6 + vpsrlq $32,%ymm3,%ymm7 + + // <0,T13,0,0> ← Unreduced-Mulc(,<0,a24,0,0>) + // ← Add(<0,T13,0,0>,) + vpmuludq a24(%rip),%ymm0,%ymm9 + vpaddq %ymm20,%ymm9,%ymm9 + vpmuludq a24(%rip),%ymm1,%ymm10 + vpaddq %ymm21,%ymm10,%ymm10 + vpmuludq a24(%rip),%ymm2,%ymm11 + vpaddq %ymm22,%ymm11,%ymm11 + vpmuludq a24(%rip),%ymm4,%ymm12 + vpaddq %ymm24,%ymm12,%ymm12 + vpmuludq a24(%rip),%ymm5,%ymm13 + vpaddq %ymm25,%ymm13,%ymm13 + vpmuludq a24(%rip),%ymm6,%ymm14 + vpaddq %ymm26,%ymm14,%ymm14 + + vpsrlq $29,%ymm12,%ymm15 + vpaddq %ymm15,%ymm13,%ymm13 + vpand vecmask29(%rip),%ymm12,%ymm12 + + vpsrlq $29,%ymm9,%ymm15 + vpaddq %ymm15,%ymm10,%ymm10 + vpand vecmask29(%rip),%ymm9,%ymm9 + + vpsrlq $29,%ymm13,%ymm15 + vpaddq %ymm15,%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm13,%ymm13 + vmovdqa64 %ymm13,%ymm25 + + vpsrlq $29,%ymm10,%ymm15 + vpaddq %ymm15,%ymm11,%ymm11 + vpand vecmask29(%rip),%ymm10,%ymm10 + vmovdqa64 %ymm10,%ymm21 + + vpmuludq a24(%rip),%ymm3,%ymm10 + vpaddq %ymm23,%ymm10,%ymm10 + vpmuludq a24(%rip),%ymm7,%ymm13 + vpaddq %ymm27,%ymm13,%ymm13 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq %ymm15,%ymm13,%ymm13 + vpand vecmask29(%rip),%ymm14,%ymm14 + vmovdqa64 %ymm14,%ymm26 + + vpsrlq $29,%ymm11,%ymm15 + vpaddq %ymm15,%ymm10,%ymm10 + vpand vecmask29(%rip),%ymm11,%ymm11 + vmovdqa64 %ymm11,%ymm22 + + vpmuludq a24(%rip),%ymm8,%ymm14 + vpaddq %ymm28,%ymm14,%ymm14 + + vpsrlq $29,%ymm13,%ymm15 + vpaddq %ymm15,%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm13,%ymm13 + vmovdqa64 %ymm13,%ymm27 + + vpsrlq $29,%ymm10,%ymm15 + vpaddq %ymm15,%ymm12,%ymm12 + vpand vecmask29(%rip),%ymm10,%ymm10 + vmovdqa64 %ymm10,%ymm23 + vmovdqa64 %ymm12,%ymm24 + + vpsrlq $23,%ymm14,%ymm15 + vpmuludq vec19(%rip),%ymm15,%ymm15 + vpaddq %ymm15,%ymm9,%ymm9 + vpand vecmask23(%rip),%ymm14,%ymm14 + vmovdqa64 %ymm9,%ymm20 + vmovdqa64 %ymm14,%ymm28 + + // <*,*,T15,T16> ← Sqr() + vpmuludq %ymm1,%ymm8,%ymm15 + vpmuludq %ymm2,%ymm7,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm3,%ymm6,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm4,%ymm5,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpsllq $1,%ymm15,%ymm9 + + vpmuludq %ymm2,%ymm8,%ymm15 + vpmuludq %ymm3,%ymm7,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm4,%ymm6,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpsllq $1,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm5,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpsrlq $29,%ymm9,%ymm14 + vpaddq %ymm14,%ymm10,%ymm10 + vpand vecmask29(%rip),%ymm9,%ymm9 + + vpmuludq vec1216(%rip),%ymm9,%ymm9 + vpmuludq %ymm0,%ymm0,%ymm15 + vpaddq %ymm15,%ymm9,%ymm9 + + vpmuludq %ymm3,%ymm8,%ymm15 + vpmuludq %ymm4,%ymm7,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm6,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpsllq $1,%ymm15,%ymm11 + + vpsrlq $29,%ymm10,%ymm14 + vpaddq %ymm14,%ymm11,%ymm11 + vpand vecmask29(%rip),%ymm10,%ymm10 + + vpmuludq vec1216(%rip),%ymm10,%ymm10 + vpmuludq %ymm0,%ymm1,%ymm15 + vpsllq $1,%ymm15,%ymm15 + vpaddq %ymm15,%ymm10,%ymm10 + vpmuludq %ymm4,%ymm8,%ymm15 + vpmuludq %ymm5,%ymm7,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpsllq $1,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm6,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpsrlq $29,%ymm11,%ymm14 + vpaddq %ymm14,%ymm12,%ymm12 + vpand vecmask29(%rip),%ymm11,%ymm11 + vpmuludq vec1216(%rip),%ymm11,%ymm11 + vpmuludq %ymm0,%ymm2,%ymm15 + vpsllq $1,%ymm15,%ymm15 + vpmuludq %ymm1,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpaddq %ymm15,%ymm11,%ymm29 + vpmuludq %ymm5,%ymm8,%ymm15 + vpmuludq %ymm6,%ymm7,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpsllq $1,%ymm15,%ymm13 + + vpsrlq $29,%ymm12,%ymm14 + vpaddq %ymm14,%ymm13,%ymm13 + vpand vecmask29(%rip),%ymm12,%ymm12 + + vpmuludq vec1216(%rip),%ymm12,%ymm12 + vpmuludq %ymm0,%ymm3,%ymm15 + vpmuludq %ymm1,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpsllq $1,%ymm15,%ymm15 + vpaddq %ymm15,%ymm12,%ymm30 + + vpmuludq %ymm6,%ymm8,%ymm15 + vpsllq $1,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm7,%ymm14 + vpaddq %ymm14,%ymm15,%ymm14 + + vpsrlq $29,%ymm13,%ymm15 + vpaddq %ymm15,%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm13,%ymm13 + + vpmuludq vec1216(%rip),%ymm13,%ymm13 + vpmuludq %ymm0,%ymm4,%ymm15 + vpmuludq %ymm1,%ymm3,%ymm11 + vpaddq %ymm11,%ymm15,%ymm15 + vpsllq $1,%ymm15,%ymm15 + vpmuludq %ymm2,%ymm2,%ymm11 + vpaddq %ymm11,%ymm15,%ymm15 + vpaddq %ymm15,%ymm13,%ymm31 + + vpmuludq %ymm7,%ymm8,%ymm15 + vpsllq $1,%ymm15,%ymm15 + + vpsrlq $29,%ymm14,%ymm11 + vpaddq %ymm11,%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm14 + + vpmuludq vec1216(%rip),%ymm14,%ymm14 + vpmuludq %ymm0,%ymm5,%ymm12 + vpmuludq %ymm1,%ymm4,%ymm11 + vpaddq %ymm11,%ymm12,%ymm12 + vpmuludq %ymm2,%ymm3,%ymm11 + vpaddq %ymm11,%ymm12,%ymm12 + vpsllq $1,%ymm12,%ymm12 + vpaddq %ymm12,%ymm14,%ymm14 + + vpmuludq %ymm8,%ymm8,%ymm11 + + vpsrlq $29,%ymm15,%ymm12 + vpaddq %ymm12,%ymm11,%ymm11 + vpand vecmask29(%rip),%ymm15,%ymm15 + + vpmuludq vec1216(%rip),%ymm15,%ymm15 + vpmuludq %ymm0,%ymm6,%ymm12 + vpmuludq %ymm1,%ymm5,%ymm13 + vpaddq %ymm12,%ymm13,%ymm13 + vpmuludq %ymm2,%ymm4,%ymm12 + vpaddq %ymm12,%ymm13,%ymm13 + vpsllq $1,%ymm13,%ymm13 + vpmuludq %ymm3,%ymm3,%ymm12 + vpaddq %ymm12,%ymm13,%ymm13 + vpaddq %ymm13,%ymm15,%ymm15 + + vmovdqa %ymm14,64(%rsp) + + vpsrlq $29,%ymm11,%ymm12 + vpand vecmask29(%rip),%ymm11,%ymm11 + + vpmuludq vec1216(%rip),%ymm11,%ymm11 + vpmuludq %ymm0,%ymm7,%ymm13 + vpmuludq %ymm1,%ymm6,%ymm14 + vpaddq %ymm13,%ymm14,%ymm14 + vpmuludq %ymm2,%ymm5,%ymm13 + vpaddq %ymm13,%ymm14,%ymm14 + vpmuludq %ymm3,%ymm4,%ymm13 + vpaddq %ymm13,%ymm14,%ymm14 + vpsllq $1,%ymm14,%ymm14 + vpaddq %ymm14,%ymm11,%ymm11 + + vpmuludq vec1216(%rip),%ymm12,%ymm12 + vpmuludq %ymm0,%ymm8,%ymm13 + vpmuludq %ymm1,%ymm7,%ymm14 + vpaddq %ymm13,%ymm14,%ymm14 + vpmuludq %ymm2,%ymm6,%ymm13 + vpaddq %ymm13,%ymm14,%ymm14 + vpmuludq %ymm3,%ymm5,%ymm13 + vpaddq %ymm13,%ymm14,%ymm14 + vpsllq $1,%ymm14,%ymm14 + vpmuludq %ymm4,%ymm4,%ymm13 + vpaddq %ymm13,%ymm14,%ymm14 + vpaddq %ymm14,%ymm12,%ymm12 + + vpsrlq $29,%ymm31,%ymm5 + vpaddq 64(%rsp),%ymm5,%ymm5 + vpandq vecmask29(%rip),%ymm31,%ymm4 + + vpsrlq $29,%ymm9,%ymm14 + vpaddq %ymm14,%ymm10,%ymm1 + vpand vecmask29(%rip),%ymm9,%ymm0 + + vpsrlq $29,%ymm5,%ymm6 + vpaddq %ymm15,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm29,%ymm14,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm6,%ymm7 + vpaddq %ymm11,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm30,%ymm14,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm7,%ymm8 + vpaddq %ymm12,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq %ymm14,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $23,%ymm8,%ymm14 + vpaddq %ymm14,%ymm0,%ymm0 + vpsllq $1,%ymm14,%ymm14 + vpaddq %ymm14,%ymm0,%ymm0 + vpsllq $3,%ymm14,%ymm14 + vpaddq %ymm14,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm8 + + vpsrlq $29,%ymm4,%ymm14 + vpaddq %ymm14,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + // ← Blend(,<*,*,T15,T16>,0011) + movl $15,%ebx + kmovw %ebx,%k1 + vpblendmd %ymm20,%ymm0,%ymm10{%k1} + vpblendmd %ymm21,%ymm1,%ymm11{%k1} + vpblendmd %ymm22,%ymm2,%ymm12{%k1} + vpblendmd %ymm23,%ymm3,%ymm13{%k1} + vpblendmd %ymm24,%ymm4,%ymm0{%k1} + vpblendmd %ymm25,%ymm5,%ymm1{%k1} + vpblendmd %ymm26,%ymm6,%ymm2{%k1} + vpblendmd %ymm27,%ymm7,%ymm3{%k1} + vpblendmd %ymm28,%ymm8,%ymm4{%k1} + + // ← Mul(,) + vmovdqa 96(%rsp),%ymm5 + vmovdqa 128(%rsp),%ymm6 + vmovdqa 160(%rsp),%ymm7 + vmovdqa 192(%rsp),%ymm8 + vmovdqa 224(%rsp),%ymm9 + + vpmuludq %ymm5,%ymm0,%ymm20 + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm21 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm22 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm23 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm24 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm25 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm26 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm27 + + vpmuludq %ymm9,%ymm4,%ymm28 + + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm11,%ymm1,%ymm1 + vpaddq %ymm12,%ymm2,%ymm2 + vpaddq %ymm13,%ymm3,%ymm3 + vpaddq %ymm16,%ymm5,%ymm5 + vpaddq %ymm17,%ymm6,%ymm6 + vpaddq %ymm18,%ymm7,%ymm7 + vpaddq %ymm19,%ymm8,%ymm8 + + vpmuludq %ymm16,%ymm10,%ymm29 + vpaddq %ymm20,%ymm29,%ymm15 + vmovdqa %ymm15,192(%rsp) + + vpmuludq %ymm17,%ymm10,%ymm15 + vpmuludq %ymm16,%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm30 + vpaddq %ymm21,%ymm30,%ymm15 + vmovdqa %ymm15,224(%rsp) + + vpmuludq %ymm18,%ymm10,%ymm15 + vpmuludq %ymm17,%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm16,%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm31 + vpaddq %ymm22,%ymm31,%ymm15 + vmovdqa %ymm15,256(%rsp) + + vpmuludq %ymm19,%ymm10,%ymm15 + vpmuludq %ymm18,%ymm11,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm17,%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm16,%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,64(%rsp) + vpaddq %ymm23,%ymm15,%ymm15 + vmovdqa %ymm15,288(%rsp) + + vpmuludq %ymm19,%ymm11,%ymm15 + vpmuludq %ymm18,%ymm12,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm17,%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,96(%rsp) + vpaddq %ymm24,%ymm15,%ymm15 + vmovdqa %ymm15,320(%rsp) + + vpmuludq %ymm19,%ymm12,%ymm15 + vpmuludq %ymm18,%ymm13,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vmovdqa %ymm15,128(%rsp) + vpaddq %ymm25,%ymm15,%ymm15 + vmovdqa %ymm15,352(%rsp) + + vpmuludq %ymm19,%ymm13,%ymm15 + vmovdqa %ymm15,160(%rsp) + vpaddq %ymm26,%ymm15,%ymm15 + vmovdqa %ymm15,384(%rsp) + + vpmuludq %ymm5,%ymm0,%ymm15 + vmovdqa %ymm15,416(%rsp) + + vpmuludq %ymm6,%ymm0,%ymm15 + vpmuludq %ymm5,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm10 + + vpmuludq %ymm7,%ymm0,%ymm15 + vpmuludq %ymm6,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm11 + + vpmuludq %ymm8,%ymm0,%ymm15 + vpmuludq %ymm7,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm12 + + vpmuludq %ymm9,%ymm0,%ymm15 + vpmuludq %ymm8,%ymm1,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm5,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm13 + + vpmuludq %ymm9,%ymm1,%ymm15 + vpmuludq %ymm8,%ymm2,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm6,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm0 + + vpmuludq %ymm9,%ymm2,%ymm15 + vpmuludq %ymm8,%ymm3,%ymm14 + vpaddq %ymm14,%ymm15,%ymm15 + vpmuludq %ymm7,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm1 + + vpmuludq %ymm9,%ymm3,%ymm15 + vpmuludq %ymm8,%ymm4,%ymm14 + vpaddq %ymm14,%ymm15,%ymm2 + + vpmuludq %ymm9,%ymm4,%ymm3 + + vmovdqa 416(%rsp),%ymm9 + + vpsubq 192(%rsp),%ymm9,%ymm9 + vpaddq 96(%rsp),%ymm9,%ymm9 + vpsubq 224(%rsp),%ymm10,%ymm10 + vpaddq 128(%rsp),%ymm10,%ymm10 + vpsubq 256(%rsp),%ymm11,%ymm11 + vpaddq 160(%rsp),%ymm11,%ymm11 + vpsubq 288(%rsp),%ymm12,%ymm12 + vpsubq 320(%rsp),%ymm13,%ymm13 + vpaddq %ymm20,%ymm13,%ymm13 + vpsubq 352(%rsp),%ymm0,%ymm0 + vpaddq %ymm21,%ymm0,%ymm0 + vpsubq 384(%rsp),%ymm1,%ymm1 + vpaddq %ymm22,%ymm1,%ymm1 + vpsubq %ymm27,%ymm2,%ymm2 + vpaddq %ymm23,%ymm2,%ymm2 + vpsubq %ymm28,%ymm3,%ymm3 + vpaddq %ymm24,%ymm3,%ymm3 + + vpsrlq $29,%ymm0,%ymm14 + vpaddq %ymm14,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + vpmuludq vec1216(%rip),%ymm0,%ymm0 + vpaddq %ymm29,%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm14 + vpaddq %ymm14,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + vpmuludq vec1216(%rip),%ymm1,%ymm1 + vpaddq %ymm30,%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm14 + vpaddq %ymm14,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + vpmuludq vec1216(%rip),%ymm2,%ymm2 + vpaddq %ymm31,%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm14 + vpaddq %ymm25,%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm3,%ymm3 + vpmuludq vec1216(%rip),%ymm3,%ymm3 + vpaddq 64(%rsp),%ymm3,%ymm3 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq %ymm26,%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm4 + vpmuludq vec1216(%rip),%ymm4,%ymm4 + vpaddq %ymm9,%ymm4,%ymm4 + + vpsrlq $29,%ymm15,%ymm14 + vpaddq %ymm27,%ymm14,%ymm14 + vpand vecmask29(%rip),%ymm15,%ymm5 + vpmuludq vec1216(%rip),%ymm5,%ymm5 + vpaddq %ymm10,%ymm5,%ymm5 + + vpsrlq $29,%ymm14,%ymm15 + vpaddq %ymm28,%ymm15,%ymm15 + vpand vecmask29(%rip),%ymm14,%ymm6 + vpmuludq vec1216(%rip),%ymm6,%ymm6 + vpaddq %ymm11,%ymm6,%ymm6 + + vpsrlq $29,%ymm15,%ymm8 + vpand vecmask29(%rip),%ymm15,%ymm7 + + vpmuludq vec1216(%rip),%ymm7,%ymm7 + vpaddq %ymm12,%ymm7,%ymm7 + vpmuludq vec1216(%rip),%ymm8,%ymm8 + vpaddq %ymm13,%ymm8,%ymm8 + + vpsrlq $29,%ymm4,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm5,%ymm10 + vpaddq %ymm10,%ymm6,%ymm6 + vpand vecmask29(%rip),%ymm5,%ymm5 + + vpsrlq $29,%ymm1,%ymm10 + vpaddq %ymm10,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm6,%ymm10 + vpaddq %ymm10,%ymm7,%ymm7 + vpand vecmask29(%rip),%ymm6,%ymm6 + + vpsrlq $29,%ymm2,%ymm10 + vpaddq %ymm10,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm7,%ymm10 + vpaddq %ymm10,%ymm8,%ymm8 + vpand vecmask29(%rip),%ymm7,%ymm7 + + vpsrlq $29,%ymm3,%ymm10 + vpaddq %ymm10,%ymm4,%ymm9 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $23,%ymm8,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpaddq %ymm10,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpsllq $3,%ymm10,%ymm10 + vpaddq %ymm10,%ymm0,%ymm0 + vpand vecmask23(%rip),%ymm8,%ymm4 + + vpsrlq $29,%ymm9,%ymm10 + vpaddq %ymm10,%ymm5,%ymm5 + vpand vecmask29(%rip),%ymm9,%ymm9 + + vpsrlq $29,%ymm0,%ymm10 + vpaddq %ymm10,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + // ← Pack-N2D() + vpsllq $32,%ymm9,%ymm9 + vpor %ymm9,%ymm0,%ymm10 + vpsllq $32,%ymm5,%ymm5 + vpor %ymm5,%ymm1,%ymm11 + vpsllq $32,%ymm6,%ymm6 + vpor %ymm6,%ymm2,%ymm12 + vpsllq $32,%ymm7,%ymm7 + vpor %ymm7,%ymm3,%ymm13 + + subb $1,%cl + cmpb $0,%cl + jge .L2 + + movb $7,%cl + subq $1,%r15 + cmpq $0,%r15 + jge .L1 + + // ← Pack-D2N() + vpsrlq $32,%ymm10,%ymm0 + vpand vecmask32(%rip),%ymm10,%ymm10 + vpsrlq $32,%ymm11,%ymm1 + vpand vecmask32(%rip),%ymm11,%ymm11 + vpsrlq $32,%ymm12,%ymm2 + vpand vecmask32(%rip),%ymm12,%ymm12 + vpsrlq $32,%ymm13,%ymm3 + vpand vecmask32(%rip),%ymm13,%ymm13 + + // ← Reduce() + vpsrlq $29,%ymm10,%ymm15 + vpaddq %ymm15,%ymm11,%ymm11 + vpand vecmask29(%rip),%ymm10,%ymm10 + + vpsrlq $29,%ymm11,%ymm15 + vpaddq %ymm15,%ymm12,%ymm12 + vpand vecmask29(%rip),%ymm11,%ymm11 + + vpsrlq $29,%ymm12,%ymm15 + vpaddq %ymm15,%ymm13,%ymm13 + vpand vecmask29(%rip),%ymm12,%ymm12 + + vpsrlq $29,%ymm13,%ymm15 + vpaddq %ymm15,%ymm0,%ymm0 + vpand vecmask29(%rip),%ymm13,%ymm13 + + vpsrlq $29,%ymm0,%ymm15 + vpaddq %ymm15,%ymm1,%ymm1 + vpand vecmask29(%rip),%ymm0,%ymm0 + + vpsrlq $29,%ymm1,%ymm15 + vpaddq %ymm15,%ymm2,%ymm2 + vpand vecmask29(%rip),%ymm1,%ymm1 + + vpsrlq $29,%ymm2,%ymm15 + vpaddq %ymm15,%ymm3,%ymm3 + vpand vecmask29(%rip),%ymm2,%ymm2 + + vpsrlq $29,%ymm3,%ymm15 + vpaddq %ymm15,%ymm4,%ymm4 + vpand vecmask29(%rip),%ymm3,%ymm3 + + vpsrlq $23,%ymm4,%ymm15 + vpmuludq vec19(%rip),%ymm15,%ymm15 + vpaddq %ymm15,%ymm10,%ymm10 + vpand vecmask23(%rip),%ymm4,%ymm4 + + vpsrlq $29,%ymm10,%ymm15 + vpaddq %ymm15,%ymm11,%ymm11 + vpand vecmask29(%rip),%ymm10,%ymm10 + + // store + vmovdqa %ymm10,0(%rdi) + vmovdqa %ymm11,32(%rdi) + vmovdqa %ymm12,64(%rdi) + vmovdqa %ymm13,96(%rdi) + vmovdqa %ymm0,128(%rdi) + vmovdqa %ymm1,160(%rdi) + vmovdqa %ymm2,192(%rdi) + vmovdqa %ymm3,224(%rdi) + vmovdqa %ymm4,256(%rdi) + + movq 0(%rsp),%r11 + movq 8(%rsp),%r12 + movq 16(%rsp),%r13 + movq 24(%rsp),%r14 + movq 32(%rsp),%r15 + movq 40(%rsp),%rbx + movq 48(%rsp),%rbp + + movq %r11,%rsp + + ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/mont25519.c new file mode 120000 index 0000000000..77cb0d1cc1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/mont25519.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/shared-consts.c new file mode 120000 index 0000000000..69b60ab641 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512-ns9l-maax/shared-consts.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/architectures new file mode 120000 index 0000000000..7a05222575 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/consts_namespace.h new file mode 100644 index 0000000000..a30930effd --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/consts_namespace.h @@ -0,0 +1,21 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define hh_p1 CRYPTO_SHARED_NAMESPACE(hh_p1) +#define hh_p2 CRYPTO_SHARED_NAMESPACE(hh_p2) +#define hh_p3 CRYPTO_SHARED_NAMESPACE(hh_p3) +#define sub_p1 CRYPTO_SHARED_NAMESPACE(sub_p1) +#define sub_p2 CRYPTO_SHARED_NAMESPACE(sub_p2) +#define sub_p3 CRYPTO_SHARED_NAMESPACE(sub_p3) +#define hh_xor CRYPTO_SHARED_NAMESPACE(hh_xor) +#define swap_c CRYPTO_SHARED_NAMESPACE(swap_c) +#define swap_mask CRYPTO_SHARED_NAMESPACE(swap_mask) +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vec608 CRYPTO_SHARED_NAMESPACE(vec608) +#define vecmask52 CRYPTO_SHARED_NAMESPACE(vecmask52) +#define vecmask47 CRYPTO_SHARED_NAMESPACE(vecmask47) +#define a24 CRYPTO_SHARED_NAMESPACE(a24) +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519.h new file mode 120000 index 0000000000..7fc1bee8b5 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519.h @@ -0,0 +1 @@ +../amd64-avx512ifma-ns5l-maax/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_from_base52_5l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_from_base52_5l.c new file mode 120000 index 0000000000..f1e95a942d --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_from_base52_5l.c @@ -0,0 +1 @@ +../amd64-avx512ifma-ns5l-maax/fe25519_from_base52_5l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_to_base52_5l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_to_base52_5l.c new file mode 120000 index 0000000000..57c5069793 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_to_base52_5l.c @@ -0,0 +1 @@ +../amd64-avx512ifma-ns5l-maax/fe25519_to_base52_5l.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/mladder.S new file mode 100644 index 0000000000..d10203d438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/mladder.S @@ -0,0 +1,689 @@ +// linker define mladder +// linker use hh_p1 +// linker use hh_p2 +// linker use hh_p3 +// linker use sub_p1 +// linker use sub_p2 +// linker use sub_p3 +// linker use hh_xor +// linker use swap_c +// linker use swap_mask +// linker use vec19 +// linker use vec608 +// linker use vecmask52 +// linker use vecmask47 + +/* Assembly for Montgomery ladder. */ + +#include "consts_namespace.h" + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(mladder) +.globl CRYPTO_SHARED_NAMESPACE(mladder) +_CRYPTO_SHARED_NAMESPACE(mladder): +CRYPTO_SHARED_NAMESPACE(mladder): + +movq %rsp,%r11 +andq $-32,%rsp +subq $64,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) + +// load +vmovdqa 0(%rdi),%ymm10 +vmovdqa 32(%rdi),%ymm11 +vmovdqa 64(%rdi),%ymm12 +vmovdqa 96(%rdi),%ymm13 +vmovdqa 128(%rdi),%ymm14 + +movq $31,%r15 +movq $6,%rcx + +movb $0,%r8b +movq %rdx,%rax + +.L1: +addq %r15,%rax +movb 0(%rax),%r14b +movq %rdx,%rax + +.L2: +movb %r14b,%bl +shrb %cl,%bl +andb $1,%bl +movb %bl,%r9b +xorb %r8b,%bl +movb %r9b,%r8b + +// ← Swap(,b) +movzbl %bl,%ebx +imul $4,%ebx,%ebx +movl %ebx,56(%rsp) +vpbroadcastd 56(%rsp),%ymm7 +vpaddd swap_c(%rip),%ymm7,%ymm7 +vpand swap_mask(%rip),%ymm7,%ymm7 + +vpermd %ymm10,%ymm7,%ymm10 +vpermd %ymm11,%ymm7,%ymm11 +vpermd %ymm12,%ymm7,%ymm12 +vpermd %ymm13,%ymm7,%ymm13 +vpermd %ymm14,%ymm7,%ymm14 + +// ← H-H() +vpshufd $68,%ymm10,%ymm5 +vpshufd $238,%ymm10,%ymm6 +vpaddq hh_p1(%rip),%ymm5,%ymm5 +vpxor hh_xor(%rip),%ymm6,%ymm6 +vpaddq %ymm5,%ymm6,%ymm0 + +vpshufd $68,%ymm11,%ymm5 +vpshufd $238,%ymm11,%ymm6 +vpaddq hh_p2(%rip),%ymm5,%ymm5 +vpxor hh_xor(%rip),%ymm6,%ymm6 +vpaddq %ymm5,%ymm6,%ymm1 + +vpshufd $68,%ymm12,%ymm5 +vpshufd $238,%ymm12,%ymm6 +vpaddq hh_p2(%rip),%ymm5,%ymm5 +vpxor hh_xor(%rip),%ymm6,%ymm6 +vpaddq %ymm5,%ymm6,%ymm2 + +vpshufd $68,%ymm13,%ymm5 +vpshufd $238,%ymm13,%ymm6 +vpaddq hh_p2(%rip),%ymm5,%ymm5 +vpxor hh_xor(%rip),%ymm6,%ymm6 +vpaddq %ymm5,%ymm6,%ymm3 + +vpshufd $68,%ymm14,%ymm5 +vpshufd $238,%ymm14,%ymm6 +vpaddq hh_p3(%rip),%ymm5,%ymm5 +vpxor hh_xor(%rip),%ymm6,%ymm6 +vpaddq %ymm5,%ymm6,%ymm4 + +vpsrlq $52,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpandq vecmask52(%rip),%ymm3,%ymm3 + +vpsrlq $47,%ymm4,%ymm10 +vpandq vecmask47(%rip),%ymm4,%ymm4 +vpmadd52luq vec19(%rip),%ymm10,%ymm0 + +vpsrlq $52,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpandq vecmask52(%rip),%ymm0,%ymm0 + +vpsrlq $52,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpandq vecmask52(%rip),%ymm1,%ymm1 + +vpsrlq $52,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpandq vecmask52(%rip),%ymm2,%ymm2 + +vpsrlq $52,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpandq vecmask52(%rip),%ymm3,%ymm3 + +// ← Dup() +vpermq $20,%ymm0,%ymm5 +vpermq $20,%ymm1,%ymm6 +vpermq $20,%ymm2,%ymm7 +vpermq $20,%ymm3,%ymm8 +vpermq $20,%ymm4,%ymm9 + +// ← Mul(,) +vpxorq %ymm10,%ymm10,%ymm10 +vpxorq %ymm11,%ymm11,%ymm11 +vpxorq %ymm12,%ymm12,%ymm12 +vpxorq %ymm13,%ymm13,%ymm13 +vpxorq %ymm14,%ymm14,%ymm14 +vpxorq %ymm15,%ymm15,%ymm15 +vpxorq %ymm16,%ymm16,%ymm16 +vpxorq %ymm17,%ymm17,%ymm17 +vpxorq %ymm18,%ymm18,%ymm18 +vpxorq %ymm19,%ymm19,%ymm19 + +vpxorq %ymm25,%ymm25,%ymm25 +vpxorq %ymm26,%ymm26,%ymm26 +vpxorq %ymm27,%ymm27,%ymm27 +vpxorq %ymm28,%ymm28,%ymm28 +vpxorq %ymm29,%ymm29,%ymm29 +vpxorq %ymm30,%ymm30,%ymm30 +vpxorq %ymm31,%ymm31,%ymm31 + +vpmadd52luq %ymm0,%ymm5,%ymm10 +vpmadd52huq %ymm0,%ymm5,%ymm11 + +vpmadd52luq %ymm0,%ymm6,%ymm25 +vpmadd52huq %ymm0,%ymm6,%ymm12 +vpmadd52luq %ymm1,%ymm5,%ymm25 +vpmadd52huq %ymm1,%ymm5,%ymm12 + +vpaddq %ymm25,%ymm11,%ymm11 + +vpmadd52luq %ymm0,%ymm7,%ymm26 +vpmadd52huq %ymm0,%ymm7,%ymm13 +vpmadd52luq %ymm1,%ymm6,%ymm26 +vpmadd52huq %ymm1,%ymm6,%ymm13 +vpmadd52luq %ymm2,%ymm5,%ymm26 +vpmadd52huq %ymm2,%ymm5,%ymm13 + +vpaddq %ymm26,%ymm12,%ymm12 + +vpmadd52luq %ymm0,%ymm8,%ymm27 +vpmadd52huq %ymm0,%ymm8,%ymm14 +vpmadd52luq %ymm1,%ymm7,%ymm27 +vpmadd52huq %ymm1,%ymm7,%ymm14 +vpmadd52luq %ymm2,%ymm6,%ymm27 +vpmadd52huq %ymm2,%ymm6,%ymm14 +vpmadd52luq %ymm3,%ymm5,%ymm27 +vpmadd52huq %ymm3,%ymm5,%ymm14 + +vpaddq %ymm27,%ymm13,%ymm13 + +vpmadd52luq %ymm0,%ymm9,%ymm28 +vpmadd52huq %ymm0,%ymm9,%ymm15 +vpmadd52luq %ymm1,%ymm8,%ymm28 +vpmadd52huq %ymm1,%ymm8,%ymm15 +vpmadd52luq %ymm2,%ymm7,%ymm28 +vpmadd52huq %ymm2,%ymm7,%ymm15 +vpmadd52luq %ymm3,%ymm6,%ymm28 +vpmadd52huq %ymm3,%ymm6,%ymm15 +vpmadd52luq %ymm4,%ymm5,%ymm28 +vpmadd52huq %ymm4,%ymm5,%ymm15 + +vpaddq %ymm28,%ymm14,%ymm14 + +vpmadd52luq %ymm1,%ymm9,%ymm29 +vpmadd52huq %ymm1,%ymm9,%ymm16 +vpmadd52luq %ymm2,%ymm8,%ymm29 +vpmadd52huq %ymm2,%ymm8,%ymm16 +vpmadd52luq %ymm3,%ymm7,%ymm29 +vpmadd52huq %ymm3,%ymm7,%ymm16 +vpmadd52luq %ymm4,%ymm6,%ymm29 +vpmadd52huq %ymm4,%ymm6,%ymm16 + +vpaddq %ymm29,%ymm15,%ymm15 + +vpmadd52luq %ymm2,%ymm9,%ymm30 +vpmadd52huq %ymm2,%ymm9,%ymm17 +vpmadd52luq %ymm3,%ymm8,%ymm30 +vpmadd52huq %ymm3,%ymm8,%ymm17 +vpmadd52luq %ymm4,%ymm7,%ymm30 +vpmadd52huq %ymm4,%ymm7,%ymm17 + +vpaddq %ymm30,%ymm16,%ymm16 + +vpmadd52luq %ymm3,%ymm9,%ymm31 +vpmadd52huq %ymm3,%ymm9,%ymm18 +vpmadd52luq %ymm4,%ymm8,%ymm31 +vpmadd52huq %ymm4,%ymm8,%ymm18 + +vpaddq %ymm31,%ymm17,%ymm17 + +vpmadd52luq %ymm4,%ymm9,%ymm18 +vpmadd52huq %ymm4,%ymm9,%ymm19 + +vpsrlq $52,%ymm15,%ymm22 +vpaddq %ymm22,%ymm16,%ymm16 +vpandq vecmask52(%rip),%ymm15,%ymm15 +vpmadd52luq vec608(%rip),%ymm15,%ymm10 +vpmadd52huq vec608(%rip),%ymm15,%ymm11 + +vpsrlq $52,%ymm16,%ymm22 +vpaddq %ymm22,%ymm17,%ymm17 +vpandq vecmask52(%rip),%ymm16,%ymm16 +vpmadd52luq vec608(%rip),%ymm16,%ymm11 +vpmadd52huq vec608(%rip),%ymm16,%ymm12 + +vpsrlq $52,%ymm17,%ymm22 +vpaddq %ymm22,%ymm18,%ymm18 +vpandq vecmask52(%rip),%ymm17,%ymm17 +vpmadd52luq vec608(%rip),%ymm17,%ymm12 +vpmadd52huq vec608(%rip),%ymm17,%ymm13 + +vpsrlq $52,%ymm18,%ymm22 +vpaddq %ymm22,%ymm19,%ymm19 +vpandq vecmask52(%rip),%ymm18,%ymm18 +vpmadd52luq vec608(%rip),%ymm18,%ymm13 +vpmadd52huq vec608(%rip),%ymm18,%ymm14 + +vpmadd52luq vec608(%rip),%ymm19,%ymm14 + +// ← H-H() +vpshufd $68,%ymm10,%ymm1 +vpshufd $238,%ymm10,%ymm3 +vpaddq hh_p1(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm3,%ymm3 +vpaddq %ymm1,%ymm3,%ymm5 + +vpshufd $68,%ymm11,%ymm1 +vpshufd $238,%ymm11,%ymm3 +vpaddq hh_p2(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm3,%ymm3 +vpaddq %ymm1,%ymm3,%ymm6 + +vpshufd $68,%ymm12,%ymm1 +vpshufd $238,%ymm12,%ymm3 +vpaddq hh_p2(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm3,%ymm3 +vpaddq %ymm1,%ymm3,%ymm7 + +vpshufd $68,%ymm13,%ymm1 +vpshufd $238,%ymm13,%ymm3 +vpaddq hh_p2(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm3,%ymm3 +vpaddq %ymm1,%ymm3,%ymm8 + +vpshufd $68,%ymm14,%ymm1 +vpshufd $238,%ymm14,%ymm3 +vpaddq hh_p3(%rip),%ymm1,%ymm1 +vpxor hh_xor(%rip),%ymm3,%ymm3 +vpaddq %ymm1,%ymm3,%ymm9 + +vpsrlq $52,%ymm8,%ymm21 +vpaddq %ymm21,%ymm9,%ymm9 +vpandq vecmask52(%rip),%ymm8,%ymm8 + +vpsrlq $47,%ymm9,%ymm21 +vpandq vecmask47(%rip),%ymm9,%ymm9 +vpmadd52luq vec19(%rip),%ymm21,%ymm5 + +vpsrlq $52,%ymm5,%ymm21 +vpaddq %ymm21,%ymm6,%ymm6 +vpandq vecmask52(%rip),%ymm5,%ymm5 + +vpsrlq $52,%ymm6,%ymm21 +vpaddq %ymm21,%ymm7,%ymm7 +vpandq vecmask52(%rip),%ymm6,%ymm6 + +vpsrlq $52,%ymm7,%ymm21 +vpaddq %ymm21,%ymm8,%ymm8 +vpandq vecmask52(%rip),%ymm7,%ymm7 + +vpsrlq $52,%ymm8,%ymm21 +vpaddq %ymm21,%ymm9,%ymm9 +vpandq vecmask52(%rip),%ymm8,%ymm8 + +// ← Shuffle() +vpshufd $78,%ymm5,%ymm0 +vpshufd $78,%ymm6,%ymm1 +vpshufd $78,%ymm7,%ymm2 +vpshufd $78,%ymm8,%ymm3 +vpshufd $78,%ymm9,%ymm4 + +// ← Blend(<0,A,1,X1>,,1000) +vpblendd $252,0(%rsi),%ymm0,%ymm0 +vpblendd $252,32(%rsi),%ymm1,%ymm1 +vpblendd $252,64(%rsi),%ymm2,%ymm2 +vpblendd $252,96(%rsi),%ymm3,%ymm3 +vpblendd $252,128(%rsi),%ymm4,%ymm4 + +// ← Sqr() +vpxorq %ymm22,%ymm22,%ymm22 +vpxorq %ymm23,%ymm23,%ymm23 +vpxorq %ymm24,%ymm24,%ymm24 +vpxorq %ymm25,%ymm25,%ymm25 +vpxorq %ymm26,%ymm26,%ymm26 +vpxorq %ymm27,%ymm27,%ymm27 +vpxorq %ymm28,%ymm28,%ymm28 +vpxorq %ymm29,%ymm29,%ymm29 +vpxorq %ymm30,%ymm30,%ymm30 +vpxorq %ymm31,%ymm31,%ymm31 + +vpmadd52luq %ymm5,%ymm5,%ymm22 +vpmadd52huq %ymm5,%ymm5,%ymm23 + +vpxorq %ymm21,%ymm21,%ymm21 +vpmadd52luq %ymm5,%ymm6,%ymm21 +vpmadd52huq %ymm5,%ymm6,%ymm24 +vpaddq %ymm21,%ymm21,%ymm21 +vpaddq %ymm21,%ymm23,%ymm23 +vpaddq %ymm24,%ymm24,%ymm24 + +vpxorq %ymm21,%ymm21,%ymm21 +vpmadd52luq %ymm5,%ymm7,%ymm21 +vpmadd52huq %ymm5,%ymm7,%ymm25 +vpaddq %ymm21,%ymm21,%ymm21 +vpaddq %ymm21,%ymm24,%ymm24 +vpaddq %ymm25,%ymm25,%ymm25 +vpmadd52luq %ymm6,%ymm6,%ymm24 +vpmadd52huq %ymm6,%ymm6,%ymm25 + +vpxorq %ymm21,%ymm21,%ymm21 +vpmadd52luq %ymm5,%ymm8,%ymm21 +vpmadd52huq %ymm5,%ymm8,%ymm26 +vpmadd52luq %ymm6,%ymm7,%ymm21 +vpmadd52huq %ymm6,%ymm7,%ymm26 +vpaddq %ymm21,%ymm21,%ymm21 +vpaddq %ymm21,%ymm25,%ymm25 +vpaddq %ymm26,%ymm26,%ymm26 + +vpxorq %ymm21,%ymm21,%ymm21 +vpmadd52luq %ymm5,%ymm9,%ymm21 +vpmadd52huq %ymm5,%ymm9,%ymm27 +vpmadd52luq %ymm6,%ymm8,%ymm21 +vpmadd52huq %ymm6,%ymm8,%ymm27 +vpaddq %ymm21,%ymm21,%ymm21 +vpaddq %ymm21,%ymm26,%ymm26 +vpaddq %ymm27,%ymm27,%ymm27 +vpmadd52luq %ymm7,%ymm7,%ymm26 +vpmadd52huq %ymm7,%ymm7,%ymm27 + +vpxorq %ymm21,%ymm21,%ymm21 +vpmadd52luq %ymm6,%ymm9,%ymm21 +vpmadd52huq %ymm6,%ymm9,%ymm28 +vpmadd52luq %ymm7,%ymm8,%ymm21 +vpmadd52huq %ymm7,%ymm8,%ymm28 +vpaddq %ymm21,%ymm21,%ymm21 +vpaddq %ymm21,%ymm27,%ymm27 +vpaddq %ymm28,%ymm28,%ymm28 + +vpxorq %ymm21,%ymm21,%ymm21 +vpmadd52luq %ymm7,%ymm9,%ymm21 +vpmadd52huq %ymm7,%ymm9,%ymm29 +vpaddq %ymm21,%ymm21,%ymm21 +vpaddq %ymm21,%ymm28,%ymm28 +vpaddq %ymm29,%ymm29,%ymm29 +vpmadd52luq %ymm8,%ymm8,%ymm28 +vpmadd52huq %ymm8,%ymm8,%ymm29 + +vpxorq %ymm21,%ymm21,%ymm21 +vpmadd52luq %ymm8,%ymm9,%ymm21 +vpmadd52huq %ymm8,%ymm9,%ymm30 +vpaddq %ymm21,%ymm21,%ymm21 +vpaddq %ymm21,%ymm29,%ymm29 +vpaddq %ymm30,%ymm30,%ymm30 + +vpmadd52luq %ymm9,%ymm9,%ymm30 +vpmadd52huq %ymm9,%ymm9,%ymm31 + +vpsrlq $52,%ymm27,%ymm21 +vpaddq %ymm21,%ymm28,%ymm28 +vpandq vecmask52(%rip),%ymm27,%ymm27 +vpmadd52luq vec608(%rip),%ymm27,%ymm22 +vpmadd52huq vec608(%rip),%ymm27,%ymm23 + +vpsrlq $52,%ymm28,%ymm21 +vpaddq %ymm21,%ymm29,%ymm29 +vpandq vecmask52(%rip),%ymm28,%ymm28 +vpmadd52luq vec608(%rip),%ymm28,%ymm23 +vpmadd52huq vec608(%rip),%ymm28,%ymm24 + +vpsrlq $52,%ymm29,%ymm21 +vpaddq %ymm21,%ymm30,%ymm30 +vpandq vecmask52(%rip),%ymm29,%ymm29 +vpmadd52luq vec608(%rip),%ymm29,%ymm24 +vpmadd52huq vec608(%rip),%ymm29,%ymm25 + +vpsrlq $52,%ymm30,%ymm21 +vpaddq %ymm21,%ymm31,%ymm31 +vpandq vecmask52(%rip),%ymm30,%ymm30 +vpmadd52luq vec608(%rip),%ymm30,%ymm25 +vpmadd52huq vec608(%rip),%ymm30,%ymm26 + +vpmadd52luq vec608(%rip),%ymm31,%ymm26 + +vpsrlq $52,%ymm25,%ymm21 +vpaddq %ymm21,%ymm26,%ymm26 +vpandq vecmask52(%rip),%ymm25,%ymm25 + +vpsrlq $47,%ymm26,%ymm21 +vpandq vecmask47(%rip),%ymm26,%ymm26 +vpmadd52luq vec19(%rip),%ymm21,%ymm22 + +vpsrlq $52,%ymm22,%ymm21 +vpaddq %ymm21,%ymm23,%ymm23 +vpandq vecmask52(%rip),%ymm22,%ymm10 + +vpsrlq $52,%ymm23,%ymm21 +vpaddq %ymm21,%ymm24,%ymm24 +vpandq vecmask52(%rip),%ymm23,%ymm11 + +vpsrlq $52,%ymm24,%ymm21 +vpaddq %ymm21,%ymm25,%ymm25 +vpandq vecmask52(%rip),%ymm24,%ymm12 + +vpsrlq $52,%ymm25,%ymm21 +vpaddq %ymm21,%ymm26,%ymm14 +vpandq vecmask52(%rip),%ymm25,%ymm13 + +// ← Shuffle() +vpshufd $78,%ymm10,%ymm15 +vpshufd $78,%ymm11,%ymm16 +vpshufd $78,%ymm12,%ymm17 +vpshufd $78,%ymm13,%ymm18 +vpshufd $78,%ymm14,%ymm19 + +// ← Blend(,,0111) +vpblendd $3,%ymm5,%ymm10,%ymm5 +vpblendd $3,%ymm6,%ymm11,%ymm6 +vpblendd $3,%ymm7,%ymm12,%ymm7 +vpblendd $3,%ymm8,%ymm13,%ymm8 +vpblendd $3,%ymm9,%ymm14,%ymm9 + +// ← Sub(,) +vpaddq sub_p1(%rip),%ymm10,%ymm10 +vpaddq sub_p2(%rip),%ymm11,%ymm11 +vpaddq sub_p2(%rip),%ymm12,%ymm12 +vpaddq sub_p2(%rip),%ymm13,%ymm13 +vpaddq sub_p3(%rip),%ymm14,%ymm14 +vpsubq %ymm15,%ymm10,%ymm10 +vpsubq %ymm16,%ymm11,%ymm11 +vpsubq %ymm17,%ymm12,%ymm12 +vpsubq %ymm18,%ymm13,%ymm13 +vpsubq %ymm19,%ymm14,%ymm14 + +// ← Mul(,) +vpxorq %ymm20,%ymm20,%ymm20 +vpxorq %ymm21,%ymm21,%ymm21 +vpxorq %ymm22,%ymm22,%ymm22 +vpxorq %ymm23,%ymm23,%ymm23 +vpxorq %ymm24,%ymm24,%ymm24 +vpxorq %ymm15,%ymm15,%ymm15 +vpxorq %ymm16,%ymm16,%ymm16 +vpxorq %ymm17,%ymm17,%ymm17 +vpxorq %ymm18,%ymm18,%ymm18 +vpxorq %ymm19,%ymm19,%ymm19 + +vpxorq %ymm25,%ymm25,%ymm25 +vpxorq %ymm26,%ymm26,%ymm26 +vpxorq %ymm27,%ymm27,%ymm27 +vpxorq %ymm28,%ymm28,%ymm28 +vpxorq %ymm29,%ymm29,%ymm29 +vpxorq %ymm30,%ymm30,%ymm30 +vpxorq %ymm31,%ymm31,%ymm31 + +vpmadd52luq %ymm0,%ymm5,%ymm20 +vpmadd52huq %ymm0,%ymm5,%ymm21 + +vpmadd52luq %ymm0,%ymm6,%ymm25 +vpmadd52huq %ymm0,%ymm6,%ymm22 +vpmadd52luq %ymm1,%ymm5,%ymm25 +vpmadd52huq %ymm1,%ymm5,%ymm22 + +vpaddq %ymm25,%ymm21,%ymm21 + +vpmadd52luq %ymm0,%ymm7,%ymm26 +vpmadd52huq %ymm0,%ymm7,%ymm23 +vpmadd52luq %ymm1,%ymm6,%ymm26 +vpmadd52huq %ymm1,%ymm6,%ymm23 +vpmadd52luq %ymm2,%ymm5,%ymm26 +vpmadd52huq %ymm2,%ymm5,%ymm23 + +vpaddq %ymm26,%ymm22,%ymm22 + +vpmadd52luq %ymm0,%ymm8,%ymm27 +vpmadd52huq %ymm0,%ymm8,%ymm24 +vpmadd52luq %ymm1,%ymm7,%ymm27 +vpmadd52huq %ymm1,%ymm7,%ymm24 +vpmadd52luq %ymm2,%ymm6,%ymm27 +vpmadd52huq %ymm2,%ymm6,%ymm24 +vpmadd52luq %ymm3,%ymm5,%ymm27 +vpmadd52huq %ymm3,%ymm5,%ymm24 + +vpaddq %ymm27,%ymm23,%ymm23 + +vpmadd52luq %ymm0,%ymm9,%ymm28 +vpmadd52huq %ymm0,%ymm9,%ymm15 +vpmadd52luq %ymm1,%ymm8,%ymm28 +vpmadd52huq %ymm1,%ymm8,%ymm15 +vpmadd52luq %ymm2,%ymm7,%ymm28 +vpmadd52huq %ymm2,%ymm7,%ymm15 +vpmadd52luq %ymm3,%ymm6,%ymm28 +vpmadd52huq %ymm3,%ymm6,%ymm15 +vpmadd52luq %ymm4,%ymm5,%ymm28 +vpmadd52huq %ymm4,%ymm5,%ymm15 + +vpaddq %ymm28,%ymm24,%ymm24 + +vpmadd52luq %ymm1,%ymm9,%ymm29 +vpmadd52huq %ymm1,%ymm9,%ymm16 +vpmadd52luq %ymm2,%ymm8,%ymm29 +vpmadd52huq %ymm2,%ymm8,%ymm16 +vpmadd52luq %ymm3,%ymm7,%ymm29 +vpmadd52huq %ymm3,%ymm7,%ymm16 +vpmadd52luq %ymm4,%ymm6,%ymm29 +vpmadd52huq %ymm4,%ymm6,%ymm16 + +vpaddq %ymm29,%ymm15,%ymm15 + +vpmadd52luq %ymm2,%ymm9,%ymm30 +vpmadd52huq %ymm2,%ymm9,%ymm17 +vpmadd52luq %ymm3,%ymm8,%ymm30 +vpmadd52huq %ymm3,%ymm8,%ymm17 +vpmadd52luq %ymm4,%ymm7,%ymm30 +vpmadd52huq %ymm4,%ymm7,%ymm17 + +vpaddq %ymm30,%ymm16,%ymm16 + +vpmadd52luq %ymm3,%ymm9,%ymm31 +vpmadd52huq %ymm3,%ymm9,%ymm18 +vpmadd52luq %ymm4,%ymm8,%ymm31 +vpmadd52huq %ymm4,%ymm8,%ymm18 + +vpaddq %ymm31,%ymm17,%ymm17 + +vpmadd52luq %ymm4,%ymm9,%ymm18 +vpmadd52huq %ymm4,%ymm9,%ymm19 + +vpsrlq $52,%ymm15,%ymm31 +vpaddq %ymm31,%ymm16,%ymm16 +vpandq vecmask52(%rip),%ymm15,%ymm15 +vpmadd52luq vec608(%rip),%ymm15,%ymm20 +vpmadd52huq vec608(%rip),%ymm15,%ymm21 + +vpsrlq $52,%ymm16,%ymm31 +vpaddq %ymm31,%ymm17,%ymm17 +vpandq vecmask52(%rip),%ymm16,%ymm16 +vpmadd52luq vec608(%rip),%ymm16,%ymm21 +vpmadd52huq vec608(%rip),%ymm16,%ymm22 + +vpsrlq $52,%ymm17,%ymm31 +vpaddq %ymm31,%ymm18,%ymm18 +vpandq vecmask52(%rip),%ymm17,%ymm17 +vpmadd52luq vec608(%rip),%ymm17,%ymm22 +vpmadd52huq vec608(%rip),%ymm17,%ymm23 + +vpsrlq $52,%ymm18,%ymm31 +vpaddq %ymm31,%ymm19,%ymm19 +vpandq vecmask52(%rip),%ymm18,%ymm18 +vpmadd52luq vec608(%rip),%ymm18,%ymm23 +vpmadd52huq vec608(%rip),%ymm18,%ymm24 + +vpmadd52luq vec608(%rip),%ymm19,%ymm24 + +// ← Add(,) +vpaddq %ymm20,%ymm20,%ymm0 +vpaddq %ymm21,%ymm21,%ymm1 +vpaddq %ymm22,%ymm22,%ymm2 +vpaddq %ymm23,%ymm23,%ymm3 +vpaddq %ymm24,%ymm24,%ymm4 + +// <*,T19,*,*> ← Shuffle() +vpshufd $78,%ymm0,%ymm0 +vpshufd $78,%ymm1,%ymm1 +vpshufd $78,%ymm2,%ymm2 +vpshufd $78,%ymm3,%ymm3 +vpshufd $78,%ymm4,%ymm4 + +// <*,Z2,*,*> ← Add(,<*,T19,*,*>) +vpaddq %ymm20,%ymm0,%ymm0 +vpaddq %ymm21,%ymm1,%ymm1 +vpaddq %ymm22,%ymm2,%ymm2 +vpaddq %ymm23,%ymm3,%ymm3 +vpaddq %ymm24,%ymm4,%ymm4 + +// ← Blend(,<*,Z2,*,*>,0100) +vpblendd $3,%ymm10,%ymm0,%ymm0 +vpblendd $3,%ymm11,%ymm1,%ymm1 +vpblendd $3,%ymm12,%ymm2,%ymm2 +vpblendd $3,%ymm13,%ymm3,%ymm3 +vpblendd $3,%ymm14,%ymm4,%ymm4 + +// ← Blend(,,0011) +movl $15,%ebx +kmovw %ebx,%k1 +vpblendmd %ymm0,%ymm20,%ymm10{%k1} +vpblendmd %ymm1,%ymm21,%ymm11{%k1} +vpblendmd %ymm2,%ymm22,%ymm12{%k1} +vpblendmd %ymm3,%ymm23,%ymm13{%k1} +vpblendmd %ymm4,%ymm24,%ymm14{%k1} + +subb $1,%cl +cmpb $0,%cl +jge .L2 + +movb $7,%cl +subq $1,%r15 +cmpq $0,%r15 +jge .L1 + +vpsrlq $52,%ymm13,%ymm22 +vpaddq %ymm22,%ymm14,%ymm14 +vpandq vecmask52(%rip),%ymm13,%ymm13 + +vpsrlq $47,%ymm14,%ymm22 +vpandq vecmask47(%rip),%ymm14,%ymm14 +vpmadd52luq vec19(%rip),%ymm22,%ymm10 + +vpsrlq $52,%ymm10,%ymm22 +vpaddq %ymm22,%ymm11,%ymm11 +vpandq vecmask52(%rip),%ymm10,%ymm10 + +vpsrlq $52,%ymm11,%ymm22 +vpaddq %ymm22,%ymm12,%ymm12 +vpandq vecmask52(%rip),%ymm11,%ymm11 + +vpsrlq $52,%ymm12,%ymm22 +vpaddq %ymm22,%ymm13,%ymm13 +vpandq vecmask52(%rip),%ymm12,%ymm12 + +vpsrlq $52,%ymm13,%ymm22 +vpaddq %ymm22,%ymm14,%ymm14 +vpandq vecmask52(%rip),%ymm13,%ymm13 + +// store +vmovdqa %ymm10,0(%rdi) +vmovdqa %ymm11,32(%rdi) +vmovdqa %ymm12,64(%rdi) +vmovdqa %ymm13,96(%rdi) +vmovdqa %ymm14,128(%rdi) + +movq 0(%rsp), %r11 +movq 8(%rsp), %r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/mont25519.c new file mode 100644 index 0000000000..6fa18daad1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/mont25519.c @@ -0,0 +1,42 @@ +#include "randombytes.h" +#include "crypto_nP.h" +#include "fe25519.h" +#include "crypto_uint64_vec4x1.h" + +#define mladder CRYPTO_SHARED_NAMESPACE(mladder) +extern void mladder(crypto_uint64_vec4x1 *,crypto_uint64_vec4x1 *,const unsigned char *); + +void crypto_nP(unsigned char *r, + const unsigned char *s, + const unsigned char *p) +{ + unsigned char e[32]; + int i; + + crypto_uint64_vec4x1 a[5] = {{0}}; + crypto_uint64_vec4x1 b[5] = {{0}}; + fe25519_base52_5l u,v; + fe25519 z[2]; + + for(i=0;i<32;i++) e[i] = s[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fe25519_unpack(z,p); + fe25519_to_base52_5l(&u,z); + + b[0][0] = b[0][3] = a[0][2] = 1; a[0][1] = 486662; + + for (i=0;i<5;i++) {b[i][2] = u.l[i]; a[i][3] = u.l[i];} + + mladder(b,a,e); + + for (i=0;i<5;i++) {u.l[i] = b[i][0]; v.l[i] = b[i][1];} + + fe25519_from_base52_5l(z,&u); + fe25519_from_base52_5l(z+1,&v); + fe25519_invert(z+1, z+1); + fe25519_mul(z, z, z+1); + fe25519_pack(r, z); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/shared-consts.c new file mode 100644 index 0000000000..330fb4a616 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-hey5l-maax/shared-consts.c @@ -0,0 +1,35 @@ +// linker define hh_p1 +// linker define hh_p2 +// linker define hh_p3 +// linker define sub_p1 +// linker define sub_p2 +// linker define sub_p3 +// linker define hh_xor +// linker define swap_c +// linker define swap_mask +// linker define vec19 +// linker define vec608 +// linker define vecmask52 +// linker define vecmask47 +// linker define a24 +// linker define mask63 + +#include "consts_namespace.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" + +const crypto_uint64 hh_p1[] = { 0x0,0x3FFFFFFFFFFFB401,0x0,0x3FFFFFFFFFFFB401 }; +const crypto_uint64 hh_p2[] = { 0x0,0x3FFFFFFFFFFFFC01,0x0,0x3FFFFFFFFFFFFC01 }; +const crypto_uint64 hh_p3[] = { 0x0,0x1FFFFFFFFFFFC01,0x0,0x1FFFFFFFFFFFC01 }; +const crypto_uint64 sub_p1[] = { 0x3FFFFFFFFFFFB400,0x0,0x0,0x0 }; +const crypto_uint64 sub_p2[] = { 0x3FFFFFFFFFFFFC00,0x0,0x0,0x0 }; +const crypto_uint64 sub_p3[] = { 0x1FFFFFFFFFFFC00,0x0,0x0,0x0 }; +const crypto_uint64 hh_xor[] = { 0,-1,0,-1 }; +const crypto_uint32 swap_c[] = { 0,1,2,3,4,5,6,7 }; +const crypto_uint32 swap_mask[] = { 7,7,7,7,7,7,7,7 }; +const crypto_uint64 vec19[] = { 19,19,19,19 }; +const crypto_uint64 vec608[] = { 608,608,608,608 }; +const crypto_uint64 vecmask52[] = { 0xFFFFFFFFFFFFF,0xFFFFFFFFFFFFF,0xFFFFFFFFFFFFF,0xFFFFFFFFFFFFF }; +const crypto_uint64 vecmask47[] = { 0x7FFFFFFFFFFF,0x7FFFFFFFFFFF,0x7FFFFFFFFFFF,0x7FFFFFFFFFFF }; +const crypto_uint64 a24[] = { 0,121666,0,0 }; +const crypto_uint64 mask63[] = { 0x7FFFFFFFFFFFFFFF }; diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/architectures new file mode 120000 index 0000000000..7a05222575 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-avx512ifma-5l-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/consts_namespace.h new file mode 100644 index 0000000000..b377c81492 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/consts_namespace.h @@ -0,0 +1,23 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define hh1_p1 CRYPTO_SHARED_NAMESPACE(hh1_p1) +#define hh1_p2 CRYPTO_SHARED_NAMESPACE(hh1_p2) +#define hh1_p3 CRYPTO_SHARED_NAMESPACE(hh1_p3) +#define h2h_p1 CRYPTO_SHARED_NAMESPACE(h2h_p1) +#define h2h_p2 CRYPTO_SHARED_NAMESPACE(h2h_p2) +#define h2h_p3 CRYPTO_SHARED_NAMESPACE(h2h_p3) +#define hh1_xor CRYPTO_SHARED_NAMESPACE(hh1_xor) +#define h2h_xor CRYPTO_SHARED_NAMESPACE(h2h_xor) +#define swap_c CRYPTO_SHARED_NAMESPACE(swap_c) +#define swap_mask CRYPTO_SHARED_NAMESPACE(swap_mask) +#define h2h_mask CRYPTO_SHARED_NAMESPACE(h2h_mask) +#define vec19 CRYPTO_SHARED_NAMESPACE(vec19) +#define vec608 CRYPTO_SHARED_NAMESPACE(vec608) +#define vecmask52 CRYPTO_SHARED_NAMESPACE(vecmask52) +#define vecmask47 CRYPTO_SHARED_NAMESPACE(vecmask47) +#define a24 CRYPTO_SHARED_NAMESPACE(a24) +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +#endif //ifndef CONSTS_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/crypto_uint64_vec4x1.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/crypto_uint64_vec4x1.h new file mode 120000 index 0000000000..78de5ef438 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/crypto_uint64_vec4x1.h @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/crypto_uint64_vec4x1.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519.h new file mode 100644 index 0000000000..a361eb67bf --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519.h @@ -0,0 +1,45 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_base52_5l CRYPTO_NAMESPACE(fe25519_base52_5l) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_square CRYPTO_SHARED_NAMESPACE(fe25519_square) +#define fe25519_nsquare CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) +#define fe25519_to_base52_5l CRYPTO_NAMESPACE(fe25519_to_base_52_5l) +#define fe25519_from_base52_5l CRYPTO_NAMESPACE(fe25519_from_base52_5l) + +typedef struct +{ + unsigned long long l[4]; +} +fe25519; + +typedef struct { + unsigned long long l[5]; +} +fe25519_base52_5l; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_square(fe25519 *r, const fe25519 *x); + +void fe25519_nsquare(fe25519 *r, const fe25519 *x, long long n); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +void fe25519_to_base52_5l(fe25519_base52_5l *r, const fe25519 *x); + +void fe25519_from_base52_5l(fe25519 *r, const fe25519_base52_5l *x); + +#endif diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_from_base52_5l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_from_base52_5l.c new file mode 100644 index 0000000000..929a1d16ed --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_from_base52_5l.c @@ -0,0 +1,11 @@ +// linker define fe25519_from_base52_5l + +#include "fe25519.h" + +void fe25519_from_base52_5l(fe25519 *r, const fe25519_base52_5l *x) { + + r->l[0] = ((x->l[0] & 0x000FFFFFFFFFFFFF)) | ((x->l[1] & 0x0000000000000FFF) << 52); + r->l[1] = ((x->l[1] & 0x000FFFFFFFFFF000) >> 12) | ((x->l[2] & 0x0000000000FFFFFF) << 40); + r->l[2] = ((x->l[2] & 0x000FFFFFFF000000) >> 24) | ((x->l[3] & 0x0000000FFFFFFFFF) << 28); + r->l[3] = ((x->l[3] & 0x000FFFF000000000) >> 36) | ((x->l[4] & 0x0000FFFFFFFFFFFF) << 16); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_pack.c new file mode 120000 index 0000000000..e85edc7563 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_pack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_to_base52_5l.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_to_base52_5l.c new file mode 100644 index 0000000000..29a03a52a5 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_to_base52_5l.c @@ -0,0 +1,12 @@ +// linker define fe25519_to_base_52_5l + +#include "fe25519.h" + +void fe25519_to_base52_5l(fe25519_base52_5l *r, const fe25519 *x) { + + r->l[0] = ((x->l[0] & 0x000FFFFFFFFFFFFF)); + r->l[1] = ((x->l[0] & 0xFFF0000000000000) >> 52) | ((x->l[1] & 0x000000FFFFFFFFFF) << 12); + r->l[2] = ((x->l[1] & 0xFFFFFF0000000000) >> 40) | ((x->l[2] & 0x000000000FFFFFFF) << 24); + r->l[3] = ((x->l[2] & 0xFFFFFFFFF0000000) >> 28) | ((x->l[3] & 0x000000000000FFFF) << 36); + r->l[4] = ((x->l[3] & 0x7FFFFFFFFFFF0000) >> 16); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_unpack.c new file mode 120000 index 0000000000..591b9efdfb --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../amd64-avx2-ns9l-maa4/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/implementors new file mode 120000 index 0000000000..97ee3ad240 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa5/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/mladder.S new file mode 100644 index 0000000000..176f27c249 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/mladder.S @@ -0,0 +1,688 @@ +// linker define mladder +// linker use hh1_p1 +// linker use hh1_p2 +// linker use hh1_p3 +// linker use h2h_p1 +// linker use h2h_p2 +// linker use h2h_p3 +// linker use hh1_xor +// linker use h2h_xor +// linker use swap_c +// linker use swap_mask +// linker use h2h_mask +// linker use vec19 +// linker use vec608 +// linker use vecmask52 +// linker use vecmask47 +// linker use a24 + +/* Assembly for Montgomery ladder. */ + +#include "consts_namespace.h" + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(mladder) +.globl CRYPTO_SHARED_NAMESPACE(mladder) +_CRYPTO_SHARED_NAMESPACE(mladder): +CRYPTO_SHARED_NAMESPACE(mladder): + +movq %rsp,%r11 +andq $-32,%rsp +subq $64,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) + +// load +vmovdqa 0(%rdi),%ymm10 +vmovdqa 32(%rdi),%ymm11 +vmovdqa 64(%rdi),%ymm12 +vmovdqa 96(%rdi),%ymm13 +vmovdqa 128(%rdi),%ymm14 + +movq $31,%r15 +movq $6,%rcx + +movb $0,%r8b +movq %rdx,%rax + +.L1: +addq %r15,%rax +movb 0(%rax),%r14b +movq %rdx,%rax + +.L2: +movb %r14b,%bl +shrb %cl,%bl +andb $1,%bl +movb %bl,%r9b +xorb %r8b,%bl +movb %r9b,%r8b + +// ← Swap(,b) +movzbl %bl,%ebx +imul $4,%ebx,%ebx +movl %ebx,56(%rsp) +vpbroadcastd 56(%rsp),%ymm7 +vpaddd swap_c(%rip),%ymm7,%ymm7 +vpand swap_mask(%rip),%ymm7,%ymm7 + +vpermd %ymm10,%ymm7,%ymm10 +vpermd %ymm11,%ymm7,%ymm11 +vpermd %ymm12,%ymm7,%ymm12 +vpermd %ymm13,%ymm7,%ymm13 +vpermd %ymm14,%ymm7,%ymm14 + +// ← H-H1() +vpshufd $68,%ymm10,%ymm5 +vpshufd $238,%ymm10,%ymm6 +vpaddq hh1_p1(%rip),%ymm5,%ymm5 +vpxor hh1_xor(%rip),%ymm6,%ymm6 +vpaddq %ymm5,%ymm6,%ymm0 + +vpshufd $68,%ymm11,%ymm5 +vpshufd $238,%ymm11,%ymm6 +vpaddq hh1_p2(%rip),%ymm5,%ymm5 +vpxor hh1_xor(%rip),%ymm6,%ymm6 +vpaddq %ymm5,%ymm6,%ymm1 + +vpshufd $68,%ymm12,%ymm5 +vpshufd $238,%ymm12,%ymm6 +vpaddq hh1_p2(%rip),%ymm5,%ymm5 +vpxor hh1_xor(%rip),%ymm6,%ymm6 +vpaddq %ymm5,%ymm6,%ymm2 + +vpshufd $68,%ymm13,%ymm5 +vpshufd $238,%ymm13,%ymm6 +vpaddq hh1_p2(%rip),%ymm5,%ymm5 +vpxor hh1_xor(%rip),%ymm6,%ymm6 +vpaddq %ymm5,%ymm6,%ymm3 + +vpshufd $68,%ymm14,%ymm5 +vpshufd $238,%ymm14,%ymm6 +vpaddq hh1_p3(%rip),%ymm5,%ymm5 +vpxor hh1_xor(%rip),%ymm6,%ymm6 +vpaddq %ymm5,%ymm6,%ymm4 + +vpsrlq $52,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpandq vecmask52(%rip),%ymm3,%ymm3 + +vpsrlq $47,%ymm4,%ymm10 +vpandq vecmask47(%rip),%ymm4,%ymm4 +vpmadd52luq vec19(%rip),%ymm10,%ymm0 + +vpsrlq $52,%ymm0,%ymm10 +vpaddq %ymm10,%ymm1,%ymm1 +vpandq vecmask52(%rip),%ymm0,%ymm0 + +vpsrlq $52,%ymm1,%ymm10 +vpaddq %ymm10,%ymm2,%ymm2 +vpandq vecmask52(%rip),%ymm1,%ymm1 + +vpsrlq $52,%ymm2,%ymm10 +vpaddq %ymm10,%ymm3,%ymm3 +vpandq vecmask52(%rip),%ymm2,%ymm2 + +vpsrlq $52,%ymm3,%ymm10 +vpaddq %ymm10,%ymm4,%ymm4 +vpandq vecmask52(%rip),%ymm3,%ymm3 + +// ← Dup() +vpermq $68,%ymm0,%ymm5 +vpermq $68,%ymm1,%ymm6 +vpermq $68,%ymm2,%ymm7 +vpermq $68,%ymm3,%ymm8 +vpermq $68,%ymm4,%ymm9 + +// ← Mul(,) +vpxorq %ymm10,%ymm10,%ymm10 +vpxorq %ymm11,%ymm11,%ymm11 +vpxorq %ymm12,%ymm12,%ymm12 +vpxorq %ymm13,%ymm13,%ymm13 +vpxorq %ymm14,%ymm14,%ymm14 +vpxorq %ymm15,%ymm15,%ymm15 +vpxorq %ymm16,%ymm16,%ymm16 +vpxorq %ymm17,%ymm17,%ymm17 +vpxorq %ymm18,%ymm18,%ymm18 +vpxorq %ymm19,%ymm19,%ymm19 + +vpxorq %ymm25,%ymm25,%ymm25 +vpxorq %ymm26,%ymm26,%ymm26 +vpxorq %ymm27,%ymm27,%ymm27 +vpxorq %ymm28,%ymm28,%ymm28 +vpxorq %ymm29,%ymm29,%ymm29 +vpxorq %ymm30,%ymm30,%ymm30 +vpxorq %ymm31,%ymm31,%ymm31 + +vpmadd52luq %ymm0,%ymm5,%ymm10 +vpmadd52huq %ymm0,%ymm5,%ymm11 + +vpmadd52luq %ymm0,%ymm6,%ymm25 +vpmadd52huq %ymm0,%ymm6,%ymm12 +vpmadd52luq %ymm1,%ymm5,%ymm25 +vpmadd52huq %ymm1,%ymm5,%ymm12 + +vpaddq %ymm25,%ymm11,%ymm11 + +vpmadd52luq %ymm0,%ymm7,%ymm26 +vpmadd52huq %ymm0,%ymm7,%ymm13 +vpmadd52luq %ymm1,%ymm6,%ymm26 +vpmadd52huq %ymm1,%ymm6,%ymm13 +vpmadd52luq %ymm2,%ymm5,%ymm26 +vpmadd52huq %ymm2,%ymm5,%ymm13 + +vpaddq %ymm26,%ymm12,%ymm12 + +vpmadd52luq %ymm0,%ymm8,%ymm27 +vpmadd52huq %ymm0,%ymm8,%ymm14 +vpmadd52luq %ymm1,%ymm7,%ymm27 +vpmadd52huq %ymm1,%ymm7,%ymm14 +vpmadd52luq %ymm2,%ymm6,%ymm27 +vpmadd52huq %ymm2,%ymm6,%ymm14 +vpmadd52luq %ymm3,%ymm5,%ymm27 +vpmadd52huq %ymm3,%ymm5,%ymm14 + +vpaddq %ymm27,%ymm13,%ymm13 + +vpmadd52luq %ymm0,%ymm9,%ymm28 +vpmadd52huq %ymm0,%ymm9,%ymm15 +vpmadd52luq %ymm1,%ymm8,%ymm28 +vpmadd52huq %ymm1,%ymm8,%ymm15 +vpmadd52luq %ymm2,%ymm7,%ymm28 +vpmadd52huq %ymm2,%ymm7,%ymm15 +vpmadd52luq %ymm3,%ymm6,%ymm28 +vpmadd52huq %ymm3,%ymm6,%ymm15 +vpmadd52luq %ymm4,%ymm5,%ymm28 +vpmadd52huq %ymm4,%ymm5,%ymm15 + +vpaddq %ymm28,%ymm14,%ymm14 + +vpmadd52luq %ymm1,%ymm9,%ymm29 +vpmadd52huq %ymm1,%ymm9,%ymm16 +vpmadd52luq %ymm2,%ymm8,%ymm29 +vpmadd52huq %ymm2,%ymm8,%ymm16 +vpmadd52luq %ymm3,%ymm7,%ymm29 +vpmadd52huq %ymm3,%ymm7,%ymm16 +vpmadd52luq %ymm4,%ymm6,%ymm29 +vpmadd52huq %ymm4,%ymm6,%ymm16 + +vpaddq %ymm29,%ymm15,%ymm15 + +vpmadd52luq %ymm2,%ymm9,%ymm30 +vpmadd52huq %ymm2,%ymm9,%ymm17 +vpmadd52luq %ymm3,%ymm8,%ymm30 +vpmadd52huq %ymm3,%ymm8,%ymm17 +vpmadd52luq %ymm4,%ymm7,%ymm30 +vpmadd52huq %ymm4,%ymm7,%ymm17 + +vpaddq %ymm30,%ymm16,%ymm16 + +vpmadd52luq %ymm3,%ymm9,%ymm31 +vpmadd52huq %ymm3,%ymm9,%ymm18 +vpmadd52luq %ymm4,%ymm8,%ymm31 +vpmadd52huq %ymm4,%ymm8,%ymm18 + +vpaddq %ymm31,%ymm17,%ymm17 + +vpmadd52luq %ymm4,%ymm9,%ymm18 +vpmadd52huq %ymm4,%ymm9,%ymm19 + +vpsrlq $52,%ymm15,%ymm22 +vpaddq %ymm22,%ymm16,%ymm16 +vpandq vecmask52(%rip),%ymm15,%ymm15 +vpmadd52luq vec608(%rip),%ymm15,%ymm10 +vpmadd52huq vec608(%rip),%ymm15,%ymm11 + +vpsrlq $52,%ymm16,%ymm22 +vpaddq %ymm22,%ymm17,%ymm17 +vpandq vecmask52(%rip),%ymm16,%ymm16 +vpmadd52luq vec608(%rip),%ymm16,%ymm11 +vpmadd52huq vec608(%rip),%ymm16,%ymm12 + +vpsrlq $52,%ymm17,%ymm22 +vpaddq %ymm22,%ymm18,%ymm18 +vpandq vecmask52(%rip),%ymm17,%ymm17 +vpmadd52luq vec608(%rip),%ymm17,%ymm12 +vpmadd52huq vec608(%rip),%ymm17,%ymm13 + +vpsrlq $52,%ymm18,%ymm22 +vpaddq %ymm22,%ymm19,%ymm19 +vpandq vecmask52(%rip),%ymm18,%ymm18 +vpmadd52luq vec608(%rip),%ymm18,%ymm13 +vpmadd52huq vec608(%rip),%ymm18,%ymm14 + +vpmadd52luq vec608(%rip),%ymm19,%ymm14 + +// ← H2-H() +vpshufd $68,%ymm10,%ymm1 +vpand h2h_mask(%rip),%ymm1,%ymm1 +vpshufd $238,%ymm10,%ymm3 +vpaddq h2h_p1(%rip),%ymm1,%ymm1 +vpxor h2h_xor(%rip),%ymm3,%ymm3 +vpaddq %ymm1,%ymm3,%ymm5 + +vpshufd $68,%ymm11,%ymm1 +vpand h2h_mask(%rip),%ymm1,%ymm1 +vpshufd $238,%ymm11,%ymm3 +vpaddq h2h_p2(%rip),%ymm1,%ymm1 +vpxor h2h_xor(%rip),%ymm3,%ymm3 +vpaddq %ymm1,%ymm3,%ymm6 + +vpshufd $68,%ymm12,%ymm1 +vpand h2h_mask(%rip),%ymm1,%ymm1 +vpshufd $238,%ymm12,%ymm3 +vpaddq h2h_p2(%rip),%ymm1,%ymm1 +vpxor h2h_xor(%rip),%ymm3,%ymm3 +vpaddq %ymm1,%ymm3,%ymm7 + +vpshufd $68,%ymm13,%ymm1 +vpand h2h_mask(%rip),%ymm1,%ymm1 +vpshufd $238,%ymm13,%ymm3 +vpaddq h2h_p2(%rip),%ymm1,%ymm1 +vpxor h2h_xor(%rip),%ymm3,%ymm3 +vpaddq %ymm1,%ymm3,%ymm8 + +vpshufd $68,%ymm14,%ymm1 +vpand h2h_mask(%rip),%ymm1,%ymm1 +vpshufd $238,%ymm14,%ymm3 +vpaddq h2h_p3(%rip),%ymm1,%ymm1 +vpxor h2h_xor(%rip),%ymm3,%ymm3 +vpaddq %ymm1,%ymm3,%ymm9 + +vpsrlq $52,%ymm8,%ymm21 +vpaddq %ymm21,%ymm9,%ymm9 +vpandq vecmask52(%rip),%ymm8,%ymm8 + +vpsrlq $47,%ymm9,%ymm21 +vpandq vecmask47(%rip),%ymm9,%ymm9 +vpmadd52luq vec19(%rip),%ymm21,%ymm5 + +vpsrlq $52,%ymm5,%ymm21 +vpaddq %ymm21,%ymm6,%ymm6 +vpandq vecmask52(%rip),%ymm5,%ymm5 + +vpsrlq $52,%ymm6,%ymm21 +vpaddq %ymm21,%ymm7,%ymm7 +vpandq vecmask52(%rip),%ymm6,%ymm6 + +vpsrlq $52,%ymm7,%ymm21 +vpaddq %ymm21,%ymm8,%ymm8 +vpandq vecmask52(%rip),%ymm7,%ymm7 + +vpsrlq $52,%ymm8,%ymm21 +vpaddq %ymm21,%ymm9,%ymm9 +vpandq vecmask52(%rip),%ymm8,%ymm8 + +// ← Blend(<0,0,1,X1>,,1100) +vpblendd $240,0(%rsi),%ymm5,%ymm0 +vpblendd $240,32(%rsi),%ymm6,%ymm1 +vpblendd $240,64(%rsi),%ymm7,%ymm2 +vpblendd $240,96(%rsi),%ymm8,%ymm3 +vpblendd $240,128(%rsi),%ymm9,%ymm4 + +// <0,T13,0,0> ← Unreduced-Mulc(,<0,a24,0,0>) +// ← Add(<0,T13,0,0>,) +vpxorq %ymm15,%ymm15,%ymm15 +vpxorq %ymm21,%ymm21,%ymm21 +vpxorq %ymm22,%ymm22,%ymm22 +vpxorq %ymm23,%ymm23,%ymm23 + +vpmadd52luq a24(%rip),%ymm5,%ymm10 +vpmadd52huq a24(%rip),%ymm5,%ymm11 + +vpmadd52luq a24(%rip),%ymm6,%ymm21 +vpmadd52huq a24(%rip),%ymm6,%ymm12 + +vpaddq %ymm21,%ymm11,%ymm11 + +vpmadd52luq a24(%rip),%ymm7,%ymm22 +vpmadd52huq a24(%rip),%ymm7,%ymm13 + +vpaddq %ymm22,%ymm12,%ymm12 + +vpmadd52luq a24(%rip),%ymm8,%ymm23 +vpmadd52huq a24(%rip),%ymm8,%ymm14 + +vpaddq %ymm23,%ymm13,%ymm13 + +vpmadd52luq a24(%rip),%ymm9,%ymm14 +vpmadd52huq a24(%rip),%ymm9,%ymm15 + +vpmadd52luq vec608(%rip),%ymm15,%ymm10 + +vpsrlq $52,%ymm13,%ymm21 +vpaddq %ymm21,%ymm14,%ymm14 +vpandq vecmask52(%rip),%ymm13,%ymm13 + +vpsrlq $47,%ymm14,%ymm21 +vpandq vecmask47(%rip),%ymm14,%ymm14 +vpmadd52luq vec19(%rip),%ymm21,%ymm10 + +vpsrlq $52,%ymm10,%ymm21 +vpaddq %ymm21,%ymm11,%ymm11 +vpandq vecmask52(%rip),%ymm10,%ymm10 + +vpsrlq $52,%ymm11,%ymm21 +vpaddq %ymm21,%ymm12,%ymm12 +vpandq vecmask52(%rip),%ymm11,%ymm11 + +vpsrlq $52,%ymm12,%ymm21 +vpaddq %ymm21,%ymm13,%ymm13 +vpandq vecmask52(%rip),%ymm12,%ymm12 + +vpsrlq $52,%ymm13,%ymm21 +vpaddq %ymm21,%ymm14,%ymm14 +vpandq vecmask52(%rip),%ymm13,%ymm13 + +// <*,*,T15,T16> ← Sqr() +vpxorq %ymm22,%ymm22,%ymm22 +vpxorq %ymm23,%ymm23,%ymm23 +vpxorq %ymm24,%ymm24,%ymm24 +vpxorq %ymm25,%ymm25,%ymm25 +vpxorq %ymm26,%ymm26,%ymm26 +vpxorq %ymm27,%ymm27,%ymm27 +vpxorq %ymm28,%ymm28,%ymm28 +vpxorq %ymm29,%ymm29,%ymm29 +vpxorq %ymm30,%ymm30,%ymm30 +vpxorq %ymm31,%ymm31,%ymm31 + +vpmadd52luq %ymm5,%ymm5,%ymm22 +vpmadd52huq %ymm5,%ymm5,%ymm23 + +vpxorq %ymm21,%ymm21,%ymm21 +vpmadd52luq %ymm5,%ymm6,%ymm21 +vpmadd52huq %ymm5,%ymm6,%ymm24 +vpaddq %ymm21,%ymm21,%ymm21 +vpaddq %ymm21,%ymm23,%ymm23 +vpaddq %ymm24,%ymm24,%ymm24 + +vpxorq %ymm21,%ymm21,%ymm21 +vpmadd52luq %ymm5,%ymm7,%ymm21 +vpmadd52huq %ymm5,%ymm7,%ymm25 +vpaddq %ymm21,%ymm21,%ymm21 +vpaddq %ymm21,%ymm24,%ymm24 +vpaddq %ymm25,%ymm25,%ymm25 +vpmadd52luq %ymm6,%ymm6,%ymm24 +vpmadd52huq %ymm6,%ymm6,%ymm25 + +vpxorq %ymm21,%ymm21,%ymm21 +vpmadd52luq %ymm5,%ymm8,%ymm21 +vpmadd52huq %ymm5,%ymm8,%ymm26 +vpmadd52luq %ymm6,%ymm7,%ymm21 +vpmadd52huq %ymm6,%ymm7,%ymm26 +vpaddq %ymm21,%ymm21,%ymm21 +vpaddq %ymm21,%ymm25,%ymm25 +vpaddq %ymm26,%ymm26,%ymm26 + +vpxorq %ymm21,%ymm21,%ymm21 +vpmadd52luq %ymm5,%ymm9,%ymm21 +vpmadd52huq %ymm5,%ymm9,%ymm27 +vpmadd52luq %ymm6,%ymm8,%ymm21 +vpmadd52huq %ymm6,%ymm8,%ymm27 +vpaddq %ymm21,%ymm21,%ymm21 +vpaddq %ymm21,%ymm26,%ymm26 +vpaddq %ymm27,%ymm27,%ymm27 +vpmadd52luq %ymm7,%ymm7,%ymm26 +vpmadd52huq %ymm7,%ymm7,%ymm27 + +vpxorq %ymm21,%ymm21,%ymm21 +vpmadd52luq %ymm6,%ymm9,%ymm21 +vpmadd52huq %ymm6,%ymm9,%ymm28 +vpmadd52luq %ymm7,%ymm8,%ymm21 +vpmadd52huq %ymm7,%ymm8,%ymm28 +vpaddq %ymm21,%ymm21,%ymm21 +vpaddq %ymm21,%ymm27,%ymm27 +vpaddq %ymm28,%ymm28,%ymm28 + +vpxorq %ymm21,%ymm21,%ymm21 +vpmadd52luq %ymm7,%ymm9,%ymm21 +vpmadd52huq %ymm7,%ymm9,%ymm29 +vpaddq %ymm21,%ymm21,%ymm21 +vpaddq %ymm21,%ymm28,%ymm28 +vpaddq %ymm29,%ymm29,%ymm29 +vpmadd52luq %ymm8,%ymm8,%ymm28 +vpmadd52huq %ymm8,%ymm8,%ymm29 + +vpxorq %ymm21,%ymm21,%ymm21 +vpmadd52luq %ymm8,%ymm9,%ymm21 +vpmadd52huq %ymm8,%ymm9,%ymm30 +vpaddq %ymm21,%ymm21,%ymm21 +vpaddq %ymm21,%ymm29,%ymm29 +vpaddq %ymm30,%ymm30,%ymm30 + +vpmadd52luq %ymm9,%ymm9,%ymm30 +vpmadd52huq %ymm9,%ymm9,%ymm31 + +vpsrlq $52,%ymm27,%ymm21 +vpaddq %ymm21,%ymm28,%ymm28 +vpandq vecmask52(%rip),%ymm27,%ymm27 +vpmadd52luq vec608(%rip),%ymm27,%ymm22 +vpmadd52huq vec608(%rip),%ymm27,%ymm23 + +vpsrlq $52,%ymm28,%ymm21 +vpaddq %ymm21,%ymm29,%ymm29 +vpandq vecmask52(%rip),%ymm28,%ymm28 +vpmadd52luq vec608(%rip),%ymm28,%ymm23 +vpmadd52huq vec608(%rip),%ymm28,%ymm24 + +vpsrlq $52,%ymm29,%ymm21 +vpaddq %ymm21,%ymm30,%ymm30 +vpandq vecmask52(%rip),%ymm29,%ymm29 +vpmadd52luq vec608(%rip),%ymm29,%ymm24 +vpmadd52huq vec608(%rip),%ymm29,%ymm25 + +vpsrlq $52,%ymm30,%ymm21 +vpaddq %ymm21,%ymm31,%ymm31 +vpandq vecmask52(%rip),%ymm30,%ymm30 +vpmadd52luq vec608(%rip),%ymm30,%ymm25 +vpmadd52huq vec608(%rip),%ymm30,%ymm26 + +vpmadd52luq vec608(%rip),%ymm31,%ymm26 + +vpsrlq $52,%ymm25,%ymm21 +vpaddq %ymm21,%ymm26,%ymm26 +vpandq vecmask52(%rip),%ymm25,%ymm25 + +vpsrlq $47,%ymm26,%ymm21 +vpandq vecmask47(%rip),%ymm26,%ymm26 +vpmadd52luq vec19(%rip),%ymm21,%ymm22 + +vpsrlq $52,%ymm22,%ymm21 +vpaddq %ymm21,%ymm23,%ymm23 +vpandq vecmask52(%rip),%ymm22,%ymm5 + +vpsrlq $52,%ymm23,%ymm21 +vpaddq %ymm21,%ymm24,%ymm24 +vpandq vecmask52(%rip),%ymm23,%ymm6 + +vpsrlq $52,%ymm24,%ymm21 +vpaddq %ymm21,%ymm25,%ymm25 +vpandq vecmask52(%rip),%ymm24,%ymm7 + +vpsrlq $52,%ymm25,%ymm21 +vpaddq %ymm21,%ymm26,%ymm9 +vpandq vecmask52(%rip),%ymm25,%ymm8 + +// ← Blend(,<*,*,T15,T16>,0011) +vpblendd $15,%ymm10,%ymm5,%ymm5 +vpblendd $15,%ymm11,%ymm6,%ymm6 +vpblendd $15,%ymm12,%ymm7,%ymm7 +vpblendd $15,%ymm13,%ymm8,%ymm8 +vpblendd $15,%ymm14,%ymm9,%ymm9 + +// ← Mul(,) +vpxorq %ymm10,%ymm10,%ymm10 +vpxorq %ymm11,%ymm11,%ymm11 +vpxorq %ymm12,%ymm12,%ymm12 +vpxorq %ymm13,%ymm13,%ymm13 +vpxorq %ymm14,%ymm14,%ymm14 +vpxorq %ymm15,%ymm15,%ymm15 +vpxorq %ymm16,%ymm16,%ymm16 +vpxorq %ymm17,%ymm17,%ymm17 +vpxorq %ymm18,%ymm18,%ymm18 +vpxorq %ymm19,%ymm19,%ymm19 + +vpxorq %ymm25,%ymm25,%ymm25 +vpxorq %ymm26,%ymm26,%ymm26 +vpxorq %ymm27,%ymm27,%ymm27 +vpxorq %ymm28,%ymm28,%ymm28 +vpxorq %ymm29,%ymm29,%ymm29 +vpxorq %ymm30,%ymm30,%ymm30 +vpxorq %ymm31,%ymm31,%ymm31 + +vpmadd52luq %ymm0,%ymm5,%ymm10 +vpmadd52huq %ymm0,%ymm5,%ymm11 + +vpmadd52luq %ymm0,%ymm6,%ymm25 +vpmadd52huq %ymm0,%ymm6,%ymm12 +vpmadd52luq %ymm1,%ymm5,%ymm25 +vpmadd52huq %ymm1,%ymm5,%ymm12 + +vpaddq %ymm25,%ymm11,%ymm11 + +vpmadd52luq %ymm0,%ymm7,%ymm26 +vpmadd52huq %ymm0,%ymm7,%ymm13 +vpmadd52luq %ymm1,%ymm6,%ymm26 +vpmadd52huq %ymm1,%ymm6,%ymm13 +vpmadd52luq %ymm2,%ymm5,%ymm26 +vpmadd52huq %ymm2,%ymm5,%ymm13 + +vpaddq %ymm26,%ymm12,%ymm12 + +vpmadd52luq %ymm0,%ymm8,%ymm27 +vpmadd52huq %ymm0,%ymm8,%ymm14 +vpmadd52luq %ymm1,%ymm7,%ymm27 +vpmadd52huq %ymm1,%ymm7,%ymm14 +vpmadd52luq %ymm2,%ymm6,%ymm27 +vpmadd52huq %ymm2,%ymm6,%ymm14 +vpmadd52luq %ymm3,%ymm5,%ymm27 +vpmadd52huq %ymm3,%ymm5,%ymm14 + +vpaddq %ymm27,%ymm13,%ymm13 + +vpmadd52luq %ymm0,%ymm9,%ymm28 +vpmadd52huq %ymm0,%ymm9,%ymm15 +vpmadd52luq %ymm1,%ymm8,%ymm28 +vpmadd52huq %ymm1,%ymm8,%ymm15 +vpmadd52luq %ymm2,%ymm7,%ymm28 +vpmadd52huq %ymm2,%ymm7,%ymm15 +vpmadd52luq %ymm3,%ymm6,%ymm28 +vpmadd52huq %ymm3,%ymm6,%ymm15 +vpmadd52luq %ymm4,%ymm5,%ymm28 +vpmadd52huq %ymm4,%ymm5,%ymm15 + +vpaddq %ymm28,%ymm14,%ymm14 + +vpmadd52luq %ymm1,%ymm9,%ymm29 +vpmadd52huq %ymm1,%ymm9,%ymm16 +vpmadd52luq %ymm2,%ymm8,%ymm29 +vpmadd52huq %ymm2,%ymm8,%ymm16 +vpmadd52luq %ymm3,%ymm7,%ymm29 +vpmadd52huq %ymm3,%ymm7,%ymm16 +vpmadd52luq %ymm4,%ymm6,%ymm29 +vpmadd52huq %ymm4,%ymm6,%ymm16 + +vpaddq %ymm29,%ymm15,%ymm15 + +vpmadd52luq %ymm2,%ymm9,%ymm30 +vpmadd52huq %ymm2,%ymm9,%ymm17 +vpmadd52luq %ymm3,%ymm8,%ymm30 +vpmadd52huq %ymm3,%ymm8,%ymm17 +vpmadd52luq %ymm4,%ymm7,%ymm30 +vpmadd52huq %ymm4,%ymm7,%ymm17 + +vpaddq %ymm30,%ymm16,%ymm16 + +vpmadd52luq %ymm3,%ymm9,%ymm31 +vpmadd52huq %ymm3,%ymm9,%ymm18 +vpmadd52luq %ymm4,%ymm8,%ymm31 +vpmadd52huq %ymm4,%ymm8,%ymm18 + +vpaddq %ymm31,%ymm17,%ymm17 + +vpmadd52luq %ymm4,%ymm9,%ymm18 +vpmadd52huq %ymm4,%ymm9,%ymm19 + +vpsrlq $52,%ymm15,%ymm22 +vpaddq %ymm22,%ymm16,%ymm16 +vpandq vecmask52(%rip),%ymm15,%ymm15 +vpmadd52luq vec608(%rip),%ymm15,%ymm10 +vpmadd52huq vec608(%rip),%ymm15,%ymm11 + +vpsrlq $52,%ymm16,%ymm22 +vpaddq %ymm22,%ymm17,%ymm17 +vpandq vecmask52(%rip),%ymm16,%ymm16 +vpmadd52luq vec608(%rip),%ymm16,%ymm11 +vpmadd52huq vec608(%rip),%ymm16,%ymm12 + +vpsrlq $52,%ymm17,%ymm22 +vpaddq %ymm22,%ymm18,%ymm18 +vpandq vecmask52(%rip),%ymm17,%ymm17 +vpmadd52luq vec608(%rip),%ymm17,%ymm12 +vpmadd52huq vec608(%rip),%ymm17,%ymm13 + +vpsrlq $52,%ymm18,%ymm22 +vpaddq %ymm22,%ymm19,%ymm19 +vpandq vecmask52(%rip),%ymm18,%ymm18 +vpmadd52luq vec608(%rip),%ymm18,%ymm13 +vpmadd52huq vec608(%rip),%ymm18,%ymm14 + +vpmadd52luq vec608(%rip),%ymm19,%ymm14 + +subb $1,%cl +cmpb $0,%cl +jge .L2 + +movb $7,%cl +subq $1,%r15 +cmpq $0,%r15 +jge .L1 + +vpsrlq $52,%ymm13,%ymm22 +vpaddq %ymm22,%ymm14,%ymm14 +vpandq vecmask52(%rip),%ymm13,%ymm13 + +vpsrlq $47,%ymm14,%ymm22 +vpandq vecmask47(%rip),%ymm14,%ymm14 +vpmadd52luq vec19(%rip),%ymm22,%ymm10 + +vpsrlq $52,%ymm10,%ymm22 +vpaddq %ymm22,%ymm11,%ymm11 +vpandq vecmask52(%rip),%ymm10,%ymm10 + +vpsrlq $52,%ymm11,%ymm22 +vpaddq %ymm22,%ymm12,%ymm12 +vpandq vecmask52(%rip),%ymm11,%ymm11 + +vpsrlq $52,%ymm12,%ymm22 +vpaddq %ymm22,%ymm13,%ymm13 +vpandq vecmask52(%rip),%ymm12,%ymm12 + +vpsrlq $52,%ymm13,%ymm22 +vpaddq %ymm22,%ymm14,%ymm14 +vpandq vecmask52(%rip),%ymm13,%ymm13 + +// store +vmovdqa %ymm10,0(%rdi) +vmovdqa %ymm11,32(%rdi) +vmovdqa %ymm12,64(%rdi) +vmovdqa %ymm13,96(%rdi) +vmovdqa %ymm14,128(%rdi) + +movq 0(%rsp), %r11 +movq 8(%rsp), %r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/mont25519.c new file mode 100644 index 0000000000..0dcbe0c773 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/mont25519.c @@ -0,0 +1,42 @@ +#include "randombytes.h" +#include "crypto_nP.h" +#include "fe25519.h" +#include "crypto_uint64_vec4x1.h" + +#define mladder CRYPTO_SHARED_NAMESPACE(mladder) +extern void mladder(crypto_uint64_vec4x1 *,crypto_uint64_vec4x1 *,const unsigned char *); + +void crypto_nP(unsigned char *r, + const unsigned char *s, + const unsigned char *p) +{ + unsigned char e[32]; + int i; + + crypto_uint64_vec4x1 a[5] = {{0}}; + crypto_uint64_vec4x1 b[5] = {{0}}; + fe25519_base52_5l u,v; + fe25519 z[2]; + + for(i=0;i<32;i++) e[i] = s[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fe25519_unpack(z,p); + fe25519_to_base52_5l(&u,z); + + b[0][0] = b[0][3] = a[0][2] = 1; + + for (i=0;i<5;i++) {b[i][2] = u.l[i]; a[i][3] = u.l[i];} + + mladder(b,a,e); + + for (i=0;i<5;i++) {u.l[i] = b[i][0]; v.l[i] = b[i][1];} + + fe25519_from_base52_5l(z,&u); + fe25519_from_base52_5l(z+1,&v); + fe25519_invert(z+1, z+1); + fe25519_mul(z, z, z+1); + fe25519_pack(r, z); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/shared-consts.c new file mode 100644 index 0000000000..60192f308b --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-avx512ifma-ns5l-maax/shared-consts.c @@ -0,0 +1,39 @@ +// linker define hh1_p1 +// linker define hh1_p2 +// linker define hh1_p3 +// linker define h2h_p1 +// linker define h2h_p2 +// linker define h2h_p3 +// linker define hh1_xor +// linker define h2h_xor +// linker define swap_c +// linker define swap_mask +// linker define h2h_mask +// linker define vec19 +// linker define vec608 +// linker define vecmask52 +// linker define vecmask47 +// linker define a24 +// linker define mask63 + +#include "consts_namespace.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" + +const crypto_uint64 hh1_p1[] = { 0x0,0x3FFFFFFFFFFFB401,0x3FFFFFFFFFFFB401,0x0 }; +const crypto_uint64 hh1_p2[] = { 0x0,0x3FFFFFFFFFFFFC01,0x3FFFFFFFFFFFFC01,0x0 }; +const crypto_uint64 hh1_p3[] = { 0x0,0x1FFFFFFFFFFFC01,0x1FFFFFFFFFFFC01,0x0 }; +const crypto_uint64 h2h_p1[] = { 0x0,0x3FFFFFFFFFFFB401,0x0,0x3FFFFFFFFFFFB401 }; +const crypto_uint64 h2h_p2[] = { 0x0,0x3FFFFFFFFFFFFC01,0x0,0x3FFFFFFFFFFFFC01 }; +const crypto_uint64 h2h_p3[] = { 0x0,0x1FFFFFFFFFFFC01,0x0,0x1FFFFFFFFFFFC01 }; +const crypto_uint64 hh1_xor[] = { 0,-1,-1,0 }; +const crypto_uint64 h2h_xor[] = { 0,-1,0,-1 }; +const crypto_uint32 swap_c[] = { 0,1,2,3,4,5,6,7 }; +const crypto_uint32 swap_mask[] = { 7,7,7,7,7,7,7,7 }; +const crypto_uint64 h2h_mask[] = { 0,-1,-1,-1 }; +const crypto_uint64 vec19[] = { 19,19,19,19 }; +const crypto_uint64 vec608[] = { 608,608,608,608 }; +const crypto_uint64 vecmask52[] = { 0xFFFFFFFFFFFFF,0xFFFFFFFFFFFFF,0xFFFFFFFFFFFFF,0xFFFFFFFFFFFFF }; +const crypto_uint64 vecmask47[] = { 0x7FFFFFFFFFFF,0x7FFFFFFFFFFF,0x7FFFFFFFFFFF,0x7FFFFFFFFFFF }; +const crypto_uint64 a24[] = { 0,121666,0,0 }; +const crypto_uint64 mask63[] = { 0x7FFFFFFFFFFFFFFF }; diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/architectures new file mode 120000 index 0000000000..f92e7d6fe1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/architectures @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519.h new file mode 120000 index 0000000000..d0a29945e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_mul.S new file mode 120000 index 0000000000..a969f86af4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_nsquare.S new file mode 120000 index 0000000000..a5dcdec138 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_square.S new file mode 120000 index 0000000000..07c854965f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/implementors new file mode 120000 index 0000000000..47cf223ab6 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/mladder.S new file mode 100644 index 0000000000..0666718dc8 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/mladder.S @@ -0,0 +1,1825 @@ +// linker define mladder +// linker use mask63 + +/* Assembly for Montgomery ladder. */ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(mladder) +.globl CRYPTO_SHARED_NAMESPACE(mladder) +_CRYPTO_SHARED_NAMESPACE(mladder): +CRYPTO_SHARED_NAMESPACE(mladder): + +movq %rsp,%r11 +andq $-32,%rsp +subq $376,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) + +// X1 ← XP,X3 ← XP +movq 0(%rsi),%r8 +movq %r8,72(%rsp) +movq %r8,168(%rsp) +movq 8(%rsi),%r8 +movq %r8,80(%rsp) +movq %r8,176(%rsp) +movq 16(%rsi),%r8 +movq %r8,88(%rsp) +movq %r8,184(%rsp) +movq 24(%rsi),%r8 +movq %r8,96(%rsp) +movq %r8,192(%rsp) + +// X2 ← 1 +movq $1,104(%rsp) +movq $0,112(%rsp) +movq $0,120(%rsp) +movq $0,128(%rsp) + +// Z2 ← 0 +movq $0,136(%rsp) +movq $0,144(%rsp) +movq $0,152(%rsp) +movq $0,160(%rsp) + +// Z3 ← 1 +movq $1,200(%rsp) +movq $0,208(%rsp) +movq $0,216(%rsp) +movq $0,224(%rsp) + +movq $31,240(%rsp) +movb $6,232(%rsp) +movb $0,234(%rsp) +movq %rdx,64(%rsp) + +movq %rdx,%rax + +// Montgomery ladder loop + +.L1: + +addq 240(%rsp),%rax +movb 0(%rax),%r14b +movb %r14b,236(%rsp) + +.L2: + +/* + * Montgomery ladder step + * + * Reduction ideas for addition and subtraction are taken from the 64-bit implementation + * "amd64-64" of the work "https://link.springer.com/article/10.1007/s13389-012-0027-1" + * + * T1 ← X2 + Z2 + * T2 ← X2 - Z2 + * T3 ← X3 + Z3 + * T4 ← X3 - Z3 + * Z3 ← T2 · T3 + * X3 ← T1 · T4 + * + * bit ← n[i] + * select ← bit ⊕ prevbit + * prevbit ← bit + * CSelect(T1,T3,select): if (select == 1) {T1 = T3} + * CSelect(T2,T4,select): if (select == 1) {T2 = T4} + * + * T2 ← T2^2 + * T1 ← T1^2 + * T3 ← X3 + Z3 + * Z3 ← X3 - Z3 + * Z3 ← Z3^2 + * X3 ← T3^2 + * T3 ← T1 - T2 + * T4 ← ((A + 2)/4) · T3 + * T4 ← T4 + T2 + * X2 ← T1 · T2 + * Z2 ← T3 · T4 + * Z3 ← Z3 · X1 + * + */ + +// X2 +movq 104(%rsp),%r8 +movq 112(%rsp),%r9 +movq 120(%rsp),%r10 +movq 128(%rsp),%r11 + +// copy X2 +movq %r8,%rax +movq %r9,%rbx +movq %r10,%rbp +movq %r11,%rsi + +// T1 ← X2 + Z2 +addq 136(%rsp),%r8 +adcq 144(%rsp),%r9 +adcq 152(%rsp),%r10 +adcq 160(%rsp),%r11 + +movq $0,%rdi +movq $38,%rcx +cmovae %rdi,%rcx + +addq %rcx,%r8 +adcq %rdi,%r9 +adcq %rdi,%r10 +adcq %rdi,%r11 + +cmovc %rcx,%rdi +addq %rdi,%r8 + +movq %r8,248(%rsp) +movq %r9,256(%rsp) +movq %r10,264(%rsp) +movq %r11,272(%rsp) + +// T2 ← X2 - Z2 +subq 136(%rsp),%rax +sbbq 144(%rsp),%rbx +sbbq 152(%rsp),%rbp +sbbq 160(%rsp),%rsi + +movq $0,%rdi +movq $38,%rcx +cmovae %rdi,%rcx + +subq %rcx,%rax +sbbq %rdi,%rbx +sbbq %rdi,%rbp +sbbq %rdi,%rsi + +cmovc %rcx,%rdi +subq %rdi,%rax + +movq %rax,280(%rsp) +movq %rbx,288(%rsp) +movq %rbp,296(%rsp) +movq %rsi,304(%rsp) + +// X3 +movq 168(%rsp),%r8 +movq 176(%rsp),%r9 +movq 184(%rsp),%r10 +movq 192(%rsp),%r11 + +// copy X3 +movq %r8,%rax +movq %r9,%rbx +movq %r10,%rbp +movq %r11,%rsi + +// T3 ← X3 + Z3 +addq 200(%rsp),%r8 +adcq 208(%rsp),%r9 +adcq 216(%rsp),%r10 +adcq 224(%rsp),%r11 + +movq $0,%rdi +movq $38,%rcx +cmovae %rdi,%rcx + +addq %rcx,%r8 +adcq %rdi,%r9 +adcq %rdi,%r10 +adcq %rdi,%r11 + +cmovc %rcx,%rdi +addq %rdi,%r8 + +movq %r8,312(%rsp) +movq %r9,320(%rsp) +movq %r10,328(%rsp) +movq %r11,336(%rsp) + +// T4 ← X3 - Z3 +subq 200(%rsp),%rax +sbbq 208(%rsp),%rbx +sbbq 216(%rsp),%rbp +sbbq 224(%rsp),%rsi + +movq $0,%rdi +movq $38,%rcx +cmovae %rdi,%rcx + +subq %rcx,%rax +sbbq %rdi,%rbx +sbbq %rdi,%rbp +sbbq %rdi,%rsi + +cmovc %rcx,%rdi +subq %rdi,%rax + +movq %rax,344(%rsp) +movq %rbx,352(%rsp) +movq %rbp,360(%rsp) +movq %rsi,368(%rsp) + +// Z3 ← T2 · T3 +movq 288(%rsp),%rax +mulq 336(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 296(%rsp),%rax +mulq 328(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 304(%rsp),%rax +mulq 320(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 296(%rsp),%rax +mulq 336(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 304(%rsp),%rax +mulq 328(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 304(%rsp),%rax +mulq 336(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 280(%rsp),%rax +mulq 336(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 288(%rsp),%rax +mulq 328(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 296(%rsp),%rax +mulq 320(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 304(%rsp),%rax +mulq 312(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 280(%rsp),%rax +mulq 312(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 280(%rsp),%rax +mulq 320(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 288(%rsp),%rax +mulq 312(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 280(%rsp),%rax +mulq 328(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 288(%rsp),%rax +mulq 320(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 296(%rsp),%rax +mulq 312(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq %r8,200(%rsp) +movq %r10,208(%rsp) +movq %r12,216(%rsp) +movq %r14,224(%rsp) + +// X3 ← T1 · T4 +movq 256(%rsp),%rax +mulq 368(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 264(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 272(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 264(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 272(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 272(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 248(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 256(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 264(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 272(%rsp),%rax +mulq 344(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 248(%rsp),%rax +mulq 344(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 248(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 256(%rsp),%rax +mulq 344(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 248(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 256(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 264(%rsp),%rax +mulq 344(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq %r8,168(%rsp) +movq %r10,176(%rsp) +movq %r12,184(%rsp) +movq %r14,192(%rsp) + +movb 232(%rsp),%cl +movb 236(%rsp),%bl +shrb %cl,%bl +andb $1,%bl +movb %bl,%cl +xorb 234(%rsp),%bl +movb %cl,234(%rsp) + +cmpb $1,%bl + +// CSelect(T1,T3,select) +movq 248(%rsp),%r8 +movq 256(%rsp),%r9 +movq 264(%rsp),%r10 +movq 272(%rsp),%r11 + +movq 312(%rsp),%r12 +movq 320(%rsp),%r13 +movq 328(%rsp),%r14 +movq 336(%rsp),%r15 + +cmove %r12,%r8 +cmove %r13,%r9 +cmove %r14,%r10 +cmove %r15,%r11 + +movq %r8,248(%rsp) +movq %r9,256(%rsp) +movq %r10,264(%rsp) +movq %r11,272(%rsp) + +// CSelect(T2,T4,select) +movq 280(%rsp),%rbx +movq 288(%rsp),%rbp +movq 296(%rsp),%rcx +movq 304(%rsp),%rsi + +movq 344(%rsp),%r12 +movq 352(%rsp),%r13 +movq 360(%rsp),%r14 +movq 368(%rsp),%r15 + +cmove %r12,%rbx +cmove %r13,%rbp +cmove %r14,%rcx +cmove %r15,%rsi + +// T2 ← T2^2 +movq %rsi,%rax +mulq %rsi +movq %rax,%r12 +movq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq %rbp,%rax +mulq %rsi +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq %rcx,%rax +mulq %rcx +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq %rcx,%rax +mulq %rsi +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq %rbx,%rax +mulq %rsi +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq %rbp,%rax +mulq %rcx +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq %rbx,%rax +mulq %rbx +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq %rbx,%rax +mulq %rbp +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq %rbx,%rax +mulq %rcx +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq %rbp,%rax +mulq %rbp +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +imul $19,%r15,%r15 +andq mask63(%rip),%r14 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq %r8,280(%rsp) +movq %r10,288(%rsp) +movq %r12,296(%rsp) +movq %r14,304(%rsp) + +// T1 ← T1^2 +movq 272(%rsp),%rax +mulq 272(%rsp) +movq %rax,%r12 +xorq %r13,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq 256(%rsp),%rax +mulq 272(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 264(%rsp),%rax +mulq 264(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 264(%rsp),%rax +mulq 272(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 248(%rsp),%rax +mulq 272(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 256(%rsp),%rax +mulq 264(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 248(%rsp),%rax +mulq 248(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 248(%rsp),%rax +mulq 256(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 248(%rsp),%rax +mulq 264(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 256(%rsp),%rax +mulq 256(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq %r8,248(%rsp) +movq %r10,256(%rsp) +movq %r12,264(%rsp) +movq %r14,272(%rsp) + +// T3 ← X3 + Z3 +movq 168(%rsp),%r8 +movq 176(%rsp),%r9 +movq 184(%rsp),%r10 +movq 192(%rsp),%r11 + +movq %r8,%rbx +movq %r9,%rbp +movq %r10,%rcx +movq %r11,%rsi + +addq 200(%rsp),%r8 +adcq 208(%rsp),%r9 +adcq 216(%rsp),%r10 +adcq 224(%rsp),%r11 + +movq $0,%rax +movq $38,%rdx +cmovae %rax,%rdx + +addq %rdx,%r8 +adcq %rax,%r9 +adcq %rax,%r10 +adcq %rax,%r11 + +cmovc %rdx,%rax +addq %rax,%r8 + +movq %r8,168(%rsp) +movq %r9,176(%rsp) +movq %r10,184(%rsp) +movq %r11,192(%rsp) + +// Z3 ← X3 - Z3 +subq 200(%rsp),%rbx +sbbq 208(%rsp),%rbp +sbbq 216(%rsp),%rcx +sbbq 224(%rsp),%rsi + +movq $0,%rax +movq $38,%rdx +cmovae %rax,%rdx + +subq %rdx,%rbx +sbbq %rax,%rbp +sbbq %rax,%rcx +sbbq %rax,%rsi + +cmovc %rdx,%rax +subq %rax,%rbx + +// Z3 ← Z3^2 +movq %rsi,%rax +mulq %rsi +movq %rax,%r12 +xorq %r13,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq %rbp,%rax +mulq %rsi +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq %rcx,%rax +mulq %rcx +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq %rcx,%rax +mulq %rsi +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq %rbx,%rax +mulq %rsi +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq %rbp,%rax +mulq %rcx +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq %rbx,%rax +mulq %rbx +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq %rbx,%rax +mulq %rbp +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq %rbx,%rax +mulq %rcx +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq %rbp,%rax +mulq %rbp +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +imul $19,%r15,%r15 +andq mask63(%rip),%r14 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +movq %r8,200(%rsp) +movq %r10,208(%rsp) +movq %r12,216(%rsp) +movq %r14,224(%rsp) + +// X3 ← T3^2 +movq 192(%rsp),%rax +mulq 192(%rsp) +movq %rax,%r12 +xorq %r13,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq 176(%rsp),%rax +mulq 192(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 184(%rsp),%rax +mulq 184(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 184(%rsp),%rax +mulq 192(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 168(%rsp),%rax +mulq 192(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 176(%rsp),%rax +mulq 184(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 168(%rsp),%rax +mulq 168(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 168(%rsp),%rax +mulq 176(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 168(%rsp),%rax +mulq 184(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 176(%rsp),%rax +mulq 176(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +// update X3 +movq %r8,168(%rsp) +movq %r10,176(%rsp) +movq %r12,184(%rsp) +movq %r14,192(%rsp) + +// T3 ← T1 - T2 +movq 248(%rsp),%rbx +movq 256(%rsp),%rbp +movq 264(%rsp),%rcx +movq 272(%rsp),%rsi + +subq 280(%rsp),%rbx +sbbq 288(%rsp),%rbp +sbbq 296(%rsp),%rcx +sbbq 304(%rsp),%rsi + +movq $0,%rax +movq $38,%rdx +cmovae %rax,%rdx + +subq %rdx,%rbx +sbbq %rax,%rbp +sbbq %rax,%rcx +sbbq %rax,%rsi + +cmovc %rdx,%rax +subq %rax,%rbx + +movq %rbx,312(%rsp) +movq %rbp,320(%rsp) +movq %rcx,328(%rsp) +movq %rsi,336(%rsp) + +// T4 ← ((A + 2)/4) · T3 +movq $121666,%rax +mulq %rbx +movq %rax,%r8 +movq %rdx,%r9 + +movq $0,%r10 +movq $121666,%rax +mulq %rbp +addq %rax,%r9 +adcq %rdx,%r10 + +movq $0,%r11 +movq $121666,%rax +mulq %rcx +addq %rax,%r10 +adcq %rdx,%r11 + +movq $0,%r12 +movq $121666,%rax +mulq %rsi +addq %rax,%r11 +adcq %rdx,%r12 + +shld $1,%r11,%r12 +andq mask63(%rip),%r11 + +imul $19,%r12,%r12 +addq %r12,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// T4 ← T4 + T2 +addq 280(%rsp),%r8 +adcq 288(%rsp),%r9 +adcq 296(%rsp),%r10 +adcq 304(%rsp),%r11 + +movq $0,%rax +movq $38,%rdx +cmovae %rax,%rdx + +addq %rdx,%r8 +adcq %rax,%r9 +adcq %rax,%r10 +adcq %rax,%r11 + +cmovc %rdx,%rax +addq %rax,%r8 + +movq %r8,344(%rsp) +movq %r9,352(%rsp) +movq %r10,360(%rsp) +movq %r11,368(%rsp) + +// X2 ← T1 · T2 +movq 256(%rsp),%rax +mulq 304(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 264(%rsp),%rax +mulq 296(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 272(%rsp),%rax +mulq 288(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 264(%rsp),%rax +mulq 304(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 272(%rsp),%rax +mulq 296(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 272(%rsp),%rax +mulq 304(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 248(%rsp),%rax +mulq 304(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 256(%rsp),%rax +mulq 296(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 264(%rsp),%rax +mulq 288(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 272(%rsp),%rax +mulq 280(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 248(%rsp),%rax +mulq 280(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 248(%rsp),%rax +mulq 288(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 256(%rsp),%rax +mulq 280(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 248(%rsp),%rax +mulq 296(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 256(%rsp),%rax +mulq 288(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 264(%rsp),%rax +mulq 280(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +// update X2 +movq %r8,104(%rsp) +movq %r10,112(%rsp) +movq %r12,120(%rsp) +movq %r14,128(%rsp) + +// Z2 ← T3 · T4 +movq 320(%rsp),%rax +mulq 368(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 328(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 336(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 328(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 336(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 336(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 312(%rsp),%rax +mulq 368(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 320(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 328(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 336(%rsp),%rax +mulq 344(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 312(%rsp),%rax +mulq 344(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 312(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 320(%rsp),%rax +mulq 344(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 312(%rsp),%rax +mulq 360(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 320(%rsp),%rax +mulq 352(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 328(%rsp),%rax +mulq 344(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +// update Z2 +movq %r8,136(%rsp) +movq %r10,144(%rsp) +movq %r12,152(%rsp) +movq %r14,160(%rsp) + +// Z3 ← Z3 · X1 +movq 80(%rsp),%rax +mulq 224(%rsp) +movq %rax,%r8 +xorq %r9,%r9 +movq %rdx,%r10 +xorq %r11,%r11 + +movq 88(%rsp),%rax +mulq 216(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 96(%rsp),%rax +mulq 208(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 88(%rsp),%rax +mulq 224(%rsp) +addq %rax,%r10 +adcq $0,%r11 +movq %rdx,%r12 +xorq %r13,%r13 + +movq 96(%rsp),%rax +mulq 216(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %r10 +imul $38,%r11,%r11 +movq %rax,%r10 +addq %rdx,%r11 + +movq 96(%rsp),%rax +mulq 224(%rsp) +addq %rax,%r12 +adcq $0,%r13 + +movq $38,%rax +mulq %rdx +movq %rax,%r14 +movq %rdx,%r15 + +movq $38,%rax +mulq %r12 +imul $38,%r13,%r13 +movq %rax,%r12 +addq %rdx,%r13 + +movq 72(%rsp),%rax +mulq 224(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 80(%rsp),%rax +mulq 216(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 88(%rsp),%rax +mulq 208(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq 96(%rsp),%rax +mulq 200(%rsp) +addq %rax,%r14 +adcq $0,%r15 +addq %rdx,%r8 +adcq $0,%r9 + +movq $38,%rax +mulq %r8 +imul $38,%r9,%r9 +movq %rax,%r8 +addq %rdx,%r9 + +movq 72(%rsp),%rax +mulq 200(%rsp) +addq %rax,%r8 +adcq $0,%r9 +addq %rdx,%r10 +adcq $0,%r11 + +movq 72(%rsp),%rax +mulq 208(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 80(%rsp),%rax +mulq 200(%rsp) +addq %rax,%r10 +adcq $0,%r11 +addq %rdx,%r12 +adcq $0,%r13 + +movq 72(%rsp),%rax +mulq 216(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 80(%rsp),%rax +mulq 208(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +movq 88(%rsp),%rax +mulq 200(%rsp) +addq %rax,%r12 +adcq $0,%r13 +addq %rdx,%r14 +adcq $0,%r15 + +addq %r9,%r10 +adcq $0,%r11 + +addq %r11,%r12 +adcq $0,%r13 + +addq %r13,%r14 +adcq $0,%r15 + +shld $1,%r14,%r15 +andq mask63(%rip),%r14 +imul $19,%r15,%r15 + +addq %r15,%r8 +adcq $0,%r10 +adcq $0,%r12 +adcq $0,%r14 + +// update Z3 +movq %r8,200(%rsp) +movq %r10,208(%rsp) +movq %r12,216(%rsp) +movq %r14,224(%rsp) + +movb 232(%rsp),%cl +subb $1,%cl +movb %cl,232(%rsp) +cmpb $0,%cl +jge .L2 + +movb $7,232(%rsp) +movq 64(%rsp),%rax +movq 240(%rsp),%r15 +subq $1,%r15 +movq %r15,240(%rsp) +cmpq $0,%r15 +jge .L1 + +movq 56(%rsp),%rdi + +movq 104(%rsp),%r8 +movq 112(%rsp),%r9 +movq 120(%rsp),%r10 +movq 128(%rsp),%r11 + +// store final value of X2 +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 136(%rsp),%r8 +movq 144(%rsp),%r9 +movq 152(%rsp),%r10 +movq 160(%rsp),%r11 + +// store final value of Z2 +movq %r8,32(%rdi) +movq %r9,40(%rdi) +movq %r10,48(%rdi) +movq %r11,56(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/mont25519.c new file mode 100644 index 0000000000..b9aff41974 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/mont25519.c @@ -0,0 +1,25 @@ +#include "randombytes.h" +#include "crypto_nP.h" +#include "fe25519.h" + +#define mladder CRYPTO_SHARED_NAMESPACE(mladder) +extern void mladder(fe25519 *,fe25519 *,const unsigned char *); + +void crypto_nP(unsigned char *r, + const unsigned char *s, + const unsigned char *p) +{ + unsigned char e[32]; + int i; + for(i=0;i<32;i++) e[i] = s[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fe25519 t[2]; + fe25519_unpack(t, p); + mladder(t, t, e); + fe25519_invert(t+1, t+1); + fe25519_mul(t, t, t+1); + fe25519_pack(r, t); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/shared-consts.c new file mode 120000 index 0000000000..e88d1f4568 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maa4/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/architectures new file mode 120000 index 0000000000..12e8f0756a --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519.h new file mode 120000 index 0000000000..d0a29945e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_square.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/implementors new file mode 120000 index 0000000000..47cf223ab6 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/mladder.S new file mode 100644 index 0000000000..b7616e9bde --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/mladder.S @@ -0,0 +1,1374 @@ +// linker define mladder +// linker use mask63 + +/* Assembly for Montgomery ladder. */ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(mladder) +.globl CRYPTO_SHARED_NAMESPACE(mladder) +_CRYPTO_SHARED_NAMESPACE(mladder): +CRYPTO_SHARED_NAMESPACE(mladder): + +movq %rsp,%r11 +andq $-32,%rsp +subq $376,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) + +// X1 ← XP,X3 ← XP +movq 0(%rsi),%r8 +movq %r8,72(%rsp) +movq %r8,168(%rsp) +movq 8(%rsi),%r8 +movq %r8,80(%rsp) +movq %r8,176(%rsp) +movq 16(%rsi),%r8 +movq %r8,88(%rsp) +movq %r8,184(%rsp) +movq 24(%rsi),%r8 +movq %r8,96(%rsp) +movq %r8,192(%rsp) + +// X2 ← 1 +movq $1,104(%rsp) +movq $0,112(%rsp) +movq $0,120(%rsp) +movq $0,128(%rsp) + +// Z2 ← 0 +movq $0,136(%rsp) +movq $0,144(%rsp) +movq $0,152(%rsp) +movq $0,160(%rsp) + +// Z3 ← 1 +movq $1,200(%rsp) +movq $0,208(%rsp) +movq $0,216(%rsp) +movq $0,224(%rsp) + +movq $31,240(%rsp) +movb $6,232(%rsp) +movb $0,234(%rsp) +movq %rdx,64(%rsp) + +movq %rdx,%rax + +// Montgomery ladder loop + +.L1: + +addq 240(%rsp),%rax +movb 0(%rax),%r14b +movb %r14b,236(%rsp) + +.L2: + +/* + * Montgomery ladder step + * + * Reduction ideas for addition and subtraction are taken from the 64-bit implementation + * "amd64-64" of the work "https://link.springer.com/article/10.1007/s13389-012-0027-1" + * + * T1 ← X2 + Z2 + * T2 ← X2 - Z2 + * T3 ← X3 + Z3 + * T4 ← X3 - Z3 + * Z3 ← T2 · T3 + * X3 ← T1 · T4 + * + * bit ← n[i] + * select ← bit ⊕ prevbit + * prevbit ← bit + * CSelect(T1,T3,select): if (select == 1) {T1 = T3} + * CSelect(T2,T4,select): if (select == 1) {T2 = T4} + * + * T2 ← T2^2 + * T1 ← T1^2 + * T3 ← X3 + Z3 + * Z3 ← X3 - Z3 + * Z3 ← Z3^2 + * X3 ← T3^2 + * T3 ← T1 - T2 + * T4 ← ((A + 2)/4) · T3 + * T4 ← T4 + T2 + * X2 ← T1 · T2 + * Z2 ← T3 · T4 + * Z3 ← Z3 · X1 + * + */ + +// X2 +movq 104(%rsp),%r8 +movq 112(%rsp),%r9 +movq 120(%rsp),%r10 +movq 128(%rsp),%r11 + +// copy X2 +movq %r8,%rax +movq %r9,%rbx +movq %r10,%rbp +movq %r11,%rsi + +// T1 ← X2 + Z2 +addq 136(%rsp),%r8 +adcq 144(%rsp),%r9 +adcq 152(%rsp),%r10 +adcq 160(%rsp),%r11 + +movq $0,%rdi +movq $38,%rcx +cmovae %rdi,%rcx + +addq %rcx,%r8 +adcq %rdi,%r9 +adcq %rdi,%r10 +adcq %rdi,%r11 + +cmovc %rcx,%rdi +addq %rdi,%r8 + +movq %r8,248(%rsp) +movq %r9,256(%rsp) +movq %r10,264(%rsp) +movq %r11,272(%rsp) + +// T2 ← X2 - Z2 +subq 136(%rsp),%rax +sbbq 144(%rsp),%rbx +sbbq 152(%rsp),%rbp +sbbq 160(%rsp),%rsi + +movq $0,%rdi +movq $38,%rcx +cmovae %rdi,%rcx + +subq %rcx,%rax +sbbq %rdi,%rbx +sbbq %rdi,%rbp +sbbq %rdi,%rsi + +cmovc %rcx,%rdi +subq %rdi,%rax + +movq %rax,280(%rsp) +movq %rbx,288(%rsp) +movq %rbp,296(%rsp) +movq %rsi,304(%rsp) + +// X3 +movq 168(%rsp),%r8 +movq 176(%rsp),%r9 +movq 184(%rsp),%r10 +movq 192(%rsp),%r11 + +// copy X3 +movq %r8,%rax +movq %r9,%rbx +movq %r10,%rbp +movq %r11,%rsi + +// T3 ← X3 + Z3 +addq 200(%rsp),%r8 +adcq 208(%rsp),%r9 +adcq 216(%rsp),%r10 +adcq 224(%rsp),%r11 + +movq $0,%rdi +movq $38,%rcx +cmovae %rdi,%rcx + +addq %rcx,%r8 +adcq %rdi,%r9 +adcq %rdi,%r10 +adcq %rdi,%r11 + +cmovc %rcx,%rdi +addq %rdi,%r8 + +movq %r8,312(%rsp) +movq %r9,320(%rsp) +movq %r10,328(%rsp) +movq %r11,336(%rsp) + +// T4 ← X3 - Z3 +subq 200(%rsp),%rax +sbbq 208(%rsp),%rbx +sbbq 216(%rsp),%rbp +sbbq 224(%rsp),%rsi + +movq $0,%rdi +movq $38,%rcx +cmovae %rdi,%rcx + +subq %rcx,%rax +sbbq %rdi,%rbx +sbbq %rdi,%rbp +sbbq %rdi,%rsi + +cmovc %rcx,%rdi +subq %rdi,%rax + +movq %rax,344(%rsp) +movq %rbx,352(%rsp) +movq %rbp,360(%rsp) +movq %rsi,368(%rsp) + +// Z3 ← T2 · T3 +xorq %r13,%r13 +movq 280(%rsp),%rdx + +mulx 312(%rsp),%r8,%r9 +mulx 320(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 328(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 336(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 288(%rsp),%rdx + +mulx 312(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 320(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 328(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 336(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 296(%rsp),%rdx + +mulx 312(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 320(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 328(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 336(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 304(%rsp),%rdx + +mulx 312(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 320(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 328(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 336(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,200(%rsp) +movq %r9,208(%rsp) +movq %r10,216(%rsp) +movq %r11,224(%rsp) + +// X3 ← T1 · T4 +xorq %r13,%r13 +movq 248(%rsp),%rdx + +mulx 344(%rsp),%r8,%r9 +mulx 352(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 360(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 368(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 256(%rsp),%rdx + +mulx 344(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 264(%rsp),%rdx + +mulx 344(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 272(%rsp),%rdx + +mulx 344(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 352(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 360(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 368(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,168(%rsp) +movq %r9,176(%rsp) +movq %r10,184(%rsp) +movq %r11,192(%rsp) + +movb 232(%rsp),%cl +movb 236(%rsp),%bl +shrb %cl,%bl +andb $1,%bl +movb %bl,%cl +xorb 234(%rsp),%bl +movb %cl,234(%rsp) + +cmpb $1,%bl + +// CSelect(T1,T3,select) +movq 248(%rsp),%r8 +movq 256(%rsp),%r9 +movq 264(%rsp),%r10 +movq 272(%rsp),%r11 + +movq 312(%rsp),%r12 +movq 320(%rsp),%r13 +movq 328(%rsp),%r14 +movq 336(%rsp),%r15 + +cmove %r12,%r8 +cmove %r13,%r9 +cmove %r14,%r10 +cmove %r15,%r11 + +movq %r8,248(%rsp) +movq %r9,256(%rsp) +movq %r10,264(%rsp) +movq %r11,272(%rsp) + +// CSelect(T2,T4,select) +movq 280(%rsp),%rax +movq 288(%rsp),%rbx +movq 296(%rsp),%rbp +movq 304(%rsp),%rsi + +movq 344(%rsp),%r12 +movq 352(%rsp),%r13 +movq 360(%rsp),%r14 +movq 368(%rsp),%r15 + +cmove %r12,%rax +cmove %r13,%rbx +cmove %r14,%rbp +cmove %r15,%rsi + +// T2 ← T2^2 +xorq %r13,%r13 +movq %rax,%rdx + +mulx %rbx,%r9,%r10 + +mulx %rbp,%rcx,%r11 +adcx %rcx,%r10 + +mulx %rsi,%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq %rbx,%rdx + +mulx %rbp,%rcx,%rdi +adcx %rcx,%r11 +adox %rdi,%r12 + +mulx %rsi,%rcx,%rdi +adcx %rcx,%r12 +adox %rdi,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq %rbp,%rdx + +mulx %rsi,%rcx,%r14 +adcx %rcx,%r13 +adcx %r15,%r14 + +shld $1,%r14,%r15 +shld $1,%r13,%r14 +shld $1,%r12,%r13 +shld $1,%r11,%r12 +shld $1,%r10,%r11 +shld $1,%r9,%r10 +shlq $1,%r9 + +xorq %rdx,%rdx +movq %rax,%rdx +mulx %rdx,%r8,%rdx +adcx %rdx,%r9 + +movq %rbx,%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r10 +adcx %rdx,%r11 + +movq %rbp,%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r12 +adcx %rdx,%r13 + +movq %rsi,%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r14 +adcx %rdx,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,280(%rsp) +movq %r9,288(%rsp) +movq %r10,296(%rsp) +movq %r11,304(%rsp) + +// T1 ← T1^2 +xorq %r13,%r13 +movq 248(%rsp),%rdx + +mulx 256(%rsp),%r9,%r10 + +mulx 264(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 272(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 256(%rsp),%rdx + +mulx 264(%rsp),%rcx,%rdi +adcx %rcx,%r11 +adox %rdi,%r12 + +mulx 272(%rsp),%rcx,%rdi +adcx %rcx,%r12 +adox %rdi,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 264(%rsp),%rdx + +mulx 272(%rsp),%rcx,%r14 +adcx %rcx,%r13 +adcx %r15,%r14 + +shld $1,%r14,%r15 +shld $1,%r13,%r14 +shld $1,%r12,%r13 +shld $1,%r11,%r12 +shld $1,%r10,%r11 +shld $1,%r9,%r10 +shlq $1,%r9 + +xorq %rdx,%rdx +movq 248(%rsp),%rdx +mulx %rdx,%r8,%rdx +adcx %rdx,%r9 + +movq 256(%rsp),%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r10 +adcx %rdx,%r11 + +movq 264(%rsp),%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r12 +adcx %rdx,%r13 + +movq 272(%rsp),%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r14 +adcx %rdx,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,248(%rsp) +movq %r9,256(%rsp) +movq %r10,264(%rsp) +movq %r11,272(%rsp) + +// X3 +movq 168(%rsp),%r8 +movq 176(%rsp),%r9 +movq 184(%rsp),%r10 +movq 192(%rsp),%r11 + +// copy X3 +movq %r8,%rax +movq %r9,%rbx +movq %r10,%rbp +movq %r11,%rsi + +// T3 ← X3 + Z3 +addq 200(%rsp),%r8 +adcq 208(%rsp),%r9 +adcq 216(%rsp),%r10 +adcq 224(%rsp),%r11 + +movq $0,%rdi +movq $38,%rcx +cmovae %rdi,%rcx + +addq %rcx,%r8 +adcq %rdi,%r9 +adcq %rdi,%r10 +adcq %rdi,%r11 + +cmovc %rcx,%rdi +addq %rdi,%r8 + +movq %r8,168(%rsp) +movq %r9,176(%rsp) +movq %r10,184(%rsp) +movq %r11,192(%rsp) + +// Z3 ← X3 - Z3 +subq 200(%rsp),%rax +sbbq 208(%rsp),%rbx +sbbq 216(%rsp),%rbp +sbbq 224(%rsp),%rsi + +movq $0,%rdi +movq $38,%rcx +cmovae %rdi,%rcx + +subq %rcx,%rax +sbbq %rdi,%rbx +sbbq %rdi,%rbp +sbbq %rdi,%rsi + +cmovc %rcx,%rdi +subq %rdi,%rax + +// Z3 ← Z3^2 +xorq %r13,%r13 +movq %rax,%rdx + +mulx %rbx,%r9,%r10 + +mulx %rbp,%rcx,%r11 +adcx %rcx,%r10 + +mulx %rsi,%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq %rbx,%rdx + +mulx %rbp,%rcx,%rdi +adcx %rcx,%r11 +adox %rdi,%r12 + +mulx %rsi,%rcx,%rdi +adcx %rcx,%r12 +adox %rdi,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq %rbp,%rdx + +mulx %rsi,%rcx,%r14 +adcx %rcx,%r13 +adcx %r15,%r14 + +shld $1,%r14,%r15 +shld $1,%r13,%r14 +shld $1,%r12,%r13 +shld $1,%r11,%r12 +shld $1,%r10,%r11 +shld $1,%r9,%r10 +shlq $1,%r9 + +xorq %rdx,%rdx +movq %rax,%rdx +mulx %rdx,%r8,%rdx +adcx %rdx,%r9 + +movq %rbx,%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r10 +adcx %rdx,%r11 + +movq %rbp,%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r12 +adcx %rdx,%r13 + +movq %rsi,%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r14 +adcx %rdx,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,200(%rsp) +movq %r9,208(%rsp) +movq %r10,216(%rsp) +movq %r11,224(%rsp) + +// X3 ← T3^2 +xorq %r13,%r13 +movq 168(%rsp),%rdx + +mulx 176(%rsp),%r9,%r10 + +mulx 184(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 192(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 176(%rsp),%rdx + +mulx 184(%rsp),%rcx,%rdi +adcx %rcx,%r11 +adox %rdi,%r12 + +mulx 192(%rsp),%rcx,%rdi +adcx %rcx,%r12 +adox %rdi,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 184(%rsp),%rdx + +mulx 192(%rsp),%rcx,%r14 +adcx %rcx,%r13 +adcx %r15,%r14 + +shld $1,%r14,%r15 +shld $1,%r13,%r14 +shld $1,%r12,%r13 +shld $1,%r11,%r12 +shld $1,%r10,%r11 +shld $1,%r9,%r10 +shlq $1,%r9 + +xorq %rdx,%rdx +movq 168(%rsp),%rdx +mulx %rdx,%r8,%rdx +adcx %rdx,%r9 + +movq 176(%rsp),%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r10 +adcx %rdx,%r11 + +movq 184(%rsp),%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r12 +adcx %rdx,%r13 + +movq 192(%rsp),%rdx +mulx %rdx,%rcx,%rdx +adcx %rcx,%r14 +adcx %rdx,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// update X3 +movq %r8,168(%rsp) +movq %r9,176(%rsp) +movq %r10,184(%rsp) +movq %r11,192(%rsp) + +// T3 ← T1 - T2 +movq 248(%rsp),%r8 +movq 256(%rsp),%r9 +movq 264(%rsp),%r10 +movq 272(%rsp),%r11 + +subq 280(%rsp),%r8 +sbbq 288(%rsp),%r9 +sbbq 296(%rsp),%r10 +sbbq 304(%rsp),%r11 + +movq $0,%rbp +movq $38,%rcx +cmovae %rbp,%rcx + +subq %rcx,%r8 +sbbq %rbp,%r9 +sbbq %rbp,%r10 +sbbq %rbp,%r11 + +cmovc %rcx,%rbp +subq %rbp,%r8 + +movq %r8,312(%rsp) +movq %r9,320(%rsp) +movq %r10,328(%rsp) +movq %r11,336(%rsp) + +// T4 ← ((A + 2)/4) · T3 +xorq %r12,%r12 +movq $121666,%rdx + +mulx %r8,%rax,%rbp +mulx %r9,%rbx,%rcx +adcx %rbp,%rbx + +mulx %r10,%rsi,%rbp +adcx %rcx,%rsi + +mulx %r11,%rdi,%rcx +adcx %rbp,%rdi +adcx %r12,%rcx + +shld $1,%rdi,%rcx +andq mask63(%rip),%rdi + +imul $19,%rcx,%rcx +addq %rcx,%rax +adcq $0,%rbx +adcq $0,%rsi +adcq $0,%rdi + +// T4 ← T4 + T2 +addq 280(%rsp),%rax +adcq 288(%rsp),%rbx +adcq 296(%rsp),%rsi +adcq 304(%rsp),%rdi + +movq $0,%rbp +movq $38,%rcx +cmovae %rbp,%rcx + +addq %rcx,%rax +adcq %rbp,%rbx +adcq %rbp,%rsi +adcq %rbp,%rdi + +cmovc %rcx,%rbp +addq %rbp,%rax + +movq %rax,344(%rsp) +movq %rbx,352(%rsp) +movq %rsi,360(%rsp) +movq %rdi,368(%rsp) + +// X2 ← T1 · T2 +xorq %r13,%r13 +movq 248(%rsp),%rdx + +mulx 280(%rsp),%r8,%r9 +mulx 288(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 296(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 304(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 256(%rsp),%rdx + +mulx 280(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 288(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 296(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 304(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 264(%rsp),%rdx + +mulx 280(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 288(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 296(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 304(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 272(%rsp),%rdx + +mulx 280(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 288(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 296(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 304(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// update X2 +movq %r8,104(%rsp) +movq %r9,112(%rsp) +movq %r10,120(%rsp) +movq %r11,128(%rsp) + +// Z2 ← T3 · T4 +xorq %r13,%r13 +movq 344(%rsp),%rdx + +mulx 312(%rsp),%r8,%r9 +mulx 320(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 328(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 336(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 352(%rsp),%rdx + +mulx 312(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 320(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 328(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 336(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 360(%rsp),%rdx + +mulx 312(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 320(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 328(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 336(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 368(%rsp),%rdx + +mulx 312(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 320(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 328(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 336(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// update Z2 +movq %r8,136(%rsp) +movq %r9,144(%rsp) +movq %r10,152(%rsp) +movq %r11,160(%rsp) + +// Z3 ← Z3 · X1 +xorq %r13,%r13 +movq 200(%rsp),%rdx + +mulx 72(%rsp),%r8,%r9 +mulx 80(%rsp),%rcx,%r10 +adcx %rcx,%r9 + +mulx 88(%rsp),%rcx,%r11 +adcx %rcx,%r10 + +mulx 96(%rsp),%rcx,%r12 +adcx %rcx,%r11 +adcx %r13,%r12 + +xorq %r14,%r14 +movq 208(%rsp),%rdx + +mulx 72(%rsp),%rcx,%rbp +adcx %rcx,%r9 +adox %rbp,%r10 + +mulx 80(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 88(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 96(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 +adcx %r14,%r13 + +xorq %r15,%r15 +movq 216(%rsp),%rdx + +mulx 72(%rsp),%rcx,%rbp +adcx %rcx,%r10 +adox %rbp,%r11 + +mulx 80(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 88(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 96(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 +adcx %r15,%r14 + +xorq %rax,%rax +movq 224(%rsp),%rdx + +mulx 72(%rsp),%rcx,%rbp +adcx %rcx,%r11 +adox %rbp,%r12 + +mulx 80(%rsp),%rcx,%rbp +adcx %rcx,%r12 +adox %rbp,%r13 + +mulx 88(%rsp),%rcx,%rbp +adcx %rcx,%r13 +adox %rbp,%r14 + +mulx 96(%rsp),%rcx,%rbp +adcx %rcx,%r14 +adox %rbp,%r15 +adcx %rax,%r15 + +xorq %rbp,%rbp +movq $38,%rdx + +mulx %r12,%rax,%r12 +adcx %rax,%r8 +adox %r12,%r9 + +mulx %r13,%rcx,%r13 +adcx %rcx,%r9 +adox %r13,%r10 + +mulx %r14,%rcx,%r14 +adcx %rcx,%r10 +adox %r14,%r11 + +mulx %r15,%rcx,%r15 +adcx %rcx,%r11 +adox %rbp,%r15 +adcx %rbp,%r15 + +shld $1,%r11,%r15 +andq mask63(%rip),%r11 + +imul $19,%r15,%r15 +addq %r15,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// update Z3 +movq %r8,200(%rsp) +movq %r9,208(%rsp) +movq %r10,216(%rsp) +movq %r11,224(%rsp) + +movb 232(%rsp),%cl +subb $1,%cl +movb %cl,232(%rsp) +cmpb $0,%cl +jge .L2 + +movb $7,232(%rsp) +movq 64(%rsp),%rax +movq 240(%rsp),%r15 +subq $1,%r15 +movq %r15,240(%rsp) +cmpq $0,%r15 +jge .L1 + +movq 56(%rsp),%rdi + +movq 104(%rsp),%r8 +movq 112(%rsp),%r9 +movq 120(%rsp),%r10 +movq 128(%rsp),%r11 + +// store final value of X2 +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 136(%rsp),%r8 +movq 144(%rsp),%r9 +movq 152(%rsp),%r10 +movq 160(%rsp),%r11 + +// store final value of Z2 +movq %r8,32(%rdi) +movq %r9,40(%rdi) +movq %r10,48(%rdi) +movq %r11,56(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/mont25519.c new file mode 120000 index 0000000000..12545a9086 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/mont25519.c @@ -0,0 +1 @@ +../amd64-maa4/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/shared-consts.c new file mode 120000 index 0000000000..e88d1f4568 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-maax/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/architectures new file mode 120000 index 0000000000..748ffeb120 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519.h b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519.h new file mode 120000 index 0000000000..916a9e3b36 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_freeze.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_invert.c new file mode 120000 index 0000000000..5b59ca07e7 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_mul.S new file mode 120000 index 0000000000..79e7adffa9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_nsquare.S new file mode 120000 index 0000000000..1aef6b0983 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_pack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_unpack.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/implementors new file mode 120000 index 0000000000..58fcae847d --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/amd64-mxaa/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/mladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/mladder.S new file mode 100644 index 0000000000..a80906a06a --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/mladder.S @@ -0,0 +1,1331 @@ +// linker define mladder +// linker use mask63 + +/* Assembly for Montgomery ladder. */ + +#define mask63 CRYPTO_SHARED_NAMESPACE(mask63) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(mladder) +.globl CRYPTO_SHARED_NAMESPACE(mladder) +_CRYPTO_SHARED_NAMESPACE(mladder): +CRYPTO_SHARED_NAMESPACE(mladder): + +movq %rsp,%r11 +andq $-32,%rsp +subq $376,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) + +// X1 ← XP,X3 ← XP +movq 0(%rsi),%r8 +movq %r8,72(%rsp) +movq %r8,168(%rsp) +movq 8(%rsi),%r8 +movq %r8,80(%rsp) +movq %r8,176(%rsp) +movq 16(%rsi),%r8 +movq %r8,88(%rsp) +movq %r8,184(%rsp) +movq 24(%rsi),%r8 +movq %r8,96(%rsp) +movq %r8,192(%rsp) + +// X2 ← 1 +movq $1,104(%rsp) +movq $0,112(%rsp) +movq $0,120(%rsp) +movq $0,128(%rsp) + +// Z2 ← 0 +movq $0,136(%rsp) +movq $0,144(%rsp) +movq $0,152(%rsp) +movq $0,160(%rsp) + +// Z3 ← 1 +movq $1,200(%rsp) +movq $0,208(%rsp) +movq $0,216(%rsp) +movq $0,224(%rsp) + +movq $31,240(%rsp) +movb $6,232(%rsp) +movb $0,234(%rsp) +movq %rdx,64(%rsp) + +movq %rdx,%rax + +// Montgomery ladder loop + +.L1: + +addq 240(%rsp),%rax +movb 0(%rax),%r14b +movb %r14b,236(%rsp) + +.L2: + +/* + * Montgomery ladder step + * + * Reduction ideas for addition and subtraction are taken from the 64-bit implementation + * "amd64-64" of the work "https://link.springer.com/article/10.1007/s13389-012-0027-1" + * + * T1 ← X2 + Z2 + * T2 ← X2 - Z2 + * T3 ← X3 + Z3 + * T4 ← X3 - Z3 + * Z3 ← T2 · T3 + * X3 ← T1 · T4 + * + * bit ← n[i] + * select ← bit ⊕ prevbit + * prevbit ← bit + * CSelect(T1,T3,select): if (select == 1) {T1 = T3} + * CSelect(T2,T4,select): if (select == 1) {T2 = T4} + * + * T2 ← T2^2 + * T1 ← T1^2 + * T3 ← X3 + Z3 + * Z3 ← X3 - Z3 + * Z3 ← Z3^2 + * X3 ← T3^2 + * T3 ← T1 - T2 + * T4 ← ((A + 2)/4) · T3 + * T4 ← T4 + T2 + * X2 ← T1 · T2 + * Z2 ← T3 · T4 + * Z3 ← Z3 · X1 + * + */ + +// X2 +movq 104(%rsp),%r8 +movq 112(%rsp),%r9 +movq 120(%rsp),%r10 +movq 128(%rsp),%r11 + +// copy X2 +movq %r8,%rax +movq %r9,%rbx +movq %r10,%rbp +movq %r11,%rsi + +// T1 ← X2 + Z2 +addq 136(%rsp),%r8 +adcq 144(%rsp),%r9 +adcq 152(%rsp),%r10 +adcq 160(%rsp),%r11 + +movq $0,%rdi +movq $38,%rcx +cmovae %rdi,%rcx + +addq %rcx,%r8 +adcq %rdi,%r9 +adcq %rdi,%r10 +adcq %rdi,%r11 + +cmovc %rcx,%rdi +addq %rdi,%r8 + +movq %r8,248(%rsp) +movq %r9,256(%rsp) +movq %r10,264(%rsp) +movq %r11,272(%rsp) + +// T2 ← X2 - Z2 +subq 136(%rsp),%rax +sbbq 144(%rsp),%rbx +sbbq 152(%rsp),%rbp +sbbq 160(%rsp),%rsi + +movq $0,%rdi +movq $38,%rcx +cmovae %rdi,%rcx + +subq %rcx,%rax +sbbq %rdi,%rbx +sbbq %rdi,%rbp +sbbq %rdi,%rsi + +cmovc %rcx,%rdi +subq %rdi,%rax + +movq %rax,280(%rsp) +movq %rbx,288(%rsp) +movq %rbp,296(%rsp) +movq %rsi,304(%rsp) + +// X3 +movq 168(%rsp),%r8 +movq 176(%rsp),%r9 +movq 184(%rsp),%r10 +movq 192(%rsp),%r11 + +// copy X3 +movq %r8,%rax +movq %r9,%rbx +movq %r10,%rbp +movq %r11,%rsi + +// T3 ← X3 + Z3 +addq 200(%rsp),%r8 +adcq 208(%rsp),%r9 +adcq 216(%rsp),%r10 +adcq 224(%rsp),%r11 + +movq $0,%rdi +movq $38,%rcx +cmovae %rdi,%rcx + +addq %rcx,%r8 +adcq %rdi,%r9 +adcq %rdi,%r10 +adcq %rdi,%r11 + +cmovc %rcx,%rdi +addq %rdi,%r8 + +movq %r8,312(%rsp) +movq %r9,320(%rsp) +movq %r10,328(%rsp) +movq %r11,336(%rsp) + +// T4 ← X3 - Z3 +subq 200(%rsp),%rax +sbbq 208(%rsp),%rbx +sbbq 216(%rsp),%rbp +sbbq 224(%rsp),%rsi + +movq $0,%rdi +movq $38,%rcx +cmovae %rdi,%rcx + +subq %rcx,%rax +sbbq %rdi,%rbx +sbbq %rdi,%rbp +sbbq %rdi,%rsi + +cmovc %rcx,%rdi +subq %rdi,%rax + +movq %rax,344(%rsp) +movq %rbx,352(%rsp) +movq %rbp,360(%rsp) +movq %rsi,368(%rsp) + +// Z3 ← T2 · T3 +movq 280(%rsp),%rdx + +mulx 312(%rsp),%r8,%r9 +mulx 320(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 328(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 336(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 288(%rsp),%rdx + +mulx 312(%rsp),%rax,%rbx +mulx 320(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 328(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 336(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 296(%rsp),%rdx + +mulx 312(%rsp),%rax,%rbx +mulx 320(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 328(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 336(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 304(%rsp),%rdx + +mulx 312(%rsp),%rax,%rbx +mulx 320(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 328(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 336(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,200(%rsp) +movq %r9,208(%rsp) +movq %r10,216(%rsp) +movq %r11,224(%rsp) + +// X3 ← T1 · T4 +movq 248(%rsp),%rdx + +mulx 344(%rsp),%r8,%r9 +mulx 352(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 360(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 368(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 256(%rsp),%rdx + +mulx 344(%rsp),%rax,%rbx +mulx 352(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 360(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 368(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 264(%rsp),%rdx + +mulx 344(%rsp),%rax,%rbx +mulx 352(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 360(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 368(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 272(%rsp),%rdx + +mulx 344(%rsp),%rax,%rbx +mulx 352(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 360(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 368(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,168(%rsp) +movq %r9,176(%rsp) +movq %r10,184(%rsp) +movq %r11,192(%rsp) + +movb 232(%rsp),%cl +movb 236(%rsp),%bl +shrb %cl,%bl +andb $1,%bl +movb %bl,%cl +xorb 234(%rsp),%bl +movb %cl,234(%rsp) + +cmpb $1,%bl + +// CSelect(T1,T3,select) +movq 248(%rsp),%r8 +movq 256(%rsp),%r9 +movq 264(%rsp),%r10 +movq 272(%rsp),%r11 + +movq 312(%rsp),%r12 +movq 320(%rsp),%r13 +movq 328(%rsp),%r14 +movq 336(%rsp),%r15 + +cmove %r12,%r8 +cmove %r13,%r9 +cmove %r14,%r10 +cmove %r15,%r11 + +movq %r8,248(%rsp) +movq %r9,256(%rsp) +movq %r10,264(%rsp) +movq %r11,272(%rsp) + +// CSelect(T2,T4,select) +movq 280(%rsp),%rdx +movq 288(%rsp),%rbp +movq 296(%rsp),%rsi +movq 304(%rsp),%rdi + +movq 344(%rsp),%r12 +movq 352(%rsp),%r13 +movq 360(%rsp),%r14 +movq 368(%rsp),%r15 + +cmove %r12,%rdx +cmove %r13,%rbp +cmove %r14,%rsi +cmove %r15,%rdi + +// T2 ← T2^2 +movq %rdx,280(%rsp) + +mulx %rbp,%r9,%r10 +mulx %rsi,%rcx,%r11 +addq %rcx,%r10 + +mulx %rdi,%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq %rbp,%rdx + +mulx %rsi,%rax,%rbx +mulx %rdi,%rcx,%r13 +addq %rcx,%rbx +adcq $0,%r13 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq $0,%r13 + +movq %rsi,%rdx + +mulx %rdi,%rax,%r14 + +addq %rax,%r13 +adcq $0,%r14 + +movq $0,%r15 +shld $1,%r14,%r15 +shld $1,%r13,%r14 +shld $1,%r12,%r13 +shld $1,%r11,%r12 +shld $1,%r10,%r11 +shld $1,%r9,%r10 +shlq $1,%r9 + +movq 280(%rsp),%rdx +mulx %rdx,%r8,%rax +addq %rax,%r9 + +movq %rbp,%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r10 +adcq %rbx,%r11 + +movq %rsi,%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r12 +adcq %rbx,%r13 + +movq %rdi,%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r14 +adcq %rbx,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,280(%rsp) +movq %r9,288(%rsp) +movq %r10,296(%rsp) +movq %r11,304(%rsp) + +// T1 ← T1^2 +movq 248(%rsp),%rdx + +mulx 256(%rsp),%r9,%r10 +mulx 264(%rsp),%rcx,%r11 +addq %rcx,%r10 + +mulx 272(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 256(%rsp),%rdx + +mulx 264(%rsp),%rax,%rbx +mulx 272(%rsp),%rcx,%r13 +addq %rcx,%rbx +adcq $0,%r13 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq $0,%r13 + +movq 264(%rsp),%rdx + +mulx 272(%rsp),%rax,%r14 + +addq %rax,%r13 +adcq $0,%r14 + +movq $0,%r15 +shld $1,%r14,%r15 +shld $1,%r13,%r14 +shld $1,%r12,%r13 +shld $1,%r11,%r12 +shld $1,%r10,%r11 +shld $1,%r9,%r10 +shlq $1,%r9 + +movq 248(%rsp),%rdx +mulx %rdx,%r8,%rax +addq %rax,%r9 + +movq 256(%rsp),%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r10 +adcq %rbx,%r11 + +movq 264(%rsp),%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r12 +adcq %rbx,%r13 + +movq 272(%rsp),%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r14 +adcq %rbx,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,248(%rsp) +movq %r9,256(%rsp) +movq %r10,264(%rsp) +movq %r11,272(%rsp) + +// X3 +movq 168(%rsp),%r8 +movq 176(%rsp),%r9 +movq 184(%rsp),%r10 +movq 192(%rsp),%r11 + +// copy X3 +movq %r8,%rdx +movq %r9,%rbp +movq %r10,%rsi +movq %r11,%rdi + +// T3 ← X3 + Z3 +addq 200(%rsp),%r8 +adcq 208(%rsp),%r9 +adcq 216(%rsp),%r10 +adcq 224(%rsp),%r11 + +movq $0,%rax +movq $38,%rcx +cmovae %rax,%rcx + +addq %rcx,%r8 +adcq %rax,%r9 +adcq %rax,%r10 +adcq %rax,%r11 + +cmovc %rcx,%rax +addq %rax,%r8 + +movq %r8,168(%rsp) +movq %r9,176(%rsp) +movq %r10,184(%rsp) +movq %r11,192(%rsp) + +// Z3 ← X3 - Z3 +subq 200(%rsp),%rdx +sbbq 208(%rsp),%rbp +sbbq 216(%rsp),%rsi +sbbq 224(%rsp),%rdi + +movq $0,%rax +movq $38,%rcx +cmovae %rax,%rcx + +subq %rcx,%rdx +sbbq %rax,%rbp +sbbq %rax,%rsi +sbbq %rax,%rdi + +cmovc %rcx,%rax +subq %rax,%rdx + +// Z3 ← Z3^2 +movq %rdx,200(%rsp) + +mulx %rbp,%r9,%r10 +mulx %rsi,%rcx,%r11 +addq %rcx,%r10 + +mulx %rdi,%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq %rbp,%rdx + +mulx %rsi,%rax,%rbx +mulx %rdi,%rcx,%r13 +addq %rcx,%rbx +adcq $0,%r13 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq $0,%r13 + +movq %rsi,%rdx + +mulx %rdi,%rax,%r14 + +addq %rax,%r13 +adcq $0,%r14 + +movq $0,%r15 +shld $1,%r14,%r15 +shld $1,%r13,%r14 +shld $1,%r12,%r13 +shld $1,%r11,%r12 +shld $1,%r10,%r11 +shld $1,%r9,%r10 +shlq $1,%r9 + +movq 200(%rsp),%rdx +mulx %rdx,%r8,%rax +addq %rax,%r9 + +movq %rbp,%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r10 +adcq %rbx,%r11 + +movq %rsi,%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r12 +adcq %rbx,%r13 + +movq %rdi,%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r14 +adcq %rbx,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,200(%rsp) +movq %r9,208(%rsp) +movq %r10,216(%rsp) +movq %r11,224(%rsp) + +// X3 ← T3^2 +movq 168(%rsp),%rdx + +mulx 176(%rsp),%r9,%r10 +mulx 184(%rsp),%rcx,%r11 +addq %rcx,%r10 + +mulx 192(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 176(%rsp),%rdx + +mulx 184(%rsp),%rax,%rbx +mulx 192(%rsp),%rcx,%r13 +addq %rcx,%rbx +adcq $0,%r13 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq $0,%r13 + +movq 184(%rsp),%rdx + +mulx 192(%rsp),%rax,%r14 + +addq %rax,%r13 +adcq $0,%r14 + +movq $0,%r15 +shld $1,%r14,%r15 +shld $1,%r13,%r14 +shld $1,%r12,%r13 +shld $1,%r11,%r12 +shld $1,%r10,%r11 +shld $1,%r9,%r10 +shlq $1,%r9 + +movq 168(%rsp),%rdx +mulx %rdx,%r8,%rax +addq %rax,%r9 + +movq 176(%rsp),%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r10 +adcq %rbx,%r11 + +movq 184(%rsp),%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r12 +adcq %rbx,%r13 + +movq 192(%rsp),%rdx +mulx %rdx,%rax,%rbx +adcq %rax,%r14 +adcq %rbx,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +movq %r8,168(%rsp) +movq %r9,176(%rsp) +movq %r10,184(%rsp) +movq %r11,192(%rsp) + +// T3 ← T1 - T2 +movq 248(%rsp),%r8 +movq 256(%rsp),%r9 +movq 264(%rsp),%r10 +movq 272(%rsp),%r11 + +subq 280(%rsp),%r8 +sbbq 288(%rsp),%r9 +sbbq 296(%rsp),%r10 +sbbq 304(%rsp),%r11 + +movq $0,%rax +movq $38,%rcx +cmovae %rax,%rcx + +subq %rcx,%r8 +sbbq %rax,%r9 +sbbq %rax,%r10 +sbbq %rax,%r11 + +cmovc %rcx,%rax +subq %rax,%r8 + +movq %r8,312(%rsp) +movq %r9,320(%rsp) +movq %r10,328(%rsp) +movq %r11,336(%rsp) + +// T4 ← ((A + 2)/4) · T3 +movq $121666,%rdx + +mulx %r8,%r8,%rax +mulx %r9,%r9,%rcx +addq %rax,%r9 + +mulx %r10,%r10,%rax +adcq %rcx,%r10 + +mulx %r11,%r11,%rcx +adcq %rax,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// T4 ← T4 + T2 +addq 280(%rsp),%r8 +adcq 288(%rsp),%r9 +adcq 296(%rsp),%r10 +adcq 304(%rsp),%r11 + +movq $0,%rax +movq $38,%rcx +cmovae %rax,%rcx + +addq %rcx,%r8 +adcq %rax,%r9 +adcq %rax,%r10 +adcq %rax,%r11 + +cmovc %rcx,%rax +addq %rax,%r8 + +movq %r8,344(%rsp) +movq %r9,352(%rsp) +movq %r10,360(%rsp) +movq %r11,368(%rsp) + +// X2 ← T1 · T2 +movq 248(%rsp),%rdx + +mulx 280(%rsp),%r8,%r9 +mulx 288(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 296(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 304(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 256(%rsp),%rdx + +mulx 280(%rsp),%rax,%rbx +mulx 288(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 296(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 304(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 264(%rsp),%rdx + +mulx 280(%rsp),%rax,%rbx +mulx 288(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 296(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 304(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 272(%rsp),%rdx + +mulx 280(%rsp),%rax,%rbx +mulx 288(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 296(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 304(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// update X2 +movq %r8,104(%rsp) +movq %r9,112(%rsp) +movq %r10,120(%rsp) +movq %r11,128(%rsp) + +// Z2 ← T3 · T4 +movq 312(%rsp),%rdx + +mulx 344(%rsp),%r8,%r9 +mulx 352(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 360(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 368(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 320(%rsp),%rdx + +mulx 344(%rsp),%rax,%rbx +mulx 352(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 360(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 368(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 328(%rsp),%rdx + +mulx 344(%rsp),%rax,%rbx +mulx 352(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 360(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 368(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 336(%rsp),%rdx + +mulx 344(%rsp),%rax,%rbx +mulx 352(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 360(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 368(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// update Z2 +movq %r8,136(%rsp) +movq %r9,144(%rsp) +movq %r10,152(%rsp) +movq %r11,160(%rsp) + +// Z3 ← Z3 · X1 +movq 200(%rsp),%rdx + +mulx 72(%rsp),%r8,%r9 +mulx 80(%rsp),%rcx,%r10 +addq %rcx,%r9 + +mulx 88(%rsp),%rcx,%r11 +adcq %rcx,%r10 + +mulx 96(%rsp),%rcx,%r12 +adcq %rcx,%r11 +adcq $0,%r12 + +movq 208(%rsp),%rdx + +mulx 72(%rsp),%rax,%rbx +mulx 80(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 88(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 96(%rsp),%rcx,%r13 +adcq %rcx,%rsi +adcq $0,%r13 + +addq %rax,%r9 +adcq %rbx,%r10 +adcq %rbp,%r11 +adcq %rsi,%r12 +adcq $0,%r13 + +movq 216(%rsp),%rdx + +mulx 72(%rsp),%rax,%rbx +mulx 80(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 88(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 96(%rsp),%rcx,%r14 +adcq %rcx,%rsi +adcq $0,%r14 + +addq %rax,%r10 +adcq %rbx,%r11 +adcq %rbp,%r12 +adcq %rsi,%r13 +adcq $0,%r14 + +movq 224(%rsp),%rdx + +mulx 72(%rsp),%rax,%rbx +mulx 80(%rsp),%rcx,%rbp +addq %rcx,%rbx + +mulx 88(%rsp),%rcx,%rsi +adcq %rcx,%rbp + +mulx 96(%rsp),%rcx,%r15 +adcq %rcx,%rsi +adcq $0,%r15 + +addq %rax,%r11 +adcq %rbx,%r12 +adcq %rbp,%r13 +adcq %rsi,%r14 +adcq $0,%r15 + +movq $38,%rdx + +mulx %r12,%r12,%rbx +mulx %r13,%r13,%rcx +addq %rbx,%r13 + +mulx %r14,%r14,%rbx +adcq %rcx,%r14 + +mulx %r15,%r15,%rcx +adcq %rbx,%r15 +adcq $0,%rcx + +addq %r12,%r8 +adcq %r13,%r9 +adcq %r14,%r10 +adcq %r15,%r11 +adcq $0,%rcx + +shld $1,%r11,%rcx +andq mask63(%rip),%r11 + +imul $19,%rcx,%rcx +addq %rcx,%r8 +adcq $0,%r9 +adcq $0,%r10 +adcq $0,%r11 + +// updaTe Z3 +movq %r8,200(%rsp) +movq %r9,208(%rsp) +movq %r10,216(%rsp) +movq %r11,224(%rsp) + +movb 232(%rsp),%cl +subb $1,%cl +movb %cl,232(%rsp) +cmpb $0,%cl +jge .L2 + +movb $7,232(%rsp) +movq 64(%rsp),%rax +movq 240(%rsp),%r15 +subq $1,%r15 +movq %r15,240(%rsp) +cmpq $0,%r15 +jge .L1 + +movq 56(%rsp),%rdi + +movq 104(%rsp),%r8 +movq 112(%rsp),%r9 +movq 120(%rsp),%r10 +movq 128(%rsp),%r11 + +// store final value of X2 +movq %r8,0(%rdi) +movq %r9,8(%rdi) +movq %r10,16(%rdi) +movq %r11,24(%rdi) + +movq 136(%rsp),%r8 +movq 144(%rsp),%r9 +movq 152(%rsp),%r10 +movq 160(%rsp),%r11 + +// store final value of Z2 +movq %r8,32(%rdi) +movq %r9,40(%rdi) +movq %r10,48(%rdi) +movq %r11,56(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/mont25519.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/mont25519.c new file mode 120000 index 0000000000..12545a9086 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/mont25519.c @@ -0,0 +1 @@ +../amd64-maa4/mont25519.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/shared-consts.c new file mode 120000 index 0000000000..e88d1f4568 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/amd64-mxaa/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/donna_c64/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/donna_c64/implementors new file mode 120000 index 0000000000..1663639117 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/donna_c64/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/donna_c64/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/donna_c64/smult.c b/lib-25519/lib25519/crypto_nP/montgomery25519/donna_c64/smult.c new file mode 100644 index 0000000000..eb6c434f5f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/donna_c64/smult.c @@ -0,0 +1,421 @@ +/* Copyright 2008, Google Inc. + * All rights reserved. + * + * Code released into the public domain. + * + * curve25519-donna: Curve25519 elliptic curve, public key function + * + * http://code.google.com/p/curve25519-donna/ + * + * Adam Langley + * Parts optimised by floodyberry + * Derived from public domain C code by Daniel J. Bernstein + * + * More information about curve25519 can be found here + * http://cr.yp.to/ecdh.html + * + * djb's sample implementation of curve25519 is written in a special assembly + * language called qhasm and uses the floating point registers. + * + * This is, almost, a clean room reimplementation from the curve25519 paper. It + * uses many of the tricks described therein. Only the crecip function is taken + * from the sample implementation. + */ + +#include +#include +#include "crypto_nP.h" + +typedef uint8_t u8; +typedef uint64_t limb; +typedef limb felem[5]; +// This is a special gcc mode for 128-bit integers. It's implemented on 64-bit +// platforms only as far as I know. +typedef unsigned uint128_t __attribute__((mode(TI))); + +#undef force_inline +#define force_inline __attribute__((always_inline)) inline + +/* Sum two numbers: output += in */ +static void force_inline +fsum(limb *output, const limb *in) { + output[0] += in[0]; + output[1] += in[1]; + output[2] += in[2]; + output[3] += in[3]; + output[4] += in[4]; +} + +/* Find the difference of two numbers: output = in - output + * (note the order of the arguments!) + * + * Assumes that out[i] < 2**52 + * On return, out[i] < 2**55 + */ +static void force_inline +fdifference_backwards(felem out, const felem in) { + /* 152 is 19 << 3 */ + static const limb two54m152 = (((limb)1) << 54) - 152; + static const limb two54m8 = (((limb)1) << 54) - 8; + + out[0] = in[0] + two54m152 - out[0]; + out[1] = in[1] + two54m8 - out[1]; + out[2] = in[2] + two54m8 - out[2]; + out[3] = in[3] + two54m8 - out[3]; + out[4] = in[4] + two54m8 - out[4]; +} + +/* Multiply a number by a scalar: output = in * scalar */ +static void force_inline +fscalar_product(felem output, const felem in, const limb scalar) { + uint128_t a; + + a = ((uint128_t) in[0]) * scalar; + output[0] = ((limb)a) & 0x7ffffffffffff; + + a = ((uint128_t) in[1]) * scalar + ((limb) (a >> 51)); + output[1] = ((limb)a) & 0x7ffffffffffff; + + a = ((uint128_t) in[2]) * scalar + ((limb) (a >> 51)); + output[2] = ((limb)a) & 0x7ffffffffffff; + + a = ((uint128_t) in[3]) * scalar + ((limb) (a >> 51)); + output[3] = ((limb)a) & 0x7ffffffffffff; + + a = ((uint128_t) in[4]) * scalar + ((limb) (a >> 51)); + output[4] = ((limb)a) & 0x7ffffffffffff; + + output[0] += (a >> 51) * 19; +} + +/* Multiply two numbers: output = in2 * in + * + * output must be distinct to both inputs. The inputs are reduced coefficient + * form, the output is not. + * + * Assumes that in[i] < 2**55 and likewise for in2. + * On return, output[i] < 2**52 + */ +static void force_inline +fmul(felem output, const felem in2, const felem in) { + uint128_t t[5]; + limb r0,r1,r2,r3,r4,s0,s1,s2,s3,s4,c; + + r0 = in[0]; + r1 = in[1]; + r2 = in[2]; + r3 = in[3]; + r4 = in[4]; + + s0 = in2[0]; + s1 = in2[1]; + s2 = in2[2]; + s3 = in2[3]; + s4 = in2[4]; + + t[0] = ((uint128_t) r0) * s0; + t[1] = ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0; + t[2] = ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1; + t[3] = ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1; + t[4] = ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2; + + r4 *= 19; + r1 *= 19; + r2 *= 19; + r3 *= 19; + + t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2; + t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3; + t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4; + t[3] += ((uint128_t) r4) * s4; + + r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51); + t[1] += c; r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51); + t[2] += c; r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51); + t[3] += c; r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51); + t[4] += c; r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51); + r0 += c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff; + r1 += c; c = r1 >> 51; r1 = r1 & 0x7ffffffffffff; + r2 += c; + + output[0] = r0; + output[1] = r1; + output[2] = r2; + output[3] = r3; + output[4] = r4; +} + +static void force_inline +fsquare_times(felem output, const felem in, limb count) { + uint128_t t[5]; + limb r0,r1,r2,r3,r4,c; + limb d0,d1,d2,d4,d419; + + r0 = in[0]; + r1 = in[1]; + r2 = in[2]; + r3 = in[3]; + r4 = in[4]; + + do { + d0 = r0 * 2; + d1 = r1 * 2; + d2 = r2 * 2 * 19; + d419 = r4 * 19; + d4 = d419 * 2; + + t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3 )); + t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19)); + t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3 )); + t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419 )); + t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2 )); + + r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51); + t[1] += c; r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51); + t[2] += c; r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51); + t[3] += c; r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51); + t[4] += c; r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51); + r0 += c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff; + r1 += c; c = r1 >> 51; r1 = r1 & 0x7ffffffffffff; + r2 += c; + } while(--count); + + output[0] = r0; + output[1] = r1; + output[2] = r2; + output[3] = r3; + output[4] = r4; +} + +/* Take a little-endian, 32-byte number and expand it into polynomial form */ +static void +fexpand(limb *output, const u8 *in) { + output[0] = *((const uint64_t *)(in)) & 0x7ffffffffffff; + output[1] = (*((const uint64_t *)(in+6)) >> 3) & 0x7ffffffffffff; + output[2] = (*((const uint64_t *)(in+12)) >> 6) & 0x7ffffffffffff; + output[3] = (*((const uint64_t *)(in+19)) >> 1) & 0x7ffffffffffff; + output[4] = (*((const uint64_t *)(in+25)) >> 4) & 0x7ffffffffffff; +} + +/* Take a fully reduced polynomial form number and contract it into a + * little-endian, 32-byte array + */ +static void +fcontract(u8 *output, const felem input) { + uint128_t t[5]; + + t[0] = input[0]; + t[1] = input[1]; + t[2] = input[2]; + t[3] = input[3]; + t[4] = input[4]; + + t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff; + t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff; + t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff; + t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff; + t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff; + + t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff; + t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff; + t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff; + t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff; + t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff; + + /* now t is between 0 and 2^255-1, properly carried. */ + /* case 1: between 0 and 2^255-20. case 2: between 2^255-19 and 2^255-1. */ + + t[0] += 19; + + t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff; + t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff; + t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff; + t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff; + t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff; + + /* now between 19 and 2^255-1 in both cases, and offset by 19. */ + + t[0] += 0x8000000000000 - 19; + t[1] += 0x8000000000000 - 1; + t[2] += 0x8000000000000 - 1; + t[3] += 0x8000000000000 - 1; + t[4] += 0x8000000000000 - 1; + + /* now between 2^255 and 2^256-20, and offset by 2^255. */ + + t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff; + t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff; + t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff; + t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff; + t[4] &= 0x7ffffffffffff; + + *((uint64_t *)(output)) = t[0] | (t[1] << 51); + *((uint64_t *)(output+8)) = (t[1] >> 13) | (t[2] << 38); + *((uint64_t *)(output+16)) = (t[2] >> 26) | (t[3] << 25); + *((uint64_t *)(output+24)) = (t[3] >> 39) | (t[4] << 12); +} + +/* Input: Q, Q', Q-Q' + * Output: 2Q, Q+Q' + * + * x2 z3: long form + * x3 z3: long form + * x z: short form, destroyed + * xprime zprime: short form, destroyed + * qmqp: short form, preserved + */ +static void +fmonty(limb *x2, limb *z2, /* output 2Q */ + limb *x3, limb *z3, /* output Q + Q' */ + limb *x, limb *z, /* input Q */ + limb *xprime, limb *zprime, /* input Q' */ + const limb *qmqp /* input Q - Q' */) { + limb origx[5], origxprime[5], zzz[5], xx[5], zz[5], xxprime[5], + zzprime[5], zzzprime[5]; + + memcpy(origx, x, 5 * sizeof(limb)); + fsum(x, z); + fdifference_backwards(z, origx); // does x - z + + memcpy(origxprime, xprime, sizeof(limb) * 5); + fsum(xprime, zprime); + fdifference_backwards(zprime, origxprime); + fmul(xxprime, xprime, z); + fmul(zzprime, x, zprime); + memcpy(origxprime, xxprime, sizeof(limb) * 5); + fsum(xxprime, zzprime); + fdifference_backwards(zzprime, origxprime); + fsquare_times(x3, xxprime, 1); + fsquare_times(zzzprime, zzprime, 1); + fmul(z3, zzzprime, qmqp); + + fsquare_times(xx, x, 1); + fsquare_times(zz, z, 1); + fmul(x2, xx, zz); + fdifference_backwards(zz, xx); // does zz = xx - zz + fscalar_product(zzz, zz, 121665); + fsum(zzz, xx); + fmul(z2, zz, zzz); +} + +// ----------------------------------------------------------------------------- +// Maybe swap the contents of two limb arrays (@a and @b), each @len elements +// long. Perform the swap iff @swap is non-zero. +// +// This function performs the swap without leaking any side-channel +// information. +// ----------------------------------------------------------------------------- +static void +swap_conditional(limb a[5], limb b[5], limb iswap) { + unsigned i; + const limb swap = -iswap; + + for (i = 0; i < 5; ++i) { + const limb x = swap & (a[i] ^ b[i]); + a[i] ^= x; + b[i] ^= x; + } +} + +/* Calculates nQ where Q is the x-coordinate of a point on the curve + * + * resultx/resultz: the x coordinate of the resulting curve point (short form) + * n: a little endian, 32-byte number + * q: a point of the curve (short form) + */ +static void +cmult(limb *resultx, limb *resultz, const u8 *n, const limb *q) { + limb a[5] = {0}, b[5] = {1}, c[5] = {1}, d[5] = {0}; + limb *nqpqx = a, *nqpqz = b, *nqx = c, *nqz = d, *t; + limb e[5] = {0}, f[5] = {1}, g[5] = {0}, h[5] = {1}; + limb *nqpqx2 = e, *nqpqz2 = f, *nqx2 = g, *nqz2 = h; + + unsigned i, j; + + memcpy(nqpqx, q, sizeof(limb) * 5); + + for (i = 0; i < 32; ++i) { + u8 byte = n[31 - i]; + for (j = 0; j < 8; ++j) { + const limb bit = byte >> 7; + + swap_conditional(nqx, nqpqx, bit); + swap_conditional(nqz, nqpqz, bit); + fmonty(nqx2, nqz2, + nqpqx2, nqpqz2, + nqx, nqz, + nqpqx, nqpqz, + q); + swap_conditional(nqx2, nqpqx2, bit); + swap_conditional(nqz2, nqpqz2, bit); + + t = nqx; + nqx = nqx2; + nqx2 = t; + t = nqz; + nqz = nqz2; + nqz2 = t; + t = nqpqx; + nqpqx = nqpqx2; + nqpqx2 = t; + t = nqpqz; + nqpqz = nqpqz2; + nqpqz2 = t; + + byte <<= 1; + } + } + + memcpy(resultx, nqx, sizeof(limb) * 5); + memcpy(resultz, nqz, sizeof(limb) * 5); +} + + +// ----------------------------------------------------------------------------- +// Shamelessly copied from djb's code, tightened a little +// ----------------------------------------------------------------------------- +static void +crecip(felem out, const felem z) { + felem a,t0,b,c; + + /* 2 */ fsquare_times(a, z, 1); // a = 2 + /* 8 */ fsquare_times(t0, a, 2); + /* 9 */ fmul(b, t0, z); // b = 9 + /* 11 */ fmul(a, b, a); // a = 11 + /* 22 */ fsquare_times(t0, a, 1); + /* 2^5 - 2^0 = 31 */ fmul(b, t0, b); + /* 2^10 - 2^5 */ fsquare_times(t0, b, 5); + /* 2^10 - 2^0 */ fmul(b, t0, b); + /* 2^20 - 2^10 */ fsquare_times(t0, b, 10); + /* 2^20 - 2^0 */ fmul(c, t0, b); + /* 2^40 - 2^20 */ fsquare_times(t0, c, 20); + /* 2^40 - 2^0 */ fmul(t0, t0, c); + /* 2^50 - 2^10 */ fsquare_times(t0, t0, 10); + /* 2^50 - 2^0 */ fmul(b, t0, b); + /* 2^100 - 2^50 */ fsquare_times(t0, b, 50); + /* 2^100 - 2^0 */ fmul(c, t0, b); + /* 2^200 - 2^100 */ fsquare_times(t0, c, 100); + /* 2^200 - 2^0 */ fmul(t0, t0, c); + /* 2^250 - 2^50 */ fsquare_times(t0, t0, 50); + /* 2^250 - 2^0 */ fmul(t0, t0, b); + /* 2^255 - 2^5 */ fsquare_times(t0, t0, 5); + /* 2^255 - 21 */ fmul(out, t0, a); +} + +void +crypto_nP(u8 *sharedsecret, const u8 *secret, const u8 *theirpublic) { + limb bp[5], x[5], z[5], zmone[5]; + uint8_t e[32]; + int i; + + for (i = 0;i < 32;++i) e[i] = secret[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fexpand(bp, theirpublic); + cmult(x, z, e, bp); + crecip(zmone, z); + fmul(z, x, zmone); + fcontract(sharedsecret, z); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/Makefile b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/Makefile new file mode 100644 index 0000000000..5820ee365d --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/Makefile @@ -0,0 +1,7 @@ +all: montgomery.h pow225521.h + +pow225521.h: pow225521.q pow225521.h.do + ./pow225521.h.do < pow225521.q > pow225521.h + +montgomery.h: montgomery.q montgomery.h.do + ./montgomery.h.do < montgomery.q > montgomery.h diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/README b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/README new file mode 100644 index 0000000000..ea6fdb0c06 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/README @@ -0,0 +1,4 @@ +Upstream: supercop/crypto_scalarmult/curve25519/ref10 + +Changes from upstream: Tweaked API to provide crypto_dh instead of +crypto_scalarmult. diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe.h b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe.h new file mode 120000 index 0000000000..0483736bb5 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe.h @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/ref10/fe.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_0.c b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_0.c new file mode 120000 index 0000000000..a7b0312e8a --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_0.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_0.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_1.c b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_1.c new file mode 120000 index 0000000000..8197eecd1c --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_1.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_1.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_add.c b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_add.c new file mode 120000 index 0000000000..b99689dbe3 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_add.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_add.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_copy.c b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_copy.c new file mode 120000 index 0000000000..d1e2125ff1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_copy.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_copy.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_cswap.c b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_cswap.c new file mode 100644 index 0000000000..a3f5df8313 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_cswap.c @@ -0,0 +1,75 @@ +// linker define fe_cswap + +#include "fe.h" + +/* +Replace (f,g) with (g,f) if b == 1; +replace (f,g) with (f,g) if b == 0. + +Preconditions: b in {0,1}. +*/ + +void fe_cswap(fe f,fe g,unsigned int b) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 g0 = g[0]; + crypto_int32 g1 = g[1]; + crypto_int32 g2 = g[2]; + crypto_int32 g3 = g[3]; + crypto_int32 g4 = g[4]; + crypto_int32 g5 = g[5]; + crypto_int32 g6 = g[6]; + crypto_int32 g7 = g[7]; + crypto_int32 g8 = g[8]; + crypto_int32 g9 = g[9]; + crypto_int32 x0 = f0 ^ g0; + crypto_int32 x1 = f1 ^ g1; + crypto_int32 x2 = f2 ^ g2; + crypto_int32 x3 = f3 ^ g3; + crypto_int32 x4 = f4 ^ g4; + crypto_int32 x5 = f5 ^ g5; + crypto_int32 x6 = f6 ^ g6; + crypto_int32 x7 = f7 ^ g7; + crypto_int32 x8 = f8 ^ g8; + crypto_int32 x9 = f9 ^ g9; + b = -b; + x0 &= b; + x1 &= b; + x2 &= b; + x3 &= b; + x4 &= b; + x5 &= b; + x6 &= b; + x7 &= b; + x8 &= b; + x9 &= b; + f[0] = f0 ^ x0; + f[1] = f1 ^ x1; + f[2] = f2 ^ x2; + f[3] = f3 ^ x3; + f[4] = f4 ^ x4; + f[5] = f5 ^ x5; + f[6] = f6 ^ x6; + f[7] = f7 ^ x7; + f[8] = f8 ^ x8; + f[9] = f9 ^ x9; + g[0] = g0 ^ x0; + g[1] = g1 ^ x1; + g[2] = g2 ^ x2; + g[3] = g3 ^ x3; + g[4] = g4 ^ x4; + g[5] = g5 ^ x5; + g[6] = g6 ^ x6; + g[7] = g7 ^ x7; + g[8] = g8 ^ x8; + g[9] = g9 ^ x9; +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_frombytes.c b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_frombytes.c new file mode 120000 index 0000000000..d0bf75ff64 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_frombytes.c @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/ref10/fe_frombytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_invert.c new file mode 120000 index 0000000000..35ea45a28d --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_invert.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_mul.c b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_mul.c new file mode 120000 index 0000000000..70f40205e6 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_mul.c @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/ref10/fe_mul.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_mul121666.c b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_mul121666.c new file mode 100644 index 0000000000..c1dcfa8be1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_mul121666.c @@ -0,0 +1,72 @@ +// linker define fe_mul121666 + +#include "fe.h" +#include "crypto_int64.h" + +/* +h = f * 121666 +Can overlap h with f. + +Preconditions: + |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + +Postconditions: + |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. +*/ + +void fe_mul121666(fe h,const fe f) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int64 h0 = f0 * (crypto_int64) 121666; + crypto_int64 h1 = f1 * (crypto_int64) 121666; + crypto_int64 h2 = f2 * (crypto_int64) 121666; + crypto_int64 h3 = f3 * (crypto_int64) 121666; + crypto_int64 h4 = f4 * (crypto_int64) 121666; + crypto_int64 h5 = f5 * (crypto_int64) 121666; + crypto_int64 h6 = f6 * (crypto_int64) 121666; + crypto_int64 h7 = f7 * (crypto_int64) 121666; + crypto_int64 h8 = f8 * (crypto_int64) 121666; + crypto_int64 h9 = f9 * (crypto_int64) 121666; + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + + carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_sq.c b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_sq.c new file mode 120000 index 0000000000..27155da542 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_sq.c @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/ref10/fe_sq.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_sub.c b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_sub.c new file mode 120000 index 0000000000..e467aba96c --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_sub.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/fe_sub.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_tobytes.c b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_tobytes.c new file mode 120000 index 0000000000..332747b23c --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/fe_tobytes.c @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/ref10/fe_tobytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/implementors new file mode 120000 index 0000000000..9bd2e07525 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/ref10/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/montgomery.h b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/montgomery.h new file mode 100644 index 0000000000..91e28c09e0 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/ref10/montgomery.h @@ -0,0 +1,140 @@ + +/* qhasm: fe X2 */ + +/* qhasm: fe Z2 */ + +/* qhasm: fe X3 */ + +/* qhasm: fe Z3 */ + +/* qhasm: fe X4 */ + +/* qhasm: fe Z4 */ + +/* qhasm: fe X5 */ + +/* qhasm: fe Z5 */ + +/* qhasm: fe A */ + +/* qhasm: fe B */ + +/* qhasm: fe C */ + +/* qhasm: fe D */ + +/* qhasm: fe E */ + +/* qhasm: fe AA */ + +/* qhasm: fe BB */ + +/* qhasm: fe DA */ + +/* qhasm: fe CB */ + +/* qhasm: fe t0 */ + +/* qhasm: fe t1 */ + +/* qhasm: fe t2 */ + +/* qhasm: fe t3 */ + +/* qhasm: fe t4 */ + +/* qhasm: enter ladder */ + +/* qhasm: D = X3-Z3 */ +/* asm 1: fe_sub(>D=fe#5,D=tmp0,B=fe#6,B=tmp1,A=fe#1,A=x2,C=fe#2,C=z2,DA=fe#4,DA=z3,CB=fe#2,CB=z2,BB=fe#5,BB=tmp0,AA=fe#6,AA=tmp1,t0=fe#3,t0=x3,t1=fe#2,t1=z2,X4=fe#1,X4=x2,E=fe#6,E=tmp1,t2=fe#2,t2=z2,t3=fe#4,t3=z3,X5=fe#3,X5=x3,t4=fe#5,t4=tmp0,Z5=fe#4,x1,Z5=z3,x1,Z4=fe#2,Z4=z2,X2=fe#1:>Z2=fe#2:>X3=fe#3:>Z3=fe#4: +return:nofallthrough:h=fe:asm/fe_add(>h,h=fe:asm/fe_sub(>h,h=fe:asm/fe_mul(>h,h=fe:asm/fe_sq(>h,h=fe:asm/fe_mul(>h,x1,h=fe:asm/fe_mul121666(>h,= 0;--pos) { + b = e[pos / 8] >> (pos & 7); + b &= 1; + swap ^= b; + fe_cswap(x2,x3,swap); + fe_cswap(z2,z3,swap); + swap = b; +#include "montgomery.h" + } + fe_cswap(x2,x3,swap); + fe_cswap(z2,z3,swap); + + fe_invert(z2,z2); + fe_mul(x2,x2,z2); + fe_tobytes(q,x2); +} diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/architectures b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/architectures new file mode 120000 index 0000000000..fd9d4fc548 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/architectures @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/consts_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/consts_namespace.h new file mode 120000 index 0000000000..13204c7c2f --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/consts_namespace.h @@ -0,0 +1 @@ +../../../crypto_nG/montgomery25519/sandy2x/consts_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe.h b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe.h new file mode 120000 index 0000000000..e926332125 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe.h @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/fe.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51.h b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51.h new file mode 120000 index 0000000000..f2085c815b --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51.h @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/fe51.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_invert.c b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_invert.c new file mode 120000 index 0000000000..455134a6f5 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_invert.c @@ -0,0 +1 @@ +../../../crypto_nG/montgomery25519/sandy2x/fe51_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_mul.S b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_mul.S new file mode 120000 index 0000000000..41d70cb2b3 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_mul.S @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/fe51_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_namespace.h new file mode 120000 index 0000000000..ca30dc4945 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_namespace.h @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/fe51_namespace.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_nsquare.S b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_nsquare.S new file mode 120000 index 0000000000..5d7efd1947 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_nsquare.S @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/fe51_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_pack.S b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_pack.S new file mode 120000 index 0000000000..65f9844698 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe51_pack.S @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/fe51_pack.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe_frombytes.c b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe_frombytes.c new file mode 120000 index 0000000000..1e4af619d1 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/fe_frombytes.c @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/fe_frombytes.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/implementors b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/implementors new file mode 120000 index 0000000000..a4959fbf9a --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/implementors @@ -0,0 +1 @@ +../../../crypto_pow/inv25519/sandy2x/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/ladder.S b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/ladder.S new file mode 100644 index 0000000000..5c80e20fe4 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/ladder.S @@ -0,0 +1,7503 @@ +// linker define ladder +// linker use v0_0 +// linker use v1_0 +// linker use v2_1 +// linker use v19_19 +// linker use v38_1 +// linker use v38_38 +// linker use v121666_121666 +// linker use m25 +// linker use m26 +// linker use subc0 +// linker use subc2 + +#include "ladder_namespace.h" +#include "consts_namespace.h" + +# qhasm: int64 input_0 + +# qhasm: int64 input_1 + +# qhasm: int64 input_2 + +# qhasm: int64 input_3 + +# qhasm: int64 input_4 + +# qhasm: int64 input_5 + +# qhasm: stack64 input_6 + +# qhasm: stack64 input_7 + +# qhasm: int64 caller_r11 + +# qhasm: int64 caller_r12 + +# qhasm: int64 caller_r13 + +# qhasm: int64 caller_r14 + +# qhasm: int64 caller_r15 + +# qhasm: int64 caller_rbx + +# qhasm: int64 caller_rbp + +# qhasm: stack128 p01_stack + +# qhasm: stack128 p23_stack + +# qhasm: stack128 p23_19_19_stack + +# qhasm: stack128 p45_stack + +# qhasm: stack128 p45_19_19_stack + +# qhasm: stack128 p67_stack + +# qhasm: stack128 p67_19_19_stack + +# qhasm: stack128 p89_stack + +# qhasm: stack128 p89_19_19_stack + +# qhasm: stack128 p12_2_1_stack + +# qhasm: stack128 p12_38_19_stack + +# qhasm: stack128 p34_2_1_stack + +# qhasm: stack128 p34_38_19_stack + +# qhasm: stack128 p56_2_1_stack + +# qhasm: stack128 p56_38_19_stack + +# qhasm: stack128 p78_2_1_stack + +# qhasm: stack128 p78_38_19_stack + +# qhasm: stack128 p90_38_1_stack + +# qhasm: reg128 g_01 + +# qhasm: reg128 g_89 + +# qhasm: stack128 x3_0 + +# qhasm: stack128 x3_2 + +# qhasm: stack128 x3_4 + +# qhasm: stack128 x3_6 + +# qhasm: stack128 x3_8 + +# qhasm: stack128 z3_0 + +# qhasm: stack128 z3_2 + +# qhasm: stack128 z3_4 + +# qhasm: stack128 z3_6 + +# qhasm: stack128 z3_8 + +# qhasm: stack128 t0_0 + +# qhasm: stack128 t0_2 + +# qhasm: stack128 t0_4 + +# qhasm: stack128 t0_6 + +# qhasm: stack128 t0_8 + +# qhasm: reg128 init0 + +# qhasm: reg128 init1 + +# qhasm: int64 b + +# qhasm: int64 b0 + +# qhasm: int64 tmp0 + +# qhasm: int64 b1 + +# qhasm: int64 tmp1 + +# qhasm: int64 b2 + +# qhasm: int64 tmp2 + +# qhasm: int64 b3 + +# qhasm: int64 tmp3 + +# qhasm: int64 byte + +# qhasm: int64 ptr + +# qhasm: int64 pos + +# qhasm: reg128 r + +# qhasm: reg128 r0 + +# qhasm: reg128 r1 + +# qhasm: reg128 r2 + +# qhasm: reg128 r3 + +# qhasm: reg128 r4 + +# qhasm: reg128 r5 + +# qhasm: reg128 r6 + +# qhasm: reg128 r7 + +# qhasm: reg128 r8 + +# qhasm: reg128 r9 + +# qhasm: reg128 f0 + +# qhasm: reg128 f1 + +# qhasm: reg128 f2 + +# qhasm: reg128 f3 + +# qhasm: reg128 f4 + +# qhasm: reg128 f5 + +# qhasm: reg128 f6 + +# qhasm: reg128 f7 + +# qhasm: reg128 f8 + +# qhasm: reg128 f9 + +# qhasm: stack128 f0_stack + +# qhasm: stack128 f1_stack + +# qhasm: stack128 f2_stack + +# qhasm: stack128 f3_stack + +# qhasm: stack128 f4_stack + +# qhasm: stack128 f5_stack + +# qhasm: stack128 f6_stack + +# qhasm: stack128 f7_stack + +# qhasm: stack128 f8_stack + +# qhasm: stack128 f9_stack + +# qhasm: stack128 f0_2_stack + +# qhasm: stack128 f1_2_stack + +# qhasm: stack128 f2_2_stack + +# qhasm: stack128 f3_2_stack + +# qhasm: stack128 f4_2_stack + +# qhasm: stack128 f5_2_stack + +# qhasm: stack128 f6_2_stack + +# qhasm: stack128 f7_2_stack + +# qhasm: stack128 f8_2_stack + +# qhasm: stack128 f9_2_stack + +# qhasm: reg128 f1_2 + +# qhasm: reg128 f2_2 + +# qhasm: reg128 f3_2 + +# qhasm: reg128 f4_2 + +# qhasm: reg128 f9_38 + +# qhasm: stack128 f5_38_stack + +# qhasm: stack128 f6_19_stack + +# qhasm: stack128 f7_38_stack + +# qhasm: stack128 f8_19_stack + +# qhasm: reg128 g0 + +# qhasm: reg128 g1 + +# qhasm: reg128 g2 + +# qhasm: reg128 g3 + +# qhasm: reg128 g4 + +# qhasm: reg128 g5 + +# qhasm: reg128 g6 + +# qhasm: reg128 g7 + +# qhasm: reg128 g8 + +# qhasm: reg128 g9 + +# qhasm: reg128 h0 + +# qhasm: reg128 h1 + +# qhasm: reg128 h2 + +# qhasm: reg128 h3 + +# qhasm: reg128 h4 + +# qhasm: reg128 h5 + +# qhasm: reg128 h6 + +# qhasm: reg128 h7 + +# qhasm: reg128 h8 + +# qhasm: reg128 h9 + +# qhasm: reg128 h1_2 + +# qhasm: reg128 h2_2 + +# qhasm: reg128 h3_2 + +# qhasm: reg128 h4_2 + +# qhasm: reg128 h9_38 + +# qhasm: reg128 carry0 + +# qhasm: reg128 carry1 + +# qhasm: reg128 carry2 + +# qhasm: reg128 carry3 + +# qhasm: reg128 carry4 + +# qhasm: reg128 carry5 + +# qhasm: reg128 carry6 + +# qhasm: reg128 carry7 + +# qhasm: reg128 carry8 + +# qhasm: reg128 carry9 + +# qhasm: stack128 s + +# qhasm: stack8192 masks + +# qhasm: reg128 mask + +# qhasm: reg128 diff + +# qhasm: stack128 h5_stack + +# qhasm: stack128 h6_stack + +# qhasm: stack128 h7_stack + +# qhasm: stack128 h8_stack + +# qhasm: stack128 h5_2_stack + +# qhasm: stack128 h6_2_stack + +# qhasm: stack128 h7_2_stack + +# qhasm: stack128 h8_2_stack + +# qhasm: stack128 h5_38_stack + +# qhasm: stack128 h6_19_stack + +# qhasm: stack128 h7_38_stack + +# qhasm: stack128 h8_19_stack + +# qhasm: reg128 m0 + +# qhasm: reg128 m1 + +# qhasm: reg128 m2 + +# qhasm: reg128 m3 + +# qhasm: reg128 m4 + +# qhasm: reg128 m5 + +# qhasm: reg128 m6 + +# qhasm: reg128 m7 + +# qhasm: reg128 m8 + +# qhasm: reg128 m9 + +# qhasm: reg128 h_01 + +# qhasm: reg128 h_23 + +# qhasm: reg128 h_45 + +# qhasm: reg128 h_67 + +# qhasm: reg128 h_89 + +# qhasm: int64 h_0 + +# qhasm: int64 h_1 + +# qhasm: int64 h_2 + +# qhasm: int64 h_3 + +# qhasm: int64 h_4 + +# qhasm: int64 h_5 + +# qhasm: int64 h_6 + +# qhasm: int64 h_7 + +# qhasm: int64 h_8 + +# qhasm: int64 h_9 + +# qhasm: int64 carry_0 + +# qhasm: int64 carry_1 + +# qhasm: int64 carry_2 + +# qhasm: int64 carry_3 + +# qhasm: int64 carry_4 + +# qhasm: int64 carry_5 + +# qhasm: int64 carry_6 + +# qhasm: int64 carry_7 + +# qhasm: int64 carry_8 + +# qhasm: int64 carry_9 + +# qhasm: stack128 buf0 + +# qhasm: stack128 buf1 + +# qhasm: stack128 buf2 + +# qhasm: stack128 buf3 + +# qhasm: stack128 buf4 + +# qhasm: stack128 buf5 + +# qhasm: stack128 buf6 + +# qhasm: stack128 buf7 + +# qhasm: stack128 buf8 + +# qhasm: stack128 buf9 + +# qhasm: stack64 r11_stack + +# qhasm: stack64 r12_stack + +# qhasm: stack64 r13_stack + +# qhasm: stack64 r14_stack + +# qhasm: stack64 r15_stack + +# qhasm: stack64 rbx_stack + +# qhasm: stack64 rbp_stack + +# qhasm: enter ladder +.p2align 5 +.global _ladder +.global ladder +_ladder: +ladder: +mov %rsp,%r11 +and $31,%r11 +add $1856,%r11 +sub %r11,%rsp + +# qhasm: r11_stack = caller_r11 +# asm 1: movq r11_stack=stack64#1 +# asm 2: movq r11_stack=1824(%rsp) +movq %r11,1824(%rsp) + +# qhasm: r12_stack = caller_r12 +# asm 1: movq r12_stack=stack64#2 +# asm 2: movq r12_stack=1832(%rsp) +movq %r12,1832(%rsp) + +# qhasm: r13_stack = caller_r13 +# asm 1: movq r13_stack=stack64#3 +# asm 2: movq r13_stack=1840(%rsp) +movq %r13,1840(%rsp) + +# qhasm: r14_stack = caller_r14 +# asm 1: movq r14_stack=stack64#4 +# asm 2: movq r14_stack=1848(%rsp) +movq %r14,1848(%rsp) + +# qhasm: init0 = v0_0 +# asm 1: movdqa v0_0,>init0=reg128#1 +# asm 2: movdqa v0_0,>init0=%xmm0 +movdqa v0_0(%rip),%xmm0 + +# qhasm: init1 = v1_0 +# asm 1: movdqa v1_0,>init1=reg128#2 +# asm 2: movdqa v1_0,>init1=%xmm1 +movdqa v1_0(%rip),%xmm1 + +# qhasm: r = mem128[input_0 + 0] +# asm 1: movdqu 0(r=reg128#3 +# asm 2: movdqu 0(r=%xmm2 +movdqu 0(%rdi),%xmm2 + +# qhasm: x3_0 = r +# asm 1: movdqa x3_0=stack128#1 +# asm 2: movdqa x3_0=0(%rsp) +movdqa %xmm2,0(%rsp) + +# qhasm: r = mem128[input_0 + 16] +# asm 1: movdqu 16(r=reg128#3 +# asm 2: movdqu 16(r=%xmm2 +movdqu 16(%rdi),%xmm2 + +# qhasm: x3_2 = r +# asm 1: movdqa x3_2=stack128#2 +# asm 2: movdqa x3_2=16(%rsp) +movdqa %xmm2,16(%rsp) + +# qhasm: r = mem128[input_0 + 32] +# asm 1: movdqu 32(r=reg128#3 +# asm 2: movdqu 32(r=%xmm2 +movdqu 32(%rdi),%xmm2 + +# qhasm: x3_4 = r +# asm 1: movdqa x3_4=stack128#3 +# asm 2: movdqa x3_4=32(%rsp) +movdqa %xmm2,32(%rsp) + +# qhasm: r = mem128[input_0 + 48] +# asm 1: movdqu 48(r=reg128#3 +# asm 2: movdqu 48(r=%xmm2 +movdqu 48(%rdi),%xmm2 + +# qhasm: x3_6 = r +# asm 1: movdqa x3_6=stack128#4 +# asm 2: movdqa x3_6=48(%rsp) +movdqa %xmm2,48(%rsp) + +# qhasm: r = mem128[input_0 + 64] +# asm 1: movdqu 64(r=reg128#3 +# asm 2: movdqu 64(r=%xmm2 +movdqu 64(%rdi),%xmm2 + +# qhasm: x3_8 = r +# asm 1: movdqa x3_8=stack128#5 +# asm 2: movdqa x3_8=64(%rsp) +movdqa %xmm2,64(%rsp) + +# qhasm: z3_0 = init1 +# asm 1: movdqa z3_0=stack128#6 +# asm 2: movdqa z3_0=80(%rsp) +movdqa %xmm1,80(%rsp) + +# qhasm: z3_2 = init0 +# asm 1: movdqa z3_2=stack128#7 +# asm 2: movdqa z3_2=96(%rsp) +movdqa %xmm0,96(%rsp) + +# qhasm: z3_4 = init0 +# asm 1: movdqa z3_4=stack128#8 +# asm 2: movdqa z3_4=112(%rsp) +movdqa %xmm0,112(%rsp) + +# qhasm: z3_6 = init0 +# asm 1: movdqa z3_6=stack128#9 +# asm 2: movdqa z3_6=128(%rsp) +movdqa %xmm0,128(%rsp) + +# qhasm: z3_8 = init0 +# asm 1: movdqa z3_8=stack128#10 +# asm 2: movdqa z3_8=144(%rsp) +movdqa %xmm0,144(%rsp) + +# qhasm: f0 = init1 +# asm 1: movdqa f0=reg128#1 +# asm 2: movdqa f0=%xmm0 +movdqa %xmm1,%xmm0 + +# qhasm: f1 ^= f1 +# asm 1: pxor >f1=reg128#2,>f1=reg128#2 +# asm 2: pxor >f1=%xmm1,>f1=%xmm1 +pxor %xmm1,%xmm1 + +# qhasm: f2 ^= f2 +# asm 1: pxor >f2=reg128#3,>f2=reg128#3 +# asm 2: pxor >f2=%xmm2,>f2=%xmm2 +pxor %xmm2,%xmm2 + +# qhasm: f3 ^= f3 +# asm 1: pxor >f3=reg128#4,>f3=reg128#4 +# asm 2: pxor >f3=%xmm3,>f3=%xmm3 +pxor %xmm3,%xmm3 + +# qhasm: f4 ^= f4 +# asm 1: pxor >f4=reg128#5,>f4=reg128#5 +# asm 2: pxor >f4=%xmm4,>f4=%xmm4 +pxor %xmm4,%xmm4 + +# qhasm: f5 ^= f5 +# asm 1: pxor >f5=reg128#6,>f5=reg128#6 +# asm 2: pxor >f5=%xmm5,>f5=%xmm5 +pxor %xmm5,%xmm5 + +# qhasm: f6 ^= f6 +# asm 1: pxor >f6=reg128#7,>f6=reg128#7 +# asm 2: pxor >f6=%xmm6,>f6=%xmm6 +pxor %xmm6,%xmm6 + +# qhasm: f7 ^= f7 +# asm 1: pxor >f7=reg128#8,>f7=reg128#8 +# asm 2: pxor >f7=%xmm7,>f7=%xmm7 +pxor %xmm7,%xmm7 + +# qhasm: f8 ^= f8 +# asm 1: pxor >f8=reg128#9,>f8=reg128#9 +# asm 2: pxor >f8=%xmm8,>f8=%xmm8 +pxor %xmm8,%xmm8 + +# qhasm: f9 ^= f9 +# asm 1: pxor >f9=reg128#10,>f9=reg128#10 +# asm 2: pxor >f9=%xmm9,>f9=%xmm9 +pxor %xmm9,%xmm9 + +# qhasm: r = mem128[input_0 + 0] +# asm 1: movdqu 0(r=reg128#11 +# asm 2: movdqu 0(r=%xmm10 +movdqu 0(%rdi),%xmm10 + +# qhasm: p01_stack = r +# asm 1: movdqa p01_stack=stack128#11 +# asm 2: movdqa p01_stack=160(%rsp) +movdqa %xmm10,160(%rsp) + +# qhasm: r = mem128[input_0 + 16] +# asm 1: movdqu 16(r=reg128#11 +# asm 2: movdqu 16(r=%xmm10 +movdqu 16(%rdi),%xmm10 + +# qhasm: p23_stack = r +# asm 1: movdqa p23_stack=stack128#12 +# asm 2: movdqa p23_stack=176(%rsp) +movdqa %xmm10,176(%rsp) + +# qhasm: 2x r *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,p23_19_19_stack=stack128#13 +# asm 2: movdqa p23_19_19_stack=192(%rsp) +movdqa %xmm10,192(%rsp) + +# qhasm: r = mem128[input_0 + 32] +# asm 1: movdqu 32(r=reg128#11 +# asm 2: movdqu 32(r=%xmm10 +movdqu 32(%rdi),%xmm10 + +# qhasm: p45_stack = r +# asm 1: movdqa p45_stack=stack128#14 +# asm 2: movdqa p45_stack=208(%rsp) +movdqa %xmm10,208(%rsp) + +# qhasm: 2x r *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,p45_19_19_stack=stack128#15 +# asm 2: movdqa p45_19_19_stack=224(%rsp) +movdqa %xmm10,224(%rsp) + +# qhasm: r = mem128[input_0 + 48] +# asm 1: movdqu 48(r=reg128#11 +# asm 2: movdqu 48(r=%xmm10 +movdqu 48(%rdi),%xmm10 + +# qhasm: p67_stack = r +# asm 1: movdqa p67_stack=stack128#16 +# asm 2: movdqa p67_stack=240(%rsp) +movdqa %xmm10,240(%rsp) + +# qhasm: 2x r *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,p67_19_19_stack=stack128#17 +# asm 2: movdqa p67_19_19_stack=256(%rsp) +movdqa %xmm10,256(%rsp) + +# qhasm: r = mem128[input_0 + 64] +# asm 1: movdqu 64(r=reg128#11 +# asm 2: movdqu 64(r=%xmm10 +movdqu 64(%rdi),%xmm10 + +# qhasm: p89_stack = r +# asm 1: movdqa p89_stack=stack128#18 +# asm 2: movdqa p89_stack=272(%rsp) +movdqa %xmm10,272(%rsp) + +# qhasm: 2x r *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,p89_19_19_stack=stack128#19 +# asm 2: movdqa p89_19_19_stack=288(%rsp) +movdqa %xmm10,288(%rsp) + +# qhasm: r = mem128[input_0 + 8] +# asm 1: movdqu 8(r=reg128#11 +# asm 2: movdqu 8(r=%xmm10 +movdqu 8(%rdi),%xmm10 + +# qhasm: 2x r *= mem128[ v2_1 ] +# asm 1: pmuludq v2_1,p12_2_1_stack=stack128#20 +# asm 2: movdqa p12_2_1_stack=304(%rsp) +movdqa %xmm10,304(%rsp) + +# qhasm: 2x r *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,p12_38_19_stack=stack128#21 +# asm 2: movdqa p12_38_19_stack=320(%rsp) +movdqa %xmm10,320(%rsp) + +# qhasm: r = mem128[input_0 + 24] +# asm 1: movdqu 24(r=reg128#11 +# asm 2: movdqu 24(r=%xmm10 +movdqu 24(%rdi),%xmm10 + +# qhasm: 2x r *= mem128[ v2_1 ] +# asm 1: pmuludq v2_1,p34_2_1_stack=stack128#22 +# asm 2: movdqa p34_2_1_stack=336(%rsp) +movdqa %xmm10,336(%rsp) + +# qhasm: 2x r *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,p34_38_19_stack=stack128#23 +# asm 2: movdqa p34_38_19_stack=352(%rsp) +movdqa %xmm10,352(%rsp) + +# qhasm: r = mem128[input_0 + 40] +# asm 1: movdqu 40(r=reg128#11 +# asm 2: movdqu 40(r=%xmm10 +movdqu 40(%rdi),%xmm10 + +# qhasm: 2x r *= mem128[ v2_1 ] +# asm 1: pmuludq v2_1,p56_2_1_stack=stack128#24 +# asm 2: movdqa p56_2_1_stack=368(%rsp) +movdqa %xmm10,368(%rsp) + +# qhasm: 2x r *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,p56_38_19_stack=stack128#25 +# asm 2: movdqa p56_38_19_stack=384(%rsp) +movdqa %xmm10,384(%rsp) + +# qhasm: r = mem128[input_0 + 56] +# asm 1: movdqu 56(r=reg128#11 +# asm 2: movdqu 56(r=%xmm10 +movdqu 56(%rdi),%xmm10 + +# qhasm: 2x r *= mem128[ v2_1 ] +# asm 1: pmuludq v2_1,p78_2_1_stack=stack128#26 +# asm 2: movdqa p78_2_1_stack=400(%rsp) +movdqa %xmm10,400(%rsp) + +# qhasm: 2x r *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,p78_38_19_stack=stack128#27 +# asm 2: movdqa p78_38_19_stack=416(%rsp) +movdqa %xmm10,416(%rsp) + +# qhasm: g_01 = mem128[input_0 + 0] +# asm 1: movdqu 0(g_01=reg128#11 +# asm 2: movdqu 0(g_01=%xmm10 +movdqu 0(%rdi),%xmm10 + +# qhasm: g_89 = mem128[input_0 + 64] +# asm 1: movdqu 64(g_89=reg128#12 +# asm 2: movdqu 64(g_89=%xmm11 +movdqu 64(%rdi),%xmm11 + +# qhasm: g_01 = blend dwords of g_01 g_89 by 12 +# asm 1: blendps $12, g_89=reg128#11 +# asm 2: pshufd $2,g_89=%xmm10 +pshufd $2,%xmm10,%xmm10 + +# qhasm: 2x g_89 *= mem128[ v38_1 ] +# asm 1: pmuludq v38_1,p90_38_1_stack=stack128#28 +# asm 2: movdqa p90_38_1_stack=432(%rsp) +movdqa %xmm10,432(%rsp) + +# qhasm: b0 = mem64[input_1 + 0] +# asm 1: movq 0(b0=int64#3 +# asm 2: movq 0(b0=%rdx +movq 0(%rsi),%rdx + +# qhasm: b1 = mem64[input_1 + 8] +# asm 1: movq 8(b1=int64#4 +# asm 2: movq 8(b1=%rcx +movq 8(%rsi),%rcx + +# qhasm: b2 = mem64[input_1 + 16] +# asm 1: movq 16(b2=int64#5 +# asm 2: movq 16(b2=%r8 +movq 16(%rsi),%r8 + +# qhasm: b3 = mem64[input_1 + 24] +# asm 1: movq 24(b3=int64#6 +# asm 2: movq 24(b3=%r9 +movq 24(%rsi),%r9 + +# qhasm: b0 = (b1 b0) >> 1 +# asm 1: shrd $1,> 1 +# asm 1: shrd $1,> 1 +# asm 1: shrd $1,>= 1 +# asm 1: shr $1,ptr=int64#2 +# asm 2: leaq ptr=%rsi +leaq 800(%rsp),%rsi + +# qhasm: pos = 64 +# asm 1: mov $64,>pos=int64#7 +# asm 2: mov $64,>pos=%rax +mov $64,%rax + +# qhasm: small_loop: +._small_loop: + +# qhasm: tmp0 = b0 +# asm 1: mov tmp0=int64#8 +# asm 2: mov tmp0=%r10 +mov %rdx,%r10 + +# qhasm: tmp1 = b1 +# asm 1: mov tmp1=int64#9 +# asm 2: mov tmp1=%r11 +mov %rcx,%r11 + +# qhasm: tmp2 = b2 +# asm 1: mov tmp2=int64#10 +# asm 2: mov tmp2=%r12 +mov %r8,%r12 + +# qhasm: tmp3 = b3 +# asm 1: mov tmp3=int64#11 +# asm 2: mov tmp3=%r13 +mov %r9,%r13 + +# qhasm: (uint64) b0 >>= 1 +# asm 1: shr $1,>= 1 +# asm 1: shr $1,>= 1 +# asm 1: shr $1,>= 1 +# asm 1: shr $1,pos=int64#3 +# asm 2: mov $255,>pos=%rdx +mov $255,%rdx + +# qhasm: ptr += 760 +# asm 1: add $760,mask=reg128#11 +# asm 2: vbroadcastss 0(mask=%xmm10 +vbroadcastss 0(%rsi),%xmm10 + +# qhasm: ptr -= 4 +# asm 1: sub $4,g0=reg128#12 +# asm 2: movdqa g0=%xmm11 +movdqa 0(%rsp),%xmm11 + +# qhasm: g1 = z3_0 +# asm 1: movdqa g1=reg128#13 +# asm 2: movdqa g1=%xmm12 +movdqa 80(%rsp),%xmm12 + +# qhasm: diff = f0 ^ g0 +# asm 1: vpxor diff=reg128#14 +# asm 2: vpxor diff=%xmm13 +vpxor %xmm11,%xmm0,%xmm13 + +# qhasm: diff &= mask +# asm 1: pand diff=reg128#14 +# asm 2: vpxor diff=%xmm13 +vpxor %xmm12,%xmm1,%xmm13 + +# qhasm: diff &= mask +# asm 1: pand g2=reg128#14 +# asm 2: movdqa g2=%xmm13 +movdqa 16(%rsp),%xmm13 + +# qhasm: g3 = z3_2 +# asm 1: movdqa g3=reg128#15 +# asm 2: movdqa g3=%xmm14 +movdqa 96(%rsp),%xmm14 + +# qhasm: diff = f2 ^ g2 +# asm 1: vpxor diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm13,%xmm2,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm14,%xmm3,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand x3_2=stack128#1 +# asm 2: movdqa x3_2=0(%rsp) +movdqa %xmm13,0(%rsp) + +# qhasm: z3_2 = g3 +# asm 1: movdqa z3_2=stack128#2 +# asm 2: movdqa z3_2=16(%rsp) +movdqa %xmm14,16(%rsp) + +# qhasm: g4 = x3_4 +# asm 1: movdqa g4=reg128#14 +# asm 2: movdqa g4=%xmm13 +movdqa 32(%rsp),%xmm13 + +# qhasm: g5 = z3_4 +# asm 1: movdqa g5=reg128#15 +# asm 2: movdqa g5=%xmm14 +movdqa 112(%rsp),%xmm14 + +# qhasm: diff = f4 ^ g4 +# asm 1: vpxor diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm13,%xmm4,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm14,%xmm5,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand x3_4=stack128#3 +# asm 2: movdqa x3_4=32(%rsp) +movdqa %xmm13,32(%rsp) + +# qhasm: z3_4 = g5 +# asm 1: movdqa z3_4=stack128#6 +# asm 2: movdqa z3_4=80(%rsp) +movdqa %xmm14,80(%rsp) + +# qhasm: g6 = x3_6 +# asm 1: movdqa g6=reg128#14 +# asm 2: movdqa g6=%xmm13 +movdqa 48(%rsp),%xmm13 + +# qhasm: g7 = z3_6 +# asm 1: movdqa g7=reg128#15 +# asm 2: movdqa g7=%xmm14 +movdqa 128(%rsp),%xmm14 + +# qhasm: diff = f6 ^ g6 +# asm 1: vpxor diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm13,%xmm6,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm14,%xmm7,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand x3_6=stack128#4 +# asm 2: movdqa x3_6=48(%rsp) +movdqa %xmm13,48(%rsp) + +# qhasm: z3_6 = g7 +# asm 1: movdqa z3_6=stack128#7 +# asm 2: movdqa z3_6=96(%rsp) +movdqa %xmm14,96(%rsp) + +# qhasm: g8 = x3_8 +# asm 1: movdqa g8=reg128#14 +# asm 2: movdqa g8=%xmm13 +movdqa 64(%rsp),%xmm13 + +# qhasm: g9 = z3_8 +# asm 1: movdqa g9=reg128#15 +# asm 2: movdqa g9=%xmm14 +movdqa 144(%rsp),%xmm14 + +# qhasm: diff = f8 ^ g8 +# asm 1: vpxor diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm13,%xmm8,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand diff=reg128#16 +# asm 2: vpxor diff=%xmm15 +vpxor %xmm14,%xmm9,%xmm15 + +# qhasm: diff &= mask +# asm 1: pand x3_8=stack128#5 +# asm 2: movdqa x3_8=64(%rsp) +movdqa %xmm13,64(%rsp) + +# qhasm: z3_8 = g9 +# asm 1: movdqa z3_8=stack128#8 +# asm 2: movdqa z3_8=112(%rsp) +movdqa %xmm14,112(%rsp) + +# qhasm: 2x r = g0 + mem128[ subc0 ] +# asm 1: vpaddq subc0,r=reg128#11 +# asm 2: vpaddq subc0,r=%xmm10 +vpaddq subc0(%rip),%xmm11,%xmm10 + +# qhasm: 2x r -= g1 +# asm 1: psubq g1=reg128#13 +# asm 2: vpunpckhqdq g1=%xmm12 +vpunpckhqdq %xmm10,%xmm11,%xmm12 + +# qhasm: g0 = unpack_low(g0, r) +# asm 1: vpunpcklqdq g0=reg128#11 +# asm 2: vpunpcklqdq g0=%xmm10 +vpunpcklqdq %xmm10,%xmm11,%xmm10 + +# qhasm: 2x r = f0 + f1 +# asm 1: vpaddq r=reg128#12 +# asm 2: vpaddq r=%xmm11 +vpaddq %xmm1,%xmm0,%xmm11 + +# qhasm: 2x f0 += mem128[ subc0 ] +# asm 1: paddq subc0,f1=reg128#2 +# asm 2: vpunpckhqdq f1=%xmm1 +vpunpckhqdq %xmm11,%xmm0,%xmm1 + +# qhasm: f0 = unpack_low(f0, r) +# asm 1: vpunpcklqdq f0=reg128#1 +# asm 2: vpunpcklqdq f0=%xmm0 +vpunpcklqdq %xmm11,%xmm0,%xmm0 + +# qhasm: 2x h0 = g0 * f0 +# asm 1: vpmuludq h0=reg128#12 +# asm 2: vpmuludq h0=%xmm11 +vpmuludq %xmm0,%xmm10,%xmm11 + +# qhasm: 2x h1 = g0 * f1 +# asm 1: vpmuludq h1=reg128#14 +# asm 2: vpmuludq h1=%xmm13 +vpmuludq %xmm1,%xmm10,%xmm13 + +# qhasm: f1_stack = f1 +# asm 1: movdqa f1_stack=stack128#9 +# asm 2: movdqa f1_stack=128(%rsp) +movdqa %xmm1,128(%rsp) + +# qhasm: 2x f1 += f1 +# asm 1: paddq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm0,%xmm12,%xmm14 + +# qhasm: f0_stack = f0 +# asm 1: movdqa f0_stack=stack128#10 +# asm 2: movdqa f0_stack=144(%rsp) +movdqa %xmm0,144(%rsp) + +# qhasm: 2x h1 += r +# asm 1: paddq h2=reg128#1 +# asm 2: vpmuludq h2=%xmm0 +vpmuludq %xmm1,%xmm12,%xmm0 + +# qhasm: f1_2_stack = f1 +# asm 1: movdqa f1_2_stack=stack128#29 +# asm 2: movdqa f1_2_stack=448(%rsp) +movdqa %xmm1,448(%rsp) + +# qhasm: 2x r = f2 + f3 +# asm 1: vpaddq r=reg128#2 +# asm 2: vpaddq r=%xmm1 +vpaddq %xmm3,%xmm2,%xmm1 + +# qhasm: 2x f2 += mem128[ subc2 ] +# asm 1: paddq subc2,f3=reg128#4 +# asm 2: vpunpckhqdq f3=%xmm3 +vpunpckhqdq %xmm1,%xmm2,%xmm3 + +# qhasm: f2 = unpack_low(f2, r) +# asm 1: vpunpcklqdq f2=reg128#2 +# asm 2: vpunpcklqdq f2=%xmm1 +vpunpcklqdq %xmm1,%xmm2,%xmm1 + +# qhasm: 2x r = g0 * f2 +# asm 1: vpmuludq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm1,%xmm10,%xmm2 + +# qhasm: 2x h2 += r +# asm 1: paddq h3=reg128#3 +# asm 2: vpmuludq h3=%xmm2 +vpmuludq %xmm3,%xmm10,%xmm2 + +# qhasm: f3_stack = f3 +# asm 1: movdqa f3_stack=stack128#30 +# asm 2: movdqa f3_stack=464(%rsp) +movdqa %xmm3,464(%rsp) + +# qhasm: 2x f3 += f3 +# asm 1: paddq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm1,%xmm12,%xmm14 + +# qhasm: f2_stack = f2 +# asm 1: movdqa f2_stack=stack128#31 +# asm 2: movdqa f2_stack=480(%rsp) +movdqa %xmm1,480(%rsp) + +# qhasm: 2x h3 += r +# asm 1: paddq h4=reg128#2 +# asm 2: vpmuludq h4=%xmm1 +vpmuludq %xmm3,%xmm12,%xmm1 + +# qhasm: f3_2_stack = f3 +# asm 1: movdqa f3_2_stack=stack128#32 +# asm 2: movdqa f3_2_stack=496(%rsp) +movdqa %xmm3,496(%rsp) + +# qhasm: 2x r = f4 + f5 +# asm 1: vpaddq r=reg128#4 +# asm 2: vpaddq r=%xmm3 +vpaddq %xmm5,%xmm4,%xmm3 + +# qhasm: 2x f4 += mem128[ subc2 ] +# asm 1: paddq subc2,f5=reg128#6 +# asm 2: vpunpckhqdq f5=%xmm5 +vpunpckhqdq %xmm3,%xmm4,%xmm5 + +# qhasm: f4 = unpack_low(f4, r) +# asm 1: vpunpcklqdq f4=reg128#4 +# asm 2: vpunpcklqdq f4=%xmm3 +vpunpcklqdq %xmm3,%xmm4,%xmm3 + +# qhasm: 2x r = g0 * f4 +# asm 1: vpmuludq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq %xmm3,%xmm10,%xmm4 + +# qhasm: 2x h4 += r +# asm 1: paddq h5=reg128#5 +# asm 2: vpmuludq h5=%xmm4 +vpmuludq %xmm5,%xmm10,%xmm4 + +# qhasm: f5_stack = f5 +# asm 1: movdqa f5_stack=stack128#33 +# asm 2: movdqa f5_stack=512(%rsp) +movdqa %xmm5,512(%rsp) + +# qhasm: 2x f5 += f5 +# asm 1: paddq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm3,%xmm12,%xmm14 + +# qhasm: f4_stack = f4 +# asm 1: movdqa f4_stack=stack128#34 +# asm 2: movdqa f4_stack=528(%rsp) +movdqa %xmm3,528(%rsp) + +# qhasm: 2x h5 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpaddq r=%xmm3 +vpaddq %xmm7,%xmm6,%xmm3 + +# qhasm: 2x f6 += mem128[ subc2 ] +# asm 1: paddq subc2,f7=reg128#8 +# asm 2: vpunpckhqdq f7=%xmm7 +vpunpckhqdq %xmm3,%xmm6,%xmm7 + +# qhasm: f6 = unpack_low(f6, r) +# asm 1: vpunpcklqdq f6=reg128#4 +# asm 2: vpunpcklqdq f6=%xmm3 +vpunpcklqdq %xmm3,%xmm6,%xmm3 + +# qhasm: 2x h6 = g0 * f6 +# asm 1: vpmuludq h6=reg128#7 +# asm 2: vpmuludq h6=%xmm6 +vpmuludq %xmm3,%xmm10,%xmm6 + +# qhasm: 2x r = g1 * f5 +# asm 1: vpmuludq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm5,%xmm12,%xmm14 + +# qhasm: f5_2_stack = f5 +# asm 1: movdqa f5_2_stack=stack128#35 +# asm 2: movdqa f5_2_stack=544(%rsp) +movdqa %xmm5,544(%rsp) + +# qhasm: 2x f5 *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,f5_38_stack=stack128#36 +# asm 2: movdqa f5_38_stack=560(%rsp) +movdqa %xmm5,560(%rsp) + +# qhasm: 2x h6 += r +# asm 1: paddq h7=reg128#6 +# asm 2: vpmuludq h7=%xmm5 +vpmuludq %xmm7,%xmm10,%xmm5 + +# qhasm: f7_stack = f7 +# asm 1: movdqa f7_stack=stack128#37 +# asm 2: movdqa f7_stack=576(%rsp) +movdqa %xmm7,576(%rsp) + +# qhasm: 2x f7 += f7 +# asm 1: paddq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm3,%xmm12,%xmm14 + +# qhasm: f6_stack = f6 +# asm 1: movdqa f6_stack=stack128#38 +# asm 2: movdqa f6_stack=592(%rsp) +movdqa %xmm3,592(%rsp) + +# qhasm: 2x h7 += r +# asm 1: paddq f6_19_stack=stack128#39 +# asm 2: movdqa f6_19_stack=608(%rsp) +movdqa %xmm3,608(%rsp) + +# qhasm: 2x r = f8 + f9 +# asm 1: vpaddq r=reg128#4 +# asm 2: vpaddq r=%xmm3 +vpaddq %xmm9,%xmm8,%xmm3 + +# qhasm: 2x f8 += mem128[ subc2 ] +# asm 1: paddq subc2,f9=reg128#10 +# asm 2: vpunpckhqdq f9=%xmm9 +vpunpckhqdq %xmm3,%xmm8,%xmm9 + +# qhasm: f8 = unpack_low(f8, r) +# asm 1: vpunpcklqdq f8=reg128#4 +# asm 2: vpunpcklqdq f8=%xmm3 +vpunpcklqdq %xmm3,%xmm8,%xmm3 + +# qhasm: f8_stack = f8 +# asm 1: movdqa f8_stack=stack128#40 +# asm 2: movdqa f8_stack=624(%rsp) +movdqa %xmm3,624(%rsp) + +# qhasm: 2x h8 = g1 * f7 +# asm 1: vpmuludq h8=reg128#9 +# asm 2: vpmuludq h8=%xmm8 +vpmuludq %xmm7,%xmm12,%xmm8 + +# qhasm: f7_2_stack = f7 +# asm 1: movdqa f7_2_stack=stack128#41 +# asm 2: movdqa f7_2_stack=640(%rsp) +movdqa %xmm7,640(%rsp) + +# qhasm: 2x f7 *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,f7_38_stack=stack128#42 +# asm 2: movdqa f7_38_stack=656(%rsp) +movdqa %xmm7,656(%rsp) + +# qhasm: 2x r = g0 * f8 +# asm 1: vpmuludq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq %xmm3,%xmm10,%xmm7 + +# qhasm: 2x h8 += r +# asm 1: paddq h9=reg128#8 +# asm 2: vpmuludq h9=%xmm7 +vpmuludq %xmm9,%xmm10,%xmm7 + +# qhasm: f9_stack = f9 +# asm 1: movdqa f9_stack=stack128#43 +# asm 2: movdqa f9_stack=672(%rsp) +movdqa %xmm9,672(%rsp) + +# qhasm: 2x f9 += f9 +# asm 1: paddq r=reg128#11 +# asm 2: vpmuludq r=%xmm10 +vpmuludq %xmm3,%xmm12,%xmm10 + +# qhasm: 2x h9 += r +# asm 1: paddq f8_19_stack=stack128#44 +# asm 2: movdqa f8_19_stack=688(%rsp) +movdqa %xmm3,688(%rsp) + +# qhasm: 2x g1 *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq %xmm9,%xmm12,%xmm3 + +# qhasm: f9_2_stack = f9 +# asm 1: movdqa f9_2_stack=stack128#45 +# asm 2: movdqa f9_2_stack=704(%rsp) +movdqa %xmm9,704(%rsp) + +# qhasm: 2x h0 += r +# asm 1: paddq g2=reg128#4 +# asm 2: movdqa g2=%xmm3 +movdqa 0(%rsp),%xmm3 + +# qhasm: g3 = z3_2 +# asm 1: movdqa g3=reg128#10 +# asm 2: movdqa g3=%xmm9 +movdqa 16(%rsp),%xmm9 + +# qhasm: 2x r = g2 + mem128[ subc2 ] +# asm 1: vpaddq subc2,r=reg128#11 +# asm 2: vpaddq subc2,r=%xmm10 +vpaddq subc2(%rip),%xmm3,%xmm10 + +# qhasm: 2x r -= g3 +# asm 1: psubq g3=reg128#10 +# asm 2: vpunpckhqdq g3=%xmm9 +vpunpckhqdq %xmm10,%xmm3,%xmm9 + +# qhasm: g2 = unpack_low(g2, r) +# asm 1: vpunpcklqdq g2=reg128#4 +# asm 2: vpunpcklqdq g2=%xmm3 +vpunpcklqdq %xmm10,%xmm3,%xmm3 + +# qhasm: 2x r2 = g2 * f0_stack +# asm 1: vpmuludq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 144(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h2 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 128(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h3 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 480(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h4 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 464(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h5 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 528(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h6 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 512(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h7 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 592(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h8 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 576(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h9 += r2 +# asm 1: paddq r2=reg128#11 +# asm 2: vpmuludq r2=%xmm10 +vpmuludq 624(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h0 += r2 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 144(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h3 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 448(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h4 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 480(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h5 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 496(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h6 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 528(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h7 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 544(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h8 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 592(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h9 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 640(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h0 += r3 +# asm 1: paddq r3=reg128#4 +# asm 2: vpmuludq r3=%xmm3 +vpmuludq 624(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h1 += r3 +# asm 1: paddq g4=reg128#4 +# asm 2: movdqa g4=%xmm3 +movdqa 32(%rsp),%xmm3 + +# qhasm: g5 = z3_4 +# asm 1: movdqa g5=reg128#10 +# asm 2: movdqa g5=%xmm9 +movdqa 80(%rsp),%xmm9 + +# qhasm: 2x r = g4 + mem128[ subc2 ] +# asm 1: vpaddq subc2,r=reg128#11 +# asm 2: vpaddq subc2,r=%xmm10 +vpaddq subc2(%rip),%xmm3,%xmm10 + +# qhasm: 2x r -= g5 +# asm 1: psubq g5=reg128#10 +# asm 2: vpunpckhqdq g5=%xmm9 +vpunpckhqdq %xmm10,%xmm3,%xmm9 + +# qhasm: g4 = unpack_low(g4, r) +# asm 1: vpunpcklqdq g4=reg128#4 +# asm 2: vpunpcklqdq g4=%xmm3 +vpunpcklqdq %xmm10,%xmm3,%xmm3 + +# qhasm: 2x r4 = g4 * f0_stack +# asm 1: vpmuludq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 144(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h4 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 128(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h5 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 480(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h6 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 464(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h7 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 528(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h8 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 512(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h9 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 592(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h0 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 576(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h1 += r4 +# asm 1: paddq r4=reg128#11 +# asm 2: vpmuludq r4=%xmm10 +vpmuludq 624(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h2 += r4 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 144(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h5 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 448(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h6 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 480(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h7 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 496(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h8 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 528(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h9 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 544(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h0 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 592(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h1 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 640(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h2 += r5 +# asm 1: paddq r5=reg128#4 +# asm 2: vpmuludq r5=%xmm3 +vpmuludq 624(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h3 += r5 +# asm 1: paddq g6=reg128#4 +# asm 2: movdqa g6=%xmm3 +movdqa 48(%rsp),%xmm3 + +# qhasm: g7 = z3_6 +# asm 1: movdqa g7=reg128#10 +# asm 2: movdqa g7=%xmm9 +movdqa 96(%rsp),%xmm9 + +# qhasm: 2x r = g6 + mem128[ subc2 ] +# asm 1: vpaddq subc2,r=reg128#11 +# asm 2: vpaddq subc2,r=%xmm10 +vpaddq subc2(%rip),%xmm3,%xmm10 + +# qhasm: 2x r -= g7 +# asm 1: psubq g7=reg128#10 +# asm 2: vpunpckhqdq g7=%xmm9 +vpunpckhqdq %xmm10,%xmm3,%xmm9 + +# qhasm: g6 = unpack_low(g6, r) +# asm 1: vpunpcklqdq g6=reg128#4 +# asm 2: vpunpcklqdq g6=%xmm3 +vpunpcklqdq %xmm10,%xmm3,%xmm3 + +# qhasm: 2x r6 = g6 * f0_stack +# asm 1: vpmuludq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 144(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h6 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 128(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h7 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 480(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h8 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 464(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h9 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 528(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h0 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 512(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h1 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 592(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h2 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 576(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h3 += r6 +# asm 1: paddq r6=reg128#11 +# asm 2: vpmuludq r6=%xmm10 +vpmuludq 624(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h4 += r6 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 144(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h7 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 448(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h8 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 480(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h9 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 496(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h0 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 528(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h1 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 544(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h2 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 592(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h3 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 640(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h4 += r7 +# asm 1: paddq r7=reg128#4 +# asm 2: vpmuludq r7=%xmm3 +vpmuludq 624(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h5 += r7 +# asm 1: paddq g8=reg128#4 +# asm 2: movdqa g8=%xmm3 +movdqa 64(%rsp),%xmm3 + +# qhasm: g9 = z3_8 +# asm 1: movdqa g9=reg128#10 +# asm 2: movdqa g9=%xmm9 +movdqa 112(%rsp),%xmm9 + +# qhasm: 2x r = g8 + mem128[ subc2 ] +# asm 1: vpaddq subc2,r=reg128#11 +# asm 2: vpaddq subc2,r=%xmm10 +vpaddq subc2(%rip),%xmm3,%xmm10 + +# qhasm: 2x r -= g9 +# asm 1: psubq g9=reg128#10 +# asm 2: vpunpckhqdq g9=%xmm9 +vpunpckhqdq %xmm10,%xmm3,%xmm9 + +# qhasm: g8 = unpack_low(g8, r) +# asm 1: vpunpcklqdq g8=reg128#4 +# asm 2: vpunpcklqdq g8=%xmm3 +vpunpcklqdq %xmm10,%xmm3,%xmm3 + +# qhasm: 2x r8 = g8 * f0_stack +# asm 1: vpmuludq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 144(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h8 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 128(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h9 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 480(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h0 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 464(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h1 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 528(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h2 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 512(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h3 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 592(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h4 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 576(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h5 += r8 +# asm 1: paddq r8=reg128#11 +# asm 2: vpmuludq r8=%xmm10 +vpmuludq 624(%rsp),%xmm3,%xmm10 + +# qhasm: 2x h6 += r8 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 144(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h9 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 448(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h0 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 480(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h1 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 496(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h2 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 528(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h3 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 544(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h4 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 592(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h5 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 640(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h6 += r9 +# asm 1: paddq r9=reg128#4 +# asm 2: vpmuludq r9=%xmm3 +vpmuludq 624(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h7 += r9 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#4 +# asm 2: vpsrlq $25,carry5=%xmm3 +vpsrlq $25,%xmm4,%xmm3 + +# qhasm: 2x h6 += carry5 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#4 +# asm 2: vpsrlq $26,carry0=%xmm3 +vpsrlq $26,%xmm11,%xmm3 + +# qhasm: 2x h1 += carry0 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry6=reg128#4 +# asm 2: vpsrlq $26,carry6=%xmm3 +vpsrlq $26,%xmm6,%xmm3 + +# qhasm: 2x h7 += carry6 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry1=reg128#4 +# asm 2: vpsrlq $25,carry1=%xmm3 +vpsrlq $25,%xmm13,%xmm3 + +# qhasm: 2x h2 += carry1 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry7=reg128#4 +# asm 2: vpsrlq $25,carry7=%xmm3 +vpsrlq $25,%xmm5,%xmm3 + +# qhasm: 2x h8 += carry7 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry2=reg128#4 +# asm 2: vpsrlq $26,carry2=%xmm3 +vpsrlq $26,%xmm0,%xmm3 + +# qhasm: 2x h3 += carry2 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry8=reg128#4 +# asm 2: vpsrlq $26,carry8=%xmm3 +vpsrlq $26,%xmm8,%xmm3 + +# qhasm: 2x h9 += carry8 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry3=reg128#4 +# asm 2: vpsrlq $25,carry3=%xmm3 +vpsrlq $25,%xmm2,%xmm3 + +# qhasm: 2x h4 += carry3 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry9=reg128#4 +# asm 2: vpsrlq $25,carry9=%xmm3 +vpsrlq $25,%xmm7,%xmm3 + +# qhasm: 2x r0 = carry9 << 4 +# asm 1: vpsllq $4,r0=reg128#10 +# asm 2: vpsllq $4,r0=%xmm9 +vpsllq $4,%xmm3,%xmm9 + +# qhasm: 2x h0 += carry9 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry4=reg128#4 +# asm 2: vpsrlq $26,carry4=%xmm3 +vpsrlq $26,%xmm1,%xmm3 + +# qhasm: 2x h5 += carry4 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#4 +# asm 2: vpsrlq $26,carry0=%xmm3 +vpsrlq $26,%xmm11,%xmm3 + +# qhasm: 2x h1 += carry0 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#4 +# asm 2: vpsrlq $25,carry5=%xmm3 +vpsrlq $25,%xmm4,%xmm3 + +# qhasm: 2x h6 += carry5 +# asm 1: paddq r=reg128#4 +# asm 2: vpunpcklqdq r=%xmm3 +vpunpcklqdq %xmm13,%xmm11,%xmm3 + +# qhasm: h1 = unpack_high(h0, h1) +# asm 1: vpunpckhqdq h1=reg128#10 +# asm 2: vpunpckhqdq h1=%xmm9 +vpunpckhqdq %xmm13,%xmm11,%xmm9 + +# qhasm: 2x h0 = h1 + mem128[ subc0 ] +# asm 1: vpaddq subc0,h0=reg128#11 +# asm 2: vpaddq subc0,h0=%xmm10 +vpaddq subc0(%rip),%xmm9,%xmm10 + +# qhasm: 2x h0 -= r +# asm 1: psubq h1=reg128#10 +# asm 2: vpunpckhqdq h1=%xmm9 +vpunpckhqdq %xmm3,%xmm10,%xmm9 + +# qhasm: unpack low qwords of h0 and r +# asm 1: punpcklqdq m0=reg128#4 +# asm 2: vpmuludq m0=%xmm3 +vpmuludq %xmm10,%xmm10,%xmm3 + +# qhasm: 2x h0 += h0 +# asm 1: paddq m1=reg128#12 +# asm 2: vpmuludq m1=%xmm11 +vpmuludq %xmm9,%xmm10,%xmm11 + +# qhasm: r = unpack_low(h2, h3) +# asm 1: vpunpcklqdq r=reg128#13 +# asm 2: vpunpcklqdq r=%xmm12 +vpunpcklqdq %xmm2,%xmm0,%xmm12 + +# qhasm: h3 = unpack_high(h2, h3) +# asm 1: vpunpckhqdq h3=reg128#1 +# asm 2: vpunpckhqdq h3=%xmm0 +vpunpckhqdq %xmm2,%xmm0,%xmm0 + +# qhasm: 2x h2 = h3 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h2=reg128#3 +# asm 2: vpaddq subc2,h2=%xmm2 +vpaddq subc2(%rip),%xmm0,%xmm2 + +# qhasm: 2x h2 -= r +# asm 1: psubq h3=reg128#1 +# asm 2: vpunpckhqdq h3=%xmm0 +vpunpckhqdq %xmm12,%xmm2,%xmm0 + +# qhasm: unpack low qwords of h2 and r +# asm 1: punpcklqdq m2=reg128#13 +# asm 2: vpmuludq m2=%xmm12 +vpmuludq %xmm2,%xmm10,%xmm12 + +# qhasm: 2x h1_2 = h1 + h1 +# asm 1: vpaddq h1_2=reg128#14 +# asm 2: vpaddq h1_2=%xmm13 +vpaddq %xmm9,%xmm9,%xmm13 + +# qhasm: 2x r = h1 * h1_2 +# asm 1: vpmuludq r=reg128#10 +# asm 2: vpmuludq r=%xmm9 +vpmuludq %xmm13,%xmm9,%xmm9 + +# qhasm: 2x m2 += r +# asm 1: paddq m3=reg128#10 +# asm 2: vpmuludq m3=%xmm9 +vpmuludq %xmm0,%xmm10,%xmm9 + +# qhasm: 2x r = h1_2 * h2 +# asm 1: vpmuludq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm2,%xmm13,%xmm14 + +# qhasm: 2x m3 += r +# asm 1: paddq r=reg128#15 +# asm 2: vpunpcklqdq r=%xmm14 +vpunpcklqdq %xmm4,%xmm1,%xmm14 + +# qhasm: h5 = unpack_high(h4, h5) +# asm 1: vpunpckhqdq h5=reg128#2 +# asm 2: vpunpckhqdq h5=%xmm1 +vpunpckhqdq %xmm4,%xmm1,%xmm1 + +# qhasm: 2x h4 = h5 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h4=reg128#5 +# asm 2: vpaddq subc2,h4=%xmm4 +vpaddq subc2(%rip),%xmm1,%xmm4 + +# qhasm: 2x h4 -= r +# asm 1: psubq h5=reg128#2 +# asm 2: vpunpckhqdq h5=%xmm1 +vpunpckhqdq %xmm14,%xmm4,%xmm1 + +# qhasm: unpack low qwords of h4 and r +# asm 1: punpcklqdq h5_stack=stack128#1 +# asm 2: movdqa h5_stack=0(%rsp) +movdqa %xmm1,0(%rsp) + +# qhasm: 2x h5 += h5 +# asm 1: paddq h5_2_stack=stack128#2 +# asm 2: movdqa h5_2_stack=16(%rsp) +movdqa %xmm1,16(%rsp) + +# qhasm: 2x h5 *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,h5_38_stack=stack128#3 +# asm 2: movdqa h5_38_stack=32(%rsp) +movdqa %xmm1,32(%rsp) + +# qhasm: 2x m4 = h0 * h4 +# asm 1: vpmuludq m4=reg128#2 +# asm 2: vpmuludq m4=%xmm1 +vpmuludq %xmm4,%xmm10,%xmm1 + +# qhasm: 2x r = h2 * h2 +# asm 1: vpmuludq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm2,%xmm2,%xmm14 + +# qhasm: 2x m4 += r +# asm 1: paddq m5=reg128#15 +# asm 2: vpmuludq m5=%xmm14 +vpmuludq 0(%rsp),%xmm10,%xmm14 + +# qhasm: 2x r = h1_2 * h4 +# asm 1: vpmuludq r=reg128#16 +# asm 2: vpmuludq r=%xmm15 +vpmuludq %xmm4,%xmm13,%xmm15 + +# qhasm: 2x m5 += r +# asm 1: paddq r=reg128#16 +# asm 2: vpunpcklqdq r=%xmm15 +vpunpcklqdq %xmm5,%xmm6,%xmm15 + +# qhasm: h7 = unpack_high(h6, h7) +# asm 1: vpunpckhqdq h7=reg128#6 +# asm 2: vpunpckhqdq h7=%xmm5 +vpunpckhqdq %xmm5,%xmm6,%xmm5 + +# qhasm: 2x h6 = h7 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h6=reg128#7 +# asm 2: vpaddq subc2,h6=%xmm6 +vpaddq subc2(%rip),%xmm5,%xmm6 + +# qhasm: 2x h6 -= r +# asm 1: psubq h7=reg128#6 +# asm 2: vpunpckhqdq h7=%xmm5 +vpunpckhqdq %xmm15,%xmm6,%xmm5 + +# qhasm: unpack low qwords of h6 and r +# asm 1: punpcklqdq h6_stack=stack128#4 +# asm 2: movdqa h6_stack=48(%rsp) +movdqa %xmm6,48(%rsp) + +# qhasm: 2x h6 *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,h6_19_stack=stack128#5 +# asm 2: movdqa h6_19_stack=64(%rsp) +movdqa %xmm6,64(%rsp) + +# qhasm: h7_stack = h7 +# asm 1: movdqa h7_stack=stack128#6 +# asm 2: movdqa h7_stack=80(%rsp) +movdqa %xmm5,80(%rsp) + +# qhasm: 2x h7 *= mem128[ v38_38 ] +# asm 1: pmuludq v38_38,h7_38_stack=stack128#7 +# asm 2: movdqa h7_38_stack=96(%rsp) +movdqa %xmm5,96(%rsp) + +# qhasm: 2x m6 = h0 * h6_stack +# asm 1: vpmuludq m6=reg128#6 +# asm 2: vpmuludq m6=%xmm5 +vpmuludq 48(%rsp),%xmm10,%xmm5 + +# qhasm: 2x h3_2 = h3 + h3 +# asm 1: vpaddq h3_2=reg128#7 +# asm 2: vpaddq h3_2=%xmm6 +vpaddq %xmm0,%xmm0,%xmm6 + +# qhasm: 2x r = h3 * h3_2 +# asm 1: vpmuludq r=reg128#1 +# asm 2: vpmuludq r=%xmm0 +vpmuludq %xmm6,%xmm0,%xmm0 + +# qhasm: 2x m6 += r +# asm 1: paddq m7=reg128#1 +# asm 2: vpmuludq m7=%xmm0 +vpmuludq 80(%rsp),%xmm10,%xmm0 + +# qhasm: 2x r = h3_2 * h4 +# asm 1: vpmuludq r=reg128#16 +# asm 2: vpmuludq r=%xmm15 +vpmuludq %xmm4,%xmm6,%xmm15 + +# qhasm: 2x m7 += r +# asm 1: paddq r=reg128#16 +# asm 2: vpmuludq r=%xmm15 +vpmuludq %xmm6,%xmm13,%xmm15 + +# qhasm: 2x m4 += r +# asm 1: paddq r=reg128#16 +# asm 2: vpmuludq r=%xmm15 +vpmuludq %xmm6,%xmm2,%xmm15 + +# qhasm: 2x m5 += r +# asm 1: paddq r=reg128#16 +# asm 2: vpunpcklqdq r=%xmm15 +vpunpcklqdq %xmm7,%xmm8,%xmm15 + +# qhasm: h9 = unpack_high(h8, h9) +# asm 1: vpunpckhqdq h9=reg128#8 +# asm 2: vpunpckhqdq h9=%xmm7 +vpunpckhqdq %xmm7,%xmm8,%xmm7 + +# qhasm: 2x h8 = h9 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h8=reg128#9 +# asm 2: vpaddq subc2,h8=%xmm8 +vpaddq subc2(%rip),%xmm7,%xmm8 + +# qhasm: 2x h8 -= r +# asm 1: psubq h9=reg128#8 +# asm 2: vpunpckhqdq h9=%xmm7 +vpunpckhqdq %xmm15,%xmm8,%xmm7 + +# qhasm: unpack low qwords of h8 and r +# asm 1: punpcklqdq h8_stack=stack128#8 +# asm 2: movdqa h8_stack=112(%rsp) +movdqa %xmm8,112(%rsp) + +# qhasm: 2x h8 *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,h8_19_stack=stack128#29 +# asm 2: movdqa h8_19_stack=448(%rsp) +movdqa %xmm8,448(%rsp) + +# qhasm: 2x m8 = h0 * h8_stack +# asm 1: vpmuludq m8=reg128#9 +# asm 2: vpmuludq m8=%xmm8 +vpmuludq 112(%rsp),%xmm10,%xmm8 + +# qhasm: 2x m9 = h0 * h9 +# asm 1: vpmuludq m9=reg128#11 +# asm 2: vpmuludq m9=%xmm10 +vpmuludq %xmm7,%xmm10,%xmm10 + +# qhasm: 2x h9_38 = h9 * mem128[ v38_38 ] +# asm 1: vpmuludq v38_38,h9_38=reg128#16 +# asm 2: vpmuludq v38_38,h9_38=%xmm15 +vpmuludq v38_38(%rip),%xmm7,%xmm15 + +# qhasm: 2x r = h9 * h9_38 +# asm 1: vpmuludq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq %xmm15,%xmm7,%xmm7 + +# qhasm: 2x m8 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq %xmm15,%xmm13,%xmm7 + +# qhasm: 2x m0 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq %xmm15,%xmm2,%xmm7 + +# qhasm: 2x m1 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 80(%rsp),%xmm13,%xmm7 + +# qhasm: 2x r += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 16(%rsp),%xmm13,%xmm7 + +# qhasm: 2x m6 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 48(%rsp),%xmm13,%xmm7 + +# qhasm: 2x m7 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 112(%rsp),%xmm13,%xmm7 + +# qhasm: 2x m9 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq %xmm15,%xmm6,%xmm7 + +# qhasm: 2x m2 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq %xmm15,%xmm4,%xmm7 + +# qhasm: 2x m3 += r +# asm 1: paddq h2_2=reg128#3 +# asm 2: vpaddq h2_2=%xmm2 +vpaddq %xmm2,%xmm2,%xmm2 + +# qhasm: 2x r = h2_2 * h4 +# asm 1: vpmuludq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq %xmm4,%xmm2,%xmm7 + +# qhasm: 2x m6 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 448(%rsp),%xmm2,%xmm7 + +# qhasm: 2x m0 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 448(%rsp),%xmm6,%xmm7 + +# qhasm: 2x m1 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 0(%rsp),%xmm2,%xmm7 + +# qhasm: 2x m7 += r +# asm 1: paddq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 48(%rsp),%xmm2,%xmm7 + +# qhasm: 2x m8 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 80(%rsp),%xmm2,%xmm2 + +# qhasm: 2x m9 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 96(%rsp),%xmm4,%xmm2 + +# qhasm: 2x m1 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm4,%xmm4,%xmm2 + +# qhasm: 2x m8 += r +# asm 1: paddq h4_2=reg128#3 +# asm 2: vpaddq h4_2=%xmm2 +vpaddq %xmm4,%xmm4,%xmm2 + +# qhasm: 2x r = h4_2 * h8_19_stack +# asm 1: vpmuludq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 448(%rsp),%xmm2,%xmm4 + +# qhasm: 2x m2 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 16(%rsp),%xmm15,%xmm4 + +# qhasm: 2x m4 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 48(%rsp),%xmm15,%xmm4 + +# qhasm: 2x m5 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 96(%rsp),%xmm6,%xmm4 + +# qhasm: 2x m0 += r +# asm 1: paddq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 16(%rsp),%xmm4 + +# qhasm: 2x r *= h8_19_stack +# asm 1: pmuludq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 16(%rsp),%xmm6,%xmm4 + +# qhasm: 2x m8 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 48(%rsp),%xmm6,%xmm4 + +# qhasm: 2x m9 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 80(%rsp),%xmm15,%xmm4 + +# qhasm: 2x r += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 112(%rsp),%xmm15,%xmm4 + +# qhasm: 2x m7 += r +# asm 1: paddq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 48(%rsp),%xmm4 + +# qhasm: 2x r += r +# asm 1: paddq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 80(%rsp),%xmm4 + +# qhasm: 2x r += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 64(%rsp),%xmm2,%xmm4 + +# qhasm: 2x m0 += r +# asm 1: paddq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 16(%rsp),%xmm4 + +# qhasm: 2x r *= h6_19_stack +# asm 1: pmuludq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 16(%rsp),%xmm4 + +# qhasm: 2x r *= h7_38_stack +# asm 1: pmuludq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 48(%rsp),%xmm4 + +# qhasm: 2x r *= h7_38_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 0(%rsp),%xmm2,%xmm2 + +# qhasm: 2x m9 += r +# asm 1: paddq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 32(%rsp),%xmm2 + +# qhasm: 2x r *= h5_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 64(%rsp),%xmm2 + +# qhasm: 2x r *= h6_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 96(%rsp),%xmm2 + +# qhasm: 2x r *= h7_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 448(%rsp),%xmm2 + +# qhasm: 2x r *= h8_stack +# asm 1: pmuludq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#3 +# asm 2: vpsrlq $26,carry0=%xmm2 +vpsrlq $26,%xmm3,%xmm2 + +# qhasm: 2x m1 += carry0 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#3 +# asm 2: vpsrlq $25,carry5=%xmm2 +vpsrlq $25,%xmm14,%xmm2 + +# qhasm: 2x m6 += carry5 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry1=reg128#3 +# asm 2: vpsrlq $25,carry1=%xmm2 +vpsrlq $25,%xmm11,%xmm2 + +# qhasm: 2x m2 += carry1 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry6=reg128#3 +# asm 2: vpsrlq $26,carry6=%xmm2 +vpsrlq $26,%xmm5,%xmm2 + +# qhasm: 2x m7 += carry6 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry2=reg128#3 +# asm 2: vpsrlq $26,carry2=%xmm2 +vpsrlq $26,%xmm12,%xmm2 + +# qhasm: 2x m3 += carry2 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry7=reg128#3 +# asm 2: vpsrlq $25,carry7=%xmm2 +vpsrlq $25,%xmm0,%xmm2 + +# qhasm: 2x m8 += carry7 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry3=reg128#3 +# asm 2: vpsrlq $25,carry3=%xmm2 +vpsrlq $25,%xmm9,%xmm2 + +# qhasm: 2x m4 += carry3 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry8=reg128#3 +# asm 2: vpsrlq $26,carry8=%xmm2 +vpsrlq $26,%xmm8,%xmm2 + +# qhasm: 2x m9 += carry8 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry4=reg128#3 +# asm 2: vpsrlq $26,carry4=%xmm2 +vpsrlq $26,%xmm1,%xmm2 + +# qhasm: 2x m5 += carry4 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry9=reg128#3 +# asm 2: vpsrlq $25,carry9=%xmm2 +vpsrlq $25,%xmm10,%xmm2 + +# qhasm: 2x r0 = carry9 << 4 +# asm 1: vpsllq $4,r0=reg128#5 +# asm 2: vpsllq $4,r0=%xmm4 +vpsllq $4,%xmm2,%xmm4 + +# qhasm: 2x m0 += carry9 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#3 +# asm 2: vpsrlq $25,carry5=%xmm2 +vpsrlq $25,%xmm14,%xmm2 + +# qhasm: 2x m6 += carry5 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#3 +# asm 2: vpsrlq $26,carry0=%xmm2 +vpsrlq $26,%xmm3,%xmm2 + +# qhasm: 2x m1 += carry0 +# asm 1: paddq r=reg128#3 +# asm 2: vpunpckhqdq r=%xmm2 +vpunpckhqdq %xmm11,%xmm3,%xmm2 + +# qhasm: x3_0 = r +# asm 1: movdqa x3_0=stack128#1 +# asm 2: movdqa x3_0=0(%rsp) +movdqa %xmm2,0(%rsp) + +# qhasm: m0 = shuffle dwords of m0 by 0 +# asm 1: pshufd $0,m0=reg128#3 +# asm 2: pshufd $0,m0=%xmm2 +pshufd $0,%xmm3,%xmm2 + +# qhasm: m1 = shuffle dwords of m1 by 0 +# asm 1: pshufd $0,m1=reg128#4 +# asm 2: pshufd $0,m1=%xmm3 +pshufd $0,%xmm11,%xmm3 + +# qhasm: 2x h_01 = m0 * p01_stack +# asm 1: vpmuludq h_01=reg128#5 +# asm 2: vpmuludq h_01=%xmm4 +vpmuludq 160(%rsp),%xmm2,%xmm4 + +# qhasm: 2x r = m1 * p90_38_1_stack +# asm 1: vpmuludq r=reg128#7 +# asm 2: vpmuludq r=%xmm6 +vpmuludq 432(%rsp),%xmm3,%xmm6 + +# qhasm: 2x h_01 += r +# asm 1: paddq h_23=reg128#7 +# asm 2: vpmuludq h_23=%xmm6 +vpmuludq 176(%rsp),%xmm2,%xmm6 + +# qhasm: 2x r = m1 * p12_2_1_stack +# asm 1: vpmuludq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 304(%rsp),%xmm3,%xmm7 + +# qhasm: 2x h_23 += r +# asm 1: paddq h_45=reg128#8 +# asm 2: vpmuludq h_45=%xmm7 +vpmuludq 208(%rsp),%xmm2,%xmm7 + +# qhasm: 2x r = m1 * p34_2_1_stack +# asm 1: vpmuludq r=reg128#12 +# asm 2: vpmuludq r=%xmm11 +vpmuludq 336(%rsp),%xmm3,%xmm11 + +# qhasm: 2x h_45 += r +# asm 1: paddq h_67=reg128#12 +# asm 2: vpmuludq h_67=%xmm11 +vpmuludq 240(%rsp),%xmm2,%xmm11 + +# qhasm: 2x r = m1 * p56_2_1_stack +# asm 1: vpmuludq r=reg128#14 +# asm 2: vpmuludq r=%xmm13 +vpmuludq 368(%rsp),%xmm3,%xmm13 + +# qhasm: 2x h_67 += r +# asm 1: paddq h_89=reg128#3 +# asm 2: vpmuludq h_89=%xmm2 +vpmuludq 272(%rsp),%xmm2,%xmm2 + +# qhasm: 2x r = m1 * p78_2_1_stack +# asm 1: vpmuludq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 400(%rsp),%xmm3,%xmm3 + +# qhasm: 2x h_89 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpunpckhqdq r=%xmm3 +vpunpckhqdq %xmm9,%xmm12,%xmm3 + +# qhasm: x3_2 = r +# asm 1: movdqa x3_2=stack128#2 +# asm 2: movdqa x3_2=16(%rsp) +movdqa %xmm3,16(%rsp) + +# qhasm: m2 = shuffle dwords of m2 by 0 +# asm 1: pshufd $0,m2=reg128#4 +# asm 2: pshufd $0,m2=%xmm3 +pshufd $0,%xmm12,%xmm3 + +# qhasm: m3 = shuffle dwords of m3 by 0 +# asm 1: pshufd $0,m3=reg128#10 +# asm 2: pshufd $0,m3=%xmm9 +pshufd $0,%xmm9,%xmm9 + +# qhasm: 2x r = m2 * p89_19_19_stack +# asm 1: vpmuludq r=reg128#13 +# asm 2: vpmuludq r=%xmm12 +vpmuludq 288(%rsp),%xmm3,%xmm12 + +# qhasm: 2x h_01 += r +# asm 1: paddq r=reg128#13 +# asm 2: vpmuludq r=%xmm12 +vpmuludq 416(%rsp),%xmm9,%xmm12 + +# qhasm: 2x h_01 += r +# asm 1: paddq r=reg128#13 +# asm 2: vpmuludq r=%xmm12 +vpmuludq 160(%rsp),%xmm3,%xmm12 + +# qhasm: 2x h_23 += r +# asm 1: paddq r=reg128#13 +# asm 2: vpmuludq r=%xmm12 +vpmuludq 432(%rsp),%xmm9,%xmm12 + +# qhasm: 2x h_23 += r +# asm 1: paddq r=reg128#13 +# asm 2: vpmuludq r=%xmm12 +vpmuludq 176(%rsp),%xmm3,%xmm12 + +# qhasm: 2x h_45 += r +# asm 1: paddq r=reg128#13 +# asm 2: vpmuludq r=%xmm12 +vpmuludq 304(%rsp),%xmm9,%xmm12 + +# qhasm: 2x h_45 += r +# asm 1: paddq r=reg128#13 +# asm 2: vpmuludq r=%xmm12 +vpmuludq 208(%rsp),%xmm3,%xmm12 + +# qhasm: 2x h_67 += r +# asm 1: paddq r=reg128#13 +# asm 2: vpmuludq r=%xmm12 +vpmuludq 336(%rsp),%xmm9,%xmm12 + +# qhasm: 2x h_67 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 240(%rsp),%xmm3,%xmm3 + +# qhasm: 2x h_89 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 368(%rsp),%xmm9,%xmm3 + +# qhasm: 2x h_89 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpunpckhqdq r=%xmm3 +vpunpckhqdq %xmm14,%xmm1,%xmm3 + +# qhasm: x3_4 = r +# asm 1: movdqa x3_4=stack128#3 +# asm 2: movdqa x3_4=32(%rsp) +movdqa %xmm3,32(%rsp) + +# qhasm: m4 = shuffle dwords of m4 by 0 +# asm 1: pshufd $0,m4=reg128#2 +# asm 2: pshufd $0,m4=%xmm1 +pshufd $0,%xmm1,%xmm1 + +# qhasm: m5 = shuffle dwords of m5 by 0 +# asm 1: pshufd $0,m5=reg128#4 +# asm 2: pshufd $0,m5=%xmm3 +pshufd $0,%xmm14,%xmm3 + +# qhasm: 2x r = m4 * p67_19_19_stack +# asm 1: vpmuludq r=reg128#10 +# asm 2: vpmuludq r=%xmm9 +vpmuludq 256(%rsp),%xmm1,%xmm9 + +# qhasm: 2x h_01 += r +# asm 1: paddq r=reg128#10 +# asm 2: vpmuludq r=%xmm9 +vpmuludq 384(%rsp),%xmm3,%xmm9 + +# qhasm: 2x h_01 += r +# asm 1: paddq r=reg128#10 +# asm 2: vpmuludq r=%xmm9 +vpmuludq 288(%rsp),%xmm1,%xmm9 + +# qhasm: 2x h_23 += r +# asm 1: paddq r=reg128#10 +# asm 2: vpmuludq r=%xmm9 +vpmuludq 416(%rsp),%xmm3,%xmm9 + +# qhasm: 2x h_23 += r +# asm 1: paddq r=reg128#10 +# asm 2: vpmuludq r=%xmm9 +vpmuludq 160(%rsp),%xmm1,%xmm9 + +# qhasm: 2x h_45 += r +# asm 1: paddq r=reg128#10 +# asm 2: vpmuludq r=%xmm9 +vpmuludq 432(%rsp),%xmm3,%xmm9 + +# qhasm: 2x h_45 += r +# asm 1: paddq r=reg128#10 +# asm 2: vpmuludq r=%xmm9 +vpmuludq 176(%rsp),%xmm1,%xmm9 + +# qhasm: 2x h_67 += r +# asm 1: paddq r=reg128#10 +# asm 2: vpmuludq r=%xmm9 +vpmuludq 304(%rsp),%xmm3,%xmm9 + +# qhasm: 2x h_67 += r +# asm 1: paddq r=reg128#2 +# asm 2: vpmuludq r=%xmm1 +vpmuludq 208(%rsp),%xmm1,%xmm1 + +# qhasm: 2x h_89 += r +# asm 1: paddq r=reg128#2 +# asm 2: vpmuludq r=%xmm1 +vpmuludq 336(%rsp),%xmm3,%xmm1 + +# qhasm: 2x h_89 += r +# asm 1: paddq r=reg128#2 +# asm 2: vpunpckhqdq r=%xmm1 +vpunpckhqdq %xmm0,%xmm5,%xmm1 + +# qhasm: x3_6 = r +# asm 1: movdqa x3_6=stack128#4 +# asm 2: movdqa x3_6=48(%rsp) +movdqa %xmm1,48(%rsp) + +# qhasm: m6 = shuffle dwords of m6 by 0 +# asm 1: pshufd $0,m6=reg128#2 +# asm 2: pshufd $0,m6=%xmm1 +pshufd $0,%xmm5,%xmm1 + +# qhasm: m7 = shuffle dwords of m7 by 0 +# asm 1: pshufd $0,m7=reg128#1 +# asm 2: pshufd $0,m7=%xmm0 +pshufd $0,%xmm0,%xmm0 + +# qhasm: 2x r = m6 * p45_19_19_stack +# asm 1: vpmuludq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 224(%rsp),%xmm1,%xmm3 + +# qhasm: 2x h_01 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 352(%rsp),%xmm0,%xmm3 + +# qhasm: 2x h_01 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 256(%rsp),%xmm1,%xmm3 + +# qhasm: 2x h_23 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 384(%rsp),%xmm0,%xmm3 + +# qhasm: 2x h_23 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 288(%rsp),%xmm1,%xmm3 + +# qhasm: 2x h_45 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 416(%rsp),%xmm0,%xmm3 + +# qhasm: 2x h_45 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 160(%rsp),%xmm1,%xmm3 + +# qhasm: 2x h_67 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 432(%rsp),%xmm0,%xmm3 + +# qhasm: 2x h_67 += r +# asm 1: paddq r=reg128#2 +# asm 2: vpmuludq r=%xmm1 +vpmuludq 176(%rsp),%xmm1,%xmm1 + +# qhasm: 2x h_89 += r +# asm 1: paddq r=reg128#1 +# asm 2: vpmuludq r=%xmm0 +vpmuludq 304(%rsp),%xmm0,%xmm0 + +# qhasm: 2x h_89 += r +# asm 1: paddq r=reg128#1 +# asm 2: vpunpckhqdq r=%xmm0 +vpunpckhqdq %xmm10,%xmm8,%xmm0 + +# qhasm: x3_8 = r +# asm 1: movdqa x3_8=stack128#5 +# asm 2: movdqa x3_8=64(%rsp) +movdqa %xmm0,64(%rsp) + +# qhasm: m8 = shuffle dwords of m8 by 0 +# asm 1: pshufd $0,m8=reg128#1 +# asm 2: pshufd $0,m8=%xmm0 +pshufd $0,%xmm8,%xmm0 + +# qhasm: m9 = shuffle dwords of m9 by 0 +# asm 1: pshufd $0,m9=reg128#2 +# asm 2: pshufd $0,m9=%xmm1 +pshufd $0,%xmm10,%xmm1 + +# qhasm: 2x r = m8 * p23_19_19_stack +# asm 1: vpmuludq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 192(%rsp),%xmm0,%xmm3 + +# qhasm: 2x h_01 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 320(%rsp),%xmm1,%xmm3 + +# qhasm: 2x h_01 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 224(%rsp),%xmm0,%xmm3 + +# qhasm: 2x h_23 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 352(%rsp),%xmm1,%xmm3 + +# qhasm: 2x h_23 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 256(%rsp),%xmm0,%xmm3 + +# qhasm: 2x h_45 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 384(%rsp),%xmm1,%xmm3 + +# qhasm: 2x h_45 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 288(%rsp),%xmm0,%xmm3 + +# qhasm: 2x h_67 += r +# asm 1: paddq r=reg128#4 +# asm 2: vpmuludq r=%xmm3 +vpmuludq 416(%rsp),%xmm1,%xmm3 + +# qhasm: 2x h_67 += r +# asm 1: paddq r=reg128#1 +# asm 2: vpmuludq r=%xmm0 +vpmuludq 160(%rsp),%xmm0,%xmm0 + +# qhasm: 2x h_89 += r +# asm 1: paddq r=reg128#1 +# asm 2: vpmuludq r=%xmm0 +vpmuludq 432(%rsp),%xmm1,%xmm0 + +# qhasm: 2x h_89 += r +# asm 1: paddq z3_0=stack128#6 +# asm 2: movdqa z3_0=80(%rsp) +movdqa %xmm4,80(%rsp) + +# qhasm: z3_2 = h_23 +# asm 1: movdqa z3_2=stack128#7 +# asm 2: movdqa z3_2=96(%rsp) +movdqa %xmm6,96(%rsp) + +# qhasm: z3_4 = h_45 +# asm 1: movdqa z3_4=stack128#8 +# asm 2: movdqa z3_4=112(%rsp) +movdqa %xmm7,112(%rsp) + +# qhasm: z3_6 = h_67 +# asm 1: movdqa z3_6=stack128#29 +# asm 2: movdqa z3_6=448(%rsp) +movdqa %xmm11,448(%rsp) + +# qhasm: z3_8 = h_89 +# asm 1: movdqa z3_8=stack128#32 +# asm 2: movdqa z3_8=496(%rsp) +movdqa %xmm2,496(%rsp) + +# qhasm: f0 = f0_stack +# asm 1: movdqa f0=reg128#1 +# asm 2: movdqa f0=%xmm0 +movdqa 144(%rsp),%xmm0 + +# qhasm: 2x h0 = f0 * f0 +# asm 1: vpmuludq h0=reg128#2 +# asm 2: vpmuludq h0=%xmm1 +vpmuludq %xmm0,%xmm0,%xmm1 + +# qhasm: 2x f0 += f0 +# asm 1: paddq f1=reg128#3 +# asm 2: movdqa f1=%xmm2 +movdqa 128(%rsp),%xmm2 + +# qhasm: 2x h1 = f0 * f1 +# asm 1: vpmuludq h1=reg128#4 +# asm 2: vpmuludq h1=%xmm3 +vpmuludq %xmm2,%xmm0,%xmm3 + +# qhasm: f2 = f2_stack +# asm 1: movdqa f2=reg128#5 +# asm 2: movdqa f2=%xmm4 +movdqa 480(%rsp),%xmm4 + +# qhasm: 2x h2 = f0 * f2 +# asm 1: vpmuludq h2=reg128#6 +# asm 2: vpmuludq h2=%xmm5 +vpmuludq %xmm4,%xmm0,%xmm5 + +# qhasm: f3 = f3_stack +# asm 1: movdqa f3=reg128#7 +# asm 2: movdqa f3=%xmm6 +movdqa 464(%rsp),%xmm6 + +# qhasm: 2x h3 = f0 * f3 +# asm 1: vpmuludq h3=reg128#8 +# asm 2: vpmuludq h3=%xmm7 +vpmuludq %xmm6,%xmm0,%xmm7 + +# qhasm: f4 = f4_stack +# asm 1: movdqa f4=reg128#9 +# asm 2: movdqa f4=%xmm8 +movdqa 528(%rsp),%xmm8 + +# qhasm: 2x h4 = f0 * f4 +# asm 1: vpmuludq h4=reg128#10 +# asm 2: vpmuludq h4=%xmm9 +vpmuludq %xmm8,%xmm0,%xmm9 + +# qhasm: 2x h5 = f0 * f5_stack +# asm 1: vpmuludq h5=reg128#11 +# asm 2: vpmuludq h5=%xmm10 +vpmuludq 512(%rsp),%xmm0,%xmm10 + +# qhasm: 2x h6 = f0 * f6_stack +# asm 1: vpmuludq h6=reg128#12 +# asm 2: vpmuludq h6=%xmm11 +vpmuludq 592(%rsp),%xmm0,%xmm11 + +# qhasm: 2x h7 = f0 * f7_stack +# asm 1: vpmuludq h7=reg128#13 +# asm 2: vpmuludq h7=%xmm12 +vpmuludq 576(%rsp),%xmm0,%xmm12 + +# qhasm: 2x h8 = f0 * f8_stack +# asm 1: vpmuludq h8=reg128#14 +# asm 2: vpmuludq h8=%xmm13 +vpmuludq 624(%rsp),%xmm0,%xmm13 + +# qhasm: f9 = f9_stack +# asm 1: movdqa f9=reg128#15 +# asm 2: movdqa f9=%xmm14 +movdqa 672(%rsp),%xmm14 + +# qhasm: 2x h9 = f0 * f9 +# asm 1: vpmuludq h9=reg128#1 +# asm 2: vpmuludq h9=%xmm0 +vpmuludq %xmm14,%xmm0,%xmm0 + +# qhasm: 2x f9_38 = f9 * mem128[ v38_38 ] +# asm 1: vpmuludq v38_38,f9_38=reg128#16 +# asm 2: vpmuludq v38_38,f9_38=%xmm15 +vpmuludq v38_38(%rip),%xmm14,%xmm15 + +# qhasm: 2x r = f9 * f9_38 +# asm 1: vpmuludq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq %xmm15,%xmm14,%xmm14 + +# qhasm: 2x h8 += r +# asm 1: paddq f3_2=reg128#15 +# asm 2: vpaddq f3_2=%xmm14 +vpaddq %xmm6,%xmm6,%xmm14 + +# qhasm: 2x r = f3 * f3_2 +# asm 1: vpmuludq r=reg128#7 +# asm 2: vpmuludq r=%xmm6 +vpmuludq %xmm14,%xmm6,%xmm6 + +# qhasm: 2x h6 += r +# asm 1: paddq f1_2=reg128#7 +# asm 2: vpaddq f1_2=%xmm6 +vpaddq %xmm2,%xmm2,%xmm6 + +# qhasm: 2x r = f1 * f1_2 +# asm 1: vpmuludq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm6,%xmm2,%xmm2 + +# qhasm: 2x h2 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm15,%xmm6,%xmm2 + +# qhasm: 2x h0 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm15,%xmm4,%xmm2 + +# qhasm: 2x h1 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 544(%rsp),%xmm6,%xmm2 + +# qhasm: 2x h6 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 592(%rsp),%xmm6,%xmm2 + +# qhasm: 2x h7 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 640(%rsp),%xmm6,%xmm2 + +# qhasm: 2x h8 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 624(%rsp),%xmm6,%xmm2 + +# qhasm: 2x h9 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm4,%xmm6,%xmm2 + +# qhasm: 2x h3 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm14,%xmm6,%xmm2 + +# qhasm: 2x h4 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm8,%xmm6,%xmm2 + +# qhasm: 2x h5 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm15,%xmm14,%xmm2 + +# qhasm: 2x h2 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm15,%xmm8,%xmm2 + +# qhasm: 2x h3 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm4,%xmm4,%xmm2 + +# qhasm: 2x h4 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm14,%xmm4,%xmm2 + +# qhasm: 2x h5 += r +# asm 1: paddq f2_2=reg128#3 +# asm 2: vpaddq f2_2=%xmm2 +vpaddq %xmm4,%xmm4,%xmm2 + +# qhasm: 2x r = f2_2 * f4 +# asm 1: vpmuludq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq %xmm8,%xmm2,%xmm4 + +# qhasm: 2x h6 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 688(%rsp),%xmm2,%xmm4 + +# qhasm: 2x h0 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 688(%rsp),%xmm14,%xmm4 + +# qhasm: 2x h1 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 512(%rsp),%xmm2,%xmm4 + +# qhasm: 2x h7 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 592(%rsp),%xmm2,%xmm4 + +# qhasm: 2x h8 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 576(%rsp),%xmm2,%xmm2 + +# qhasm: 2x h9 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 656(%rsp),%xmm8,%xmm2 + +# qhasm: 2x h1 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm8,%xmm14,%xmm2 + +# qhasm: 2x h7 += r +# asm 1: paddq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq %xmm8,%xmm8,%xmm2 + +# qhasm: 2x h8 += r +# asm 1: paddq f4_2=reg128#3 +# asm 2: vpaddq f4_2=%xmm2 +vpaddq %xmm8,%xmm8,%xmm2 + +# qhasm: 2x r = f4_2 * f8_19_stack +# asm 1: vpmuludq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 688(%rsp),%xmm2,%xmm4 + +# qhasm: 2x h2 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 544(%rsp),%xmm15,%xmm4 + +# qhasm: 2x h4 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 592(%rsp),%xmm15,%xmm4 + +# qhasm: 2x h5 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 656(%rsp),%xmm14,%xmm4 + +# qhasm: 2x h0 += r +# asm 1: paddq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 544(%rsp),%xmm4 + +# qhasm: 2x r *= f8_19_stack +# asm 1: pmuludq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 544(%rsp),%xmm14,%xmm4 + +# qhasm: 2x h8 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 592(%rsp),%xmm14,%xmm4 + +# qhasm: 2x h9 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 640(%rsp),%xmm15,%xmm4 + +# qhasm: 2x h6 += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 624(%rsp),%xmm15,%xmm4 + +# qhasm: 2x h7 += r +# asm 1: paddq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 592(%rsp),%xmm4 + +# qhasm: 2x r += r +# asm 1: paddq r=reg128#5 +# asm 2: vpmuludq r=%xmm4 +vpmuludq 608(%rsp),%xmm2,%xmm4 + +# qhasm: 2x h0 += r +# asm 1: paddq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 544(%rsp),%xmm4 + +# qhasm: 2x r *= f6_19_stack +# asm 1: pmuludq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 544(%rsp),%xmm4 + +# qhasm: 2x r *= f7_38_stack +# asm 1: pmuludq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 592(%rsp),%xmm4 + +# qhasm: 2x r *= f7_38_stack +# asm 1: pmuludq r=reg128#5 +# asm 2: movdqa r=%xmm4 +movdqa 640(%rsp),%xmm4 + +# qhasm: 2x r *= f8_19_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: vpmuludq r=%xmm2 +vpmuludq 512(%rsp),%xmm2,%xmm2 + +# qhasm: 2x h9 += r +# asm 1: paddq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 560(%rsp),%xmm2 + +# qhasm: 2x r *= f5_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 608(%rsp),%xmm2 + +# qhasm: 2x r *= f6_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 656(%rsp),%xmm2 + +# qhasm: 2x r *= f7_stack +# asm 1: pmuludq r=reg128#3 +# asm 2: movdqa r=%xmm2 +movdqa 688(%rsp),%xmm2 + +# qhasm: 2x r *= f8_stack +# asm 1: pmuludq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#3 +# asm 2: vpsrlq $26,carry0=%xmm2 +vpsrlq $26,%xmm1,%xmm2 + +# qhasm: 2x h1 += carry0 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#3 +# asm 2: vpsrlq $25,carry5=%xmm2 +vpsrlq $25,%xmm10,%xmm2 + +# qhasm: 2x h6 += carry5 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry1=reg128#3 +# asm 2: vpsrlq $25,carry1=%xmm2 +vpsrlq $25,%xmm3,%xmm2 + +# qhasm: 2x h2 += carry1 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry6=reg128#3 +# asm 2: vpsrlq $26,carry6=%xmm2 +vpsrlq $26,%xmm11,%xmm2 + +# qhasm: 2x h7 += carry6 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry2=reg128#3 +# asm 2: vpsrlq $26,carry2=%xmm2 +vpsrlq $26,%xmm5,%xmm2 + +# qhasm: 2x h3 += carry2 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry7=reg128#3 +# asm 2: vpsrlq $25,carry7=%xmm2 +vpsrlq $25,%xmm12,%xmm2 + +# qhasm: 2x h8 += carry7 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry3=reg128#3 +# asm 2: vpsrlq $25,carry3=%xmm2 +vpsrlq $25,%xmm7,%xmm2 + +# qhasm: 2x h4 += carry3 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry8=reg128#3 +# asm 2: vpsrlq $26,carry8=%xmm2 +vpsrlq $26,%xmm13,%xmm2 + +# qhasm: 2x h9 += carry8 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry4=reg128#3 +# asm 2: vpsrlq $26,carry4=%xmm2 +vpsrlq $26,%xmm9,%xmm2 + +# qhasm: 2x h5 += carry4 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry9=reg128#3 +# asm 2: vpsrlq $25,carry9=%xmm2 +vpsrlq $25,%xmm0,%xmm2 + +# qhasm: 2x r0 = carry9 << 4 +# asm 1: vpsllq $4,r0=reg128#5 +# asm 2: vpsllq $4,r0=%xmm4 +vpsllq $4,%xmm2,%xmm4 + +# qhasm: 2x h0 += carry9 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#3 +# asm 2: vpsrlq $25,carry5=%xmm2 +vpsrlq $25,%xmm10,%xmm2 + +# qhasm: 2x h6 += carry5 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#3 +# asm 2: vpsrlq $26,carry0=%xmm2 +vpsrlq $26,%xmm1,%xmm2 + +# qhasm: 2x h1 += carry0 +# asm 1: paddq f0=reg128#3 +# asm 2: vpunpckhqdq f0=%xmm2 +vpunpckhqdq %xmm3,%xmm1,%xmm2 + +# qhasm: h0 = unpack_low(h0, h1) +# asm 1: vpunpcklqdq h0=reg128#2 +# asm 2: vpunpcklqdq h0=%xmm1 +vpunpcklqdq %xmm3,%xmm1,%xmm1 + +# qhasm: t0_0 = h0 +# asm 1: movdqa t0_0=stack128#30 +# asm 2: movdqa t0_0=464(%rsp) +movdqa %xmm1,464(%rsp) + +# qhasm: 2x h1 = f0 + mem128[ subc0 ] +# asm 1: vpaddq subc0,h1=reg128#4 +# asm 2: vpaddq subc0,h1=%xmm3 +vpaddq subc0(%rip),%xmm2,%xmm3 + +# qhasm: 2x h1 -= h0 +# asm 1: psubq f1=reg128#2 +# asm 2: vpunpckhqdq f1=%xmm1 +vpunpckhqdq %xmm3,%xmm2,%xmm1 + +# qhasm: f0 = unpack_low(f0, h1) +# asm 1: vpunpcklqdq f0=reg128#3 +# asm 2: vpunpcklqdq f0=%xmm2 +vpunpcklqdq %xmm3,%xmm2,%xmm2 + +# qhasm: f0_stack = f0 +# asm 1: movdqa f0_stack=stack128#31 +# asm 2: movdqa f0_stack=480(%rsp) +movdqa %xmm2,480(%rsp) + +# qhasm: f1_stack = f1 +# asm 1: movdqa f1_stack=stack128#33 +# asm 2: movdqa f1_stack=512(%rsp) +movdqa %xmm1,512(%rsp) + +# qhasm: 2x f1 <<= 1 +# asm 1: psllq $1,f1_2_stack=stack128#34 +# asm 2: movdqa f1_2_stack=528(%rsp) +movdqa %xmm1,528(%rsp) + +# qhasm: 2x h1 *= mem128[ v121666_121666 ] +# asm 1: pmuludq v121666_121666,r=reg128#2 +# asm 2: movdqa r=%xmm1 +movdqa 80(%rsp),%xmm1 + +# qhasm: g0 = unpack_low(h1, r) +# asm 1: vpunpcklqdq g0=reg128#3 +# asm 2: vpunpcklqdq g0=%xmm2 +vpunpcklqdq %xmm1,%xmm3,%xmm2 + +# qhasm: g1 = unpack_high(h1, r) +# asm 1: vpunpckhqdq g1=reg128#2 +# asm 2: vpunpckhqdq g1=%xmm1 +vpunpckhqdq %xmm1,%xmm3,%xmm1 + +# qhasm: f2 = unpack_high(h2, h3) +# asm 1: vpunpckhqdq f2=reg128#4 +# asm 2: vpunpckhqdq f2=%xmm3 +vpunpckhqdq %xmm7,%xmm5,%xmm3 + +# qhasm: h2 = unpack_low(h2, h3) +# asm 1: vpunpcklqdq h2=reg128#5 +# asm 2: vpunpcklqdq h2=%xmm4 +vpunpcklqdq %xmm7,%xmm5,%xmm4 + +# qhasm: t0_2 = h2 +# asm 1: movdqa t0_2=stack128#35 +# asm 2: movdqa t0_2=544(%rsp) +movdqa %xmm4,544(%rsp) + +# qhasm: 2x h3 = f2 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h3=reg128#6 +# asm 2: vpaddq subc2,h3=%xmm5 +vpaddq subc2(%rip),%xmm3,%xmm5 + +# qhasm: 2x h3 -= h2 +# asm 1: psubq f3=reg128#5 +# asm 2: vpunpckhqdq f3=%xmm4 +vpunpckhqdq %xmm5,%xmm3,%xmm4 + +# qhasm: f2 = unpack_low(f2, h3) +# asm 1: vpunpcklqdq f2=reg128#4 +# asm 2: vpunpcklqdq f2=%xmm3 +vpunpcklqdq %xmm5,%xmm3,%xmm3 + +# qhasm: f2_stack = f2 +# asm 1: movdqa f2_stack=stack128#36 +# asm 2: movdqa f2_stack=560(%rsp) +movdqa %xmm3,560(%rsp) + +# qhasm: f3_stack = f3 +# asm 1: movdqa f3_stack=stack128#37 +# asm 2: movdqa f3_stack=576(%rsp) +movdqa %xmm4,576(%rsp) + +# qhasm: 2x f3 <<= 1 +# asm 1: psllq $1,f3_2_stack=stack128#38 +# asm 2: movdqa f3_2_stack=592(%rsp) +movdqa %xmm4,592(%rsp) + +# qhasm: 2x h3 *= mem128[ v121666_121666 ] +# asm 1: pmuludq v121666_121666,r=reg128#4 +# asm 2: movdqa r=%xmm3 +movdqa 96(%rsp),%xmm3 + +# qhasm: g2 = unpack_low(h3, r) +# asm 1: vpunpcklqdq g2=reg128#5 +# asm 2: vpunpcklqdq g2=%xmm4 +vpunpcklqdq %xmm3,%xmm5,%xmm4 + +# qhasm: g3 = unpack_high(h3, r) +# asm 1: vpunpckhqdq g3=reg128#4 +# asm 2: vpunpckhqdq g3=%xmm3 +vpunpckhqdq %xmm3,%xmm5,%xmm3 + +# qhasm: f4 = unpack_high(h4, h5) +# asm 1: vpunpckhqdq f4=reg128#6 +# asm 2: vpunpckhqdq f4=%xmm5 +vpunpckhqdq %xmm10,%xmm9,%xmm5 + +# qhasm: h4 = unpack_low(h4, h5) +# asm 1: vpunpcklqdq h4=reg128#7 +# asm 2: vpunpcklqdq h4=%xmm6 +vpunpcklqdq %xmm10,%xmm9,%xmm6 + +# qhasm: t0_4 = h4 +# asm 1: movdqa t0_4=stack128#39 +# asm 2: movdqa t0_4=608(%rsp) +movdqa %xmm6,608(%rsp) + +# qhasm: 2x h5 = f4 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h5=reg128#8 +# asm 2: vpaddq subc2,h5=%xmm7 +vpaddq subc2(%rip),%xmm5,%xmm7 + +# qhasm: 2x h5 -= h4 +# asm 1: psubq f5=reg128#7 +# asm 2: vpunpckhqdq f5=%xmm6 +vpunpckhqdq %xmm7,%xmm5,%xmm6 + +# qhasm: f4 = unpack_low(f4, h5) +# asm 1: vpunpcklqdq f4=reg128#6 +# asm 2: vpunpcklqdq f4=%xmm5 +vpunpcklqdq %xmm7,%xmm5,%xmm5 + +# qhasm: f4_stack = f4 +# asm 1: movdqa f4_stack=stack128#40 +# asm 2: movdqa f4_stack=624(%rsp) +movdqa %xmm5,624(%rsp) + +# qhasm: f5_stack = f5 +# asm 1: movdqa f5_stack=stack128#41 +# asm 2: movdqa f5_stack=640(%rsp) +movdqa %xmm6,640(%rsp) + +# qhasm: 2x f5 <<= 1 +# asm 1: psllq $1,f5_2_stack=stack128#42 +# asm 2: movdqa f5_2_stack=656(%rsp) +movdqa %xmm6,656(%rsp) + +# qhasm: 2x h5 *= mem128[ v121666_121666 ] +# asm 1: pmuludq v121666_121666,r=reg128#6 +# asm 2: movdqa r=%xmm5 +movdqa 112(%rsp),%xmm5 + +# qhasm: g4 = unpack_low(h5, r) +# asm 1: vpunpcklqdq g4=reg128#7 +# asm 2: vpunpcklqdq g4=%xmm6 +vpunpcklqdq %xmm5,%xmm7,%xmm6 + +# qhasm: g5 = unpack_high(h5, r) +# asm 1: vpunpckhqdq g5=reg128#6 +# asm 2: vpunpckhqdq g5=%xmm5 +vpunpckhqdq %xmm5,%xmm7,%xmm5 + +# qhasm: f6 = unpack_high(h6, h7) +# asm 1: vpunpckhqdq f6=reg128#8 +# asm 2: vpunpckhqdq f6=%xmm7 +vpunpckhqdq %xmm12,%xmm11,%xmm7 + +# qhasm: h6 = unpack_low(h6, h7) +# asm 1: vpunpcklqdq h6=reg128#9 +# asm 2: vpunpcklqdq h6=%xmm8 +vpunpcklqdq %xmm12,%xmm11,%xmm8 + +# qhasm: t0_6 = h6 +# asm 1: movdqa t0_6=stack128#43 +# asm 2: movdqa t0_6=672(%rsp) +movdqa %xmm8,672(%rsp) + +# qhasm: 2x h7 = f6 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h7=reg128#10 +# asm 2: vpaddq subc2,h7=%xmm9 +vpaddq subc2(%rip),%xmm7,%xmm9 + +# qhasm: 2x h7 -= h6 +# asm 1: psubq f7=reg128#9 +# asm 2: vpunpckhqdq f7=%xmm8 +vpunpckhqdq %xmm9,%xmm7,%xmm8 + +# qhasm: f6 = unpack_low(f6, h7) +# asm 1: vpunpcklqdq f6=reg128#8 +# asm 2: vpunpcklqdq f6=%xmm7 +vpunpcklqdq %xmm9,%xmm7,%xmm7 + +# qhasm: f6_stack = f6 +# asm 1: movdqa f6_stack=stack128#44 +# asm 2: movdqa f6_stack=688(%rsp) +movdqa %xmm7,688(%rsp) + +# qhasm: f7_stack = f7 +# asm 1: movdqa f7_stack=stack128#45 +# asm 2: movdqa f7_stack=704(%rsp) +movdqa %xmm8,704(%rsp) + +# qhasm: 2x f7 <<= 1 +# asm 1: psllq $1,f7_2_stack=stack128#46 +# asm 2: movdqa f7_2_stack=720(%rsp) +movdqa %xmm8,720(%rsp) + +# qhasm: 2x h7 *= mem128[ v121666_121666 ] +# asm 1: pmuludq v121666_121666,r=reg128#8 +# asm 2: movdqa r=%xmm7 +movdqa 448(%rsp),%xmm7 + +# qhasm: g6 = unpack_low(h7, r) +# asm 1: vpunpcklqdq g6=reg128#9 +# asm 2: vpunpcklqdq g6=%xmm8 +vpunpcklqdq %xmm7,%xmm9,%xmm8 + +# qhasm: g7 = unpack_high(h7, r) +# asm 1: vpunpckhqdq g7=reg128#8 +# asm 2: vpunpckhqdq g7=%xmm7 +vpunpckhqdq %xmm7,%xmm9,%xmm7 + +# qhasm: f8 = unpack_high(h8, h9) +# asm 1: vpunpckhqdq f8=reg128#10 +# asm 2: vpunpckhqdq f8=%xmm9 +vpunpckhqdq %xmm0,%xmm13,%xmm9 + +# qhasm: h8 = unpack_low(h8, h9) +# asm 1: vpunpcklqdq h8=reg128#1 +# asm 2: vpunpcklqdq h8=%xmm0 +vpunpcklqdq %xmm0,%xmm13,%xmm0 + +# qhasm: t0_8 = h8 +# asm 1: movdqa t0_8=stack128#29 +# asm 2: movdqa t0_8=448(%rsp) +movdqa %xmm0,448(%rsp) + +# qhasm: 2x h9 = f8 + mem128[ subc2 ] +# asm 1: vpaddq subc2,h9=reg128#11 +# asm 2: vpaddq subc2,h9=%xmm10 +vpaddq subc2(%rip),%xmm9,%xmm10 + +# qhasm: 2x h9 -= h8 +# asm 1: psubq f9=reg128#1 +# asm 2: vpunpckhqdq f9=%xmm0 +vpunpckhqdq %xmm10,%xmm9,%xmm0 + +# qhasm: f8 = unpack_low(f8, h9) +# asm 1: vpunpcklqdq f8=reg128#10 +# asm 2: vpunpcklqdq f8=%xmm9 +vpunpcklqdq %xmm10,%xmm9,%xmm9 + +# qhasm: f8_stack = f8 +# asm 1: movdqa f8_stack=stack128#47 +# asm 2: movdqa f8_stack=736(%rsp) +movdqa %xmm9,736(%rsp) + +# qhasm: f9_stack = f9 +# asm 1: movdqa f9_stack=stack128#48 +# asm 2: movdqa f9_stack=752(%rsp) +movdqa %xmm0,752(%rsp) + +# qhasm: 2x f9 <<= 1 +# asm 1: psllq $1,f9_2_stack=stack128#49 +# asm 2: movdqa f9_2_stack=768(%rsp) +movdqa %xmm0,768(%rsp) + +# qhasm: 2x h9 *= mem128[ v121666_121666 ] +# asm 1: pmuludq v121666_121666,r=reg128#1 +# asm 2: movdqa r=%xmm0 +movdqa 496(%rsp),%xmm0 + +# qhasm: g8 = unpack_low(h9, r) +# asm 1: vpunpcklqdq g8=reg128#10 +# asm 2: vpunpcklqdq g8=%xmm9 +vpunpcklqdq %xmm0,%xmm10,%xmm9 + +# qhasm: g9 = unpack_high(h9, r) +# asm 1: vpunpckhqdq g9=reg128#1 +# asm 2: vpunpckhqdq g9=%xmm0 +vpunpckhqdq %xmm0,%xmm10,%xmm0 + +# qhasm: 2x carry0 = g0 unsigned>>= 26 +# asm 1: vpsrlq $26,carry0=reg128#11 +# asm 2: vpsrlq $26,carry0=%xmm10 +vpsrlq $26,%xmm2,%xmm10 + +# qhasm: 2x g1 += carry0 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#11 +# asm 2: vpsrlq $25,carry5=%xmm10 +vpsrlq $25,%xmm5,%xmm10 + +# qhasm: 2x g6 += carry5 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry1=reg128#11 +# asm 2: vpsrlq $25,carry1=%xmm10 +vpsrlq $25,%xmm1,%xmm10 + +# qhasm: 2x g2 += carry1 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry6=reg128#11 +# asm 2: vpsrlq $26,carry6=%xmm10 +vpsrlq $26,%xmm8,%xmm10 + +# qhasm: 2x g7 += carry6 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry2=reg128#11 +# asm 2: vpsrlq $26,carry2=%xmm10 +vpsrlq $26,%xmm4,%xmm10 + +# qhasm: 2x g3 += carry2 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry7=reg128#11 +# asm 2: vpsrlq $25,carry7=%xmm10 +vpsrlq $25,%xmm7,%xmm10 + +# qhasm: 2x g8 += carry7 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry3=reg128#11 +# asm 2: vpsrlq $25,carry3=%xmm10 +vpsrlq $25,%xmm3,%xmm10 + +# qhasm: 2x g4 += carry3 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry8=reg128#11 +# asm 2: vpsrlq $26,carry8=%xmm10 +vpsrlq $26,%xmm9,%xmm10 + +# qhasm: 2x g9 += carry8 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry4=reg128#11 +# asm 2: vpsrlq $26,carry4=%xmm10 +vpsrlq $26,%xmm6,%xmm10 + +# qhasm: 2x g5 += carry4 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry9=reg128#11 +# asm 2: vpsrlq $25,carry9=%xmm10 +vpsrlq $25,%xmm0,%xmm10 + +# qhasm: 2x r0 = carry9 << 4 +# asm 1: vpsllq $4,r0=reg128#12 +# asm 2: vpsllq $4,r0=%xmm11 +vpsllq $4,%xmm10,%xmm11 + +# qhasm: 2x g0 += carry9 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#11 +# asm 2: vpsrlq $25,carry5=%xmm10 +vpsrlq $25,%xmm5,%xmm10 + +# qhasm: 2x g6 += carry5 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#11 +# asm 2: vpsrlq $26,carry0=%xmm10 +vpsrlq $26,%xmm2,%xmm10 + +# qhasm: 2x g1 += carry0 +# asm 1: paddq r=reg128#11 +# asm 2: vpunpckhqdq r=%xmm10 +vpunpckhqdq %xmm1,%xmm2,%xmm10 + +# qhasm: z3_0 = r +# asm 1: movdqa z3_0=stack128#6 +# asm 2: movdqa z3_0=80(%rsp) +movdqa %xmm10,80(%rsp) + +# qhasm: h1 = unpack_low(g0, g1) +# asm 1: vpunpcklqdq h1=reg128#2 +# asm 2: vpunpcklqdq h1=%xmm1 +vpunpcklqdq %xmm1,%xmm2,%xmm1 + +# qhasm: r = unpack_high(g2, g3) +# asm 1: vpunpckhqdq r=reg128#3 +# asm 2: vpunpckhqdq r=%xmm2 +vpunpckhqdq %xmm3,%xmm4,%xmm2 + +# qhasm: z3_2 = r +# asm 1: movdqa z3_2=stack128#7 +# asm 2: movdqa z3_2=96(%rsp) +movdqa %xmm2,96(%rsp) + +# qhasm: h3 = unpack_low(g2, g3) +# asm 1: vpunpcklqdq h3=reg128#3 +# asm 2: vpunpcklqdq h3=%xmm2 +vpunpcklqdq %xmm3,%xmm4,%xmm2 + +# qhasm: r = unpack_high(g4, g5) +# asm 1: vpunpckhqdq r=reg128#4 +# asm 2: vpunpckhqdq r=%xmm3 +vpunpckhqdq %xmm5,%xmm6,%xmm3 + +# qhasm: z3_4 = r +# asm 1: movdqa z3_4=stack128#8 +# asm 2: movdqa z3_4=112(%rsp) +movdqa %xmm3,112(%rsp) + +# qhasm: h5 = unpack_low(g4, g5) +# asm 1: vpunpcklqdq h5=reg128#4 +# asm 2: vpunpcklqdq h5=%xmm3 +vpunpcklqdq %xmm5,%xmm6,%xmm3 + +# qhasm: r = unpack_high(g6, g7) +# asm 1: vpunpckhqdq r=reg128#5 +# asm 2: vpunpckhqdq r=%xmm4 +vpunpckhqdq %xmm7,%xmm8,%xmm4 + +# qhasm: z3_6 = r +# asm 1: movdqa z3_6=stack128#9 +# asm 2: movdqa z3_6=128(%rsp) +movdqa %xmm4,128(%rsp) + +# qhasm: h7 = unpack_low(g6, g7) +# asm 1: vpunpcklqdq h7=reg128#5 +# asm 2: vpunpcklqdq h7=%xmm4 +vpunpcklqdq %xmm7,%xmm8,%xmm4 + +# qhasm: r = unpack_high(g8, g9) +# asm 1: vpunpckhqdq r=reg128#6 +# asm 2: vpunpckhqdq r=%xmm5 +vpunpckhqdq %xmm0,%xmm9,%xmm5 + +# qhasm: z3_8 = r +# asm 1: movdqa z3_8=stack128#10 +# asm 2: movdqa z3_8=144(%rsp) +movdqa %xmm5,144(%rsp) + +# qhasm: h9 = unpack_low(g8, g9) +# asm 1: vpunpcklqdq h9=reg128#1 +# asm 2: vpunpcklqdq h9=%xmm0 +vpunpcklqdq %xmm0,%xmm9,%xmm0 + +# qhasm: h0 = t0_0 +# asm 1: movdqa h0=reg128#6 +# asm 2: movdqa h0=%xmm5 +movdqa 464(%rsp),%xmm5 + +# qhasm: 2x h1 += h0 +# asm 1: paddq g0=reg128#7 +# asm 2: vpunpcklqdq g0=%xmm6 +vpunpcklqdq %xmm1,%xmm5,%xmm6 + +# qhasm: g1 = unpack_high(h0, h1) +# asm 1: vpunpckhqdq g1=reg128#2 +# asm 2: vpunpckhqdq g1=%xmm1 +vpunpckhqdq %xmm1,%xmm5,%xmm1 + +# qhasm: 2x m1 = g0 * f1_stack +# asm 1: vpmuludq m1=reg128#6 +# asm 2: vpmuludq m1=%xmm5 +vpmuludq 512(%rsp),%xmm6,%xmm5 + +# qhasm: 2x r = g1 * f0_stack +# asm 1: vpmuludq r=reg128#8 +# asm 2: vpmuludq r=%xmm7 +vpmuludq 480(%rsp),%xmm1,%xmm7 + +# qhasm: 2x m1 += r +# asm 1: paddq m2=reg128#8 +# asm 2: vpmuludq m2=%xmm7 +vpmuludq 560(%rsp),%xmm6,%xmm7 + +# qhasm: 2x r = g1 * f1_2_stack +# asm 1: vpmuludq r=reg128#9 +# asm 2: vpmuludq r=%xmm8 +vpmuludq 528(%rsp),%xmm1,%xmm8 + +# qhasm: 2x m2 += r +# asm 1: paddq m3=reg128#9 +# asm 2: vpmuludq m3=%xmm8 +vpmuludq 576(%rsp),%xmm6,%xmm8 + +# qhasm: 2x r = g1 * f2_stack +# asm 1: vpmuludq r=reg128#10 +# asm 2: vpmuludq r=%xmm9 +vpmuludq 560(%rsp),%xmm1,%xmm9 + +# qhasm: 2x m3 += r +# asm 1: paddq m4=reg128#10 +# asm 2: vpmuludq m4=%xmm9 +vpmuludq 624(%rsp),%xmm6,%xmm9 + +# qhasm: 2x r = g1 * f3_2_stack +# asm 1: vpmuludq r=reg128#11 +# asm 2: vpmuludq r=%xmm10 +vpmuludq 592(%rsp),%xmm1,%xmm10 + +# qhasm: 2x m4 += r +# asm 1: paddq m5=reg128#11 +# asm 2: vpmuludq m5=%xmm10 +vpmuludq 640(%rsp),%xmm6,%xmm10 + +# qhasm: 2x r = g1 * f4_stack +# asm 1: vpmuludq r=reg128#12 +# asm 2: vpmuludq r=%xmm11 +vpmuludq 624(%rsp),%xmm1,%xmm11 + +# qhasm: 2x m5 += r +# asm 1: paddq m6=reg128#12 +# asm 2: vpmuludq m6=%xmm11 +vpmuludq 688(%rsp),%xmm6,%xmm11 + +# qhasm: 2x r = g1 * f5_2_stack +# asm 1: vpmuludq r=reg128#13 +# asm 2: vpmuludq r=%xmm12 +vpmuludq 656(%rsp),%xmm1,%xmm12 + +# qhasm: 2x m6 += r +# asm 1: paddq m7=reg128#13 +# asm 2: vpmuludq m7=%xmm12 +vpmuludq 704(%rsp),%xmm6,%xmm12 + +# qhasm: 2x r = g1 * f6_stack +# asm 1: vpmuludq r=reg128#14 +# asm 2: vpmuludq r=%xmm13 +vpmuludq 688(%rsp),%xmm1,%xmm13 + +# qhasm: 2x m7 += r +# asm 1: paddq m8=reg128#14 +# asm 2: vpmuludq m8=%xmm13 +vpmuludq 736(%rsp),%xmm6,%xmm13 + +# qhasm: 2x r = g1 * f7_2_stack +# asm 1: vpmuludq r=reg128#15 +# asm 2: vpmuludq r=%xmm14 +vpmuludq 720(%rsp),%xmm1,%xmm14 + +# qhasm: 2x m8 += r +# asm 1: paddq m9=reg128#15 +# asm 2: vpmuludq m9=%xmm14 +vpmuludq 752(%rsp),%xmm6,%xmm14 + +# qhasm: 2x r = g1 * f8_stack +# asm 1: vpmuludq r=reg128#16 +# asm 2: vpmuludq r=%xmm15 +vpmuludq 736(%rsp),%xmm1,%xmm15 + +# qhasm: 2x m9 += r +# asm 1: paddq m0=reg128#7 +# asm 2: vpmuludq m0=%xmm6 +vpmuludq 480(%rsp),%xmm6,%xmm6 + +# qhasm: 2x g1 *= mem128[ v19_19 ] +# asm 1: pmuludq v19_19,r=reg128#2 +# asm 2: vpmuludq r=%xmm1 +vpmuludq 768(%rsp),%xmm1,%xmm1 + +# qhasm: 2x m0 += r +# asm 1: paddq h2=reg128#2 +# asm 2: movdqa h2=%xmm1 +movdqa 544(%rsp),%xmm1 + +# qhasm: 2x h3 += h2 +# asm 1: paddq g2=reg128#16 +# asm 2: vpunpcklqdq g2=%xmm15 +vpunpcklqdq %xmm2,%xmm1,%xmm15 + +# qhasm: g3 = unpack_high(h2, h3) +# asm 1: vpunpckhqdq g3=reg128#2 +# asm 2: vpunpckhqdq g3=%xmm1 +vpunpckhqdq %xmm2,%xmm1,%xmm1 + +# qhasm: 2x r2 = g2 * f0_stack +# asm 1: vpmuludq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 480(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m2 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 512(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m3 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 560(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m4 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 576(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m5 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 624(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m6 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 640(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m7 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 688(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m8 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 704(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m9 += r2 +# asm 1: paddq r2=reg128#3 +# asm 2: vpmuludq r2=%xmm2 +vpmuludq 736(%rsp),%xmm15,%xmm2 + +# qhasm: 2x m0 += r2 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 480(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m3 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 528(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m4 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 560(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m5 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 592(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m6 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 624(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m7 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 656(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m8 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 688(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m9 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 720(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m0 += r3 +# asm 1: paddq r3=reg128#3 +# asm 2: vpmuludq r3=%xmm2 +vpmuludq 736(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m1 += r3 +# asm 1: paddq h4=reg128#2 +# asm 2: movdqa h4=%xmm1 +movdqa 608(%rsp),%xmm1 + +# qhasm: 2x h5 += h4 +# asm 1: paddq g4=reg128#3 +# asm 2: vpunpcklqdq g4=%xmm2 +vpunpcklqdq %xmm3,%xmm1,%xmm2 + +# qhasm: g5 = unpack_high(h4, h5) +# asm 1: vpunpckhqdq g5=reg128#2 +# asm 2: vpunpckhqdq g5=%xmm1 +vpunpckhqdq %xmm3,%xmm1,%xmm1 + +# qhasm: 2x r4 = g4 * f0_stack +# asm 1: vpmuludq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 480(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m4 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 512(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m5 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 560(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m6 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 576(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m7 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 624(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m8 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 640(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m9 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 688(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m0 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 704(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m1 += r4 +# asm 1: paddq r4=reg128#4 +# asm 2: vpmuludq r4=%xmm3 +vpmuludq 736(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m2 += r4 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 480(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m5 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 528(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m6 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 560(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m7 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 592(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m8 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 624(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m9 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 656(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m0 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 688(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m1 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 720(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m2 += r5 +# asm 1: paddq r5=reg128#3 +# asm 2: vpmuludq r5=%xmm2 +vpmuludq 736(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m3 += r5 +# asm 1: paddq h6=reg128#2 +# asm 2: movdqa h6=%xmm1 +movdqa 672(%rsp),%xmm1 + +# qhasm: 2x h7 += h6 +# asm 1: paddq g6=reg128#3 +# asm 2: vpunpcklqdq g6=%xmm2 +vpunpcklqdq %xmm4,%xmm1,%xmm2 + +# qhasm: g7 = unpack_high(h6, h7) +# asm 1: vpunpckhqdq g7=reg128#2 +# asm 2: vpunpckhqdq g7=%xmm1 +vpunpckhqdq %xmm4,%xmm1,%xmm1 + +# qhasm: 2x r6 = g6 * f0_stack +# asm 1: vpmuludq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 480(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m6 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 512(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m7 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 560(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m8 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 576(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m9 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 624(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m0 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 640(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m1 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 688(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m2 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 704(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m3 += r6 +# asm 1: paddq r6=reg128#4 +# asm 2: vpmuludq r6=%xmm3 +vpmuludq 736(%rsp),%xmm2,%xmm3 + +# qhasm: 2x m4 += r6 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 480(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m7 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 528(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m8 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 560(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m9 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 592(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m0 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 624(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m1 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 656(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m2 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 688(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m3 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 720(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m4 += r7 +# asm 1: paddq r7=reg128#3 +# asm 2: vpmuludq r7=%xmm2 +vpmuludq 736(%rsp),%xmm1,%xmm2 + +# qhasm: 2x m5 += r7 +# asm 1: paddq h8=reg128#2 +# asm 2: movdqa h8=%xmm1 +movdqa 448(%rsp),%xmm1 + +# qhasm: 2x h9 += h8 +# asm 1: paddq g8=reg128#3 +# asm 2: vpunpcklqdq g8=%xmm2 +vpunpcklqdq %xmm0,%xmm1,%xmm2 + +# qhasm: g9 = unpack_high(h8, h9) +# asm 1: vpunpckhqdq g9=reg128#1 +# asm 2: vpunpckhqdq g9=%xmm0 +vpunpckhqdq %xmm0,%xmm1,%xmm0 + +# qhasm: 2x r8 = g8 * f0_stack +# asm 1: vpmuludq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 480(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m8 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 512(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m9 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 560(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m0 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 576(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m1 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 624(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m2 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 640(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m3 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 688(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m4 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 704(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m5 += r8 +# asm 1: paddq r8=reg128#2 +# asm 2: vpmuludq r8=%xmm1 +vpmuludq 736(%rsp),%xmm2,%xmm1 + +# qhasm: 2x m6 += r8 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 480(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m9 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 528(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m0 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 560(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m1 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 592(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m2 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 624(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m3 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 656(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m4 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 688(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m5 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 720(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m6 += r9 +# asm 1: paddq r9=reg128#2 +# asm 2: vpmuludq r9=%xmm1 +vpmuludq 736(%rsp),%xmm0,%xmm1 + +# qhasm: 2x m7 += r9 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#1 +# asm 2: vpsrlq $26,carry0=%xmm0 +vpsrlq $26,%xmm6,%xmm0 + +# qhasm: 2x m1 += carry0 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#1 +# asm 2: vpsrlq $25,carry5=%xmm0 +vpsrlq $25,%xmm10,%xmm0 + +# qhasm: 2x m6 += carry5 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry1=reg128#1 +# asm 2: vpsrlq $25,carry1=%xmm0 +vpsrlq $25,%xmm5,%xmm0 + +# qhasm: 2x m2 += carry1 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry6=reg128#1 +# asm 2: vpsrlq $26,carry6=%xmm0 +vpsrlq $26,%xmm11,%xmm0 + +# qhasm: 2x m7 += carry6 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry2=reg128#1 +# asm 2: vpsrlq $26,carry2=%xmm0 +vpsrlq $26,%xmm7,%xmm0 + +# qhasm: 2x m3 += carry2 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry7=reg128#1 +# asm 2: vpsrlq $25,carry7=%xmm0 +vpsrlq $25,%xmm12,%xmm0 + +# qhasm: 2x m8 += carry7 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry3=reg128#1 +# asm 2: vpsrlq $25,carry3=%xmm0 +vpsrlq $25,%xmm8,%xmm0 + +# qhasm: 2x m4 += carry3 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry8=reg128#1 +# asm 2: vpsrlq $26,carry8=%xmm0 +vpsrlq $26,%xmm13,%xmm0 + +# qhasm: 2x m9 += carry8 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry4=reg128#1 +# asm 2: vpsrlq $26,carry4=%xmm0 +vpsrlq $26,%xmm9,%xmm0 + +# qhasm: 2x m5 += carry4 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry9=reg128#1 +# asm 2: vpsrlq $25,carry9=%xmm0 +vpsrlq $25,%xmm14,%xmm0 + +# qhasm: 2x r0 = carry9 << 4 +# asm 1: vpsllq $4,r0=reg128#2 +# asm 2: vpsllq $4,r0=%xmm1 +vpsllq $4,%xmm0,%xmm1 + +# qhasm: 2x m0 += carry9 +# asm 1: paddq >= 25 +# asm 1: vpsrlq $25,carry5=reg128#1 +# asm 2: vpsrlq $25,carry5=%xmm0 +vpsrlq $25,%xmm10,%xmm0 + +# qhasm: 2x m6 += carry5 +# asm 1: paddq >= 26 +# asm 1: vpsrlq $26,carry0=reg128#1 +# asm 2: vpsrlq $26,carry0=%xmm0 +vpsrlq $26,%xmm6,%xmm0 + +# qhasm: 2x m1 += carry0 +# asm 1: paddq f1=reg128#2 +# asm 2: vpunpckhqdq f1=%xmm1 +vpunpckhqdq %xmm5,%xmm6,%xmm1 + +# qhasm: f0 = unpack_low( m0, m1 ) +# asm 1: vpunpcklqdq f0=reg128#1 +# asm 2: vpunpcklqdq f0=%xmm0 +vpunpcklqdq %xmm5,%xmm6,%xmm0 + +# qhasm: f3 = unpack_high( m2, m3 ) +# asm 1: vpunpckhqdq f3=reg128#4 +# asm 2: vpunpckhqdq f3=%xmm3 +vpunpckhqdq %xmm8,%xmm7,%xmm3 + +# qhasm: f2 = unpack_low( m2, m3 ) +# asm 1: vpunpcklqdq f2=reg128#3 +# asm 2: vpunpcklqdq f2=%xmm2 +vpunpcklqdq %xmm8,%xmm7,%xmm2 + +# qhasm: f5 = unpack_high( m4, m5 ) +# asm 1: vpunpckhqdq f5=reg128#6 +# asm 2: vpunpckhqdq f5=%xmm5 +vpunpckhqdq %xmm10,%xmm9,%xmm5 + +# qhasm: f4 = unpack_low( m4, m5 ) +# asm 1: vpunpcklqdq f4=reg128#5 +# asm 2: vpunpcklqdq f4=%xmm4 +vpunpcklqdq %xmm10,%xmm9,%xmm4 + +# qhasm: f7 = unpack_high( m6, m7 ) +# asm 1: vpunpckhqdq f7=reg128#8 +# asm 2: vpunpckhqdq f7=%xmm7 +vpunpckhqdq %xmm12,%xmm11,%xmm7 + +# qhasm: f6 = unpack_low( m6, m7 ) +# asm 1: vpunpcklqdq f6=reg128#7 +# asm 2: vpunpcklqdq f6=%xmm6 +vpunpcklqdq %xmm12,%xmm11,%xmm6 + +# qhasm: f9 = unpack_high( m8, m9 ) +# asm 1: vpunpckhqdq f9=reg128#10 +# asm 2: vpunpckhqdq f9=%xmm9 +vpunpckhqdq %xmm14,%xmm13,%xmm9 + +# qhasm: f8 = unpack_low( m8, m9 ) +# asm 1: vpunpcklqdq f8=reg128#9 +# asm 2: vpunpcklqdq f8=%xmm8 +vpunpcklqdq %xmm14,%xmm13,%xmm8 + +# qhasm: =? pos - 0 +# asm 1: cmp $0,caller_r11=int64#9 +# asm 2: movq caller_r11=%r11 +movq 1824(%rsp),%r11 + +# qhasm: caller_r12 = r12_stack +# asm 1: movq caller_r12=int64#10 +# asm 2: movq caller_r12=%r12 +movq 1832(%rsp),%r12 + +# qhasm: caller_r13 = r13_stack +# asm 1: movq caller_r13=int64#11 +# asm 2: movq caller_r13=%r13 +movq 1840(%rsp),%r13 + +# qhasm: caller_r14 = r14_stack +# asm 1: movq caller_r14=int64#12 +# asm 2: movq caller_r14=%r14 +movq 1848(%rsp),%r14 + +# qhasm: return +add %r11,%rsp +ret diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/ladder.h b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/ladder.h new file mode 100644 index 0000000000..afd2235017 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/ladder.h @@ -0,0 +1,10 @@ +#ifndef LADDER_H +#define LADDER_H + +#include "fe.h" +#include "ladder_namespace.h" + +extern void ladder(fe *, const unsigned char *); + +#endif //ifndef LADDER_H + diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/ladder_namespace.h b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/ladder_namespace.h new file mode 100644 index 0000000000..97e5468be9 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/ladder_namespace.h @@ -0,0 +1,8 @@ +#ifndef LADDER_NAMESPACE_H +#define LADDER_NAMESPACE_H + +#define ladder CRYPTO_SHARED_NAMESPACE(ladder) +#define _ladder _CRYPTO_SHARED_NAMESPACE(ladder) + +#endif //ifndef LADDER_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/scalarmult.c b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/scalarmult.c new file mode 100644 index 0000000000..b9bfae2df0 --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/scalarmult.c @@ -0,0 +1,55 @@ +/* + This file is adapted from ref10/scalarmult.c: + The code for Mongomery ladder is replace by the ladder assembly function; + Inversion is done in the same way as amd64-51/. + (fe is first converted into fe51 after Mongomery ladder) +*/ + +#include "crypto_nP.h" + +#include "fe.h" +#include "fe51.h" +#include "ladder.h" + +#define x1 var[0] +#define x2 var[1] +#define z2 var[2] + +void crypto_nP(unsigned char *q, + const unsigned char *n, + const unsigned char *p) +{ + unsigned char e[32]; + unsigned int i; + + fe var[3]; + + fe51 x_51; + fe51 z_51; + + for (i = 0;i < 32;++i) e[i] = n[i]; + e[0] &= 248; + e[31] &= 127; + e[31] |= 64; + + fe_frombytes(x1, p); + + ladder(var, e); + + z_51.v[0] = (z2[1] << 26) + z2[0]; + z_51.v[1] = (z2[3] << 26) + z2[2]; + z_51.v[2] = (z2[5] << 26) + z2[4]; + z_51.v[3] = (z2[7] << 26) + z2[6]; + z_51.v[4] = (z2[9] << 26) + z2[8]; + + x_51.v[0] = (x2[1] << 26) + x2[0]; + x_51.v[1] = (x2[3] << 26) + x2[2]; + x_51.v[2] = (x2[5] << 26) + x2[4]; + x_51.v[3] = (x2[7] << 26) + x2[6]; + x_51.v[4] = (x2[9] << 26) + x2[8]; + + fe51_invert(&z_51, &z_51); + fe51_mul(&x_51, &x_51, &z_51); + fe51_pack(q, &x_51); +} + diff --git a/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/shared-consts.c b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/shared-consts.c new file mode 120000 index 0000000000..653e1a963a --- /dev/null +++ b/lib-25519/lib25519/crypto_nP/montgomery25519/sandy2x/shared-consts.c @@ -0,0 +1 @@ +../../../crypto_nG/montgomery25519/sandy2x/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/api.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/api.c new file mode 100644 index 0000000000..885c5ea398 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/api.c @@ -0,0 +1,10 @@ +#include "crypto_pow.h" +#include "fe25519.h" + +void crypto_pow(unsigned char *q,const unsigned char *p) +{ + fe25519 x; + fe25519_unpack(&x,p); + fe25519_invert(&x,&x); + fe25519_pack(q,&x); +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/architectures b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/architectures new file mode 120000 index 0000000000..f92e7d6fe1 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/architectures @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519.h b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519.h new file mode 100644 index 0000000000..1bfcaaf4ac --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519.h @@ -0,0 +1,62 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_iszero_vartime CRYPTO_NAMESPACE(fe25519_iszero_vartime) +#define fe25519_iseq_vartime CRYPTO_NAMESPACE(fe25519_iseq_vartime) +#define fe25519_cmov CRYPTO_NAMESPACE(fe25519_cmov) +#define fe25519_setint CRYPTO_NAMESPACE(fe25519_setint) +#define fe25519_neg CRYPTO_NAMESPACE(fe25519_neg) +#define fe25519_getparity CRYPTO_NAMESPACE(fe25519_getparity) +#define fe25519_add CRYPTO_NAMESPACE(fe25519_add) +#define fe25519_sub CRYPTO_NAMESPACE(fe25519_sub) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_mul121666 CRYPTO_NAMESPACE(fe25519_mul121666) +#define fe25519_square CRYPTO_SHARED_NAMESPACE(fe25519_square) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) +#define fe25519_pow2523 CRYPTO_NAMESPACE(fe25519_pow2523) + +typedef struct +{ + unsigned long long v[5]; +} +fe25519; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_cmov(fe25519 *r, const fe25519 *x, unsigned char b); + +void fe25519_cswap(fe25519 *r, fe25519 *x, unsigned char b); + +void fe25519_setint(fe25519 *r, unsigned int v); + +void fe25519_neg(fe25519 *r, const fe25519 *x); + +unsigned char fe25519_getparity(const fe25519 *x); + +int fe25519_iszero_vartime(const fe25519 *x); + +int fe25519_iseq_vartime(const fe25519 *x, const fe25519 *y); + +void fe25519_add(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_sub(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_mul121666(fe25519 *r, const fe25519 *x); + +void fe25519_square(fe25519 *r, const fe25519 *x); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +void fe25519_pow2523(fe25519 *r, const fe25519 *x); + +#endif diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_freeze.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_freeze.S new file mode 100644 index 0000000000..66e687fa4a --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_freeze.S @@ -0,0 +1,436 @@ +// linker define fe25519_freeze +// linker use mask51 + +# qhasm: int64 rp + +# qhasm: input rp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 r4 + +# qhasm: int64 t + +# qhasm: int64 loop + +# qhasm: int64 two51minus1 + +# qhasm: int64 two51minus19 + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +_CRYPTO_SHARED_NAMESPACE(fe25519_freeze): +CRYPTO_SHARED_NAMESPACE(fe25519_freeze): +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: r0 = *(uint64 *) (rp + 0) +# asm 1: movq 0(r0=int64#2 +# asm 2: movq 0(r0=%rsi +movq 0(%rdi),%rsi + +# qhasm: r1 = *(uint64 *) (rp + 8) +# asm 1: movq 8(r1=int64#3 +# asm 2: movq 8(r1=%rdx +movq 8(%rdi),%rdx + +# qhasm: r2 = *(uint64 *) (rp + 16) +# asm 1: movq 16(r2=int64#4 +# asm 2: movq 16(r2=%rcx +movq 16(%rdi),%rcx + +# qhasm: r3 = *(uint64 *) (rp + 24) +# asm 1: movq 24(r3=int64#5 +# asm 2: movq 24(r3=%r8 +movq 24(%rdi),%r8 + +# qhasm: r4 = *(uint64 *) (rp + 32) +# asm 1: movq 32(r4=int64#6 +# asm 2: movq 32(r4=%r9 +movq 32(%rdi),%r9 + +# qhasm: two51minus1 = *(uint64 *) &CRYPTO_SHARED_NAMESPACE(mask51) +# asm 1: movq CRYPTO_SHARED_NAMESPACE(mask51),>two51minus1=int64#7 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(mask51),>two51minus1=%rax +movq CRYPTO_SHARED_NAMESPACE(mask51)(%rip),%rax + +# qhasm: two51minus19 = two51minus1 +# asm 1: mov two51minus19=int64#8 +# asm 2: mov two51minus19=%r10 +mov %rax,%r10 + +# qhasm: two51minus19 -= 18 +# asm 1: sub $18,loop=int64#9 +# asm 2: mov $3,>loop=%r11 +mov $3,%r11 + +# qhasm: reduceloop: +._reduceloop: + +# qhasm: t = r0 +# asm 1: mov t=int64#10 +# asm 2: mov t=%r12 +mov %rsi,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,t=int64#10 +# asm 2: mov t=%r12 +mov %rdx,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,t=int64#10 +# asm 2: mov t=%r12 +mov %rcx,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,t=int64#10 +# asm 2: mov t=%r12 +mov %r8,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,t=int64#10 +# asm 2: mov t=%r12 +mov %r9,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,t=int64#10 +# asm 2: imulq $19,t=%r12 +imulq $19,%r12,%r12 + +# qhasm: r0 += t +# asm 1: add ? loop -= 1 +# asm 1: sub $1, +ja ._reduceloop + +# qhasm: t = 1 +# asm 1: mov $1,>t=int64#10 +# asm 2: mov $1,>t=%r12 +mov $1,%r12 + +# qhasm: signedcaller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_invert.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_invert.c new file mode 100644 index 0000000000..e0ddf41a86 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_invert.c @@ -0,0 +1,64 @@ +// linker define fe25519_invert +// linker use fe25519_mul +// linker use fe25519_square + +#include "fe25519.h" + +void fe25519_invert(fe25519 *r, const fe25519 *x) +{ + fe25519 z2; + fe25519 z9; + fe25519 z11; + fe25519 z2_5_0; + fe25519 z2_10_0; + fe25519 z2_20_0; + fe25519 z2_50_0; + fe25519 z2_100_0; + fe25519 t; + int i; + + /* 2 */ fe25519_square(&z2,x); + /* 4 */ fe25519_square(&t,&z2); + /* 8 */ fe25519_square(&t,&t); + /* 9 */ fe25519_mul(&z9,&t,x); + /* 11 */ fe25519_mul(&z11,&z9,&z2); + /* 22 */ fe25519_square(&t,&z11); + /* 2^5 - 2^0 = 31 */ fe25519_mul(&z2_5_0,&t,&z9); + + /* 2^6 - 2^1 */ fe25519_square(&t,&z2_5_0); + /* 2^20 - 2^10 */ for (i = 1;i < 5;i++) { fe25519_square(&t,&t); } + /* 2^10 - 2^0 */ fe25519_mul(&z2_10_0,&t,&z2_5_0); + + /* 2^11 - 2^1 */ fe25519_square(&t,&z2_10_0); + /* 2^20 - 2^10 */ for (i = 1;i < 10;i++) { fe25519_square(&t,&t); } + /* 2^20 - 2^0 */ fe25519_mul(&z2_20_0,&t,&z2_10_0); + + /* 2^21 - 2^1 */ fe25519_square(&t,&z2_20_0); + /* 2^40 - 2^20 */ for (i = 1;i < 20;i++) { fe25519_square(&t,&t); } + /* 2^40 - 2^0 */ fe25519_mul(&t,&t,&z2_20_0); + + /* 2^41 - 2^1 */ fe25519_square(&t,&t); + /* 2^50 - 2^10 */ for (i = 1;i < 10;i++) { fe25519_square(&t,&t); } + /* 2^50 - 2^0 */ fe25519_mul(&z2_50_0,&t,&z2_10_0); + + /* 2^51 - 2^1 */ fe25519_square(&t,&z2_50_0); + /* 2^100 - 2^50 */ for (i = 1;i < 50;i++) { fe25519_square(&t,&t); } + /* 2^100 - 2^0 */ fe25519_mul(&z2_100_0,&t,&z2_50_0); + + /* 2^101 - 2^1 */ fe25519_square(&t,&z2_100_0); + /* 2^200 - 2^100 */ for (i = 1;i < 100;i++) { fe25519_square(&t,&t); } + /* 2^200 - 2^0 */ fe25519_mul(&t,&t,&z2_100_0); + + /* 2^201 - 2^1 */ fe25519_square(&t,&t); + /* 2^250 - 2^50 */ for (i = 1;i < 50;i++) { fe25519_square(&t,&t); } + /* 2^250 - 2^0 */ fe25519_mul(&t,&t,&z2_50_0); + + /* 2^251 - 2^1 */ fe25519_square(&t,&t); + /* 2^252 - 2^2 */ fe25519_square(&t,&t); + /* 2^253 - 2^3 */ fe25519_square(&t,&t); + + /* 2^254 - 2^4 */ fe25519_square(&t,&t); + + /* 2^255 - 2^5 */ fe25519_square(&t,&t); + /* 2^255 - 21 */ fe25519_mul(r,&t,&z11); +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_mul.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_mul.S new file mode 100644 index 0000000000..2d6e90a035 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_mul.S @@ -0,0 +1,948 @@ +// linker define fe25519_mul +// linker use mask51 + +# qhasm: int64 rp + +# qhasm: int64 xp + +# qhasm: int64 yp + +# qhasm: input rp + +# qhasm: input xp + +# qhasm: input yp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 r4 + +# qhasm: int64 c1 + +# qhasm: int64 c2 + +# qhasm: int64 c3 + +# qhasm: int64 c4 + +# qhasm: int64 c5 + +# qhasm: int64 c6 + +# qhasm: int64 c7 + +# qhasm: caller c1 + +# qhasm: caller c2 + +# qhasm: caller c3 + +# qhasm: caller c4 + +# qhasm: caller c5 + +# qhasm: caller c6 + +# qhasm: caller c7 + +# qhasm: stack64 c1_stack + +# qhasm: stack64 c2_stack + +# qhasm: stack64 c3_stack + +# qhasm: stack64 c4_stack + +# qhasm: stack64 c5_stack + +# qhasm: stack64 c6_stack + +# qhasm: stack64 c7_stack + +# qhasm: stack64 x119_stack + +# qhasm: stack64 x219_stack + +# qhasm: stack64 x319_stack + +# qhasm: stack64 x419_stack + +# qhasm: stack64 rp_stack + +# qhasm: int64 mulr01 + +# qhasm: int64 mulr11 + +# qhasm: int64 mulr21 + +# qhasm: int64 mulr31 + +# qhasm: int64 mulr41 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mult + +# qhasm: int64 mulredmask + +# qhasm: stack64 mulx219_stack + +# qhasm: stack64 mulx319_stack + +# qhasm: stack64 mulx419_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(fe25519_mul) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_mul) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_mul) +_CRYPTO_SHARED_NAMESPACE(fe25519_mul): +CRYPTO_SHARED_NAMESPACE(fe25519_mul): +mov %rsp,%r11 +and $31,%r11 +add $96,%r11 +sub %r11,%rsp + +# qhasm: c1_stack = c1 +# asm 1: movq c1_stack=stack64#1 +# asm 2: movq c1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: c2_stack = c2 +# asm 1: movq c2_stack=stack64#2 +# asm 2: movq c2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: c3_stack = c3 +# asm 1: movq c3_stack=stack64#3 +# asm 2: movq c3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: c4_stack = c4 +# asm 1: movq c4_stack=stack64#4 +# asm 2: movq c4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: c5_stack = c5 +# asm 1: movq c5_stack=stack64#5 +# asm 2: movq c5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: c6_stack = c6 +# asm 1: movq c6_stack=stack64#6 +# asm 2: movq c6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: c7_stack = c7 +# asm 1: movq c7_stack=stack64#7 +# asm 2: movq c7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: rp_stack = rp +# asm 1: movq rp_stack=stack64#8 +# asm 2: movq rp_stack=56(%rsp) +movq %rdi,56(%rsp) + +# qhasm: yp = yp +# asm 1: mov yp=int64#4 +# asm 2: mov yp=%rcx +mov %rdx,%rcx + +# qhasm: mulrax = *(uint64 *)(xp + 24) +# asm 1: movq 24(mulrax=int64#3 +# asm 2: movq 24(mulrax=%rdx +movq 24(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#9 +# asm 2: movq mulx319_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(r0=int64#5 +# asm 2: mov r0=%r8 +mov %rax,%r8 + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#6 +# asm 2: mov mulr01=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = *(uint64 *)(xp + 32) +# asm 1: movq 32(mulrax=int64#3 +# asm 2: movq 32(mulrax=%rdx +movq 32(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#10 +# asm 2: movq mulx419_stack=72(%rsp) +movq %rax,72(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(r1=int64#8 +# asm 2: mov r1=%r10 +mov %rax,%r10 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#9 +# asm 2: mov mulr11=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = *(uint64 *)(xp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(r2=int64#10 +# asm 2: mov r2=%r12 +mov %rax,%r12 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#11 +# asm 2: mov mulr21=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(xp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(r3=int64#12 +# asm 2: mov r3=%r14 +mov %rax,%r14 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#13 +# asm 2: mov mulr31=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = *(uint64 *)(xp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(r4=int64#14 +# asm 2: mov r4=%rbx +mov %rax,%rbx + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#15 +# asm 2: mov mulr41=%rbp +mov %rdx,%rbp + +# qhasm: mulrax = *(uint64 *)(xp + 8) +# asm 1: movq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(mulrax=int64#3 +# asm 2: movq 8(mulrax=%rdx +movq 8(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(mulredmask=int64#2 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(mask51),>mulredmask=%rsi +movq CRYPTO_SHARED_NAMESPACE(mask51)(%rip),%rsi + +# qhasm: mulr01 = (mulr01.r0) << 13 +# asm 1: shld $13,mulr41=int64#3 +# asm 2: imulq $19,mulr41=%rdx +imulq $19,%rbp,%rdx + +# qhasm: r0 += mulr41 +# asm 1: add mult=int64#3 +# asm 2: mov mult=%rdx +mov %r8,%rdx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,r1=int64#4 +# asm 2: mov r1=%rcx +mov %rdx,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,r2=int64#6 +# asm 2: mov r2=%r9 +mov %rdx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,r3=int64#7 +# asm 2: mov r3=%rax +mov %rdx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,r4=int64#8 +# asm 2: mov r4=%r10 +mov %rdx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#3 +# asm 2: imulq $19,mult=%rdx +imulq $19,%rdx,%rdx + +# qhasm: r0 += mult +# asm 1: add c1=int64#9 +# asm 2: movq c1=%r11 +movq 0(%rsp),%r11 + +# qhasm: c2 =c2_stack +# asm 1: movq c2=int64#10 +# asm 2: movq c2=%r12 +movq 8(%rsp),%r12 + +# qhasm: c3 =c3_stack +# asm 1: movq c3=int64#11 +# asm 2: movq c3=%r13 +movq 16(%rsp),%r13 + +# qhasm: c4 =c4_stack +# asm 1: movq c4=int64#12 +# asm 2: movq c4=%r14 +movq 24(%rsp),%r14 + +# qhasm: c5 =c5_stack +# asm 1: movq c5=int64#13 +# asm 2: movq c5=%r15 +movq 32(%rsp),%r15 + +# qhasm: c6 =c6_stack +# asm 1: movq c6=int64#14 +# asm 2: movq c6=%rbx +movq 40(%rsp),%rbx + +# qhasm: c7 =c7_stack +# asm 1: movq c7=int64#15 +# asm 2: movq c7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_pack.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_pack.c new file mode 120000 index 0000000000..fe8ef76603 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_square.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_square.S new file mode 100644 index 0000000000..de64036e2c --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_square.S @@ -0,0 +1,751 @@ +// linker define fe25519_square +// linker use mask51 + +# qhasm: int64 rp + +# qhasm: int64 xp + +# qhasm: input rp + +# qhasm: input xp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 r4 + +# qhasm: int64 c1 + +# qhasm: int64 c2 + +# qhasm: int64 c3 + +# qhasm: int64 c4 + +# qhasm: int64 c5 + +# qhasm: int64 c6 + +# qhasm: int64 c7 + +# qhasm: caller c1 + +# qhasm: caller c2 + +# qhasm: caller c3 + +# qhasm: caller c4 + +# qhasm: caller c5 + +# qhasm: caller c6 + +# qhasm: caller c7 + +# qhasm: stack64 c1_stack + +# qhasm: stack64 c2_stack + +# qhasm: stack64 c3_stack + +# qhasm: stack64 c4_stack + +# qhasm: stack64 c5_stack + +# qhasm: stack64 c6_stack + +# qhasm: stack64 c7_stack + +# qhasm: stack64 x119_stack + +# qhasm: stack64 x219_stack + +# qhasm: stack64 x319_stack + +# qhasm: stack64 x419_stack + +# qhasm: int64 squarer01 + +# qhasm: int64 squarer11 + +# qhasm: int64 squarer21 + +# qhasm: int64 squarer31 + +# qhasm: int64 squarer41 + +# qhasm: int64 squarerax + +# qhasm: int64 squarerdx + +# qhasm: int64 squaret + +# qhasm: int64 squareredmask + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(fe25519_square) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_square) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_square) +_CRYPTO_SHARED_NAMESPACE(fe25519_square): +CRYPTO_SHARED_NAMESPACE(fe25519_square): +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp + +# qhasm: c1_stack = c1 +# asm 1: movq c1_stack=stack64#1 +# asm 2: movq c1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: c2_stack = c2 +# asm 1: movq c2_stack=stack64#2 +# asm 2: movq c2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: c3_stack = c3 +# asm 1: movq c3_stack=stack64#3 +# asm 2: movq c3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: c4_stack = c4 +# asm 1: movq c4_stack=stack64#4 +# asm 2: movq c4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: c5_stack = c5 +# asm 1: movq c5_stack=stack64#5 +# asm 2: movq c5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: c6_stack = c6 +# asm 1: movq c6_stack=stack64#6 +# asm 2: movq c6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: c7_stack = c7 +# asm 1: movq c7_stack=stack64#7 +# asm 2: movq c7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: squarerax = *(uint64 *)(xp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 0) +# asm 1: mulq 0(r0=int64#4 +# asm 2: mov r0=%rcx +mov %rax,%rcx + +# qhasm: squarer01 = squarerdx +# asm 1: mov squarer01=int64#5 +# asm 2: mov squarer01=%r8 +mov %rdx,%r8 + +# qhasm: squarerax = *(uint64 *)(xp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,r1=int64#6 +# asm 2: mov r1=%r9 +mov %rax,%r9 + +# qhasm: squarer11 = squarerdx +# asm 1: mov squarer11=int64#8 +# asm 2: mov squarer11=%r10 +mov %rdx,%r10 + +# qhasm: squarerax = *(uint64 *)(xp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,r2=int64#9 +# asm 2: mov r2=%r11 +mov %rax,%r11 + +# qhasm: squarer21 = squarerdx +# asm 1: mov squarer21=int64#10 +# asm 2: mov squarer21=%r12 +mov %rdx,%r12 + +# qhasm: squarerax = *(uint64 *)(xp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,r3=int64#11 +# asm 2: mov r3=%r13 +mov %rax,%r13 + +# qhasm: squarer31 = squarerdx +# asm 1: mov squarer31=int64#12 +# asm 2: mov squarer31=%r14 +mov %rdx,%r14 + +# qhasm: squarerax = *(uint64 *)(xp + 0) +# asm 1: movq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,r4=int64#13 +# asm 2: mov r4=%r15 +mov %rax,%r15 + +# qhasm: squarer41 = squarerdx +# asm 1: mov squarer41=int64#14 +# asm 2: mov squarer41=%rbx +mov %rdx,%rbx + +# qhasm: squarerax = *(uint64 *)(xp + 8) +# asm 1: movq 8(squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 8) +# asm 1: mulq 8(squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: squarerax <<= 1 +# asm 1: shl $1,squarerax=int64#3 +# asm 2: movq 8(squarerax=%rdx +movq 8(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 32) +# asm 1: mulq 32(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 16) +# asm 1: mulq 16(squarerax=int64#3 +# asm 2: movq 16(squarerax=%rdx +movq 16(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 24) +# asm 1: mulq 24(squarerax=int64#3 +# asm 2: movq 16(squarerax=%rdx +movq 16(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 32) +# asm 1: mulq 32(squarerax=int64#3 +# asm 2: movq 24(squarerax=%rdx +movq 24(%rsi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 24) +# asm 1: mulq 24(squarerax=int64#3 +# asm 2: movq 24(squarerax=%rdx +movq 24(%rsi),%rdx + +# qhasm: squarerax *= 38 +# asm 1: imulq $38,squarerax=int64#7 +# asm 2: imulq $38,squarerax=%rax +imulq $38,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 32) +# asm 1: mulq 32(squarerax=int64#3 +# asm 2: movq 32(squarerax=%rdx +movq 32(%rsi),%rdx + +# qhasm: squarerax *= 19 +# asm 1: imulq $19,squarerax=int64#7 +# asm 2: imulq $19,squarerax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 32) +# asm 1: mulq 32(squareredmask=int64#2 +# asm 2: movq CRYPTO_SHARED_NAMESPACE(mask51),>squareredmask=%rsi +movq CRYPTO_SHARED_NAMESPACE(mask51)(%rip),%rsi + +# qhasm: squarer01 = (squarer01.r0) << 13 +# asm 1: shld $13,squarer41=int64#3 +# asm 2: imulq $19,squarer41=%rdx +imulq $19,%rbx,%rdx + +# qhasm: r0 += squarer41 +# asm 1: add squaret=int64#3 +# asm 2: mov squaret=%rdx +mov %rcx,%rdx + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r1=int64#5 +# asm 2: mov r1=%r8 +mov %rdx,%r8 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r2=int64#6 +# asm 2: mov r2=%r9 +mov %rdx,%r9 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r3=int64#7 +# asm 2: mov r3=%rax +mov %rdx,%rax + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r4=int64#8 +# asm 2: mov r4=%r10 +mov %rdx,%r10 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,squaret=int64#3 +# asm 2: imulq $19,squaret=%rdx +imulq $19,%rdx,%rdx + +# qhasm: r0 += squaret +# asm 1: add c1=int64#9 +# asm 2: movq c1=%r11 +movq 0(%rsp),%r11 + +# qhasm: c2 =c2_stack +# asm 1: movq c2=int64#10 +# asm 2: movq c2=%r12 +movq 8(%rsp),%r12 + +# qhasm: c3 =c3_stack +# asm 1: movq c3=int64#11 +# asm 2: movq c3=%r13 +movq 16(%rsp),%r13 + +# qhasm: c4 =c4_stack +# asm 1: movq c4=int64#12 +# asm 2: movq c4=%r14 +movq 24(%rsp),%r14 + +# qhasm: c5 =c5_stack +# asm 1: movq c5=int64#13 +# asm 2: movq c5=%r15 +movq 32(%rsp),%r15 + +# qhasm: c6 =c6_stack +# asm 1: movq c6=int64#14 +# asm 2: movq c6=%rbx +movq 40(%rsp),%rbx + +# qhasm: c7 =c7_stack +# asm 1: movq c7=int64#15 +# asm 2: movq c7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_unpack.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_unpack.c new file mode 120000 index 0000000000..15a19f6e1d --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/implementors b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/implementors new file mode 120000 index 0000000000..3535539aea --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/implementors @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/shared-consts.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/shared-consts.c new file mode 100644 index 0000000000..96e3af92dd --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-51/shared-consts.c @@ -0,0 +1,5 @@ +// linker define mask51 + +#include "crypto_uint64.h" + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(mask51) = 0x7FFFFFFFFFFFF; diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/api.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/api.c new file mode 120000 index 0000000000..798639a0b7 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/api.c @@ -0,0 +1 @@ +../amd64-51/api.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/architectures b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/architectures new file mode 120000 index 0000000000..f92e7d6fe1 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/architectures @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519.h b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519.h new file mode 120000 index 0000000000..7ac729fd9c --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_freeze.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_invert.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_invert.c new file mode 120000 index 0000000000..06cd19180a --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-51/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_mul.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_mul.S new file mode 120000 index 0000000000..12c9c07cf0 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_pack.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_square.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_square.S new file mode 100644 index 0000000000..c8d7031dc3 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_square.S @@ -0,0 +1,641 @@ +// linker define fe25519_square +// linker use 38 + +# qhasm: int64 rp + +# qhasm: int64 xp + +# qhasm: input rp + +# qhasm: input xp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 squarer4 + +# qhasm: int64 squarer5 + +# qhasm: int64 squarer6 + +# qhasm: int64 squarer7 + +# qhasm: int64 squarer8 + +# qhasm: int64 squarerax + +# qhasm: int64 squarerdx + +# qhasm: int64 squaret1 + +# qhasm: int64 squaret2 + +# qhasm: int64 squaret3 + +# qhasm: int64 squarec + +# qhasm: int64 squarezero + +# qhasm: int64 squarei38 + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(fe25519_square) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_square) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_square) +_CRYPTO_SHARED_NAMESPACE(fe25519_square): +CRYPTO_SHARED_NAMESPACE(fe25519_square): +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#4 +# asm 2: mov $0,>squarer7=%rcx +mov $0,%rcx + +# qhasm: squarerax = *(uint64 *)(xp + 8) +# asm 1: movq 8(squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 0) +# asm 1: mulq 0(r1=int64#5 +# asm 2: mov r1=%r8 +mov %rax,%r8 + +# qhasm: r2 = squarerdx +# asm 1: mov r2=int64#6 +# asm 2: mov r2=%r9 +mov %rdx,%r9 + +# qhasm: squarerax = *(uint64 *)(xp + 16) +# asm 1: movq 16(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 8) +# asm 1: mulq 8(r3=int64#8 +# asm 2: mov r3=%r10 +mov %rax,%r10 + +# qhasm: squarer4 = squarerdx +# asm 1: mov squarer4=int64#9 +# asm 2: mov squarer4=%r11 +mov %rdx,%r11 + +# qhasm: squarerax = *(uint64 *)(xp + 24) +# asm 1: movq 24(squarerax=int64#7 +# asm 2: movq 24(squarerax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 16) +# asm 1: mulq 16(squarer5=int64#10 +# asm 2: mov squarer5=%r12 +mov %rax,%r12 + +# qhasm: squarer6 = squarerdx +# asm 1: mov squarer6=int64#11 +# asm 2: mov squarer6=%r13 +mov %rdx,%r13 + +# qhasm: squarerax = *(uint64 *)(xp + 16) +# asm 1: movq 16(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 0) +# asm 1: mulq 0(squarerax=int64#7 +# asm 2: movq 24(squarerax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 8) +# asm 1: mulq 8(squarerax=int64#7 +# asm 2: movq 24(squarerax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 0) +# asm 1: mulq 0(squarerax=int64#7 +# asm 2: movq 0(squarerax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 0) +# asm 1: mulq 0(r0=int64#12 +# asm 2: mov r0=%r14 +mov %rax,%r14 + +# qhasm: squaret1 = squarerdx +# asm 1: mov squaret1=int64#13 +# asm 2: mov squaret1=%r15 +mov %rdx,%r15 + +# qhasm: squarerax = *(uint64 *)(xp + 8) +# asm 1: movq 8(squarerax=int64#7 +# asm 2: movq 8(squarerax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 8) +# asm 1: mulq 8(squaret2=int64#14 +# asm 2: mov squaret2=%rbx +mov %rax,%rbx + +# qhasm: squaret3 = squarerdx +# asm 1: mov squaret3=int64#15 +# asm 2: mov squaret3=%rbp +mov %rdx,%rbp + +# qhasm: squarerax = *(uint64 *)(xp + 16) +# asm 1: movq 16(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 16) +# asm 1: mulq 16(squarerax=int64#7 +# asm 2: movq 24(squarerax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(xp + 24) +# asm 1: mulq 24(squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r11,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: squarer4 = squarerax +# asm 1: mov squarer4=int64#2 +# asm 2: mov squarer4=%rsi +mov %rax,%rsi + +# qhasm: squarerax = squarer5 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r12,%rax + +# qhasm: squarer5 = squarerdx +# asm 1: mov squarer5=int64#9 +# asm 2: mov squarer5=%r11 +mov %rdx,%r11 + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)&CRYPTO_SHARED_NAMESPACE(38) +mulq CRYPTO_SHARED_NAMESPACE(38)(%rip) + +# qhasm: carry? squarer5 += squarerax +# asm 1: add squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r13,%rax + +# qhasm: squarer6 = 0 +# asm 1: mov $0,>squarer6=int64#10 +# asm 2: mov $0,>squarer6=%r12 +mov $0,%r12 + +# qhasm: squarer6 += squarerdx + carry +# asm 1: adc squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rcx,%rax + +# qhasm: squarer7 = 0 +# asm 1: mov $0,>squarer7=int64#4 +# asm 2: mov $0,>squarer7=%rcx +mov $0,%rcx + +# qhasm: squarer7 += squarerdx + carry +# asm 1: adc squarer8=int64#7 +# asm 2: mov $0,>squarer8=%rax +mov $0,%rax + +# qhasm: squarer8 += squarerdx + carry +# asm 1: adc squarezero=int64#2 +# asm 2: mov $0,>squarezero=%rsi +mov $0,%rsi + +# qhasm: squarer8 += squarezero + carry +# asm 1: adc squarer8=int64#3 +# asm 2: imulq $38,squarer8=%rdx +imulq $38,%rax,%rdx + +# qhasm: carry? r0 += squarer8 +# asm 1: add squarezero=int64#2 +# asm 2: imulq $38,squarezero=%rsi +imulq $38,%rsi,%rsi + +# qhasm: r0 += squarezero +# asm 1: add caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_unpack.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/implementors b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/implementors new file mode 120000 index 0000000000..3535539aea --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/implementors @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/shared-consts.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/shared-consts.c new file mode 100644 index 0000000000..91298c30c8 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-64/shared-consts.c @@ -0,0 +1,5 @@ +// linker define 38 + +#include "crypto_uint64.h" + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(38) = 38; diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/api.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/api.c new file mode 120000 index 0000000000..798639a0b7 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/api.c @@ -0,0 +1 @@ +../amd64-51/api.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/architectures b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/architectures new file mode 120000 index 0000000000..f92e7d6fe1 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/architectures @@ -0,0 +1 @@ +../../../crypto_sign/ed25519/amd64/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519.h b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519.h new file mode 100644 index 0000000000..c09416a379 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519.h @@ -0,0 +1,33 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_square CRYPTO_SHARED_NAMESPACE(fe25519_square) +#define fe25519_nsquare CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) + +typedef struct +{ + unsigned long long v[4]; +} +fe25519; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_nsquare(fe25519 *r, const fe25519 *x, long long n); + +void fe25519_square(fe25519 *r, const fe25519 *x); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +#endif diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_freeze.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_invert.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_invert.c new file mode 100644 index 0000000000..972660aff0 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_invert.c @@ -0,0 +1,51 @@ +// linker define fe25519_invert +// linker use fe25519_mul +// linker use fe25519_square +// linker use fe25519_nsquare + +#include "fe25519.h" + +void fe25519_invert(fe25519 *r, const fe25519 *x) +{ + fe25519 z2; + fe25519 z9; + fe25519 z11; + fe25519 z2_5_0; + fe25519 z2_10_0; + fe25519 z2_20_0; + fe25519 z2_50_0; + fe25519 z2_100_0; + fe25519 t; + + /* 2 */ fe25519_square(&z2,x); + /* 4 */ fe25519_square(&t,&z2); + /* 8 */ fe25519_square(&t,&t); + /* 9 */ fe25519_mul(&z9,&t,x); + /* 11 */ fe25519_mul(&z11,&z9,&z2); + /* 22 */ fe25519_square(&t,&z11); + /* 2^5 - 2^0 = 31 */ fe25519_mul(&z2_5_0,&t,&z9); + + /* 2^10 - 2^5 */ fe25519_nsquare(&t,&z2_5_0,5); + /* 2^10 - 2^0 */ fe25519_mul(&z2_10_0,&t,&z2_5_0); + + /* 2^20 - 2^10 */ fe25519_nsquare(&t,&z2_10_0,10); + /* 2^20 - 2^0 */ fe25519_mul(&z2_20_0,&t,&z2_10_0); + + /* 2^40 - 2^20 */ fe25519_nsquare(&t,&z2_20_0,20); + /* 2^40 - 2^0 */ fe25519_mul(&t,&t,&z2_20_0); + + /* 2^50 - 2^10 */ fe25519_nsquare(&t,&t,10); + /* 2^50 - 2^0 */ fe25519_mul(&z2_50_0,&t,&z2_10_0); + + /* 2^100 - 2^50 */ fe25519_nsquare(&t,&z2_50_0,50); + /* 2^100 - 2^0 */ fe25519_mul(&z2_100_0,&t,&z2_50_0); + + /* 2^200 - 2^100 */ fe25519_nsquare(&t,&z2_100_0,100); + /* 2^200 - 2^0 */ fe25519_mul(&t,&t,&z2_100_0); + + /* 2^250 - 2^50 */ fe25519_nsquare(&t,&t,50); + /* 2^250 - 2^0 */ fe25519_mul(&t,&t,&z2_50_0); + + /* 2^255 - 2^5 */ fe25519_nsquare(&t,&t,5); + /* 2^255 - 21 */ fe25519_mul(r,&t,&z11); +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_mul.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_mul.S new file mode 120000 index 0000000000..a969f86af4 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_nsquare.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_nsquare.S new file mode 120000 index 0000000000..a5dcdec138 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_pack.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_square.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_square.S new file mode 120000 index 0000000000..07c854965f --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maa4/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_unpack.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/implementors b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/implementors new file mode 100644 index 0000000000..15555084a5 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/implementors @@ -0,0 +1,5 @@ +mladder.S: Kaushik Nath +fe25519_mul.S: Kaushik Nath +fe25519_square.S: Kaushik Nath +fe25519_nsquare.S: Kaushik Nath +other code: see amd64-64 diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/shared-consts.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/shared-consts.c new file mode 100644 index 0000000000..ed678b5f2d --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa4/shared-consts.c @@ -0,0 +1,5 @@ +// linker define mask63 + +#include "crypto_uint64.h" + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(mask63) = 0x7FFFFFFFFFFFFFFF; diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/api.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/api.c new file mode 120000 index 0000000000..798639a0b7 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/api.c @@ -0,0 +1 @@ +../amd64-51/api.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/architectures b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/architectures new file mode 100644 index 0000000000..159d0cfc18 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/architectures @@ -0,0 +1 @@ +amd64 avx2 diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519.h b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519.h new file mode 100644 index 0000000000..109a473e8e --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519.h @@ -0,0 +1,31 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_nsquare CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) + +#define fe25519_square(x,y) fe25519_nsquare(x,y,1) + +typedef struct { + unsigned long long v[5]; +} +fe25519; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_nsquare(fe25519 *r, const fe25519 *x, long long n); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +#endif diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_freeze.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_freeze.S new file mode 120000 index 0000000000..b92c758ece --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_freeze.S @@ -0,0 +1 @@ +../amd64-51/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_invert.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_invert.c new file mode 100644 index 0000000000..cc432da4b0 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_invert.c @@ -0,0 +1,50 @@ +// linker define fe25519_invert +// linker use fe25519_mul +// linker use fe25519_nsquare + +#include "fe25519.h" + +void fe25519_invert(fe25519 *r, const fe25519 *x) +{ + fe25519 z2; + fe25519 z9; + fe25519 z11; + fe25519 z2_5_0; + fe25519 z2_10_0; + fe25519 z2_20_0; + fe25519 z2_50_0; + fe25519 z2_100_0; + fe25519 t; + + /* 2 */ fe25519_square(&z2,x); + /* 4 */ fe25519_square(&t,&z2); + /* 8 */ fe25519_square(&t,&t); + /* 9 */ fe25519_mul(&z9,&t,x); + /* 11 */ fe25519_mul(&z11,&z9,&z2); + /* 22 */ fe25519_square(&t,&z11); + /* 2^5 - 2^0 = 31 */ fe25519_mul(&z2_5_0,&t,&z9); + + /* 2^10 - 2^5 */ fe25519_nsquare(&t,&z2_5_0,5); + /* 2^10 - 2^0 */ fe25519_mul(&z2_10_0,&t,&z2_5_0); + + /* 2^20 - 2^10 */ fe25519_nsquare(&t,&z2_10_0,10); + /* 2^20 - 2^0 */ fe25519_mul(&z2_20_0,&t,&z2_10_0); + + /* 2^40 - 2^20 */ fe25519_nsquare(&t,&z2_20_0,20); + /* 2^40 - 2^0 */ fe25519_mul(&t,&t,&z2_20_0); + + /* 2^50 - 2^10 */ fe25519_nsquare(&t,&t,10); + /* 2^50 - 2^0 */ fe25519_mul(&z2_50_0,&t,&z2_10_0); + + /* 2^100 - 2^50 */ fe25519_nsquare(&t,&z2_50_0,50); + /* 2^100 - 2^0 */ fe25519_mul(&z2_100_0,&t,&z2_50_0); + + /* 2^200 - 2^100 */ fe25519_nsquare(&t,&z2_100_0,100); + /* 2^200 - 2^0 */ fe25519_mul(&t,&t,&z2_100_0); + + /* 2^250 - 2^50 */ fe25519_nsquare(&t,&t,50); + /* 2^250 - 2^0 */ fe25519_mul(&t,&t,&z2_50_0); + + /* 2^255 - 2^5 */ fe25519_nsquare(&t,&t,5); + /* 2^255 - 21 */ fe25519_mul(r,&t,&z11); +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_mul.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_mul.S new file mode 100644 index 0000000000..c7eb6a698f --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_mul.S @@ -0,0 +1,222 @@ +// linker define fe25519_mul +// linker use mask51 + +/* Assembly for field multiplication. */ + +#define mask51 CRYPTO_SHARED_NAMESPACE(mask51) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_mul) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_mul) +_CRYPTO_SHARED_NAMESPACE(fe25519_mul): +CRYPTO_SHARED_NAMESPACE(fe25519_mul): + +movq %rsp,%r11 +andq $-32,%rsp +subq $64,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) + +movq %rdx,%rcx + +movq 0(%rsi),%rax +mulq 0(%rcx) +movq %rax,%r8 +movq %rdx,%r9 + +movq 0(%rsi),%rax +mulq 8(%rcx) +movq %rax,%r10 +movq %rdx,%r11 + +movq 8(%rsi),%rax +mulq 0(%rcx) +addq %rax,%r10 +adcq %rdx,%r11 + +movq 0(%rsi),%rax +mulq 16(%rcx) +movq %rax,%r12 +movq %rdx,%r13 + +movq 8(%rsi),%rax +mulq 8(%rcx) +addq %rax,%r12 +adcq %rdx,%r13 + +movq 16(%rsi),%rax +mulq 0(%rcx) +addq %rax,%r12 +adcq %rdx,%r13 + +movq 0(%rsi),%rax +mulq 24(%rcx) +movq %rax,%r14 +movq %rdx,%r15 + +movq 8(%rsi),%rax +mulq 16(%rcx) +addq %rax,%r14 +adcq %rdx,%r15 + +movq 16(%rsi),%rax +mulq 8(%rcx) +addq %rax,%r14 +adcq %rdx,%r15 + +movq 24(%rsi),%rax +mulq 0(%rcx) +addq %rax,%r14 +adcq %rdx,%r15 + +movq 0(%rsi),%rax +mulq 32(%rcx) +movq %rax,%rbx +movq %rdx,%rbp + +movq 8(%rsi),%rax +mulq 24(%rcx) +addq %rax,%rbx +adcq %rdx,%rbp + +movq 16(%rsi),%rax +mulq 16(%rcx) +addq %rax,%rbx +adcq %rdx,%rbp + +movq 24(%rsi),%rax +mulq 8(%rcx) +addq %rax,%rbx +adcq %rdx,%rbp + +movq 32(%rsi),%rax +mulq 0(%rcx) +addq %rax,%rbx +adcq %rdx,%rbp + +shld $13,%rbx,%rbp + +imul $19,8(%rsi),%rax +mulq 32(%rcx) +addq %rax,%r8 +adcq %rdx,%r9 + +imul $19,16(%rsi),%rax +mulq 24(%rcx) +addq %rax,%r8 +adcq %rdx,%r9 + +imul $19,24(%rsi),%rax +mulq 16(%rcx) +addq %rax,%r8 +adcq %rdx,%r9 + +imul $19,32(%rsi),%rax +mulq 8(%rcx) +addq %rax,%r8 +adcq %rdx,%r9 + +shld $13,%r8,%r9 + +imul $19,16(%rsi),%rax +mulq 32(%rcx) +addq %rax,%r10 +adcq %rdx,%r11 + +imul $19,24(%rsi),%rax +mulq 24(%rcx) +addq %rax,%r10 +adcq %rdx,%r11 + +imul $19,32(%rsi),%rax +mulq 16(%rcx) +addq %rax,%r10 +adcq %rdx,%r11 + +shld $13,%r10,%r11 + +imul $19,24(%rsi),%rax +mulq 32(%rcx) +addq %rax,%r12 +adcq %rdx,%r13 + +imul $19,32(%rsi),%rax +mulq 24(%rcx) +addq %rax,%r12 +adcq %rdx,%r13 + +shld $13,%r12,%r13 + +imul $19,32(%rsi),%rax +mulq 32(%rcx) +addq %rax,%r14 +adcq %rdx,%r15 + +shld $13,%r14,%r15 + +imul $19,%rbp,%rbp + +movq mask51(%rip),%rdx + +andq %rdx,%r8 +andq %rdx,%r10 +andq %rdx,%r12 +andq %rdx,%r14 +andq %rdx,%rbx + +addq %r9,%r10 +addq %r11,%r12 +addq %r13,%r14 +addq %r15,%rbx +addq %rbp,%r8 + +movq %r8,%rax +shrq $51,%rax +addq %r10,%rax +andq %rdx,%r8 + +movq %rax,%r9 +shrq $51,%rax +addq %r12,%rax +andq %rdx,%r9 + +movq %rax,%r11 +shrq $51,%rax +addq %r14,%rax +andq %rdx,%r11 + +movq %rax,%r13 +shrq $51,%rax +addq %rbx,%rax +andq %rdx,%r13 + +movq %rax,%r15 +shrq $51,%rax +imul $19,%rax ,%rax +addq %r8,%rax +andq %rdx,%r15 + +movq %rax,0(%rdi) +movq %r9,8(%rdi) +movq %r11,16(%rdi) +movq %r13,24(%rdi) +movq %r15,32(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_nsquare.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_nsquare.S new file mode 100644 index 0000000000..7db7ee720e --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_nsquare.S @@ -0,0 +1,196 @@ +// linker define fe25519_nsquare +// linker use mask51 + +/* Assembly for feedback field squaring. */ + +#define mask51 CRYPTO_SHARED_NAMESPACE(mask51) + +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +.globl CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +_CRYPTO_SHARED_NAMESPACE(fe25519_nsquare): +CRYPTO_SHARED_NAMESPACE(fe25519_nsquare): + +movq %rsp,%r11 +andq $-32,%rsp +subq $64,%rsp + +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) + +movq 0(%rsi),%r8 +movq 8(%rsi),%r9 +movq 16(%rsi),%r10 +movq 24(%rsi),%r11 +movq 32(%rsi),%r12 + +movq %r10,16(%rdi) +movq %r11,24(%rdi) +movq %r12,32(%rdi) + +movq %rdx,%rsi + +.L: + +subq $1,%rsi + +movq %r8,%rax +mulq %r8 +movq %rax,%r10 +movq %rdx,%r11 + +shlq $1,%r8 +movq %r8,%rax +mulq %r9 +movq %rax,%r12 +movq %rdx,%r13 + +movq %r8,%rax +mulq 16(%rdi) +movq %rax,%r14 +movq %rdx,%r15 + +movq %r9,%rax +mulq %r9 +addq %rax,%r14 +adcq %rdx,%r15 + +movq %r8,%rax +mulq 24(%rdi) +movq %rax,%rbx +movq %rdx,%rbp + +shlq $1,%r9 +movq %r9,%rax +mulq 16(%rdi) +addq %rax,%rbx +adcq %rdx,%rbp + +movq %r8,%rax +mulq 32(%rdi) +movq %rax,%r8 +movq %rdx,%rcx + +movq %r9,%rax +mulq 24(%rdi) +addq %rax,%r8 +adcq %rdx,%rcx + +movq 16(%rdi),%rax +mulq %rax +addq %rax,%r8 +adcq %rdx,%rcx + +shld $13,%r8,%rcx + +imul $19,24(%rdi),%rax +mulq 24(%rdi) +addq %rax,%r12 +adcq %rdx,%r13 + +imul $19,32(%rdi),%rax +movq %rax,56(%rsp) +mulq 32(%rdi) +addq %rax,%rbx +adcq %rdx,%rbp + +shld $13,%rbx,%rbp + +imul $19,32(%rdi),%rax +mulq %r9 +addq %rax,%r10 +adcq %rdx,%r11 + +imul $38,24(%rdi),%rax +mulq 16(%rdi) +addq %rax,%r10 +adcq %rdx,%r11 + +shld $13,%r10,%r11 + +imul $38,32(%rdi),%rax +mulq 24(%rdi) +addq %rax,%r14 +adcq %rdx,%r15 + +shld $13,%r14,%r15 + +movq 56(%rsp),%rax +shlq $1,%rax +mulq 16(%rdi) +addq %rax,%r12 +adcq %rdx,%r13 + +shld $13,%r12,%r13 + +imul $19,%rcx,%rcx + +movq mask51(%rip),%rdx + +andq %rdx,%r10 +andq %rdx,%r12 +andq %rdx,%r14 +andq %rdx,%rbx +andq %rdx,%r8 + +addq %rcx,%r10 +addq %r11,%r12 +addq %r13,%r14 +addq %r15,%rbx +addq %rbp,%r8 + +movq %r10,%rax +shrq $51,%rax +addq %r12,%rax +andq %rdx,%r10 + +movq %rax,%r9 +shrq $51,%rax +addq %r14,%rax +andq %rdx,%r9 + +movq %rax,%r14 +shrq $51,%rax +addq %rbx,%rax +andq %rdx,%r14 + +movq %r14,16(%rdi) + +movq %rax,%rbx +shrq $51,%rax +addq %r8,%rax +andq %rdx,%rbx + +movq %rbx,24(%rdi) + +movq %rax,%r8 +shrq $51,%r8 +imul $19,%r8,%r8 +addq %r10,%r8 +andq %rdx,%rax + +movq %rax,32(%rdi) + +cmpq $0,%rsi + +jne .L + +movq %r8,0(%rdi) +movq %r9,8(%rdi) + +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp + +movq %r11,%rsp + +ret diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_pack.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_pack.c new file mode 120000 index 0000000000..fe8ef76603 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_unpack.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_unpack.c new file mode 120000 index 0000000000..15a19f6e1d --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-51/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/implementors b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/implementors new file mode 100644 index 0000000000..654ad9efb4 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/implementors @@ -0,0 +1,3 @@ +Kaushik Nath +fe25519_pack.c, fe25519_unpack.c and fe25519_freeze.S have been taken from amd64-64 +fe25519_invert.c has been taken from sandy2x diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/shared-consts.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/shared-consts.c new file mode 120000 index 0000000000..d9807ac501 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maa5/shared-consts.c @@ -0,0 +1 @@ +../amd64-51/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/api.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/api.c new file mode 120000 index 0000000000..798639a0b7 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/api.c @@ -0,0 +1 @@ +../amd64-51/api.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/architectures b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/architectures new file mode 120000 index 0000000000..12e8f0756a --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519.h b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519.h new file mode 120000 index 0000000000..0751205b74 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519.h @@ -0,0 +1 @@ +../amd64-maa4/fe25519.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_freeze.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_invert.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_invert.c new file mode 120000 index 0000000000..5008724ffb --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-maa4/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_mul.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_mul.S new file mode 120000 index 0000000000..c288143412 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_nsquare.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_nsquare.S new file mode 120000 index 0000000000..107866efa4 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_pack.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_square.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_square.S new file mode 120000 index 0000000000..18fe0c7cfe --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_square.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-maax/fe25519_square.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_unpack.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/implementors b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/implementors new file mode 120000 index 0000000000..7c9c13e712 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/implementors @@ -0,0 +1 @@ +../amd64-maa4/implementors \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/shared-consts.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/shared-consts.c new file mode 120000 index 0000000000..cc0a8e21de --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-maax/shared-consts.c @@ -0,0 +1 @@ +../amd64-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/api.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/api.c new file mode 120000 index 0000000000..798639a0b7 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/api.c @@ -0,0 +1 @@ +../amd64-51/api.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/architectures b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/architectures new file mode 120000 index 0000000000..748ffeb120 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/architectures @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519.h b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519.h new file mode 100644 index 0000000000..6a360a4302 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519.h @@ -0,0 +1,32 @@ +#ifndef FE25519_H +#define FE25519_H + +#define fe25519 CRYPTO_NAMESPACE(fe25519) +#define fe25519_freeze CRYPTO_SHARED_NAMESPACE(fe25519_freeze) +#define fe25519_unpack CRYPTO_NAMESPACE(fe25519_unpack) +#define fe25519_pack CRYPTO_NAMESPACE(fe25519_pack) +#define fe25519_mul CRYPTO_SHARED_NAMESPACE(fe25519_mul) +#define fe25519_nsquare CRYPTO_SHARED_NAMESPACE(fe25519_nsquare) +#define fe25519_invert CRYPTO_NAMESPACE(fe25519_invert) + +#define fe25519_square(x,y) fe25519_nsquare(x,y,1) + +typedef struct +{ + unsigned long long v[4]; +} +fe25519; + +void fe25519_freeze(fe25519 *r); + +void fe25519_unpack(fe25519 *r, const unsigned char x[32]); + +void fe25519_pack(unsigned char r[32], const fe25519 *x); + +void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); + +void fe25519_nsquare(fe25519 *r, const fe25519 *x, long long n); + +void fe25519_invert(fe25519 *r, const fe25519 *x); + +#endif diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_freeze.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_freeze.S new file mode 120000 index 0000000000..fc7c763cec --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_freeze.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_freeze.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_invert.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_invert.c new file mode 120000 index 0000000000..2de155afe8 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_invert.c @@ -0,0 +1 @@ +../amd64-maa5/fe25519_invert.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_mul.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_mul.S new file mode 120000 index 0000000000..79e7adffa9 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_mul.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_mul.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_nsquare.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_nsquare.S new file mode 120000 index 0000000000..1aef6b0983 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_nsquare.S @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-mxaa/fe25519_nsquare.S \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_pack.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_pack.c new file mode 120000 index 0000000000..567881cb19 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_pack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_pack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_unpack.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_unpack.c new file mode 120000 index 0000000000..765815ac26 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/fe25519_unpack.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/amd64-64/fe25519_unpack.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/implementors b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/implementors new file mode 100644 index 0000000000..db456278a6 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/implementors @@ -0,0 +1,4 @@ +mladder.S: Kaushik Nath +fe25519_mul.S: Kaushik Nath +fe25519_nsquare.S: Kaushik Nath +other code: see amd64-64 diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/shared-consts.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/shared-consts.c new file mode 120000 index 0000000000..cc0a8e21de --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-mxaa/shared-consts.c @@ -0,0 +1 @@ +../amd64-maa4/shared-consts.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/Makefile b/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/Makefile new file mode 100644 index 0000000000..63301d8996 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/Makefile @@ -0,0 +1,13 @@ +CC=clang -O3 -march=native -Wall + +test: test.o asm.o table.o + $(CC) -o test test.o asm.o table.o -lgmp + +test.o: test.c + $(CC) -c test.c + +asm.o: asm.s + $(CC) -c asm.s + +table.o: table.c + $(CC) -c table.c diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/README b/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/README new file mode 100644 index 0000000000..7bf138edac --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/README @@ -0,0 +1,6 @@ +This software has _not_ been verified! + +Prerequisites: AVX2 (Intel Haswell and newer; AMD Excavator and newer). + +Optimization target: Skylake. Also works well on Broadwell, Kaby Lake, +Coffee Lake, etc. Somewhat worse on Haswell because of the slower CMOVs. diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/architectures b/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/architectures new file mode 120000 index 0000000000..70a3e688bf --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/architectures @@ -0,0 +1 @@ +../amd64-maa5/architectures \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/asm.S b/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/asm.S new file mode 100644 index 0000000000..ff1b2e9bac --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/asm.S @@ -0,0 +1,5614 @@ + +# qhasm: int64 input_0 + +# qhasm: int64 input_1 + +# qhasm: int64 input_2 + +# qhasm: int64 input_3 + +# qhasm: int64 input_4 + +# qhasm: int64 input_5 + +# qhasm: stack64 input_6 + +# qhasm: stack64 input_7 + +# qhasm: int64 caller_r11 + +# qhasm: int64 caller_r12 + +# qhasm: int64 caller_r13 + +# qhasm: int64 caller_r14 + +# qhasm: int64 caller_r15 + +# qhasm: int64 caller_rbx + +# qhasm: int64 caller_rbp + +# qhasm: int64 m + +# qhasm: int64 f + +# qhasm: int64 g + +# qhasm: int64 u + +# qhasm: int64 v + +# qhasm: int64 r + +# qhasm: int64 s + +# qhasm: int64 uvrs + +# qhasm: int64 fuv + +# qhasm: int64 grs + +# qhasm: int64 mnew + +# qhasm: int64 z + +# qhasm: int64 loop + +# qhasm: int64 rax + +# qhasm: int64 rdx + +# qhasm: int64 t0 + +# qhasm: int64 t1 + +# qhasm: int64 t2 + +# qhasm: int64 h + +# qhasm: int64 oldg + +# qhasm: int64 i + +# qhasm: int64 j + +# qhasm: int64 f0 + +# qhasm: int64 g0 + +# qhasm: int64 rtimesoldv + +# qhasm: int64 stimesolds + +# qhasm: stack64 stack_out + +# qhasm: stack256 stack_m1 + +# qhasm: stack64 stack_m + +# qhasm: stack256 stack_fxgx + +# qhasm: stack256 stack_uuss + +# qhasm: stack256 stack_vvrr + +# qhasm: stack256 stack_fygy + +# qhasm: stack64 stack_fuv + +# qhasm: stack64 stack_f + +# qhasm: reg256 carryy + +# qhasm: reg256 carryz + +# qhasm: reg256 d0 + +# qhasm: reg256 d1 + +# qhasm: reg256 d0x19 + +# qhasm: reg256 d1x19 + +# qhasm: reg256 out0 + +# qhasm: reg256 FVGS0 + +# qhasm: reg256 GSFV0 + +# qhasm: reg256 out1 + +# qhasm: reg256 out1plus + +# qhasm: stack256 stack_FVGS0 + +# qhasm: reg256 FVGS1 + +# qhasm: reg256 GSFV1 + +# qhasm: reg256 out2 + +# qhasm: reg256 out2plus + +# qhasm: stack256 stack_FVGS1 + +# qhasm: reg256 FVGS2 + +# qhasm: reg256 GSFV2 + +# qhasm: reg256 out3 + +# qhasm: reg256 out3plus + +# qhasm: stack256 stack_FVGS2 + +# qhasm: reg256 FVGS3 + +# qhasm: reg256 GSFV3 + +# qhasm: reg256 out4 + +# qhasm: reg256 out4plus + +# qhasm: stack256 stack_FVGS3 + +# qhasm: reg256 FVGS4 + +# qhasm: reg256 GSFV4 + +# qhasm: reg256 out5 + +# qhasm: reg256 out5plus + +# qhasm: stack256 stack_FVGS4 + +# qhasm: reg256 FVGS5 + +# qhasm: reg256 GSFV5 + +# qhasm: reg256 out6 + +# qhasm: reg256 out6plus + +# qhasm: stack256 stack_FVGS5 + +# qhasm: reg256 FVGS6 + +# qhasm: reg256 GSFV6 + +# qhasm: reg256 out7 + +# qhasm: reg256 out7plus + +# qhasm: stack256 stack_FVGS6 + +# qhasm: reg256 FVGS7 + +# qhasm: reg256 GSFV7 + +# qhasm: reg256 out8 + +# qhasm: reg256 out8plus + +# qhasm: stack256 stack_FVGS7 + +# qhasm: reg256 FVGS8 + +# qhasm: reg256 GSFV8 + +# qhasm: reg256 out9 + +# qhasm: reg256 out9plus + +# qhasm: stack256 stack_FVGS8 + +# qhasm: reg256 out8plus2 + +# qhasm: reg256 out10 + +# qhasm: reg256 ta + +# qhasm: reg256 tb + +# qhasm: reg256 uuss + +# qhasm: reg256 uuss0 + +# qhasm: reg256 uuss1 + +# qhasm: reg256 vvrr + +# qhasm: reg256 vvrr0 + +# qhasm: reg256 vvrr1 + +# qhasm: int64 _m2p62 + +# qhasm: stack64 stack_m2p62 + +# qhasm: int64 _2p20 + +# qhasm: stack64 stack_2p20 + +# qhasm: int64 _m2p41 + +# qhasm: stack64 stack_m2p41 + +# qhasm: int64 _m2p20 + +# qhasm: stack64 stack_m2p20 + +# qhasm: int64 _2p20a2p41 + +# qhasm: stack64 stack_2p20a2p41 + +# qhasm: reg256 _19x4 + +# qhasm: reg256 _0_19x4 + +# qhasm: reg256 _32767x4 + +# qhasm: reg256 _inv19_2p30x4 + +# qhasm: reg256 _2p30m1x4 + +# qhasm: reg256 _2p33x4 + +# qhasm: reg256 _2p48x4 + +# qhasm: reg256 _2p63x4 + +# qhasm: reg256 _2p63m2p33x4 + +# qhasm: stack256 stack_19x4 + +# qhasm: stack256 stack_0_19x4 + +# qhasm: stack256 stack_32767x4 + +# qhasm: stack256 stack_inv19_2p30x4 + +# qhasm: stack256 stack_2p30m1x4 + +# qhasm: stack256 stack_2p33x4 + +# qhasm: stack256 stack_2p48x4 + +# qhasm: stack256 stack_2p63x4 + +# qhasm: stack256 stack_2p63m2p33x4 + +# qhasm: enter inverse25519_skylake_asm +.p2align 5 +.global _CRYPTO_SHARED_NAMESPACE(asm) +.global CRYPTO_SHARED_NAMESPACE(asm) +_CRYPTO_SHARED_NAMESPACE(asm): +CRYPTO_SHARED_NAMESPACE(asm): +mov %rsp,%r11 +and $31,%r11 +add $832,%r11 +sub %r11,%rsp + +# qhasm: new stack_m1 + +# qhasm: stack_out = input_1 +# asm 1: movq stack_out=stack64#1 +# asm 2: movq stack_out=704(%rsp) +movq %rsi,704(%rsp) + +# qhasm: stack64 stack_r11 + +# qhasm: stack_r11 = caller_r11 +# asm 1: movq stack_r11=stack64#2 +# asm 2: movq stack_r11=712(%rsp) +movq %r11,712(%rsp) + +# qhasm: stack64 stack_r12 + +# qhasm: stack_r12 = caller_r12 +# asm 1: movq stack_r12=stack64#3 +# asm 2: movq stack_r12=720(%rsp) +movq %r12,720(%rsp) + +# qhasm: stack64 stack_r13 + +# qhasm: stack_r13 = caller_r13 +# asm 1: movq stack_r13=stack64#4 +# asm 2: movq stack_r13=728(%rsp) +movq %r13,728(%rsp) + +# qhasm: stack64 stack_r14 + +# qhasm: stack_r14 = caller_r14 +# asm 1: movq stack_r14=stack64#5 +# asm 2: movq stack_r14=736(%rsp) +movq %r14,736(%rsp) + +# qhasm: stack64 stack_r15 + +# qhasm: stack_r15 = caller_r15 +# asm 1: movq stack_r15=stack64#6 +# asm 2: movq stack_r15=744(%rsp) +movq %r15,744(%rsp) + +# qhasm: stack64 stack_rbx + +# qhasm: stack_rbx = caller_rbx +# asm 1: movq stack_rbx=stack64#7 +# asm 2: movq stack_rbx=752(%rsp) +movq %rbx,752(%rsp) + +# qhasm: stack64 stack_rbp + +# qhasm: stack_rbp = caller_rbp +# asm 1: movq stack_rbp=stack64#8 +# asm 2: movq stack_rbp=760(%rsp) +movq %rbp,760(%rsp) + +# qhasm: int64 a0 + +# qhasm: a0 = mem64[input_0 + 0] +# asm 1: movq 0(a0=int64#2 +# asm 2: movq 0(a0=%rsi +movq 0(%rdi),%rsi + +# qhasm: int64 a1 + +# qhasm: a1 = mem64[input_0 + 8] +# asm 1: movq 8(a1=int64#4 +# asm 2: movq 8(a1=%rcx +movq 8(%rdi),%rcx + +# qhasm: int64 a2 + +# qhasm: a2 = mem64[input_0 + 16] +# asm 1: movq 16(a2=int64#5 +# asm 2: movq 16(a2=%r8 +movq 16(%rdi),%r8 + +# qhasm: int64 a3 + +# qhasm: a3 = mem64[input_0 + 24] +# asm 1: movq 24(a3=int64#1 +# asm 2: movq 24(a3=%rdi +movq 24(%rdi),%rdi + +# qhasm: t0 = a3 +# asm 1: mov t0=int64#6 +# asm 2: mov t0=%r9 +mov %rdi,%r9 + +# qhasm: (int64) t0 >>= 63 +# asm 1: sar $63,t0=int64#6 +# asm 2: mov t0=%r9 +mov %rdi,%r9 + +# qhasm: (int64) t0 >>= 63 +# asm 1: sar $63,t0=int64#6 +# asm 2: mov $-1152921504606846976,>t0=%r9 +mov $-1152921504606846976,%r9 + +# qhasm: g = a0 & ~ t0 +# asm 1: andn g=int64#6 +# asm 2: andn g=%r9 +andn %rsi,%r9,%r9 + +# qhasm: d1 = mem256[ input_2 + 288 ] +# asm 1: vmovupd 288(d1=reg256#1 +# asm 2: vmovupd 288(d1=%ymm0 +vmovupd 288(%rdx),%ymm0 + +# qhasm: stack_FVGS0 = d1 +# asm 1: vmovapd stack_FVGS0=stack256#2 +# asm 2: vmovapd stack_FVGS0=32(%rsp) +vmovapd %ymm0,32(%rsp) + +# qhasm: t0 = a0 +# asm 1: mov t0=int64#7 +# asm 2: mov t0=%rax +mov %rsi,%rax + +# qhasm: t0 &= 1073741823 +# asm 1: and $1073741823,d1=reg256#1 +# asm 2: vmovupd 320(d1=%ymm0 +vmovupd 320(%rdx),%ymm0 + +# qhasm: stack_FVGS1 = d1 +# asm 1: vmovapd stack_FVGS1=stack256#3 +# asm 2: vmovapd stack_FVGS1=64(%rsp) +vmovapd %ymm0,64(%rsp) + +# qhasm: t0 = a0 +# asm 1: mov t0=int64#7 +# asm 2: mov t0=%rax +mov %rsi,%rax + +# qhasm: (uint64) t0 >>= 30 +# asm 1: shr $30,d1=reg256#1 +# asm 2: vmovupd 352(d1=%ymm0 +vmovupd 352(%rdx),%ymm0 + +# qhasm: stack_FVGS2 = d1 +# asm 1: vmovapd stack_FVGS2=stack256#4 +# asm 2: vmovapd stack_FVGS2=96(%rsp) +vmovapd %ymm0,96(%rsp) + +# qhasm: a0 = (a1 a0) >> 60 +# asm 1: shrd $60,d1=reg256#1 +# asm 2: vmovupd 384(d1=%ymm0 +vmovupd 384(%rdx),%ymm0 + +# qhasm: stack_FVGS3 = d1 +# asm 1: vmovapd stack_FVGS3=stack256#5 +# asm 2: vmovapd stack_FVGS3=128(%rsp) +vmovapd %ymm0,128(%rsp) + +# qhasm: t0 = a1 +# asm 1: mov t0=int64#2 +# asm 2: mov t0=%rsi +mov %rcx,%rsi + +# qhasm: (uint64) t0 >>= 26 +# asm 1: shr $26,d1=reg256#1 +# asm 2: vmovupd 416(d1=%ymm0 +vmovupd 416(%rdx),%ymm0 + +# qhasm: stack_FVGS4 = d1 +# asm 1: vmovapd stack_FVGS4=stack256#6 +# asm 2: vmovapd stack_FVGS4=160(%rsp) +vmovapd %ymm0,160(%rsp) + +# qhasm: a1 = (a2 a1) >> 56 +# asm 1: shrd $56,d1=reg256#1 +# asm 2: vmovupd 448(d1=%ymm0 +vmovupd 448(%rdx),%ymm0 + +# qhasm: stack_FVGS5 = d1 +# asm 1: vmovapd stack_FVGS5=stack256#7 +# asm 2: vmovapd stack_FVGS5=192(%rsp) +vmovapd %ymm0,192(%rsp) + +# qhasm: t0 = a2 +# asm 1: mov t0=int64#2 +# asm 2: mov t0=%rsi +mov %r8,%rsi + +# qhasm: (uint64) t0 >>= 22 +# asm 1: shr $22,d1=reg256#1 +# asm 2: vmovupd 480(d1=%ymm0 +vmovupd 480(%rdx),%ymm0 + +# qhasm: stack_FVGS6 = d1 +# asm 1: vmovapd stack_FVGS6=stack256#8 +# asm 2: vmovapd stack_FVGS6=224(%rsp) +vmovapd %ymm0,224(%rsp) + +# qhasm: a2 = (a3 a2) >> 52 +# asm 1: shrd $52,d1=reg256#1 +# asm 2: vmovupd 512(d1=%ymm0 +vmovupd 512(%rdx),%ymm0 + +# qhasm: stack_FVGS7 = d1 +# asm 1: vmovapd stack_FVGS7=stack256#9 +# asm 2: vmovapd stack_FVGS7=256(%rsp) +vmovapd %ymm0,256(%rsp) + +# qhasm: t0 = a3 +# asm 1: mov t0=int64#2 +# asm 2: mov t0=%rsi +mov %rdi,%rsi + +# qhasm: (uint64) t0 >>= 18 +# asm 1: shr $18,d1=reg256#1 +# asm 2: vmovupd 544(d1=%ymm0 +vmovupd 544(%rdx),%ymm0 + +# qhasm: stack_FVGS8 = d1 +# asm 1: vmovapd stack_FVGS8=stack256#10 +# asm 2: vmovapd stack_FVGS8=288(%rsp) +vmovapd %ymm0,288(%rsp) + +# qhasm: (uint64) a3 >>= 48 +# asm 1: shr $48,f=int64#1 +# asm 2: mov $-19,>f=%rdi +mov $-19,%rdi + +# qhasm: m = 0 +# asm 1: xor >m=int64#2,>m=int64#2 +# asm 2: xor >m=%rsi,>m=%rsi +xor %rsi,%rsi + +# qhasm: z = -1 +# asm 1: mov $-1,>z=int64#4 +# asm 2: mov $-1,>z=%rcx +mov $-1,%rcx + +# qhasm: inplace stack_m1[0] = m +# asm 1: movq _m2p62=int64#4 +# asm 2: mov $-4611686018427387904,>_m2p62=%rcx +mov $-4611686018427387904,%rcx + +# qhasm: stack_m2p62 = _m2p62 +# asm 1: movq <_m2p62=int64#4,>stack_m2p62=stack64#9 +# asm 2: movq <_m2p62=%rcx,>stack_m2p62=768(%rsp) +movq %rcx,768(%rsp) + +# qhasm: _2p20 = 1048576 +# asm 1: mov $1048576,>_2p20=int64#4 +# asm 2: mov $1048576,>_2p20=%rcx +mov $1048576,%rcx + +# qhasm: stack_2p20 = _2p20 +# asm 1: movq <_2p20=int64#4,>stack_2p20=stack64#10 +# asm 2: movq <_2p20=%rcx,>stack_2p20=776(%rsp) +movq %rcx,776(%rsp) + +# qhasm: _m2p41 = -2199023255552 +# asm 1: mov $-2199023255552,>_m2p41=int64#4 +# asm 2: mov $-2199023255552,>_m2p41=%rcx +mov $-2199023255552,%rcx + +# qhasm: stack_m2p41 = _m2p41 +# asm 1: movq <_m2p41=int64#4,>stack_m2p41=stack64#11 +# asm 2: movq <_m2p41=%rcx,>stack_m2p41=784(%rsp) +movq %rcx,784(%rsp) + +# qhasm: _m2p20 = -1048576 +# asm 1: mov $-1048576,>_m2p20=int64#4 +# asm 2: mov $-1048576,>_m2p20=%rcx +mov $-1048576,%rcx + +# qhasm: stack_m2p20 = _m2p20 +# asm 1: movq <_m2p20=int64#4,>stack_m2p20=stack64#12 +# asm 2: movq <_m2p20=%rcx,>stack_m2p20=792(%rsp) +movq %rcx,792(%rsp) + +# qhasm: _2p20a2p41 = 2199024304128 +# asm 1: mov $2199024304128,>_2p20a2p41=int64#5 +# asm 2: mov $2199024304128,>_2p20a2p41=%r8 +mov $2199024304128,%r8 + +# qhasm: stack_2p20a2p41 = _2p20a2p41 +# asm 1: movq <_2p20a2p41=int64#5,>stack_2p20a2p41=stack64#13 +# asm 2: movq <_2p20a2p41=%r8,>stack_2p20a2p41=800(%rsp) +movq %r8,800(%rsp) + +# qhasm: _19x4 = mem256[ input_2 + 0 ] +# asm 1: vmovupd 0(_19x4=reg256#1 +# asm 2: vmovupd 0(_19x4=%ymm0 +vmovupd 0(%rdx),%ymm0 + +# qhasm: stack_19x4 = _19x4 +# asm 1: vmovapd <_19x4=reg256#1,>stack_19x4=stack256#11 +# asm 2: vmovapd <_19x4=%ymm0,>stack_19x4=320(%rsp) +vmovapd %ymm0,320(%rsp) + +# qhasm: _0_19x4 = mem256[ input_2 + 32 ] +# asm 1: vmovupd 32(_0_19x4=reg256#1 +# asm 2: vmovupd 32(_0_19x4=%ymm0 +vmovupd 32(%rdx),%ymm0 + +# qhasm: stack_0_19x4 = _0_19x4 +# asm 1: vmovapd <_0_19x4=reg256#1,>stack_0_19x4=stack256#12 +# asm 2: vmovapd <_0_19x4=%ymm0,>stack_0_19x4=352(%rsp) +vmovapd %ymm0,352(%rsp) + +# qhasm: _32767x4 = mem256[ input_2 + 64 ] +# asm 1: vmovupd 64(_32767x4=reg256#1 +# asm 2: vmovupd 64(_32767x4=%ymm0 +vmovupd 64(%rdx),%ymm0 + +# qhasm: stack_32767x4 = _32767x4 +# asm 1: vmovapd <_32767x4=reg256#1,>stack_32767x4=stack256#13 +# asm 2: vmovapd <_32767x4=%ymm0,>stack_32767x4=384(%rsp) +vmovapd %ymm0,384(%rsp) + +# qhasm: _inv19_2p30x4 = mem256[ input_2 + 96 ] +# asm 1: vmovupd 96(_inv19_2p30x4=reg256#1 +# asm 2: vmovupd 96(_inv19_2p30x4=%ymm0 +vmovupd 96(%rdx),%ymm0 + +# qhasm: stack_inv19_2p30x4 = _inv19_2p30x4 +# asm 1: vmovapd <_inv19_2p30x4=reg256#1,>stack_inv19_2p30x4=stack256#14 +# asm 2: vmovapd <_inv19_2p30x4=%ymm0,>stack_inv19_2p30x4=416(%rsp) +vmovapd %ymm0,416(%rsp) + +# qhasm: _2p30m1x4 = mem256[ input_2 + 128 ] +# asm 1: vmovupd 128(_2p30m1x4=reg256#1 +# asm 2: vmovupd 128(_2p30m1x4=%ymm0 +vmovupd 128(%rdx),%ymm0 + +# qhasm: stack_2p30m1x4 = _2p30m1x4 +# asm 1: vmovapd <_2p30m1x4=reg256#1,>stack_2p30m1x4=stack256#15 +# asm 2: vmovapd <_2p30m1x4=%ymm0,>stack_2p30m1x4=448(%rsp) +vmovapd %ymm0,448(%rsp) + +# qhasm: _2p33x4 = mem256[ input_2 + 160 ] +# asm 1: vmovupd 160(_2p33x4=reg256#1 +# asm 2: vmovupd 160(_2p33x4=%ymm0 +vmovupd 160(%rdx),%ymm0 + +# qhasm: stack_2p33x4 = _2p33x4 +# asm 1: vmovapd <_2p33x4=reg256#1,>stack_2p33x4=stack256#16 +# asm 2: vmovapd <_2p33x4=%ymm0,>stack_2p33x4=480(%rsp) +vmovapd %ymm0,480(%rsp) + +# qhasm: _2p48x4 = mem256[ input_2 + 192 ] +# asm 1: vmovupd 192(_2p48x4=reg256#1 +# asm 2: vmovupd 192(_2p48x4=%ymm0 +vmovupd 192(%rdx),%ymm0 + +# qhasm: stack_2p48x4 = _2p48x4 +# asm 1: vmovapd <_2p48x4=reg256#1,>stack_2p48x4=stack256#17 +# asm 2: vmovapd <_2p48x4=%ymm0,>stack_2p48x4=512(%rsp) +vmovapd %ymm0,512(%rsp) + +# qhasm: _2p63x4 = mem256[ input_2 + 224 ] +# asm 1: vmovupd 224(_2p63x4=reg256#1 +# asm 2: vmovupd 224(_2p63x4=%ymm0 +vmovupd 224(%rdx),%ymm0 + +# qhasm: stack_2p63x4 = _2p63x4 +# asm 1: vmovapd <_2p63x4=reg256#1,>stack_2p63x4=stack256#18 +# asm 2: vmovapd <_2p63x4=%ymm0,>stack_2p63x4=544(%rsp) +vmovapd %ymm0,544(%rsp) + +# qhasm: _2p63m2p33x4 = mem256[ input_2 + 256 ] +# asm 1: vmovupd 256(_2p63m2p33x4=reg256#1 +# asm 2: vmovupd 256(_2p63m2p33x4=%ymm0 +vmovupd 256(%rdx),%ymm0 + +# qhasm: i = 10 +# asm 1: mov $10,>i=int64#5 +# asm 2: mov $10,>i=%r8 +mov $10,%r8 + +# qhasm: u = 1152921504606846976 +# asm 1: mov $1152921504606846976,>u=int64#8 +# asm 2: mov $1152921504606846976,>u=%r10 +mov $1152921504606846976,%r10 + +# qhasm: v = 0 +# asm 1: xor >v=int64#9,>v=int64#9 +# asm 2: xor >v=%r11,>v=%r11 +xor %r11,%r11 + +# qhasm: s = u +# asm 1: mov s=int64#10 +# asm 2: mov s=%r12 +mov %r10,%r12 + +# qhasm: r = 0 +# asm 1: xor >r=int64#11,>r=int64#11 +# asm 2: xor >r=%r13,>r=%r13 +xor %r13,%r13 + +# qhasm: nop +nop + +# qhasm: nop +nop + +# qhasm: nop +nop + +# qhasm: nop +nop + +# qhasm: bigloop: +._bigloop: + +# qhasm: rax = g +# asm 1: mov rax=int64#7 +# asm 2: mov rax=%rax +mov %r9,%rax + +# qhasm: (int128) rdx rax = rax * s +# asm 1: imul t2=int64#14 +# asm 2: mov t2=%rbx +mov %rax,%rbx + +# qhasm: t1 = rdx +# asm 1: mov t1=int64#15 +# asm 2: mov t1=%rbp +mov %rdx,%rbp + +# qhasm: rax = f +# asm 1: mov rax=int64#7 +# asm 2: mov rax=%rax +mov %rdi,%rax + +# qhasm: (int128) rdx rax = rax * r +# asm 1: imul > 60 +# asm 1: shrd $60,rax=int64#7 +# asm 2: mov rax=%rax +mov %rdi,%rax + +# qhasm: (int128) rdx rax = rax * u +# asm 1: imul f=int64#1 +# asm 2: mov f=%rdi +mov %rax,%rdi + +# qhasm: t0 = rdx +# asm 1: mov t0=int64#15 +# asm 2: mov t0=%rbp +mov %rdx,%rbp + +# qhasm: rax = g +# asm 1: mov rax=int64#7 +# asm 2: mov rax=%rax +mov %r9,%rax + +# qhasm: (int128) rdx rax = rax * v +# asm 1: imul > 60 +# asm 1: shrd $60,g=int64#3 +# asm 2: lea (g=%rdx +lea (%rbx,%r15),%rdx + +# qhasm: FVGS0 = stack_FVGS0 +# asm 1: vmovapd FVGS0=reg256#3 +# asm 2: vmovapd FVGS0=%ymm2 +vmovapd 32(%rsp),%ymm2 + +# qhasm: fuv = f & ~ _m2p20 +# asm 1: andn fuv=int64#6 +# asm 2: andn fuv=%r9 +andn %rdi,%rcx,%r9 + +# qhasm: loop20_init: +._loop20_init: + +# qhasm: new uuss + +# qhasm: grs = g & ~ _m2p20 +# asm 1: andn grs=int64#7 +# asm 2: andn grs=%rax +andn %rdx,%rcx,%rax + +# qhasm: uuss = u,uuss[1],0,0 +# asm 1: vpinsrq $0x0,z=int64#8 +# asm 2: movq z=%r10 +movq 8(%rsp),%r10 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: GSFV0 = FVGS0[1,0] +# asm 1: vpermq $0x4e,GSFV0=reg256#5 +# asm 2: vpermq $0x4e,GSFV0=%ymm4 +vpermq $0x4e,%ymm2,%ymm4 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: =? grs & 1 +# asm 1: test $1,uuss=reg256#4 +# asm 2: vpermq $0x50,uuss=%ymm3 +vpermq $0x50,%ymm3,%ymm3 + +# qhasm: h = grs if = +# asm 1: cmove mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: vvrr = vvrr[0,0,1,1] +# asm 1: vpermq $0x50,vvrr=reg256#2 +# asm 2: vpermq $0x50,vvrr=%ymm1 +vpermq $0x50,%ymm1,%ymm1 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,_2p30m1x4=reg256#6 +# asm 2: vmovapd _2p30m1x4=%ymm5 +vmovapd 448(%rsp),%ymm5 + +# qhasm: (int64) h >>= 1 +# asm 1: sar $1,uuss0=reg256#7 +# asm 2: vpand uuss0=%ymm6 +vpand %ymm3,%ymm5,%ymm6 + +# qhasm: signedvvrr0=reg256#8 +# asm 2: vpand vvrr0=%ymm7 +vpand %ymm1,%ymm5,%ymm7 + +# qhasm: grs = h if signed< +# asm 1: cmovl ta=reg256#9 +# asm 2: vpmuldq ta=%ymm8 +vpmuldq %ymm6,%ymm2,%ymm8 + +# qhasm: z = -1 +# asm 1: mov $-1,>z=int64#8 +# asm 2: mov $-1,>z=%r10 +mov $-1,%r10 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: 4x tb = int32 vvrr0 * int32 GSFV0 +# asm 1: vpmuldq tb=reg256#10 +# asm 2: vpmuldq tb=%ymm9 +vpmuldq %ymm7,%ymm4,%ymm9 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: =? grs & 1 +# asm 1: test $1,out0=reg256#9 +# asm 2: vpaddq out0=%ymm8 +vpaddq %ymm8,%ymm9,%ymm8 + +# qhasm: z = m if != +# asm 1: cmovne _inv19_2p30x4=reg256#10 +# asm 2: vmovapd _inv19_2p30x4=%ymm9 +vmovapd 416(%rsp),%ymm9 + +# qhasm: mnew = m + 1 +# asm 1: lea 1(mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: _19x4 = stack_19x4 +# asm 1: vmovapd _19x4=reg256#11 +# asm 2: vmovapd _19x4=%ymm10 +vmovapd 320(%rsp),%ymm10 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,d0=reg256#12 +# asm 2: vpmuldq d0=%ymm11 +vpmuldq %ymm8,%ymm9,%ymm11 + +# qhasm: m = -m +# asm 1: neg d0x19=reg256#13 +# asm 2: vpmuldq d0x19=%ymm12 +vpmuldq %ymm11,%ymm10,%ymm12 + +# qhasm: m = mnew if signed< +# asm 1: cmovl z=int64#8 +# asm 2: movq z=%r10 +movq 8(%rsp),%r10 + +# qhasm: 4x out0 -= d0x19 +# asm 1: vpsubq oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: 4x carryy = out0 + stack_2p63x4 +# asm 1: vpaddq carryy=reg256#9 +# asm 2: vpaddq carryy=%ymm8 +vpaddq 544(%rsp),%ymm8,%ymm8 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: =? grs & 1 +# asm 1: test $1,>= 30 +# asm 1: vpsrlq $30,mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: 4x out8plus2 = d0 << 15 +# asm 1: vpsllq $15,out8plus2=reg256#12 +# asm 2: vpsllq $15,out8plus2=%ymm11 +vpsllq $15,%ymm11,%ymm11 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,FVGS1=reg256#13 +# asm 2: vmovapd FVGS1=%ymm12 +vmovapd 64(%rsp),%ymm12 + +# qhasm: m = -m +# asm 1: neg GSFV1=reg256#14 +# asm 2: vpermq $0x4e,GSFV1=%ymm13 +vpermq $0x4e,%ymm12,%ymm13 + +# qhasm: signedta=reg256#15 +# asm 2: vpmuldq ta=%ymm14 +vpmuldq %ymm6,%ymm12,%ymm14 + +# qhasm: m = mnew if signed< +# asm 1: cmovl tb=reg256#16 +# asm 2: vpmuldq tb=%ymm15 +vpmuldq %ymm7,%ymm13,%ymm15 + +# qhasm: z = -1 +# asm 1: mov $-1,>z=int64#8 +# asm 2: mov $-1,>z=%r10 +mov $-1,%r10 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: 4x out1plus = ta + tb +# asm 1: vpaddq out1plus=reg256#15 +# asm 2: vpaddq out1plus=%ymm14 +vpaddq %ymm14,%ymm15,%ymm14 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: =? grs & 1 +# asm 1: test $1,> 30 +# asm 1: vpsrlq $30,uuss1=reg256#4 +# asm 2: vpsrlq $30,uuss1=%ymm3 +vpsrlq $30,%ymm3,%ymm3 + +# qhasm: z = m if != +# asm 1: cmovne > 30 +# asm 1: vpsrlq $30,vvrr1=reg256#2 +# asm 2: vpsrlq $30,vvrr1=%ymm1 +vpsrlq $30,%ymm1,%ymm1 + +# qhasm: h = grs if = +# asm 1: cmove mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: grs -= fuv +# asm 1: sub ta=reg256#3 +# asm 2: vpmuldq ta=%ymm2 +vpmuldq %ymm3,%ymm2,%ymm2 + +# qhasm: (int64) grs >>= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,tb=reg256#5 +# asm 2: vpmuldq tb=%ymm4 +vpmuldq %ymm1,%ymm4,%ymm4 + +# qhasm: m = -m +# asm 1: neg out1=reg256#3 +# asm 2: vpaddq out1=%ymm2 +vpaddq %ymm2,%ymm4,%ymm2 + +# qhasm: fuv = oldg if !signed< +# asm 1: cmovge z=int64#8 +# asm 2: mov $-1,>z=%r10 +mov $-1,%r10 + +# qhasm: 4x out1 += carryy +# asm 1: vpaddq oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: 4x d1 = int32 out1 * int32 _inv19_2p30x4 +# asm 1: vpmuldq d1=reg256#5 +# asm 2: vpmuldq d1=%ymm4 +vpmuldq %ymm2,%ymm9,%ymm4 + +# qhasm: =? grs & 1 +# asm 1: test $1,mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: 4x d1x19 = int32 d1 * int32 _19x4 +# asm 1: vpmuldq d1x19=reg256#9 +# asm 2: vpmuldq d1x19=%ymm8 +vpmuldq %ymm4,%ymm10,%ymm8 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,carryy=reg256#3 +# asm 2: vpaddq carryy=%ymm2 +vpaddq %ymm2,%ymm0,%ymm2 + +# qhasm: signed>= 30 +# asm 1: vpsrlq $30,z=int64#8 +# asm 2: movq z=%r10 +movq 8(%rsp),%r10 + +# qhasm: 4x out9 = d1 << 15 +# asm 1: vpsllq $15,out9=reg256#5 +# asm 2: vpsllq $15,out9=%ymm4 +vpsllq $15,%ymm4,%ymm4 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: FVGS2 = stack_FVGS2 +# asm 1: vmovapd FVGS2=reg256#9 +# asm 2: vmovapd FVGS2=%ymm8 +vmovapd 96(%rsp),%ymm8 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: =? grs & 1 +# asm 1: test $1,GSFV2=reg256#10 +# asm 2: vpermq $0x4e,GSFV2=%ymm9 +vpermq $0x4e,%ymm8,%ymm9 + +# qhasm: z = m if != +# asm 1: cmovne ta=reg256#11 +# asm 2: vpmuldq ta=%ymm10 +vpmuldq %ymm3,%ymm12,%ymm10 + +# qhasm: mnew = m + 1 +# asm 1: lea 1(mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: grs -= fuv +# asm 1: sub tb=reg256#13 +# asm 2: vpmuldq tb=%ymm12 +vpmuldq %ymm1,%ymm13,%ymm12 + +# qhasm: (int64) grs >>= 1 +# asm 1: sar $1,out2plus=reg256#11 +# asm 2: vpaddq out2plus=%ymm10 +vpaddq %ymm10,%ymm12,%ymm10 + +# qhasm: (int64) h >>= 1 +# asm 1: sar $1,ta=reg256#13 +# asm 2: vpmuldq ta=%ymm12 +vpmuldq %ymm6,%ymm8,%ymm12 + +# qhasm: fuv = oldg if !signed< +# asm 1: cmovge tb=reg256#14 +# asm 2: vpmuldq tb=%ymm13 +vpmuldq %ymm7,%ymm9,%ymm13 + +# qhasm: m = mnew if signed< +# asm 1: cmovl z=int64#8 +# asm 2: movq z=%r10 +movq 8(%rsp),%r10 + +# qhasm: 4x out2 = ta + tb +# asm 1: vpaddq out2=reg256#13 +# asm 2: vpaddq out2=%ymm12 +vpaddq %ymm12,%ymm13,%ymm12 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: 4x out2 += out2plus +# asm 1: vpaddq mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: 4x carryy = out2 + _2p63m2p33x4 +# asm 1: vpaddq carryy=reg256#3 +# asm 2: vpaddq carryy=%ymm2 +vpaddq %ymm12,%ymm0,%ymm2 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 30 +# asm 1: vpsrlq $30,>= 1 +# asm 1: sar $1,FVGS3=reg256#11 +# asm 2: vmovapd FVGS3=%ymm10 +vmovapd 128(%rsp),%ymm10 + +# qhasm: m = -m +# asm 1: neg GSFV3=reg256#14 +# asm 2: vpermq $0x4e,GSFV3=%ymm13 +vpermq $0x4e,%ymm10,%ymm13 + +# qhasm: grs = h if signed< +# asm 1: cmovl ta=reg256#9 +# asm 2: vpmuldq ta=%ymm8 +vpmuldq %ymm3,%ymm8,%ymm8 + +# qhasm: 4x tb = int32 vvrr1 * int32 GSFV2 +# asm 1: vpmuldq tb=reg256#10 +# asm 2: vpmuldq tb=%ymm9 +vpmuldq %ymm1,%ymm9,%ymm9 + +# qhasm: z = stack_m1[1] +# asm 1: movq z=int64#8 +# asm 2: movq z=%r10 +movq 8(%rsp),%r10 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: =? grs & 1 +# asm 1: test $1,out3plus=reg256#9 +# asm 2: vpaddq out3plus=%ymm8 +vpaddq %ymm8,%ymm9,%ymm8 + +# qhasm: z = m if != +# asm 1: cmovne ta=reg256#10 +# asm 2: vpmuldq ta=%ymm9 +vpmuldq %ymm6,%ymm10,%ymm9 + +# qhasm: mnew = m + 1 +# asm 1: lea 1(mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: 4x tb = int32 vvrr0 * int32 GSFV3 +# asm 1: vpmuldq tb=reg256#15 +# asm 2: vpmuldq tb=%ymm14 +vpmuldq %ymm7,%ymm13,%ymm14 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,out3=reg256#10 +# asm 2: vpaddq out3=%ymm9 +vpaddq %ymm9,%ymm14,%ymm9 + +# qhasm: m = -m +# asm 1: neg z=int64#8 +# asm 2: mov $-1,>z=%r10 +mov $-1,%r10 + +# qhasm: out2 &= _2p30m1x4 +# asm 1: vpand oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: 4x carryy = out3 + _2p63m2p33x4 +# asm 1: vpaddq carryy=reg256#3 +# asm 2: vpaddq carryy=%ymm2 +vpaddq %ymm9,%ymm0,%ymm2 + +# qhasm: =? grs & 1 +# asm 1: test $1,>= 30 +# asm 1: vpsrlq $30,mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: out3 &= _2p30m1x4 +# asm 1: vpand >= 1 +# asm 1: sar $1,stack_FVGS1=stack256#3 +# asm 2: vmovapd stack_FVGS1=64(%rsp) +vmovapd %ymm9,64(%rsp) + +# qhasm: (int64) h >>= 1 +# asm 1: sar $1,ta=reg256#9 +# asm 2: vpsllq $30,ta=%ymm8 +vpsllq $30,%ymm9,%ymm8 + +# qhasm: m = -m +# asm 1: neg stack_fxgx=stack256#21 +# asm 2: vmovapd stack_fxgx=640(%rsp) +vmovapd %ymm8,640(%rsp) + +# qhasm: z = stack_m1[1] +# asm 1: movq z=int64#8 +# asm 2: movq z=%r10 +movq 8(%rsp),%r10 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: FVGS4 = stack_FVGS4 +# asm 1: vmovapd FVGS4=reg256#9 +# asm 2: vmovapd FVGS4=%ymm8 +vmovapd 160(%rsp),%ymm8 + +# qhasm: GSFV4 = FVGS4[1,0] +# asm 1: vpermq $0x4e,GSFV4=reg256#10 +# asm 2: vpermq $0x4e,GSFV4=%ymm9 +vpermq $0x4e,%ymm8,%ymm9 + +# qhasm: =? grs & 1 +# asm 1: test $1,ta=reg256#11 +# asm 2: vpmuldq ta=%ymm10 +vpmuldq %ymm3,%ymm10,%ymm10 + +# qhasm: mnew = m + 1 +# asm 1: lea 1(mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: grs -= fuv +# asm 1: sub tb=reg256#14 +# asm 2: vpmuldq tb=%ymm13 +vpmuldq %ymm1,%ymm13,%ymm13 + +# qhasm: (int64) grs >>= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,out4plus=reg256#11 +# asm 2: vpaddq out4plus=%ymm10 +vpaddq %ymm10,%ymm13,%ymm10 + +# qhasm: m = -m +# asm 1: neg ta=reg256#14 +# asm 2: vpmuldq ta=%ymm13 +vpmuldq %ymm6,%ymm8,%ymm13 + +# qhasm: signedtb=reg256#15 +# asm 2: vpmuldq tb=%ymm14 +vpmuldq %ymm7,%ymm9,%ymm14 + +# qhasm: m = mnew if signed< +# asm 1: cmovl z=int64#8 +# asm 2: mov $-1,>z=%r10 +mov $-1,%r10 + +# qhasm: 4x out4 = ta + tb +# asm 1: vpaddq out4=reg256#14 +# asm 2: vpaddq out4=%ymm13 +vpaddq %ymm13,%ymm14,%ymm13 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: 4x out4 += out4plus +# asm 1: vpaddq mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: grs -= fuv +# asm 1: sub carryy=reg256#3 +# asm 2: vpaddq carryy=%ymm2 +vpaddq %ymm13,%ymm0,%ymm2 + +# qhasm: 4x carryy unsigned>>= 30 +# asm 1: vpsrlq $30,>= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,FVGS5=reg256#11 +# asm 2: vmovapd FVGS5=%ymm10 +vmovapd 192(%rsp),%ymm10 + +# qhasm: signedGSFV5=reg256#15 +# asm 2: vpermq $0x4e,GSFV5=%ymm14 +vpermq $0x4e,%ymm10,%ymm14 + +# qhasm: grs = h if signed< +# asm 1: cmovl z=int64#8 +# asm 2: mov $-1,>z=%r10 +mov $-1,%r10 + +# qhasm: 4x ta = int32 uuss1 * int32 FVGS4 +# asm 1: vpmuldq ta=reg256#9 +# asm 2: vpmuldq ta=%ymm8 +vpmuldq %ymm3,%ymm8,%ymm8 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: 4x tb = int32 vvrr1 * int32 GSFV4 +# asm 1: vpmuldq tb=reg256#10 +# asm 2: vpmuldq tb=%ymm9 +vpmuldq %ymm1,%ymm9,%ymm9 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: =? grs & 1 +# asm 1: test $1,out5plus=reg256#9 +# asm 2: vpaddq out5plus=%ymm8 +vpaddq %ymm8,%ymm9,%ymm8 + +# qhasm: z = m if != +# asm 1: cmovne mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: 4x ta = int32 uuss0 * int32 FVGS5 +# asm 1: vpmuldq ta=reg256#10 +# asm 2: vpmuldq ta=%ymm9 +vpmuldq %ymm6,%ymm10,%ymm9 + +# qhasm: 4x tb = int32 vvrr0 * int32 GSFV5 +# asm 1: vpmuldq tb=reg256#16 +# asm 2: vpmuldq tb=%ymm15 +vpmuldq %ymm7,%ymm14,%ymm15 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,out5=reg256#10 +# asm 2: vpaddq out5=%ymm9 +vpaddq %ymm9,%ymm15,%ymm9 + +# qhasm: m = -m +# asm 1: neg z=int64#8 +# asm 2: movq z=%r10 +movq 8(%rsp),%r10 + +# qhasm: 4x carryy = out5 + _2p63m2p33x4 +# asm 1: vpaddq carryy=reg256#3 +# asm 2: vpaddq carryy=%ymm2 +vpaddq %ymm9,%ymm0,%ymm2 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: 4x carryy unsigned>>= 30 +# asm 1: vpsrlq $30,mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: out4 &= _2p30m1x4 +# asm 1: vpand >= 1 +# asm 1: sar $1,stack_FVGS2=stack256#4 +# asm 2: vmovapd stack_FVGS2=96(%rsp) +vmovapd %ymm13,96(%rsp) + +# qhasm: (int64) h >>= 1 +# asm 1: sar $1,ta=reg256#9 +# asm 2: vpsllq $30,ta=%ymm8 +vpsllq $30,%ymm9,%ymm8 + +# qhasm: fuv = oldg if !signed< +# asm 1: cmovge stack_fygy=stack256#22 +# asm 2: vmovapd stack_fygy=672(%rsp) +vmovapd %ymm8,672(%rsp) + +# qhasm: z = stack_m1[1] +# asm 1: movq z=int64#8 +# asm 2: movq z=%r10 +movq 8(%rsp),%r10 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: FVGS6 = stack_FVGS6 +# asm 1: vmovapd FVGS6=reg256#9 +# asm 2: vmovapd FVGS6=%ymm8 +vmovapd 224(%rsp),%ymm8 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: =? grs & 1 +# asm 1: test $1,GSFV6=reg256#14 +# asm 2: vpermq $0x4e,GSFV6=%ymm13 +vpermq $0x4e,%ymm8,%ymm13 + +# qhasm: z = m if != +# asm 1: cmovne ta=reg256#11 +# asm 2: vpmuldq ta=%ymm10 +vpmuldq %ymm3,%ymm10,%ymm10 + +# qhasm: mnew = m + 1 +# asm 1: lea 1(mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: grs -= fuv +# asm 1: sub tb=reg256#15 +# asm 2: vpmuldq tb=%ymm14 +vpmuldq %ymm1,%ymm14,%ymm14 + +# qhasm: (int64) grs >>= 1 +# asm 1: sar $1,out6plus=reg256#11 +# asm 2: vpaddq out6plus=%ymm10 +vpaddq %ymm10,%ymm14,%ymm10 + +# qhasm: (int64) h >>= 1 +# asm 1: sar $1,ta=reg256#15 +# asm 2: vpmuldq ta=%ymm14 +vpmuldq %ymm6,%ymm8,%ymm14 + +# qhasm: fuv = oldg if !signed< +# asm 1: cmovge tb=reg256#16 +# asm 2: vpmuldq tb=%ymm15 +vpmuldq %ymm7,%ymm13,%ymm15 + +# qhasm: m = mnew if signed< +# asm 1: cmovl z=int64#8 +# asm 2: movq z=%r10 +movq 8(%rsp),%r10 + +# qhasm: 4x out6 = ta + tb +# asm 1: vpaddq out6=reg256#15 +# asm 2: vpaddq out6=%ymm14 +vpaddq %ymm14,%ymm15,%ymm14 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: =? grs & 1 +# asm 1: test $1,mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: 4x out6 += carryy +# asm 1: vpaddq >= 1 +# asm 1: sar $1,carryz=reg256#3 +# asm 2: vpaddq carryz=%ymm2 +vpaddq %ymm14,%ymm0,%ymm2 + +# qhasm: 4x carryz unsigned>>= 30 +# asm 1: vpsrlq $30,>= 1 +# asm 1: sar $1,stack_FVGS3=stack256#5 +# asm 2: vmovapd stack_FVGS3=128(%rsp) +vmovapd %ymm9,128(%rsp) + +# qhasm: FVGS7 = stack_FVGS7 +# asm 1: vmovapd FVGS7=reg256#10 +# asm 2: vmovapd FVGS7=%ymm9 +vmovapd 256(%rsp),%ymm9 + +# qhasm: fuv = oldg if !signed< +# asm 1: cmovge GSFV7=reg256#11 +# asm 2: vpermq $0x4e,GSFV7=%ymm10 +vpermq $0x4e,%ymm9,%ymm10 + +# qhasm: z = stack_m1[1] +# asm 1: movq z=int64#8 +# asm 2: movq z=%r10 +movq 8(%rsp),%r10 + +# qhasm: 4x ta = int32 uuss1 * int32 FVGS6 +# asm 1: vpmuldq ta=reg256#9 +# asm 2: vpmuldq ta=%ymm8 +vpmuldq %ymm3,%ymm8,%ymm8 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: =? grs & 1 +# asm 1: test $1,tb=reg256#14 +# asm 2: vpmuldq tb=%ymm13 +vpmuldq %ymm1,%ymm13,%ymm13 + +# qhasm: z = m if != +# asm 1: cmovne out7plus=reg256#9 +# asm 2: vpaddq out7plus=%ymm8 +vpaddq %ymm8,%ymm13,%ymm8 + +# qhasm: mnew = m + 1 +# asm 1: lea 1(mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: grs -= fuv +# asm 1: sub ta=reg256#14 +# asm 2: vpmuldq ta=%ymm13 +vpmuldq %ymm6,%ymm9,%ymm13 + +# qhasm: (int64) grs >>= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,tb=reg256#16 +# asm 2: vpmuldq tb=%ymm15 +vpmuldq %ymm7,%ymm10,%ymm15 + +# qhasm: m = -m +# asm 1: neg out7=reg256#14 +# asm 2: vpaddq out7=%ymm13 +vpaddq %ymm13,%ymm15,%ymm13 + +# qhasm: fuv = oldg if !signed< +# asm 1: cmovge z=int64#8 +# asm 2: movq z=%r10 +movq 8(%rsp),%r10 + +# qhasm: 4x out7 += carryz +# asm 1: vpaddq oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: 4x carryz = out7 + _2p63m2p33x4 +# asm 1: vpaddq carryz=reg256#3 +# asm 2: vpaddq carryz=%ymm2 +vpaddq %ymm13,%ymm0,%ymm2 + +# qhasm: =? grs & 1 +# asm 1: test $1,>= 30 +# asm 1: vpsrlq $30,mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,stack_FVGS4=stack256#6 +# asm 2: vmovapd stack_FVGS4=160(%rsp) +vmovapd %ymm14,160(%rsp) + +# qhasm: (int64) h >>= 1 +# asm 1: sar $1,FVGS8=reg256#9 +# asm 2: vmovapd FVGS8=%ymm8 +vmovapd 288(%rsp),%ymm8 + +# qhasm: m = -m +# asm 1: neg GSFV8=reg256#15 +# asm 2: vpermq $0x4e,GSFV8=%ymm14 +vpermq $0x4e,%ymm8,%ymm14 + +# qhasm: grs = h if signed< +# asm 1: cmovl ta=reg256#10 +# asm 2: vpmuldq ta=%ymm9 +vpmuldq %ymm3,%ymm9,%ymm9 + +# qhasm: z = -1 +# asm 1: mov $-1,>z=int64#8 +# asm 2: mov $-1,>z=%r10 +mov $-1,%r10 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: 4x tb = int32 vvrr1 * int32 GSFV7 +# asm 1: vpmuldq tb=reg256#11 +# asm 2: vpmuldq tb=%ymm10 +vpmuldq %ymm1,%ymm10,%ymm10 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: =? grs & 1 +# asm 1: test $1,out8plus=reg256#10 +# asm 2: vpaddq out8plus=%ymm9 +vpaddq %ymm9,%ymm10,%ymm9 + +# qhasm: h = grs if = +# asm 1: cmove ta=reg256#7 +# asm 2: vpmuldq ta=%ymm6 +vpmuldq %ymm6,%ymm8,%ymm6 + +# qhasm: mnew = m + 1 +# asm 1: lea 1(mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: grs -= fuv +# asm 1: sub tb=reg256#8 +# asm 2: vpmuldq tb=%ymm7 +vpmuldq %ymm7,%ymm14,%ymm7 + +# qhasm: (int64) grs >>= 1 +# asm 1: sar $1,out8=reg256#7 +# asm 2: vpaddq out8=%ymm6 +vpaddq %ymm6,%ymm7,%ymm6 + +# qhasm: (int64) h >>= 1 +# asm 1: sar $1,z=int64#8 +# asm 2: movq z=%r10 +movq 8(%rsp),%r10 + +# qhasm: 4x out8 += out8plus2 +# asm 1: vpaddq oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: 4x carryz = out8 + _2p63m2p33x4 +# asm 1: vpaddq carryz=reg256#3 +# asm 2: vpaddq carryz=%ymm2 +vpaddq %ymm6,%ymm0,%ymm2 + +# qhasm: =? grs & 1 +# asm 1: test $1,>= 30 +# asm 1: vpsrlq $30,mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: out7 &= _2p30m1x4 +# asm 1: vpand >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,stack_FVGS5=stack256#7 +# asm 2: vmovapd stack_FVGS5=192(%rsp) +vmovapd %ymm13,192(%rsp) + +# qhasm: m = -m +# asm 1: neg ta=reg256#4 +# asm 2: vpmuldq ta=%ymm3 +vpmuldq %ymm3,%ymm8,%ymm3 + +# qhasm: signedtb=reg256#2 +# asm 2: vpmuldq tb=%ymm1 +vpmuldq %ymm1,%ymm14,%ymm1 + +# qhasm: grs = h if signed< +# asm 1: cmovl out9plus=reg256#2 +# asm 2: vpaddq out9plus=%ymm1 +vpaddq %ymm3,%ymm1,%ymm1 + +# qhasm: z = stack_m1[1] +# asm 1: movq z=int64#8 +# asm 2: movq z=%r10 +movq 8(%rsp),%r10 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#9 +# asm 2: mov oldg=%r11 +mov %rax,%r11 + +# qhasm: 4x out9 += out9plus +# asm 1: vpaddq h=int64#10 +# asm 2: lea (h=%r12 +lea (%rax,%r9),%r12 + +# qhasm: =? grs & 1 +# asm 1: test $1,out10=reg256#2 +# asm 2: vpaddq out10=%ymm1 +vpaddq %ymm4,%ymm0,%ymm1 + +# qhasm: mnew = m + 1 +# asm 1: lea 1(mnew=int64#11 +# asm 2: lea 1(mnew=%r13 +lea 1(%rsi),%r13 + +# qhasm: grs -= fuv +# asm 1: sub >= 30 +# asm 1: vpsrlq $30,>= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,stack_FVGS6=stack256#8 +# asm 2: vmovapd stack_FVGS6=224(%rsp) +vmovapd %ymm6,224(%rsp) + +# qhasm: fuv = oldg if !signed< +# asm 1: cmovge _32767x4=reg256#3 +# asm 2: vmovapd _32767x4=%ymm2 +vmovapd 384(%rsp),%ymm2 + +# qhasm: grs = h if signed< +# asm 1: cmovl _2p20a2p41=int64#8 +# asm 2: movq _2p20a2p41=%r10 +movq 800(%rsp),%r10 + +# qhasm: s = grs + _2p20a2p41 +# asm 1: lea (s=int64#9 +# asm 2: lea (s=%r11 +lea (%rax,%r10),%r11 + +# qhasm: _2p48x4 = stack_2p48x4 +# asm 1: vmovapd _2p48x4=reg256#4 +# asm 2: vmovapd _2p48x4=%ymm3 +vmovapd 512(%rsp),%ymm3 + +# qhasm: 4x carryy = out10 + _2p63m2p33x4 +# asm 1: vpaddq carryy=reg256#7 +# asm 2: vpaddq carryy=%ymm6 +vpaddq %ymm1,%ymm0,%ymm6 + +# qhasm: (int64) s >>= 42 +# asm 1: sar $42,t2=int64#10 +# asm 2: mov t2=%r12 +mov %rdx,%r12 + +# qhasm: 4x carryy unsigned>>= 15 +# asm 1: vpsrlq $15,v=int64#8 +# asm 2: lea (v=%r10 +lea (%r9,%r10),%r10 + +# qhasm: 4x carryy -= _2p48x4 +# asm 1: vpsubq <_2p48x4=reg256#4,>= 42 +# asm 1: sar $42,_2p20=int64#11 +# asm 2: movq _2p20=%r13 +movq 776(%rsp),%r13 + +# qhasm: r = grs + _2p20 +# asm 1: lea (r=int64#7 +# asm 2: lea (r=%rax +lea (%rax,%r13),%rax + +# qhasm: out9 &= _2p30m1x4 +# asm 1: vpand >= 43 +# asm 1: sar $43,rax=int64#12 +# asm 2: mov rax=%r14 +mov %rdi,%r14 + +# qhasm: rax *= r +# asm 1: imul carryy=reg256#3 +# asm 2: vpmuldq carryy=%ymm2 +vpmuldq 352(%rsp),%ymm6,%ymm2 + +# qhasm: u = fuv + _2p20 +# asm 1: lea (u=int64#6 +# asm 2: lea (u=%r9 +lea (%r9,%r13),%r9 + +# qhasm: 4x out2 += carryy +# asm 1: vpaddq >= 43 +# asm 1: sar $43,stack_FVGS7=stack256#9 +# asm 2: vmovapd stack_FVGS7=256(%rsp) +vmovapd %ymm4,256(%rsp) + +# qhasm: f += t2 +# asm 1: add stack_FVGS8=stack256#10 +# asm 2: vmovapd stack_FVGS8=288(%rsp) +vmovapd %ymm1,288(%rsp) + +# qhasm: (int64) f >>= 20 +# asm 1: sar $20,stack_FVGS0=stack256#2 +# asm 2: vmovapd stack_FVGS0=32(%rsp) +vmovapd %ymm12,32(%rsp) + +# qhasm: (int64) g >>= 20 +# asm 1: sar $20,loop=int64#6 +# asm 2: mov $2,>loop=%r9 +mov $2,%r9 + +# qhasm: loop20: +._loop20: + +# qhasm: fuv = f & ~ _m2p20 +# asm 1: andn fuv=int64#7 +# asm 2: andn fuv=%rax +andn %rdi,%rcx,%rax + +# qhasm: grs = g & ~ _m2p20 +# asm 1: andn grs=int64#8 +# asm 2: andn grs=%r10 +andn %rdx,%rcx,%r10 + +# qhasm: fuv += stack_m2p41 +# asm 1: addq j=int64#9 +# asm 2: mov $2,>j=%r11 +mov $2,%r11 + +# qhasm: loop2: +._loop2: + +# qhasm: z = -1 +# asm 1: mov $-1,>z=int64#10 +# asm 2: mov $-1,>z=%r12 +mov $-1,%r12 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#11 +# asm 2: mov oldg=%r13 +mov %r10,%r13 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#12 +# asm 2: lea (h=%r14 +lea (%r10,%rax),%r14 + +# qhasm: =? grs & 1 +# asm 1: test $1,mnew=int64#13 +# asm 2: lea 1(mnew=%r15 +lea 1(%rsi),%r15 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,z=int64#10 +# asm 2: movq z=%r12 +movq 8(%rsp),%r12 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#11 +# asm 2: mov oldg=%r13 +mov %r10,%r13 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#12 +# asm 2: lea (h=%r14 +lea (%r10,%rax),%r14 + +# qhasm: =? grs & 1 +# asm 1: test $1,mnew=int64#13 +# asm 2: lea 1(mnew=%r15 +lea 1(%rsi),%r15 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,z=int64#10 +# asm 2: mov $-1,>z=%r12 +mov $-1,%r12 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#11 +# asm 2: mov oldg=%r13 +mov %r10,%r13 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#12 +# asm 2: lea (h=%r14 +lea (%r10,%rax),%r14 + +# qhasm: =? grs & 1 +# asm 1: test $1,mnew=int64#13 +# asm 2: lea 1(mnew=%r15 +lea 1(%rsi),%r15 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,z=int64#10 +# asm 2: movq z=%r12 +movq 8(%rsp),%r12 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#11 +# asm 2: mov oldg=%r13 +mov %r10,%r13 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#12 +# asm 2: lea (h=%r14 +lea (%r10,%rax),%r14 + +# qhasm: =? grs & 1 +# asm 1: test $1,mnew=int64#13 +# asm 2: lea 1(mnew=%r15 +lea 1(%rsi),%r15 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,z=int64#10 +# asm 2: movq z=%r12 +movq 8(%rsp),%r12 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#11 +# asm 2: mov oldg=%r13 +mov %r10,%r13 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#12 +# asm 2: lea (h=%r14 +lea (%r10,%rax),%r14 + +# qhasm: =? grs & 1 +# asm 1: test $1,mnew=int64#13 +# asm 2: lea 1(mnew=%r15 +lea 1(%rsi),%r15 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,z=int64#10 +# asm 2: movq z=%r12 +movq 8(%rsp),%r12 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#11 +# asm 2: mov oldg=%r13 +mov %r10,%r13 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#12 +# asm 2: lea (h=%r14 +lea (%r10,%rax),%r14 + +# qhasm: =? grs & 1 +# asm 1: test $1,mnew=int64#13 +# asm 2: lea 1(mnew=%r15 +lea 1(%rsi),%r15 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,z=int64#10 +# asm 2: movq z=%r12 +movq 8(%rsp),%r12 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#11 +# asm 2: mov oldg=%r13 +mov %r10,%r13 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#12 +# asm 2: lea (h=%r14 +lea (%r10,%rax),%r14 + +# qhasm: =? grs & 1 +# asm 1: test $1,mnew=int64#13 +# asm 2: lea 1(mnew=%r15 +lea 1(%rsi),%r15 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,z=int64#10 +# asm 2: movq z=%r12 +movq 8(%rsp),%r12 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#11 +# asm 2: mov oldg=%r13 +mov %r10,%r13 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#12 +# asm 2: lea (h=%r14 +lea (%r10,%rax),%r14 + +# qhasm: =? grs & 1 +# asm 1: test $1,mnew=int64#13 +# asm 2: lea 1(mnew=%r15 +lea 1(%rsi),%r15 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,z=int64#10 +# asm 2: movq z=%r12 +movq 8(%rsp),%r12 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#11 +# asm 2: mov oldg=%r13 +mov %r10,%r13 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#12 +# asm 2: lea (h=%r14 +lea (%r10,%rax),%r14 + +# qhasm: =? grs & 1 +# asm 1: test $1,mnew=int64#13 +# asm 2: lea 1(mnew=%r15 +lea 1(%rsi),%r15 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,z=int64#10 +# asm 2: mov $-1,>z=%r12 +mov $-1,%r12 + +# qhasm: oldg = grs +# asm 1: mov oldg=int64#11 +# asm 2: mov oldg=%r13 +mov %r10,%r13 + +# qhasm: h = grs + fuv +# asm 1: lea (h=int64#12 +# asm 2: lea (h=%r14 +lea (%r10,%rax),%r14 + +# qhasm: =? grs & 1 +# asm 1: test $1,mnew=int64#13 +# asm 2: lea 1(mnew=%r15 +lea 1(%rsi),%r15 + +# qhasm: grs -= fuv +# asm 1: sub >= 1 +# asm 1: sar $1,>= 1 +# asm 1: sar $1,_2p20a2p41=int64#9 +# asm 2: movq _2p20a2p41=%r11 +movq 800(%rsp),%r11 + +# qhasm: s = grs + _2p20a2p41 +# asm 1: lea (s=int64#10 +# asm 2: lea (s=%r12 +lea (%r10,%r11),%r12 + +# qhasm: (int64) s >>= 42 +# asm 1: sar $42,t2=int64#11 +# asm 2: mov t2=%r13 +mov %rdx,%r13 + +# qhasm: g *= s +# asm 1: imul v=int64#9 +# asm 2: lea (v=%r11 +lea (%rax,%r11),%r11 + +# qhasm: (int64) v >>= 42 +# asm 1: sar $42,_2p20=int64#12 +# asm 2: movq _2p20=%r14 +movq 776(%rsp),%r14 + +# qhasm: r = grs + _2p20 +# asm 1: lea (r=int64#8 +# asm 2: lea (r=%r10 +lea (%r10,%r14),%r10 + +# qhasm: r <<= 22 +# asm 1: shl $22,>= 43 +# asm 1: sar $43,rax=int64#13 +# asm 2: mov rax=%r15 +mov %rdi,%r15 + +# qhasm: rax *= r +# asm 1: imul u=int64#7 +# asm 2: lea (u=%rax +lea (%rax,%r14),%rax + +# qhasm: u <<= 22 +# asm 1: shl $22,>= 43 +# asm 1: sar $43,>= 20 +# asm 1: sar $20,>= 20 +# asm 1: sar $20,t0=int64#11 +# asm 2: movq t0=%r13 +movq 576(%rsp),%r13 + +# qhasm: t0 *= u +# asm 1: imul t1=int64#12 +# asm 2: movq t1=%r14 +movq 624(%rsp),%r14 + +# qhasm: t1 *= v +# asm 1: imul rtimesoldv=int64#13 +# asm 2: movq rtimesoldv=%r15 +movq 608(%rsp),%r15 + +# qhasm: u *= rtimesoldv +# asm 1: imul stimesolds=int64#14 +# asm 2: movq stimesolds=%rbx +movq 592(%rsp),%rbx + +# qhasm: v *= stimesolds +# asm 1: imul u=int64#7 +# asm 2: lea (u=%rax +lea (%r13,%r14),%rax + +# qhasm: r += s +# asm 1: add s=int64#10 +# asm 2: lea (s=%r12 +lea (%r15,%rbx),%r12 + +# qhasm: first_loop: +._first_loop: + +# qhasm: inplace stack_vvrr[0] = v +# asm 1: movq _2p20a2p41=int64#1 +# asm 2: movq _2p20a2p41=%rdi +movq 800(%rsp),%rdi + +# qhasm: s = grs + _2p20a2p41 +# asm 1: lea (s=int64#3 +# asm 2: lea (s=%rdx +lea (%r10,%rdi),%rdx + +# qhasm: (int64) s >>= 42 +# asm 1: sar $42,v=int64#9 +# asm 2: lea (v=%r11 +lea (%rax,%rdi),%r11 + +# qhasm: (int64) v >>= 42 +# asm 1: sar $42,t1=int64#1 +# asm 2: movq t1=%rdi +movq 624(%rsp),%rdi + +# qhasm: t1 *= v +# asm 1: imul stimesolds=int64#6 +# asm 2: movq stimesolds=%r9 +movq 592(%rsp),%r9 + +# qhasm: v *= stimesolds +# asm 1: imul _2p20=int64#10 +# asm 2: movq _2p20=%r12 +movq 776(%rsp),%r12 + +# qhasm: r = grs + _2p20 +# asm 1: lea (r=int64#11 +# asm 2: lea (r=%r13 +lea (%r10,%r12),%r13 + +# qhasm: r <<= 22 +# asm 1: shl $22,>= 43 +# asm 1: sar $43,u=int64#7 +# asm 2: lea (u=%rax +lea (%rax,%r12),%rax + +# qhasm: u <<= 22 +# asm 1: shl $22,>= 43 +# asm 1: sar $43,t0=int64#8 +# asm 2: movq t0=%r10 +movq 576(%rsp),%r10 + +# qhasm: t0 *= u +# asm 1: imul rtimesoldv=int64#10 +# asm 2: movq rtimesoldv=%r12 +movq 608(%rsp),%r12 + +# qhasm: u *= rtimesoldv +# asm 1: imul u=int64#8 +# asm 2: lea (u=%r10 +lea (%r10,%rdi),%r10 + +# qhasm: r += s +# asm 1: add s=int64#10 +# asm 2: lea (s=%r12 +lea (%r12,%r9),%r12 + +# qhasm: f = stack_fxgx[0] +# asm 1: movq f=int64#1 +# asm 2: movq f=%rdi +movq 640(%rsp),%rdi + +# qhasm: g = stack_fxgx[2] +# asm 1: movq g=int64#6 +# asm 2: movq g=%r9 +movq 656(%rsp),%r9 + +# qhasm: f0 = stack_fygy[0] +# asm 1: movq f0=int64#12 +# asm 2: movq f0=%r14 +movq 672(%rsp),%r14 + +# qhasm: g0 = stack_fygy[2] +# asm 1: movq g0=int64#13 +# asm 2: movq g0=%r15 +movq 688(%rsp),%r15 + +# qhasm: =? i -= 1 +# asm 1: dec t0=int64#1 +# asm 2: lea (t0=%rdi +lea (%rdi,%r9),%rdi + +# qhasm: (int64) t0 >>= 60 +# asm 1: sar $60,rax=int64#7 +# asm 2: movq rax=%rax +movq 296(%rsp),%rax + +# qhasm: (int128) rdx rax = rax * u +# asm 1: imul a4=int64#1 +# asm 2: mov a4=%rdi +mov %rdx,%rdi + +# qhasm: a3 = rax +# asm 1: mov a3=int64#2 +# asm 2: mov a3=%rsi +mov %rax,%rsi + +# qhasm: rax = stack_FVGS8[3] +# asm 1: movq rax=int64#7 +# asm 2: movq rax=%rax +movq 312(%rsp),%rax + +# qhasm: (int128) rdx rax = rax * v +# asm 1: imul rax=int64#7 +# asm 2: movq rax=%rax +movq 232(%rsp),%rax + +# qhasm: t0 = stack_FVGS7[1] +# asm 1: movq t0=int64#3 +# asm 2: movq t0=%rdx +movq 264(%rsp),%rdx + +# qhasm: t0 <<= 30 +# asm 1: shl $30,t2=int64#4 +# asm 2: mov t2=%rcx +mov %rdx,%rcx + +# qhasm: t1 = rax +# asm 1: mov t1=int64#5 +# asm 2: mov t1=%r8 +mov %rax,%r8 + +# qhasm: rax = stack_FVGS6[3] +# asm 1: movq rax=int64#7 +# asm 2: movq rax=%rax +movq 248(%rsp),%rax + +# qhasm: t0 = stack_FVGS7[3] +# asm 1: movq t0=int64#3 +# asm 2: movq t0=%rdx +movq 280(%rsp),%rdx + +# qhasm: t0 <<= 30 +# asm 1: shl $30,a2=int64#6 +# asm 2: mov a2=%r9 +mov %r8,%r9 + +# qhasm: t1 = (t2 t1) >> 12 +# asm 1: shrd $12,>= 12 +# asm 1: sar $12,rax=int64#7 +# asm 2: movq rax=%rax +movq 168(%rsp),%rax + +# qhasm: t0 = stack_FVGS5[1] +# asm 1: movq t0=int64#3 +# asm 2: movq t0=%rdx +movq 200(%rsp),%rdx + +# qhasm: t0 <<= 30 +# asm 1: shl $30,t2=int64#4 +# asm 2: mov t2=%rcx +mov %rdx,%rcx + +# qhasm: t1 = rax +# asm 1: mov t1=int64#5 +# asm 2: mov t1=%r8 +mov %rax,%r8 + +# qhasm: rax = stack_FVGS4[3] +# asm 1: movq rax=int64#7 +# asm 2: movq rax=%rax +movq 184(%rsp),%rax + +# qhasm: t0 = stack_FVGS5[3] +# asm 1: movq t0=int64#3 +# asm 2: movq t0=%rdx +movq 216(%rsp),%rdx + +# qhasm: t0 <<= 30 +# asm 1: shl $30,a1=int64#10 +# asm 2: mov a1=%r12 +mov %r8,%r12 + +# qhasm: t1 = (t2 t1) >> 8 +# asm 1: shrd $8,h=int64#3 +# asm 2: mov h=%rdx +mov %rcx,%rdx + +# qhasm: (int64) t2 >>= 8 +# asm 1: sar $8,>= 63 +# asm 1: sar $63,rax=int64#7 +# asm 2: movq rax=%rax +movq 104(%rsp),%rax + +# qhasm: t0 = stack_FVGS3[1] +# asm 1: movq t0=int64#3 +# asm 2: movq t0=%rdx +movq 136(%rsp),%rdx + +# qhasm: t0 <<= 30 +# asm 1: shl $30,t2=int64#4 +# asm 2: mov t2=%rcx +mov %rdx,%rcx + +# qhasm: t1 = rax +# asm 1: mov t1=int64#5 +# asm 2: mov t1=%r8 +mov %rax,%r8 + +# qhasm: rax = stack_FVGS2[3] +# asm 1: movq rax=int64#7 +# asm 2: movq rax=%rax +movq 120(%rsp),%rax + +# qhasm: t0 = stack_FVGS3[3] +# asm 1: movq t0=int64#3 +# asm 2: movq t0=%rdx +movq 152(%rsp),%rdx + +# qhasm: t0 <<= 30 +# asm 1: shl $30,a0=int64#11 +# asm 2: mov a0=%r13 +mov %r8,%r13 + +# qhasm: t1 = (t2 t1) >> 4 +# asm 1: shrd $4,h=int64#3 +# asm 2: mov h=%rdx +mov %rcx,%rdx + +# qhasm: (int64) t2 >>= 4 +# asm 1: sar $4,>= 63 +# asm 1: sar $63,rax=int64#7 +# asm 2: movq rax=%rax +movq 40(%rsp),%rax + +# qhasm: t0 = stack_FVGS1[1] +# asm 1: movq t0=int64#3 +# asm 2: movq t0=%rdx +movq 72(%rsp),%rdx + +# qhasm: t0 <<= 30 +# asm 1: shl $30,t2=int64#4 +# asm 2: mov t2=%rcx +mov %rdx,%rcx + +# qhasm: t1 = rax +# asm 1: mov t1=int64#5 +# asm 2: mov t1=%r8 +mov %rax,%r8 + +# qhasm: rax = stack_FVGS0[3] +# asm 1: movq rax=int64#7 +# asm 2: movq rax=%rax +movq 56(%rsp),%rax + +# qhasm: t0 = stack_FVGS1[3] +# asm 1: movq t0=int64#3 +# asm 2: movq t0=%rdx +movq 88(%rsp),%rdx + +# qhasm: t0 <<= 30 +# asm 1: shl $30,h=int64#3 +# asm 2: mov h=%rdx +mov %rcx,%rdx + +# qhasm: (int64) h >>= 63 +# asm 1: sar $63,h=int64#4 +# asm 2: mov h=%rcx +mov %rdi,%rcx + +# qhasm: rax = 19 +# asm 1: mov $19,>rax=int64#7 +# asm 2: mov $19,>rax=%rax +mov $19,%rax + +# qhasm: (int128) rdx rax = rax * a4 +# asm 1: imul >= 63 +# asm 1: sar $63,a4=int64#1,>a4=int64#1 +# asm 2: xor >a4=%rdi,>a4=%rdi +xor %rdi,%rdi + +# qhasm: carry? a0 += rax +# asm 1: add h=int64#4 +# asm 2: mov h=%rcx +mov %rdi,%rcx + +# qhasm: rax = 19 +# asm 1: mov $19,>rax=int64#7 +# asm 2: mov $19,>rax=%rax +mov $19,%rax + +# qhasm: (int128) rdx rax = rax * a4 +# asm 1: imul >= 63 +# asm 1: sar $63,z=int64#1,>z=int64#1 +# asm 2: xor >z=%rdi,>z=%rdi +xor %rdi,%rdi + +# qhasm: a4 = -19 +# asm 1: mov $-19,>a4=int64#3 +# asm 2: mov $-19,>a4=%rdx +mov $-19,%rdx + +# qhasm: a5 = -1 +# asm 1: mov $-1,>a5=int64#4 +# asm 2: mov $-1,>a5=%rcx +mov $-1,%rcx + +# qhasm: a6 = 9223372036854775807 +# asm 1: mov $9223372036854775807,>a6=int64#5 +# asm 2: mov $9223372036854775807,>a6=%r8 +mov $9223372036854775807,%r8 + +# qhasm: signedt0=int64#1 +# asm 2: mov t0=%rdi +mov %rsi,%rdi + +# qhasm: (int64) t0 >>= 63 +# asm 1: sar $63,t2=int64#1 +# asm 2: movq t2=%rdi +movq 704(%rsp),%rdi + +# qhasm: mem64[t2 + 0] = a0 +# asm 1: movq caller_r11=int64#9 +# asm 2: movq caller_r11=%r11 +movq 712(%rsp),%r11 + +# qhasm: caller_r12 = stack_r12 +# asm 1: movq caller_r12=int64#10 +# asm 2: movq caller_r12=%r12 +movq 720(%rsp),%r12 + +# qhasm: caller_r13 = stack_r13 +# asm 1: movq caller_r13=int64#11 +# asm 2: movq caller_r13=%r13 +movq 728(%rsp),%r13 + +# qhasm: caller_r14 = stack_r14 +# asm 1: movq caller_r14=int64#12 +# asm 2: movq caller_r14=%r14 +movq 736(%rsp),%r14 + +# qhasm: caller_r15 = stack_r15 +# asm 1: movq caller_r15=int64#13 +# asm 2: movq caller_r15=%r15 +movq 744(%rsp),%r15 + +# qhasm: caller_rbx = stack_rbx +# asm 1: movq caller_rbx=int64#14 +# asm 2: movq caller_rbx=%rbx +movq 752(%rsp),%rbx + +# qhasm: caller_rbp = stack_rbp +# asm 1: movq caller_rbp=int64#15 +# asm 2: movq caller_rbp=%rbp +movq 760(%rsp),%rbp + +# qhasm: return +add %r11,%rsp +ret diff --git a/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/table.c b/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/table.c new file mode 100644 index 0000000000..2a06bc513b --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/amd64-safegcd/table.c @@ -0,0 +1,35 @@ +#include +#include +#include "crypto_pow.h" + +static const __attribute__((aligned(32))) +int64_t table[72] = { + 19LL, 19LL, 19LL, 19LL, + 0LL, 19LL, 0LL, 19LL, + -1LL, 32767LL, -1LL, 32767LL, + 678152731LL, 678152731LL, 678152731LL, 678152731LL, + 0x3FFFFFFFLL, 0x3FFFFFFFLL, 0x3FFFFFFFLL, 0x3FFFFFFFLL, + 0x200000000LL, 0x200000000LL, 0x200000000LL, 0x200000000LL, + 0x1000000000000LL, 0x1000000000000LL, 0x1000000000000LL, 0x1000000000000LL, + 0x8000000000000000LL, 0x8000000000000000LL, 0x8000000000000000LL, 0x8000000000000000LL, + 0X7FFFFFFE00000000LL, 0X7FFFFFFE00000000LL, 0X7FFFFFFE00000000LL, 0X7FFFFFFE00000000LL, + -19LL,0,0,0x3ffffff8LL, + 0LL,0LL,0LL,0x3fffffffLL, + 0LL,0LL,0LL,0x3fffffffLL, + 0LL,0LL,0LL,0x3fffffffLL, + 0LL,0LL,0LL,0x3fffffffLL, + 0LL,0LL,0LL,0x3fffffffLL, + 0LL,0LL,0LL,0x250d7fffLL, + 0LL,0LL,0LL,0x035e50d7LL, + 32768LL,0LL,0LL,0x000035e5LL +} ; + +extern void CRYPTO_SHARED_NAMESPACE(asm)(const unsigned char *,unsigned char *,const int64_t *); + +void crypto_pow(unsigned char *out,const unsigned char *in) +{ + unsigned char x[32]; + memcpy(x,in,32); + x[31] &= 127; + CRYPTO_SHARED_NAMESPACE(asm)(x,out,table); +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/donna_c64/implementors b/lib-25519/lib25519/crypto_pow/inv25519/donna_c64/implementors new file mode 100644 index 0000000000..0ce432801e --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/donna_c64/implementors @@ -0,0 +1 @@ +Adam Langley (Google) diff --git a/lib-25519/lib25519/crypto_pow/inv25519/donna_c64/pow.c b/lib-25519/lib25519/crypto_pow/inv25519/donna_c64/pow.c new file mode 100644 index 0000000000..ccae786754 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/donna_c64/pow.c @@ -0,0 +1,245 @@ +/* Copyright 2008, Google Inc. + * All rights reserved. + * + * Code released into the public domain. + * + * curve25519-donna: Curve25519 elliptic curve, public key function + * (excerpt for inversion) + * + * http://code.google.com/p/curve25519-donna/ + * + * Adam Langley + * Parts optimised by floodyberry + * Derived from public domain C code by Daniel J. Bernstein + * + * More information about curve25519 can be found here + * http://cr.yp.to/ecdh.html + * + * djb's sample implementation of curve25519 is written in a special assembly + * language called qhasm and uses the floating point registers. + * + * This is, almost, a clean room reimplementation from the curve25519 paper. It + * uses many of the tricks described therein. Only the crecip function is taken + * from the sample implementation. + */ + +#include +#include +#include "crypto_pow.h" + +typedef uint8_t u8; +typedef uint64_t limb; +typedef limb felem[5]; +// This is a special gcc mode for 128-bit integers. It's implemented on 64-bit +// platforms only as far as I know. +typedef unsigned uint128_t __attribute__((mode(TI))); + +#undef force_inline +#define force_inline __attribute__((always_inline)) inline + +/* Multiply two numbers: output = in2 * in + * + * output must be distinct to both inputs. The inputs are reduced coefficient + * form, the output is not. + * + * Assumes that in[i] < 2**55 and likewise for in2. + * On return, output[i] < 2**52 + */ +static void force_inline +fmul(felem output, const felem in2, const felem in) { + uint128_t t[5]; + limb r0,r1,r2,r3,r4,s0,s1,s2,s3,s4,c; + + r0 = in[0]; + r1 = in[1]; + r2 = in[2]; + r3 = in[3]; + r4 = in[4]; + + s0 = in2[0]; + s1 = in2[1]; + s2 = in2[2]; + s3 = in2[3]; + s4 = in2[4]; + + t[0] = ((uint128_t) r0) * s0; + t[1] = ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0; + t[2] = ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1; + t[3] = ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1; + t[4] = ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2; + + r4 *= 19; + r1 *= 19; + r2 *= 19; + r3 *= 19; + + t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2; + t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3; + t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4; + t[3] += ((uint128_t) r4) * s4; + + r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51); + t[1] += c; r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51); + t[2] += c; r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51); + t[3] += c; r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51); + t[4] += c; r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51); + r0 += c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff; + r1 += c; c = r1 >> 51; r1 = r1 & 0x7ffffffffffff; + r2 += c; + + output[0] = r0; + output[1] = r1; + output[2] = r2; + output[3] = r3; + output[4] = r4; +} + +static void force_inline +fsquare_times(felem output, const felem in, limb count) { + uint128_t t[5]; + limb r0,r1,r2,r3,r4,c; + limb d0,d1,d2,d4,d419; + + r0 = in[0]; + r1 = in[1]; + r2 = in[2]; + r3 = in[3]; + r4 = in[4]; + + do { + d0 = r0 * 2; + d1 = r1 * 2; + d2 = r2 * 2 * 19; + d419 = r4 * 19; + d4 = d419 * 2; + + t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3 )); + t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19)); + t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3 )); + t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419 )); + t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2 )); + + r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51); + t[1] += c; r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51); + t[2] += c; r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51); + t[3] += c; r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51); + t[4] += c; r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51); + r0 += c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff; + r1 += c; c = r1 >> 51; r1 = r1 & 0x7ffffffffffff; + r2 += c; + } while(--count); + + output[0] = r0; + output[1] = r1; + output[2] = r2; + output[3] = r3; + output[4] = r4; +} + +/* Take a little-endian, 32-byte number and expand it into polynomial form */ +static void +fexpand(limb *output, const u8 *in) { + output[0] = *((const uint64_t *)(in)) & 0x7ffffffffffff; + output[1] = (*((const uint64_t *)(in+6)) >> 3) & 0x7ffffffffffff; + output[2] = (*((const uint64_t *)(in+12)) >> 6) & 0x7ffffffffffff; + output[3] = (*((const uint64_t *)(in+19)) >> 1) & 0x7ffffffffffff; + output[4] = (*((const uint64_t *)(in+25)) >> 4) & 0x7ffffffffffff; +} + +/* Take a fully reduced polynomial form number and contract it into a + * little-endian, 32-byte array + */ +static void +fcontract(u8 *output, const felem input) { + uint128_t t[5]; + + t[0] = input[0]; + t[1] = input[1]; + t[2] = input[2]; + t[3] = input[3]; + t[4] = input[4]; + + t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff; + t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff; + t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff; + t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff; + t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff; + + t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff; + t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff; + t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff; + t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff; + t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff; + + /* now t is between 0 and 2^255-1, properly carried. */ + /* case 1: between 0 and 2^255-20. case 2: between 2^255-19 and 2^255-1. */ + + t[0] += 19; + + t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff; + t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff; + t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff; + t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff; + t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff; + + /* now between 19 and 2^255-1 in both cases, and offset by 19. */ + + t[0] += 0x8000000000000 - 19; + t[1] += 0x8000000000000 - 1; + t[2] += 0x8000000000000 - 1; + t[3] += 0x8000000000000 - 1; + t[4] += 0x8000000000000 - 1; + + /* now between 2^255 and 2^256-20, and offset by 2^255. */ + + t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff; + t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff; + t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff; + t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff; + t[4] &= 0x7ffffffffffff; + + *((uint64_t *)(output)) = t[0] | (t[1] << 51); + *((uint64_t *)(output+8)) = (t[1] >> 13) | (t[2] << 38); + *((uint64_t *)(output+16)) = (t[2] >> 26) | (t[3] << 25); + *((uint64_t *)(output+24)) = (t[3] >> 39) | (t[4] << 12); +} + + +// ----------------------------------------------------------------------------- +// Shamelessly copied from djb's code, tightened a little +// ----------------------------------------------------------------------------- +static void +crecip(felem out, const felem z) { + felem a,t0,b,c; + + /* 2 */ fsquare_times(a, z, 1); // a = 2 + /* 8 */ fsquare_times(t0, a, 2); + /* 9 */ fmul(b, t0, z); // b = 9 + /* 11 */ fmul(a, b, a); // a = 11 + /* 22 */ fsquare_times(t0, a, 1); + /* 2^5 - 2^0 = 31 */ fmul(b, t0, b); + /* 2^10 - 2^5 */ fsquare_times(t0, b, 5); + /* 2^10 - 2^0 */ fmul(b, t0, b); + /* 2^20 - 2^10 */ fsquare_times(t0, b, 10); + /* 2^20 - 2^0 */ fmul(c, t0, b); + /* 2^40 - 2^20 */ fsquare_times(t0, c, 20); + /* 2^40 - 2^0 */ fmul(t0, t0, c); + /* 2^50 - 2^10 */ fsquare_times(t0, t0, 10); + /* 2^50 - 2^0 */ fmul(b, t0, b); + /* 2^100 - 2^50 */ fsquare_times(t0, b, 50); + /* 2^100 - 2^0 */ fmul(c, t0, b); + /* 2^200 - 2^100 */ fsquare_times(t0, c, 100); + /* 2^200 - 2^0 */ fmul(t0, t0, c); + /* 2^250 - 2^50 */ fsquare_times(t0, t0, 50); + /* 2^250 - 2^0 */ fmul(t0, t0, b); + /* 2^255 - 2^5 */ fsquare_times(t0, t0, 5); + /* 2^255 - 21 */ fmul(out, t0, a); +} + +void +crypto_pow(u8 *q, const u8 *p) { + limb x[5]; + fexpand(x, p); + crecip(x, x); + fcontract(q, x); +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/ref10/Makefile b/lib-25519/lib25519/crypto_pow/inv25519/ref10/Makefile new file mode 100644 index 0000000000..222d69d1d4 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/ref10/Makefile @@ -0,0 +1,4 @@ +all: montgomery.h pow225521.h + +pow225521.h: pow225521.q pow225521.h.do + ./pow225521.h.do < pow225521.q > pow225521.h diff --git a/lib-25519/lib25519/crypto_pow/inv25519/ref10/api.c b/lib-25519/lib25519/crypto_pow/inv25519/ref10/api.c new file mode 100644 index 0000000000..ba103fd631 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/ref10/api.c @@ -0,0 +1,10 @@ +#include "crypto_pow.h" +#include "fe.h" + +void crypto_pow(unsigned char *q,const unsigned char *p) +{ + fe x; + fe_frombytes(x,p); + fe_invert(x,x); + fe_tobytes(q,x); +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe.h b/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe.h new file mode 100644 index 0000000000..5144ba1518 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe.h @@ -0,0 +1,44 @@ +#ifndef FE_H +#define FE_H + +#include "crypto_int32.h" + +typedef crypto_int32 fe[10]; + +/* +fe means field element. +Here the field is \Z/(2^255-19). +An element t, entries t[0]...t[9], represents the integer +t[0]+2^26 t[1]+2^51 t[2]+2^77 t[3]+2^102 t[4]+...+2^230 t[9]. +Bounds on each t[i] vary depending on context. +*/ + +#define fe_frombytes CRYPTO_NAMESPACE(fe_frombytes) +#define fe_tobytes CRYPTO_NAMESPACE(fe_tobytes) +#define fe_copy CRYPTO_NAMESPACE(fe_copy) +#define fe_0 CRYPTO_NAMESPACE(fe_0) +#define fe_1 CRYPTO_NAMESPACE(fe_1) +#define fe_cswap CRYPTO_NAMESPACE(fe_cswap) +#define fe_add CRYPTO_NAMESPACE(fe_add) +#define fe_sub CRYPTO_NAMESPACE(fe_sub) +#define fe_mul CRYPTO_NAMESPACE(fe_mul) +#define fe_sq CRYPTO_NAMESPACE(fe_sq) +#define fe_mul121666 CRYPTO_NAMESPACE(fe_mul121666) +#define fe_invert CRYPTO_NAMESPACE(fe_invert) + +extern void fe_frombytes(fe,const unsigned char *); +extern void fe_tobytes(unsigned char *,const fe); + +extern void fe_copy(fe,const fe); +extern void fe_0(fe); +extern void fe_1(fe); +extern void fe_cswap(fe,fe,unsigned int); + +extern void fe_add(fe,const fe,const fe); +extern void fe_sub(fe,const fe,const fe); +extern void fe_mul(fe,const fe,const fe); +extern void fe_sq(fe,const fe); +extern void fe_mul121666(fe,const fe); +extern void fe_invert(fe,const fe); + +#endif diff --git a/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_frombytes.c b/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_frombytes.c new file mode 100644 index 0000000000..5e0f1654e5 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_frombytes.c @@ -0,0 +1,71 @@ +// linker define fe_frombytes + +#include "fe.h" +#include "crypto_int64.h" +#include "crypto_uint64.h" + +static crypto_uint64 load_3(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + return result; +} + +static crypto_uint64 load_4(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + result |= ((crypto_uint64) in[3]) << 24; + return result; +} + +void fe_frombytes(fe h,const unsigned char *s) +{ + crypto_int64 h0 = load_4(s); + crypto_int64 h1 = load_3(s + 4) << 6; + crypto_int64 h2 = load_3(s + 7) << 5; + crypto_int64 h3 = load_3(s + 10) << 3; + crypto_int64 h4 = load_3(s + 13) << 2; + crypto_int64 h5 = load_4(s + 16); + crypto_int64 h6 = load_3(s + 20) << 7; + crypto_int64 h7 = load_3(s + 23) << 5; + crypto_int64 h8 = load_3(s + 26) << 4; + crypto_int64 h9 = (load_3(s + 29) & 8388607) << 2; + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + + carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_invert.c b/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_invert.c new file mode 100644 index 0000000000..ceff71350f --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_invert.c @@ -0,0 +1,16 @@ +// linker define fe_invert +// linker use fe_mul +// linker use fe_sq + +#include "fe.h" + +void fe_invert(fe out,const fe z) +{ + fe t0; + fe t1; + fe t2; + fe t3; + int i; + +#include "pow225521.h" +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_mul.c b/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_mul.c new file mode 100644 index 0000000000..85c7caa638 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_mul.c @@ -0,0 +1,255 @@ +// linker define fe_mul + +#include "fe.h" +#include "crypto_int64.h" + +/* +h = f * g +Can overlap h with f or g. + +Preconditions: + |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + |g| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + +Postconditions: + |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. +*/ + +/* +Notes on implementation strategy: + +Using schoolbook multiplication. +Karatsuba would save a little in some cost models. + +Most multiplications by 2 and 19 are 32-bit precomputations; +cheaper than 64-bit postcomputations. + +There is one remaining multiplication by 19 in the carry chain; +one *19 precomputation can be merged into this, +but the resulting data flow is considerably less clean. + +There are 12 carries below. +10 of them are 2-way parallelizable and vectorizable. +Can get away with 11 carries, but then data flow is much deeper. + +With tighter constraints on inputs can squeeze carries into int32. +*/ + +void fe_mul(fe h,const fe f,const fe g) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 g0 = g[0]; + crypto_int32 g1 = g[1]; + crypto_int32 g2 = g[2]; + crypto_int32 g3 = g[3]; + crypto_int32 g4 = g[4]; + crypto_int32 g5 = g[5]; + crypto_int32 g6 = g[6]; + crypto_int32 g7 = g[7]; + crypto_int32 g8 = g[8]; + crypto_int32 g9 = g[9]; + crypto_int32 g1_19 = 19 * g1; /* 1.4*2^29 */ + crypto_int32 g2_19 = 19 * g2; /* 1.4*2^30; still ok */ + crypto_int32 g3_19 = 19 * g3; + crypto_int32 g4_19 = 19 * g4; + crypto_int32 g5_19 = 19 * g5; + crypto_int32 g6_19 = 19 * g6; + crypto_int32 g7_19 = 19 * g7; + crypto_int32 g8_19 = 19 * g8; + crypto_int32 g9_19 = 19 * g9; + crypto_int32 f1_2 = 2 * f1; + crypto_int32 f3_2 = 2 * f3; + crypto_int32 f5_2 = 2 * f5; + crypto_int32 f7_2 = 2 * f7; + crypto_int32 f9_2 = 2 * f9; + crypto_int64 f0g0 = f0 * (crypto_int64) g0; + crypto_int64 f0g1 = f0 * (crypto_int64) g1; + crypto_int64 f0g2 = f0 * (crypto_int64) g2; + crypto_int64 f0g3 = f0 * (crypto_int64) g3; + crypto_int64 f0g4 = f0 * (crypto_int64) g4; + crypto_int64 f0g5 = f0 * (crypto_int64) g5; + crypto_int64 f0g6 = f0 * (crypto_int64) g6; + crypto_int64 f0g7 = f0 * (crypto_int64) g7; + crypto_int64 f0g8 = f0 * (crypto_int64) g8; + crypto_int64 f0g9 = f0 * (crypto_int64) g9; + crypto_int64 f1g0 = f1 * (crypto_int64) g0; + crypto_int64 f1g1_2 = f1_2 * (crypto_int64) g1; + crypto_int64 f1g2 = f1 * (crypto_int64) g2; + crypto_int64 f1g3_2 = f1_2 * (crypto_int64) g3; + crypto_int64 f1g4 = f1 * (crypto_int64) g4; + crypto_int64 f1g5_2 = f1_2 * (crypto_int64) g5; + crypto_int64 f1g6 = f1 * (crypto_int64) g6; + crypto_int64 f1g7_2 = f1_2 * (crypto_int64) g7; + crypto_int64 f1g8 = f1 * (crypto_int64) g8; + crypto_int64 f1g9_38 = f1_2 * (crypto_int64) g9_19; + crypto_int64 f2g0 = f2 * (crypto_int64) g0; + crypto_int64 f2g1 = f2 * (crypto_int64) g1; + crypto_int64 f2g2 = f2 * (crypto_int64) g2; + crypto_int64 f2g3 = f2 * (crypto_int64) g3; + crypto_int64 f2g4 = f2 * (crypto_int64) g4; + crypto_int64 f2g5 = f2 * (crypto_int64) g5; + crypto_int64 f2g6 = f2 * (crypto_int64) g6; + crypto_int64 f2g7 = f2 * (crypto_int64) g7; + crypto_int64 f2g8_19 = f2 * (crypto_int64) g8_19; + crypto_int64 f2g9_19 = f2 * (crypto_int64) g9_19; + crypto_int64 f3g0 = f3 * (crypto_int64) g0; + crypto_int64 f3g1_2 = f3_2 * (crypto_int64) g1; + crypto_int64 f3g2 = f3 * (crypto_int64) g2; + crypto_int64 f3g3_2 = f3_2 * (crypto_int64) g3; + crypto_int64 f3g4 = f3 * (crypto_int64) g4; + crypto_int64 f3g5_2 = f3_2 * (crypto_int64) g5; + crypto_int64 f3g6 = f3 * (crypto_int64) g6; + crypto_int64 f3g7_38 = f3_2 * (crypto_int64) g7_19; + crypto_int64 f3g8_19 = f3 * (crypto_int64) g8_19; + crypto_int64 f3g9_38 = f3_2 * (crypto_int64) g9_19; + crypto_int64 f4g0 = f4 * (crypto_int64) g0; + crypto_int64 f4g1 = f4 * (crypto_int64) g1; + crypto_int64 f4g2 = f4 * (crypto_int64) g2; + crypto_int64 f4g3 = f4 * (crypto_int64) g3; + crypto_int64 f4g4 = f4 * (crypto_int64) g4; + crypto_int64 f4g5 = f4 * (crypto_int64) g5; + crypto_int64 f4g6_19 = f4 * (crypto_int64) g6_19; + crypto_int64 f4g7_19 = f4 * (crypto_int64) g7_19; + crypto_int64 f4g8_19 = f4 * (crypto_int64) g8_19; + crypto_int64 f4g9_19 = f4 * (crypto_int64) g9_19; + crypto_int64 f5g0 = f5 * (crypto_int64) g0; + crypto_int64 f5g1_2 = f5_2 * (crypto_int64) g1; + crypto_int64 f5g2 = f5 * (crypto_int64) g2; + crypto_int64 f5g3_2 = f5_2 * (crypto_int64) g3; + crypto_int64 f5g4 = f5 * (crypto_int64) g4; + crypto_int64 f5g5_38 = f5_2 * (crypto_int64) g5_19; + crypto_int64 f5g6_19 = f5 * (crypto_int64) g6_19; + crypto_int64 f5g7_38 = f5_2 * (crypto_int64) g7_19; + crypto_int64 f5g8_19 = f5 * (crypto_int64) g8_19; + crypto_int64 f5g9_38 = f5_2 * (crypto_int64) g9_19; + crypto_int64 f6g0 = f6 * (crypto_int64) g0; + crypto_int64 f6g1 = f6 * (crypto_int64) g1; + crypto_int64 f6g2 = f6 * (crypto_int64) g2; + crypto_int64 f6g3 = f6 * (crypto_int64) g3; + crypto_int64 f6g4_19 = f6 * (crypto_int64) g4_19; + crypto_int64 f6g5_19 = f6 * (crypto_int64) g5_19; + crypto_int64 f6g6_19 = f6 * (crypto_int64) g6_19; + crypto_int64 f6g7_19 = f6 * (crypto_int64) g7_19; + crypto_int64 f6g8_19 = f6 * (crypto_int64) g8_19; + crypto_int64 f6g9_19 = f6 * (crypto_int64) g9_19; + crypto_int64 f7g0 = f7 * (crypto_int64) g0; + crypto_int64 f7g1_2 = f7_2 * (crypto_int64) g1; + crypto_int64 f7g2 = f7 * (crypto_int64) g2; + crypto_int64 f7g3_38 = f7_2 * (crypto_int64) g3_19; + crypto_int64 f7g4_19 = f7 * (crypto_int64) g4_19; + crypto_int64 f7g5_38 = f7_2 * (crypto_int64) g5_19; + crypto_int64 f7g6_19 = f7 * (crypto_int64) g6_19; + crypto_int64 f7g7_38 = f7_2 * (crypto_int64) g7_19; + crypto_int64 f7g8_19 = f7 * (crypto_int64) g8_19; + crypto_int64 f7g9_38 = f7_2 * (crypto_int64) g9_19; + crypto_int64 f8g0 = f8 * (crypto_int64) g0; + crypto_int64 f8g1 = f8 * (crypto_int64) g1; + crypto_int64 f8g2_19 = f8 * (crypto_int64) g2_19; + crypto_int64 f8g3_19 = f8 * (crypto_int64) g3_19; + crypto_int64 f8g4_19 = f8 * (crypto_int64) g4_19; + crypto_int64 f8g5_19 = f8 * (crypto_int64) g5_19; + crypto_int64 f8g6_19 = f8 * (crypto_int64) g6_19; + crypto_int64 f8g7_19 = f8 * (crypto_int64) g7_19; + crypto_int64 f8g8_19 = f8 * (crypto_int64) g8_19; + crypto_int64 f8g9_19 = f8 * (crypto_int64) g9_19; + crypto_int64 f9g0 = f9 * (crypto_int64) g0; + crypto_int64 f9g1_38 = f9_2 * (crypto_int64) g1_19; + crypto_int64 f9g2_19 = f9 * (crypto_int64) g2_19; + crypto_int64 f9g3_38 = f9_2 * (crypto_int64) g3_19; + crypto_int64 f9g4_19 = f9 * (crypto_int64) g4_19; + crypto_int64 f9g5_38 = f9_2 * (crypto_int64) g5_19; + crypto_int64 f9g6_19 = f9 * (crypto_int64) g6_19; + crypto_int64 f9g7_38 = f9_2 * (crypto_int64) g7_19; + crypto_int64 f9g8_19 = f9 * (crypto_int64) g8_19; + crypto_int64 f9g9_38 = f9_2 * (crypto_int64) g9_19; + crypto_int64 h0 = f0g0+f1g9_38+f2g8_19+f3g7_38+f4g6_19+f5g5_38+f6g4_19+f7g3_38+f8g2_19+f9g1_38; + crypto_int64 h1 = f0g1+f1g0 +f2g9_19+f3g8_19+f4g7_19+f5g6_19+f6g5_19+f7g4_19+f8g3_19+f9g2_19; + crypto_int64 h2 = f0g2+f1g1_2 +f2g0 +f3g9_38+f4g8_19+f5g7_38+f6g6_19+f7g5_38+f8g4_19+f9g3_38; + crypto_int64 h3 = f0g3+f1g2 +f2g1 +f3g0 +f4g9_19+f5g8_19+f6g7_19+f7g6_19+f8g5_19+f9g4_19; + crypto_int64 h4 = f0g4+f1g3_2 +f2g2 +f3g1_2 +f4g0 +f5g9_38+f6g8_19+f7g7_38+f8g6_19+f9g5_38; + crypto_int64 h5 = f0g5+f1g4 +f2g3 +f3g2 +f4g1 +f5g0 +f6g9_19+f7g8_19+f8g7_19+f9g6_19; + crypto_int64 h6 = f0g6+f1g5_2 +f2g4 +f3g3_2 +f4g2 +f5g1_2 +f6g0 +f7g9_38+f8g8_19+f9g7_38; + crypto_int64 h7 = f0g7+f1g6 +f2g5 +f3g4 +f4g3 +f5g2 +f6g1 +f7g0 +f8g9_19+f9g8_19; + crypto_int64 h8 = f0g8+f1g7_2 +f2g6 +f3g5_2 +f4g4 +f5g3_2 +f6g2 +f7g1_2 +f8g0 +f9g9_38; + crypto_int64 h9 = f0g9+f1g8 +f2g7 +f3g6 +f4g5 +f5g4 +f6g3 +f7g2 +f8g1 +f9g0 ; + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + + /* + |h0| <= (1.1*1.1*2^52*(1+19+19+19+19)+1.1*1.1*2^50*(38+38+38+38+38)) + i.e. |h0| <= 1.2*2^59; narrower ranges for h2, h4, h6, h8 + |h1| <= (1.1*1.1*2^51*(1+1+19+19+19+19+19+19+19+19)) + i.e. |h1| <= 1.5*2^58; narrower ranges for h3, h5, h7, h9 + */ + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + /* |h0| <= 2^25 */ + /* |h4| <= 2^25 */ + /* |h1| <= 1.51*2^58 */ + /* |h5| <= 1.51*2^58 */ + + carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + /* |h1| <= 2^24; from now on fits into int32 */ + /* |h5| <= 2^24; from now on fits into int32 */ + /* |h2| <= 1.21*2^59 */ + /* |h6| <= 1.21*2^59 */ + + carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + /* |h2| <= 2^25; from now on fits into int32 unchanged */ + /* |h6| <= 2^25; from now on fits into int32 unchanged */ + /* |h3| <= 1.51*2^58 */ + /* |h7| <= 1.51*2^58 */ + + carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + /* |h3| <= 2^24; from now on fits into int32 unchanged */ + /* |h7| <= 2^24; from now on fits into int32 unchanged */ + /* |h4| <= 1.52*2^33 */ + /* |h8| <= 1.52*2^33 */ + + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + /* |h4| <= 2^25; from now on fits into int32 unchanged */ + /* |h8| <= 2^25; from now on fits into int32 unchanged */ + /* |h5| <= 1.01*2^24 */ + /* |h9| <= 1.51*2^58 */ + + carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + /* |h9| <= 2^24; from now on fits into int32 unchanged */ + /* |h0| <= 1.8*2^37 */ + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + /* |h0| <= 2^25; from now on fits into int32 unchanged */ + /* |h1| <= 1.01*2^24 */ + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_sq.c b/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_sq.c new file mode 100644 index 0000000000..1edcb410d1 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_sq.c @@ -0,0 +1,151 @@ +// linker define fe_sq + +#include "fe.h" +#include "crypto_int64.h" + +/* +h = f * f +Can overlap h with f. + +Preconditions: + |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. + +Postconditions: + |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. +*/ + +/* +See fe_mul.c for discussion of implementation strategy. +*/ + +void fe_sq(fe h,const fe f) +{ + crypto_int32 f0 = f[0]; + crypto_int32 f1 = f[1]; + crypto_int32 f2 = f[2]; + crypto_int32 f3 = f[3]; + crypto_int32 f4 = f[4]; + crypto_int32 f5 = f[5]; + crypto_int32 f6 = f[6]; + crypto_int32 f7 = f[7]; + crypto_int32 f8 = f[8]; + crypto_int32 f9 = f[9]; + crypto_int32 f0_2 = 2 * f0; + crypto_int32 f1_2 = 2 * f1; + crypto_int32 f2_2 = 2 * f2; + crypto_int32 f3_2 = 2 * f3; + crypto_int32 f4_2 = 2 * f4; + crypto_int32 f5_2 = 2 * f5; + crypto_int32 f6_2 = 2 * f6; + crypto_int32 f7_2 = 2 * f7; + crypto_int32 f5_38 = 38 * f5; /* 1.31*2^30 */ + crypto_int32 f6_19 = 19 * f6; /* 1.31*2^30 */ + crypto_int32 f7_38 = 38 * f7; /* 1.31*2^30 */ + crypto_int32 f8_19 = 19 * f8; /* 1.31*2^30 */ + crypto_int32 f9_38 = 38 * f9; /* 1.31*2^30 */ + crypto_int64 f0f0 = f0 * (crypto_int64) f0; + crypto_int64 f0f1_2 = f0_2 * (crypto_int64) f1; + crypto_int64 f0f2_2 = f0_2 * (crypto_int64) f2; + crypto_int64 f0f3_2 = f0_2 * (crypto_int64) f3; + crypto_int64 f0f4_2 = f0_2 * (crypto_int64) f4; + crypto_int64 f0f5_2 = f0_2 * (crypto_int64) f5; + crypto_int64 f0f6_2 = f0_2 * (crypto_int64) f6; + crypto_int64 f0f7_2 = f0_2 * (crypto_int64) f7; + crypto_int64 f0f8_2 = f0_2 * (crypto_int64) f8; + crypto_int64 f0f9_2 = f0_2 * (crypto_int64) f9; + crypto_int64 f1f1_2 = f1_2 * (crypto_int64) f1; + crypto_int64 f1f2_2 = f1_2 * (crypto_int64) f2; + crypto_int64 f1f3_4 = f1_2 * (crypto_int64) f3_2; + crypto_int64 f1f4_2 = f1_2 * (crypto_int64) f4; + crypto_int64 f1f5_4 = f1_2 * (crypto_int64) f5_2; + crypto_int64 f1f6_2 = f1_2 * (crypto_int64) f6; + crypto_int64 f1f7_4 = f1_2 * (crypto_int64) f7_2; + crypto_int64 f1f8_2 = f1_2 * (crypto_int64) f8; + crypto_int64 f1f9_76 = f1_2 * (crypto_int64) f9_38; + crypto_int64 f2f2 = f2 * (crypto_int64) f2; + crypto_int64 f2f3_2 = f2_2 * (crypto_int64) f3; + crypto_int64 f2f4_2 = f2_2 * (crypto_int64) f4; + crypto_int64 f2f5_2 = f2_2 * (crypto_int64) f5; + crypto_int64 f2f6_2 = f2_2 * (crypto_int64) f6; + crypto_int64 f2f7_2 = f2_2 * (crypto_int64) f7; + crypto_int64 f2f8_38 = f2_2 * (crypto_int64) f8_19; + crypto_int64 f2f9_38 = f2 * (crypto_int64) f9_38; + crypto_int64 f3f3_2 = f3_2 * (crypto_int64) f3; + crypto_int64 f3f4_2 = f3_2 * (crypto_int64) f4; + crypto_int64 f3f5_4 = f3_2 * (crypto_int64) f5_2; + crypto_int64 f3f6_2 = f3_2 * (crypto_int64) f6; + crypto_int64 f3f7_76 = f3_2 * (crypto_int64) f7_38; + crypto_int64 f3f8_38 = f3_2 * (crypto_int64) f8_19; + crypto_int64 f3f9_76 = f3_2 * (crypto_int64) f9_38; + crypto_int64 f4f4 = f4 * (crypto_int64) f4; + crypto_int64 f4f5_2 = f4_2 * (crypto_int64) f5; + crypto_int64 f4f6_38 = f4_2 * (crypto_int64) f6_19; + crypto_int64 f4f7_38 = f4 * (crypto_int64) f7_38; + crypto_int64 f4f8_38 = f4_2 * (crypto_int64) f8_19; + crypto_int64 f4f9_38 = f4 * (crypto_int64) f9_38; + crypto_int64 f5f5_38 = f5 * (crypto_int64) f5_38; + crypto_int64 f5f6_38 = f5_2 * (crypto_int64) f6_19; + crypto_int64 f5f7_76 = f5_2 * (crypto_int64) f7_38; + crypto_int64 f5f8_38 = f5_2 * (crypto_int64) f8_19; + crypto_int64 f5f9_76 = f5_2 * (crypto_int64) f9_38; + crypto_int64 f6f6_19 = f6 * (crypto_int64) f6_19; + crypto_int64 f6f7_38 = f6 * (crypto_int64) f7_38; + crypto_int64 f6f8_38 = f6_2 * (crypto_int64) f8_19; + crypto_int64 f6f9_38 = f6 * (crypto_int64) f9_38; + crypto_int64 f7f7_38 = f7 * (crypto_int64) f7_38; + crypto_int64 f7f8_38 = f7_2 * (crypto_int64) f8_19; + crypto_int64 f7f9_76 = f7_2 * (crypto_int64) f9_38; + crypto_int64 f8f8_19 = f8 * (crypto_int64) f8_19; + crypto_int64 f8f9_38 = f8 * (crypto_int64) f9_38; + crypto_int64 f9f9_38 = f9 * (crypto_int64) f9_38; + crypto_int64 h0 = f0f0 +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38; + crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38; + crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19; + crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38; + crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2 +f5f9_76+f6f8_38+f7f7_38; + crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38; + crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19; + crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38; + crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4 +f9f9_38; + crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2; + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + + carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25; + carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25; + + carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26; + carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26; + + carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25; + carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25; + + carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; + carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26; + + carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; + + carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_tobytes.c b/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_tobytes.c new file mode 100644 index 0000000000..f96d060644 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/ref10/fe_tobytes.c @@ -0,0 +1,121 @@ +// linker define fe_tobytes + +#include "fe.h" + +/* +Preconditions: + |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. + +Write p=2^255-19; q=floor(h/p). +Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))). + +Proof: + Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4. + Also have |h-2^230 h9|<2^230 so |19 2^(-255)(h-2^230 h9)|<1/4. + + Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9). + Then 0> 25; + q = (h0 + q) >> 26; + q = (h1 + q) >> 25; + q = (h2 + q) >> 26; + q = (h3 + q) >> 25; + q = (h4 + q) >> 26; + q = (h5 + q) >> 25; + q = (h6 + q) >> 26; + q = (h7 + q) >> 25; + q = (h8 + q) >> 26; + q = (h9 + q) >> 25; + + /* Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. */ + h0 += 19 * q; + /* Goal: Output h-2^255 q, which is between 0 and 2^255-20. */ + + carry0 = h0 >> 26; h1 += carry0; h0 -= carry0 << 26; + carry1 = h1 >> 25; h2 += carry1; h1 -= carry1 << 25; + carry2 = h2 >> 26; h3 += carry2; h2 -= carry2 << 26; + carry3 = h3 >> 25; h4 += carry3; h3 -= carry3 << 25; + carry4 = h4 >> 26; h5 += carry4; h4 -= carry4 << 26; + carry5 = h5 >> 25; h6 += carry5; h5 -= carry5 << 25; + carry6 = h6 >> 26; h7 += carry6; h6 -= carry6 << 26; + carry7 = h7 >> 25; h8 += carry7; h7 -= carry7 << 25; + carry8 = h8 >> 26; h9 += carry8; h8 -= carry8 << 26; + carry9 = h9 >> 25; h9 -= carry9 << 25; + /* h10 = carry9 */ + + /* + Goal: Output h0+...+2^255 h10-2^255 q, which is between 0 and 2^255-20. + Have h0+...+2^230 h9 between 0 and 2^255-1; + evidently 2^255 h10-2^255 q = 0. + Goal: Output h0+...+2^230 h9. + */ + + s[0] = h0 >> 0; + s[1] = h0 >> 8; + s[2] = h0 >> 16; + s[3] = (h0 >> 24) | (h1 << 2); + s[4] = h1 >> 6; + s[5] = h1 >> 14; + s[6] = (h1 >> 22) | (h2 << 3); + s[7] = h2 >> 5; + s[8] = h2 >> 13; + s[9] = (h2 >> 21) | (h3 << 5); + s[10] = h3 >> 3; + s[11] = h3 >> 11; + s[12] = (h3 >> 19) | (h4 << 6); + s[13] = h4 >> 2; + s[14] = h4 >> 10; + s[15] = h4 >> 18; + s[16] = h5 >> 0; + s[17] = h5 >> 8; + s[18] = h5 >> 16; + s[19] = (h5 >> 24) | (h6 << 1); + s[20] = h6 >> 7; + s[21] = h6 >> 15; + s[22] = (h6 >> 23) | (h7 << 3); + s[23] = h7 >> 5; + s[24] = h7 >> 13; + s[25] = (h7 >> 21) | (h8 << 4); + s[26] = h8 >> 4; + s[27] = h8 >> 12; + s[28] = (h8 >> 20) | (h9 << 6); + s[29] = h9 >> 2; + s[30] = h9 >> 10; + s[31] = h9 >> 18; +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/ref10/implementors b/lib-25519/lib25519/crypto_pow/inv25519/ref10/implementors new file mode 100644 index 0000000000..7d6c3a82b6 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/ref10/implementors @@ -0,0 +1 @@ +D. J. Bernstein diff --git a/lib-25519/lib25519/crypto_pow/inv25519/ref10/pow225521.h b/lib-25519/lib25519/crypto_pow/inv25519/ref10/pow225521.h new file mode 100644 index 0000000000..109df779a2 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/ref10/pow225521.h @@ -0,0 +1,160 @@ + +/* qhasm: fe z1 */ + +/* qhasm: fe z2 */ + +/* qhasm: fe z8 */ + +/* qhasm: fe z9 */ + +/* qhasm: fe z11 */ + +/* qhasm: fe z22 */ + +/* qhasm: fe z_5_0 */ + +/* qhasm: fe z_10_5 */ + +/* qhasm: fe z_10_0 */ + +/* qhasm: fe z_20_10 */ + +/* qhasm: fe z_20_0 */ + +/* qhasm: fe z_40_20 */ + +/* qhasm: fe z_40_0 */ + +/* qhasm: fe z_50_10 */ + +/* qhasm: fe z_50_0 */ + +/* qhasm: fe z_100_50 */ + +/* qhasm: fe z_100_0 */ + +/* qhasm: fe z_200_100 */ + +/* qhasm: fe z_200_0 */ + +/* qhasm: fe z_250_50 */ + +/* qhasm: fe z_250_0 */ + +/* qhasm: fe z_255_5 */ + +/* qhasm: fe z_255_21 */ + +/* qhasm: enter pow225521 */ + +/* qhasm: z2 = z1^2^1 */ +/* asm 1: fe_sq(>z2=fe#1,z2=fe#1,>z2=fe#1); */ +/* asm 2: fe_sq(>z2=t0,z2=t0,>z2=t0); */ +fe_sq(t0,z); for (i = 1;i < 1;++i) fe_sq(t0,t0); + +/* qhasm: z8 = z2^2^2 */ +/* asm 1: fe_sq(>z8=fe#2,z8=fe#2,>z8=fe#2); */ +/* asm 2: fe_sq(>z8=t1,z8=t1,>z8=t1); */ +fe_sq(t1,t0); for (i = 1;i < 2;++i) fe_sq(t1,t1); + +/* qhasm: z9 = z1*z8 */ +/* asm 1: fe_mul(>z9=fe#2,z9=t1,z11=fe#1,z11=t0,z22=fe#3,z22=fe#3,>z22=fe#3); */ +/* asm 2: fe_sq(>z22=t2,z22=t2,>z22=t2); */ +fe_sq(t2,t0); for (i = 1;i < 1;++i) fe_sq(t2,t2); + +/* qhasm: z_5_0 = z9*z22 */ +/* asm 1: fe_mul(>z_5_0=fe#2,z_5_0=t1,z_10_5=fe#3,z_10_5=fe#3,>z_10_5=fe#3); */ +/* asm 2: fe_sq(>z_10_5=t2,z_10_5=t2,>z_10_5=t2); */ +fe_sq(t2,t1); for (i = 1;i < 5;++i) fe_sq(t2,t2); + +/* qhasm: z_10_0 = z_10_5*z_5_0 */ +/* asm 1: fe_mul(>z_10_0=fe#2,z_10_0=t1,z_20_10=fe#3,z_20_10=fe#3,>z_20_10=fe#3); */ +/* asm 2: fe_sq(>z_20_10=t2,z_20_10=t2,>z_20_10=t2); */ +fe_sq(t2,t1); for (i = 1;i < 10;++i) fe_sq(t2,t2); + +/* qhasm: z_20_0 = z_20_10*z_10_0 */ +/* asm 1: fe_mul(>z_20_0=fe#3,z_20_0=t2,z_40_20=fe#4,z_40_20=fe#4,>z_40_20=fe#4); */ +/* asm 2: fe_sq(>z_40_20=t3,z_40_20=t3,>z_40_20=t3); */ +fe_sq(t3,t2); for (i = 1;i < 20;++i) fe_sq(t3,t3); + +/* qhasm: z_40_0 = z_40_20*z_20_0 */ +/* asm 1: fe_mul(>z_40_0=fe#3,z_40_0=t2,z_50_10=fe#3,z_50_10=fe#3,>z_50_10=fe#3); */ +/* asm 2: fe_sq(>z_50_10=t2,z_50_10=t2,>z_50_10=t2); */ +fe_sq(t2,t2); for (i = 1;i < 10;++i) fe_sq(t2,t2); + +/* qhasm: z_50_0 = z_50_10*z_10_0 */ +/* asm 1: fe_mul(>z_50_0=fe#2,z_50_0=t1,z_100_50=fe#3,z_100_50=fe#3,>z_100_50=fe#3); */ +/* asm 2: fe_sq(>z_100_50=t2,z_100_50=t2,>z_100_50=t2); */ +fe_sq(t2,t1); for (i = 1;i < 50;++i) fe_sq(t2,t2); + +/* qhasm: z_100_0 = z_100_50*z_50_0 */ +/* asm 1: fe_mul(>z_100_0=fe#3,z_100_0=t2,z_200_100=fe#4,z_200_100=fe#4,>z_200_100=fe#4); */ +/* asm 2: fe_sq(>z_200_100=t3,z_200_100=t3,>z_200_100=t3); */ +fe_sq(t3,t2); for (i = 1;i < 100;++i) fe_sq(t3,t3); + +/* qhasm: z_200_0 = z_200_100*z_100_0 */ +/* asm 1: fe_mul(>z_200_0=fe#3,z_200_0=t2,z_250_50=fe#3,z_250_50=fe#3,>z_250_50=fe#3); */ +/* asm 2: fe_sq(>z_250_50=t2,z_250_50=t2,>z_250_50=t2); */ +fe_sq(t2,t2); for (i = 1;i < 50;++i) fe_sq(t2,t2); + +/* qhasm: z_250_0 = z_250_50*z_50_0 */ +/* asm 1: fe_mul(>z_250_0=fe#2,z_250_0=t1,z_255_5=fe#2,z_255_5=fe#2,>z_255_5=fe#2); */ +/* asm 2: fe_sq(>z_255_5=t1,z_255_5=t1,>z_255_5=t1); */ +fe_sq(t1,t1); for (i = 1;i < 5;++i) fe_sq(t1,t1); + +/* qhasm: z_255_21 = z_255_5*z11 */ +/* asm 1: fe_mul(>z_255_21=fe#12,z_255_21=out,z1=fe#11: +return:nofallthrough:h=fe:asm/fe_mul(>h,h=fe:#k:asm/fe_sq(>h,h,>h);: + +: + +fe z1 +fe z2 +fe z8 +fe z9 +fe z11 +fe z22 +fe z_5_0 +fe z_10_5 +fe z_10_0 +fe z_20_10 +fe z_20_0 +fe z_40_20 +fe z_40_0 +fe z_50_10 +fe z_50_0 +fe z_100_50 +fe z_100_0 +fe z_200_100 +fe z_200_0 +fe z_250_50 +fe z_250_0 +fe z_255_5 +fe z_255_21 + +enter pow225521 + +z2 = z1^2^1 +z8 = z2^2^2 +z9 = z1*z8 +z11 = z2*z9 +z22 = z11^2^1 +z_5_0 = z9*z22 +z_10_5 = z_5_0^2^5 +z_10_0 = z_10_5*z_5_0 +z_20_10 = z_10_0^2^10 +z_20_0 = z_20_10*z_10_0 +z_40_20 = z_20_0^2^20 +z_40_0 = z_40_20*z_20_0 +z_50_10 = z_40_0^2^10 +z_50_0 = z_50_10*z_10_0 +z_100_50 = z_50_0^2^50 +z_100_0 = z_100_50*z_50_0 +z_200_100 = z_100_0^2^100 +z_200_0 = z_200_100*z_100_0 +z_250_50 = z_200_0^2^50 +z_250_0 = z_250_50*z_50_0 +z_255_5 = z_250_0^2^5 +z_255_21 = z_255_5*z11 + +return diff --git a/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/api.c b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/api.c new file mode 100644 index 0000000000..8fea2cd5a2 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/api.c @@ -0,0 +1,17 @@ +#include "crypto_pow.h" +#include "fe.h" +#include "fe51.h" + +void crypto_pow(unsigned char *q,const unsigned char *p) +{ + fe x; + fe51 x51; + fe_frombytes(x,p); + x51.v[0] = (x[1] << 26) + x[0]; + x51.v[1] = (x[3] << 26) + x[2]; + x51.v[2] = (x[5] << 26) + x[4]; + x51.v[3] = (x[7] << 26) + x[6]; + x51.v[4] = (x[9] << 26) + x[8]; + fe51_invert(&x51,&x51); + fe51_pack(q,&x51); +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/architectures b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/architectures new file mode 100644 index 0000000000..ab66fe594d --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/architectures @@ -0,0 +1 @@ +amd64 avx diff --git a/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/consts_namespace.h b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/consts_namespace.h new file mode 100644 index 0000000000..e0b035b975 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/consts_namespace.h @@ -0,0 +1,6 @@ +#ifndef CONSTS_NAMESPACE_H +#define CONSTS_NAMESPACE_H + +#define REDMASK51 CRYPTO_SHARED_NAMESPACE(REDMASK51) + +#endif //ifndef CONSTS_NAMESPACE_H diff --git a/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe.h b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe.h new file mode 100644 index 0000000000..e260585cc5 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe.h @@ -0,0 +1,25 @@ +/* + This file is adapted from ref10/fe.h: + All the redundant functions are removed. +*/ + +#ifndef FE_H +#define FE_H + +#include "crypto_uint64.h" + +typedef crypto_uint64 fe[10]; + +/* +fe means field element. +Here the field is \Z/(2^255-19). +An element t, entries t[0]...t[9], represents the integer +t[0]+2^26 t[1]+2^51 t[2]+2^77 t[3]+2^102 t[4]+...+2^230 t[9]. +Bounds on each t[i] vary depending on context. +*/ + +#define fe_frombytes CRYPTO_NAMESPACE(fe_frombytes) + +extern void fe_frombytes(fe, const unsigned char *); + +#endif diff --git a/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51.h b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51.h new file mode 100644 index 0000000000..a579f000a9 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51.h @@ -0,0 +1,25 @@ +/* + This file is adapted from amd64-51/fe25519.h: + 'fe25519' is renamed as 'fe51'; + All the redundant functions are removed; + New function fe51_nsquare is introduced. +*/ + +#ifndef FE51_H +#define FE51_H + +#include "crypto_uint64.h" +#include "fe51_namespace.h" + +typedef struct +{ + crypto_uint64 v[5]; +} +fe51; + +extern void fe51_pack(unsigned char *, const fe51 *); +extern void fe51_mul(fe51 *, const fe51 *, const fe51 *); +extern void fe51_nsquare(fe51 *, const fe51 *, int); +extern void fe51_invert(fe51 *, const fe51 *); + +#endif diff --git a/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_invert.c b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_invert.c new file mode 100644 index 0000000000..d82f60e70a --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_invert.c @@ -0,0 +1,57 @@ +// linker define fe51_invert +// linker use fe51_mul +// linker use fe51_nsquare + +/* + This file is adapted from amd64-51/fe25519_invert.c: + Loops of squares are replaced by nsquares for better performance. +*/ + +#include "fe51.h" + +#define fe51_square(x, y) fe51_nsquare(x, y, 1) + +void fe51_invert(fe51 *r, const fe51 *x) +{ + fe51 z2; + fe51 z9; + fe51 z11; + fe51 z2_5_0; + fe51 z2_10_0; + fe51 z2_20_0; + fe51 z2_50_0; + fe51 z2_100_0; + fe51 t; + + /* 2 */ fe51_square(&z2,x); + /* 4 */ fe51_square(&t,&z2); + /* 8 */ fe51_square(&t,&t); + /* 9 */ fe51_mul(&z9,&t,x); + /* 11 */ fe51_mul(&z11,&z9,&z2); + /* 22 */ fe51_square(&t,&z11); + /* 2^5 - 2^0 = 31 */ fe51_mul(&z2_5_0,&t,&z9); + + /* 2^10 - 2^5 */ fe51_nsquare(&t,&z2_5_0, 5); + /* 2^10 - 2^0 */ fe51_mul(&z2_10_0,&t,&z2_5_0); + + /* 2^20 - 2^10 */ fe51_nsquare(&t,&z2_10_0, 10); + /* 2^20 - 2^0 */ fe51_mul(&z2_20_0,&t,&z2_10_0); + + /* 2^40 - 2^20 */ fe51_nsquare(&t,&z2_20_0, 20); + /* 2^40 - 2^0 */ fe51_mul(&t,&t,&z2_20_0); + + /* 2^50 - 2^10 */ fe51_nsquare(&t,&t,10); + /* 2^50 - 2^0 */ fe51_mul(&z2_50_0,&t,&z2_10_0); + + /* 2^100 - 2^50 */ fe51_nsquare(&t,&z2_50_0, 50); + /* 2^100 - 2^0 */ fe51_mul(&z2_100_0,&t,&z2_50_0); + + /* 2^200 - 2^100 */ fe51_nsquare(&t,&z2_100_0, 100); + /* 2^200 - 2^0 */ fe51_mul(&t,&t,&z2_100_0); + + /* 2^250 - 2^50 */ fe51_nsquare(&t,&t, 50); + /* 2^250 - 2^0 */ fe51_mul(&t,&t,&z2_50_0); + + /* 2^255 - 2^5 */ fe51_nsquare(&t,&t,5); + /* 2^255 - 21 */ fe51_mul(r,&t,&z11); +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_mul.S b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_mul.S new file mode 100644 index 0000000000..0139cc56ec --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_mul.S @@ -0,0 +1,955 @@ +// linker define fe51_mul +// linker use REDMASK51 + +/* + This file is basically amd64-51/fe25519_mul.s. +*/ + +#include "fe51_namespace.h" +#include "consts_namespace.h" + +# qhasm: int64 rp + +# qhasm: int64 xp + +# qhasm: int64 yp + +# qhasm: input rp + +# qhasm: input xp + +# qhasm: input yp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 r4 + +# qhasm: int64 c1 + +# qhasm: int64 c2 + +# qhasm: int64 c3 + +# qhasm: int64 c4 + +# qhasm: int64 c5 + +# qhasm: int64 c6 + +# qhasm: int64 c7 + +# qhasm: caller c1 + +# qhasm: caller c2 + +# qhasm: caller c3 + +# qhasm: caller c4 + +# qhasm: caller c5 + +# qhasm: caller c6 + +# qhasm: caller c7 + +# qhasm: stack64 c1_stack + +# qhasm: stack64 c2_stack + +# qhasm: stack64 c3_stack + +# qhasm: stack64 c4_stack + +# qhasm: stack64 c5_stack + +# qhasm: stack64 c6_stack + +# qhasm: stack64 c7_stack + +# qhasm: stack64 x119_stack + +# qhasm: stack64 x219_stack + +# qhasm: stack64 x319_stack + +# qhasm: stack64 x419_stack + +# qhasm: stack64 rp_stack + +# qhasm: int64 mulr01 + +# qhasm: int64 mulr11 + +# qhasm: int64 mulr21 + +# qhasm: int64 mulr31 + +# qhasm: int64 mulr41 + +# qhasm: int64 mulrax + +# qhasm: int64 mulrdx + +# qhasm: int64 mult + +# qhasm: int64 mulredmask + +# qhasm: stack64 mulx219_stack + +# qhasm: stack64 mulx319_stack + +# qhasm: stack64 mulx419_stack + +# qhasm: enter fe51_mul +.text +.p2align 5 +.globl _fe51_mul +.globl fe51_mul +_fe51_mul: +fe51_mul: +mov %rsp,%r11 +and $31,%r11 +add $96,%r11 +sub %r11,%rsp + +# qhasm: c1_stack = c1 +# asm 1: movq c1_stack=stack64#1 +# asm 2: movq c1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: c2_stack = c2 +# asm 1: movq c2_stack=stack64#2 +# asm 2: movq c2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: c3_stack = c3 +# asm 1: movq c3_stack=stack64#3 +# asm 2: movq c3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: c4_stack = c4 +# asm 1: movq c4_stack=stack64#4 +# asm 2: movq c4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: c5_stack = c5 +# asm 1: movq c5_stack=stack64#5 +# asm 2: movq c5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: c6_stack = c6 +# asm 1: movq c6_stack=stack64#6 +# asm 2: movq c6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: c7_stack = c7 +# asm 1: movq c7_stack=stack64#7 +# asm 2: movq c7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: rp_stack = rp +# asm 1: movq rp_stack=stack64#8 +# asm 2: movq rp_stack=56(%rsp) +movq %rdi,56(%rsp) + +# qhasm: yp = yp +# asm 1: mov yp=int64#4 +# asm 2: mov yp=%rcx +mov %rdx,%rcx + +# qhasm: mulrax = *(uint64 *)(xp + 24) +# asm 1: movq 24(mulrax=int64#3 +# asm 2: movq 24(mulrax=%rdx +movq 24(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx319_stack = mulrax +# asm 1: movq mulx319_stack=stack64#9 +# asm 2: movq mulx319_stack=64(%rsp) +movq %rax,64(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(r0=int64#5 +# asm 2: mov r0=%r8 +mov %rax,%r8 + +# qhasm: mulr01 = mulrdx +# asm 1: mov mulr01=int64#6 +# asm 2: mov mulr01=%r9 +mov %rdx,%r9 + +# qhasm: mulrax = *(uint64 *)(xp + 32) +# asm 1: movq 32(mulrax=int64#3 +# asm 2: movq 32(mulrax=%rdx +movq 32(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: mulx419_stack = mulrax +# asm 1: movq mulx419_stack=stack64#10 +# asm 2: movq mulx419_stack=72(%rsp) +movq %rax,72(%rsp) + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(r1=int64#8 +# asm 2: mov r1=%r10 +mov %rax,%r10 + +# qhasm: mulr11 = mulrdx +# asm 1: mov mulr11=int64#9 +# asm 2: mov mulr11=%r11 +mov %rdx,%r11 + +# qhasm: mulrax = *(uint64 *)(xp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(r2=int64#10 +# asm 2: mov r2=%r12 +mov %rax,%r12 + +# qhasm: mulr21 = mulrdx +# asm 1: mov mulr21=int64#11 +# asm 2: mov mulr21=%r13 +mov %rdx,%r13 + +# qhasm: mulrax = *(uint64 *)(xp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(r3=int64#12 +# asm 2: mov r3=%r14 +mov %rax,%r14 + +# qhasm: mulr31 = mulrdx +# asm 1: mov mulr31=int64#13 +# asm 2: mov mulr31=%r15 +mov %rdx,%r15 + +# qhasm: mulrax = *(uint64 *)(xp + 0) +# asm 1: movq 0(mulrax=int64#7 +# asm 2: movq 0(mulrax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(r4=int64#14 +# asm 2: mov r4=%rbx +mov %rax,%rbx + +# qhasm: mulr41 = mulrdx +# asm 1: mov mulr41=int64#15 +# asm 2: mov mulr41=%rbp +mov %rdx,%rbp + +# qhasm: mulrax = *(uint64 *)(xp + 8) +# asm 1: movq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(mulrax=int64#7 +# asm 2: movq 8(mulrax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(mulrax=int64#3 +# asm 2: movq 8(mulrax=%rdx +movq 8(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq 16(mulrax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(mulrax=int64#3 +# asm 2: movq 16(mulrax=%rdx +movq 16(%rsi),%rdx + +# qhasm: mulrax *= 19 +# asm 1: imulq $19,mulrax=int64#7 +# asm 2: imulq $19,mulrax=%rax +imulq $19,%rdx,%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq 24(mulrax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(mulrax=int64#7 +# asm 2: movq 32(mulrax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(mulrax=int64#7 +# asm 2: movq mulrax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) mulrdx mulrax = mulrax * *(uint64 *)(yp + 32) +# asm 1: mulq 32(mulredmask=int64#2 +# asm 2: movq REDMASK51,>mulredmask=%rsi +movq REDMASK51(%rip),%rsi + +# qhasm: mulr01 = (mulr01.r0) << 13 +# asm 1: shld $13,mulr41=int64#3 +# asm 2: imulq $19,mulr41=%rdx +imulq $19,%rbp,%rdx + +# qhasm: r0 += mulr41 +# asm 1: add mult=int64#3 +# asm 2: mov mult=%rdx +mov %r8,%rdx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,r1=int64#4 +# asm 2: mov r1=%rcx +mov %rdx,%rcx + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,r2=int64#6 +# asm 2: mov r2=%r9 +mov %rdx,%r9 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,r3=int64#7 +# asm 2: mov r3=%rax +mov %rdx,%rax + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,r4=int64#8 +# asm 2: mov r4=%r10 +mov %rdx,%r10 + +# qhasm: (uint64) mult >>= 51 +# asm 1: shr $51,mult=int64#3 +# asm 2: imulq $19,mult=%rdx +imulq $19,%rdx,%rdx + +# qhasm: r0 += mult +# asm 1: add c1=int64#9 +# asm 2: movq c1=%r11 +movq 0(%rsp),%r11 + +# qhasm: c2 =c2_stack +# asm 1: movq c2=int64#10 +# asm 2: movq c2=%r12 +movq 8(%rsp),%r12 + +# qhasm: c3 =c3_stack +# asm 1: movq c3=int64#11 +# asm 2: movq c3=%r13 +movq 16(%rsp),%r13 + +# qhasm: c4 =c4_stack +# asm 1: movq c4=int64#12 +# asm 2: movq c4=%r14 +movq 24(%rsp),%r14 + +# qhasm: c5 =c5_stack +# asm 1: movq c5=int64#13 +# asm 2: movq c5=%r15 +movq 32(%rsp),%r15 + +# qhasm: c6 =c6_stack +# asm 1: movq c6=int64#14 +# asm 2: movq c6=%rbx +movq 40(%rsp),%rbx + +# qhasm: c7 =c7_stack +# asm 1: movq c7=int64#15 +# asm 2: movq c7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_namespace.h b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_namespace.h new file mode 100644 index 0000000000..3419ecd02f --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_namespace.h @@ -0,0 +1,16 @@ +#ifndef FE51_NAMESPACE_H +#define FE51_NAMESPACE_H + +#define fe51 CRYPTO_SHARED_NAMESPACE(fe51) +#define _fe51 _CRYPTO_SHARED_NAMESPACE(fe51) +#define fe51_pack CRYPTO_SHARED_NAMESPACE(fe51_pack) +#define _fe51_pack _CRYPTO_SHARED_NAMESPACE(fe51_pack) +#define fe51_mul CRYPTO_SHARED_NAMESPACE(fe51_mul) +#define _fe51_mul _CRYPTO_SHARED_NAMESPACE(fe51_mul) +#define fe51_nsquare CRYPTO_SHARED_NAMESPACE(fe51_nsquare) +#define _fe51_nsquare _CRYPTO_SHARED_NAMESPACE(fe51_nsquare) + +#define fe51_invert CRYPTO_NAMESPACE(fe51_invert) + +#endif //ifndef FE51_NAMESPACE_H + diff --git a/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_nsquare.S b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_nsquare.S new file mode 100644 index 0000000000..ae49da45db --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_nsquare.S @@ -0,0 +1,804 @@ +// linker define fe51_nsquare +// linker use REDMASK51 + +/* + This file is adapted from amd64-51/fe25519_square.s: + Adding loop to perform n squares. +*/ + +#include "fe51_namespace.h" +#include "consts_namespace.h" + +# qhasm: int64 input_0 + +# qhasm: int64 input_1 + +# qhasm: int64 input_2 + +# qhasm: int64 input_3 + +# qhasm: int64 input_4 + +# qhasm: int64 input_5 + +# qhasm: stack64 input_6 + +# qhasm: stack64 input_7 + +# qhasm: int64 caller_r11 + +# qhasm: int64 caller_r12 + +# qhasm: int64 caller_r13 + +# qhasm: int64 caller_r14 + +# qhasm: int64 caller_r15 + +# qhasm: int64 caller_rbx + +# qhasm: int64 caller_rbp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 r4 + +# qhasm: int64 x0 + +# qhasm: int64 x1 + +# qhasm: int64 x2 + +# qhasm: int64 x3 + +# qhasm: int64 x4 + +# qhasm: stack64 x119_stack + +# qhasm: stack64 x219_stack + +# qhasm: stack64 x319_stack + +# qhasm: stack64 x419_stack + +# qhasm: int64 squarer01 + +# qhasm: int64 squarer11 + +# qhasm: int64 squarer21 + +# qhasm: int64 squarer31 + +# qhasm: int64 squarer41 + +# qhasm: int64 squarerax + +# qhasm: int64 squarerdx + +# qhasm: int64 squaret + +# qhasm: int64 squareredmask + +# qhasm: int64 iters + +# qhasm: stack64 r11_stack + +# qhasm: stack64 r12_stack + +# qhasm: stack64 r13_stack + +# qhasm: stack64 r14_stack + +# qhasm: stack64 r15_stack + +# qhasm: stack64 rbx_stack + +# qhasm: stack64 rbp_stack + +# qhasm: enter fe51_nsquare +.p2align 5 +.global _fe51_nsquare +.global fe51_nsquare +_fe51_nsquare: +fe51_nsquare: +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp + +# qhasm: r11_stack = caller_r11 +# asm 1: movq r11_stack=stack64#1 +# asm 2: movq r11_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: r12_stack = caller_r12 +# asm 1: movq r12_stack=stack64#2 +# asm 2: movq r12_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: r13_stack = caller_r13 +# asm 1: movq r13_stack=stack64#3 +# asm 2: movq r13_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: r14_stack = caller_r14 +# asm 1: movq r14_stack=stack64#4 +# asm 2: movq r14_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: r15_stack = caller_r15 +# asm 1: movq r15_stack=stack64#5 +# asm 2: movq r15_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: rbx_stack = caller_rbx +# asm 1: movq rbx_stack=stack64#6 +# asm 2: movq rbx_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: rbp_stack = caller_rbp +# asm 1: movq rbp_stack=stack64#7 +# asm 2: movq rbp_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: x0 = *(uint64 *)(input_1 + 0) +# asm 1: movq 0(x0=int64#4 +# asm 2: movq 0(x0=%rcx +movq 0(%rsi),%rcx + +# qhasm: x1 = *(uint64 *)(input_1 + 8) +# asm 1: movq 8(x1=int64#5 +# asm 2: movq 8(x1=%r8 +movq 8(%rsi),%r8 + +# qhasm: x2 = *(uint64 *)(input_1 + 16) +# asm 1: movq 16(x2=int64#6 +# asm 2: movq 16(x2=%r9 +movq 16(%rsi),%r9 + +# qhasm: x3 = *(uint64 *)(input_1 + 24) +# asm 1: movq 24(x3=int64#7 +# asm 2: movq 24(x3=%rax +movq 24(%rsi),%rax + +# qhasm: x4 = *(uint64 *)(input_1 + 32) +# asm 1: movq 32(x4=int64#2 +# asm 2: movq 32(x4=%rsi +movq 32(%rsi),%rsi + +# qhasm: *(uint64 *)(input_0 + 16) = x2 +# asm 1: movq iters=int64#2 +# asm 2: mov iters=%rsi +mov %rdx,%rsi + +# qhasm: loop: +._loop: + +# qhasm: iters -= 1 +# asm 1: sub $1,squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rcx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * x0 +# asm 1: mul r0=int64#6 +# asm 2: mov r0=%r9 +mov %rax,%r9 + +# qhasm: squarer01 = squarerdx +# asm 1: mov squarer01=int64#8 +# asm 2: mov squarer01=%r10 +mov %rdx,%r10 + +# qhasm: squarerax = x0 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rcx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * x1 +# asm 1: mul r1=int64#9 +# asm 2: mov r1=%r11 +mov %rax,%r11 + +# qhasm: squarer11 = squarerdx +# asm 1: mov squarer11=int64#10 +# asm 2: mov squarer11=%r12 +mov %rdx,%r12 + +# qhasm: squarerax = x0 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rcx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(input_0 + 16) +# asm 1: mulq 16(r2=int64#11 +# asm 2: mov r2=%r13 +mov %rax,%r13 + +# qhasm: squarer21 = squarerdx +# asm 1: mov squarer21=int64#12 +# asm 2: mov squarer21=%r14 +mov %rdx,%r14 + +# qhasm: squarerax = x0 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rcx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(input_0 + 24) +# asm 1: mulq 24(r3=int64#13 +# asm 2: mov r3=%r15 +mov %rax,%r15 + +# qhasm: squarer31 = squarerdx +# asm 1: mov squarer31=int64#14 +# asm 2: mov squarer31=%rbx +mov %rdx,%rbx + +# qhasm: squarerax = x0 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %rcx,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(input_0 + 32) +# asm 1: mulq 32(r4=int64#4 +# asm 2: mov r4=%rcx +mov %rax,%rcx + +# qhasm: squarer41 = squarerdx +# asm 1: mov squarer41=int64#15 +# asm 2: mov squarer41=%rbp +mov %rdx,%rbp + +# qhasm: squarerax = x1 +# asm 1: mov squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r8,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * x1 +# asm 1: mul squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r8,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(input_0 + 16) +# asm 1: mulq 16(squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r8,%rax + +# qhasm: x1 *= 19 +# asm 1: imulq $19, squarerax=int64#7 +# asm 2: mov squarerax=%rax +mov %r8,%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(input_0 + 32) +# asm 1: mulq 32(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rdi),%rax + +# qhasm: (uint128) squarerdx squarerax = squarerax * *(uint64 *)(input_0 + 16) +# asm 1: mulq 16(squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rdi),%rax + +# qhasm: squarerax *= 38 +# asm 1: imulq $38, squarerax=int64#7 +# asm 2: movq 16(squarerax=%rax +movq 16(%rdi),%rax + +# qhasm: squarerax *= 38 +# asm 1: imulq $38, squarerax=int64#7 +# asm 2: movq 24(squarerax=%rax +movq 24(%rdi),%rax + +# qhasm: squarerax *= 19 +# asm 1: imulq $19, squarerax=int64#7 +# asm 2: movq 24(squarerax=%rax +movq 24(%rdi),%rax + +# qhasm: squarerax *= 38 +# asm 1: imulq $38, squarerax=int64#7 +# asm 2: movq 32(squarerax=%rax +movq 32(%rdi),%rax + +# qhasm: squarerax *= 19 +# asm 1: imulq $19, squareredmask=int64#3 +# asm 2: movq REDMASK51,>squareredmask=%rdx +movq REDMASK51(%rip),%rdx + +# qhasm: r4 &= squareredmask +# asm 1: and squaret=int64#6 +# asm 2: lea (squaret=%r9 +lea (%r9,%rbp),%r9 + +# qhasm: r0 = squaret +# asm 1: mov r0=int64#7 +# asm 2: mov r0=%rax +mov %r9,%rax + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,x1=int64#5 +# asm 2: mov x1=%r8 +mov %r9,%r8 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r2=int64#8 +# asm 2: mov r2=%r10 +mov %r9,%r10 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r3=int64#8 +# asm 2: mov r3=%r10 +mov %r9,%r10 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,r4=int64#8 +# asm 2: mov r4=%r10 +mov %r9,%r10 + +# qhasm: (uint64) squaret >>= 51 +# asm 1: shr $51,x0=int64#4 +# asm 2: lea (x0=%rcx +lea (%rax,%r9),%rcx + +# qhasm: r4 &= squareredmask +# asm 1: and caller_r11=int64#9 +# asm 2: movq caller_r11=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller_r12 = r12_stack +# asm 1: movq caller_r12=int64#10 +# asm 2: movq caller_r12=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller_r13 = r13_stack +# asm 1: movq caller_r13=int64#11 +# asm 2: movq caller_r13=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller_r14 = r14_stack +# asm 1: movq caller_r14=int64#12 +# asm 2: movq caller_r14=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller_r15 = r15_stack +# asm 1: movq caller_r15=int64#13 +# asm 2: movq caller_r15=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller_rbx = rbx_stack +# asm 1: movq caller_rbx=int64#14 +# asm 2: movq caller_rbx=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller_rbp = rbp_stack +# asm 1: movq caller_rbp=int64#15 +# asm 2: movq caller_rbp=%rbp +movq 48(%rsp),%rbp + +# qhasm: return +add %r11,%rsp +ret diff --git a/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_pack.S b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_pack.S new file mode 100644 index 0000000000..cc89a125cf --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe51_pack.S @@ -0,0 +1,1046 @@ +// linker define fe51_pack +// linker use REDMASK51 + +/* + This file is the result of merging + amd64-51/fe25519_pack.c and amd64-51/fe25519_freeze.s. +*/ + +#include "fe51_namespace.h" +#include "consts_namespace.h" + +# qhasm: int64 input_0 + +# qhasm: int64 input_1 + +# qhasm: int64 input_2 + +# qhasm: int64 input_3 + +# qhasm: int64 input_4 + +# qhasm: int64 input_5 + +# qhasm: stack64 input_6 + +# qhasm: stack64 input_7 + +# qhasm: int64 caller_r11 + +# qhasm: int64 caller_r12 + +# qhasm: int64 caller_r13 + +# qhasm: int64 caller_r14 + +# qhasm: int64 caller_r15 + +# qhasm: int64 caller_rbx + +# qhasm: int64 caller_rbp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 r4 + +# qhasm: int64 t + +# qhasm: int64 s + +# qhasm: int64 loop + +# qhasm: int64 two51minus1 + +# qhasm: int64 two51minus19 + +# qhasm: stack64 r11_stack + +# qhasm: stack64 r12_stack + +# qhasm: stack64 r13_stack + +# qhasm: stack64 r14_stack + +# qhasm: stack64 r15_stack + +# qhasm: stack64 rbx_stack + +# qhasm: stack64 rbp_stack + +# qhasm: enter fe51_pack +.p2align 5 +.global _fe51_pack +.global fe51_pack +_fe51_pack: +fe51_pack: +mov %rsp,%r11 +and $31,%r11 +add $32,%r11 +sub %r11,%rsp + +# qhasm: r11_stack = caller_r11 +# asm 1: movq r11_stack=stack64#1 +# asm 2: movq r11_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: r12_stack = caller_r12 +# asm 1: movq r12_stack=stack64#2 +# asm 2: movq r12_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: r0 = *(uint64 *) (input_1 + 0) +# asm 1: movq 0(r0=int64#3 +# asm 2: movq 0(r0=%rdx +movq 0(%rsi),%rdx + +# qhasm: r1 = *(uint64 *) (input_1 + 8) +# asm 1: movq 8(r1=int64#4 +# asm 2: movq 8(r1=%rcx +movq 8(%rsi),%rcx + +# qhasm: r2 = *(uint64 *) (input_1 + 16) +# asm 1: movq 16(r2=int64#5 +# asm 2: movq 16(r2=%r8 +movq 16(%rsi),%r8 + +# qhasm: r3 = *(uint64 *) (input_1 + 24) +# asm 1: movq 24(r3=int64#6 +# asm 2: movq 24(r3=%r9 +movq 24(%rsi),%r9 + +# qhasm: r4 = *(uint64 *) (input_1 + 32) +# asm 1: movq 32(r4=int64#2 +# asm 2: movq 32(r4=%rsi +movq 32(%rsi),%rsi + +# qhasm: two51minus1 = *(uint64 *) &REDMASK51 +# asm 1: movq REDMASK51,>two51minus1=int64#7 +# asm 2: movq REDMASK51,>two51minus1=%rax +movq REDMASK51(%rip),%rax + +# qhasm: two51minus19 = two51minus1 - 18 +# asm 1: lea -18(two51minus19=int64#8 +# asm 2: lea -18(two51minus19=%r10 +lea -18(%rax),%r10 + +# qhasm: loop = 3 +# asm 1: mov $3,>loop=int64#9 +# asm 2: mov $3,>loop=%r11 +mov $3,%r11 + +# qhasm: reduceloop: +._reduceloop: + +# qhasm: t = r0 +# asm 1: mov t=int64#10 +# asm 2: mov t=%r12 +mov %rdx,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,t=int64#10 +# asm 2: mov t=%r12 +mov %rcx,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,t=int64#10 +# asm 2: mov t=%r12 +mov %r8,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,t=int64#10 +# asm 2: mov t=%r12 +mov %r9,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,t=int64#10 +# asm 2: mov t=%r12 +mov %rsi,%r12 + +# qhasm: (uint64) t >>= 51 +# asm 1: shr $51,? loop -= 1 +# asm 1: sub $1, +ja ._reduceloop + +# qhasm: t = 1 +# asm 1: mov $1,>t=int64#10 +# asm 2: mov $1,>t=%r12 +mov $1,%r12 + +# qhasm: signedt=int64#7 +# asm 2: mov t=%rax +mov %rdx,%rax + +# qhasm: (uint32) t &= 0xFF +# asm 1: and $0xFF,t=int64#7 +# asm 2: mov t=%rax +mov %rdx,%rax + +# qhasm: (uint64) t >>= 8 +# asm 1: shr $8,t=int64#7 +# asm 2: mov t=%rax +mov %rdx,%rax + +# qhasm: (uint64) t >>= 16 +# asm 1: shr $16,t=int64#7 +# asm 2: mov t=%rax +mov %rdx,%rax + +# qhasm: (uint64) t >>= 24 +# asm 1: shr $24,t=int64#7 +# asm 2: mov t=%rax +mov %rdx,%rax + +# qhasm: (uint64) t >>= 32 +# asm 1: shr $32,t=int64#7 +# asm 2: mov t=%rax +mov %rdx,%rax + +# qhasm: (uint64) t >>= 40 +# asm 1: shr $40,s=int64#3 +# asm 2: mov s=%rdx +mov %rdx,%rdx + +# qhasm: (uint64) s >>= 48 +# asm 1: shr $48,t=int64#7 +# asm 2: mov t=%rax +mov %rcx,%rax + +# qhasm: t <<= 3 +# asm 1: shl $3,t=int64#3 +# asm 2: mov t=%rdx +mov %rcx,%rdx + +# qhasm: (uint64) t >>= 5 +# asm 1: shr $5,t=int64#3 +# asm 2: mov t=%rdx +mov %rcx,%rdx + +# qhasm: (uint64) t >>= 13 +# asm 1: shr $13,t=int64#3 +# asm 2: mov t=%rdx +mov %rcx,%rdx + +# qhasm: (uint64) t >>= 21 +# asm 1: shr $21,t=int64#3 +# asm 2: mov t=%rdx +mov %rcx,%rdx + +# qhasm: (uint64) t >>= 29 +# asm 1: shr $29,t=int64#3 +# asm 2: mov t=%rdx +mov %rcx,%rdx + +# qhasm: (uint64) t >>= 37 +# asm 1: shr $37,s=int64#3 +# asm 2: mov s=%rdx +mov %rcx,%rdx + +# qhasm: (uint64) s >>= 45 +# asm 1: shr $45,t=int64#4 +# asm 2: mov t=%rcx +mov %r8,%rcx + +# qhasm: t <<= 6 +# asm 1: shl $6,t=int64#3 +# asm 2: mov t=%rdx +mov %r8,%rdx + +# qhasm: (uint64) t >>= 2 +# asm 1: shr $2,t=int64#3 +# asm 2: mov t=%rdx +mov %r8,%rdx + +# qhasm: (uint64) t >>= 10 +# asm 1: shr $10,t=int64#3 +# asm 2: mov t=%rdx +mov %r8,%rdx + +# qhasm: (uint64) t >>= 18 +# asm 1: shr $18,t=int64#3 +# asm 2: mov t=%rdx +mov %r8,%rdx + +# qhasm: (uint64) t >>= 26 +# asm 1: shr $26,t=int64#3 +# asm 2: mov t=%rdx +mov %r8,%rdx + +# qhasm: (uint64) t >>= 34 +# asm 1: shr $34,t=int64#3 +# asm 2: mov t=%rdx +mov %r8,%rdx + +# qhasm: (uint64) t >>= 42 +# asm 1: shr $42,s=int64#3 +# asm 2: mov s=%rdx +mov %r8,%rdx + +# qhasm: (uint64) s >>= 50 +# asm 1: shr $50,t=int64#4 +# asm 2: mov t=%rcx +mov %r9,%rcx + +# qhasm: t <<= 1 +# asm 1: shl $1,t=int64#3 +# asm 2: mov t=%rdx +mov %r9,%rdx + +# qhasm: (uint64) t >>= 7 +# asm 1: shr $7,t=int64#3 +# asm 2: mov t=%rdx +mov %r9,%rdx + +# qhasm: (uint64) t >>= 15 +# asm 1: shr $15,t=int64#3 +# asm 2: mov t=%rdx +mov %r9,%rdx + +# qhasm: (uint64) t >>= 23 +# asm 1: shr $23,t=int64#3 +# asm 2: mov t=%rdx +mov %r9,%rdx + +# qhasm: (uint64) t >>= 31 +# asm 1: shr $31,t=int64#3 +# asm 2: mov t=%rdx +mov %r9,%rdx + +# qhasm: (uint64) t >>= 39 +# asm 1: shr $39,s=int64#3 +# asm 2: mov s=%rdx +mov %r9,%rdx + +# qhasm: (uint64) s >>= 47 +# asm 1: shr $47,t=int64#4 +# asm 2: mov t=%rcx +mov %rsi,%rcx + +# qhasm: t <<= 4 +# asm 1: shl $4,t=int64#3 +# asm 2: mov t=%rdx +mov %rsi,%rdx + +# qhasm: (uint64) t >>= 4 +# asm 1: shr $4,t=int64#3 +# asm 2: mov t=%rdx +mov %rsi,%rdx + +# qhasm: (uint64) t >>= 12 +# asm 1: shr $12,t=int64#3 +# asm 2: mov t=%rdx +mov %rsi,%rdx + +# qhasm: (uint64) t >>= 20 +# asm 1: shr $20,t=int64#3 +# asm 2: mov t=%rdx +mov %rsi,%rdx + +# qhasm: (uint64) t >>= 28 +# asm 1: shr $28,t=int64#3 +# asm 2: mov t=%rdx +mov %rsi,%rdx + +# qhasm: (uint64) t >>= 36 +# asm 1: shr $36,t=int64#2 +# asm 2: mov t=%rsi +mov %rsi,%rsi + +# qhasm: (uint64) t >>= 44 +# asm 1: shr $44,caller_r11=int64#9 +# asm 2: movq caller_r11=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller_r12 = r12_stack +# asm 1: movq caller_r12=int64#10 +# asm 2: movq caller_r12=%r12 +movq 8(%rsp),%r12 + +# qhasm: return +add %r11,%rsp +ret diff --git a/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe_frombytes.c b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe_frombytes.c new file mode 100644 index 0000000000..40e7574ec7 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/fe_frombytes.c @@ -0,0 +1,74 @@ +// linker define fe_frombytes + +/* + This file is basically ref10/fe_frombytes.h. +*/ + +#include "fe.h" +#include "crypto_uint64.h" + +static crypto_uint64 load_3(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + return result; +} + +static crypto_uint64 load_4(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + result |= ((crypto_uint64) in[3]) << 24; + return result; +} + +void fe_frombytes(fe h,const unsigned char *s) +{ + crypto_uint64 h0 = load_4(s); + crypto_uint64 h1 = load_3(s + 4) << 6; + crypto_uint64 h2 = load_3(s + 7) << 5; + crypto_uint64 h3 = load_3(s + 10) << 3; + crypto_uint64 h4 = load_3(s + 13) << 2; + crypto_uint64 h5 = load_4(s + 16); + crypto_uint64 h6 = load_3(s + 20) << 7; + crypto_uint64 h7 = load_3(s + 23) << 5; + crypto_uint64 h8 = load_3(s + 26) << 4; + crypto_uint64 h9 = (load_3(s + 29) & 8388607) << 2; + crypto_uint64 carry0; + crypto_uint64 carry1; + crypto_uint64 carry2; + crypto_uint64 carry3; + crypto_uint64 carry4; + crypto_uint64 carry5; + crypto_uint64 carry6; + crypto_uint64 carry7; + crypto_uint64 carry8; + crypto_uint64 carry9; + + carry9 = h9 >> 25; h0 += carry9 * 19; h9 &= 0x1FFFFFF; + carry1 = h1 >> 25; h2 += carry1; h1 &= 0x1FFFFFF; + carry3 = h3 >> 25; h4 += carry3; h3 &= 0x1FFFFFF; + carry5 = h5 >> 25; h6 += carry5; h5 &= 0x1FFFFFF; + carry7 = h7 >> 25; h8 += carry7; h7 &= 0x1FFFFFF; + + carry0 = h0 >> 26; h1 += carry0; h0 &= 0x3FFFFFF; + carry2 = h2 >> 26; h3 += carry2; h2 &= 0x3FFFFFF; + carry4 = h4 >> 26; h5 += carry4; h4 &= 0x3FFFFFF; + carry6 = h6 >> 26; h7 += carry6; h6 &= 0x3FFFFFF; + carry8 = h8 >> 26; h9 += carry8; h8 &= 0x3FFFFFF; + + h[0] = h0; + h[1] = h1; + h[2] = h2; + h[3] = h3; + h[4] = h4; + h[5] = h5; + h[6] = h6; + h[7] = h7; + h[8] = h8; + h[9] = h9; +} diff --git a/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/implementors b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/implementors new file mode 100644 index 0000000000..757e33743d --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/implementors @@ -0,0 +1 @@ +Tung Chou diff --git a/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/shared-consts.c b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/shared-consts.c new file mode 100644 index 0000000000..2910f13ae2 --- /dev/null +++ b/lib-25519/lib25519/crypto_pow/inv25519/sandy2x/shared-consts.c @@ -0,0 +1,6 @@ +// linker define REDMASK51 + +#include "consts_namespace.h" +#include "crypto_uint64.h" + +const crypto_uint64 REDMASK51[] = { 0x0007FFFFFFFFFFFF }; diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/architectures b/lib-25519/lib25519/crypto_sign/ed25519/amd64/architectures new file mode 100644 index 0000000000..21d5bd8c7f --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/architectures @@ -0,0 +1 @@ +amd64 diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/hram.c b/lib-25519/lib25519/crypto_sign/ed25519/amd64/hram.c new file mode 100644 index 0000000000..2c6f57363e --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/hram.c @@ -0,0 +1,15 @@ +// linker define get_hram + +#include "crypto_hash_sha512.h" +#include "hram.h" + +void get_hram(unsigned char *hram, const unsigned char *sm, const unsigned char *pk, unsigned char *playground, unsigned long long smlen) +{ + unsigned long long i; + + for (i = 0;i < 32;++i) playground[i] = sm[i]; + for (i = 32;i < 64;++i) playground[i] = pk[i-32]; + for (i = 64;i < smlen;++i) playground[i] = sm[i]; + + crypto_hash_sha512(hram,playground,smlen); +} diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/hram.h b/lib-25519/lib25519/crypto_sign/ed25519/amd64/hram.h new file mode 100644 index 0000000000..c2a151f345 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/hram.h @@ -0,0 +1,8 @@ +#ifndef HRAM_H +#define HRAM_H + +#define get_hram CRYPTO_NAMESPACE(get_hram) + +extern void get_hram(unsigned char *hram, const unsigned char *sm, const unsigned char *pk, unsigned char *playground, unsigned long long smlen); + +#endif diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/keypair.c b/lib-25519/lib25519/crypto_sign/ed25519/amd64/keypair.c new file mode 100644 index 0000000000..df5bb25ba7 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/keypair.c @@ -0,0 +1,19 @@ +#include +#include "randombytes.h" +#include "crypto_sign.h" +#include "crypto_hash_sha512.h" +#include "crypto_nG_merged25519.h" + +void crypto_sign_keypair(unsigned char *pk,unsigned char *sk) +{ + unsigned char az[64]; + + randombytes(sk,32); + crypto_hash_sha512(az,sk,32); + az[0] &= 248; + az[31] &= 63; + az[31] |= 64; + + crypto_nG_merged25519(pk,az); + memmove(sk + 32,pk,32); +} diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/open.c b/lib-25519/lib25519/crypto_sign/ed25519/amd64/open.c new file mode 100644 index 0000000000..66ad988475 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/open.c @@ -0,0 +1,43 @@ +#include +#include "crypto_sign.h" +#include "crypto_verify_32.h" +#include "crypto_hash_sha512.h" +#include "crypto_mGnP_ed25519.h" + +int crypto_sign_open( + unsigned char *m,long long *mlen, + const unsigned char *sm,long long smlen, + const unsigned char *pk + ) +{ + unsigned char Acopy[32]; + unsigned char Rcopy[32]; + unsigned char Scopy[32]; + unsigned char hram[64]; + unsigned char Rcheck[33]; + + if (smlen < 64) goto badsig; + if (sm[63] & 224) goto badsig; + + memmove(Acopy,pk,32); + memmove(Rcopy,sm,32); + memmove(Scopy,sm+32,32); + + memmove(m,sm,smlen); + memmove(m+32,Acopy,32); + crypto_hash_sha512(hram,m,smlen); + crypto_mGnP_ed25519(Rcheck,Scopy,hram,Acopy); + if (Rcheck[32] != 1) goto badsig; + + if (crypto_verify_32(Rcopy,Rcheck) == 0) { + memmove(m,m+64,smlen-64); + memset(m+smlen-64,0,64); + *mlen = smlen-64; + return 0; + } + +badsig: + *mlen = (unsigned long long) -1; + memset(m,0,smlen); + return -1; +} diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519.h b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519.h new file mode 100644 index 0000000000..30c72c7cb9 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519.h @@ -0,0 +1,66 @@ +#ifndef SC25519_H +#define SC25519_H + +#define sc25519 CRYPTO_NAMESPACE(sc25519) +#define shortsc25519 CRYPTO_NAMESPACE(shortsc25519) +#define sc25519_from32bytes CRYPTO_NAMESPACE(sc25519_from32bytes) +#define shortsc25519_from16bytes CRYPTO_NAMESPACE(shortsc25519_from16bytes) +#define sc25519_from64bytes CRYPTO_NAMESPACE(sc25519_from64bytes) +#define sc25519_from_shortsc CRYPTO_NAMESPACE(sc25519_from_shortsc) +#define sc25519_to32bytes CRYPTO_NAMESPACE(sc25519_to32bytes) +#define sc25519_iszero_vartime CRYPTO_NAMESPACE(sc25519_iszero_vartime) +#define sc25519_isshort_vartime CRYPTO_NAMESPACE(sc25519_isshort_vartime) +#define sc25519_lt CRYPTO_SHARED_NAMESPACE(sc25519_lt) +#define sc25519_add CRYPTO_SHARED_NAMESPACE(sc25519_add) +#define sc25519_sub_nored CRYPTO_SHARED_NAMESPACE(sc25519_sub_nored) +#define sc25519_mul CRYPTO_NAMESPACE(sc25519_mul) +#define sc25519_mul_shortsc CRYPTO_NAMESPACE(sc25519_mul_shortsc) +#define sc25519_window4 CRYPTO_NAMESPACE(sc25519_window4) +#define sc25519_slide CRYPTO_NAMESPACE(sc25519_slide) +#define sc25519_2interleave2 CRYPTO_NAMESPACE(sc25519_2interleave2) +#define sc25519_barrett CRYPTO_SHARED_NAMESPACE(sc25519_barrett) + +typedef struct +{ + unsigned long long v[4]; +} +sc25519; + +typedef struct +{ + unsigned long long v[2]; +} +shortsc25519; + +void sc25519_from32bytes(sc25519 *r, const unsigned char x[32]); + +void sc25519_from64bytes(sc25519 *r, const unsigned char x[64]); + +void sc25519_from_shortsc(sc25519 *r, const shortsc25519 *x); + +void sc25519_to32bytes(unsigned char r[32], const sc25519 *x); + +int sc25519_iszero_vartime(const sc25519 *x); + +int sc25519_lt(const sc25519 *x, const sc25519 *y); + +void sc25519_add(sc25519 *r, const sc25519 *x, const sc25519 *y); + +void sc25519_sub_nored(sc25519 *r, const sc25519 *x, const sc25519 *y); + +void sc25519_mul(sc25519 *r, const sc25519 *x, const sc25519 *y); + +void sc25519_mul_shortsc(sc25519 *r, const sc25519 *x, const shortsc25519 *y); + +/* Convert s into a representation of the form \sum_{i=0}^{63}r[i]2^(4*i) + * with r[i] in {-8,...,7} + */ +void sc25519_window4(signed char r[64], const sc25519 *s); + +void sc25519_slide(signed char r[256], const sc25519 *s, int swindowsize); + +void sc25519_2interleave2(unsigned char r[127], const sc25519 *s1, const sc25519 *s2); + +void sc25519_barrett(sc25519 *r, unsigned long long x[8]); + +#endif diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_add.S b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_add.S new file mode 100644 index 0000000000..c766fbe70c --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_add.S @@ -0,0 +1,237 @@ +// linker define sc25519_add +// linker use ORDER0 +// linker use ORDER1 +// linker use ORDER2 +// linker use ORDER3 + +# qhasm: int64 rp + +# qhasm: int64 xp + +# qhasm: int64 yp + +# qhasm: input rp + +# qhasm: input xp + +# qhasm: input yp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 t0 + +# qhasm: int64 t1 + +# qhasm: int64 t2 + +# qhasm: int64 t3 + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(sc25519_add) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(sc25519_add) +.globl CRYPTO_SHARED_NAMESPACE(sc25519_add) +_CRYPTO_SHARED_NAMESPACE(sc25519_add): +CRYPTO_SHARED_NAMESPACE(sc25519_add): +mov %rsp,%r11 +and $31,%r11 +add $32,%r11 +sub %r11,%rsp + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#1 +# asm 2: movq caller4_stack=0(%rsp) +movq %r14,0(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#2 +# asm 2: movq caller5_stack=8(%rsp) +movq %r15,8(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#3 +# asm 2: movq caller6_stack=16(%rsp) +movq %rbx,16(%rsp) + +# qhasm: r0 = *(uint64 *)(xp + 0) +# asm 1: movq 0(r0=int64#4 +# asm 2: movq 0(r0=%rcx +movq 0(%rsi),%rcx + +# qhasm: r1 = *(uint64 *)(xp + 8) +# asm 1: movq 8(r1=int64#5 +# asm 2: movq 8(r1=%r8 +movq 8(%rsi),%r8 + +# qhasm: r2 = *(uint64 *)(xp + 16) +# asm 1: movq 16(r2=int64#6 +# asm 2: movq 16(r2=%r9 +movq 16(%rsi),%r9 + +# qhasm: r3 = *(uint64 *)(xp + 24) +# asm 1: movq 24(r3=int64#2 +# asm 2: movq 24(r3=%rsi +movq 24(%rsi),%rsi + +# qhasm: carry? r0 += *(uint64 *)(yp + 0) +# asm 1: addq 0(t0=int64#3 +# asm 2: mov t0=%rdx +mov %rcx,%rdx + +# qhasm: t1 = r1 +# asm 1: mov t1=int64#7 +# asm 2: mov t1=%rax +mov %r8,%rax + +# qhasm: t2 = r2 +# asm 1: mov t2=int64#8 +# asm 2: mov t2=%r10 +mov %r9,%r10 + +# qhasm: t3 = r3 +# asm 1: mov t3=int64#12 +# asm 2: mov t3=%r14 +mov %rsi,%r14 + +# qhasm: carry? t0 -= *(uint64 *) &CRYPTO_SHARED_NAMESPACE(ORDER0) +# asm 1: sub CRYPTO_SHARED_NAMESPACE(ORDER0),caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 0(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 8(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 16(%rsp),%rbx + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_barrett.S b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_barrett.S new file mode 100644 index 0000000000..9b690ddb52 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_barrett.S @@ -0,0 +1,1198 @@ +// linker define sc25519_barrett +// linker use MU0 +// linker use MU1 +// linker use MU2 +// linker use MU3 +// linker use MU4 +// linker use ORDER0 +// linker use ORDER1 +// linker use ORDER2 +// linker use ORDER3 + +# qhasm: int64 rp + +# qhasm: int64 xp + +# qhasm: input rp + +# qhasm: input xp + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: int64 q23 + +# qhasm: int64 q24 + +# qhasm: int64 q30 + +# qhasm: int64 q31 + +# qhasm: int64 q32 + +# qhasm: int64 q33 + +# qhasm: int64 r20 + +# qhasm: int64 r21 + +# qhasm: int64 r22 + +# qhasm: int64 r23 + +# qhasm: int64 r24 + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 t0 + +# qhasm: int64 t1 + +# qhasm: int64 t2 + +# qhasm: int64 t3 + +# qhasm: int64 rax + +# qhasm: int64 rdx + +# qhasm: int64 c + +# qhasm: int64 zero + +# qhasm: int64 mask + +# qhasm: int64 nmask + +# qhasm: stack64 q30_stack + +# qhasm: stack64 q31_stack + +# qhasm: stack64 q32_stack + +# qhasm: stack64 q33_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(sc25519_barrett) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(sc25519_barrett) +.globl CRYPTO_SHARED_NAMESPACE(sc25519_barrett) +_CRYPTO_SHARED_NAMESPACE(sc25519_barrett): +CRYPTO_SHARED_NAMESPACE(sc25519_barrett): +mov %rsp,%r11 +and $31,%r11 +add $96,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: zero ^= zero +# asm 1: xor rax=int64#7 +# asm 2: movq 24(rax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU3) +mulq CRYPTO_SHARED_NAMESPACE(MU3)(%rip) + +# qhasm: q23 = rax +# asm 1: mov q23=int64#10 +# asm 2: mov q23=%r12 +mov %rax,%r12 + +# qhasm: c = rdx +# asm 1: mov c=int64#11 +# asm 2: mov c=%r13 +mov %rdx,%r13 + +# qhasm: rax = *(uint64 *)(xp + 24) +# asm 1: movq 24(rax=int64#7 +# asm 2: movq 24(rax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU4) +mulq CRYPTO_SHARED_NAMESPACE(MU4)(%rip) + +# qhasm: q24 = rax +# asm 1: mov q24=int64#12 +# asm 2: mov q24=%r14 +mov %rax,%r14 + +# qhasm: carry? q24 += c +# asm 1: add rax=int64#7 +# asm 2: movq 32(rax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU2) +mulq CRYPTO_SHARED_NAMESPACE(MU2)(%rip) + +# qhasm: carry? q23 += rax +# asm 1: add c=int64#11 +# asm 2: mov $0,>c=%r13 +mov $0,%r13 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 32(rax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU3) +mulq CRYPTO_SHARED_NAMESPACE(MU3)(%rip) + +# qhasm: carry? q24 += rax +# asm 1: add c=int64#11 +# asm 2: mov $0,>c=%r13 +mov $0,%r13 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 32(rax=%rax +movq 32(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU4) +mulq CRYPTO_SHARED_NAMESPACE(MU4)(%rip) + +# qhasm: carry? q30 += rax +# asm 1: add rax=int64#7 +# asm 2: movq 40(rax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU1) +mulq CRYPTO_SHARED_NAMESPACE(MU1)(%rip) + +# qhasm: carry? q23 += rax +# asm 1: add c=int64#11 +# asm 2: mov $0,>c=%r13 +mov $0,%r13 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 40(rax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU2) +mulq CRYPTO_SHARED_NAMESPACE(MU2)(%rip) + +# qhasm: carry? q24 += rax +# asm 1: add c=int64#11 +# asm 2: mov $0,>c=%r13 +mov $0,%r13 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 40(rax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU3) +mulq CRYPTO_SHARED_NAMESPACE(MU3)(%rip) + +# qhasm: carry? q30 += rax +# asm 1: add c=int64#11 +# asm 2: mov $0,>c=%r13 +mov $0,%r13 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 40(rax=%rax +movq 40(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU4) +mulq CRYPTO_SHARED_NAMESPACE(MU4)(%rip) + +# qhasm: carry? q31 += rax +# asm 1: add rax=int64#7 +# asm 2: movq 48(rax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU0) +mulq CRYPTO_SHARED_NAMESPACE(MU0)(%rip) + +# qhasm: carry? q23 += rax +# asm 1: add c=int64#10 +# asm 2: mov $0,>c=%r12 +mov $0,%r12 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 48(rax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU1) +mulq CRYPTO_SHARED_NAMESPACE(MU1)(%rip) + +# qhasm: carry? q24 += rax +# asm 1: add c=int64#10 +# asm 2: mov $0,>c=%r12 +mov $0,%r12 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 48(rax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU2) +mulq CRYPTO_SHARED_NAMESPACE(MU2)(%rip) + +# qhasm: carry? q30 += rax +# asm 1: add c=int64#10 +# asm 2: mov $0,>c=%r12 +mov $0,%r12 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 48(rax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU3) +mulq CRYPTO_SHARED_NAMESPACE(MU3)(%rip) + +# qhasm: carry? q31 += rax +# asm 1: add c=int64#10 +# asm 2: mov $0,>c=%r12 +mov $0,%r12 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 48(rax=%rax +movq 48(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU4) +mulq CRYPTO_SHARED_NAMESPACE(MU4)(%rip) + +# qhasm: carry? q32 += rax +# asm 1: add rax=int64#7 +# asm 2: movq 56(rax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU0) +mulq CRYPTO_SHARED_NAMESPACE(MU0)(%rip) + +# qhasm: carry? q24 += rax +# asm 1: add c=int64#10 +# asm 2: mov $0,>c=%r12 +mov $0,%r12 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 56(rax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU1) +mulq CRYPTO_SHARED_NAMESPACE(MU1)(%rip) + +# qhasm: carry? q30 += rax +# asm 1: add c=int64#10 +# asm 2: mov $0,>c=%r12 +mov $0,%r12 + +# qhasm: c += rdx + carry +# asm 1: adc q30_stack=stack64#8 +# asm 2: movq q30_stack=56(%rsp) +movq %r8,56(%rsp) + +# qhasm: rax = *(uint64 *)(xp + 56) +# asm 1: movq 56(rax=int64#7 +# asm 2: movq 56(rax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU2) +mulq CRYPTO_SHARED_NAMESPACE(MU2)(%rip) + +# qhasm: carry? q31 += rax +# asm 1: add c=int64#5 +# asm 2: mov $0,>c=%r8 +mov $0,%r8 + +# qhasm: c += rdx + carry +# asm 1: adc q31_stack=stack64#9 +# asm 2: movq q31_stack=64(%rsp) +movq %r9,64(%rsp) + +# qhasm: rax = *(uint64 *)(xp + 56) +# asm 1: movq 56(rax=int64#7 +# asm 2: movq 56(rax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU3) +mulq CRYPTO_SHARED_NAMESPACE(MU3)(%rip) + +# qhasm: carry? q32 += rax +# asm 1: add c=int64#5 +# asm 2: mov $0,>c=%r8 +mov $0,%r8 + +# qhasm: c += rdx + carry +# asm 1: adc q32_stack=stack64#10 +# asm 2: movq q32_stack=72(%rsp) +movq %r10,72(%rsp) + +# qhasm: rax = *(uint64 *)(xp + 56) +# asm 1: movq 56(rax=int64#7 +# asm 2: movq 56(rax=%rax +movq 56(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(MU4) +mulq CRYPTO_SHARED_NAMESPACE(MU4)(%rip) + +# qhasm: carry? q33 += rax +# asm 1: add q33_stack=stack64#11 +# asm 2: movq q33_stack=80(%rsp) +movq %r11,80(%rsp) + +# qhasm: rax = q30_stack +# asm 1: movq rax=int64#7 +# asm 2: movq rax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(ORDER0) +mulq CRYPTO_SHARED_NAMESPACE(ORDER0)(%rip) + +# qhasm: r20 = rax +# asm 1: mov r20=int64#5 +# asm 2: mov r20=%r8 +mov %rax,%r8 + +# qhasm: c = rdx +# asm 1: mov c=int64#6 +# asm 2: mov c=%r9 +mov %rdx,%r9 + +# qhasm: rax = q30_stack +# asm 1: movq rax=int64#7 +# asm 2: movq rax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(ORDER1) +mulq CRYPTO_SHARED_NAMESPACE(ORDER1)(%rip) + +# qhasm: r21 = rax +# asm 1: mov r21=int64#8 +# asm 2: mov r21=%r10 +mov %rax,%r10 + +# qhasm: carry? r21 += c +# asm 1: add c=int64#6 +# asm 2: mov $0,>c=%r9 +mov $0,%r9 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq rax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(ORDER2) +mulq CRYPTO_SHARED_NAMESPACE(ORDER2)(%rip) + +# qhasm: r22 = rax +# asm 1: mov r22=int64#9 +# asm 2: mov r22=%r11 +mov %rax,%r11 + +# qhasm: carry? r22 += c +# asm 1: add c=int64#6 +# asm 2: mov $0,>c=%r9 +mov $0,%r9 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq rax=%rax +movq 56(%rsp),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(ORDER3) +mulq CRYPTO_SHARED_NAMESPACE(ORDER3)(%rip) + +# qhasm: free rdx + +# qhasm: r23 = rax +# asm 1: mov r23=int64#10 +# asm 2: mov r23=%r12 +mov %rax,%r12 + +# qhasm: r23 += c +# asm 1: add rax=int64#7 +# asm 2: movq rax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(ORDER0) +mulq CRYPTO_SHARED_NAMESPACE(ORDER0)(%rip) + +# qhasm: carry? r21 += rax +# asm 1: add c=int64#6 +# asm 2: mov $0,>c=%r9 +mov $0,%r9 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq rax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(ORDER1) +mulq CRYPTO_SHARED_NAMESPACE(ORDER1)(%rip) + +# qhasm: carry? r22 += rax +# asm 1: add c=int64#4 +# asm 2: mov $0,>c=%rcx +mov $0,%rcx + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq rax=%rax +movq 64(%rsp),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(ORDER2) +mulq CRYPTO_SHARED_NAMESPACE(ORDER2)(%rip) + +# qhasm: free rdx + +# qhasm: r23 += rax +# asm 1: add rax=int64#7 +# asm 2: movq rax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(ORDER0) +mulq CRYPTO_SHARED_NAMESPACE(ORDER0)(%rip) + +# qhasm: carry? r22 += rax +# asm 1: add c=int64#4 +# asm 2: mov $0,>c=%rcx +mov $0,%rcx + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq rax=%rax +movq 72(%rsp),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(ORDER1) +mulq CRYPTO_SHARED_NAMESPACE(ORDER1)(%rip) + +# qhasm: free rdx + +# qhasm: r23 += rax +# asm 1: add rax=int64#7 +# asm 2: movq rax=%rax +movq 80(%rsp),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *) &CRYPTO_SHARED_NAMESPACE(ORDER0) +mulq CRYPTO_SHARED_NAMESPACE(ORDER0)(%rip) + +# qhasm: free rdx + +# qhasm: r23 += rax +# asm 1: add r0=int64#3 +# asm 2: movq 0(r0=%rdx +movq 0(%rsi),%rdx + +# qhasm: carry? r0 -= r20 +# asm 1: sub t0=int64#4 +# asm 2: mov t0=%rcx +mov %rdx,%rcx + +# qhasm: r1 = *(uint64 *)(xp + 8) +# asm 1: movq 8(r1=int64#5 +# asm 2: movq 8(r1=%r8 +movq 8(%rsi),%r8 + +# qhasm: carry? r1 -= r21 - carry +# asm 1: sbb t1=int64#6 +# asm 2: mov t1=%r9 +mov %r8,%r9 + +# qhasm: r2 = *(uint64 *)(xp + 16) +# asm 1: movq 16(r2=int64#7 +# asm 2: movq 16(r2=%rax +movq 16(%rsi),%rax + +# qhasm: carry? r2 -= r22 - carry +# asm 1: sbb t2=int64#8 +# asm 2: mov t2=%r10 +mov %rax,%r10 + +# qhasm: r3 = *(uint64 *)(xp + 24) +# asm 1: movq 24(r3=int64#2 +# asm 2: movq 24(r3=%rsi +movq 24(%rsi),%rsi + +# qhasm: r3 -= r23 - carry +# asm 1: sbb t3=int64#9 +# asm 2: mov t3=%r11 +mov %rsi,%r11 + +# qhasm: carry? t0 -= *(uint64 *) &CRYPTO_SHARED_NAMESPACE(ORDER0) +# asm 1: sub CRYPTO_SHARED_NAMESPACE(ORDER0),t0=int64#4 +# asm 2: mov t0=%rcx +mov %rdx,%rcx + +# qhasm: r1 = t1 if !unsigned< +# asm 1: cmovae t1=int64#6 +# asm 2: mov t1=%r9 +mov %r8,%r9 + +# qhasm: r2 = t2 if !unsigned< +# asm 1: cmovae t2=int64#8 +# asm 2: mov t2=%r10 +mov %rax,%r10 + +# qhasm: r3 = t3 if !unsigned< +# asm 1: cmovae t3=int64#9 +# asm 2: mov t3=%r11 +mov %rsi,%r11 + +# qhasm: carry? t0 -= *(uint64 *) &CRYPTO_SHARED_NAMESPACE(ORDER0) +# asm 1: sub CRYPTO_SHARED_NAMESPACE(ORDER0),caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_from32bytes.c b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_from32bytes.c new file mode 100644 index 0000000000..44baacda01 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_from32bytes.c @@ -0,0 +1,57 @@ +// linker define sc25519_from32bytes + +#include "sc25519.h" + +/*Arithmetic modulo the group order n = 2^252 + 27742317777372353535851937790883648493 + * = 7237005577332262213973186563042994240857116359379907606001950938285454250989 + */ + +/* Contains order, 2*order, 4*order, 8*order, each represented in 4 consecutive unsigned long long */ +static const unsigned long long order[16] = {0x5812631A5CF5D3EDULL, 0x14DEF9DEA2F79CD6ULL, + 0x0000000000000000ULL, 0x1000000000000000ULL, + 0xB024C634B9EBA7DAULL, 0x29BDF3BD45EF39ACULL, + 0x0000000000000000ULL, 0x2000000000000000ULL, + 0x60498C6973D74FB4ULL, 0x537BE77A8BDE7359ULL, + 0x0000000000000000ULL, 0x4000000000000000ULL, + 0xC09318D2E7AE9F68ULL, 0xA6F7CEF517BCE6B2ULL, + 0x0000000000000000ULL, 0x8000000000000000ULL}; + +static unsigned long long smaller(unsigned long long a,unsigned long long b) +{ + unsigned long long atop = a >> 32; + unsigned long long abot = a & 4294967295; + unsigned long long btop = b >> 32; + unsigned long long bbot = b & 4294967295; + unsigned long long atopbelowbtop = (atop - btop) >> 63; + unsigned long long atopeqbtop = ((atop ^ btop) - 1) >> 63; + unsigned long long abotbelowbbot = (abot - bbot) >> 63; + return atopbelowbtop | (atopeqbtop & abotbelowbbot); +} + +void sc25519_from32bytes(sc25519 *r, const unsigned char x[32]) +{ + unsigned long long t[4]; + unsigned long long b; + unsigned long long mask; + int i, j; + + /* assuming little-endian */ + r->v[0] = *(unsigned long long *)x; + r->v[1] = *(((unsigned long long *)x)+1); + r->v[2] = *(((unsigned long long *)x)+2); + r->v[3] = *(((unsigned long long *)x)+3); + + for(j=3;j>=0;j--) + { + b=0; + for(i=0;i<4;i++) + { + b += order[4*j+i]; /* no overflow for this particular order */ + t[i] = r->v[i] - b; + b = smaller(r->v[i],b); + } + mask = b - 1; + for(i=0;i<4;i++) + r->v[i] ^= mask & (r->v[i] ^ t[i]); + } +} diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_from64bytes.c b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_from64bytes.c new file mode 100644 index 0000000000..27febe3b58 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_from64bytes.c @@ -0,0 +1,10 @@ +// linker define sc25519_from64bytes +// linker use sc25519_barrett + +#include "sc25519.h" + +void sc25519_from64bytes(sc25519 *r, const unsigned char x[64]) +{ + /* assuming little-endian representation of unsigned long long */ + sc25519_barrett(r, (unsigned long long *)x); +} diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_mul.c b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_mul.c new file mode 100644 index 0000000000..e889ef26eb --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_mul.c @@ -0,0 +1,16 @@ +// linker define sc25519_mul +// linker use ull4_mul +// linker use sc25519_barrett + +#include "sc25519.h" + +#define ull4_mul CRYPTO_SHARED_NAMESPACE(ull4_mul) + +extern void ull4_mul(unsigned long long r[8], const unsigned long long x[4], const unsigned long long y[4]); + +void sc25519_mul(sc25519 *r, const sc25519 *x, const sc25519 *y) +{ + unsigned long long t[8]; + ull4_mul(t, x->v, y->v); + sc25519_barrett(r, t); +} diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_to32bytes.c b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_to32bytes.c new file mode 100644 index 0000000000..a3bb028ab8 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sc25519_to32bytes.c @@ -0,0 +1,10 @@ +// linker define sc25519_to32bytes + +#include "sc25519.h" + +void sc25519_to32bytes(unsigned char r[32], const sc25519 *x) +{ + /* assuming little-endian */ + int i; + for(i=0;i<32;i++) r[i] = i[(unsigned char *)x->v]; +} diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/shared-consts.c b/lib-25519/lib25519/crypto_sign/ed25519/amd64/shared-consts.c new file mode 100644 index 0000000000..65775a3275 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/shared-consts.c @@ -0,0 +1,39 @@ +// linker define 121666 +// linker define MU0 +// linker define MU1 +// linker define MU2 +// linker define MU3 +// linker define MU4 +// linker define ORDER0 +// linker define ORDER1 +// linker define ORDER2 +// linker define ORDER3 +// linker define EC2D0 +// linker define EC2D1 +// linker define EC2D2 +// linker define EC2D3 +// linker define 38 +// linker define mask63 + +#include "crypto_uint64.h" + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(121666) = 121666; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU0) = 0xED9CE5A30A2C131B; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU1) = 0x2106215D086329A7; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU2) = 0xFFFFFFFFFFFFFFEB; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU3) = 0xFFFFFFFFFFFFFFFF; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(MU4) = 0x000000000000000F; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER0) = 0x5812631A5CF5D3ED; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER1) = 0x14DEF9DEA2F79CD6; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER2) = 0x0000000000000000; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(ORDER3) = 0x1000000000000000; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D0) = 0xEBD69B9426B2F146; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D1) = 0x00E0149A8283B156; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D2) = 0x198E80F2EEF3D130; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(EC2D3) = 0xA406D9DC56DFFCE7; + +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(38) = 38; +const crypto_uint64 CRYPTO_SHARED_NAMESPACE(mask63) = 0x7FFFFFFFFFFFFFFF; diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/sign.c b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sign.c new file mode 100644 index 0000000000..03061b7a7a --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/sign.c @@ -0,0 +1,59 @@ +#include "randombytes.h" +#include +#include "crypto_sign.h" +#include "crypto_hash_sha512.h" +#include "crypto_nG_merged25519.h" +#include "sc25519.h" + +void crypto_sign( + unsigned char *sm,long long *smlen, + const unsigned char *m,long long mlen, + const unsigned char *sk + ) +{ + unsigned char pk[32]; + unsigned char azr[96]; + unsigned char nonce[64]; + unsigned char hram[64]; + sc25519 sck, scs, scsk; + + memmove(pk,sk + 32,32); + /* pk: 32-byte public key A */ + + crypto_hash_sha512(azr,sk,32); + randombytes(azr+64,32); + azr[0] &= 248; + azr[31] &= 63; + azr[31] |= 64; + /* azr: 32-byte scalar a, 32-byte randomizer z, 32-byte new randomness r */ + + crypto_hash_sha512(azr+32,azr+32,64); + + *smlen = mlen + 64; + memmove(sm + 64,m,mlen); + memmove(sm + 32,azr + 32,32); + /* sm: 32-byte uninit, 32-byte z, mlen-byte m */ + + crypto_hash_sha512(nonce, sm+32, mlen+32); + /* nonce: 64-byte H(z,m) */ + + sc25519_from64bytes(&sck, nonce); + sc25519_to32bytes(nonce, &sck); + crypto_nG_merged25519(sm,nonce); + /* sm: 32-byte R, 32-byte z, mlen-byte m */ + + memmove(sm + 32,pk,32); + /* sm: 32-byte R, 32-byte A, mlen-byte m */ + + crypto_hash_sha512(hram,sm,mlen + 64); + /* hram: 64-byte H(R,A,m) */ + + sc25519_from64bytes(&scs, hram); + sc25519_from32bytes(&scsk, azr); + sc25519_mul(&scs, &scs, &scsk); + sc25519_add(&scs, &scs, &sck); + /* scs: S = nonce + H(R,A,m)a */ + + sc25519_to32bytes(sm + 32,&scs); + /* sm: 32-byte R, 32-byte S, mlen-byte m */ +} diff --git a/lib-25519/lib25519/crypto_sign/ed25519/amd64/ull4_mul.S b/lib-25519/lib25519/crypto_sign/ed25519/amd64/ull4_mul.S new file mode 100644 index 0000000000..d5bd984f00 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/amd64/ull4_mul.S @@ -0,0 +1,717 @@ +// linker define ull4_mul + +# qhasm: int64 rp + +# qhasm: int64 xp + +# qhasm: int64 yp + +# qhasm: input rp + +# qhasm: input xp + +# qhasm: input yp + +# qhasm: int64 r0 + +# qhasm: int64 r1 + +# qhasm: int64 r2 + +# qhasm: int64 r3 + +# qhasm: int64 r4 + +# qhasm: int64 r5 + +# qhasm: int64 r6 + +# qhasm: int64 r7 + +# qhasm: int64 c + +# qhasm: int64 zero + +# qhasm: int64 rax + +# qhasm: int64 rdx + +# qhasm: int64 caller1 + +# qhasm: int64 caller2 + +# qhasm: int64 caller3 + +# qhasm: int64 caller4 + +# qhasm: int64 caller5 + +# qhasm: int64 caller6 + +# qhasm: int64 caller7 + +# qhasm: caller caller1 + +# qhasm: caller caller2 + +# qhasm: caller caller3 + +# qhasm: caller caller4 + +# qhasm: caller caller5 + +# qhasm: caller caller6 + +# qhasm: caller caller7 + +# qhasm: stack64 caller1_stack + +# qhasm: stack64 caller2_stack + +# qhasm: stack64 caller3_stack + +# qhasm: stack64 caller4_stack + +# qhasm: stack64 caller5_stack + +# qhasm: stack64 caller6_stack + +# qhasm: stack64 caller7_stack + +# qhasm: enter CRYPTO_SHARED_NAMESPACE(ull4_mul) +.text +.p2align 5 +.globl _CRYPTO_SHARED_NAMESPACE(ull4_mul) +.globl CRYPTO_SHARED_NAMESPACE(ull4_mul) +_CRYPTO_SHARED_NAMESPACE(ull4_mul): +CRYPTO_SHARED_NAMESPACE(ull4_mul): +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp + +# qhasm: caller1_stack = caller1 +# asm 1: movq caller1_stack=stack64#1 +# asm 2: movq caller1_stack=0(%rsp) +movq %r11,0(%rsp) + +# qhasm: caller2_stack = caller2 +# asm 1: movq caller2_stack=stack64#2 +# asm 2: movq caller2_stack=8(%rsp) +movq %r12,8(%rsp) + +# qhasm: caller3_stack = caller3 +# asm 1: movq caller3_stack=stack64#3 +# asm 2: movq caller3_stack=16(%rsp) +movq %r13,16(%rsp) + +# qhasm: caller4_stack = caller4 +# asm 1: movq caller4_stack=stack64#4 +# asm 2: movq caller4_stack=24(%rsp) +movq %r14,24(%rsp) + +# qhasm: caller5_stack = caller5 +# asm 1: movq caller5_stack=stack64#5 +# asm 2: movq caller5_stack=32(%rsp) +movq %r15,32(%rsp) + +# qhasm: caller6_stack = caller6 +# asm 1: movq caller6_stack=stack64#6 +# asm 2: movq caller6_stack=40(%rsp) +movq %rbx,40(%rsp) + +# qhasm: caller7_stack = caller7 +# asm 1: movq caller7_stack=stack64#7 +# asm 2: movq caller7_stack=48(%rsp) +movq %rbp,48(%rsp) + +# qhasm: yp = yp +# asm 1: mov yp=int64#4 +# asm 2: mov yp=%rcx +mov %rdx,%rcx + +# qhasm: r4 = 0 +# asm 1: mov $0,>r4=int64#5 +# asm 2: mov $0,>r4=%r8 +mov $0,%r8 + +# qhasm: r5 = 0 +# asm 1: mov $0,>r5=int64#6 +# asm 2: mov $0,>r5=%r9 +mov $0,%r9 + +# qhasm: r6 = 0 +# asm 1: mov $0,>r6=int64#8 +# asm 2: mov $0,>r6=%r10 +mov $0,%r10 + +# qhasm: r7 = 0 +# asm 1: mov $0,>r7=int64#9 +# asm 2: mov $0,>r7=%r11 +mov $0,%r11 + +# qhasm: zero = 0 +# asm 1: mov $0,>zero=int64#10 +# asm 2: mov $0,>zero=%r12 +mov $0,%r12 + +# qhasm: rax = *(uint64 *)(xp + 0) +# asm 1: movq 0(rax=int64#7 +# asm 2: movq 0(rax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(r0=int64#11 +# asm 2: mov r0=%r13 +mov %rax,%r13 + +# qhasm: c = rdx +# asm 1: mov c=int64#12 +# asm 2: mov c=%r14 +mov %rdx,%r14 + +# qhasm: rax = *(uint64 *)(xp + 0) +# asm 1: movq 0(rax=int64#7 +# asm 2: movq 0(rax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(r1=int64#13 +# asm 2: mov r1=%r15 +mov %rax,%r15 + +# qhasm: carry? r1 += c +# asm 1: add c=int64#12 +# asm 2: mov $0,>c=%r14 +mov $0,%r14 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 0(rax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(r2=int64#14 +# asm 2: mov r2=%rbx +mov %rax,%rbx + +# qhasm: carry? r2 += c +# asm 1: add c=int64#12 +# asm 2: mov $0,>c=%r14 +mov $0,%r14 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 0(rax=%rax +movq 0(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(r3=int64#15 +# asm 2: mov r3=%rbp +mov %rax,%rbp + +# qhasm: carry? r3 += c +# asm 1: add rax=int64#7 +# asm 2: movq 8(rax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(c=int64#12 +# asm 2: mov $0,>c=%r14 +mov $0,%r14 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 8(rax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(c=int64#12 +# asm 2: mov $0,>c=%r14 +mov $0,%r14 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 8(rax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(c=int64#12 +# asm 2: mov $0,>c=%r14 +mov $0,%r14 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 8(rax=%rax +movq 8(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(rax=int64#7 +# asm 2: movq 16(rax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(c=int64#12 +# asm 2: mov $0,>c=%r14 +mov $0,%r14 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 16(rax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(c=int64#12 +# asm 2: mov $0,>c=%r14 +mov $0,%r14 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 16(rax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(c=int64#12 +# asm 2: mov $0,>c=%r14 +mov $0,%r14 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 16(rax=%rax +movq 16(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(rax=int64#7 +# asm 2: movq 24(rax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 0) +# asm 1: mulq 0(c=int64#12 +# asm 2: mov $0,>c=%r14 +mov $0,%r14 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 24(rax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 8) +# asm 1: mulq 8(c=int64#12 +# asm 2: mov $0,>c=%r14 +mov $0,%r14 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 24(rax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 16) +# asm 1: mulq 16(c=int64#12 +# asm 2: mov $0,>c=%r14 +mov $0,%r14 + +# qhasm: c += rdx + carry +# asm 1: adc rax=int64#7 +# asm 2: movq 24(rax=%rax +movq 24(%rsi),%rax + +# qhasm: (uint128) rdx rax = rax * *(uint64 *)(yp + 24) +# asm 1: mulq 24(caller1=int64#9 +# asm 2: movq caller1=%r11 +movq 0(%rsp),%r11 + +# qhasm: caller2 = caller2_stack +# asm 1: movq caller2=int64#10 +# asm 2: movq caller2=%r12 +movq 8(%rsp),%r12 + +# qhasm: caller3 = caller3_stack +# asm 1: movq caller3=int64#11 +# asm 2: movq caller3=%r13 +movq 16(%rsp),%r13 + +# qhasm: caller4 = caller4_stack +# asm 1: movq caller4=int64#12 +# asm 2: movq caller4=%r14 +movq 24(%rsp),%r14 + +# qhasm: caller5 = caller5_stack +# asm 1: movq caller5=int64#13 +# asm 2: movq caller5=%r15 +movq 32(%rsp),%r15 + +# qhasm: caller6 = caller6_stack +# asm 1: movq caller6=int64#14 +# asm 2: movq caller6=%rbx +movq 40(%rsp),%rbx + +# qhasm: caller7 = caller7_stack +# asm 1: movq caller7=int64#15 +# asm 2: movq caller7=%rbp +movq 48(%rsp),%rbp + +# qhasm: leave +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret diff --git a/lib-25519/lib25519/crypto_sign/ed25519/ref10/README b/lib-25519/lib25519/crypto_sign/ed25519/ref10/README new file mode 120000 index 0000000000..5792076342 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/ref10/README @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/README \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_sign/ed25519/ref10/keypair.c b/lib-25519/lib25519/crypto_sign/ed25519/ref10/keypair.c new file mode 120000 index 0000000000..4bc2bc5ec7 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/ref10/keypair.c @@ -0,0 +1 @@ +../amd64/keypair.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_sign/ed25519/ref10/open.c b/lib-25519/lib25519/crypto_sign/ed25519/ref10/open.c new file mode 120000 index 0000000000..ac14bd3614 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/ref10/open.c @@ -0,0 +1 @@ +../amd64/open.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_sign/ed25519/ref10/sc.h b/lib-25519/lib25519/crypto_sign/ed25519/ref10/sc.h new file mode 120000 index 0000000000..845842474b --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/ref10/sc.h @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/sc.h \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_sign/ed25519/ref10/sc_muladd.c b/lib-25519/lib25519/crypto_sign/ed25519/ref10/sc_muladd.c new file mode 100644 index 0000000000..93b75670b1 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/ref10/sc_muladd.c @@ -0,0 +1,370 @@ +// linker define sc_muladd + +#include "sc.h" +#include "crypto_int64.h" +#include "crypto_uint32.h" +#include "crypto_uint64.h" + +static crypto_uint64 load_3(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + return result; +} + +static crypto_uint64 load_4(const unsigned char *in) +{ + crypto_uint64 result; + result = (crypto_uint64) in[0]; + result |= ((crypto_uint64) in[1]) << 8; + result |= ((crypto_uint64) in[2]) << 16; + result |= ((crypto_uint64) in[3]) << 24; + return result; +} + +/* +Input: + a[0]+256*a[1]+...+256^31*a[31] = a + b[0]+256*b[1]+...+256^31*b[31] = b + c[0]+256*c[1]+...+256^31*c[31] = c + +Output: + s[0]+256*s[1]+...+256^31*s[31] = (ab+c) mod l + where l = 2^252 + 27742317777372353535851937790883648493. +*/ + +void sc_muladd(unsigned char *s,const unsigned char *a,const unsigned char *b,const unsigned char *c) +{ + crypto_int64 a0 = 2097151 & load_3(a); + crypto_int64 a1 = 2097151 & (load_4(a + 2) >> 5); + crypto_int64 a2 = 2097151 & (load_3(a + 5) >> 2); + crypto_int64 a3 = 2097151 & (load_4(a + 7) >> 7); + crypto_int64 a4 = 2097151 & (load_4(a + 10) >> 4); + crypto_int64 a5 = 2097151 & (load_3(a + 13) >> 1); + crypto_int64 a6 = 2097151 & (load_4(a + 15) >> 6); + crypto_int64 a7 = 2097151 & (load_3(a + 18) >> 3); + crypto_int64 a8 = 2097151 & load_3(a + 21); + crypto_int64 a9 = 2097151 & (load_4(a + 23) >> 5); + crypto_int64 a10 = 2097151 & (load_3(a + 26) >> 2); + crypto_int64 a11 = (load_4(a + 28) >> 7); + crypto_int64 b0 = 2097151 & load_3(b); + crypto_int64 b1 = 2097151 & (load_4(b + 2) >> 5); + crypto_int64 b2 = 2097151 & (load_3(b + 5) >> 2); + crypto_int64 b3 = 2097151 & (load_4(b + 7) >> 7); + crypto_int64 b4 = 2097151 & (load_4(b + 10) >> 4); + crypto_int64 b5 = 2097151 & (load_3(b + 13) >> 1); + crypto_int64 b6 = 2097151 & (load_4(b + 15) >> 6); + crypto_int64 b7 = 2097151 & (load_3(b + 18) >> 3); + crypto_int64 b8 = 2097151 & load_3(b + 21); + crypto_int64 b9 = 2097151 & (load_4(b + 23) >> 5); + crypto_int64 b10 = 2097151 & (load_3(b + 26) >> 2); + crypto_int64 b11 = (load_4(b + 28) >> 7); + crypto_int64 c0 = 2097151 & load_3(c); + crypto_int64 c1 = 2097151 & (load_4(c + 2) >> 5); + crypto_int64 c2 = 2097151 & (load_3(c + 5) >> 2); + crypto_int64 c3 = 2097151 & (load_4(c + 7) >> 7); + crypto_int64 c4 = 2097151 & (load_4(c + 10) >> 4); + crypto_int64 c5 = 2097151 & (load_3(c + 13) >> 1); + crypto_int64 c6 = 2097151 & (load_4(c + 15) >> 6); + crypto_int64 c7 = 2097151 & (load_3(c + 18) >> 3); + crypto_int64 c8 = 2097151 & load_3(c + 21); + crypto_int64 c9 = 2097151 & (load_4(c + 23) >> 5); + crypto_int64 c10 = 2097151 & (load_3(c + 26) >> 2); + crypto_int64 c11 = (load_4(c + 28) >> 7); + crypto_int64 s0; + crypto_int64 s1; + crypto_int64 s2; + crypto_int64 s3; + crypto_int64 s4; + crypto_int64 s5; + crypto_int64 s6; + crypto_int64 s7; + crypto_int64 s8; + crypto_int64 s9; + crypto_int64 s10; + crypto_int64 s11; + crypto_int64 s12; + crypto_int64 s13; + crypto_int64 s14; + crypto_int64 s15; + crypto_int64 s16; + crypto_int64 s17; + crypto_int64 s18; + crypto_int64 s19; + crypto_int64 s20; + crypto_int64 s21; + crypto_int64 s22; + crypto_int64 s23; + crypto_int64 carry0; + crypto_int64 carry1; + crypto_int64 carry2; + crypto_int64 carry3; + crypto_int64 carry4; + crypto_int64 carry5; + crypto_int64 carry6; + crypto_int64 carry7; + crypto_int64 carry8; + crypto_int64 carry9; + crypto_int64 carry10; + crypto_int64 carry11; + crypto_int64 carry12; + crypto_int64 carry13; + crypto_int64 carry14; + crypto_int64 carry15; + crypto_int64 carry16; + crypto_int64 carry17; + crypto_int64 carry18; + crypto_int64 carry19; + crypto_int64 carry20; + crypto_int64 carry21; + crypto_int64 carry22; + + s0 = c0 + a0*b0; + s1 = c1 + a0*b1 + a1*b0; + s2 = c2 + a0*b2 + a1*b1 + a2*b0; + s3 = c3 + a0*b3 + a1*b2 + a2*b1 + a3*b0; + s4 = c4 + a0*b4 + a1*b3 + a2*b2 + a3*b1 + a4*b0; + s5 = c5 + a0*b5 + a1*b4 + a2*b3 + a3*b2 + a4*b1 + a5*b0; + s6 = c6 + a0*b6 + a1*b5 + a2*b4 + a3*b3 + a4*b2 + a5*b1 + a6*b0; + s7 = c7 + a0*b7 + a1*b6 + a2*b5 + a3*b4 + a4*b3 + a5*b2 + a6*b1 + a7*b0; + s8 = c8 + a0*b8 + a1*b7 + a2*b6 + a3*b5 + a4*b4 + a5*b3 + a6*b2 + a7*b1 + a8*b0; + s9 = c9 + a0*b9 + a1*b8 + a2*b7 + a3*b6 + a4*b5 + a5*b4 + a6*b3 + a7*b2 + a8*b1 + a9*b0; + s10 = c10 + a0*b10 + a1*b9 + a2*b8 + a3*b7 + a4*b6 + a5*b5 + a6*b4 + a7*b3 + a8*b2 + a9*b1 + a10*b0; + s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0; + s12 = a1*b11 + a2*b10 + a3*b9 + a4*b8 + a5*b7 + a6*b6 + a7*b5 + a8*b4 + a9*b3 + a10*b2 + a11*b1; + s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2; + s14 = a3*b11 + a4*b10 + a5*b9 + a6*b8 + a7*b7 + a8*b6 + a9*b5 + a10*b4 + a11*b3; + s15 = a4*b11 + a5*b10 + a6*b9 + a7*b8 + a8*b7 + a9*b6 + a10*b5 + a11*b4; + s16 = a5*b11 + a6*b10 + a7*b9 + a8*b8 + a9*b7 + a10*b6 + a11*b5; + s17 = a6*b11 + a7*b10 + a8*b9 + a9*b8 + a10*b7 + a11*b6; + s18 = a7*b11 + a8*b10 + a9*b9 + a10*b8 + a11*b7; + s19 = a8*b11 + a9*b10 + a10*b9 + a11*b8; + s20 = a9*b11 + a10*b10 + a11*b9; + s21 = a10*b11 + a11*b10; + s22 = a11*b11; + s23 = 0; + + carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21; + carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21; + carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21; + carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21; + carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21; + carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21; + carry18 = (s18 + (1<<20)) >> 21; s19 += carry18; s18 -= carry18 << 21; + carry20 = (s20 + (1<<20)) >> 21; s21 += carry20; s20 -= carry20 << 21; + carry22 = (s22 + (1<<20)) >> 21; s23 += carry22; s22 -= carry22 << 21; + + carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21; + carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21; + carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21; + carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21; + carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21; + carry17 = (s17 + (1<<20)) >> 21; s18 += carry17; s17 -= carry17 << 21; + carry19 = (s19 + (1<<20)) >> 21; s20 += carry19; s19 -= carry19 << 21; + carry21 = (s21 + (1<<20)) >> 21; s22 += carry21; s21 -= carry21 << 21; + + s11 += s23 * 666643; + s12 += s23 * 470296; + s13 += s23 * 654183; + s14 -= s23 * 997805; + s15 += s23 * 136657; + s16 -= s23 * 683901; + s23 = 0; + + s10 += s22 * 666643; + s11 += s22 * 470296; + s12 += s22 * 654183; + s13 -= s22 * 997805; + s14 += s22 * 136657; + s15 -= s22 * 683901; + s22 = 0; + + s9 += s21 * 666643; + s10 += s21 * 470296; + s11 += s21 * 654183; + s12 -= s21 * 997805; + s13 += s21 * 136657; + s14 -= s21 * 683901; + s21 = 0; + + s8 += s20 * 666643; + s9 += s20 * 470296; + s10 += s20 * 654183; + s11 -= s20 * 997805; + s12 += s20 * 136657; + s13 -= s20 * 683901; + s20 = 0; + + s7 += s19 * 666643; + s8 += s19 * 470296; + s9 += s19 * 654183; + s10 -= s19 * 997805; + s11 += s19 * 136657; + s12 -= s19 * 683901; + s19 = 0; + + s6 += s18 * 666643; + s7 += s18 * 470296; + s8 += s18 * 654183; + s9 -= s18 * 997805; + s10 += s18 * 136657; + s11 -= s18 * 683901; + s18 = 0; + + carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21; + carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21; + carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21; + + carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21; + carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21; + + s5 += s17 * 666643; + s6 += s17 * 470296; + s7 += s17 * 654183; + s8 -= s17 * 997805; + s9 += s17 * 136657; + s10 -= s17 * 683901; + s17 = 0; + + s4 += s16 * 666643; + s5 += s16 * 470296; + s6 += s16 * 654183; + s7 -= s16 * 997805; + s8 += s16 * 136657; + s9 -= s16 * 683901; + s16 = 0; + + s3 += s15 * 666643; + s4 += s15 * 470296; + s5 += s15 * 654183; + s6 -= s15 * 997805; + s7 += s15 * 136657; + s8 -= s15 * 683901; + s15 = 0; + + s2 += s14 * 666643; + s3 += s14 * 470296; + s4 += s14 * 654183; + s5 -= s14 * 997805; + s6 += s14 * 136657; + s7 -= s14 * 683901; + s14 = 0; + + s1 += s13 * 666643; + s2 += s13 * 470296; + s3 += s13 * 654183; + s4 -= s13 * 997805; + s5 += s13 * 136657; + s6 -= s13 * 683901; + s13 = 0; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21; + carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21; + carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21; + carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21; + carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21; + carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21; + + carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21; + carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21; + carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21; + carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21; + carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21; + carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21; + carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21; + carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21; + carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21; + carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21; + carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21; + carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21; + carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21; + carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21; + carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21; + carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21; + carry11 = s11 >> 21; s12 += carry11; s11 -= carry11 << 21; + + s0 += s12 * 666643; + s1 += s12 * 470296; + s2 += s12 * 654183; + s3 -= s12 * 997805; + s4 += s12 * 136657; + s5 -= s12 * 683901; + s12 = 0; + + carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21; + carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21; + carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21; + carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21; + carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21; + carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21; + carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21; + carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21; + carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21; + carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21; + carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21; + + s[0] = s0 >> 0; + s[1] = s0 >> 8; + s[2] = (s0 >> 16) | (s1 << 5); + s[3] = s1 >> 3; + s[4] = s1 >> 11; + s[5] = (s1 >> 19) | (s2 << 2); + s[6] = s2 >> 6; + s[7] = (s2 >> 14) | (s3 << 7); + s[8] = s3 >> 1; + s[9] = s3 >> 9; + s[10] = (s3 >> 17) | (s4 << 4); + s[11] = s4 >> 4; + s[12] = s4 >> 12; + s[13] = (s4 >> 20) | (s5 << 1); + s[14] = s5 >> 7; + s[15] = (s5 >> 15) | (s6 << 6); + s[16] = s6 >> 2; + s[17] = s6 >> 10; + s[18] = (s6 >> 18) | (s7 << 3); + s[19] = s7 >> 5; + s[20] = s7 >> 13; + s[21] = s8 >> 0; + s[22] = s8 >> 8; + s[23] = (s8 >> 16) | (s9 << 5); + s[24] = s9 >> 3; + s[25] = s9 >> 11; + s[26] = (s9 >> 19) | (s10 << 2); + s[27] = s10 >> 6; + s[28] = (s10 >> 14) | (s11 << 7); + s[29] = s11 >> 1; + s[30] = s11 >> 9; + s[31] = s11 >> 17; +} diff --git a/lib-25519/lib25519/crypto_sign/ed25519/ref10/sc_reduce.c b/lib-25519/lib25519/crypto_sign/ed25519/ref10/sc_reduce.c new file mode 120000 index 0000000000..a0f0fe267a --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/ref10/sc_reduce.c @@ -0,0 +1 @@ +../../../crypto_mGnP/ed25519/ref10/sc_reduce.c \ No newline at end of file diff --git a/lib-25519/lib25519/crypto_sign/ed25519/ref10/sign.c b/lib-25519/lib25519/crypto_sign/ed25519/ref10/sign.c new file mode 100644 index 0000000000..cbc66415e3 --- /dev/null +++ b/lib-25519/lib25519/crypto_sign/ed25519/ref10/sign.c @@ -0,0 +1,40 @@ +#include "randombytes.h" +#include +#include "crypto_sign.h" +#include "crypto_hash_sha512.h" +#include "crypto_nG_merged25519.h" +#include "sc.h" + +void crypto_sign( + unsigned char *sm,long long *smlen, + const unsigned char *m,long long mlen, + const unsigned char *sk +) +{ + unsigned char pk[32]; + unsigned char azr[96]; + unsigned char nonce[64]; + unsigned char hram[64]; + + memmove(pk,sk + 32,32); + + crypto_hash_sha512(azr,sk,32); + azr[0] &= 248; + azr[31] &= 63; + azr[31] |= 64; + randombytes(azr+64,32); + crypto_hash_sha512(azr+32,azr+32,64); + + *smlen = mlen + 64; + memmove(sm + 64,m,mlen); + memmove(sm + 32,azr + 32,32); + crypto_hash_sha512(nonce,sm + 32,mlen + 32); + memmove(sm + 32,pk,32); + + sc_reduce(nonce); + crypto_nG_merged25519(sm,nonce); + + crypto_hash_sha512(hram,sm,mlen + 64); + sc_reduce(hram); + sc_muladd(sm + 32,hram,azr,nonce); +} diff --git a/lib-25519/lib25519/crypto_verify/32/ref/verify.c b/lib-25519/lib25519/crypto_verify/32/ref/verify.c new file mode 100644 index 0000000000..a0e23afede --- /dev/null +++ b/lib-25519/lib25519/crypto_verify/32/ref/verify.c @@ -0,0 +1,40 @@ +#include "crypto_verify.h" + +int crypto_verify(const unsigned char *x,const unsigned char *y) +{ + unsigned int differentbits = 0; +#define F(i) differentbits |= x[i] ^ y[i]; + F(0) + F(1) + F(2) + F(3) + F(4) + F(5) + F(6) + F(7) + F(8) + F(9) + F(10) + F(11) + F(12) + F(13) + F(14) + F(15) + F(16) + F(17) + F(18) + F(19) + F(20) + F(21) + F(22) + F(23) + F(24) + F(25) + F(26) + F(27) + F(28) + F(29) + F(30) + F(31) + return (1 & ((differentbits - 1) >> 8)) - 1; +} diff --git a/lib-25519/lib25519/hdoc b/lib-25519/lib25519/hdoc new file mode 100644 index 0000000000..929981b627 --- /dev/null +++ b/lib-25519/lib25519/hdoc @@ -0,0 +1,119 @@ +/* + +The stable lib25519 API consists of the following five functions. Other +functions defined in lib25519.h (e.g., functions used for internal tests +and benchmarks) may change. + +All of these functions follow the SUPERCOP/NaCl API except that (1) +function names are lib25519-specific, (2) message lengths are long long +instead of unsigned long long, and (3) all functions except signature +verification return void instead of int. + +1. X25519 key generation: + + #include "lib25519.h" + + unsigned char pk[lib25519_dh_PUBLICKEYBYTES]; + unsigned char sk[lib25519_dh_SECRETKEYBYTES]; + + lib25519_dh_keypair(pk,sk); + +This function randomly generates Alice's secret key sk[0], sk[1], ..., +sk[lib25519_dh_SECRETKEYBYTES-1] and Alice's corresponding public key +pk[0], pk[1], ..., pk[lib25519_dh_PUBLICKEYBYTES-1]. + +lib25519_dh_PUBLICKEYBYTES and lib25519_dh_SECRETKEYBYTES are guaranteed +to be 32, but callers wishing to allow easy substitution of other DH +systems should not rely on this guarantee. + +2. X25519 shared-secret generation: + + #include "lib25519.h" + + unsigned char k[lib25519_dh_BYTES]; + unsigned char pk[lib25519_dh_PUBLICKEYBYTES]; + unsigned char sk[lib25519_dh_SECRETKEYBYTES]; + + lib25519_dh(k,pk,sk); + +This function computes the X25519 secret k[0], k[1], ..., +k[lib25519_dh_BYTES-1] shared between Alice and Bob, given Bob's public +key pk[0], pk[1], ..., pk[lib25519_dh_PUBLICKEYBYTES-1] and Alice's +secret key sk[0], sk[1], ..., sk[lib25519_dh_SECRETKEYBYTES-1]. + +lib25519_dh_PUBLICKEYBYTES, lib25519_dh_SECRETKEYBYTES, and +lib25519_dh_BYTES are guaranteed to be 32, but callers wishing to allow +easy substitution of other DH systems should not rely on this guarantee. + +3. Ed25519 key generation: + + #include "lib25519.h" + + unsigned char pk[lib25519_sign_PUBLICKEYBYTES]; + unsigned char sk[lib25519_sign_SECRETKEYBYTES]; + + lib25519_sign_keypair(pk,sk); + +This function randomly generates a secret key sk[0], sk[1], ..., +sk[lib25519_sign_SECRETKEYBYTES-1] and a corresponding public key +pk[0], pk[1], ..., pk[lib25519_sign_PUBLICKEYBYTES-1]. + +lib25519_sign_PUBLICKEYBYTES is guaranteed to be 32, and +lib25519_sign_SECRETKEYBYTES is guaranteed to be 64, but callers wishing +to allow easy substitution of other signature systems should not rely on +these guarantees. + +4. Ed25519 signing: + + #include "lib25519.h" + + const unsigned char sk[lib25519_sign_SECRETKEYBYTES]; + const unsigned char m[...]; long long mlen; + unsigned char sm[...]; long long smlen; + + lib25519_sign(sm,&smlen,m,mlen,sk); + +This function signs a message m[0], ..., m[mlen-1] using the signer's +secret key sk[0], sk[1], ..., sk[lib25519_sign_SECRETKEYBYTES-1], puts +the length of the signed message into smlen, and puts the signed message +into sm[0], sm[1], ..., sm[smlen-1]. + +The maximum possible length smlen is mlen+lib25519_sign_BYTES. The caller +must allocate at least mlen+lib25519_sign_BYTES for sm. + +lib25519_sign_SECRETKEYBYTES is guaranteed to be 64, lib25519_sign_BYTES +is guaranteed to be 64, and signed messages are always exactly 64 bytes +longer than messages, but callers wishing to allow easy substitution of +other signature systems should not rely on these guarantees. + +5. Ed25519 signature verification and message recovery: + + #include "lib25519.h" + + const unsigned char pk[lib25519_sign_PUBLICKEYBYTES]; + const unsigned char sm[...]; long long smlen; + unsigned char m[...]; long long mlen; + int result; + + result = lib25519_sign_open(m,&mlen,sm,smlen,pk); + +This function verifies the signed message in sm[0], ..., sm[smlen-1] +using the signer's public key pk[0], pk[1], ..., +pk[lib25519_sign_PUBLICKEYBYTES-1]. This function puts the length of the +message into mlen and puts the message into m[0], m[1], ..., m[mlen-1]. +It then returns 0. + +The maximum possible length mlen is smlen. The caller must allocate at +least smlen bytes for m (not just some guess for the number of bytes +expected in m). + +If the signature fails verification, lib25519_sign_open instead returns +-1. It also sets mlen to -1 and clears m[0], m[1], ..., m[smlen-1], but +callers should note that other signature software does not necessarily +do this; callers should always check the return value. + +lib25519_sign_PUBLICKEYBYTES is guaranteed to be 32, but callers wishing +to allow easy substitution of other signature systems should not rely on +this guarantee. + +*/ diff --git a/lib-25519/lib25519/prioritize b/lib-25519/lib25519/prioritize new file mode 100755 index 0000000000..7684a9a518 --- /dev/null +++ b/lib-25519/lib25519/prioritize @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 + +import os +import sys + +tune = { + 'verify_32':('32',1), + 'hashblocks_sha512':('8090',1), + 'hash_sha512':('8090',1), + 'pow_inv25519':('32',1), + 'nP_montgomery25519':('32',1), + 'nG_merged25519':('32',1), + 'nG_montgomery25519':('32',1), + 'mGnP_ed25519':('33',1), + 'dh_x25519_keypair':('32',1), + 'dh_x25519':('32',3), + 'sign_ed25519_keypair':('32',1), + 'sign_ed25519':('59',10), + 'sign_ed25519_open':('59',1), +} + +impls = set() +data = {} + +def handle(benchmark): + with open('benchmarks/%s' % benchmark) as f: + for line in f: + line = line.split() + if line[:2] == ['lib25519','version']: + version = line[2] + continue + if line[:2] == ['lib25519','arch']: + arch = line[2] + continue + if line[:1] == ['cpuid']: + cpuid = ''.join(line[1:]) + if line[:3] == ['cpucycles','selected','0']: + cpucyclesoverhead = int(line[3]) + if line[:3] == ['randombytes','selected','26']: + randombytesoverhead = int(line[3]) + if len(line) >= 5: + shortfun = line[0] + if line[1].isnumeric() and line[2] == 'implementation' and line[4] == 'compiler': + implnum = line[1] + implop = line[0] + i = line[3] + c = ' '.join(line[5:]) + if line[1].isnumeric() and shortfun in tune and line[2] == tune[shortfun][0] and line[3].isnumeric(): + o = shortfun.split('_')[0] + p = shortfun.split('_')[1] + assert implop == '%s_%s' % (o,p) + assert implnum == line[1] + cycles = int(line[3]) + cycles -= cpucyclesoverhead + if shortfun.endswith('_keypair'): cycles -= randombytesoverhead + if cycles < 1: cycles = 1 + key = benchmark,version,arch,cpuid,o,p,i,c + if key not in data: data[key] = [] + data[key] += [(shortfun,cycles)] + +for benchmark in sorted(os.listdir('benchmarks')): + handle(benchmark) + +impldata = {} +bestscore = {} + +for key in sorted(data): + benchmark,version,arch,cpuid,o,p,i,c = key + assert sorted(shortfun for shortfun,cycles in data[key]) == sorted(shortfun for shortfun in tune if shortfun.split('_')[:2] == [o,p]) + score = sum(cycles*tune[shortfun][1] for shortfun,cycles in data[key]) + + if (o,p,i) not in impldata: impldata[o,p,i] = [] + impldata[o,p,i] += [(benchmark,version,arch,cpuid,c,score)] + + if (benchmark,o,p) not in bestscore: bestscore[benchmark,o,p] = score + bestscore[benchmark,o,p] = min(score,bestscore[benchmark,o,p]) + +os.makedirs('priority',exist_ok=True) +for o,p,i in impldata: + with open('priority/%s-%s-%s' % (o,p,i),'w') as f: + for benchmark,version,arch,cpuid,c,score in impldata[o,p,i]: + if bestscore[benchmark,o,p] <= 0: continue + f.write('%.6f %s %s %s %s %s %s\n' % (score/bestscore[benchmark,o,p],score,arch,cpuid,version,benchmark,c)) diff --git a/lib-25519/lib25519/priority/dh-x25519-wrapper b/lib-25519/lib25519/priority/dh-x25519-wrapper new file mode 100644 index 0000000000..2350d6375c --- /dev/null +++ b/lib-25519/lib25519/priority/dh-x25519-wrapper @@ -0,0 +1,40 @@ +1.000059 1522071 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 1521981 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000015 1493170 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 1493147 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 300470 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000692 300678 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001597 300950 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000592 300648 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001025 300778 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000958 300758 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001900 301041 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000263 300549 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001175 306010 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000458 305791 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001377 306072 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001197 306017 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000811 305899 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 305651 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001070 305978 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001309 306051 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000971 221729 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001002 221736 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001941 221944 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001612 221871 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000971 221729 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002776 222129 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 221514 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.002189 221999 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001986 221954 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001905 221936 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001657 221881 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000510 221627 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001570 387779 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000119 387217 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000421 387334 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000424 387335 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 387171 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000597 387402 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000117 932118 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 932009 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/hash-sha512-blocksplusavx b/lib-25519/lib25519/priority/hash-sha512-blocksplusavx new file mode 100644 index 0000000000..52df7b557b --- /dev/null +++ b/lib-25519/lib25519/priority/hash-sha512-blocksplusavx @@ -0,0 +1,26 @@ +1.000000 43132 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000301 43145 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001136 43181 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000626 43159 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000185 43140 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001159 43182 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 43796 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000548 43820 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000639 43824 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000251 43807 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001050 43842 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001005 43840 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000132 45578 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001141 45624 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 45572 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000834 45610 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000307 45586 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001843 45656 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000790 45608 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000768 45607 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.002063 45666 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001207 45627 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000961 43726 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 43684 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000801 43719 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000939 43725 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/hash-sha512-ref b/lib-25519/lib25519/priority/hash-sha512-ref new file mode 100644 index 0000000000..9d941eac18 --- /dev/null +++ b/lib-25519/lib25519/priority/hash-sha512-ref @@ -0,0 +1,40 @@ +1.000000 153171 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.004289 153828 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 184974 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000697 185103 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001577 43200 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001043 43177 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001090 43179 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002411 43236 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.007396 43451 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.007048 43436 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.008161 43484 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.008857 43514 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.002352 43899 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002763 43917 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002580 43909 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002991 43927 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.005640 44043 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.005366 44031 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.005160 44022 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.004475 43992 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.002150 45670 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.003313 45723 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002041 45665 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002414 45682 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002436 45683 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001931 45660 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.009523 46006 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.009085 45986 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.009414 46001 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.006517 45869 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.009282 45995 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.008317 45951 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.002083 43775 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002793 43806 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.004853 43896 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.003205 43824 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.004578 43884 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.006227 43956 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 123558 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001012 123683 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/hashblocks-sha512-avx b/lib-25519/lib25519/priority/hashblocks-sha512-avx new file mode 100644 index 0000000000..f455dbd1bf --- /dev/null +++ b/lib-25519/lib25519/priority/hashblocks-sha512-avx @@ -0,0 +1,18 @@ +1.514218 64115 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.513131 64069 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.317581 55789 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.348472 57097 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.526901 65530 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.528252 65588 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.319640 56635 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.335764 57327 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.308498 58605 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.311847 58755 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.469077 65797 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.465102 65619 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.247879 55890 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.246182 55814 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.245512 55784 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.147540 51396 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.166959 49821 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.304148 55678 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/hashblocks-sha512-avx2 b/lib-25519/lib25519/priority/hashblocks-sha512-avx2 new file mode 100644 index 0000000000..55b4c3be80 --- /dev/null +++ b/lib-25519/lib25519/priority/hashblocks-sha512-avx2 @@ -0,0 +1,18 @@ +1.000401 42359 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 42342 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001016 42385 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000543 42365 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000699 42947 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000839 42953 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 42917 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001142 42966 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000714 44820 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001563 44858 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000491 44810 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001362 44849 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001362 44849 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 44788 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000826 44825 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000982 44832 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001077 42739 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 42693 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/hashblocks-sha512-compact b/lib-25519/lib25519/priority/hashblocks-sha512-compact new file mode 100644 index 0000000000..8efb64e5c0 --- /dev/null +++ b/lib-25519/lib25519/priority/hashblocks-sha512-compact @@ -0,0 +1,40 @@ +1.092614 164151 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.031930 155034 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.035557 187268 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.004346 181624 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.524869 64566 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.524562 64553 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.562373 66154 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.642199 69534 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.530490 64804 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.508668 63880 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.793279 75931 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.798451 76150 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.423282 61083 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.408836 60463 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.572267 67477 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.682620 72213 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.499755 64365 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.575949 67635 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.819489 78087 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.746091 74937 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.328905 59519 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.325690 59375 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.370635 61388 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.370322 61374 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.512995 67764 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.553162 69563 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.338238 59937 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.330446 59588 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.346030 60286 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.335670 59822 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.591989 71302 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.598330 71586 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.704261 72760 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.682782 71843 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.681025 71768 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.492352 63713 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.863350 79552 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.745719 74530 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 120664 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.005461 121323 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/hashblocks-sha512-compact2 b/lib-25519/lib25519/priority/hashblocks-sha512-compact2 new file mode 100644 index 0000000000..f35f5dc1f9 --- /dev/null +++ b/lib-25519/lib25519/priority/hashblocks-sha512-compact2 @@ -0,0 +1,40 @@ +1.644342 247041 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.735877 260793 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.551444 280560 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.722055 311413 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.053824 129305 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.036371 128566 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.598555 110028 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.615606 110750 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.759246 116832 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.768244 117213 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.043007 128847 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.040976 128761 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.450497 105168 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.450637 105174 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.623226 112581 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.638046 113217 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.778899 119262 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.787963 119651 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.076287 132025 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.087401 132502 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.671943 119671 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.673596 119745 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.620702 117376 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.619943 117342 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.461530 110247 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.470059 110629 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.456037 110001 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.455702 109986 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.474502 110828 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.442753 109406 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.747499 123055 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.748549 123102 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.748928 117360 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.654112 113312 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.662942 113689 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.758462 117767 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.948657 125887 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.054623 130411 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.437786 173489 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.629028 196565 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/hashblocks-sha512-compact3 b/lib-25519/lib25519/priority/hashblocks-sha512-compact3 new file mode 100644 index 0000000000..17203355d0 --- /dev/null +++ b/lib-25519/lib25519/priority/hashblocks-sha512-compact3 @@ -0,0 +1,40 @@ +1.708800 256725 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.886479 283419 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.679747 303762 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.683568 304453 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.639554 111764 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.640333 111797 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.796750 118420 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.787351 118022 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.886094 122203 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.888125 122289 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.234920 136973 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.237754 137093 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.643778 113463 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.539110 108971 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.761749 118526 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.877694 123502 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.962253 127131 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.068970 131711 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.300953 141667 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.189529 136885 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.267706 101566 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.270698 101700 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.211195 99035 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.217759 99329 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.415960 108206 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.398098 107406 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.480955 111117 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.483723 111241 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.488300 111446 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.443445 109437 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.813767 126023 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.804791 125621 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.822079 120483 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.772094 118349 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.776076 118519 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.853676 121832 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.204038 136790 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.320427 141759 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.508528 182025 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.774249 214088 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/hashblocks-sha512-compact4 b/lib-25519/lib25519/priority/hashblocks-sha512-compact4 new file mode 100644 index 0000000000..a53f948db4 --- /dev/null +++ b/lib-25519/lib25519/priority/hashblocks-sha512-compact4 @@ -0,0 +1,40 @@ +1.158270 174015 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.218774 183105 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.129232 204208 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.186078 214488 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.800104 76220 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.797152 76095 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.942468 82248 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.949270 82536 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.916962 81168 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.869302 79150 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.165958 91711 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.151481 91098 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.709323 73359 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.705431 73192 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.941795 83336 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.948389 83619 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.887061 80987 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.883403 80830 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.123611 91139 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.114384 90743 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.695320 75930 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.696838 75998 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.632580 73120 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.632446 73114 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.819706 81501 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.819550 81494 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.702800 76265 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.689783 75682 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.701014 76185 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.630660 73034 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.900509 85120 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.878851 84150 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.943597 82978 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.060244 87958 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.958073 83596 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.813787 77436 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.145082 91580 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.144590 91559 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.133702 136797 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.214356 146529 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/hashblocks-sha512-inplace b/lib-25519/lib25519/priority/hashblocks-sha512-inplace new file mode 100644 index 0000000000..6fcfb4f9d0 --- /dev/null +++ b/lib-25519/lib25519/priority/hashblocks-sha512-inplace @@ -0,0 +1,40 @@ +1.149943 172764 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.061403 159462 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.147381 207490 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.010402 182719 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.593713 67481 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.593005 67451 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.956568 82845 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.956544 82844 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.490955 63130 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.477446 62558 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.979878 83832 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.975887 83663 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.656057 71073 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.656826 71106 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.016427 86539 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.016380 86537 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.486054 63777 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.464874 62868 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.982175 85069 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.981942 85059 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.495401 66976 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.494440 66933 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.496941 67045 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.498370 67109 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.850808 82894 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.851500 82925 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.349312 60433 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.351634 60537 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.347816 60366 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.341520 60084 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.828101 81877 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.823301 81662 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.754058 74886 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.081278 88856 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.179842 93064 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.492071 63701 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.002600 85497 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.010283 85825 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.211629 146200 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.015158 122493 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/hashblocks-sha512-ref b/lib-25519/lib25519/priority/hashblocks-sha512-ref new file mode 100644 index 0000000000..78740e9281 --- /dev/null +++ b/lib-25519/lib25519/priority/hashblocks-sha512-ref @@ -0,0 +1,40 @@ +1.140837 171396 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.047565 157383 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.148791 207745 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 180838 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.615205 68391 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.614898 68378 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.980917 83876 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.980776 83870 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.486066 62923 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.457891 61730 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.921614 81365 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.927330 81607 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.645944 70639 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.645385 70615 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.025934 86947 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.026446 86969 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.486124 63780 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.486241 63785 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.986742 85265 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.020109 86697 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.513084 67768 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.509221 67595 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.518666 68018 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.522104 68172 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.867219 83629 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.867554 83644 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.347013 60330 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.347682 60360 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.346812 60321 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.325400 59362 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.780946 79765 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.786483 80013 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.752137 74804 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.039210 87060 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.129693 90923 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.514300 64650 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.058604 87888 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.059495 87926 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.207692 145725 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.009473 121807 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/hashblocks-sha512-wflip b/lib-25519/lib25519/priority/hashblocks-sha512-wflip new file mode 100644 index 0000000000..432b2e7e63 --- /dev/null +++ b/lib-25519/lib25519/priority/hashblocks-sha512-wflip @@ -0,0 +1,40 @@ +1.019409 153153 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 150237 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.067829 193104 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.008997 182465 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.281659 54268 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.281139 54246 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.445869 61221 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.610481 68191 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.510793 63970 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.536748 65069 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.779722 75357 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.780809 75403 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.323881 56817 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.302910 55917 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.488944 63901 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.799800 77242 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.543305 66234 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.566466 67228 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.760724 75565 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.774588 76160 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.189627 53281 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.188488 53230 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.258752 56377 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.258172 56351 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.418885 63549 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.589979 71212 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.327878 59473 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.324261 59311 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.279204 57293 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.353822 60635 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.681857 75327 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.652719 74022 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.540440 65766 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.767924 75478 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.756986 75011 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.582273 67552 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.795985 76676 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.791605 76489 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.028186 124065 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.029918 124274 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/mGnP-ed25519-amd64-51 b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-51 new file mode 100644 index 0000000000..8d8d2a8db0 --- /dev/null +++ b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-51 @@ -0,0 +1,40 @@ +1.043938 563670 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.064973 575028 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.394830 741154 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.394446 740950 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.364793 153183 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.392350 156276 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.382514 155172 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.388867 155885 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.396306 156720 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.373640 154176 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.384848 155434 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.384314 155374 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.433644 165130 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.437351 165557 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.451225 167155 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.454246 167503 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.454950 167584 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.449176 166919 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.412703 162718 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.431517 164885 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.367313 153541 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.366128 153408 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.360117 152733 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.368559 153681 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.343046 150816 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.376619 154586 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.378186 154762 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.358096 152506 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.369521 153789 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.352717 151902 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.360554 152782 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.350277 151628 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.093160 172669 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.115483 176195 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.108918 175158 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.102207 174098 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.113780 175926 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.123656 177486 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.214555 410805 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.226369 414801 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/mGnP-ed25519-amd64-64 b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-64 new file mode 100644 index 0000000000..6df1dfa53d --- /dev/null +++ b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-64 @@ -0,0 +1,40 @@ +1.000000 539946 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.012185 546525 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 531358 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.005608 534338 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.329743 149249 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.347776 151273 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.351901 151736 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.350253 151551 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.349620 151480 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.347223 151211 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.369248 153683 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.357149 152325 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.320857 152139 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.320528 152101 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.322976 152383 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.355125 156086 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.341902 154563 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.343804 154782 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.346617 155106 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.339228 154255 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.445206 162288 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.409603 158290 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.409292 158255 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.423674 159870 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.431795 160782 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.433131 160932 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.428607 160424 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.426844 160226 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.438884 161578 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.446747 162461 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.446204 162400 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.439204 161614 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.242324 196230 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.238247 195586 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.250453 197514 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.254530 198158 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.256695 198500 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.256746 198508 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.004716 339830 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 338235 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-10l-maa4 b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-10l-maa4 new file mode 100644 index 0000000000..3d64555553 --- /dev/null +++ b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-10l-maa4 @@ -0,0 +1,18 @@ +1.279279 143585 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.284001 144115 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.281738 143861 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.285997 144339 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.320970 152152 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.310812 150982 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.323575 152452 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.316404 151626 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.333339 149726 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.329011 149240 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.324416 148724 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.322332 148490 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.309972 147102 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.327319 149050 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.311931 147322 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.330000 149351 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.165567 184106 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.164060 183868 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-10l-maax b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-10l-maax new file mode 100644 index 0000000000..28ed08e929 --- /dev/null +++ b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-10l-maax @@ -0,0 +1,10 @@ +1.031433 115767 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.021044 114601 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.057743 121833 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.053489 121343 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.063868 119466 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.053627 118316 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.048115 117697 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.052434 118182 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.042887 117110 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.049513 117854 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-10l-mxaa b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-10l-mxaa new file mode 100644 index 0000000000..18742efd47 --- /dev/null +++ b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-10l-mxaa @@ -0,0 +1,18 @@ +1.132592 127121 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.137920 127719 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.119442 125645 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.130881 126929 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.163333 133995 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.179203 135823 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.152359 132731 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.160346 133651 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.080058 121284 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.080165 121296 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.097637 123258 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.102623 123818 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.090379 122443 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.086309 121986 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.090984 122511 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.088037 122180 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.045311 165111 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.028559 162465 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-9l-maa4 b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-9l-maa4 new file mode 100644 index 0000000000..a52292718a --- /dev/null +++ b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-9l-maa4 @@ -0,0 +1,18 @@ +1.278032 143445 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.287084 144461 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.262779 141733 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.254510 140805 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.294360 149087 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.312505 151177 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.313044 151239 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.294213 149070 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.315003 147667 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.319590 148182 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.320596 148295 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.314888 147654 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.311219 147242 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.325734 148872 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.320320 148264 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.316295 147812 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.122859 177360 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.106740 174814 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-9l-maax b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-9l-maax new file mode 100644 index 0000000000..f189c0a05c --- /dev/null +++ b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-9l-maax @@ -0,0 +1,10 @@ +1.021686 114673 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.030952 115713 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.026471 118231 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.035700 119294 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.035389 116268 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.038007 116562 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.039717 116754 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.049335 117834 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.045960 117455 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.043119 117136 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-9l-mxaa b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-9l-mxaa new file mode 100644 index 0000000000..638a8b1ab9 --- /dev/null +++ b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx2-9l-mxaa @@ -0,0 +1,18 @@ +1.125643 126341 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.138472 127781 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.121188 125841 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.136708 127583 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.149737 132429 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.150388 132504 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.140395 131353 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.152671 132767 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.080752 121362 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.084208 121750 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.094876 122948 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.094983 122960 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.102223 123773 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.097886 123286 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.086541 122012 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.076015 120830 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.003609 158524 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 157954 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx512ifma-5l-maax b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx512ifma-5l-maax new file mode 100644 index 0000000000..c2324d5596 --- /dev/null +++ b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-avx512ifma-5l-maax @@ -0,0 +1,2 @@ +1.048774 117771 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.068802 120020 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/mGnP-ed25519-amd64-maa4 b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-maa4 new file mode 100644 index 0000000000..fc0b16a970 --- /dev/null +++ b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-maa4 @@ -0,0 +1,40 @@ +1.036754 559791 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.018352 549855 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.158629 615647 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.159794 616266 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.304903 146461 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.299308 145833 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.282486 143945 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.269372 142473 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.279154 143571 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.279831 143647 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.292358 145053 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.300502 145967 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.321613 152226 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.295289 149194 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.312401 151165 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.316985 151693 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.292398 148861 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.313191 151256 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.315805 151557 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.301479 149907 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.318664 148078 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.334034 149804 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.327052 149020 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.334657 149874 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.321682 148417 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.344346 150962 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.339110 150374 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.309714 147073 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.335779 150000 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.332075 149584 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.331647 149536 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.341764 150672 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.183838 186992 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.189296 187854 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.179508 186308 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.177862 186048 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.189448 187878 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.209751 191085 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.052189 355887 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.052928 356137 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/mGnP-ed25519-amd64-maax b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-maax new file mode 100644 index 0000000000..154d08e7d4 --- /dev/null +++ b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-maax @@ -0,0 +1,10 @@ +1.002441 112513 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 112239 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 115182 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001059 115304 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.004087 112753 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.019493 114483 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.003241 112658 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.012449 113692 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.024952 115096 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 112294 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/mGnP-ed25519-amd64-mxaa b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-mxaa new file mode 100644 index 0000000000..2102343d34 --- /dev/null +++ b/lib-25519/lib25519/priority/mGnP-ed25519-amd64-mxaa @@ -0,0 +1,18 @@ +1.125179 126289 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.123736 126127 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.129100 126729 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.105186 124045 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.127676 129888 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.133163 130520 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.108420 127670 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.115035 128432 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.076015 120830 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.069585 120108 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.060929 119136 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.073165 120510 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.077404 120986 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.064447 119531 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.054197 118380 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.069282 120074 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.039828 164245 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.039347 164169 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/mGnP-ed25519-ref10 b/lib-25519/lib25519/priority/mGnP-ed25519-ref10 new file mode 100644 index 0000000000..6752b3ded1 --- /dev/null +++ b/lib-25519/lib25519/priority/mGnP-ed25519-ref10 @@ -0,0 +1,40 @@ +1.920609 1037025 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.993483 1076373 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.643158 873105 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.680820 893117 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.436426 385701 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.449603 387180 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.448409 387046 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.414963 383292 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.369595 378200 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.318837 372503 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.295931 369932 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.320014 372635 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.374685 388703 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.356358 386592 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.312419 381531 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.381952 389540 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.321856 382618 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.253347 374727 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.282405 378074 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.308078 381031 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.432294 385426 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.442499 386572 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.316019 372369 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.383075 379899 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.382122 379792 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.450719 387495 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.258838 365948 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.244430 364330 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.203190 359699 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.218649 361435 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.171612 356153 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.192334 358480 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.480526 391809 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.504736 395633 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.443389 385943 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.391988 377824 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.486635 392774 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.450979 387142 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.085234 705299 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.250648 761248 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-merged25519-amd64-51 b/lib-25519/lib25519/priority/nG-merged25519-amd64-51 new file mode 100644 index 0000000000..677d3f5fa5 --- /dev/null +++ b/lib-25519/lib25519/priority/nG-merged25519-amd64-51 @@ -0,0 +1,40 @@ +1.180335 164763 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.177434 164358 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.446511 205432 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.453876 206478 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.457205 40895 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.457134 40893 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.453072 40779 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.460412 40985 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.487493 41745 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.479867 41531 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.469035 41227 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.484963 41674 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.523236 44643 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.528900 44809 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.518937 44517 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.526955 44752 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.540467 45148 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.537021 45047 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.539477 45119 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.554831 45569 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.478202 39026 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.482747 39146 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.470285 38817 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.481535 39114 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.481459 39112 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.476497 38981 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.487671 39276 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.483656 39170 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.488088 39287 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.493315 39425 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.493618 39433 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.490171 39342 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.191118 49161 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.190657 49142 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.191796 49189 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.195552 49344 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.200567 49551 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.207157 49823 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.297683 114915 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.300269 115144 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-merged25519-amd64-64 b/lib-25519/lib25519/priority/nG-merged25519-amd64-64 new file mode 100644 index 0000000000..3b11201983 --- /dev/null +++ b/lib-25519/lib25519/priority/nG-merged25519-amd64-64 @@ -0,0 +1,40 @@ +1.000000 139590 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.003868 140130 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 142019 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.004281 142627 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.333310 37418 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.268387 35596 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.274907 35779 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.269812 35636 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.306050 36653 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.294648 36333 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.290906 36228 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.284564 36050 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.238979 36312 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.226935 35959 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.250444 36648 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.257916 36867 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.262556 37003 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.264058 37047 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.288590 37766 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.263000 37016 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.378433 36392 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.364342 36020 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.368660 36134 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.367941 36115 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.370478 36182 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.368244 36123 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.373963 36274 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.376955 36353 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.383281 36520 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.380289 36441 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.387826 36640 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.379796 36428 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.152473 47566 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.152400 47563 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.156204 47720 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.166501 48145 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.167616 48191 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.170862 48325 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 88554 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.006866 89162 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-10l-maa4 b/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-10l-maa4 new file mode 100644 index 0000000000..a6718ef985 --- /dev/null +++ b/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-10l-maa4 @@ -0,0 +1,18 @@ +1.164267 32674 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.164909 32692 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.178770 33081 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.181050 33145 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.250751 36657 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.241709 36392 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.267708 37154 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.267811 37157 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.225484 32354 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.224651 32332 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.225029 32342 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.225219 32347 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.247188 32927 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.247301 32930 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.247604 32938 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.241809 32785 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.049815 43329 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.063407 43890 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-10l-maax b/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-10l-maax new file mode 100644 index 0000000000..1d27b3c708 --- /dev/null +++ b/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-10l-maax @@ -0,0 +1,10 @@ +1.106685 31058 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.123183 31521 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.171421 34332 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.196465 35066 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.155108 30496 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.158176 30577 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.157759 30566 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.179614 31143 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.174084 30997 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.180220 31159 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-10l-mxaa b/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-10l-mxaa new file mode 100644 index 0000000000..cddb72d975 --- /dev/null +++ b/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-10l-mxaa @@ -0,0 +1,18 @@ +1.122613 31505 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.119584 31420 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.137828 31932 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.138149 31941 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.210966 35491 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.214208 35586 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.227617 35979 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.248703 36597 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.160789 30646 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.140411 30108 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.165562 30772 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.161092 30654 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.180031 31154 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.183402 31243 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.183061 31234 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.175145 31025 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.028566 42452 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.045672 43158 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-9l-maa4 b/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-9l-maa4 new file mode 100644 index 0000000000..75bf5ec430 --- /dev/null +++ b/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-9l-maa4 @@ -0,0 +1,18 @@ +1.139574 31981 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.142424 32061 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.162949 32637 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.167902 32776 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.242186 36406 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.240344 36352 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.257472 36854 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.256312 36820 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.206583 31855 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.205863 31836 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.207227 31872 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.205901 31837 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.226696 32386 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.224878 32338 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.226317 32376 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.230408 32484 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.024544 42286 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.036416 42776 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-9l-maax b/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-9l-maax new file mode 100644 index 0000000000..47a1f9bf16 --- /dev/null +++ b/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-9l-maax @@ -0,0 +1,10 @@ +1.085412 30461 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.101518 30913 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.159752 33990 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.177767 34518 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.133518 29926 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.138328 30053 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.132343 29895 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.152911 30438 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.151396 30398 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.157608 30562 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-9l-mxaa b/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-9l-mxaa new file mode 100644 index 0000000000..e443cdc03c --- /dev/null +++ b/lib-25519/lib25519/priority/nG-merged25519-amd64-avx2-9l-mxaa @@ -0,0 +1,18 @@ +1.105830 31034 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.094106 30705 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.120831 31455 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.121472 31473 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.191518 34921 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.189266 34855 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.206735 35367 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.207042 35376 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.139351 30080 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.138139 30048 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.139427 30082 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.139843 30093 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.163895 30728 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.158100 30575 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.154426 30478 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.161774 30672 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 41273 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.017954 42014 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-merged25519-amd64-avx512ifma-5l-maax b/lib-25519/lib25519/priority/nG-merged25519-amd64-avx512ifma-5l-maax new file mode 100644 index 0000000000..89d3ab447c --- /dev/null +++ b/lib-25519/lib25519/priority/nG-merged25519-amd64-avx512ifma-5l-maax @@ -0,0 +1,2 @@ +1.000000 26401 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.019052 26904 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-merged25519-amd64-maa4 b/lib-25519/lib25519/priority/nG-merged25519-amd64-maa4 new file mode 100644 index 0000000000..0dedd7a10e --- /dev/null +++ b/lib-25519/lib25519/priority/nG-merged25519-amd64-maa4 @@ -0,0 +1,40 @@ +1.007544 140643 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.009091 140859 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.089150 154680 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.094290 155410 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.170895 32860 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.172784 32913 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.171608 32880 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.168579 32795 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.189923 33394 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.192132 33456 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.188818 33363 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.190743 33417 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.189436 34860 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.194145 34998 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.194350 35004 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.199945 35168 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.211785 35515 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.209670 35453 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.216562 35655 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.217074 35670 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.256657 33177 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.253551 33095 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.256543 33174 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.263437 33356 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.249044 32976 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.254687 33125 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.276277 33695 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.270293 33537 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.276391 33698 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.278664 33758 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.271846 33578 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.270406 33540 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.136457 46905 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.140625 47077 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.134107 46808 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.154556 47652 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.141570 47116 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.147821 47374 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.040416 92133 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.045543 92587 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-merged25519-amd64-maax b/lib-25519/lib25519/priority/nG-merged25519-amd64-maax new file mode 100644 index 0000000000..10b7a5baba --- /dev/null +++ b/lib-25519/lib25519/priority/nG-merged25519-amd64-maax @@ -0,0 +1,10 @@ +1.000000 28064 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.020026 28626 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 29308 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.027330 30109 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.058975 27958 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.056096 27882 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.059127 27962 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.081588 28555 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.076664 28425 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.073103 28331 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-merged25519-amd64-mxaa b/lib-25519/lib25519/priority/nG-merged25519-amd64-mxaa new file mode 100644 index 0000000000..1505f595c4 --- /dev/null +++ b/lib-25519/lib25519/priority/nG-merged25519-amd64-mxaa @@ -0,0 +1,18 @@ +1.082668 30384 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.080138 30313 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.095639 30748 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.096209 30764 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.093422 32046 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.092637 32023 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.110038 32533 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.110857 32557 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.089845 28773 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.095489 28922 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.092080 28832 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.092837 28852 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.111435 29343 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.111511 29345 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.113859 29407 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.110905 29329 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.074964 44367 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.092821 45104 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-merged25519-ref10 b/lib-25519/lib25519/priority/nG-merged25519-ref10 new file mode 100644 index 0000000000..61ae3e932c --- /dev/null +++ b/lib-25519/lib25519/priority/nG-merged25519-ref10 @@ -0,0 +1,40 @@ +2.264475 316098 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.590651 361629 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.765919 250794 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.212429 314207 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.479832 97658 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.471387 97421 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.493479 98041 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.788626 106324 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +4.258516 119511 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.335341 121667 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.324294 121357 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.333310 121610 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.389177 99330 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.411151 99974 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.437389 100743 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.466528 101597 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +4.222840 123763 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.241299 124304 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.237717 124199 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.245121 124416 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.571380 94288 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.565016 94120 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.581379 94552 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.622173 95629 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.614712 95432 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.993674 105437 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +4.293057 113341 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.279459 112982 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.297830 113467 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.302299 113585 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.288588 113223 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.255066 112338 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.465922 101776 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.554091 105415 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.524823 104207 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.317011 136903 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.296295 136048 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.320645 137053 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.111186 186954 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.808772 248728 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-montgomery25519-ref b/lib-25519/lib25519/priority/nG-montgomery25519-ref new file mode 100644 index 0000000000..423391454c --- /dev/null +++ b/lib-25519/lib25519/priority/nG-montgomery25519-ref @@ -0,0 +1,40 @@ +3.294698 459729 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.294698 459729 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.165813 449824 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.165813 449824 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.239359 90715 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.239394 90716 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.241251 90768 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.243679 90836 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.242930 90815 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.240109 90736 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.243394 90828 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.241787 90783 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.151487 92389 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.148281 92295 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.150737 92367 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.146439 92241 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.148213 92293 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.150327 92355 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.151283 92383 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.148281 92295 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.313177 64725 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.309424 64620 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.305279 64504 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.309353 64618 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.310210 64642 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.306637 64542 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.307566 64568 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.306136 64528 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.305850 64520 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.310139 64640 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.307208 64558 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.308852 64604 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.787802 115231 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.790729 115352 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.790294 115334 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.788261 115250 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.787439 115216 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.787439 115216 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.173982 281091 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.173982 281091 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-montgomery25519-sandy2x b/lib-25519/lib25519/priority/nG-montgomery25519-sandy2x new file mode 100644 index 0000000000..651ba9dd39 --- /dev/null +++ b/lib-25519/lib25519/priority/nG-montgomery25519-sandy2x @@ -0,0 +1,26 @@ +4.191437 117377 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +4.197293 117541 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +4.181581 117101 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +5.255178 147166 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.254642 147151 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.253678 147124 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.666564 136805 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +4.665336 136769 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +4.661652 136661 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +514.534350 15084089 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +514.564095 15084961 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +514.532985 15084049 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.988063 111590 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.987206 111566 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.985133 111508 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.987098 111563 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.982381 111431 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +5.105179 142848 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.102105 142762 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.109181 142960 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.109789 142977 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.106715 142891 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.348575 138410 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +351.005322 14508454 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +351.044032 14510054 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +351.001863 14508311 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nG-montgomery25519-usemerged b/lib-25519/lib25519/priority/nG-montgomery25519-usemerged new file mode 100644 index 0000000000..8a597bf721 --- /dev/null +++ b/lib-25519/lib25519/priority/nG-montgomery25519-usemerged @@ -0,0 +1,40 @@ +1.000000 139536 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.004063 140103 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 142088 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000408 142146 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.005499 28158 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002500 28074 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.005892 28169 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.003107 28091 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001571 28048 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 28004 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000571 28020 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.003892 28113 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 29316 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000819 29340 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001364 29356 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001399 29357 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001603 29363 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001262 29353 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.003036 29405 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.002047 29376 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.002966 28064 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.003753 28086 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000107 27984 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002109 28040 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 27981 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001394 28020 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000286 27989 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.003967 28092 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001572 28025 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001608 28026 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.005682 28140 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.002073 28039 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.003290 41470 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001984 41416 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 41334 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001839 41410 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000750 41365 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000484 41354 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000192 88578 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 88561 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-51 b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-51 new file mode 100644 index 0000000000..60d3e526dc --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-51 @@ -0,0 +1,40 @@ +1.081729 497205 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.082141 497394 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.445137 650053 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.445139 650054 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.536305 135158 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.547308 136126 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.539499 135439 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.535123 135054 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.563415 137543 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.529997 134603 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.542091 135667 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.547001 136099 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.608456 148549 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.579254 145852 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.606367 148356 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.577359 145677 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.581192 146031 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.579005 145829 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.580456 145963 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.570429 145037 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.015053 130112 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.997166 128957 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.013489 130011 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.014589 130082 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.001378 129229 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.008859 129712 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.029271 131030 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.015193 130121 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.006783 129578 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.019808 130419 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.005777 129513 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.016958 130235 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.336965 154124 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.340374 154517 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.332775 153641 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.342933 154812 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.334371 153825 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.341328 154627 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.272279 358331 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.273813 358763 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-64 b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-64 new file mode 100644 index 0000000000..c1973469b6 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-64 @@ -0,0 +1,40 @@ +1.050616 482904 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.020853 469224 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 449821 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000536 450062 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.527939 134422 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.524961 134160 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.527178 134355 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.529656 134573 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.532657 134837 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.530463 134644 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.541250 135593 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.528155 134441 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.454106 134294 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.453857 134271 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.453327 134222 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.457376 134596 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.451475 134051 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.449602 133878 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.453684 134255 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.465486 135345 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.151495 138922 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.153539 139054 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.160198 139484 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.162041 139603 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.163993 139729 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.150875 138882 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.155351 139171 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.165805 139846 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.172092 140252 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.167028 139925 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.163993 139729 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.156992 139277 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.465219 168909 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.465991 168998 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.468802 169322 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.468724 169313 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.481389 170773 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.475672 170114 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001537 282078 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 281645 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey10l-maa4 b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey10l-maa4 new file mode 100644 index 0000000000..d27a96b430 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey10l-maa4 @@ -0,0 +1,18 @@ +1.032111 90801 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.027621 90406 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.035851 91130 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.035453 91095 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.288485 118998 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.289600 119101 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.292653 119383 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.293260 119439 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.349915 87164 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.348211 87054 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.348180 87052 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.346570 86948 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.352517 87332 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.350891 87227 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.354360 87451 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.353570 87400 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.047199 120720 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.102959 127148 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey10l-maa5 b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey10l-maa5 new file mode 100644 index 0000000000..e1035a3549 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey10l-maa5 @@ -0,0 +1,18 @@ +1.020165 89750 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.020153 89749 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.023722 90063 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.024916 90168 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.288842 119031 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.289015 119047 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.291441 119271 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.291408 119268 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.349466 87135 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.348552 87076 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.349837 87159 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.351076 87239 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.353461 87393 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.355444 87521 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.352006 87299 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.356419 87584 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.047771 120786 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.048916 120918 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey10l-maax b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey10l-maax new file mode 100644 index 0000000000..79fd8d71d9 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey10l-maax @@ -0,0 +1,10 @@ +1.030883 90693 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.036862 91219 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.288517 119001 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.292632 119381 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.346802 86963 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.347468 87006 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.348955 87102 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.353183 87375 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.351851 87289 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.354762 87477 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey10l-mxaa b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey10l-mxaa new file mode 100644 index 0000000000..c269d85916 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey10l-mxaa @@ -0,0 +1,18 @@ +1.030929 90697 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.032179 90807 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.033793 90949 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.035248 91077 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.288344 118985 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.289557 119097 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.291690 119294 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.292469 119366 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.349992 87169 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.348180 87052 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.346322 86932 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.349249 87121 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.353477 87394 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.354669 87471 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.350952 87231 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.356853 87612 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.048014 120814 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.101814 127016 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey9l-maa4 b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey9l-maa4 new file mode 100644 index 0000000000..85c7932ae8 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey9l-maa4 @@ -0,0 +1,18 @@ +1.033793 90949 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.035703 91117 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.039374 91440 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.038908 91399 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.245574 115035 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.245964 115071 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.246094 115083 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.248054 115264 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.364767 88123 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.366858 88258 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.368840 88386 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.367678 88311 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.370234 88476 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.369289 88415 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.372294 88609 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.371922 88585 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.005838 115952 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.007191 116108 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey9l-maa5 b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey9l-maa5 new file mode 100644 index 0000000000..0a0feaf42f --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey9l-maa5 @@ -0,0 +1,18 @@ +1.040216 91514 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.038295 91345 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.040431 91533 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.041921 91664 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.246137 115087 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.246224 115095 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.249288 115378 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.248671 115321 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.365433 88166 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.364535 88108 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.363884 88066 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.364024 88075 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.369614 88436 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.368778 88382 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.368391 88357 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.369444 88425 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.006714 116053 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.007798 116178 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey9l-maax b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey9l-maax new file mode 100644 index 0000000000..9826843782 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey9l-maax @@ -0,0 +1,10 @@ +1.034089 90975 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.037101 91240 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.244470 114933 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.247761 115237 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.364163 88084 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.365386 88163 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.368499 88364 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.370590 88499 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.372681 88634 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.370853 88516 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey9l-mxaa b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey9l-mxaa new file mode 100644 index 0000000000..c3c5195607 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-hey9l-mxaa @@ -0,0 +1,18 @@ +1.033850 90954 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.034930 91049 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.040011 91496 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.038044 91323 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.245379 115017 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.245661 115043 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.247588 115221 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.248563 115311 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.366114 88210 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.365541 88173 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.369041 88399 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.366997 88267 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.369847 88451 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.370791 88512 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.370125 88469 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.370482 88492 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.006324 116008 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.007417 116134 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns10l-maa4 b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns10l-maa4 new file mode 100644 index 0000000000..2f95872d77 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns10l-maa4 @@ -0,0 +1,18 @@ +1.000000 87976 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001921 88145 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.005740 88481 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.007127 88603 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.328277 122673 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.328634 122706 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.323209 122205 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.321282 122027 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.325709 85601 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.324717 85537 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.330974 85941 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.326591 85658 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.335372 86225 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.335094 86207 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.330912 85937 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.334041 86139 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.026536 118338 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.027941 118500 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns10l-maa5 b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns10l-maa5 new file mode 100644 index 0000000000..4502c9c705 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns10l-maa5 @@ -0,0 +1,18 @@ +1.003478 88282 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001762 88131 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.006286 88529 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.008036 88683 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.261783 116532 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.261318 116489 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.264371 116771 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.263722 116711 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.324532 85525 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.323819 85479 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.320799 85284 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.321945 85358 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.326607 85659 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.328744 85797 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.328605 85788 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.326142 85629 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.027013 118393 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.028392 118552 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns10l-maax b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns10l-maax new file mode 100644 index 0000000000..5527b98a0f --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns10l-maax @@ -0,0 +1,10 @@ +1.001159 88078 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.007673 88651 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.328342 122679 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.323881 122267 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.324826 85544 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.322936 85422 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.324454 85520 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.332910 86066 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.337138 86339 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.332182 86019 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns10l-mxaa b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns10l-mxaa new file mode 100644 index 0000000000..a75c0972f1 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns10l-mxaa @@ -0,0 +1,18 @@ +1.001739 88129 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.003683 88300 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.004399 88363 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.006672 88563 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.328212 122667 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.328298 122675 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.321997 122093 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.323924 122271 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.323447 85455 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.322627 85402 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.330246 85894 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.326808 85672 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.336255 86282 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.334366 86160 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.326715 85666 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.333994 86136 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.026067 118284 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.027715 118474 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns9l-maa4 b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns9l-maa4 new file mode 100644 index 0000000000..fb149a08d4 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns9l-maa4 @@ -0,0 +1,18 @@ +1.035237 91076 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.035737 91120 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.039386 91441 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.039522 91453 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.237518 114291 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.238774 114407 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.239641 114487 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.241871 114693 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.356543 87592 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.356745 87605 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.358340 87708 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.357658 87664 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.360787 87866 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.362831 87998 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.363574 88046 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.361964 87942 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000217 115304 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000165 115298 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns9l-maa5 b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns9l-maa5 new file mode 100644 index 0000000000..7879829a5c --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns9l-maa5 @@ -0,0 +1,18 @@ +1.036805 91214 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.037703 91293 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.040772 91563 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.041989 91670 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.246852 115153 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.239132 114440 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.241568 114665 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.241026 114615 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.362908 88003 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.361344 87902 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.359780 87801 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.359672 87794 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.364891 88131 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.364364 88097 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.364178 88085 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.363404 88035 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000737 115364 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002299 115544 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns9l-maax b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns9l-maax new file mode 100644 index 0000000000..b92a198cf2 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns9l-maax @@ -0,0 +1,10 @@ +1.036578 91194 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.037954 91315 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.237572 114296 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.239348 114460 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.356915 87616 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.356853 87612 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.357488 87653 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.360415 87842 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.361050 87883 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.360709 87861 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns9l-mxaa b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns9l-mxaa new file mode 100644 index 0000000000..de0c924483 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx2-ns9l-mxaa @@ -0,0 +1,18 @@ +1.035271 91079 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.035908 91135 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.039215 91426 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.039420 91444 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.237031 114246 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.238904 114419 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.238244 114358 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.239749 114497 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.357194 87634 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.357132 87630 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.356172 87568 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.357767 87671 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.359037 87753 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.361716 87926 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.359966 87813 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.362862 88000 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 115279 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000668 115356 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512-hey10l-maax b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512-hey10l-maax new file mode 100644 index 0000000000..76fa3121ca --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512-hey10l-maax @@ -0,0 +1,4 @@ +1.333994 86136 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.334211 86150 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.339012 86460 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.338780 86445 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512-hey9l-maax b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512-hey9l-maax new file mode 100644 index 0000000000..4c1fab34c1 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512-hey9l-maax @@ -0,0 +1,4 @@ +1.357178 87633 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.358882 87743 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.362630 87985 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.362072 87949 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512-ns10l-maax b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512-ns10l-maax new file mode 100644 index 0000000000..c2380d2e38 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512-ns10l-maax @@ -0,0 +1,4 @@ +1.307341 84415 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.307140 84402 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.314295 84864 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.314387 84870 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512-ns9l-maax b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512-ns9l-maax new file mode 100644 index 0000000000..d3ab18cfe0 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512-ns9l-maax @@ -0,0 +1,4 @@ +1.348722 87087 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.346740 86959 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.352610 87338 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.351433 87262 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512ifma-hey5l-maax b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512ifma-hey5l-maax new file mode 100644 index 0000000000..d0cf069d86 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512ifma-hey5l-maax @@ -0,0 +1,2 @@ +1.029766 66492 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.032430 66664 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512ifma-ns5l-maax b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512ifma-ns5l-maax new file mode 100644 index 0000000000..47197e8df4 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-avx512ifma-ns5l-maax @@ -0,0 +1,2 @@ +1.000000 64570 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.003918 64823 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-maa4 b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-maa4 new file mode 100644 index 0000000000..3e261ce6a5 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-maa4 @@ -0,0 +1,40 @@ +1.000000 459639 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001625 460386 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.124332 505748 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.124503 505825 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.311073 115343 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.312835 115498 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.311380 115370 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.311574 115387 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.313051 115517 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.313370 115545 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.315188 115705 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.315029 115691 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.300731 120129 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.300060 120067 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.300904 120145 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.301835 120231 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.301705 120219 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.299930 120055 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.301121 120165 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.301814 120229 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.830293 118182 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.829782 118149 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.831021 118229 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.830912 118222 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.829983 118162 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.830974 118226 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.832167 118303 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.834195 118434 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.834707 118467 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.834304 118441 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.834815 118474 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.833777 118407 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.400689 161470 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.399700 161356 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.401279 161538 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.399405 161322 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.399865 161375 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.399544 161338 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.070266 301435 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.070241 301428 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-maax b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-maax new file mode 100644 index 0000000000..1f98bc10af --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-maax @@ -0,0 +1,10 @@ +1.030451 90655 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.032122 90802 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000303 92383 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 92355 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.462459 94431 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.458247 94159 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.460400 94298 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.462877 94458 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.462057 94405 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.467400 94750 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-amd64-mxaa b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-mxaa new file mode 100644 index 0000000000..08d3e73a8e --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-amd64-mxaa @@ -0,0 +1,18 @@ +1.164568 102454 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.164499 102448 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.166386 102614 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.167784 102737 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.123134 103727 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.122397 103659 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.123393 103751 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.123112 103725 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.534319 99071 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.535651 99157 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.535620 99155 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.536751 99228 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.536797 99231 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.540452 99467 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.538145 99318 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.540901 99496 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.185081 136615 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.187328 136874 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-donna_c64 b/lib-25519/lib25519/priority/nP-montgomery25519-donna_c64 new file mode 100644 index 0000000000..ee7440ff2d --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-donna_c64 @@ -0,0 +1,40 @@ +1.198371 550818 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.031368 474057 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.857741 835651 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.669126 750808 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.335444 205463 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.319439 204055 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.344151 206229 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.268551 199578 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.851164 162858 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.845526 162362 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.816268 159788 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.789170 157404 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.159591 199449 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.162752 199741 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.377478 219572 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.319593 214226 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.803205 166535 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.810979 167253 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.886319 174211 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.870283 172730 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.044231 196566 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.032399 195802 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.044293 196570 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.045067 196620 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.054793 197248 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.969893 191766 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.367090 152843 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.369227 152981 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.376011 153419 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.465139 159174 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.556714 165087 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.493976 161036 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.958006 225717 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.058901 237348 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.046487 235917 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.664666 191901 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.717598 198003 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.754474 202254 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.645337 463401 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.310540 369107 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-ref10 b/lib-25519/lib25519/priority/nP-montgomery25519-ref10 new file mode 100644 index 0000000000..14298855d0 --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-ref10 @@ -0,0 +1,40 @@ +1.967242 904221 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.082473 957186 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.664747 748838 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.769293 795865 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.645767 320740 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.634127 319716 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.675105 323321 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.664693 322405 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.831477 337078 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.874273 340843 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.817825 335877 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.897279 342867 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.528060 325834 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.518510 324952 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.545937 327485 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.546435 327531 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.675621 339462 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.664469 338432 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.728342 344331 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.682908 340135 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.089871 328653 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +5.078241 327902 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +5.044820 325744 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +5.037850 325294 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +5.029379 324747 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +5.029859 324778 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +4.985551 321917 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.022751 324319 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.013226 323704 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.845300 312861 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.879820 315090 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.863404 314030 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.874461 331365 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.883058 332356 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.877844 331755 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.051033 351720 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.131681 361017 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.076900 354702 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.182077 614571 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.411976 679321 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/nP-montgomery25519-sandy2x b/lib-25519/lib25519/priority/nP-montgomery25519-sandy2x new file mode 100644 index 0000000000..c7c21d2d9a --- /dev/null +++ b/lib-25519/lib25519/priority/nP-montgomery25519-sandy2x @@ -0,0 +1,26 @@ +1.450452 127605 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.451851 127728 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.450248 127587 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.784930 157031 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.784475 156991 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.785328 157066 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.604905 148221 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.605338 148261 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.606767 148393 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +180.718229 16690232 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +180.710422 16689511 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +180.710075 16689479 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.866827 120541 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.865928 120483 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.866532 120522 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.871070 120815 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.867957 120614 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.365928 152768 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.363884 152636 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.365758 152757 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.364008 152644 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.365743 152756 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.302544 150156 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +139.601575 16093130 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +139.595893 16092475 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +139.601610 16093134 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/pow-inv25519-amd64-51 b/lib-25519/lib25519/priority/pow-inv25519-amd64-51 new file mode 100644 index 0000000000..c7e4fe1740 --- /dev/null +++ b/lib-25519/lib25519/priority/pow-inv25519-amd64-51 @@ -0,0 +1,40 @@ +1.230131 44019 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.229376 43992 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.358199 54002 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.360387 54089 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.229983 12949 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.238713 12984 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.240210 12990 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.202544 12839 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.216263 12894 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.210526 12871 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.196059 12813 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.204789 12848 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.236899 13404 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.229655 13374 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.231587 13382 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.245351 13439 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.228447 13369 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.233035 13388 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.234484 13394 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.238348 13410 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.361586 15349 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.365528 15367 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.370127 15388 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.366623 15372 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.350197 15297 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.331362 15211 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.386334 15462 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.345817 15277 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.363995 15360 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.349978 15296 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.359177 15338 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.375164 15411 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.368003 14002 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.357686 13941 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.365466 13987 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.355657 13929 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.356503 13934 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.356841 13936 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.333904 34256 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.330322 34164 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/pow-inv25519-amd64-64 b/lib-25519/lib25519/priority/pow-inv25519-amd64-64 new file mode 100644 index 0000000000..6cd0bd0324 --- /dev/null +++ b/lib-25519/lib25519/priority/pow-inv25519-amd64-64 @@ -0,0 +1,40 @@ +1.220322 43668 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.219567 43641 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 39760 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002163 39846 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.382639 13561 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.383637 13565 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.351210 13435 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.342230 13399 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.358444 13464 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.361686 13477 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.356199 13455 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.326515 13336 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.398454 14073 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.387346 14027 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.392900 14050 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.390485 14040 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.393383 14052 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.398937 14075 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.391934 14046 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.396523 14065 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.463425 15814 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.447438 15741 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.439772 15706 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.474814 15866 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.467587 15833 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.459921 15798 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.437582 15696 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.470434 15846 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.463425 15814 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.454665 15774 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.452913 15766 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.484888 15912 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.656181 15706 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.654997 15699 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.653814 15692 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.657196 15712 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.654490 15696 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.651108 15676 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.005724 25828 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 25681 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/pow-inv25519-amd64-maa4 b/lib-25519/lib25519/priority/pow-inv25519-amd64-maa4 new file mode 100644 index 0000000000..ebad9e2a97 --- /dev/null +++ b/lib-25519/lib25519/priority/pow-inv25519-amd64-maa4 @@ -0,0 +1,40 @@ +1.219064 43623 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.231137 44055 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.112324 44226 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.112198 44221 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.216513 12895 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.207782 12860 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.211025 12873 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.182340 12758 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.183337 12762 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.186830 12776 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.189075 12785 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.182090 12757 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.138614 12997 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.145376 13025 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.145134 13024 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.134509 12980 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.134992 12982 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.139580 13001 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.134026 12978 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.146824 13031 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.162724 14441 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.167981 14465 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.161410 14435 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.154621 14404 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.162067 14438 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.163601 14445 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.169952 14474 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.177398 14508 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.172142 14484 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.170390 14476 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.178274 14512 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.214630 14678 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.166413 12810 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.164045 12796 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.161001 12778 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.162016 12784 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.170134 12832 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.169119 12826 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.017367 26127 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.017523 26131 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/pow-inv25519-amd64-maa5 b/lib-25519/lib25519/priority/pow-inv25519-amd64-maa5 new file mode 100644 index 0000000000..e0828e4a1a --- /dev/null +++ b/lib-25519/lib25519/priority/pow-inv25519-amd64-maa5 @@ -0,0 +1,18 @@ +3.185084 12769 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.172612 12719 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.157396 12658 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.150910 12632 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.908476 12044 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.900024 12009 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.904371 12027 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.902439 12019 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.085633 14089 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.081910 14072 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.083224 14078 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.087823 14099 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.084757 14085 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.098993 14150 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.094174 14128 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.090013 14109 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.029258 11999 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.026383 11982 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/pow-inv25519-amd64-maax b/lib-25519/lib25519/priority/pow-inv25519-amd64-maax new file mode 100644 index 0000000000..ac0d94e550 --- /dev/null +++ b/lib-25519/lib25519/priority/pow-inv25519-amd64-maax @@ -0,0 +1,10 @@ +2.271639 9107 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.248441 9014 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.166868 8973 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.172664 8997 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.215068 10114 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.224266 10156 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.199956 10045 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.225142 10160 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.220981 10141 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.221638 10144 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/pow-inv25519-amd64-mxaa b/lib-25519/lib25519/priority/pow-inv25519-amd64-mxaa new file mode 100644 index 0000000000..06a4299322 --- /dev/null +++ b/lib-25519/lib25519/priority/pow-inv25519-amd64-mxaa @@ -0,0 +1,18 @@ +2.780993 11149 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.782988 11157 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.753305 11038 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.762035 11073 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.972470 12309 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.972470 12309 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.977059 12328 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.972953 12311 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.536575 11582 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.551248 11649 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.553438 11659 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.548182 11635 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.561761 11697 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.538984 11593 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.542050 11607 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.565703 11715 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.372569 14029 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.377642 14059 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/pow-inv25519-amd64-safegcd b/lib-25519/lib25519/priority/pow-inv25519-amd64-safegcd new file mode 100644 index 0000000000..fb7f306884 --- /dev/null +++ b/lib-25519/lib25519/priority/pow-inv25519-amd64-safegcd @@ -0,0 +1,18 @@ +1.013719 4064 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.008980 4045 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.012222 4058 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 4009 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 4141 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.033084 4278 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000724 4144 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 4141 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.003066 4580 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002847 4579 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.006570 4596 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002190 4576 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.003942 4584 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.003066 4580 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 4566 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.005694 4592 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 5913 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.006088 5949 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/pow-inv25519-donna_c64 b/lib-25519/lib25519/priority/pow-inv25519-donna_c64 new file mode 100644 index 0000000000..2d93681fe1 --- /dev/null +++ b/lib-25519/lib25519/priority/pow-inv25519-donna_c64 @@ -0,0 +1,40 @@ +1.034708 37026 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 35784 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.478421 58782 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.475654 58672 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.541282 14197 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.538788 14187 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.543777 14207 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.546770 14219 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.574956 14332 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.650786 14636 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.444749 13810 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.247942 13021 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.895194 11989 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.899783 12008 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.269742 13540 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.248249 13451 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.312726 13718 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.334219 13807 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.090075 12796 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.195846 13234 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.212878 14670 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.210907 14661 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.222733 14715 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.204993 14634 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.215287 14681 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.202803 14624 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.115856 14227 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.112790 14213 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.119141 14242 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.143671 14354 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.325449 15184 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.400788 15528 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.172670 12847 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.337561 13822 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.339252 13832 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.749535 16258 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.436327 14406 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.413665 14272 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.149605 29523 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.079047 27711 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/pow-inv25519-ref10 b/lib-25519/lib25519/priority/pow-inv25519-ref10 new file mode 100644 index 0000000000..eea9f3de69 --- /dev/null +++ b/lib-25519/lib25519/priority/pow-inv25519-ref10 @@ -0,0 +1,40 @@ +1.934105 69210 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.899396 67968 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.497032 59522 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.386620 55132 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +7.309803 29305 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +7.300075 29266 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +7.303816 29281 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +7.295834 29249 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +6.630332 26581 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +6.296084 25241 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +6.277376 25166 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +6.590671 26422 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +7.140787 29570 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +7.141995 29575 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +7.140304 29568 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +7.147549 29598 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +5.843275 24197 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.856556 24252 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +6.367303 26367 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.968607 24716 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +6.073149 27730 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +6.098774 27847 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +6.053657 27641 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +6.049496 27622 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +6.156154 28109 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +6.166229 28155 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +5.584100 25497 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.606439 25599 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.583662 25495 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.374945 24542 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.381297 24571 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.608191 25607 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.931169 29158 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +4.933367 29171 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +4.933198 29170 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +4.243869 25094 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.538475 26836 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.280230 25309 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.086367 53580 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.944823 49945 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/pow-inv25519-sandy2x b/lib-25519/lib25519/priority/pow-inv25519-sandy2x new file mode 100644 index 0000000000..bf93ee7520 --- /dev/null +++ b/lib-25519/lib25519/priority/pow-inv25519-sandy2x @@ -0,0 +1,26 @@ +3.250187 13030 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.262410 13079 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.201796 12836 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.189823 12788 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.201048 12833 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.212771 12880 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.905820 12033 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.908718 12045 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.911133 12055 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.896643 11995 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.905578 12032 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.911616 12057 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.221638 14710 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.201270 14617 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.221419 14709 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.199518 14609 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.213316 14672 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +3.229961 14748 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.208279 14649 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.210031 14657 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.215725 14683 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.238283 14786 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.110096 12477 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.107898 12464 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.110435 12479 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +2.107560 12462 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/sign-ed25519-amd64 b/lib-25519/lib25519/priority/sign-ed25519-amd64 new file mode 100644 index 0000000000..7c02adfa39 --- /dev/null +++ b/lib-25519/lib25519/priority/sign-ed25519-amd64 @@ -0,0 +1,40 @@ +1.000000 2159838 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.087232 2348244 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 2336893 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.003139 2344229 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.003545 468562 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001238 467485 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002735 468184 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.003590 468583 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000810 467285 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.008486 470869 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001975 467829 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 466907 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.003301 488974 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 487365 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001303 488000 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.001557 488124 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.006603 490583 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.004793 489701 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.006627 490595 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.002842 488750 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.002520 472280 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002770 472398 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.006173 474001 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.005608 473735 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.002634 472334 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 471093 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000552 471353 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.003651 472813 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.003632 472804 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000274 471222 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.009380 475512 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.004893 473398 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.003336 665803 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 663589 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.005538 667264 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.003576 665962 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.005628 667324 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.001866 664827 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 1443136 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.004495 1449623 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/sign-ed25519-ref10 b/lib-25519/lib25519/priority/sign-ed25519-ref10 new file mode 100644 index 0000000000..c3d735c23b --- /dev/null +++ b/lib-25519/lib25519/priority/sign-ed25519-ref10 @@ -0,0 +1,40 @@ +1.105562 2387835 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.102183 2380536 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.014357 2370443 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.016013 2374314 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.011891 472459 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.013487 473204 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.013048 472999 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.014530 473691 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.008411 470834 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.009280 471240 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.008460 470857 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.013159 473051 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.015846 495088 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.015762 495047 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.013522 493955 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.012348 493383 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.011952 493190 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.012793 493600 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.009449 491970 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.014156 494264 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.018175 479655 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.015169 478239 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.013651 477524 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.014904 478114 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.014381 477868 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.013420 477415 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.008839 475257 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.009484 475561 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.009287 475468 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.007584 474666 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.011953 476724 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.010713 476140 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.013483 672536 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.012542 671912 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.010041 670252 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.007343 668462 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.003306 665783 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.006352 667804 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.004529 1449672 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.003667 1448428 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/priority/verify-32-ref b/lib-25519/lib25519/priority/verify-32-ref new file mode 100644 index 0000000000..bfc4b147b3 --- /dev/null +++ b/lib-25519/lib25519/priority/verify-32-ref @@ -0,0 +1,40 @@ +1.000000 126 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final); Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.357143 171 amd64 756e65476c65746e49656e6965746e492952286c726f43204d54286551203229206461752055504351202020303036362040202030342e32007a4847000006fb030408000000e3bdbfebfbff00000000000000000000000000000000000000000000000000000001201008000000000000000000000000000000000000000000 20220731 ausone gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0; Copyright (C) 2017 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 48 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.020833 97 amd64 756e65476c65746e49656e69202020206e492020286c65745020295269746e6552286d75504320294e202055303037332040202030362e31007a4847000406c30610080043d8e3bfbfebfbff0000000000002282000000000c000000000000000000000000000101281008000000000000000000000000000000000000000000 20220731 nucnuc gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.500000 12 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.500000 12 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.500000 12 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 8 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +4.000000 32 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.000000 32 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.000000 32 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.000000 32 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452030323231203576202e332040484730300000007a00000000000506e3061008007ffafbffbfebfbff00000000029c6fbf00000000bc002e000000000000000000000001212c1008000000001f00000000000000000000000000000000 20220731 samba gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.142857 8 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.142857 8 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 7 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.428571 10 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +4.142857 29 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +3.857143 27 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.000000 28 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +4.000000 28 amd64 756e65476c65746e49656e6965746e492952286c726f43204d542865336920293030352d4320553540205550302e32207a4847300000000000000000000306d4021008007ffafbbfbfebfbff00000000021c27ab000000009c0000000000000000000000000001212c1008000000000700000000000000000000000000000000 20220731 shoe gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.250000 5 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.250000 5 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.250000 5 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.500000 6 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 4 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.250000 5 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; clang version 10.0.0-4ubuntu1 ; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +5.500000 22 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mavx512ifma -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.750000 23 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mavx512f -mavx512vl -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.750000 23 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -madx -mtune=skylake; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +6.000000 24 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +7.250000 29 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +7.500000 30 amd64 756e65476c65746e49656e69687431316e654720746e492052286c656f432029542865726920294d31312d3737473538332040204730302e00007a48000806c1001008007ffafbffbfebfbff00000000f3bfa7eb18c07fdefc1005100000000000000000000001212c100800000002e700000000000000000000000000000000 20220731 tigerlake gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0; Copyright (C) 2019 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.500000 9 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +2.166667 13 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +1.000000 6 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Ubuntu clang version 14.0.0-1ubuntu1; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +5.166667 31 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mbmi -mbmi2 -mavx2 -mtune=haswell; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.333333 32 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mtune=sandybridge; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +5.000000 30 amd64 756e65476c65746e49656e6965746e492952286c6f6558202952286e555043202d33452035373231203376202e332040484730350000007a00000000000306c3061008007ffafbffbfebfbff00000000000027ab000000009c0006000000000000000000000000212c1008000000000700000000000000000000000000000000 20220731 titan0 gcc -Wall -fPIC -fwrapv -O2; gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0; Copyright (C) 2021 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +1.000000 9 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden clang -Wall -fPIC -fwrapv -Qunused-arguments -O2; Debian clang version 11.0.1-2; Target: x86_64-pc-linux-gnu; Thread model: posix; InstalledDir: /usr/bin +5.888889 53 amd64 756e65476c65746e49656e6965746e492952286c6c6543206e6f726520295228205550433534334a2040203530352e31007a48470000000000000000000506c9022008004ff8ebbfbfebfbff000000002294e283000000002c0004000000000000000000000001012c1008000000000000000000000000000000000000000000 20220731 wooden gcc -Wall -fPIC -fwrapv -O2; gcc (Debian 10.2.1-6) 10.2.1 20210110; Copyright (C) 2020 Free Software Foundation, Inc.; This is free software; see the source for copying conditions. There is NO; warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. diff --git a/lib-25519/lib25519/randombytes/devurandom.c b/lib-25519/lib25519/randombytes/devurandom.c new file mode 100644 index 0000000000..7b685dbe11 --- /dev/null +++ b/lib-25519/lib25519/randombytes/devurandom.c @@ -0,0 +1,33 @@ +#include +#include +#include +#include +#include "randombytes.h" + +static int fd = -1; + +void randombytes(unsigned char *x,long long xlen) +{ + int i; + + if (fd == -1) { + for (;;) { + fd = open("/dev/urandom",O_RDONLY); + if (fd != -1) break; + sleep(1); + } + } + + while (xlen > 0) { + if (xlen < 1048576) i = xlen; else i = 1048576; + + i = read(fd,x,i); + if (i < 1) { + sleep(1); + continue; + } + + x += i; + xlen -= i; + } +} diff --git a/lib-25519/lib25519/randombytes/randombytes.h b/lib-25519/lib25519/randombytes/randombytes.h new file mode 100644 index 0000000000..b7e32c770c --- /dev/null +++ b/lib-25519/lib25519/randombytes/randombytes.h @@ -0,0 +1,6 @@ +#ifndef randombytes_h +#define randombytes_h + +extern void randombytes(unsigned char *,long long) __attribute__((visibility("default"))); + +#endif diff --git a/lib-25519/lib25519/scripts-build/checkinsns b/lib-25519/lib25519/scripts-build/checkinsns new file mode 100755 index 0000000000..e4effb4414 --- /dev/null +++ b/lib-25519/lib25519/scripts-build/checkinsns @@ -0,0 +1,229 @@ +#!/usr/bin/env python3 + +import os +import sys +import subprocess + +host = sys.argv[1] + +def warn(w): + sys.stderr.write('warning: %s\n' % w) + fwarn.write('%s\n' % w) + +carch = {} +for c in os.listdir('compilerarch'): + with open('compilerarch/%s' % c) as f: + carch[c] = f.read().strip() + if carch[c] == 'default': carch[c] = host + assert carch[c].split('+')[0] == host + +insns = {} + +with open('scripts/intel-instructions') as f: + for line in f: + mnem,args,ext = line.split() + if mnem not in insns: insns[mnem] = [] + insns[mnem] += [(args,ext)] + +aliases = { + 'movabs':'mov', # XXX + 'movs':'movsb', # XXX + 'stos':'stosb', # XXX + 'cmovnae':'cmovb', + 'cmovc':'cmovb', + 'cmovna':'cmovbe', + 'cmovnge':'cmovl', + 'cmovng':'cmovle', + 'cmovae':'cmovnb', + 'cmovnc':'cmovnb', + 'cmova':'cmovnbe', + 'cmovge':'cmovnl', + 'cmovg':'cmovnle', + 'cmovpo':'cmovnp', + 'cmovne':'cmovnz', + 'cmovpe':'cmovp', + 'cmove':'cmovz', + 'setnae':'setb', + 'setc':'setb', + 'setna':'setbe', + 'setnge':'setl', + 'setng':'setle', + 'setae':'setnb', + 'setnc':'setnb', + 'seta':'setnbe', + 'setge':'setnl', + 'setg':'setnle', + 'setpo':'setnp', + 'setne':'setnz', + 'setpe':'setp', + 'sete':'setz', + 'jnae':'jb', + 'jc':'jb', + 'jna':'jbe', + 'jnge':'jl', + 'jng':'jle', + 'jae':'jnb', + 'jnc':'jnb', + 'ja':'jnbe', + 'jge':'jnl', + 'jg':'jnle', + 'jpo':'jnp', + 'jne':'jnz', + 'jpe':'jp', + 'je':'jz', +} + +def argsmatch(args,insnargs,ext): + if args == '-': + if insnargs == '': + return True + + xmmlimit = 16 + ymmlimit = 16 + if ext.startswith('avx512'): + # XXX: this is really just for avx512vl + xmmlimit = 32 + ymmlimit = 32 + + args = args.split(',') + if args[-2:] == ['base','index']: args = args[:-2] + + insnargs = insnargs.replace('{k0}',',k0') + insnargs = insnargs.replace('{k1}',',k1') + insnargs = insnargs.replace('{k2}',',k2') + insnargs = insnargs.replace('{k3}',',k3') + insnargs = insnargs.replace('{k4}',',k4') + insnargs = insnargs.replace('{k5}',',k5') + insnargs = insnargs.replace('{k6}',',k6') + insnargs = insnargs.replace('{k7}',',k7') + + insnargs = insnargs.split(',') + if len(insnargs) != len(args): return False + for a,i in zip(args,insnargs): + if a in ('r','vr'): + if i not in ('rax','rbx','rcx','rdx','rsi','rdi','rbp','rsp','r8','r9','r10','r11','r12','r13','r14','r15'): + if i not in ('eax','ebx','ecx','edx','esi','edi','ebp','esp','r8d','r9d','r10d','r11d','r12d','r13d','r14d','r15d'): + if i not in ('ax','bx','cx','dx','si','di','sp','bp','r8w','r9w','r10w','r11w','r12w','r13w','r14w','r15w'): + if i not in ('al','bl','cl','dl','ah','bh','ch','dh','sil','dil','bpl','spl','r8b','r9b','r10b','r11b','r12b','r13b','r14b','r15b'): + return False + elif a in ('r8','vr8'): + if i not in ('al','bl','cl','dl','ah','bh','ch','dh','sil','dil','bpl','spl','r8b','r9b','r10b','r11b','r12b','r13b','r14b','r15b'): + return False + elif a in ('r16','vr16'): + if i not in ('ax','bx','cx','dx','si','di','sp','bp','r8w','r9w','r10w','r11w','r12w','r13w','r14w','r15w'): + return False + elif a in ('r32','vr32'): + if i not in ('eax','ebx','ecx','edx','esi','edi','esp','ebp','r8d','r9d','r10d','r11d','r12d','r13d','r14d','r15d'): + return False + elif a in ('r64','vr64'): + if i not in ('rax','rbx','rcx','rdx','rsi','rdi','rsp','rbp','r8','r9','r10','r11','r12','r13','r14','r15'): + return False + elif a == 'xmm': + if i not in ['xmm%d'%j for j in range(xmmlimit)]: + return False + elif a == 'ymm': + if i not in ['ymm%d'%j for j in range(ymmlimit)]: + return False + elif a == 'zmm': + if i not in ['zmm%d'%j for j in range(32)]: + return False + elif a == 'k': + if i not in ('k0','k1','k2','k3','k4','k5','k6','k7'): + return False + elif a in ('m','agen'): + if '[' not in i: + if 'PTR' not in i: + return False + elif a == 'relbr': + if not all(c in '0123456789abcdef' for c in i): + return False + elif a == 'imm': + if not i.startswith('0x'): + if not i.isnumeric(): + return False + else: + return False + return True + +def extok(arch,ext): + arch = arch.split('+')[1:] + if ext in ('base','i86','i186','i286','i386','i486real','longmode','x87','sse','sse2','cmov','fat_nop'): + return True # amd64 guarantees support for these + if ext in ('sse4.1','sse4.2','avx'): return 'avx' in arch + if ext in ('bmi1','bmi2'): return 'bmi2' in arch + if ext == 'adx': return 'adx' in arch + if ext == 'avx2': return 'avx2' in arch + if ext == 'avx512f': return 'avx512f' in arch + if ext == 'avx512vl': return 'avx512vl' in arch + if ext == 'avx512ifma': return 'avx512ifma' in arch + return False # XXX + +def checkinsn(obj,arch,insn): + insn = insn.split() + if host == 'amd64' and insn == ['endbr64']: + return # XXX + if host == 'amd64' and insn == ['xgetbv'] and (obj.startswith('compilers/') or obj.startswith('cpuid/')): + return # assume dispatch code is using xgetbv carefully + while len(insn) >= 1 and insn[0] in ('cs','data16','rep','repe','repz'): + insn = insn[1:] + if len(insn) == 0: return + mnem = insn[0] + if mnem in aliases: + mnem = aliases[mnem] + if mnem not in insns: + warn('unknown mnemonic %s' % mnem) + return + for args,ext in insns[mnem]: + if argsmatch(args,' '.join(insn[1:]),ext): + if not extok(arch,ext): + warn('%s: %s instruction set does not allow %s: %s' % (obj,arch,ext,' '.join(insn))) + return + warn('%s: no args match for %s' % (obj,' '.join(insn))) + +def dir2objs(d): + objs = [d+'/'+fn for fn in os.listdir(d) if fn.endswith('.o')] + if os.path.exists(d+'/dependencies'): + with open(d+'/dependencies') as f: + for line in f: + objs += dir2objs(line.strip()) + return objs + +def doit(d): + if host != 'amd64': + warn('this script does not know how to check instruction-set extensions for %s' % host) + return + + objs = dir2objs(d) + + if len(d.split('/')) < 4: + arch = host # no instruction-set extensions allowed + else: + arch = carch[d.split('/')[3]] + + try: + # XXX: in principle should inspect raw insns for, e.g., EVEX vs. VEX + p = subprocess.Popen(['objdump','-d','-M','intel-mnemonic','-M','intel','--no-show-raw-insn']+objs,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,universal_newlines=True) + out,err = p.communicate() + if err: + warn('objdump error: %s' % err) + elif p.returncode: + warn('objdump failure: %s' % p.returncode) + else: + obj = 'unknown-object-file' + for line in out.splitlines(): + if len(objs) > 0 and line.startswith('%s:'%objs[0]): + obj,objs = objs[0],objs[1:] + if '\t' in line: + line = line[line.index('\t')+1:] + if '#' in line: + line = line[:line.index('#')] + if '<' in line: + line = line[:line.index('<')] + checkinsn(obj,arch,line) + except Exception as e: + warn('objdump failure: %s' % e) + +for d in sys.argv[2:]: + d = d.strip() + with open('%s/warnings-insns'%d,'w') as fwarn: + doit(d) diff --git a/lib-25519/lib25519/scripts-build/checknamespace b/lib-25519/lib25519/scripts-build/checknamespace new file mode 100755 index 0000000000..1a33c23ad4 --- /dev/null +++ b/lib-25519/lib25519/scripts-build/checknamespace @@ -0,0 +1,128 @@ +#!/usr/bin/env python3 + +import os +import sys +import subprocess + +topnamespace = sys.argv[1] + +def warn(w): + sys.stderr.write('warning: %s\n' % w) + fwarn.write('%s\n' % w) + +done = set() + +def doit(d): + if d in done: return + done.add(d) + + if os.path.exists(d+'/dependencies'): + with open(d+'/dependencies') as f: + for line in f: + doit(line.strip()) + + objs = [d+'/'+fn for fn in os.listdir(d) if fn.endswith('.o')] + if len(objs) == 0: return + if len(objs) == 1: obj = objs[0] + + namespace = topnamespace + + dsplit = d.split('/') + if len(dsplit) >= 4: + for dpart in dsplit: + namespace += '_'+dpart.replace('-','').replace('_','') + + obj2R = {} + obj2T = {} + obj2U = {} + + try: + p = subprocess.Popen(['nm','-ApP']+objs,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,universal_newlines=True) + out,err = p.communicate() + except Exception as e: + warn('nm failure: %s' % e) + return + if err: + warn('nm error: %s' % err) + return + if p.returncode: + warn('nm failure: %s' % p.returncode) + return + + for line in out.splitlines(): + line = line.split() + if len(line) < 3: continue + if not line[0].endswith(':'): continue + if line[2].startswith('b'): continue + if line[2].startswith('d'): continue + if line[2].startswith('r'): continue + if line[2].startswith('t'): continue + + obj = line[0][:-1] + if obj not in obj2U: + obj2U[obj] = [] + obj2R[obj] = [] + obj2T[obj] = [] + + symbol = line[1] + if symbol.startswith('__odr_asan.'): symbol = symbol[11:] + if symbol.startswith('__x86.get_pc_thunk.'): continue + + ssplit = symbol.split('_') + if len(ssplit) >= 6 and ssplit[0] in ('lib25519','_lib25519'): + ssplit = '_'.join(ssplit[5:]) + if line[2].startswith('U'): obj2U[obj] += [ssplit] + if line[2].startswith('R'): obj2R[obj] += [ssplit] + if line[2].startswith('T'): obj2T[obj] += [ssplit] + + if line[2].startswith('U'): continue + + if symbol == namespace: continue + if symbol == '_'+namespace: continue + if symbol.startswith(namespace+'_'): continue + if symbol.startswith('_'+namespace+'_'): continue + + warn('%s: symbol %s outside namespace' % (obj,symbol)) + + for fn in os.listdir(d): + if fn.endswith('.c') or fn.endswith('.S'): + obj = d+'/'+fn[:-2]+'.o' + if obj not in obj2U: continue + + fnD = [] + fnU = [] + + with open(d+'/'+fn) as f: + for line in f: + line = line.split() + if line[:3] == ['//','linker','define']: + for x in line[3:]: + fnD += [x] + if line[:3] == ['//','linker','use']: + for x in line[3:]: + fnU += [x] + + if len(fnD) == 0 and len(fnU) == 0: continue + fnD = set(fnD) + fnU = set(fnU) + objD = set(obj2T[obj]).union(set(obj2R[obj])) + objU = set(obj2U[obj]) + + for s in sorted(fnD): + if s not in objD: + warn('%s: linker define %s in %s but not in object file' % (d,s,fn)) + for s in sorted(fnU): + if s not in objU: + warn('%s: linker use %s in %s but not in object file' % (d,s,fn)) + + for s in sorted(objD): + if s not in fnD: + warn('%s: linker define %s not in %s but in object file' % (d,s,fn)) + for s in sorted(objU): + if s not in fnU: + warn('%s: linker use %s not in %s but in object file' % (d,s,fn)) + +for d in sys.argv[2:]: + d = d.strip() + with open('%s/warnings-namespace'%d,'w') as fwarn: + doit(d) diff --git a/lib-25519/lib25519/scripts-build/compiledimplementations b/lib-25519/lib25519/scripts-build/compiledimplementations new file mode 100755 index 0000000000..52743de52c --- /dev/null +++ b/lib-25519/lib25519/scripts-build/compiledimplementations @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 + +import os +import sys + +def ok(d): + for fn in os.listdir(d): + if fn.endswith('.o.compilefailed'): + return False + if os.path.exists(d+'/dependencies'): + with open(d+'/dependencies') as f: + for line in f: + if not ok(line.strip()): + return False + return True + +for line in sys.stdin: + d = line.strip() + if ok(d): + print(d) diff --git a/lib-25519/lib25519/scripts-build/dispatch b/lib-25519/lib25519/scripts-build/dispatch new file mode 100755 index 0000000000..189a563c69 --- /dev/null +++ b/lib-25519/lib25519/scripts-build/dispatch @@ -0,0 +1,210 @@ +#!/usr/bin/env python3 + +import os +import sys +import re + +def cstring(x): + return '"%s"' % x.replace('\\','\\\\').replace('"','\\"').replace('\n','\\n') + +def sanitize(x): + x = x.replace('-','').replace('_','') + return ''.join(c if c in '0123456789abcdefghijklmnopqrstuvwxyz' else '_' for c in x) + +exports = {} +prototypes = {} + +with open('api') as f: + for line in f: + line = line.strip() + if line.startswith('crypto_'): + continue + if line.startswith('#define '): + continue + if line.endswith(');'): + fun,args = line[:-2].split('(') + rettype,fun = fun.split() + fun = fun.split('_') + o = fun[1] + assert fun[0] == 'crypto' + if o not in exports: exports[o] = [] + exports[o] += ['_'.join(fun[1:])] + if o not in prototypes: prototypes[o] = [] + prototypes[o] += [(rettype,fun,args)] + +goal = sys.argv[1] +assert goal in ('auto','manual') +o = sys.argv[2] +p = sys.argv[3] +host = sys.argv[4] + +impls = [] +selected = [] +usedimpls = set() +allarches = [] + +for line in sys.stdin: + line = line.split() + if line[0] == 'impl': + impls += [line[1:]] + if line[0] == 'selected': + a,i,c = line[1:] + allarches += [a] + selected += [(a,i,c)] + usedimpls.add((i,c)) + +icarch = {} +iccompiler = {} + +for i,c in impls: + with open('compilerarch/%s' % c) as f: + icarch[i,c] = f.read().strip() + with open('compilerversion/%s' % c) as f: + iccompiler[i,c] = f.read().strip() + +if goal == 'manual': + allarches = [a for a in allarches if any(a == icarch[i,c] for i,c in impls)] + +if goal == 'auto': + print('extern const char *lib25519_%s_%s_implementation(void) __attribute__((visibility("default")));' % (o,p)) + print('extern const char *lib25519_%s_%s_compiler(void) __attribute__((visibility("default")));' % (o,p)) +else: + print('extern const char *lib25519_%s_%s_implementation(void);' % (o,p)) + print('extern const char *lib25519_%s_%s_compiler(void);' % (o,p)) + print('extern const char *lib25519_dispatch_%s_%s_implementation(long long) __attribute__((visibility("default")));' % (o,p)) + print('extern const char *lib25519_dispatch_%s_%s_compiler(long long) __attribute__((visibility("default")));' % (o,p)) + print('extern long long lib25519_numimpl_%s_%s(void) __attribute__((visibility("default")));' % (o,p)) + +for a in allarches: + if a == 'default': continue + a_csymbol = sanitize(a) + print('extern int lib25519_supports_%s(void);' % a_csymbol) +if len(allarches) > 1: print('') + +def printfun_auto(which,fun=None): + if which == 'resolver': + shortfun = '_'.join(fun[1:]) + pshortfun = '_'.join([o,p]+fun[2:]) + print('void *lib25519_auto_%s(void)' % (pshortfun)) + elif which == 'implementation': + print('const char *lib25519_%s_%s_implementation(void)' % (o,p)) + elif which == 'compiler': + print('const char *lib25519_%s_%s_compiler(void)' % (o,p)) + else: + raise ValueError('unknown printfun %s' % which) + print('{') + for a,i,c in selected: + cond = '' + if a != 'default': + cond = 'if (lib25519_supports_%s()) ' % sanitize(a) + if which == 'resolver': + print(' %sreturn lib25519_%s_%s_%s_%s_%s;' % (cond,o,p,sanitize(i),c,shortfun)) + if which == 'implementation': + print(' %sreturn %s;' % (cond,cstring(i))) + if which == 'compiler': + print(' %sreturn %s;' % (cond,cstring(iccompiler[i,c]))) + if a == 'default': break + print('}') + + if which == 'resolver': + print('') + print('%s lib25519_%s(%s) __attribute__((visibility("default"))) __attribute__((ifunc("lib25519_auto_%s")));' % (rettype,pshortfun,args,pshortfun)) + +for rettype,fun,args in prototypes[o]: + shortfun = '_'.join(fun[1:]) + pshortfun = '_'.join([o,p]+fun[2:]) + if goal == 'auto': + print('extern %s lib25519_%s(%s) __attribute__((visibility("default")));' % (rettype,pshortfun,args)) + else: + print('extern %s lib25519_%s(%s);' % (rettype,pshortfun,args)) + print('extern %s (*lib25519_dispatch_%s(long long))(%s) __attribute__((visibility("default")));' % (rettype,pshortfun,args)) + print('') + for i,c in impls: + if goal == 'auto': + if (i,c) not in usedimpls: + continue + print('extern %s lib25519_%s_%s_%s_%s_%s(%s) __attribute__((visibility("default")));' % (rettype,o,p,sanitize(i),c,shortfun,args)) + print('') + if goal == 'auto': + printfun_auto('resolver',fun) + if goal == 'manual': + namedparams = args.split(',') + for i in range(len(namedparams)): + if namedparams[i][-1] != '*': + namedparams[i] += ' ' + namedparams[i] += 'arg%d'%i + namedparams = ','.join(namedparams) + print('%s (*lib25519_dispatch_%s(long long impl))(%s)' % (rettype,pshortfun,args)) + print('{') + for a in allarches: + if a == 'default': continue + a_csymbol = sanitize(a) + print(' int supports_%s = lib25519_supports_%s();' % (a_csymbol,a_csymbol)) + print(' if (impl >= 0) {') + for i,c in impls: + a = icarch[i,c] + a_csymbol = sanitize(a) + if a == 'default': + print(' if (!impl--) return lib25519_%s_%s_%s_%s_%s;' % (o,p,sanitize(i),c,shortfun)) + else: + print(' if (supports_%s) if (!impl--) return lib25519_%s_%s_%s_%s_%s;' % (a_csymbol,o,p,sanitize(i),c,shortfun)) + print(' }') + print(' return lib25519_%s;' % (pshortfun)) + print('}') + print('') + +if goal == 'auto': + printfun_auto('implementation') + print('') + printfun_auto('compiler') +else: + print('const char *lib25519_dispatch_%s_%s_implementation(long long impl)' % (o,p)) + print('{') + for a in allarches: + if a == 'default': continue + a_csymbol = sanitize(a) + print(' int supports_%s = lib25519_supports_%s();' % (a_csymbol,a_csymbol)) + print(' if (impl >= 0) {') + for i,c in impls: + a = icarch[i,c] + a_csymbol = sanitize(a) + if a == 'default': + print(' if (!impl--) return %s;' % (cstring(i))) + else: + print(' if (supports_%s) if (!impl--) return %s;' % (a_csymbol,cstring(i))) + print(' }') + print(' return lib25519_%s_%s_implementation();' % (o,p)) + print('}') + print('') + + print('const char *lib25519_dispatch_%s_%s_compiler(long long impl)' % (o,p)) + print('{') + for a in allarches: + if a == 'default': continue + a_csymbol = sanitize(a) + print(' int supports_%s = lib25519_supports_%s();' % (a_csymbol,a_csymbol)) + print(' if (impl >= 0) {') + for i,c in impls: + a = icarch[i,c] + a_csymbol = sanitize(a) + if a == 'default': + print(' if (!impl--) return %s;' % (cstring(iccompiler[i,c]))) + else: + print(' if (supports_%s) if (!impl--) return %s;' % (a_csymbol,cstring(iccompiler[i,c]))) + print(' }') + print(' return lib25519_%s_%s_compiler();' % (o,p)) + print('}') + print('') + + print('long long lib25519_numimpl_%s_%s(void)' % (o,p)) + print('{') + numimpla = sum(1 for (i,c) in impls if icarch[i,c] == 'default') + numimpl = ['%d' % numimpla] + for a in allarches: + if a == 'default': continue + a_csymbol = sanitize(a) + print(' long long supports_%s = lib25519_supports_%s();' % (a_csymbol,a_csymbol)) + numimpla = sum(1 for (i,c) in impls if icarch[i,c] == a) + numimpl += ['supports_%s*%d' % (a_csymbol,numimpla)] + print(' return %s;' % '+'.join(numimpl)) + print('}') diff --git a/lib-25519/lib25519/scripts-build/install b/lib-25519/lib25519/scripts-build/install new file mode 100755 index 0000000000..47cf82e267 --- /dev/null +++ b/lib-25519/lib25519/scripts-build/install @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 + +import os +import sys +import shutil +import tempfile + +os.umask(0o22) + +prefix = sys.argv[1] +libdir = '%s/lib'%prefix +includedir = '%s/include'%prefix +bindir = '%s/bin'%prefix + +os.makedirs(libdir,exist_ok=True) +os.makedirs(includedir,exist_ok=True) +os.makedirs(bindir,exist_ok=True) + +os.umask(0o77) + +with tempfile.TemporaryDirectory(dir=libdir) as t: + for fn in sorted(os.listdir('package/lib')): + shutil.copy2('package/lib/%s' % fn,'%s/%s' % (t,fn),follow_symlinks=False) + os.rename('%s/%s' % (t,fn),'%s/%s' % (libdir,fn)) + +with tempfile.TemporaryDirectory(dir=includedir) as t: + for fn in sorted(os.listdir('package/include')): + shutil.copy2('package/include/%s' % fn,'%s/%s' % (t,fn),follow_symlinks=False) + os.rename('%s/%s' % (t,fn),'%s/%s' % (includedir,fn)) + +with tempfile.TemporaryDirectory(dir=bindir) as t: + for fn in sorted(os.listdir('package/bin')): + shutil.copy2('package/bin/%s' % fn,'%s/%s' % (t,fn),follow_symlinks=False) + os.rename('%s/%s' % (t,fn),'%s/%s' % (bindir,fn)) diff --git a/lib-25519/lib25519/scripts-build/intel-instructions b/lib-25519/lib25519/scripts-build/intel-instructions new file mode 100644 index 0000000000..ef3e41e094 --- /dev/null +++ b/lib-25519/lib25519/scripts-build/intel-instructions @@ -0,0 +1,10436 @@ +aaa - i86 +aad imm i86 +aam imm i86 +aas - i86 +adc m,imm i86 +adc m,r i86 +adc m,r8 i86 +adc r,imm i86 +adc r,m i86 +adc r,r i86 +adc r8,imm i86 +adc r8,m i86 +adc r8,r8 i86 +adcx r32,m adx +adcx r32,r32 adx +adcx r64,m adx +adcx r64,r64 adx +add m,imm i86 +add m,r i86 +add m,r8 i86 +add r,imm i86 +add r,m i86 +add r,r i86 +add r8,imm i86 +add r8,m i86 +add r8,r8 i86 +addpd xmm,m sse2 +addpd xmm,xmm sse2 +addps xmm,m sse +addps xmm,xmm sse +addsd xmm,m sse2 +addsd xmm,xmm sse2 +addss xmm,m sse +addss xmm,xmm sse +addsubpd xmm,m sse3 +addsubpd xmm,xmm sse3 +addsubps xmm,m sse3 +addsubps xmm,xmm sse3 +adox r32,m adx +adox r32,r32 adx +adox r64,m adx +adox r64,r64 adx +aesdec xmm,m aes +aesdec xmm,xmm aes +aesdec128kl xmm,m keylocker +aesdec256kl xmm,m keylocker +aesdeclast xmm,m aes +aesdeclast xmm,xmm aes +aesdecwide128kl m keylocker_wide +aesdecwide256kl m keylocker_wide +aesenc xmm,m aes +aesenc xmm,xmm aes +aesenc128kl xmm,m keylocker +aesenc256kl xmm,m keylocker +aesenclast xmm,m aes +aesenclast xmm,xmm aes +aesencwide128kl m keylocker_wide +aesencwide256kl m keylocker_wide +aesimc xmm,m aes +aesimc xmm,xmm aes +aeskeygenassist xmm,m,imm aes +aeskeygenassist xmm,xmm,imm aes +and m,imm i86 +and m,r i86 +and m,r8 i86 +and r,imm i86 +and r,m i86 +and r,r i86 +and r8,imm i86 +and r8,m i86 +and r8,r8 i86 +andn vr32,vr32,m bmi1 +andn vr32,vr32,vr32 bmi1 +andn vr64,vr64,m bmi1 +andn vr64,vr64,vr64 bmi1 +andnpd xmm,m sse2 +andnpd xmm,xmm sse2 +andnps xmm,m sse +andnps xmm,xmm sse +andpd xmm,m sse2 +andpd xmm,xmm sse2 +andps xmm,m sse +andps xmm,xmm sse +arpl m,r16 i286protected +arpl r16,r16 i286protected +bextr vr32,m,vr32 bmi1 +bextr vr32,vr32,vr32 bmi1 +bextr vr64,m,vr64 bmi1 +bextr vr64,vr64,vr64 bmi1 +blcfill vr,m tbm +blcfill vr,vr tbm +blcfill vr32,m tbm +blcfill vr32,vr32 tbm +blci vr,m tbm +blci vr,vr tbm +blci vr32,m tbm +blci vr32,vr32 tbm +blcic vr,m tbm +blcic vr,vr tbm +blcic vr32,m tbm +blcic vr32,vr32 tbm +blcmsk vr,m tbm +blcmsk vr,vr tbm +blcmsk vr32,m tbm +blcmsk vr32,vr32 tbm +blcs vr,m tbm +blcs vr,vr tbm +blcs vr32,m tbm +blcs vr32,vr32 tbm +blendpd xmm,m,imm sse4.1 +blendpd xmm,xmm,imm sse4.1 +blendps xmm,m,imm sse4.1 +blendps xmm,xmm,imm sse4.1 +blendvpd xmm,m sse4.1 +blendvpd xmm,xmm sse4.1 +blendvps xmm,m sse4.1 +blendvps xmm,xmm sse4.1 +blsfill vr,m tbm +blsfill vr,vr tbm +blsfill vr32,m tbm +blsfill vr32,vr32 tbm +blsi vr32,m bmi1 +blsi vr32,vr32 bmi1 +blsi vr64,m bmi1 +blsi vr64,vr64 bmi1 +blsic vr,m tbm +blsic vr,vr tbm +blsic vr32,m tbm +blsic vr32,vr32 tbm +blsmsk vr32,m bmi1 +blsmsk vr32,vr32 bmi1 +blsmsk vr64,m bmi1 +blsmsk vr64,vr64 bmi1 +blsr vr32,m bmi1 +blsr vr32,vr32 bmi1 +blsr vr64,m bmi1 +blsr vr64,vr64 bmi1 +bndcl bnd,agen mpx +bndcl bnd,r32 mpx +bndcl bnd,r64 mpx +bndcn bnd,agen mpx +bndcn bnd,r32 mpx +bndcn bnd,r64 mpx +bndcu bnd,agen mpx +bndcu bnd,r32 mpx +bndcu bnd,r64 mpx +bndldx bnd,m mpx +bndmk bnd,agen mpx +bndmov bnd,bnd mpx +bndmov bnd,m mpx +bndmov m,bnd mpx +bndstx m,bnd mpx +bound r,m i186 +bsf r,m i386 +bsf r,r i386 +bsr r,m i386 +bsr r,r i386 +bswap r i486real +bt m,imm i386 +bt m,r i386 +bt r,imm i386 +bt r,r i386 +btc m,imm i386 +btc m,r i386 +btc r,imm i386 +btc r,r i386 +btr m,imm i386 +btr m,r i386 +btr r,imm i386 +btr r,r i386 +bts m,imm i386 +bts m,r i386 +bts r,imm i386 +bts r,r i386 +bzhi vr32,m,vr32 bmi2 +bzhi vr32,vr32,vr32 bmi2 +bzhi vr64,m,vr64 bmi2 +bzhi vr64,vr64,vr64 bmi2 +call relbr base +cbw - i86 +cdq - i386 +cdqe - longmode +clac - smap +clc - i86 +cld - i86 +cldemote m cldemote +clevict0 m kncv +clevict1 m kncv +clflush m clfsh +clflushopt m clflushopt +clgi - svm +cli - i86 +clrssbsy m cet +clts - i286real +clui - uintr +clwb m clwb +clzero - clzero +cmc - i86 +cmovb r,m cmov +cmovb r,r cmov +cmovbe r,m cmov +cmovbe r,r cmov +cmovl r,m cmov +cmovl r,r cmov +cmovle r,m cmov +cmovle r,r cmov +cmovnb r,m cmov +cmovnb r,r cmov +cmovnbe r,m cmov +cmovnbe r,r cmov +cmovnl r,m cmov +cmovnl r,r cmov +cmovnle r,m cmov +cmovnle r,r cmov +cmovno r,m cmov +cmovno r,r cmov +cmovnp r,m cmov +cmovnp r,r cmov +cmovns r,m cmov +cmovns r,r cmov +cmovnz r,m cmov +cmovnz r,r cmov +cmovo r,m cmov +cmovo r,r cmov +cmovp r,m cmov +cmovp r,r cmov +cmovs r,m cmov +cmovs r,r cmov +cmovz r,m cmov +cmovz r,r cmov +cmp m,imm i86 +cmp m,r i86 +cmp m,r8 i86 +cmp r,imm i86 +cmp r,m i86 +cmp r,r i86 +cmp r8,imm i86 +cmp r8,m i86 +cmp r8,r8 i86 +cmppd xmm,m,imm sse2 +cmppd xmm,xmm,imm sse2 +cmpps xmm,m,imm sse +cmpps xmm,xmm,imm sse +cmpsb - i86 +cmpsd - i386 +cmpsq - longmode +cmpss xmm,m,imm sse +cmpss xmm,xmm,imm sse +cmpsw - i86 +cmpxchg m,r i486real +cmpxchg m,r8 i486real +cmpxchg r,r i486real +cmpxchg r8,r8 i486real +cmpxchg16b m cmpxchg16b +cmpxchg8b m pentiumreal +comisd xmm,m sse2 +comisd xmm,xmm sse2 +comiss xmm,m sse +comiss xmm,xmm sse +cpuid - i486real +cqo - longmode +crc32 r,m sse4.2 +crc32 r,r sse4.2 +crc32 r,r8 sse4.2 +cvtdq2pd xmm,m sse2 +cvtdq2pd xmm,xmm sse2 +cvtdq2ps xmm,m sse2 +cvtdq2ps xmm,xmm sse2 +cvtpd2dq xmm,m sse2 +cvtpd2dq xmm,xmm sse2 +cvtpd2pi mm,m sse2 +cvtpd2pi mm,xmm sse2 +cvtpd2ps xmm,m sse2 +cvtpd2ps xmm,xmm sse2 +cvtpi2pd xmm,m sse2 +cvtpi2pd xmm,mm sse2 +cvtpi2ps xmm,m sse +cvtpi2ps xmm,mm sse +cvtps2dq xmm,m sse2 +cvtps2dq xmm,xmm sse2 +cvtps2pd xmm,m sse2 +cvtps2pd xmm,xmm sse2 +cvtps2pi mm,m sse +cvtps2pi mm,xmm sse +cvtsd2si r32,m sse2 +cvtsd2si r32,xmm sse2 +cvtsd2si r64,m sse2 +cvtsd2si r64,xmm sse2 +cvtsd2ss xmm,m sse2 +cvtsd2ss xmm,xmm sse2 +cvtsi2sd xmm,m sse2 +cvtsi2sd xmm,r32 sse2 +cvtsi2sd xmm,r64 sse2 +cvtsi2ss xmm,m sse +cvtsi2ss xmm,r32 sse +cvtsi2ss xmm,r64 sse +cvtss2sd xmm,m sse2 +cvtss2sd xmm,xmm sse2 +cvtss2si r32,m sse +cvtss2si r32,xmm sse +cvtss2si r64,m sse +cvtss2si r64,xmm sse +cvttpd2dq xmm,m sse2 +cvttpd2dq xmm,xmm sse2 +cvttpd2pi mm,m sse2 +cvttpd2pi mm,xmm sse2 +cvttps2dq xmm,m sse2 +cvttps2dq xmm,xmm sse2 +cvttps2pi mm,m sse +cvttps2pi mm,xmm sse +cvttsd2si r32,m sse2 +cvttsd2si r32,xmm sse2 +cvttsd2si r64,m sse2 +cvttsd2si r64,xmm sse2 +cvttss2si r32,m sse +cvttss2si r32,xmm sse +cvttss2si r64,m sse +cvttss2si r64,xmm sse +cwd - i86 +cwde - i386 +daa - i86 +das - i86 +dec m i86 +dec r i86 +dec r8 i86 +delay r32 kncv +delay r64 kncv +div m i86 +div r i86 +div r8 i86 +divpd xmm,m sse2 +divpd xmm,xmm sse2 +divps xmm,m sse +divps xmm,xmm sse +divsd xmm,m sse2 +divsd xmm,xmm sse2 +divss xmm,m sse +divss xmm,xmm sse +dppd xmm,m,imm sse4.1 +dppd xmm,xmm,imm sse4.1 +dpps xmm,m,imm sse4.1 +dpps xmm,xmm,imm sse4.1 +emms - pentiummmx +encls - sgx +enclu - sgx +enclv - sgx_enclv +encodekey128 r32,r32 keylocker +encodekey256 r32,r32 keylocker +endbr32 - cet +endbr64 - cet +enqcmd r,m enqcmd +enqcmds r,m enqcmd +enter imm,imm i186 +extractps m,xmm,imm sse4.1 +extractps r32,xmm,imm sse4.1 +extrq xmm,imm,imm sse4a +extrq xmm,xmm sse4a +f2xm1 - x87 +fabs - x87 +fadd x87,m x87 +fadd x87,x87 x87 +faddp x87,x87 x87 +fbld x87,m x87 +fbstp m,x87 x87 +fchs - x87 +fcmovb x87,x87 fcmov +fcmovbe x87,x87 fcmov +fcmove x87,x87 fcmov +fcmovnb x87,x87 fcmov +fcmovnbe x87,x87 fcmov +fcmovne x87,x87 fcmov +fcmovnu x87,x87 fcmov +fcmovu x87,x87 fcmov +fcom x87,m x87 +fcom x87,x87 x87 +fcomi x87,x87 fcomi +fcomip x87,x87 fcomi +fcomp x87,m x87 +fcomp x87,x87 x87 +fcompp - x87 +fcos - x87 +fdecstp - x87 +fdiv x87,m x87 +fdiv x87,x87 x87 +fdivp x87,x87 x87 +fdivr x87,m x87 +fdivr x87,x87 x87 +fdivrp x87,x87 x87 +femms - 3dnow +ffree x87 x87 +ffreep x87 x87 +fiadd x87,m x87 +ficom x87,m x87 +ficomp x87,m x87 +fidiv x87,m x87 +fidivr x87,m x87 +fild x87,m x87 +fimul x87,m x87 +fincstp - x87 +fist m,x87 x87 +fistp m,x87 x87 +fisttp m,x87 sse3 +fisttp m,x87 sse3x87 +fisub x87,m x87 +fisubr x87,m x87 +fld x87,m x87 +fld x87,x87 x87 +fld1 - x87 +fldcw m x87 +fldenv m x87 +fldl2e - x87 +fldl2t - x87 +fldlg2 - x87 +fldln2 - x87 +fldpi - x87 +fldz - x87 +fmul x87,m x87 +fmul x87,x87 x87 +fmulp x87,x87 x87 +fnclex - x87 +fninit - x87 +fnop - x87 +fnsave m x87 +fnstcw m x87 +fnstenv m x87 +fnstsw m x87 +fnstsw r16 x87 +fpatan - x87 +fprem - x87 +fprem1 - x87 +fptan - x87 +frndint - x87 +frstor m x87 +fscale - x87 +fsin - x87 +fsincos - x87 +fsqrt - x87 +fst m,x87 x87 +fst x87,x87 x87 +fstp m,x87 x87 +fstp x87,x87 x87 +fstpnce x87,x87 x87 +fsub x87,m x87 +fsub x87,x87 x87 +fsubp x87,x87 x87 +fsubr x87,m x87 +fsubr x87,x87 x87 +fsubrp x87,x87 x87 +ftst - x87 +fucom x87,x87 x87 +fucomi x87,x87 fcomi +fucomip x87,x87 fcomi +fucomp x87,x87 x87 +fucompp - x87 +fwait - x87 +fxam - x87 +fxch x87,x87 x87 +fxrstor m fxsave +fxrstor64 m fxsave64 +fxsave m fxsave +fxsave64 m fxsave64 +fxtract - x87 +fyl2x - x87 +fyl2xp1 - x87 +getsec - smx +gf2p8affineinvqb xmm,m,imm gfni +gf2p8affineinvqb xmm,xmm,imm gfni +gf2p8affineqb xmm,m,imm gfni +gf2p8affineqb xmm,xmm,imm gfni +gf2p8mulb xmm,m gfni +gf2p8mulb xmm,xmm gfni +haddpd xmm,m sse3 +haddpd xmm,xmm sse3 +haddps xmm,m sse3 +haddps xmm,xmm sse3 +hlt - i86 +hreset imm hreset +hsubpd xmm,m sse3 +hsubpd xmm,xmm sse3 +hsubps xmm,m sse3 +hsubps xmm,xmm sse3 +idiv m i86 +idiv r i86 +idiv r8 i86 +imul m i86 +imul r i86 +imul r,m i86 +imul r,m,imm i186 +imul r,r i86 +imul r,r,imm i186 +imul r8 i86 +in r,imm i86 +in r,r16 i86 +in r8,imm i86 +in r8,r16 i86 +inc m i86 +inc r i86 +inc r8 i86 +incsspd r32 cet +incsspq r64 cet +insb - i186 +insd - i386 +insertps xmm,m,imm sse4.1 +insertps xmm,xmm,imm sse4.1 +insertq xmm,xmm sse4a +insertq xmm,xmm,imm,imm sse4a +insw - i186 +int imm i86 +int1 - i86 +int3 - i86 +into - i86 +invd - i486real +invept r32,m vtx +invept r64,m vtx +invlpg m i486real +invlpga r,r32 svm +invlpgb r32,r32,r32 amd_invlpgb +invlpgb r64,r32,r32 amd_invlpgb +invpcid r32,m invpcid +invpcid r64,m invpcid +invvpid r32,m vtx +invvpid r64,m vtx +iret - i86 +iretd - i386 +iretq - longmode +jb relbr i86 +jbe relbr i86 +jcxz relbr i386 +jecxz relbr i386 +jknzd k,relbr kncjkbr +jknzd relbr kncjkbr +jkzd k,relbr kncjkbr +jkzd relbr kncjkbr +jl relbr i86 +jle relbr i86 +jmp m i86 +jmp r i86 +jmp relbr i86 +jnb relbr i86 +jnbe relbr i86 +jnl relbr i86 +jnle relbr i86 +jno relbr i86 +jnp relbr i86 +jns relbr i86 +jnz relbr i86 +jo relbr i86 +jp relbr i86 +jrcxz relbr longmode +js relbr i86 +jz relbr i86 +kaddb - avx512dq +kaddb k avx512dq +kaddb k,k avx512dq +kaddb k,k,k avx512dq +kaddd - avx512bw +kaddd k avx512bw +kaddd k,k avx512bw +kaddd k,k,k avx512bw +kaddq - avx512bw +kaddq k avx512bw +kaddq k,k avx512bw +kaddq k,k,k avx512bw +kaddw - avx512dq +kaddw k avx512dq +kaddw k,k avx512dq +kaddw k,k,k avx512dq +kand - kncv +kand k kncv +kand k,k kncv +kandb - avx512dq +kandb k avx512dq +kandb k,k avx512dq +kandb k,k,k avx512dq +kandd - avx512bw +kandd k avx512bw +kandd k,k avx512bw +kandd k,k,k avx512bw +kandn - kncv +kandn k kncv +kandn k,k kncv +kandnb - avx512dq +kandnb k avx512dq +kandnb k,k avx512dq +kandnb k,k,k avx512dq +kandnd - avx512bw +kandnd k avx512bw +kandnd k,k avx512bw +kandnd k,k,k avx512bw +kandnq - avx512bw +kandnq k avx512bw +kandnq k,k avx512bw +kandnq k,k,k avx512bw +kandnr - kncv +kandnr k kncv +kandnr k,k kncv +kandnw - avx512f +kandnw k avx512f +kandnw k,k avx512f +kandnw k,k,k avx512f +kandq - avx512bw +kandq k avx512bw +kandq k,k avx512bw +kandq k,k,k avx512bw +kandw - avx512f +kandw k avx512f +kandw k,k avx512f +kandw k,k,k avx512f +kconcath r64 kncv +kconcath r64,k kncv +kconcath r64,k,k kncv +kconcatl r64 kncv +kconcatl r64,k kncv +kconcatl r64,k,k kncv +kextract k,r64,imm kncv +kextract r64,imm kncv +kmerge2l1h - kncv +kmerge2l1h k kncv +kmerge2l1h k,k kncv +kmerge2l1l - kncv +kmerge2l1l k kncv +kmerge2l1l k,k kncv +kmov - kncv +kmov k kncv +kmov k,k kncv +kmov k,r32 kncv +kmov r32 kncv +kmov r32,k kncv +kmovb - avx512dq +kmovb k avx512dq +kmovb k,k avx512dq +kmovb k,m avx512dq +kmovb k,r32 avx512dq +kmovb m avx512dq +kmovb m,k avx512dq +kmovb r32 avx512dq +kmovb r32,k avx512dq +kmovd - avx512bw +kmovd k avx512bw +kmovd k,k avx512bw +kmovd k,m avx512bw +kmovd k,r32 avx512bw +kmovd m avx512bw +kmovd m,k avx512bw +kmovd r32 avx512bw +kmovd r32,k avx512bw +kmovq - avx512bw +kmovq k avx512bw +kmovq k,k avx512bw +kmovq k,m avx512bw +kmovq k,r64 avx512bw +kmovq m avx512bw +kmovq m,k avx512bw +kmovq r64 avx512bw +kmovq r64,k avx512bw +kmovw - avx512f +kmovw k avx512f +kmovw k,k avx512f +kmovw k,m avx512f +kmovw k,r32 avx512f +kmovw m avx512f +kmovw m,k avx512f +kmovw r32 avx512f +kmovw r32,k avx512f +knot - kncv +knot k kncv +knot k,k kncv +knotb - avx512dq +knotb k avx512dq +knotb k,k avx512dq +knotd - avx512bw +knotd k avx512bw +knotd k,k avx512bw +knotq - avx512bw +knotq k avx512bw +knotq k,k avx512bw +knotw - avx512f +knotw k avx512f +knotw k,k avx512f +kor - kncv +kor k kncv +kor k,k kncv +korb - avx512dq +korb k avx512dq +korb k,k avx512dq +korb k,k,k avx512dq +kord - avx512bw +kord k avx512bw +kord k,k avx512bw +kord k,k,k avx512bw +korq - avx512bw +korq k avx512bw +korq k,k avx512bw +korq k,k,k avx512bw +kortestb - avx512dq +kortestb k avx512dq +kortestb k,k avx512dq +kortestd - avx512bw +kortestd - kncv +kortestd k avx512bw +kortestd k kncv +kortestd k,k avx512bw +kortestd k,k kncv +kortestq - avx512bw +kortestq k avx512bw +kortestq k,k avx512bw +kortestw - avx512f +kortestw k avx512f +kortestw k,k avx512f +korw - avx512f +korw k avx512f +korw k,k avx512f +korw k,k,k avx512f +kshiftlb imm avx512dq +kshiftlb k,imm avx512dq +kshiftlb k,k,imm avx512dq +kshiftld imm avx512bw +kshiftld k,imm avx512bw +kshiftld k,k,imm avx512bw +kshiftlq imm avx512bw +kshiftlq k,imm avx512bw +kshiftlq k,k,imm avx512bw +kshiftlw imm avx512f +kshiftlw k,imm avx512f +kshiftlw k,k,imm avx512f +kshiftrb imm avx512dq +kshiftrb k,imm avx512dq +kshiftrb k,k,imm avx512dq +kshiftrd imm avx512bw +kshiftrd k,imm avx512bw +kshiftrd k,k,imm avx512bw +kshiftrq imm avx512bw +kshiftrq k,imm avx512bw +kshiftrq k,k,imm avx512bw +kshiftrw imm avx512f +kshiftrw k,imm avx512f +kshiftrw k,k,imm avx512f +ktestb - avx512dq +ktestb k avx512dq +ktestb k,k avx512dq +ktestd - avx512bw +ktestd k avx512bw +ktestd k,k avx512bw +ktestq - avx512bw +ktestq k avx512bw +ktestq k,k avx512bw +ktestw - avx512dq +ktestw k avx512dq +ktestw k,k avx512dq +kunpckbw - avx512f +kunpckbw k avx512f +kunpckbw k,k avx512f +kunpckbw k,k,k avx512f +kunpckdq - avx512bw +kunpckdq k avx512bw +kunpckdq k,k avx512bw +kunpckdq k,k,k avx512bw +kunpckwd - avx512bw +kunpckwd k avx512bw +kunpckwd k,k avx512bw +kunpckwd k,k,k avx512bw +kxnor - kncv +kxnor k kncv +kxnor k,k kncv +kxnorb - avx512dq +kxnorb k avx512dq +kxnorb k,k avx512dq +kxnorb k,k,k avx512dq +kxnord - avx512bw +kxnord k avx512bw +kxnord k,k avx512bw +kxnord k,k,k avx512bw +kxnorq - avx512bw +kxnorq k avx512bw +kxnorq k,k avx512bw +kxnorq k,k,k avx512bw +kxnorw - avx512f +kxnorw k avx512f +kxnorw k,k avx512f +kxnorw k,k,k avx512f +kxor - kncv +kxor k kncv +kxor k,k kncv +kxorb - avx512dq +kxorb k avx512dq +kxorb k,k avx512dq +kxorb k,k,k avx512dq +kxord - avx512bw +kxord k avx512bw +kxord k,k avx512bw +kxord k,k,k avx512bw +kxorq - avx512bw +kxorq k avx512bw +kxorq k,k avx512bw +kxorq k,k,k avx512bw +kxorw - avx512f +kxorw k avx512f +kxorw k,k avx512f +kxorw k,k,k avx512f +lahf - lahf +lar r,m i286protected +lar r,r i286protected +lddqu xmm,m sse3 +ldmxcsr m ssemxcsr +lds r,m i86 +ldtilecfg m amx_tile +lea r,agen i86 +leave - i186 +les r,m i86 +lfence - sse2 +lfs r,m i386 +lgdt m i286real +lgs r,m i386 +lidt m i286real +lldt m i286protected +lldt r16 i286protected +llwpcb vr lwp +lmsw m i286real +lmsw r16 i286real +loadiwkey xmm,xmm keylocker +lodsb - i86 +lodsd - i386 +lodsq - longmode +lodsw - i86 +loop relbr i86 +loope relbr i86 +loopne relbr i86 +lsl r,m i286protected +lsl r,r i286protected +lss r,m i386 +ltr m i286protected +ltr r16 i286protected +lwpins vr,m,imm lwp +lwpins vr,vr32,imm lwp +lwpval vr,m,imm lwp +lwpval vr,vr32,imm lwp +lzcnt r,m amd +lzcnt r,m lzcnt +lzcnt r,r amd +lzcnt r,r lzcnt +maskmovdqu xmm,xmm sse2 +maskmovq mm,mm pentiummmx +maxpd xmm,m sse2 +maxpd xmm,xmm sse2 +maxps xmm,m sse +maxps xmm,xmm sse +maxsd xmm,m sse2 +maxsd xmm,xmm sse2 +maxss xmm,m sse +maxss xmm,xmm sse +mcommit - mcommit +mfence - sse2 +minpd xmm,m sse2 +minpd xmm,xmm sse2 +minps xmm,m sse +minps xmm,xmm sse +minsd xmm,m sse2 +minsd xmm,xmm sse2 +minss xmm,m sse +minss xmm,xmm sse +monitor - monitor +monitorx - monitorx +mov m,imm i86 +mov m,r i86 +mov m,r,base,index i86 +mov m,r8 i86 +mov m,r8,base,index i86 +mov m,seg i86 +mov r,imm i86 +mov r,m i86 +mov r,m,base,index i86 +mov r,r i86 +mov r,seg i86 +mov r8,imm i86 +mov r8,m i86 +mov r8,m,base,index i86 +mov r8,r8 i86 +mov seg,m i86 +mov seg,r16 i86 +movapd m,xmm sse2 +movapd xmm,m sse2 +movapd xmm,xmm sse2 +movaps m,xmm sse +movaps xmm,m sse +movaps xmm,xmm sse +movbe m,r movbe +movbe r,m movbe +movd m,mm pentiummmx +movd m,xmm sse2 +movd mm,m pentiummmx +movd mm,r32 pentiummmx +movd r32,mm pentiummmx +movd r32,xmm sse2 +movd xmm,m sse2 +movd xmm,r32 sse2 +movddup xmm,m sse3 +movddup xmm,xmm sse3 +movdir64b r,m movdir +movdiri m,r32 movdir +movdiri m,r64 movdir +movdq2q mm,xmm sse2 +movdqa m,xmm sse2 +movdqa xmm,m sse2 +movdqa xmm,xmm sse2 +movdqu m,xmm sse2 +movdqu xmm,m sse2 +movdqu xmm,xmm sse2 +movhlps xmm,xmm sse +movhpd m,xmm sse2 +movhpd xmm,m sse2 +movhps m,xmm sse +movhps xmm,m sse +movlhps xmm,xmm sse +movlpd m,xmm sse2 +movlpd xmm,m sse2 +movlps m,xmm sse +movlps xmm,m sse +movmskpd r32,xmm sse2 +movmskps r32,xmm sse +movntdq m,xmm sse2 +movntdqa xmm,m sse4.1 +movnti m,r32 sse2 +movnti m,r64 sse2 +movntpd m,xmm sse2 +movntps m,xmm sse +movntq m,mm pentiummmx +movntsd m,xmm sse4a +movntss m,xmm sse4a +movq m,mm pentiummmx +movq m,xmm sse2 +movq mm,m pentiummmx +movq mm,mm pentiummmx +movq mm,r64 pentiummmx +movq r64,mm pentiummmx +movq r64,xmm sse2 +movq xmm,m sse2 +movq xmm,r64 sse2 +movq xmm,xmm sse2 +movq2dq xmm,mm sse2 +movsb - i86 +movsb m,m base +movsd - i386 +movsd m,m base +movshdup xmm,m sse3 +movshdup xmm,xmm sse3 +movsldup xmm,m sse3 +movsldup xmm,xmm sse3 +movsq - longmode +movss m,xmm sse +movss xmm,m sse +movss xmm,xmm sse +movsw - i86 +movsx r,m i386 +movsx r,r16 i386 +movsx r,r8 i386 +movsxd r,m longmode +movsxd r,r longmode +movupd m,xmm sse2 +movupd xmm,m sse2 +movupd xmm,xmm sse2 +movups m,xmm sse +movups xmm,m sse +movups xmm,xmm sse +movzx r,m i386 +movzx r,r16 i386 +movzx r,r8 i386 +mpsadbw xmm,m,imm sse4.1 +mpsadbw xmm,xmm,imm sse4.1 +mul m i86 +mul r i86 +mul r8 i86 +mulpd xmm,m sse2 +mulpd xmm,xmm sse2 +mulps xmm,m sse +mulps xmm,xmm sse +mulsd xmm,m sse2 +mulsd xmm,xmm sse2 +mulss xmm,m sse +mulss xmm,xmm sse +mulx vr32,vr32,m bmi2 +mulx vr32,vr32,vr32 bmi2 +mulx vr64,vr64,m bmi2 +mulx vr64,vr64,vr64 bmi2 +mwait - monitor +mwaitx - monitorx +neg m i86 +neg r i86 +neg r8 i86 +nop - i86 +nop m fat_nop +nop m knc_misc +nop m,r fat_nop +nop m,r ppro +nop r fat_nop +nop r knc_misc +nop r,m ppro +nop r,r fat_nop +nop r,r ppro +nop r,r prefetch_nop +nop2 - i86 +nop3 - fat_nop +nop4 - fat_nop +nop5 - fat_nop +nop6 - fat_nop +nop7 - fat_nop +nop8 - fat_nop +nop9 - fat_nop +not m i86 +not r i86 +not r8 i86 +or m,imm i86 +or m,r i86 +or m,r8 i86 +or r,imm i86 +or r,m i86 +or r,r i86 +or r8,imm i86 +or r8,m i86 +or r8,r8 i86 +orpd xmm,m sse2 +orpd xmm,xmm sse2 +orps xmm,m sse +orps xmm,xmm sse +out imm,r i86 +out imm,r8 i86 +out r16,r i86 +out r16,r8 i86 +outsb - i186 +outsd - i386 +outsw - i186 +pabsb mm,m ssse3mmx +pabsb mm,mm ssse3mmx +pabsb xmm,m ssse3 +pabsb xmm,xmm ssse3 +pabsd mm,m ssse3mmx +pabsd mm,mm ssse3mmx +pabsd xmm,m ssse3 +pabsd xmm,xmm ssse3 +pabsw mm,m ssse3mmx +pabsw mm,mm ssse3mmx +pabsw xmm,m ssse3 +pabsw xmm,xmm ssse3 +packssdw mm,m pentiummmx +packssdw mm,mm pentiummmx +packssdw xmm,m sse2 +packssdw xmm,xmm sse2 +packsswb mm,m pentiummmx +packsswb mm,mm pentiummmx +packsswb xmm,m sse2 +packsswb xmm,xmm sse2 +packusdw xmm,m sse4.1 +packusdw xmm,xmm sse4.1 +packuswb mm,m pentiummmx +packuswb mm,mm pentiummmx +packuswb xmm,m sse2 +packuswb xmm,xmm sse2 +paddb mm,m pentiummmx +paddb mm,mm pentiummmx +paddb xmm,m sse2 +paddb xmm,xmm sse2 +paddd mm,m pentiummmx +paddd mm,mm pentiummmx +paddd xmm,m sse2 +paddd xmm,xmm sse2 +paddq mm,m sse2mmx +paddq mm,mm sse2mmx +paddq xmm,m sse2 +paddq xmm,xmm sse2 +paddsb mm,m pentiummmx +paddsb mm,mm pentiummmx +paddsb xmm,m sse2 +paddsb xmm,xmm sse2 +paddsw mm,m pentiummmx +paddsw mm,mm pentiummmx +paddsw xmm,m sse2 +paddsw xmm,xmm sse2 +paddusb mm,m pentiummmx +paddusb mm,mm pentiummmx +paddusb xmm,m sse2 +paddusb xmm,xmm sse2 +paddusw mm,m pentiummmx +paddusw mm,mm pentiummmx +paddusw xmm,m sse2 +paddusw xmm,xmm sse2 +paddw mm,m pentiummmx +paddw mm,mm pentiummmx +paddw xmm,m sse2 +paddw xmm,xmm sse2 +palignr mm,m,imm ssse3mmx +palignr mm,mm,imm ssse3mmx +palignr xmm,m,imm ssse3 +palignr xmm,xmm,imm ssse3 +pand mm,m pentiummmx +pand mm,mm pentiummmx +pand xmm,m sse2 +pand xmm,xmm sse2 +pandn mm,m pentiummmx +pandn mm,mm pentiummmx +pandn xmm,m sse2 +pandn xmm,xmm sse2 +pause - pause +pavgb mm,m pentiummmx +pavgb mm,mm pentiummmx +pavgb xmm,m sse2 +pavgb xmm,xmm sse2 +pavgusb mm,m 3dnow +pavgusb mm,mm 3dnow +pavgw mm,m pentiummmx +pavgw mm,mm pentiummmx +pavgw xmm,m sse2 +pavgw xmm,xmm sse2 +pblendvb xmm,m sse4.1 +pblendvb xmm,xmm sse4.1 +pblendw xmm,m,imm sse4.1 +pblendw xmm,xmm,imm sse4.1 +pclmulqdq xmm,m,imm pclmulqdq +pclmulqdq xmm,xmm,imm pclmulqdq +pcmpeqb mm,m pentiummmx +pcmpeqb mm,mm pentiummmx +pcmpeqb xmm,m sse2 +pcmpeqb xmm,xmm sse2 +pcmpeqd mm,m pentiummmx +pcmpeqd mm,mm pentiummmx +pcmpeqd xmm,m sse2 +pcmpeqd xmm,xmm sse2 +pcmpeqq xmm,m sse4.1 +pcmpeqq xmm,xmm sse4.1 +pcmpeqw mm,m pentiummmx +pcmpeqw mm,mm pentiummmx +pcmpeqw xmm,m sse2 +pcmpeqw xmm,xmm sse2 +pcmpestri xmm,m,imm sse4.2 +pcmpestri xmm,xmm,imm sse4.2 +pcmpestri64 xmm,m,imm sse4.2 +pcmpestri64 xmm,xmm,imm sse4.2 +pcmpestrm xmm,m,imm sse4.2 +pcmpestrm xmm,xmm,imm sse4.2 +pcmpestrm64 xmm,m,imm sse4.2 +pcmpestrm64 xmm,xmm,imm sse4.2 +pcmpgtb mm,m pentiummmx +pcmpgtb mm,mm pentiummmx +pcmpgtb xmm,m sse2 +pcmpgtb xmm,xmm sse2 +pcmpgtd mm,m pentiummmx +pcmpgtd mm,mm pentiummmx +pcmpgtd xmm,m sse2 +pcmpgtd xmm,xmm sse2 +pcmpgtq xmm,m sse4.2 +pcmpgtq xmm,xmm sse4.2 +pcmpgtw mm,m pentiummmx +pcmpgtw mm,mm pentiummmx +pcmpgtw xmm,m sse2 +pcmpgtw xmm,xmm sse2 +pcmpistri xmm,m,imm sse4.2 +pcmpistri xmm,xmm,imm sse4.2 +pcmpistri64 xmm,m,imm sse4.2 +pcmpistri64 xmm,xmm,imm sse4.2 +pcmpistrm xmm,m,imm sse4.2 +pcmpistrm xmm,xmm,imm sse4.2 +pconfig - pconfig +pdep vr32,vr32,m bmi2 +pdep vr32,vr32,vr32 bmi2 +pdep vr64,vr64,m bmi2 +pdep vr64,vr64,vr64 bmi2 +pext vr32,vr32,m bmi2 +pext vr32,vr32,vr32 bmi2 +pext vr64,vr64,m bmi2 +pext vr64,vr64,vr64 bmi2 +pextrb m,xmm,imm sse4.1 +pextrb r32,xmm,imm sse4.1 +pextrd m,xmm,imm sse4.1 +pextrd r32,xmm,imm sse4.1 +pextrq m,xmm,imm sse4.1 +pextrq r64,xmm,imm sse4.1 +pextrw r32,mm,imm pentiummmx +pextrw r32,xmm,imm sse2 +pf2id mm,m 3dnow +pf2id mm,mm 3dnow +pf2iw mm,m 3dnow +pf2iw mm,mm 3dnow +pfacc mm,m 3dnow +pfacc mm,mm 3dnow +pfadd mm,m 3dnow +pfadd mm,mm 3dnow +pfcmpeq mm,m 3dnow +pfcmpeq mm,mm 3dnow +pfcmpge mm,m 3dnow +pfcmpge mm,mm 3dnow +pfcmpgt mm,m 3dnow +pfcmpgt mm,mm 3dnow +pfmax mm,m 3dnow +pfmax mm,mm 3dnow +pfmin mm,m 3dnow +pfmin mm,mm 3dnow +pfmul mm,m 3dnow +pfmul mm,mm 3dnow +pfnacc mm,m 3dnow +pfnacc mm,mm 3dnow +pfpnacc mm,m 3dnow +pfpnacc mm,mm 3dnow +pfrcp mm,m 3dnow +pfrcp mm,mm 3dnow +pfrcpit1 mm,m 3dnow +pfrcpit1 mm,mm 3dnow +pfrcpit2 mm,m 3dnow +pfrcpit2 mm,mm 3dnow +pfrsqit1 mm,m 3dnow +pfrsqit1 mm,mm 3dnow +pfrsqrt mm,m 3dnow +pfrsqrt mm,mm 3dnow +pfsub mm,m 3dnow +pfsub mm,mm 3dnow +pfsubr mm,m 3dnow +pfsubr mm,mm 3dnow +phaddd mm,m ssse3mmx +phaddd mm,mm ssse3mmx +phaddd xmm,m ssse3 +phaddd xmm,xmm ssse3 +phaddsw mm,m ssse3mmx +phaddsw mm,mm ssse3mmx +phaddsw xmm,m ssse3 +phaddsw xmm,xmm ssse3 +phaddw mm,m ssse3mmx +phaddw mm,mm ssse3mmx +phaddw xmm,m ssse3 +phaddw xmm,xmm ssse3 +phminposuw xmm,m sse4.1 +phminposuw xmm,xmm sse4.1 +phsubd mm,m ssse3mmx +phsubd mm,mm ssse3mmx +phsubd xmm,m ssse3 +phsubd xmm,xmm ssse3 +phsubsw mm,m ssse3mmx +phsubsw mm,mm ssse3mmx +phsubsw xmm,m ssse3 +phsubsw xmm,xmm ssse3 +phsubw mm,m ssse3mmx +phsubw mm,mm ssse3mmx +phsubw xmm,m ssse3 +phsubw xmm,xmm ssse3 +pi2fd mm,m 3dnow +pi2fd mm,mm 3dnow +pi2fw mm,m 3dnow +pi2fw mm,mm 3dnow +pinsrb xmm,m,imm sse4.1 +pinsrb xmm,r32,imm sse4.1 +pinsrd xmm,m,imm sse4.1 +pinsrd xmm,r32,imm sse4.1 +pinsrq xmm,m,imm sse4.1 +pinsrq xmm,r64,imm sse4.1 +pinsrw mm,m,imm pentiummmx +pinsrw mm,r32,imm pentiummmx +pinsrw xmm,m,imm sse2 +pinsrw xmm,r32,imm sse2 +pmaddubsw mm,m ssse3mmx +pmaddubsw mm,mm ssse3mmx +pmaddubsw xmm,m ssse3 +pmaddubsw xmm,xmm ssse3 +pmaddwd mm,m pentiummmx +pmaddwd mm,mm pentiummmx +pmaddwd xmm,m sse2 +pmaddwd xmm,xmm sse2 +pmaxsb xmm,m sse4.1 +pmaxsb xmm,xmm sse4.1 +pmaxsd xmm,m sse4.1 +pmaxsd xmm,xmm sse4.1 +pmaxsw mm,m pentiummmx +pmaxsw mm,mm pentiummmx +pmaxsw xmm,m sse2 +pmaxsw xmm,xmm sse2 +pmaxub mm,m pentiummmx +pmaxub mm,mm pentiummmx +pmaxub xmm,m sse2 +pmaxub xmm,xmm sse2 +pmaxud xmm,m sse4.1 +pmaxud xmm,xmm sse4.1 +pmaxuw xmm,m sse4.1 +pmaxuw xmm,xmm sse4.1 +pminsb xmm,m sse4.1 +pminsb xmm,xmm sse4.1 +pminsd xmm,m sse4.1 +pminsd xmm,xmm sse4.1 +pminsw mm,m pentiummmx +pminsw mm,mm pentiummmx +pminsw xmm,m sse2 +pminsw xmm,xmm sse2 +pminub mm,m pentiummmx +pminub mm,mm pentiummmx +pminub xmm,m sse2 +pminub xmm,xmm sse2 +pminud xmm,m sse4.1 +pminud xmm,xmm sse4.1 +pminuw xmm,m sse4.1 +pminuw xmm,xmm sse4.1 +pmovmskb r32,mm sse +pmovmskb r32,xmm sse2 +pmovsxbd xmm,m sse4.1 +pmovsxbd xmm,xmm sse4.1 +pmovsxbq xmm,m sse4.1 +pmovsxbq xmm,xmm sse4.1 +pmovsxbw xmm,m sse4.1 +pmovsxbw xmm,xmm sse4.1 +pmovsxdq xmm,m sse4.1 +pmovsxdq xmm,xmm sse4.1 +pmovsxwd xmm,m sse4.1 +pmovsxwd xmm,xmm sse4.1 +pmovsxwq xmm,m sse4.1 +pmovsxwq xmm,xmm sse4.1 +pmovzxbd xmm,m sse4.1 +pmovzxbd xmm,xmm sse4.1 +pmovzxbq xmm,m sse4.1 +pmovzxbq xmm,xmm sse4.1 +pmovzxbw xmm,m sse4.1 +pmovzxbw xmm,xmm sse4.1 +pmovzxdq xmm,m sse4.1 +pmovzxdq xmm,xmm sse4.1 +pmovzxwd xmm,m sse4.1 +pmovzxwd xmm,xmm sse4.1 +pmovzxwq xmm,m sse4.1 +pmovzxwq xmm,xmm sse4.1 +pmuldq xmm,m sse4.1 +pmuldq xmm,xmm sse4.1 +pmulhrsw mm,m ssse3mmx +pmulhrsw mm,mm ssse3mmx +pmulhrsw xmm,m ssse3 +pmulhrsw xmm,xmm ssse3 +pmulhrw mm,m 3dnow +pmulhrw mm,mm 3dnow +pmulhuw mm,m pentiummmx +pmulhuw mm,mm pentiummmx +pmulhuw xmm,m sse2 +pmulhuw xmm,xmm sse2 +pmulhw mm,m pentiummmx +pmulhw mm,mm pentiummmx +pmulhw xmm,m sse2 +pmulhw xmm,xmm sse2 +pmulld xmm,m sse4.1 +pmulld xmm,xmm sse4.1 +pmullw mm,m pentiummmx +pmullw mm,mm pentiummmx +pmullw xmm,m sse2 +pmullw xmm,xmm sse2 +pmuludq mm,m sse2mmx +pmuludq mm,mm sse2mmx +pmuludq xmm,m sse2 +pmuludq xmm,xmm sse2 +pop m i86 +pop r i86 +pop seg i86 +popa - i186 +popad - i386 +popcnt r,m popcnt +popcnt r,r popcnt +popf - i86 +popfd - i386 +popfq - longmode +por mm,m pentiummmx +por mm,mm pentiummmx +por xmm,m sse2 +por xmm,xmm sse2 +prefetchnta m sse_prefetch +prefetcht0 m sse_prefetch +prefetcht1 m sse_prefetch +prefetcht2 m sse_prefetch +prefetchw m prefetch_nop +prefetchwt1 m prefetchwt1 +psadbw mm,m pentiummmx +psadbw mm,mm pentiummmx +psadbw xmm,m sse2 +psadbw xmm,xmm sse2 +pshufb mm,m ssse3mmx +pshufb mm,mm ssse3mmx +pshufb xmm,m ssse3 +pshufb xmm,xmm ssse3 +pshufd xmm,m,imm sse2 +pshufd xmm,xmm,imm sse2 +pshufhw xmm,m,imm sse2 +pshufhw xmm,xmm,imm sse2 +pshuflw xmm,m,imm sse2 +pshuflw xmm,xmm,imm sse2 +pshufw mm,m,imm pentiummmx +pshufw mm,mm,imm pentiummmx +psignb mm,m ssse3mmx +psignb mm,mm ssse3mmx +psignb xmm,m ssse3 +psignb xmm,xmm ssse3 +psignd mm,m ssse3mmx +psignd mm,mm ssse3mmx +psignd xmm,m ssse3 +psignd xmm,xmm ssse3 +psignw mm,m ssse3mmx +psignw mm,mm ssse3mmx +psignw xmm,m ssse3 +psignw xmm,xmm ssse3 +pslld mm,imm pentiummmx +pslld mm,m pentiummmx +pslld mm,mm pentiummmx +pslld xmm,imm sse2 +pslld xmm,m sse2 +pslld xmm,xmm sse2 +pslldq xmm,imm sse2 +psllq mm,imm pentiummmx +psllq mm,m pentiummmx +psllq mm,mm pentiummmx +psllq xmm,imm sse2 +psllq xmm,m sse2 +psllq xmm,xmm sse2 +psllw mm,imm pentiummmx +psllw mm,m pentiummmx +psllw mm,mm pentiummmx +psllw xmm,imm sse2 +psllw xmm,m sse2 +psllw xmm,xmm sse2 +psmash r64 snp +psrad mm,imm pentiummmx +psrad mm,m pentiummmx +psrad mm,mm pentiummmx +psrad xmm,imm sse2 +psrad xmm,m sse2 +psrad xmm,xmm sse2 +psraw mm,imm pentiummmx +psraw mm,m pentiummmx +psraw mm,mm pentiummmx +psraw xmm,imm sse2 +psraw xmm,m sse2 +psraw xmm,xmm sse2 +psrld mm,imm pentiummmx +psrld mm,m pentiummmx +psrld mm,mm pentiummmx +psrld xmm,imm sse2 +psrld xmm,m sse2 +psrld xmm,xmm sse2 +psrldq xmm,imm sse2 +psrlq mm,imm pentiummmx +psrlq mm,m pentiummmx +psrlq mm,mm pentiummmx +psrlq xmm,imm sse2 +psrlq xmm,m sse2 +psrlq xmm,xmm sse2 +psrlw mm,imm pentiummmx +psrlw mm,m pentiummmx +psrlw mm,mm pentiummmx +psrlw xmm,imm sse2 +psrlw xmm,m sse2 +psrlw xmm,xmm sse2 +psubb mm,m pentiummmx +psubb mm,mm pentiummmx +psubb xmm,m sse2 +psubb xmm,xmm sse2 +psubd mm,m pentiummmx +psubd mm,mm pentiummmx +psubd xmm,m sse2 +psubd xmm,xmm sse2 +psubq mm,m sse2mmx +psubq mm,mm sse2mmx +psubq xmm,m sse2 +psubq xmm,xmm sse2 +psubsb mm,m pentiummmx +psubsb mm,mm pentiummmx +psubsb xmm,m sse2 +psubsb xmm,xmm sse2 +psubsw mm,m pentiummmx +psubsw mm,mm pentiummmx +psubsw xmm,m sse2 +psubsw xmm,xmm sse2 +psubusb mm,m pentiummmx +psubusb mm,mm pentiummmx +psubusb xmm,m sse2 +psubusb xmm,xmm sse2 +psubusw mm,m pentiummmx +psubusw mm,mm pentiummmx +psubusw xmm,m sse2 +psubusw xmm,xmm sse2 +psubw mm,m pentiummmx +psubw mm,mm pentiummmx +psubw xmm,m sse2 +psubw xmm,xmm sse2 +pswapd mm,m 3dnow +pswapd mm,mm 3dnow +ptest xmm,m sse4.1 +ptest xmm,xmm sse4.1 +ptwrite m ptwrite +ptwrite r ptwrite +punpckhbw mm,m pentiummmx +punpckhbw mm,mm pentiummmx +punpckhbw xmm,m sse2 +punpckhbw xmm,xmm sse2 +punpckhdq mm,m pentiummmx +punpckhdq mm,mm pentiummmx +punpckhdq xmm,m sse2 +punpckhdq xmm,xmm sse2 +punpckhqdq xmm,m sse2 +punpckhqdq xmm,xmm sse2 +punpckhwd mm,m pentiummmx +punpckhwd mm,mm pentiummmx +punpckhwd xmm,m sse2 +punpckhwd xmm,xmm sse2 +punpcklbw mm,m pentiummmx +punpcklbw mm,mm pentiummmx +punpcklbw xmm,m sse2 +punpcklbw xmm,xmm sse2 +punpckldq mm,m pentiummmx +punpckldq mm,mm pentiummmx +punpckldq xmm,m sse2 +punpckldq xmm,xmm sse2 +punpcklqdq xmm,m sse2 +punpcklqdq xmm,xmm sse2 +punpcklwd mm,m pentiummmx +punpcklwd mm,mm pentiummmx +punpcklwd xmm,m sse2 +punpcklwd xmm,xmm sse2 +push imm i186 +push m i86 +push r i86 +push seg i86 +pusha - i186 +pushad - i386 +pushf - i86 +pushfd - i386 +pushfq - longmode +pvalidate r64,r32,r32 snp +pxor mm,m pentiummmx +pxor mm,mm pentiummmx +pxor xmm,m sse2 +pxor xmm,xmm sse2 +rcl m,imm i186 +rcl m,imm i86 +rcl m,r8 i86 +rcl r,imm i186 +rcl r,imm i86 +rcl r,r8 i86 +rcl r8,imm i186 +rcl r8,imm i86 +rcl r8,r8 i86 +rcpps xmm,m sse +rcpps xmm,xmm sse +rcpss xmm,m sse +rcpss xmm,xmm sse +rcr m,imm i186 +rcr m,imm i86 +rcr m,r8 i86 +rcr r,imm i186 +rcr r,imm i86 +rcr r,r8 i86 +rcr r8,imm i186 +rcr r8,imm i86 +rcr r8,r8 i86 +rdfsbase r rdwrfsgs +rdgsbase r rdwrfsgs +rdmsr - pentiumreal +rdpid r32 rdpid +rdpid r64 rdpid +rdpkru - pku +rdpmc - rdpmc +rdpru - rdpru +rdrand r rdrand +rdseed r rdseed +rdsspd r32 cet +rdsspq r64 cet +rdtsc - pentiumreal +rdtscp - rdtscp +ret - base +rmpadjust r64,r64,r64 snp +rmpupdate r64,r64 snp +rol m,imm i186 +rol m,imm i86 +rol m,r8 i86 +rol r,imm i186 +rol r,imm i86 +rol r,r8 i86 +rol r8,imm i186 +rol r8,imm i86 +rol r8,r8 i86 +ror m,imm i186 +ror m,imm i86 +ror m,r8 i86 +ror r,imm i186 +ror r,imm i86 +ror r,r8 i86 +ror r8,imm i186 +ror r8,imm i86 +ror r8,r8 i86 +rorx vr32,m,imm bmi2 +rorx vr32,vr32,imm bmi2 +rorx vr64,m,imm bmi2 +rorx vr64,vr64,imm bmi2 +roundpd xmm,m,imm sse4.1 +roundpd xmm,xmm,imm sse4.1 +roundps xmm,m,imm sse4.1 +roundps xmm,xmm,imm sse4.1 +roundsd xmm,m,imm sse4.1 +roundsd xmm,xmm,imm sse4.1 +roundss xmm,m,imm sse4.1 +roundss xmm,xmm,imm sse4.1 +rsm - i486 +rsqrtps xmm,m sse +rsqrtps xmm,xmm sse +rsqrtss xmm,m sse +rsqrtss xmm,xmm sse +rstorssp m cet +sahf - lahf +salc - i86 +sar m,imm i186 +sar m,imm i86 +sar m,r8 i86 +sar r,imm i186 +sar r,imm i86 +sar r,r8 i86 +sar r8,imm i186 +sar r8,imm i86 +sar r8,r8 i86 +sarx vr32,m,vr32 bmi2 +sarx vr32,vr32,vr32 bmi2 +sarx vr64,m,vr64 bmi2 +sarx vr64,vr64,vr64 bmi2 +saveprevssp - cet +sbb m,imm i86 +sbb m,r i86 +sbb m,r8 i86 +sbb r,imm i86 +sbb r,m i86 +sbb r,r i86 +sbb r8,imm i86 +sbb r8,m i86 +sbb r8,r8 i86 +scasb - i86 +scasd - i386 +scasq - longmode +scasw - i86 +seamcall - tdx +seamops - tdx +seamret - tdx +senduipi r32 uintr +serialize - serialize +setb m i386 +setb r8 i386 +setbe m i386 +setbe r8 i386 +setl m i386 +setl r8 i386 +setle m i386 +setle r8 i386 +setnb m i386 +setnb r8 i386 +setnbe m i386 +setnbe r8 i386 +setnl m i386 +setnl r8 i386 +setnle m i386 +setnle r8 i386 +setno m i386 +setno r8 i386 +setnp m i386 +setnp r8 i386 +setns m i386 +setns r8 i386 +setnz m i386 +setnz r8 i386 +seto m i386 +seto r8 i386 +setp m i386 +setp r8 i386 +sets m i386 +sets r8 i386 +setssbsy - cet +setz m i386 +setz r8 i386 +sfence - sse +sgdt m i286real +sha1msg1 xmm,m sha +sha1msg1 xmm,xmm sha +sha1msg2 xmm,m sha +sha1msg2 xmm,xmm sha +sha1nexte xmm,m sha +sha1nexte xmm,xmm sha +sha1rnds4 xmm,m,imm sha +sha1rnds4 xmm,xmm,imm sha +sha256msg1 xmm,m sha +sha256msg1 xmm,xmm sha +sha256msg2 xmm,m sha +sha256msg2 xmm,xmm sha +sha256rnds2 xmm,m sha +sha256rnds2 xmm,xmm sha +shl m,imm i186 +shl m,imm i86 +shl m,r8 i86 +shl r,imm i186 +shl r,imm i86 +shl r,r8 i86 +shl r8,imm i186 +shl r8,imm i86 +shl r8,r8 i86 +shld m,r,imm i386 +shld m,r,r8 i386 +shld r,r,imm i386 +shld r,r,r8 i386 +shlx vr32,m,vr32 bmi2 +shlx vr32,vr32,vr32 bmi2 +shlx vr64,m,vr64 bmi2 +shlx vr64,vr64,vr64 bmi2 +shr m,imm i186 +shr m,imm i86 +shr m,r8 i86 +shr r,imm i186 +shr r,imm i86 +shr r,r8 i86 +shr r8,imm i186 +shr r8,imm i86 +shr r8,r8 i86 +shrd m,r,imm i386 +shrd m,r,r8 i386 +shrd r,r,imm i386 +shrd r,r,r8 i386 +shrx vr32,m,vr32 bmi2 +shrx vr32,vr32,vr32 bmi2 +shrx vr64,m,vr64 bmi2 +shrx vr64,vr64,vr64 bmi2 +shufpd xmm,m,imm sse2 +shufpd xmm,xmm,imm sse2 +shufps xmm,m,imm sse +shufps xmm,xmm,imm sse +sidt m i286real +skinit r32 svm +sldt m i286protected +sldt r i286protected +slwpcb vr lwp +smsw m i286real +smsw r i286real +spflt r32 kncv +spflt r64 kncv +sqrtpd xmm,m sse2 +sqrtpd xmm,xmm sse2 +sqrtps xmm,m sse +sqrtps xmm,xmm sse +sqrtsd xmm,m sse2 +sqrtsd xmm,xmm sse2 +sqrtss xmm,m sse +sqrtss xmm,xmm sse +stac - smap +stc - i86 +std - i86 +stgi - svm +sti - i86 +stmxcsr m ssemxcsr +stosb - i86 +stosb m,r base +stosd - i386 +stosd m,r base +stosq - longmode +stosq m,r longmode +stosw - i86 +stosw m,r base +str m i286protected +str r i286protected +sttilecfg m amx_tile +stui - uintr +sub m,imm i86 +sub m,r i86 +sub m,r8 i86 +sub r,imm i86 +sub r,m i86 +sub r,r i86 +sub r8,imm i86 +sub r8,m i86 +sub r8,r8 i86 +subpd xmm,m sse2 +subpd xmm,xmm sse2 +subps xmm,m sse +subps xmm,xmm sse +subsd xmm,m sse2 +subsd xmm,xmm sse2 +subss xmm,m sse +subss xmm,xmm sse +swapgs - longmode +syscall - longmode +sysenter - ppro +sysexit - ppro +sysret - longmode +sysret64 - longmode +t1mskc vr,m tbm +t1mskc vr,vr tbm +t1mskc vr32,m tbm +t1mskc vr32,vr32 tbm +tdcall - tdx +tdpbf16ps tmm,tmm,tmm amx_bf16 +tdpbssd tmm,tmm,tmm amx_int8 +tdpbsud tmm,tmm,tmm amx_int8 +tdpbusd tmm,tmm,tmm amx_int8 +tdpbuud tmm,tmm,tmm amx_int8 +test m,imm i86 +test m,r i86 +test m,r8 i86 +test r,imm i86 +test r,r i86 +test r8,imm i86 +test r8,r8 i86 +testui - uintr +tileloadd tmm,m amx_tile +tileloaddt1 tmm,m amx_tile +tilerelease - amx_tile +tilestored m,tmm amx_tile +tilezero tmm amx_tile +tlbsync - amd_invlpgb +tpause r32 waitpkg +tzcnt r,m bmi1 +tzcnt r,r bmi1 +tzcnti r32,r32 kncv +tzcnti r64,r64 kncv +tzmsk vr,m tbm +tzmsk vr,vr tbm +tzmsk vr32,m tbm +tzmsk vr32,vr32 tbm +ucomisd xmm,m sse2 +ucomisd xmm,xmm sse2 +ucomiss xmm,m sse +ucomiss xmm,xmm sse +ud0 - ppro_ud0_short +ud0 r32,m ppro_ud0_long +ud0 r32,r32 ppro_ud0_long +ud1 r32,m ppro +ud1 r32,r32 ppro +ud2 - ppro +uiret - uintr +umonitor r waitpkg +umwait r32 waitpkg +unpckhpd xmm,m sse2 +unpckhpd xmm,xmm sse2 +unpckhps xmm,m sse +unpckhps xmm,xmm sse +unpcklpd xmm,m sse2 +unpcklpd xmm,xmm sse2 +unpcklps xmm,m sse +unpcklps xmm,xmm sse +v4fmaddps zmm,k,zmm,m avx5124fmaps +v4fmaddps zmm,zmm,m avx5124fmaps +v4fmaddss xmm,k,xmm,m avx5124fmaps_scalar +v4fmaddss xmm,xmm,m avx5124fmaps_scalar +v4fnmaddps zmm,k,zmm,m avx5124fmaps +v4fnmaddps zmm,zmm,m avx5124fmaps +v4fnmaddss xmm,k,xmm,m avx5124fmaps_scalar +v4fnmaddss xmm,xmm,m avx5124fmaps_scalar +vaddnpd zmm,k,zmm,m knce +vaddnpd zmm,k,zmm,zmm knce +vaddnpd zmm,zmm,m knce +vaddnpd zmm,zmm,zmm knce +vaddnps zmm,k,zmm,m knce +vaddnps zmm,k,zmm,zmm knce +vaddnps zmm,zmm,m knce +vaddnps zmm,zmm,zmm knce +vaddpd xmm,k,xmm,m avx512f +vaddpd xmm,k,xmm,xmm avx512f +vaddpd xmm,xmm,m avx +vaddpd xmm,xmm,m avx512f +vaddpd xmm,xmm,xmm avx +vaddpd xmm,xmm,xmm avx512f +vaddpd ymm,k,ymm,m avx512f +vaddpd ymm,k,ymm,ymm avx512f +vaddpd ymm,ymm,m avx +vaddpd ymm,ymm,m avx512f +vaddpd ymm,ymm,ymm avx +vaddpd ymm,ymm,ymm avx512f +vaddpd zmm,k,zmm,m avx512f +vaddpd zmm,k,zmm,m knce +vaddpd zmm,k,zmm,zmm avx512f +vaddpd zmm,k,zmm,zmm knce +vaddpd zmm,zmm,m avx512f +vaddpd zmm,zmm,m knce +vaddpd zmm,zmm,zmm avx512f +vaddpd zmm,zmm,zmm knce +vaddph xmm,k,xmm,m avx512fp16 +vaddph xmm,k,xmm,xmm avx512fp16 +vaddph xmm,xmm,m avx512fp16 +vaddph xmm,xmm,xmm avx512fp16 +vaddph ymm,k,ymm,m avx512fp16 +vaddph ymm,k,ymm,ymm avx512fp16 +vaddph ymm,ymm,m avx512fp16 +vaddph ymm,ymm,ymm avx512fp16 +vaddph zmm,k,zmm,m avx512fp16 +vaddph zmm,k,zmm,zmm avx512fp16 +vaddph zmm,zmm,m avx512fp16 +vaddph zmm,zmm,zmm avx512fp16 +vaddps xmm,k,xmm,m avx512f +vaddps xmm,k,xmm,xmm avx512f +vaddps xmm,xmm,m avx +vaddps xmm,xmm,m avx512f +vaddps xmm,xmm,xmm avx +vaddps xmm,xmm,xmm avx512f +vaddps ymm,k,ymm,m avx512f +vaddps ymm,k,ymm,ymm avx512f +vaddps ymm,ymm,m avx +vaddps ymm,ymm,m avx512f +vaddps ymm,ymm,ymm avx +vaddps ymm,ymm,ymm avx512f +vaddps zmm,k,zmm,m avx512f +vaddps zmm,k,zmm,m knce +vaddps zmm,k,zmm,zmm avx512f +vaddps zmm,k,zmm,zmm knce +vaddps zmm,zmm,m avx512f +vaddps zmm,zmm,m knce +vaddps zmm,zmm,zmm avx512f +vaddps zmm,zmm,zmm knce +vaddsd xmm,k,xmm,m avx512f_scalar +vaddsd xmm,k,xmm,xmm avx512f_scalar +vaddsd xmm,xmm,m avx +vaddsd xmm,xmm,m avx512f_scalar +vaddsd xmm,xmm,xmm avx +vaddsd xmm,xmm,xmm avx512f_scalar +vaddsetsps zmm,k,zmm,m knce +vaddsetsps zmm,k,zmm,zmm knce +vaddsetsps zmm,zmm,m knce +vaddsetsps zmm,zmm,zmm knce +vaddsh xmm,k,xmm,m avx512fp16_scalar +vaddsh xmm,k,xmm,xmm avx512fp16_scalar +vaddsh xmm,xmm,m avx512fp16_scalar +vaddsh xmm,xmm,xmm avx512fp16_scalar +vaddss xmm,k,xmm,m avx512f_scalar +vaddss xmm,k,xmm,xmm avx512f_scalar +vaddss xmm,xmm,m avx +vaddss xmm,xmm,m avx512f_scalar +vaddss xmm,xmm,xmm avx +vaddss xmm,xmm,xmm avx512f_scalar +vaddsubpd xmm,xmm,m avx +vaddsubpd xmm,xmm,xmm avx +vaddsubpd ymm,ymm,m avx +vaddsubpd ymm,ymm,ymm avx +vaddsubps xmm,xmm,m avx +vaddsubps xmm,xmm,xmm avx +vaddsubps ymm,ymm,m avx +vaddsubps ymm,ymm,ymm avx +vaesdec xmm,xmm,m avx512vaes +vaesdec xmm,xmm,m avxaes +vaesdec xmm,xmm,xmm avx512vaes +vaesdec xmm,xmm,xmm avxaes +vaesdec ymm,ymm,m avx512vaes +vaesdec ymm,ymm,m vaes +vaesdec ymm,ymm,ymm avx512vaes +vaesdec ymm,ymm,ymm vaes +vaesdec zmm,zmm,m avx512vaes +vaesdec zmm,zmm,zmm avx512vaes +vaesdeclast xmm,xmm,m avx512vaes +vaesdeclast xmm,xmm,m avxaes +vaesdeclast xmm,xmm,xmm avx512vaes +vaesdeclast xmm,xmm,xmm avxaes +vaesdeclast ymm,ymm,m avx512vaes +vaesdeclast ymm,ymm,m vaes +vaesdeclast ymm,ymm,ymm avx512vaes +vaesdeclast ymm,ymm,ymm vaes +vaesdeclast zmm,zmm,m avx512vaes +vaesdeclast zmm,zmm,zmm avx512vaes +vaesenc xmm,xmm,m avx512vaes +vaesenc xmm,xmm,m avxaes +vaesenc xmm,xmm,xmm avx512vaes +vaesenc xmm,xmm,xmm avxaes +vaesenc ymm,ymm,m avx512vaes +vaesenc ymm,ymm,m vaes +vaesenc ymm,ymm,ymm avx512vaes +vaesenc ymm,ymm,ymm vaes +vaesenc zmm,zmm,m avx512vaes +vaesenc zmm,zmm,zmm avx512vaes +vaesenclast xmm,xmm,m avx512vaes +vaesenclast xmm,xmm,m avxaes +vaesenclast xmm,xmm,xmm avx512vaes +vaesenclast xmm,xmm,xmm avxaes +vaesenclast ymm,ymm,m avx512vaes +vaesenclast ymm,ymm,m vaes +vaesenclast ymm,ymm,ymm avx512vaes +vaesenclast ymm,ymm,ymm vaes +vaesenclast zmm,zmm,m avx512vaes +vaesenclast zmm,zmm,zmm avx512vaes +vaesimc xmm,m avxaes +vaesimc xmm,xmm avxaes +vaeskeygenassist xmm,m,imm avxaes +vaeskeygenassist xmm,xmm,imm avxaes +valignd xmm,k,xmm,m,imm avx512f +valignd xmm,k,xmm,xmm,imm avx512f +valignd xmm,xmm,m,imm avx512f +valignd xmm,xmm,xmm,imm avx512f +valignd ymm,k,ymm,m,imm avx512f +valignd ymm,k,ymm,ymm,imm avx512f +valignd ymm,ymm,m,imm avx512f +valignd ymm,ymm,ymm,imm avx512f +valignd zmm,k,zmm,m,imm avx512f +valignd zmm,k,zmm,m,imm knce +valignd zmm,k,zmm,zmm,imm avx512f +valignd zmm,k,zmm,zmm,imm knce +valignd zmm,zmm,m,imm avx512f +valignd zmm,zmm,m,imm knce +valignd zmm,zmm,zmm,imm avx512f +valignd zmm,zmm,zmm,imm knce +valignq xmm,k,xmm,m,imm avx512f +valignq xmm,k,xmm,xmm,imm avx512f +valignq xmm,xmm,m,imm avx512f +valignq xmm,xmm,xmm,imm avx512f +valignq ymm,k,ymm,m,imm avx512f +valignq ymm,k,ymm,ymm,imm avx512f +valignq ymm,ymm,m,imm avx512f +valignq ymm,ymm,ymm,imm avx512f +valignq zmm,k,zmm,m,imm avx512f +valignq zmm,k,zmm,zmm,imm avx512f +valignq zmm,zmm,m,imm avx512f +valignq zmm,zmm,zmm,imm avx512f +vandnpd xmm,k,xmm,m avx512dq +vandnpd xmm,k,xmm,xmm avx512dq +vandnpd xmm,xmm,m avx +vandnpd xmm,xmm,m avx512dq +vandnpd xmm,xmm,xmm avx +vandnpd xmm,xmm,xmm avx512dq +vandnpd ymm,k,ymm,m avx512dq +vandnpd ymm,k,ymm,ymm avx512dq +vandnpd ymm,ymm,m avx +vandnpd ymm,ymm,m avx512dq +vandnpd ymm,ymm,ymm avx +vandnpd ymm,ymm,ymm avx512dq +vandnpd zmm,k,zmm,m avx512dq +vandnpd zmm,k,zmm,zmm avx512dq +vandnpd zmm,zmm,m avx512dq +vandnpd zmm,zmm,zmm avx512dq +vandnps xmm,k,xmm,m avx512dq +vandnps xmm,k,xmm,xmm avx512dq +vandnps xmm,xmm,m avx +vandnps xmm,xmm,m avx512dq +vandnps xmm,xmm,xmm avx +vandnps xmm,xmm,xmm avx512dq +vandnps ymm,k,ymm,m avx512dq +vandnps ymm,k,ymm,ymm avx512dq +vandnps ymm,ymm,m avx +vandnps ymm,ymm,m avx512dq +vandnps ymm,ymm,ymm avx +vandnps ymm,ymm,ymm avx512dq +vandnps zmm,k,zmm,m avx512dq +vandnps zmm,k,zmm,zmm avx512dq +vandnps zmm,zmm,m avx512dq +vandnps zmm,zmm,zmm avx512dq +vandpd xmm,k,xmm,m avx512dq +vandpd xmm,k,xmm,xmm avx512dq +vandpd xmm,xmm,m avx +vandpd xmm,xmm,m avx512dq +vandpd xmm,xmm,xmm avx +vandpd xmm,xmm,xmm avx512dq +vandpd ymm,k,ymm,m avx512dq +vandpd ymm,k,ymm,ymm avx512dq +vandpd ymm,ymm,m avx +vandpd ymm,ymm,m avx512dq +vandpd ymm,ymm,ymm avx +vandpd ymm,ymm,ymm avx512dq +vandpd zmm,k,zmm,m avx512dq +vandpd zmm,k,zmm,zmm avx512dq +vandpd zmm,zmm,m avx512dq +vandpd zmm,zmm,zmm avx512dq +vandps xmm,k,xmm,m avx512dq +vandps xmm,k,xmm,xmm avx512dq +vandps xmm,xmm,m avx +vandps xmm,xmm,m avx512dq +vandps xmm,xmm,xmm avx +vandps xmm,xmm,xmm avx512dq +vandps ymm,k,ymm,m avx512dq +vandps ymm,k,ymm,ymm avx512dq +vandps ymm,ymm,m avx +vandps ymm,ymm,m avx512dq +vandps ymm,ymm,ymm avx +vandps ymm,ymm,ymm avx512dq +vandps zmm,k,zmm,m avx512dq +vandps zmm,k,zmm,zmm avx512dq +vandps zmm,zmm,m avx512dq +vandps zmm,zmm,zmm avx512dq +vblendmpd xmm,k,xmm,m avx512f +vblendmpd xmm,k,xmm,xmm avx512f +vblendmpd xmm,xmm,m avx512f +vblendmpd xmm,xmm,xmm avx512f +vblendmpd ymm,k,ymm,m avx512f +vblendmpd ymm,k,ymm,ymm avx512f +vblendmpd ymm,ymm,m avx512f +vblendmpd ymm,ymm,ymm avx512f +vblendmpd zmm,k,zmm,m avx512f +vblendmpd zmm,k,zmm,m knce +vblendmpd zmm,k,zmm,zmm avx512f +vblendmpd zmm,k,zmm,zmm knce +vblendmpd zmm,zmm,m avx512f +vblendmpd zmm,zmm,m knce +vblendmpd zmm,zmm,zmm avx512f +vblendmpd zmm,zmm,zmm knce +vblendmps xmm,k,xmm,m avx512f +vblendmps xmm,k,xmm,xmm avx512f +vblendmps xmm,xmm,m avx512f +vblendmps xmm,xmm,xmm avx512f +vblendmps ymm,k,ymm,m avx512f +vblendmps ymm,k,ymm,ymm avx512f +vblendmps ymm,ymm,m avx512f +vblendmps ymm,ymm,ymm avx512f +vblendmps zmm,k,zmm,m avx512f +vblendmps zmm,k,zmm,m knce +vblendmps zmm,k,zmm,zmm avx512f +vblendmps zmm,k,zmm,zmm knce +vblendmps zmm,zmm,m avx512f +vblendmps zmm,zmm,m knce +vblendmps zmm,zmm,zmm avx512f +vblendmps zmm,zmm,zmm knce +vblendpd xmm,xmm,m,imm avx +vblendpd xmm,xmm,xmm,imm avx +vblendpd ymm,ymm,m,imm avx +vblendpd ymm,ymm,ymm,imm avx +vblendps xmm,xmm,m,imm avx +vblendps xmm,xmm,xmm,imm avx +vblendps ymm,ymm,m,imm avx +vblendps ymm,ymm,ymm,imm avx +vblendvpd xmm,xmm,m,xmm avx +vblendvpd xmm,xmm,xmm,xmm avx +vblendvpd ymm,ymm,m,ymm avx +vblendvpd ymm,ymm,ymm,ymm avx +vblendvps xmm,xmm,m,xmm avx +vblendvps xmm,xmm,xmm,xmm avx +vblendvps ymm,ymm,m,ymm avx +vblendvps ymm,ymm,ymm,ymm avx +vbroadcastf128 ymm,m avx +vbroadcastf32x2 ymm,k,m avx512dq +vbroadcastf32x2 ymm,k,xmm avx512dq +vbroadcastf32x2 ymm,m avx512dq +vbroadcastf32x2 ymm,xmm avx512dq +vbroadcastf32x2 zmm,k,m avx512dq +vbroadcastf32x2 zmm,k,xmm avx512dq +vbroadcastf32x2 zmm,m avx512dq +vbroadcastf32x2 zmm,xmm avx512dq +vbroadcastf32x4 ymm,k,m avx512f +vbroadcastf32x4 ymm,m avx512f +vbroadcastf32x4 zmm,k,m avx512f +vbroadcastf32x4 zmm,k,m knce +vbroadcastf32x4 zmm,m avx512f +vbroadcastf32x4 zmm,m knce +vbroadcastf32x8 zmm,k,m avx512dq +vbroadcastf32x8 zmm,m avx512dq +vbroadcastf64x2 ymm,k,m avx512dq +vbroadcastf64x2 ymm,m avx512dq +vbroadcastf64x2 zmm,k,m avx512dq +vbroadcastf64x2 zmm,m avx512dq +vbroadcastf64x4 zmm,k,m avx512f +vbroadcastf64x4 zmm,k,m knce +vbroadcastf64x4 zmm,m avx512f +vbroadcastf64x4 zmm,m knce +vbroadcasti128 ymm,m avx2 +vbroadcasti32x2 xmm,k,m avx512dq +vbroadcasti32x2 xmm,k,xmm avx512dq +vbroadcasti32x2 xmm,m avx512dq +vbroadcasti32x2 xmm,xmm avx512dq +vbroadcasti32x2 ymm,k,m avx512dq +vbroadcasti32x2 ymm,k,xmm avx512dq +vbroadcasti32x2 ymm,m avx512dq +vbroadcasti32x2 ymm,xmm avx512dq +vbroadcasti32x2 zmm,k,m avx512dq +vbroadcasti32x2 zmm,k,xmm avx512dq +vbroadcasti32x2 zmm,m avx512dq +vbroadcasti32x2 zmm,xmm avx512dq +vbroadcasti32x4 ymm,k,m avx512f +vbroadcasti32x4 ymm,m avx512f +vbroadcasti32x4 zmm,k,m avx512f +vbroadcasti32x4 zmm,k,m knce +vbroadcasti32x4 zmm,m avx512f +vbroadcasti32x4 zmm,m knce +vbroadcasti32x8 zmm,k,m avx512dq +vbroadcasti32x8 zmm,m avx512dq +vbroadcasti64x2 ymm,k,m avx512dq +vbroadcasti64x2 ymm,m avx512dq +vbroadcasti64x2 zmm,k,m avx512dq +vbroadcasti64x2 zmm,m avx512dq +vbroadcasti64x4 zmm,k,m avx512f +vbroadcasti64x4 zmm,k,m knce +vbroadcasti64x4 zmm,m avx512f +vbroadcasti64x4 zmm,m knce +vbroadcastsd ymm,k,m avx512f +vbroadcastsd ymm,k,xmm avx512f +vbroadcastsd ymm,m avx +vbroadcastsd ymm,m avx512f +vbroadcastsd ymm,xmm avx2 +vbroadcastsd ymm,xmm avx512f +vbroadcastsd zmm,k,m avx512f +vbroadcastsd zmm,k,m knce +vbroadcastsd zmm,k,xmm avx512f +vbroadcastsd zmm,m avx512f +vbroadcastsd zmm,m knce +vbroadcastsd zmm,xmm avx512f +vbroadcastss xmm,k,m avx512f +vbroadcastss xmm,k,xmm avx512f +vbroadcastss xmm,m avx +vbroadcastss xmm,m avx512f +vbroadcastss xmm,xmm avx2 +vbroadcastss xmm,xmm avx512f +vbroadcastss ymm,k,m avx512f +vbroadcastss ymm,k,xmm avx512f +vbroadcastss ymm,m avx +vbroadcastss ymm,m avx512f +vbroadcastss ymm,xmm avx2 +vbroadcastss ymm,xmm avx512f +vbroadcastss zmm,k,m avx512f +vbroadcastss zmm,k,m knce +vbroadcastss zmm,k,xmm avx512f +vbroadcastss zmm,m avx512f +vbroadcastss zmm,m knce +vbroadcastss zmm,xmm avx512f +vcmppd k,k,xmm,m,imm avx512f +vcmppd k,k,xmm,xmm,imm avx512f +vcmppd k,k,ymm,m,imm avx512f +vcmppd k,k,ymm,ymm,imm avx512f +vcmppd k,k,zmm,m,imm avx512f +vcmppd k,k,zmm,m,imm knce +vcmppd k,k,zmm,zmm,imm avx512f +vcmppd k,k,zmm,zmm,imm knce +vcmppd k,xmm,m,imm avx512f +vcmppd k,xmm,xmm,imm avx512f +vcmppd k,ymm,m,imm avx512f +vcmppd k,ymm,ymm,imm avx512f +vcmppd k,zmm,m,imm avx512f +vcmppd k,zmm,m,imm knce +vcmppd k,zmm,zmm,imm avx512f +vcmppd k,zmm,zmm,imm knce +vcmppd xmm,m,imm avx512f +vcmppd xmm,xmm,imm avx512f +vcmppd xmm,xmm,m,imm avx +vcmppd xmm,xmm,xmm,imm avx +vcmppd ymm,m,imm avx512f +vcmppd ymm,ymm,imm avx512f +vcmppd ymm,ymm,m,imm avx +vcmppd ymm,ymm,ymm,imm avx +vcmppd zmm,m,imm avx512f +vcmppd zmm,m,imm knce +vcmppd zmm,zmm,imm avx512f +vcmppd zmm,zmm,imm knce +vcmpph k,k,xmm,m,imm avx512fp16 +vcmpph k,k,xmm,xmm,imm avx512fp16 +vcmpph k,k,ymm,m,imm avx512fp16 +vcmpph k,k,ymm,ymm,imm avx512fp16 +vcmpph k,k,zmm,m,imm avx512fp16 +vcmpph k,k,zmm,zmm,imm avx512fp16 +vcmpph k,xmm,m,imm avx512fp16 +vcmpph k,xmm,xmm,imm avx512fp16 +vcmpph k,ymm,m,imm avx512fp16 +vcmpph k,ymm,ymm,imm avx512fp16 +vcmpph k,zmm,m,imm avx512fp16 +vcmpph k,zmm,zmm,imm avx512fp16 +vcmpph xmm,m,imm avx512fp16 +vcmpph xmm,xmm,imm avx512fp16 +vcmpph ymm,m,imm avx512fp16 +vcmpph ymm,ymm,imm avx512fp16 +vcmpph zmm,m,imm avx512fp16 +vcmpph zmm,zmm,imm avx512fp16 +vcmpps k,k,xmm,m,imm avx512f +vcmpps k,k,xmm,xmm,imm avx512f +vcmpps k,k,ymm,m,imm avx512f +vcmpps k,k,ymm,ymm,imm avx512f +vcmpps k,k,zmm,m,imm avx512f +vcmpps k,k,zmm,m,imm knce +vcmpps k,k,zmm,zmm,imm avx512f +vcmpps k,k,zmm,zmm,imm knce +vcmpps k,xmm,m,imm avx512f +vcmpps k,xmm,xmm,imm avx512f +vcmpps k,ymm,m,imm avx512f +vcmpps k,ymm,ymm,imm avx512f +vcmpps k,zmm,m,imm avx512f +vcmpps k,zmm,m,imm knce +vcmpps k,zmm,zmm,imm avx512f +vcmpps k,zmm,zmm,imm knce +vcmpps xmm,m,imm avx512f +vcmpps xmm,xmm,imm avx512f +vcmpps xmm,xmm,m,imm avx +vcmpps xmm,xmm,xmm,imm avx +vcmpps ymm,m,imm avx512f +vcmpps ymm,ymm,imm avx512f +vcmpps ymm,ymm,m,imm avx +vcmpps ymm,ymm,ymm,imm avx +vcmpps zmm,m,imm avx512f +vcmpps zmm,m,imm knce +vcmpps zmm,zmm,imm avx512f +vcmpps zmm,zmm,imm knce +vcmpsd k,k,xmm,m,imm avx512f_scalar +vcmpsd k,k,xmm,xmm,imm avx512f_scalar +vcmpsd k,xmm,m,imm avx512f_scalar +vcmpsd k,xmm,xmm,imm avx512f_scalar +vcmpsd xmm,m,imm avx512f_scalar +vcmpsd xmm,xmm,imm avx512f_scalar +vcmpsd xmm,xmm,m,imm avx +vcmpsd xmm,xmm,xmm,imm avx +vcmpsh k,k,xmm,m,imm avx512fp16_scalar +vcmpsh k,k,xmm,xmm,imm avx512fp16_scalar +vcmpsh k,xmm,m,imm avx512fp16_scalar +vcmpsh k,xmm,xmm,imm avx512fp16_scalar +vcmpsh xmm,m,imm avx512fp16_scalar +vcmpsh xmm,xmm,imm avx512fp16_scalar +vcmpss k,k,xmm,m,imm avx512f_scalar +vcmpss k,k,xmm,xmm,imm avx512f_scalar +vcmpss k,xmm,m,imm avx512f_scalar +vcmpss k,xmm,xmm,imm avx512f_scalar +vcmpss xmm,m,imm avx512f_scalar +vcmpss xmm,xmm,imm avx512f_scalar +vcmpss xmm,xmm,m,imm avx +vcmpss xmm,xmm,xmm,imm avx +vcomisd xmm,m avx +vcomisd xmm,m avx512f_scalar +vcomisd xmm,xmm avx +vcomisd xmm,xmm avx512f_scalar +vcomish xmm,m avx512fp16_scalar +vcomish xmm,xmm avx512fp16_scalar +vcomiss xmm,m avx +vcomiss xmm,m avx512f_scalar +vcomiss xmm,xmm avx +vcomiss xmm,xmm avx512f_scalar +vcompresspd m,k,xmm avx512f +vcompresspd m,k,ymm avx512f +vcompresspd m,k,zmm avx512f +vcompresspd m,xmm avx512f +vcompresspd m,ymm avx512f +vcompresspd m,zmm avx512f +vcompresspd xmm,k,xmm avx512f +vcompresspd xmm,xmm avx512f +vcompresspd ymm,k,ymm avx512f +vcompresspd ymm,ymm avx512f +vcompresspd zmm,k,zmm avx512f +vcompresspd zmm,zmm avx512f +vcompressps m,k,xmm avx512f +vcompressps m,k,ymm avx512f +vcompressps m,k,zmm avx512f +vcompressps m,xmm avx512f +vcompressps m,ymm avx512f +vcompressps m,zmm avx512f +vcompressps xmm,k,xmm avx512f +vcompressps xmm,xmm avx512f +vcompressps ymm,k,ymm avx512f +vcompressps ymm,ymm avx512f +vcompressps zmm,k,zmm avx512f +vcompressps zmm,zmm avx512f +vcvtdq2pd xmm,k,m avx512f +vcvtdq2pd xmm,k,xmm avx512f +vcvtdq2pd xmm,m avx +vcvtdq2pd xmm,m avx512f +vcvtdq2pd xmm,xmm avx +vcvtdq2pd xmm,xmm avx512f +vcvtdq2pd ymm,k,m avx512f +vcvtdq2pd ymm,k,xmm avx512f +vcvtdq2pd ymm,m avx +vcvtdq2pd ymm,m avx512f +vcvtdq2pd ymm,xmm avx +vcvtdq2pd ymm,xmm avx512f +vcvtdq2pd zmm,k,m avx512f +vcvtdq2pd zmm,k,m knce +vcvtdq2pd zmm,k,ymm avx512f +vcvtdq2pd zmm,k,zmm knce +vcvtdq2pd zmm,m avx512f +vcvtdq2pd zmm,m knce +vcvtdq2pd zmm,ymm avx512f +vcvtdq2pd zmm,zmm knce +vcvtdq2ph xmm,k,m avx512fp16 +vcvtdq2ph xmm,k,xmm avx512fp16 +vcvtdq2ph xmm,k,ymm avx512fp16 +vcvtdq2ph xmm,m avx512fp16 +vcvtdq2ph xmm,xmm avx512fp16 +vcvtdq2ph xmm,ymm avx512fp16 +vcvtdq2ph ymm,k,m avx512fp16 +vcvtdq2ph ymm,k,zmm avx512fp16 +vcvtdq2ph ymm,m avx512fp16 +vcvtdq2ph ymm,zmm avx512fp16 +vcvtdq2ps xmm,k,m avx512f +vcvtdq2ps xmm,k,xmm avx512f +vcvtdq2ps xmm,m avx +vcvtdq2ps xmm,m avx512f +vcvtdq2ps xmm,xmm avx +vcvtdq2ps xmm,xmm avx512f +vcvtdq2ps ymm,k,m avx512f +vcvtdq2ps ymm,k,ymm avx512f +vcvtdq2ps ymm,m avx +vcvtdq2ps ymm,m avx512f +vcvtdq2ps ymm,ymm avx +vcvtdq2ps ymm,ymm avx512f +vcvtdq2ps zmm,k,m avx512f +vcvtdq2ps zmm,k,zmm avx512f +vcvtdq2ps zmm,m avx512f +vcvtdq2ps zmm,zmm avx512f +vcvtfxpntdq2ps zmm,k,m,imm knce +vcvtfxpntdq2ps zmm,k,zmm,imm knce +vcvtfxpntdq2ps zmm,m,imm knce +vcvtfxpntdq2ps zmm,zmm,imm knce +vcvtfxpntpd2dq zmm,k,m,imm knce +vcvtfxpntpd2dq zmm,k,zmm,imm knce +vcvtfxpntpd2dq zmm,m,imm knce +vcvtfxpntpd2dq zmm,zmm,imm knce +vcvtfxpntpd2udq zmm,k,m,imm knce +vcvtfxpntpd2udq zmm,k,zmm,imm knce +vcvtfxpntpd2udq zmm,m,imm knce +vcvtfxpntpd2udq zmm,zmm,imm knce +vcvtfxpntps2dq zmm,k,m,imm knce +vcvtfxpntps2dq zmm,k,zmm,imm knce +vcvtfxpntps2dq zmm,m,imm knce +vcvtfxpntps2dq zmm,zmm,imm knce +vcvtfxpntps2udq zmm,k,m,imm knce +vcvtfxpntps2udq zmm,k,zmm,imm knce +vcvtfxpntps2udq zmm,m,imm knce +vcvtfxpntps2udq zmm,zmm,imm knce +vcvtfxpntudq2ps zmm,k,m,imm knce +vcvtfxpntudq2ps zmm,k,zmm,imm knce +vcvtfxpntudq2ps zmm,m,imm knce +vcvtfxpntudq2ps zmm,zmm,imm knce +vcvtne2ps2bf16 xmm,k,xmm,m avx512bf16 +vcvtne2ps2bf16 xmm,k,xmm,xmm avx512bf16 +vcvtne2ps2bf16 xmm,xmm,m avx512bf16 +vcvtne2ps2bf16 xmm,xmm,xmm avx512bf16 +vcvtne2ps2bf16 ymm,k,ymm,m avx512bf16 +vcvtne2ps2bf16 ymm,k,ymm,ymm avx512bf16 +vcvtne2ps2bf16 ymm,ymm,m avx512bf16 +vcvtne2ps2bf16 ymm,ymm,ymm avx512bf16 +vcvtne2ps2bf16 zmm,k,zmm,m avx512bf16 +vcvtne2ps2bf16 zmm,k,zmm,zmm avx512bf16 +vcvtne2ps2bf16 zmm,zmm,m avx512bf16 +vcvtne2ps2bf16 zmm,zmm,zmm avx512bf16 +vcvtneps2bf16 xmm,k,m avx512bf16 +vcvtneps2bf16 xmm,k,xmm avx512bf16 +vcvtneps2bf16 xmm,k,ymm avx512bf16 +vcvtneps2bf16 xmm,m avx512bf16 +vcvtneps2bf16 xmm,xmm avx512bf16 +vcvtneps2bf16 xmm,ymm avx512bf16 +vcvtneps2bf16 ymm,k,m avx512bf16 +vcvtneps2bf16 ymm,k,zmm avx512bf16 +vcvtneps2bf16 ymm,m avx512bf16 +vcvtneps2bf16 ymm,zmm avx512bf16 +vcvtpd2dq xmm,k,m avx512f +vcvtpd2dq xmm,k,xmm avx512f +vcvtpd2dq xmm,k,ymm avx512f +vcvtpd2dq xmm,m avx +vcvtpd2dq xmm,m avx512f +vcvtpd2dq xmm,xmm avx +vcvtpd2dq xmm,xmm avx512f +vcvtpd2dq xmm,ymm avx +vcvtpd2dq xmm,ymm avx512f +vcvtpd2dq ymm,k,m avx512f +vcvtpd2dq ymm,k,zmm avx512f +vcvtpd2dq ymm,m avx512f +vcvtpd2dq ymm,zmm avx512f +vcvtpd2ph xmm,k,m avx512fp16 +vcvtpd2ph xmm,k,xmm avx512fp16 +vcvtpd2ph xmm,k,ymm avx512fp16 +vcvtpd2ph xmm,k,zmm avx512fp16 +vcvtpd2ph xmm,m avx512fp16 +vcvtpd2ph xmm,xmm avx512fp16 +vcvtpd2ph xmm,ymm avx512fp16 +vcvtpd2ph xmm,zmm avx512fp16 +vcvtpd2ps xmm,k,m avx512f +vcvtpd2ps xmm,k,xmm avx512f +vcvtpd2ps xmm,k,ymm avx512f +vcvtpd2ps xmm,m avx +vcvtpd2ps xmm,m avx512f +vcvtpd2ps xmm,xmm avx +vcvtpd2ps xmm,xmm avx512f +vcvtpd2ps xmm,ymm avx +vcvtpd2ps xmm,ymm avx512f +vcvtpd2ps ymm,k,m avx512f +vcvtpd2ps ymm,k,zmm avx512f +vcvtpd2ps ymm,m avx512f +vcvtpd2ps ymm,zmm avx512f +vcvtpd2ps zmm,k,m knce +vcvtpd2ps zmm,k,zmm knce +vcvtpd2ps zmm,m knce +vcvtpd2ps zmm,zmm knce +vcvtpd2qq xmm,k,m avx512dq +vcvtpd2qq xmm,k,xmm avx512dq +vcvtpd2qq xmm,m avx512dq +vcvtpd2qq xmm,xmm avx512dq +vcvtpd2qq ymm,k,m avx512dq +vcvtpd2qq ymm,k,ymm avx512dq +vcvtpd2qq ymm,m avx512dq +vcvtpd2qq ymm,ymm avx512dq +vcvtpd2qq zmm,k,m avx512dq +vcvtpd2qq zmm,k,zmm avx512dq +vcvtpd2qq zmm,m avx512dq +vcvtpd2qq zmm,zmm avx512dq +vcvtpd2udq xmm,k,m avx512f +vcvtpd2udq xmm,k,xmm avx512f +vcvtpd2udq xmm,k,ymm avx512f +vcvtpd2udq xmm,m avx512f +vcvtpd2udq xmm,xmm avx512f +vcvtpd2udq xmm,ymm avx512f +vcvtpd2udq ymm,k,m avx512f +vcvtpd2udq ymm,k,zmm avx512f +vcvtpd2udq ymm,m avx512f +vcvtpd2udq ymm,zmm avx512f +vcvtpd2uqq xmm,k,m avx512dq +vcvtpd2uqq xmm,k,xmm avx512dq +vcvtpd2uqq xmm,m avx512dq +vcvtpd2uqq xmm,xmm avx512dq +vcvtpd2uqq ymm,k,m avx512dq +vcvtpd2uqq ymm,k,ymm avx512dq +vcvtpd2uqq ymm,m avx512dq +vcvtpd2uqq ymm,ymm avx512dq +vcvtpd2uqq zmm,k,m avx512dq +vcvtpd2uqq zmm,k,zmm avx512dq +vcvtpd2uqq zmm,m avx512dq +vcvtpd2uqq zmm,zmm avx512dq +vcvtph2dq xmm,k,m avx512fp16 +vcvtph2dq xmm,k,xmm avx512fp16 +vcvtph2dq xmm,m avx512fp16 +vcvtph2dq xmm,xmm avx512fp16 +vcvtph2dq ymm,k,m avx512fp16 +vcvtph2dq ymm,k,xmm avx512fp16 +vcvtph2dq ymm,m avx512fp16 +vcvtph2dq ymm,xmm avx512fp16 +vcvtph2dq zmm,k,m avx512fp16 +vcvtph2dq zmm,k,ymm avx512fp16 +vcvtph2dq zmm,m avx512fp16 +vcvtph2dq zmm,ymm avx512fp16 +vcvtph2pd xmm,k,m avx512fp16 +vcvtph2pd xmm,k,xmm avx512fp16 +vcvtph2pd xmm,m avx512fp16 +vcvtph2pd xmm,xmm avx512fp16 +vcvtph2pd ymm,k,m avx512fp16 +vcvtph2pd ymm,k,xmm avx512fp16 +vcvtph2pd ymm,m avx512fp16 +vcvtph2pd ymm,xmm avx512fp16 +vcvtph2pd zmm,k,m avx512fp16 +vcvtph2pd zmm,k,xmm avx512fp16 +vcvtph2pd zmm,m avx512fp16 +vcvtph2pd zmm,xmm avx512fp16 +vcvtph2ps xmm,k,m avx512f +vcvtph2ps xmm,k,xmm avx512f +vcvtph2ps xmm,m avx512f +vcvtph2ps xmm,m f16c +vcvtph2ps xmm,xmm avx512f +vcvtph2ps xmm,xmm f16c +vcvtph2ps ymm,k,m avx512f +vcvtph2ps ymm,k,xmm avx512f +vcvtph2ps ymm,m avx512f +vcvtph2ps ymm,m f16c +vcvtph2ps ymm,xmm avx512f +vcvtph2ps ymm,xmm f16c +vcvtph2ps zmm,k,m avx512f +vcvtph2ps zmm,k,ymm avx512f +vcvtph2ps zmm,m avx512f +vcvtph2ps zmm,ymm avx512f +vcvtph2psx xmm,k,m avx512fp16 +vcvtph2psx xmm,k,xmm avx512fp16 +vcvtph2psx xmm,m avx512fp16 +vcvtph2psx xmm,xmm avx512fp16 +vcvtph2psx ymm,k,m avx512fp16 +vcvtph2psx ymm,k,xmm avx512fp16 +vcvtph2psx ymm,m avx512fp16 +vcvtph2psx ymm,xmm avx512fp16 +vcvtph2psx zmm,k,m avx512fp16 +vcvtph2psx zmm,k,ymm avx512fp16 +vcvtph2psx zmm,m avx512fp16 +vcvtph2psx zmm,ymm avx512fp16 +vcvtph2qq xmm,k,m avx512fp16 +vcvtph2qq xmm,k,xmm avx512fp16 +vcvtph2qq xmm,m avx512fp16 +vcvtph2qq xmm,xmm avx512fp16 +vcvtph2qq ymm,k,m avx512fp16 +vcvtph2qq ymm,k,xmm avx512fp16 +vcvtph2qq ymm,m avx512fp16 +vcvtph2qq ymm,xmm avx512fp16 +vcvtph2qq zmm,k,m avx512fp16 +vcvtph2qq zmm,k,xmm avx512fp16 +vcvtph2qq zmm,m avx512fp16 +vcvtph2qq zmm,xmm avx512fp16 +vcvtph2udq xmm,k,m avx512fp16 +vcvtph2udq xmm,k,xmm avx512fp16 +vcvtph2udq xmm,m avx512fp16 +vcvtph2udq xmm,xmm avx512fp16 +vcvtph2udq ymm,k,m avx512fp16 +vcvtph2udq ymm,k,xmm avx512fp16 +vcvtph2udq ymm,m avx512fp16 +vcvtph2udq ymm,xmm avx512fp16 +vcvtph2udq zmm,k,m avx512fp16 +vcvtph2udq zmm,k,ymm avx512fp16 +vcvtph2udq zmm,m avx512fp16 +vcvtph2udq zmm,ymm avx512fp16 +vcvtph2uqq xmm,k,m avx512fp16 +vcvtph2uqq xmm,k,xmm avx512fp16 +vcvtph2uqq xmm,m avx512fp16 +vcvtph2uqq xmm,xmm avx512fp16 +vcvtph2uqq ymm,k,m avx512fp16 +vcvtph2uqq ymm,k,xmm avx512fp16 +vcvtph2uqq ymm,m avx512fp16 +vcvtph2uqq ymm,xmm avx512fp16 +vcvtph2uqq zmm,k,m avx512fp16 +vcvtph2uqq zmm,k,xmm avx512fp16 +vcvtph2uqq zmm,m avx512fp16 +vcvtph2uqq zmm,xmm avx512fp16 +vcvtph2uw xmm,k,m avx512fp16 +vcvtph2uw xmm,k,xmm avx512fp16 +vcvtph2uw xmm,m avx512fp16 +vcvtph2uw xmm,xmm avx512fp16 +vcvtph2uw ymm,k,m avx512fp16 +vcvtph2uw ymm,k,ymm avx512fp16 +vcvtph2uw ymm,m avx512fp16 +vcvtph2uw ymm,ymm avx512fp16 +vcvtph2uw zmm,k,m avx512fp16 +vcvtph2uw zmm,k,zmm avx512fp16 +vcvtph2uw zmm,m avx512fp16 +vcvtph2uw zmm,zmm avx512fp16 +vcvtph2w xmm,k,m avx512fp16 +vcvtph2w xmm,k,xmm avx512fp16 +vcvtph2w xmm,m avx512fp16 +vcvtph2w xmm,xmm avx512fp16 +vcvtph2w ymm,k,m avx512fp16 +vcvtph2w ymm,k,ymm avx512fp16 +vcvtph2w ymm,m avx512fp16 +vcvtph2w ymm,ymm avx512fp16 +vcvtph2w zmm,k,m avx512fp16 +vcvtph2w zmm,k,zmm avx512fp16 +vcvtph2w zmm,m avx512fp16 +vcvtph2w zmm,zmm avx512fp16 +vcvtps2dq xmm,k,m avx512f +vcvtps2dq xmm,k,xmm avx512f +vcvtps2dq xmm,m avx +vcvtps2dq xmm,m avx512f +vcvtps2dq xmm,xmm avx +vcvtps2dq xmm,xmm avx512f +vcvtps2dq ymm,k,m avx512f +vcvtps2dq ymm,k,ymm avx512f +vcvtps2dq ymm,m avx +vcvtps2dq ymm,m avx512f +vcvtps2dq ymm,ymm avx +vcvtps2dq ymm,ymm avx512f +vcvtps2dq zmm,k,m avx512f +vcvtps2dq zmm,k,zmm avx512f +vcvtps2dq zmm,m avx512f +vcvtps2dq zmm,zmm avx512f +vcvtps2pd xmm,k,m avx512f +vcvtps2pd xmm,k,xmm avx512f +vcvtps2pd xmm,m avx +vcvtps2pd xmm,m avx512f +vcvtps2pd xmm,xmm avx +vcvtps2pd xmm,xmm avx512f +vcvtps2pd ymm,k,m avx512f +vcvtps2pd ymm,k,xmm avx512f +vcvtps2pd ymm,m avx +vcvtps2pd ymm,m avx512f +vcvtps2pd ymm,xmm avx +vcvtps2pd ymm,xmm avx512f +vcvtps2pd zmm,k,m avx512f +vcvtps2pd zmm,k,m knce +vcvtps2pd zmm,k,ymm avx512f +vcvtps2pd zmm,k,zmm knce +vcvtps2pd zmm,m avx512f +vcvtps2pd zmm,m knce +vcvtps2pd zmm,ymm avx512f +vcvtps2pd zmm,zmm knce +vcvtps2ph m,k,xmm,imm avx512f +vcvtps2ph m,k,ymm,imm avx512f +vcvtps2ph m,k,zmm,imm avx512f +vcvtps2ph m,xmm,imm avx512f +vcvtps2ph m,xmm,imm f16c +vcvtps2ph m,ymm,imm avx512f +vcvtps2ph m,ymm,imm f16c +vcvtps2ph m,zmm,imm avx512f +vcvtps2ph xmm,k,xmm,imm avx512f +vcvtps2ph xmm,k,ymm,imm avx512f +vcvtps2ph xmm,xmm,imm avx512f +vcvtps2ph xmm,xmm,imm f16c +vcvtps2ph xmm,ymm,imm avx512f +vcvtps2ph xmm,ymm,imm f16c +vcvtps2ph ymm,k,zmm,imm avx512f +vcvtps2ph ymm,zmm,imm avx512f +vcvtps2phx xmm,k,m avx512fp16 +vcvtps2phx xmm,k,xmm avx512fp16 +vcvtps2phx xmm,k,ymm avx512fp16 +vcvtps2phx xmm,m avx512fp16 +vcvtps2phx xmm,xmm avx512fp16 +vcvtps2phx xmm,ymm avx512fp16 +vcvtps2phx ymm,k,m avx512fp16 +vcvtps2phx ymm,k,zmm avx512fp16 +vcvtps2phx ymm,m avx512fp16 +vcvtps2phx ymm,zmm avx512fp16 +vcvtps2qq xmm,k,m avx512dq +vcvtps2qq xmm,k,xmm avx512dq +vcvtps2qq xmm,m avx512dq +vcvtps2qq xmm,xmm avx512dq +vcvtps2qq ymm,k,m avx512dq +vcvtps2qq ymm,k,xmm avx512dq +vcvtps2qq ymm,m avx512dq +vcvtps2qq ymm,xmm avx512dq +vcvtps2qq zmm,k,m avx512dq +vcvtps2qq zmm,k,ymm avx512dq +vcvtps2qq zmm,m avx512dq +vcvtps2qq zmm,ymm avx512dq +vcvtps2udq xmm,k,m avx512f +vcvtps2udq xmm,k,xmm avx512f +vcvtps2udq xmm,m avx512f +vcvtps2udq xmm,xmm avx512f +vcvtps2udq ymm,k,m avx512f +vcvtps2udq ymm,k,ymm avx512f +vcvtps2udq ymm,m avx512f +vcvtps2udq ymm,ymm avx512f +vcvtps2udq zmm,k,m avx512f +vcvtps2udq zmm,k,zmm avx512f +vcvtps2udq zmm,m avx512f +vcvtps2udq zmm,zmm avx512f +vcvtps2uqq xmm,k,m avx512dq +vcvtps2uqq xmm,k,xmm avx512dq +vcvtps2uqq xmm,m avx512dq +vcvtps2uqq xmm,xmm avx512dq +vcvtps2uqq ymm,k,m avx512dq +vcvtps2uqq ymm,k,xmm avx512dq +vcvtps2uqq ymm,m avx512dq +vcvtps2uqq ymm,xmm avx512dq +vcvtps2uqq zmm,k,m avx512dq +vcvtps2uqq zmm,k,ymm avx512dq +vcvtps2uqq zmm,m avx512dq +vcvtps2uqq zmm,ymm avx512dq +vcvtqq2pd xmm,k,m avx512dq +vcvtqq2pd xmm,k,xmm avx512dq +vcvtqq2pd xmm,m avx512dq +vcvtqq2pd xmm,xmm avx512dq +vcvtqq2pd ymm,k,m avx512dq +vcvtqq2pd ymm,k,ymm avx512dq +vcvtqq2pd ymm,m avx512dq +vcvtqq2pd ymm,ymm avx512dq +vcvtqq2pd zmm,k,m avx512dq +vcvtqq2pd zmm,k,zmm avx512dq +vcvtqq2pd zmm,m avx512dq +vcvtqq2pd zmm,zmm avx512dq +vcvtqq2ph xmm,k,m avx512fp16 +vcvtqq2ph xmm,k,xmm avx512fp16 +vcvtqq2ph xmm,k,ymm avx512fp16 +vcvtqq2ph xmm,k,zmm avx512fp16 +vcvtqq2ph xmm,m avx512fp16 +vcvtqq2ph xmm,xmm avx512fp16 +vcvtqq2ph xmm,ymm avx512fp16 +vcvtqq2ph xmm,zmm avx512fp16 +vcvtqq2ps xmm,k,m avx512dq +vcvtqq2ps xmm,k,xmm avx512dq +vcvtqq2ps xmm,k,ymm avx512dq +vcvtqq2ps xmm,m avx512dq +vcvtqq2ps xmm,xmm avx512dq +vcvtqq2ps xmm,ymm avx512dq +vcvtqq2ps ymm,k,m avx512dq +vcvtqq2ps ymm,k,zmm avx512dq +vcvtqq2ps ymm,m avx512dq +vcvtqq2ps ymm,zmm avx512dq +vcvtsd2sh xmm,k,xmm,m avx512fp16_scalar +vcvtsd2sh xmm,k,xmm,xmm avx512fp16_scalar +vcvtsd2sh xmm,xmm,m avx512fp16_scalar +vcvtsd2sh xmm,xmm,xmm avx512fp16_scalar +vcvtsd2si r32,m avx +vcvtsd2si r32,m avx512f_scalar +vcvtsd2si r32,xmm avx +vcvtsd2si r32,xmm avx512f_scalar +vcvtsd2si r64,m avx +vcvtsd2si r64,m avx512f_scalar +vcvtsd2si r64,xmm avx +vcvtsd2si r64,xmm avx512f_scalar +vcvtsd2ss xmm,k,xmm,m avx512f_scalar +vcvtsd2ss xmm,k,xmm,xmm avx512f_scalar +vcvtsd2ss xmm,xmm,m avx +vcvtsd2ss xmm,xmm,m avx512f_scalar +vcvtsd2ss xmm,xmm,xmm avx +vcvtsd2ss xmm,xmm,xmm avx512f_scalar +vcvtsd2usi r32,m avx512f_scalar +vcvtsd2usi r32,xmm avx512f_scalar +vcvtsd2usi r64,m avx512f_scalar +vcvtsd2usi r64,xmm avx512f_scalar +vcvtsh2sd xmm,k,xmm,m avx512fp16_scalar +vcvtsh2sd xmm,k,xmm,xmm avx512fp16_scalar +vcvtsh2sd xmm,xmm,m avx512fp16_scalar +vcvtsh2sd xmm,xmm,xmm avx512fp16_scalar +vcvtsh2si r32,m avx512fp16_scalar +vcvtsh2si r32,xmm avx512fp16_scalar +vcvtsh2si r64,m avx512fp16_scalar +vcvtsh2si r64,xmm avx512fp16_scalar +vcvtsh2ss xmm,k,xmm,m avx512fp16_scalar +vcvtsh2ss xmm,k,xmm,xmm avx512fp16_scalar +vcvtsh2ss xmm,xmm,m avx512fp16_scalar +vcvtsh2ss xmm,xmm,xmm avx512fp16_scalar +vcvtsh2usi r32,m avx512fp16_scalar +vcvtsh2usi r32,xmm avx512fp16_scalar +vcvtsh2usi r64,m avx512fp16_scalar +vcvtsh2usi r64,xmm avx512fp16_scalar +vcvtsi2sd xmm,xmm,m avx +vcvtsi2sd xmm,xmm,m avx512f_scalar +vcvtsi2sd xmm,xmm,r32 avx +vcvtsi2sd xmm,xmm,r32 avx512f_scalar +vcvtsi2sd xmm,xmm,r64 avx +vcvtsi2sd xmm,xmm,r64 avx512f_scalar +vcvtsi2sh xmm,xmm,m avx512fp16_scalar +vcvtsi2sh xmm,xmm,r32 avx512fp16_scalar +vcvtsi2sh xmm,xmm,r64 avx512fp16_scalar +vcvtsi2ss xmm,xmm,m avx +vcvtsi2ss xmm,xmm,m avx512f_scalar +vcvtsi2ss xmm,xmm,r32 avx +vcvtsi2ss xmm,xmm,r32 avx512f_scalar +vcvtsi2ss xmm,xmm,r64 avx +vcvtsi2ss xmm,xmm,r64 avx512f_scalar +vcvtss2sd xmm,k,xmm,m avx512f_scalar +vcvtss2sd xmm,k,xmm,xmm avx512f_scalar +vcvtss2sd xmm,xmm,m avx +vcvtss2sd xmm,xmm,m avx512f_scalar +vcvtss2sd xmm,xmm,xmm avx +vcvtss2sd xmm,xmm,xmm avx512f_scalar +vcvtss2sh xmm,k,xmm,m avx512fp16_scalar +vcvtss2sh xmm,k,xmm,xmm avx512fp16_scalar +vcvtss2sh xmm,xmm,m avx512fp16_scalar +vcvtss2sh xmm,xmm,xmm avx512fp16_scalar +vcvtss2si r32,m avx +vcvtss2si r32,m avx512f_scalar +vcvtss2si r32,xmm avx +vcvtss2si r32,xmm avx512f_scalar +vcvtss2si r64,m avx +vcvtss2si r64,m avx512f_scalar +vcvtss2si r64,xmm avx +vcvtss2si r64,xmm avx512f_scalar +vcvtss2usi r32,m avx512f_scalar +vcvtss2usi r32,xmm avx512f_scalar +vcvtss2usi r64,m avx512f_scalar +vcvtss2usi r64,xmm avx512f_scalar +vcvttpd2dq xmm,k,m avx512f +vcvttpd2dq xmm,k,xmm avx512f +vcvttpd2dq xmm,k,ymm avx512f +vcvttpd2dq xmm,m avx +vcvttpd2dq xmm,m avx512f +vcvttpd2dq xmm,xmm avx +vcvttpd2dq xmm,xmm avx512f +vcvttpd2dq xmm,ymm avx +vcvttpd2dq xmm,ymm avx512f +vcvttpd2dq ymm,k,m avx512f +vcvttpd2dq ymm,k,zmm avx512f +vcvttpd2dq ymm,m avx512f +vcvttpd2dq ymm,zmm avx512f +vcvttpd2qq xmm,k,m avx512dq +vcvttpd2qq xmm,k,xmm avx512dq +vcvttpd2qq xmm,m avx512dq +vcvttpd2qq xmm,xmm avx512dq +vcvttpd2qq ymm,k,m avx512dq +vcvttpd2qq ymm,k,ymm avx512dq +vcvttpd2qq ymm,m avx512dq +vcvttpd2qq ymm,ymm avx512dq +vcvttpd2qq zmm,k,m avx512dq +vcvttpd2qq zmm,k,zmm avx512dq +vcvttpd2qq zmm,m avx512dq +vcvttpd2qq zmm,zmm avx512dq +vcvttpd2udq xmm,k,m avx512f +vcvttpd2udq xmm,k,xmm avx512f +vcvttpd2udq xmm,k,ymm avx512f +vcvttpd2udq xmm,m avx512f +vcvttpd2udq xmm,xmm avx512f +vcvttpd2udq xmm,ymm avx512f +vcvttpd2udq ymm,k,m avx512f +vcvttpd2udq ymm,k,zmm avx512f +vcvttpd2udq ymm,m avx512f +vcvttpd2udq ymm,zmm avx512f +vcvttpd2uqq xmm,k,m avx512dq +vcvttpd2uqq xmm,k,xmm avx512dq +vcvttpd2uqq xmm,m avx512dq +vcvttpd2uqq xmm,xmm avx512dq +vcvttpd2uqq ymm,k,m avx512dq +vcvttpd2uqq ymm,k,ymm avx512dq +vcvttpd2uqq ymm,m avx512dq +vcvttpd2uqq ymm,ymm avx512dq +vcvttpd2uqq zmm,k,m avx512dq +vcvttpd2uqq zmm,k,zmm avx512dq +vcvttpd2uqq zmm,m avx512dq +vcvttpd2uqq zmm,zmm avx512dq +vcvttph2dq xmm,k,m avx512fp16 +vcvttph2dq xmm,k,xmm avx512fp16 +vcvttph2dq xmm,m avx512fp16 +vcvttph2dq xmm,xmm avx512fp16 +vcvttph2dq ymm,k,m avx512fp16 +vcvttph2dq ymm,k,xmm avx512fp16 +vcvttph2dq ymm,m avx512fp16 +vcvttph2dq ymm,xmm avx512fp16 +vcvttph2dq zmm,k,m avx512fp16 +vcvttph2dq zmm,k,ymm avx512fp16 +vcvttph2dq zmm,m avx512fp16 +vcvttph2dq zmm,ymm avx512fp16 +vcvttph2qq xmm,k,m avx512fp16 +vcvttph2qq xmm,k,xmm avx512fp16 +vcvttph2qq xmm,m avx512fp16 +vcvttph2qq xmm,xmm avx512fp16 +vcvttph2qq ymm,k,m avx512fp16 +vcvttph2qq ymm,k,xmm avx512fp16 +vcvttph2qq ymm,m avx512fp16 +vcvttph2qq ymm,xmm avx512fp16 +vcvttph2qq zmm,k,m avx512fp16 +vcvttph2qq zmm,k,xmm avx512fp16 +vcvttph2qq zmm,m avx512fp16 +vcvttph2qq zmm,xmm avx512fp16 +vcvttph2udq xmm,k,m avx512fp16 +vcvttph2udq xmm,k,xmm avx512fp16 +vcvttph2udq xmm,m avx512fp16 +vcvttph2udq xmm,xmm avx512fp16 +vcvttph2udq ymm,k,m avx512fp16 +vcvttph2udq ymm,k,xmm avx512fp16 +vcvttph2udq ymm,m avx512fp16 +vcvttph2udq ymm,xmm avx512fp16 +vcvttph2udq zmm,k,m avx512fp16 +vcvttph2udq zmm,k,ymm avx512fp16 +vcvttph2udq zmm,m avx512fp16 +vcvttph2udq zmm,ymm avx512fp16 +vcvttph2uqq xmm,k,m avx512fp16 +vcvttph2uqq xmm,k,xmm avx512fp16 +vcvttph2uqq xmm,m avx512fp16 +vcvttph2uqq xmm,xmm avx512fp16 +vcvttph2uqq ymm,k,m avx512fp16 +vcvttph2uqq ymm,k,xmm avx512fp16 +vcvttph2uqq ymm,m avx512fp16 +vcvttph2uqq ymm,xmm avx512fp16 +vcvttph2uqq zmm,k,m avx512fp16 +vcvttph2uqq zmm,k,xmm avx512fp16 +vcvttph2uqq zmm,m avx512fp16 +vcvttph2uqq zmm,xmm avx512fp16 +vcvttph2uw xmm,k,m avx512fp16 +vcvttph2uw xmm,k,xmm avx512fp16 +vcvttph2uw xmm,m avx512fp16 +vcvttph2uw xmm,xmm avx512fp16 +vcvttph2uw ymm,k,m avx512fp16 +vcvttph2uw ymm,k,ymm avx512fp16 +vcvttph2uw ymm,m avx512fp16 +vcvttph2uw ymm,ymm avx512fp16 +vcvttph2uw zmm,k,m avx512fp16 +vcvttph2uw zmm,k,zmm avx512fp16 +vcvttph2uw zmm,m avx512fp16 +vcvttph2uw zmm,zmm avx512fp16 +vcvttph2w xmm,k,m avx512fp16 +vcvttph2w xmm,k,xmm avx512fp16 +vcvttph2w xmm,m avx512fp16 +vcvttph2w xmm,xmm avx512fp16 +vcvttph2w ymm,k,m avx512fp16 +vcvttph2w ymm,k,ymm avx512fp16 +vcvttph2w ymm,m avx512fp16 +vcvttph2w ymm,ymm avx512fp16 +vcvttph2w zmm,k,m avx512fp16 +vcvttph2w zmm,k,zmm avx512fp16 +vcvttph2w zmm,m avx512fp16 +vcvttph2w zmm,zmm avx512fp16 +vcvttps2dq xmm,k,m avx512f +vcvttps2dq xmm,k,xmm avx512f +vcvttps2dq xmm,m avx +vcvttps2dq xmm,m avx512f +vcvttps2dq xmm,xmm avx +vcvttps2dq xmm,xmm avx512f +vcvttps2dq ymm,k,m avx512f +vcvttps2dq ymm,k,ymm avx512f +vcvttps2dq ymm,m avx +vcvttps2dq ymm,m avx512f +vcvttps2dq ymm,ymm avx +vcvttps2dq ymm,ymm avx512f +vcvttps2dq zmm,k,m avx512f +vcvttps2dq zmm,k,zmm avx512f +vcvttps2dq zmm,m avx512f +vcvttps2dq zmm,zmm avx512f +vcvttps2qq xmm,k,m avx512dq +vcvttps2qq xmm,k,xmm avx512dq +vcvttps2qq xmm,m avx512dq +vcvttps2qq xmm,xmm avx512dq +vcvttps2qq ymm,k,m avx512dq +vcvttps2qq ymm,k,xmm avx512dq +vcvttps2qq ymm,m avx512dq +vcvttps2qq ymm,xmm avx512dq +vcvttps2qq zmm,k,m avx512dq +vcvttps2qq zmm,k,ymm avx512dq +vcvttps2qq zmm,m avx512dq +vcvttps2qq zmm,ymm avx512dq +vcvttps2udq xmm,k,m avx512f +vcvttps2udq xmm,k,xmm avx512f +vcvttps2udq xmm,m avx512f +vcvttps2udq xmm,xmm avx512f +vcvttps2udq ymm,k,m avx512f +vcvttps2udq ymm,k,ymm avx512f +vcvttps2udq ymm,m avx512f +vcvttps2udq ymm,ymm avx512f +vcvttps2udq zmm,k,m avx512f +vcvttps2udq zmm,k,zmm avx512f +vcvttps2udq zmm,m avx512f +vcvttps2udq zmm,zmm avx512f +vcvttps2uqq xmm,k,m avx512dq +vcvttps2uqq xmm,k,xmm avx512dq +vcvttps2uqq xmm,m avx512dq +vcvttps2uqq xmm,xmm avx512dq +vcvttps2uqq ymm,k,m avx512dq +vcvttps2uqq ymm,k,xmm avx512dq +vcvttps2uqq ymm,m avx512dq +vcvttps2uqq ymm,xmm avx512dq +vcvttps2uqq zmm,k,m avx512dq +vcvttps2uqq zmm,k,ymm avx512dq +vcvttps2uqq zmm,m avx512dq +vcvttps2uqq zmm,ymm avx512dq +vcvttsd2si r32,m avx +vcvttsd2si r32,m avx512f_scalar +vcvttsd2si r32,xmm avx +vcvttsd2si r32,xmm avx512f_scalar +vcvttsd2si r64,m avx +vcvttsd2si r64,m avx512f_scalar +vcvttsd2si r64,xmm avx +vcvttsd2si r64,xmm avx512f_scalar +vcvttsd2usi r32,m avx512f_scalar +vcvttsd2usi r32,xmm avx512f_scalar +vcvttsd2usi r64,m avx512f_scalar +vcvttsd2usi r64,xmm avx512f_scalar +vcvttsh2si r32,m avx512fp16_scalar +vcvttsh2si r32,xmm avx512fp16_scalar +vcvttsh2si r64,m avx512fp16_scalar +vcvttsh2si r64,xmm avx512fp16_scalar +vcvttsh2usi r32,m avx512fp16_scalar +vcvttsh2usi r32,xmm avx512fp16_scalar +vcvttsh2usi r64,m avx512fp16_scalar +vcvttsh2usi r64,xmm avx512fp16_scalar +vcvttss2si r32,m avx +vcvttss2si r32,m avx512f_scalar +vcvttss2si r32,xmm avx +vcvttss2si r32,xmm avx512f_scalar +vcvttss2si r64,m avx +vcvttss2si r64,m avx512f_scalar +vcvttss2si r64,xmm avx +vcvttss2si r64,xmm avx512f_scalar +vcvttss2usi r32,m avx512f_scalar +vcvttss2usi r32,xmm avx512f_scalar +vcvttss2usi r64,m avx512f_scalar +vcvttss2usi r64,xmm avx512f_scalar +vcvtudq2pd xmm,k,m avx512f +vcvtudq2pd xmm,k,xmm avx512f +vcvtudq2pd xmm,m avx512f +vcvtudq2pd xmm,xmm avx512f +vcvtudq2pd ymm,k,m avx512f +vcvtudq2pd ymm,k,xmm avx512f +vcvtudq2pd ymm,m avx512f +vcvtudq2pd ymm,xmm avx512f +vcvtudq2pd zmm,k,m avx512f +vcvtudq2pd zmm,k,m knce +vcvtudq2pd zmm,k,ymm avx512f +vcvtudq2pd zmm,k,zmm knce +vcvtudq2pd zmm,m avx512f +vcvtudq2pd zmm,m knce +vcvtudq2pd zmm,ymm avx512f +vcvtudq2pd zmm,zmm knce +vcvtudq2ph xmm,k,m avx512fp16 +vcvtudq2ph xmm,k,xmm avx512fp16 +vcvtudq2ph xmm,k,ymm avx512fp16 +vcvtudq2ph xmm,m avx512fp16 +vcvtudq2ph xmm,xmm avx512fp16 +vcvtudq2ph xmm,ymm avx512fp16 +vcvtudq2ph ymm,k,m avx512fp16 +vcvtudq2ph ymm,k,zmm avx512fp16 +vcvtudq2ph ymm,m avx512fp16 +vcvtudq2ph ymm,zmm avx512fp16 +vcvtudq2ps xmm,k,m avx512f +vcvtudq2ps xmm,k,xmm avx512f +vcvtudq2ps xmm,m avx512f +vcvtudq2ps xmm,xmm avx512f +vcvtudq2ps ymm,k,m avx512f +vcvtudq2ps ymm,k,ymm avx512f +vcvtudq2ps ymm,m avx512f +vcvtudq2ps ymm,ymm avx512f +vcvtudq2ps zmm,k,m avx512f +vcvtudq2ps zmm,k,zmm avx512f +vcvtudq2ps zmm,m avx512f +vcvtudq2ps zmm,zmm avx512f +vcvtuqq2pd xmm,k,m avx512dq +vcvtuqq2pd xmm,k,xmm avx512dq +vcvtuqq2pd xmm,m avx512dq +vcvtuqq2pd xmm,xmm avx512dq +vcvtuqq2pd ymm,k,m avx512dq +vcvtuqq2pd ymm,k,ymm avx512dq +vcvtuqq2pd ymm,m avx512dq +vcvtuqq2pd ymm,ymm avx512dq +vcvtuqq2pd zmm,k,m avx512dq +vcvtuqq2pd zmm,k,zmm avx512dq +vcvtuqq2pd zmm,m avx512dq +vcvtuqq2pd zmm,zmm avx512dq +vcvtuqq2ph xmm,k,m avx512fp16 +vcvtuqq2ph xmm,k,xmm avx512fp16 +vcvtuqq2ph xmm,k,ymm avx512fp16 +vcvtuqq2ph xmm,k,zmm avx512fp16 +vcvtuqq2ph xmm,m avx512fp16 +vcvtuqq2ph xmm,xmm avx512fp16 +vcvtuqq2ph xmm,ymm avx512fp16 +vcvtuqq2ph xmm,zmm avx512fp16 +vcvtuqq2ps xmm,k,m avx512dq +vcvtuqq2ps xmm,k,xmm avx512dq +vcvtuqq2ps xmm,k,ymm avx512dq +vcvtuqq2ps xmm,m avx512dq +vcvtuqq2ps xmm,xmm avx512dq +vcvtuqq2ps xmm,ymm avx512dq +vcvtuqq2ps ymm,k,m avx512dq +vcvtuqq2ps ymm,k,zmm avx512dq +vcvtuqq2ps ymm,m avx512dq +vcvtuqq2ps ymm,zmm avx512dq +vcvtusi2sd xmm,xmm,m avx512f_scalar +vcvtusi2sd xmm,xmm,r32 avx512f_scalar +vcvtusi2sd xmm,xmm,r64 avx512f_scalar +vcvtusi2sh xmm,xmm,m avx512fp16_scalar +vcvtusi2sh xmm,xmm,r32 avx512fp16_scalar +vcvtusi2sh xmm,xmm,r64 avx512fp16_scalar +vcvtusi2ss xmm,xmm,m avx512f_scalar +vcvtusi2ss xmm,xmm,r32 avx512f_scalar +vcvtusi2ss xmm,xmm,r64 avx512f_scalar +vcvtuw2ph xmm,k,m avx512fp16 +vcvtuw2ph xmm,k,xmm avx512fp16 +vcvtuw2ph xmm,m avx512fp16 +vcvtuw2ph xmm,xmm avx512fp16 +vcvtuw2ph ymm,k,m avx512fp16 +vcvtuw2ph ymm,k,ymm avx512fp16 +vcvtuw2ph ymm,m avx512fp16 +vcvtuw2ph ymm,ymm avx512fp16 +vcvtuw2ph zmm,k,m avx512fp16 +vcvtuw2ph zmm,k,zmm avx512fp16 +vcvtuw2ph zmm,m avx512fp16 +vcvtuw2ph zmm,zmm avx512fp16 +vcvtw2ph xmm,k,m avx512fp16 +vcvtw2ph xmm,k,xmm avx512fp16 +vcvtw2ph xmm,m avx512fp16 +vcvtw2ph xmm,xmm avx512fp16 +vcvtw2ph ymm,k,m avx512fp16 +vcvtw2ph ymm,k,ymm avx512fp16 +vcvtw2ph ymm,m avx512fp16 +vcvtw2ph ymm,ymm avx512fp16 +vcvtw2ph zmm,k,m avx512fp16 +vcvtw2ph zmm,k,zmm avx512fp16 +vcvtw2ph zmm,m avx512fp16 +vcvtw2ph zmm,zmm avx512fp16 +vdbpsadbw xmm,k,xmm,m,imm avx512bw +vdbpsadbw xmm,k,xmm,xmm,imm avx512bw +vdbpsadbw xmm,xmm,m,imm avx512bw +vdbpsadbw xmm,xmm,xmm,imm avx512bw +vdbpsadbw ymm,k,ymm,m,imm avx512bw +vdbpsadbw ymm,k,ymm,ymm,imm avx512bw +vdbpsadbw ymm,ymm,m,imm avx512bw +vdbpsadbw ymm,ymm,ymm,imm avx512bw +vdbpsadbw zmm,k,zmm,m,imm avx512bw +vdbpsadbw zmm,k,zmm,zmm,imm avx512bw +vdbpsadbw zmm,zmm,m,imm avx512bw +vdbpsadbw zmm,zmm,zmm,imm avx512bw +vdivpd xmm,k,xmm,m avx512f +vdivpd xmm,k,xmm,xmm avx512f +vdivpd xmm,xmm,m avx +vdivpd xmm,xmm,m avx512f +vdivpd xmm,xmm,xmm avx +vdivpd xmm,xmm,xmm avx512f +vdivpd ymm,k,ymm,m avx512f +vdivpd ymm,k,ymm,ymm avx512f +vdivpd ymm,ymm,m avx +vdivpd ymm,ymm,m avx512f +vdivpd ymm,ymm,ymm avx +vdivpd ymm,ymm,ymm avx512f +vdivpd zmm,k,zmm,m avx512f +vdivpd zmm,k,zmm,zmm avx512f +vdivpd zmm,zmm,m avx512f +vdivpd zmm,zmm,zmm avx512f +vdivph xmm,k,xmm,m avx512fp16 +vdivph xmm,k,xmm,xmm avx512fp16 +vdivph xmm,xmm,m avx512fp16 +vdivph xmm,xmm,xmm avx512fp16 +vdivph ymm,k,ymm,m avx512fp16 +vdivph ymm,k,ymm,ymm avx512fp16 +vdivph ymm,ymm,m avx512fp16 +vdivph ymm,ymm,ymm avx512fp16 +vdivph zmm,k,zmm,m avx512fp16 +vdivph zmm,k,zmm,zmm avx512fp16 +vdivph zmm,zmm,m avx512fp16 +vdivph zmm,zmm,zmm avx512fp16 +vdivps xmm,k,xmm,m avx512f +vdivps xmm,k,xmm,xmm avx512f +vdivps xmm,xmm,m avx +vdivps xmm,xmm,m avx512f +vdivps xmm,xmm,xmm avx +vdivps xmm,xmm,xmm avx512f +vdivps ymm,k,ymm,m avx512f +vdivps ymm,k,ymm,ymm avx512f +vdivps ymm,ymm,m avx +vdivps ymm,ymm,m avx512f +vdivps ymm,ymm,ymm avx +vdivps ymm,ymm,ymm avx512f +vdivps zmm,k,zmm,m avx512f +vdivps zmm,k,zmm,zmm avx512f +vdivps zmm,zmm,m avx512f +vdivps zmm,zmm,zmm avx512f +vdivsd xmm,k,xmm,m avx512f_scalar +vdivsd xmm,k,xmm,xmm avx512f_scalar +vdivsd xmm,xmm,m avx +vdivsd xmm,xmm,m avx512f_scalar +vdivsd xmm,xmm,xmm avx +vdivsd xmm,xmm,xmm avx512f_scalar +vdivsh xmm,k,xmm,m avx512fp16_scalar +vdivsh xmm,k,xmm,xmm avx512fp16_scalar +vdivsh xmm,xmm,m avx512fp16_scalar +vdivsh xmm,xmm,xmm avx512fp16_scalar +vdivss xmm,k,xmm,m avx512f_scalar +vdivss xmm,k,xmm,xmm avx512f_scalar +vdivss xmm,xmm,m avx +vdivss xmm,xmm,m avx512f_scalar +vdivss xmm,xmm,xmm avx +vdivss xmm,xmm,xmm avx512f_scalar +vdpbf16ps xmm,k,xmm,m avx512bf16 +vdpbf16ps xmm,k,xmm,xmm avx512bf16 +vdpbf16ps xmm,xmm,m avx512bf16 +vdpbf16ps xmm,xmm,xmm avx512bf16 +vdpbf16ps ymm,k,ymm,m avx512bf16 +vdpbf16ps ymm,k,ymm,ymm avx512bf16 +vdpbf16ps ymm,ymm,m avx512bf16 +vdpbf16ps ymm,ymm,ymm avx512bf16 +vdpbf16ps zmm,k,zmm,m avx512bf16 +vdpbf16ps zmm,k,zmm,zmm avx512bf16 +vdpbf16ps zmm,zmm,m avx512bf16 +vdpbf16ps zmm,zmm,zmm avx512bf16 +vdppd xmm,xmm,m,imm avx +vdppd xmm,xmm,xmm,imm avx +vdpps xmm,xmm,m,imm avx +vdpps xmm,xmm,xmm,imm avx +vdpps ymm,ymm,m,imm avx +vdpps ymm,ymm,ymm,imm avx +verr m i286protected +verr r16 i286protected +verw m i286protected +verw r16 i286protected +vexp223ps zmm,k,m knce +vexp223ps zmm,k,zmm knce +vexp223ps zmm,m knce +vexp223ps zmm,zmm knce +vexp2pd zmm,k,m avx512er +vexp2pd zmm,k,zmm avx512er +vexp2pd zmm,m avx512er +vexp2pd zmm,zmm avx512er +vexp2ps zmm,k,m avx512er +vexp2ps zmm,k,zmm avx512er +vexp2ps zmm,m avx512er +vexp2ps zmm,zmm avx512er +vexpandpd xmm,k,m avx512f +vexpandpd xmm,k,xmm avx512f +vexpandpd xmm,m avx512f +vexpandpd xmm,xmm avx512f +vexpandpd ymm,k,m avx512f +vexpandpd ymm,k,ymm avx512f +vexpandpd ymm,m avx512f +vexpandpd ymm,ymm avx512f +vexpandpd zmm,k,m avx512f +vexpandpd zmm,k,zmm avx512f +vexpandpd zmm,m avx512f +vexpandpd zmm,zmm avx512f +vexpandps xmm,k,m avx512f +vexpandps xmm,k,xmm avx512f +vexpandps xmm,m avx512f +vexpandps xmm,xmm avx512f +vexpandps ymm,k,m avx512f +vexpandps ymm,k,ymm avx512f +vexpandps ymm,m avx512f +vexpandps ymm,ymm avx512f +vexpandps zmm,k,m avx512f +vexpandps zmm,k,zmm avx512f +vexpandps zmm,m avx512f +vexpandps zmm,zmm avx512f +vextractf128 m,ymm,imm avx +vextractf128 xmm,ymm,imm avx +vextractf32x4 m,k,ymm,imm avx512f +vextractf32x4 m,k,zmm,imm avx512f +vextractf32x4 m,ymm,imm avx512f +vextractf32x4 m,zmm,imm avx512f +vextractf32x4 xmm,k,ymm,imm avx512f +vextractf32x4 xmm,k,zmm,imm avx512f +vextractf32x4 xmm,ymm,imm avx512f +vextractf32x4 xmm,zmm,imm avx512f +vextractf32x8 m,k,zmm,imm avx512dq +vextractf32x8 m,zmm,imm avx512dq +vextractf32x8 ymm,k,zmm,imm avx512dq +vextractf32x8 ymm,zmm,imm avx512dq +vextractf64x2 m,k,ymm,imm avx512dq +vextractf64x2 m,k,zmm,imm avx512dq +vextractf64x2 m,ymm,imm avx512dq +vextractf64x2 m,zmm,imm avx512dq +vextractf64x2 xmm,k,ymm,imm avx512dq +vextractf64x2 xmm,k,zmm,imm avx512dq +vextractf64x2 xmm,ymm,imm avx512dq +vextractf64x2 xmm,zmm,imm avx512dq +vextractf64x4 m,k,zmm,imm avx512f +vextractf64x4 m,zmm,imm avx512f +vextractf64x4 ymm,k,zmm,imm avx512f +vextractf64x4 ymm,zmm,imm avx512f +vextracti128 m,ymm,imm avx2 +vextracti128 xmm,ymm,imm avx2 +vextracti32x4 m,k,ymm,imm avx512f +vextracti32x4 m,k,zmm,imm avx512f +vextracti32x4 m,ymm,imm avx512f +vextracti32x4 m,zmm,imm avx512f +vextracti32x4 xmm,k,ymm,imm avx512f +vextracti32x4 xmm,k,zmm,imm avx512f +vextracti32x4 xmm,ymm,imm avx512f +vextracti32x4 xmm,zmm,imm avx512f +vextracti32x8 m,k,zmm,imm avx512dq +vextracti32x8 m,zmm,imm avx512dq +vextracti32x8 ymm,k,zmm,imm avx512dq +vextracti32x8 ymm,zmm,imm avx512dq +vextracti64x2 m,k,ymm,imm avx512dq +vextracti64x2 m,k,zmm,imm avx512dq +vextracti64x2 m,ymm,imm avx512dq +vextracti64x2 m,zmm,imm avx512dq +vextracti64x2 xmm,k,ymm,imm avx512dq +vextracti64x2 xmm,k,zmm,imm avx512dq +vextracti64x2 xmm,ymm,imm avx512dq +vextracti64x2 xmm,zmm,imm avx512dq +vextracti64x4 m,k,zmm,imm avx512f +vextracti64x4 m,zmm,imm avx512f +vextracti64x4 ymm,k,zmm,imm avx512f +vextracti64x4 ymm,zmm,imm avx512f +vextractps m,xmm,imm avx +vextractps m,xmm,imm avx512f +vextractps r32,xmm,imm avx +vextractps r32,xmm,imm avx512f +vfcmaddcph xmm,k,xmm,m avx512fp16 +vfcmaddcph xmm,k,xmm,xmm avx512fp16 +vfcmaddcph xmm,xmm,m avx512fp16 +vfcmaddcph xmm,xmm,xmm avx512fp16 +vfcmaddcph ymm,k,ymm,m avx512fp16 +vfcmaddcph ymm,k,ymm,ymm avx512fp16 +vfcmaddcph ymm,ymm,m avx512fp16 +vfcmaddcph ymm,ymm,ymm avx512fp16 +vfcmaddcph zmm,k,zmm,m avx512fp16 +vfcmaddcph zmm,k,zmm,zmm avx512fp16 +vfcmaddcph zmm,zmm,m avx512fp16 +vfcmaddcph zmm,zmm,zmm avx512fp16 +vfcmaddcsh xmm,k,xmm,m avx512fp16_scalar +vfcmaddcsh xmm,k,xmm,xmm avx512fp16_scalar +vfcmaddcsh xmm,xmm,m avx512fp16_scalar +vfcmaddcsh xmm,xmm,xmm avx512fp16_scalar +vfcmulcph xmm,k,xmm,m avx512fp16 +vfcmulcph xmm,k,xmm,xmm avx512fp16 +vfcmulcph xmm,xmm,m avx512fp16 +vfcmulcph xmm,xmm,xmm avx512fp16 +vfcmulcph ymm,k,ymm,m avx512fp16 +vfcmulcph ymm,k,ymm,ymm avx512fp16 +vfcmulcph ymm,ymm,m avx512fp16 +vfcmulcph ymm,ymm,ymm avx512fp16 +vfcmulcph zmm,k,zmm,m avx512fp16 +vfcmulcph zmm,k,zmm,zmm avx512fp16 +vfcmulcph zmm,zmm,m avx512fp16 +vfcmulcph zmm,zmm,zmm avx512fp16 +vfcmulcsh xmm,k,xmm,m avx512fp16_scalar +vfcmulcsh xmm,k,xmm,xmm avx512fp16_scalar +vfcmulcsh xmm,xmm,m avx512fp16_scalar +vfcmulcsh xmm,xmm,xmm avx512fp16_scalar +vfixupimmpd xmm,k,xmm,m,imm avx512f +vfixupimmpd xmm,k,xmm,xmm,imm avx512f +vfixupimmpd xmm,xmm,m,imm avx512f +vfixupimmpd xmm,xmm,xmm,imm avx512f +vfixupimmpd ymm,k,ymm,m,imm avx512f +vfixupimmpd ymm,k,ymm,ymm,imm avx512f +vfixupimmpd ymm,ymm,m,imm avx512f +vfixupimmpd ymm,ymm,ymm,imm avx512f +vfixupimmpd zmm,k,zmm,m,imm avx512f +vfixupimmpd zmm,k,zmm,zmm,imm avx512f +vfixupimmpd zmm,zmm,m,imm avx512f +vfixupimmpd zmm,zmm,zmm,imm avx512f +vfixupimmps xmm,k,xmm,m,imm avx512f +vfixupimmps xmm,k,xmm,xmm,imm avx512f +vfixupimmps xmm,xmm,m,imm avx512f +vfixupimmps xmm,xmm,xmm,imm avx512f +vfixupimmps ymm,k,ymm,m,imm avx512f +vfixupimmps ymm,k,ymm,ymm,imm avx512f +vfixupimmps ymm,ymm,m,imm avx512f +vfixupimmps ymm,ymm,ymm,imm avx512f +vfixupimmps zmm,k,zmm,m,imm avx512f +vfixupimmps zmm,k,zmm,zmm,imm avx512f +vfixupimmps zmm,zmm,m,imm avx512f +vfixupimmps zmm,zmm,zmm,imm avx512f +vfixupimmsd xmm,k,xmm,m,imm avx512f_scalar +vfixupimmsd xmm,k,xmm,xmm,imm avx512f_scalar +vfixupimmsd xmm,xmm,m,imm avx512f_scalar +vfixupimmsd xmm,xmm,xmm,imm avx512f_scalar +vfixupimmss xmm,k,xmm,m,imm avx512f_scalar +vfixupimmss xmm,k,xmm,xmm,imm avx512f_scalar +vfixupimmss xmm,xmm,m,imm avx512f_scalar +vfixupimmss xmm,xmm,xmm,imm avx512f_scalar +vfixupnanpd zmm,k,zmm,m knce +vfixupnanpd zmm,k,zmm,zmm knce +vfixupnanpd zmm,zmm,m knce +vfixupnanpd zmm,zmm,zmm knce +vfixupnanps zmm,k,zmm,m knce +vfixupnanps zmm,k,zmm,zmm knce +vfixupnanps zmm,zmm,m knce +vfixupnanps zmm,zmm,zmm knce +vfmadd132pd xmm,k,xmm,m avx512f +vfmadd132pd xmm,k,xmm,xmm avx512f +vfmadd132pd xmm,xmm,m avx512f +vfmadd132pd xmm,xmm,m fma +vfmadd132pd xmm,xmm,xmm avx512f +vfmadd132pd xmm,xmm,xmm fma +vfmadd132pd ymm,k,ymm,m avx512f +vfmadd132pd ymm,k,ymm,ymm avx512f +vfmadd132pd ymm,ymm,m avx512f +vfmadd132pd ymm,ymm,m fma +vfmadd132pd ymm,ymm,ymm avx512f +vfmadd132pd ymm,ymm,ymm fma +vfmadd132pd zmm,k,zmm,m avx512f +vfmadd132pd zmm,k,zmm,m knce +vfmadd132pd zmm,k,zmm,zmm avx512f +vfmadd132pd zmm,k,zmm,zmm knce +vfmadd132pd zmm,zmm,m avx512f +vfmadd132pd zmm,zmm,m knce +vfmadd132pd zmm,zmm,zmm avx512f +vfmadd132pd zmm,zmm,zmm knce +vfmadd132ph xmm,k,xmm,m avx512fp16 +vfmadd132ph xmm,k,xmm,xmm avx512fp16 +vfmadd132ph xmm,xmm,m avx512fp16 +vfmadd132ph xmm,xmm,xmm avx512fp16 +vfmadd132ph ymm,k,ymm,m avx512fp16 +vfmadd132ph ymm,k,ymm,ymm avx512fp16 +vfmadd132ph ymm,ymm,m avx512fp16 +vfmadd132ph ymm,ymm,ymm avx512fp16 +vfmadd132ph zmm,k,zmm,m avx512fp16 +vfmadd132ph zmm,k,zmm,zmm avx512fp16 +vfmadd132ph zmm,zmm,m avx512fp16 +vfmadd132ph zmm,zmm,zmm avx512fp16 +vfmadd132ps xmm,k,xmm,m avx512f +vfmadd132ps xmm,k,xmm,xmm avx512f +vfmadd132ps xmm,xmm,m avx512f +vfmadd132ps xmm,xmm,m fma +vfmadd132ps xmm,xmm,xmm avx512f +vfmadd132ps xmm,xmm,xmm fma +vfmadd132ps ymm,k,ymm,m avx512f +vfmadd132ps ymm,k,ymm,ymm avx512f +vfmadd132ps ymm,ymm,m avx512f +vfmadd132ps ymm,ymm,m fma +vfmadd132ps ymm,ymm,ymm avx512f +vfmadd132ps ymm,ymm,ymm fma +vfmadd132ps zmm,k,zmm,m avx512f +vfmadd132ps zmm,k,zmm,m knce +vfmadd132ps zmm,k,zmm,zmm avx512f +vfmadd132ps zmm,k,zmm,zmm knce +vfmadd132ps zmm,zmm,m avx512f +vfmadd132ps zmm,zmm,m knce +vfmadd132ps zmm,zmm,zmm avx512f +vfmadd132ps zmm,zmm,zmm knce +vfmadd132sd xmm,k,xmm,m avx512f_scalar +vfmadd132sd xmm,k,xmm,xmm avx512f_scalar +vfmadd132sd xmm,xmm,m avx512f_scalar +vfmadd132sd xmm,xmm,m fma +vfmadd132sd xmm,xmm,xmm avx512f_scalar +vfmadd132sd xmm,xmm,xmm fma +vfmadd132sh xmm,k,xmm,m avx512fp16_scalar +vfmadd132sh xmm,k,xmm,xmm avx512fp16_scalar +vfmadd132sh xmm,xmm,m avx512fp16_scalar +vfmadd132sh xmm,xmm,xmm avx512fp16_scalar +vfmadd132ss xmm,k,xmm,m avx512f_scalar +vfmadd132ss xmm,k,xmm,xmm avx512f_scalar +vfmadd132ss xmm,xmm,m avx512f_scalar +vfmadd132ss xmm,xmm,m fma +vfmadd132ss xmm,xmm,xmm avx512f_scalar +vfmadd132ss xmm,xmm,xmm fma +vfmadd213pd xmm,k,xmm,m avx512f +vfmadd213pd xmm,k,xmm,xmm avx512f +vfmadd213pd xmm,xmm,m avx512f +vfmadd213pd xmm,xmm,m fma +vfmadd213pd xmm,xmm,xmm avx512f +vfmadd213pd xmm,xmm,xmm fma +vfmadd213pd ymm,k,ymm,m avx512f +vfmadd213pd ymm,k,ymm,ymm avx512f +vfmadd213pd ymm,ymm,m avx512f +vfmadd213pd ymm,ymm,m fma +vfmadd213pd ymm,ymm,ymm avx512f +vfmadd213pd ymm,ymm,ymm fma +vfmadd213pd zmm,k,zmm,m avx512f +vfmadd213pd zmm,k,zmm,m knce +vfmadd213pd zmm,k,zmm,zmm avx512f +vfmadd213pd zmm,k,zmm,zmm knce +vfmadd213pd zmm,zmm,m avx512f +vfmadd213pd zmm,zmm,m knce +vfmadd213pd zmm,zmm,zmm avx512f +vfmadd213pd zmm,zmm,zmm knce +vfmadd213ph xmm,k,xmm,m avx512fp16 +vfmadd213ph xmm,k,xmm,xmm avx512fp16 +vfmadd213ph xmm,xmm,m avx512fp16 +vfmadd213ph xmm,xmm,xmm avx512fp16 +vfmadd213ph ymm,k,ymm,m avx512fp16 +vfmadd213ph ymm,k,ymm,ymm avx512fp16 +vfmadd213ph ymm,ymm,m avx512fp16 +vfmadd213ph ymm,ymm,ymm avx512fp16 +vfmadd213ph zmm,k,zmm,m avx512fp16 +vfmadd213ph zmm,k,zmm,zmm avx512fp16 +vfmadd213ph zmm,zmm,m avx512fp16 +vfmadd213ph zmm,zmm,zmm avx512fp16 +vfmadd213ps xmm,k,xmm,m avx512f +vfmadd213ps xmm,k,xmm,xmm avx512f +vfmadd213ps xmm,xmm,m avx512f +vfmadd213ps xmm,xmm,m fma +vfmadd213ps xmm,xmm,xmm avx512f +vfmadd213ps xmm,xmm,xmm fma +vfmadd213ps ymm,k,ymm,m avx512f +vfmadd213ps ymm,k,ymm,ymm avx512f +vfmadd213ps ymm,ymm,m avx512f +vfmadd213ps ymm,ymm,m fma +vfmadd213ps ymm,ymm,ymm avx512f +vfmadd213ps ymm,ymm,ymm fma +vfmadd213ps zmm,k,zmm,m avx512f +vfmadd213ps zmm,k,zmm,m knce +vfmadd213ps zmm,k,zmm,zmm avx512f +vfmadd213ps zmm,k,zmm,zmm knce +vfmadd213ps zmm,zmm,m avx512f +vfmadd213ps zmm,zmm,m knce +vfmadd213ps zmm,zmm,zmm avx512f +vfmadd213ps zmm,zmm,zmm knce +vfmadd213sd xmm,k,xmm,m avx512f_scalar +vfmadd213sd xmm,k,xmm,xmm avx512f_scalar +vfmadd213sd xmm,xmm,m avx512f_scalar +vfmadd213sd xmm,xmm,m fma +vfmadd213sd xmm,xmm,xmm avx512f_scalar +vfmadd213sd xmm,xmm,xmm fma +vfmadd213sh xmm,k,xmm,m avx512fp16_scalar +vfmadd213sh xmm,k,xmm,xmm avx512fp16_scalar +vfmadd213sh xmm,xmm,m avx512fp16_scalar +vfmadd213sh xmm,xmm,xmm avx512fp16_scalar +vfmadd213ss xmm,k,xmm,m avx512f_scalar +vfmadd213ss xmm,k,xmm,xmm avx512f_scalar +vfmadd213ss xmm,xmm,m avx512f_scalar +vfmadd213ss xmm,xmm,m fma +vfmadd213ss xmm,xmm,xmm avx512f_scalar +vfmadd213ss xmm,xmm,xmm fma +vfmadd231pd xmm,k,xmm,m avx512f +vfmadd231pd xmm,k,xmm,xmm avx512f +vfmadd231pd xmm,xmm,m avx512f +vfmadd231pd xmm,xmm,m fma +vfmadd231pd xmm,xmm,xmm avx512f +vfmadd231pd xmm,xmm,xmm fma +vfmadd231pd ymm,k,ymm,m avx512f +vfmadd231pd ymm,k,ymm,ymm avx512f +vfmadd231pd ymm,ymm,m avx512f +vfmadd231pd ymm,ymm,m fma +vfmadd231pd ymm,ymm,ymm avx512f +vfmadd231pd ymm,ymm,ymm fma +vfmadd231pd zmm,k,zmm,m avx512f +vfmadd231pd zmm,k,zmm,m knce +vfmadd231pd zmm,k,zmm,zmm avx512f +vfmadd231pd zmm,k,zmm,zmm knce +vfmadd231pd zmm,zmm,m avx512f +vfmadd231pd zmm,zmm,m knce +vfmadd231pd zmm,zmm,zmm avx512f +vfmadd231pd zmm,zmm,zmm knce +vfmadd231ph xmm,k,xmm,m avx512fp16 +vfmadd231ph xmm,k,xmm,xmm avx512fp16 +vfmadd231ph xmm,xmm,m avx512fp16 +vfmadd231ph xmm,xmm,xmm avx512fp16 +vfmadd231ph ymm,k,ymm,m avx512fp16 +vfmadd231ph ymm,k,ymm,ymm avx512fp16 +vfmadd231ph ymm,ymm,m avx512fp16 +vfmadd231ph ymm,ymm,ymm avx512fp16 +vfmadd231ph zmm,k,zmm,m avx512fp16 +vfmadd231ph zmm,k,zmm,zmm avx512fp16 +vfmadd231ph zmm,zmm,m avx512fp16 +vfmadd231ph zmm,zmm,zmm avx512fp16 +vfmadd231ps xmm,k,xmm,m avx512f +vfmadd231ps xmm,k,xmm,xmm avx512f +vfmadd231ps xmm,xmm,m avx512f +vfmadd231ps xmm,xmm,m fma +vfmadd231ps xmm,xmm,xmm avx512f +vfmadd231ps xmm,xmm,xmm fma +vfmadd231ps ymm,k,ymm,m avx512f +vfmadd231ps ymm,k,ymm,ymm avx512f +vfmadd231ps ymm,ymm,m avx512f +vfmadd231ps ymm,ymm,m fma +vfmadd231ps ymm,ymm,ymm avx512f +vfmadd231ps ymm,ymm,ymm fma +vfmadd231ps zmm,k,zmm,m avx512f +vfmadd231ps zmm,k,zmm,m knce +vfmadd231ps zmm,k,zmm,zmm avx512f +vfmadd231ps zmm,k,zmm,zmm knce +vfmadd231ps zmm,zmm,m avx512f +vfmadd231ps zmm,zmm,m knce +vfmadd231ps zmm,zmm,zmm avx512f +vfmadd231ps zmm,zmm,zmm knce +vfmadd231sd xmm,k,xmm,m avx512f_scalar +vfmadd231sd xmm,k,xmm,xmm avx512f_scalar +vfmadd231sd xmm,xmm,m avx512f_scalar +vfmadd231sd xmm,xmm,m fma +vfmadd231sd xmm,xmm,xmm avx512f_scalar +vfmadd231sd xmm,xmm,xmm fma +vfmadd231sh xmm,k,xmm,m avx512fp16_scalar +vfmadd231sh xmm,k,xmm,xmm avx512fp16_scalar +vfmadd231sh xmm,xmm,m avx512fp16_scalar +vfmadd231sh xmm,xmm,xmm avx512fp16_scalar +vfmadd231ss xmm,k,xmm,m avx512f_scalar +vfmadd231ss xmm,k,xmm,xmm avx512f_scalar +vfmadd231ss xmm,xmm,m avx512f_scalar +vfmadd231ss xmm,xmm,m fma +vfmadd231ss xmm,xmm,xmm avx512f_scalar +vfmadd231ss xmm,xmm,xmm fma +vfmadd233ps zmm,k,zmm,m knce +vfmadd233ps zmm,k,zmm,zmm knce +vfmadd233ps zmm,zmm,m knce +vfmadd233ps zmm,zmm,zmm knce +vfmaddcph xmm,k,xmm,m avx512fp16 +vfmaddcph xmm,k,xmm,xmm avx512fp16 +vfmaddcph xmm,xmm,m avx512fp16 +vfmaddcph xmm,xmm,xmm avx512fp16 +vfmaddcph ymm,k,ymm,m avx512fp16 +vfmaddcph ymm,k,ymm,ymm avx512fp16 +vfmaddcph ymm,ymm,m avx512fp16 +vfmaddcph ymm,ymm,ymm avx512fp16 +vfmaddcph zmm,k,zmm,m avx512fp16 +vfmaddcph zmm,k,zmm,zmm avx512fp16 +vfmaddcph zmm,zmm,m avx512fp16 +vfmaddcph zmm,zmm,zmm avx512fp16 +vfmaddcsh xmm,k,xmm,m avx512fp16_scalar +vfmaddcsh xmm,k,xmm,xmm avx512fp16_scalar +vfmaddcsh xmm,xmm,m avx512fp16_scalar +vfmaddcsh xmm,xmm,xmm avx512fp16_scalar +vfmaddpd xmm,xmm,m,xmm fma4 +vfmaddpd xmm,xmm,xmm,m fma4 +vfmaddpd xmm,xmm,xmm,xmm fma4 +vfmaddpd ymm,ymm,m,ymm fma4 +vfmaddpd ymm,ymm,ymm,m fma4 +vfmaddpd ymm,ymm,ymm,ymm fma4 +vfmaddps xmm,xmm,m,xmm fma4 +vfmaddps xmm,xmm,xmm,m fma4 +vfmaddps xmm,xmm,xmm,xmm fma4 +vfmaddps ymm,ymm,m,ymm fma4 +vfmaddps ymm,ymm,ymm,m fma4 +vfmaddps ymm,ymm,ymm,ymm fma4 +vfmaddsd xmm,xmm,m,xmm fma4 +vfmaddsd xmm,xmm,xmm,m fma4 +vfmaddsd xmm,xmm,xmm,xmm fma4 +vfmaddss xmm,xmm,m,xmm fma4 +vfmaddss xmm,xmm,xmm,m fma4 +vfmaddss xmm,xmm,xmm,xmm fma4 +vfmaddsub132pd xmm,k,xmm,m avx512f +vfmaddsub132pd xmm,k,xmm,xmm avx512f +vfmaddsub132pd xmm,xmm,m avx512f +vfmaddsub132pd xmm,xmm,m fma +vfmaddsub132pd xmm,xmm,xmm avx512f +vfmaddsub132pd xmm,xmm,xmm fma +vfmaddsub132pd ymm,k,ymm,m avx512f +vfmaddsub132pd ymm,k,ymm,ymm avx512f +vfmaddsub132pd ymm,ymm,m avx512f +vfmaddsub132pd ymm,ymm,m fma +vfmaddsub132pd ymm,ymm,ymm avx512f +vfmaddsub132pd ymm,ymm,ymm fma +vfmaddsub132pd zmm,k,zmm,m avx512f +vfmaddsub132pd zmm,k,zmm,zmm avx512f +vfmaddsub132pd zmm,zmm,m avx512f +vfmaddsub132pd zmm,zmm,zmm avx512f +vfmaddsub132ph xmm,k,xmm,m avx512fp16 +vfmaddsub132ph xmm,k,xmm,xmm avx512fp16 +vfmaddsub132ph xmm,xmm,m avx512fp16 +vfmaddsub132ph xmm,xmm,xmm avx512fp16 +vfmaddsub132ph ymm,k,ymm,m avx512fp16 +vfmaddsub132ph ymm,k,ymm,ymm avx512fp16 +vfmaddsub132ph ymm,ymm,m avx512fp16 +vfmaddsub132ph ymm,ymm,ymm avx512fp16 +vfmaddsub132ph zmm,k,zmm,m avx512fp16 +vfmaddsub132ph zmm,k,zmm,zmm avx512fp16 +vfmaddsub132ph zmm,zmm,m avx512fp16 +vfmaddsub132ph zmm,zmm,zmm avx512fp16 +vfmaddsub132ps xmm,k,xmm,m avx512f +vfmaddsub132ps xmm,k,xmm,xmm avx512f +vfmaddsub132ps xmm,xmm,m avx512f +vfmaddsub132ps xmm,xmm,m fma +vfmaddsub132ps xmm,xmm,xmm avx512f +vfmaddsub132ps xmm,xmm,xmm fma +vfmaddsub132ps ymm,k,ymm,m avx512f +vfmaddsub132ps ymm,k,ymm,ymm avx512f +vfmaddsub132ps ymm,ymm,m avx512f +vfmaddsub132ps ymm,ymm,m fma +vfmaddsub132ps ymm,ymm,ymm avx512f +vfmaddsub132ps ymm,ymm,ymm fma +vfmaddsub132ps zmm,k,zmm,m avx512f +vfmaddsub132ps zmm,k,zmm,zmm avx512f +vfmaddsub132ps zmm,zmm,m avx512f +vfmaddsub132ps zmm,zmm,zmm avx512f +vfmaddsub213pd xmm,k,xmm,m avx512f +vfmaddsub213pd xmm,k,xmm,xmm avx512f +vfmaddsub213pd xmm,xmm,m avx512f +vfmaddsub213pd xmm,xmm,m fma +vfmaddsub213pd xmm,xmm,xmm avx512f +vfmaddsub213pd xmm,xmm,xmm fma +vfmaddsub213pd ymm,k,ymm,m avx512f +vfmaddsub213pd ymm,k,ymm,ymm avx512f +vfmaddsub213pd ymm,ymm,m avx512f +vfmaddsub213pd ymm,ymm,m fma +vfmaddsub213pd ymm,ymm,ymm avx512f +vfmaddsub213pd ymm,ymm,ymm fma +vfmaddsub213pd zmm,k,zmm,m avx512f +vfmaddsub213pd zmm,k,zmm,zmm avx512f +vfmaddsub213pd zmm,zmm,m avx512f +vfmaddsub213pd zmm,zmm,zmm avx512f +vfmaddsub213ph xmm,k,xmm,m avx512fp16 +vfmaddsub213ph xmm,k,xmm,xmm avx512fp16 +vfmaddsub213ph xmm,xmm,m avx512fp16 +vfmaddsub213ph xmm,xmm,xmm avx512fp16 +vfmaddsub213ph ymm,k,ymm,m avx512fp16 +vfmaddsub213ph ymm,k,ymm,ymm avx512fp16 +vfmaddsub213ph ymm,ymm,m avx512fp16 +vfmaddsub213ph ymm,ymm,ymm avx512fp16 +vfmaddsub213ph zmm,k,zmm,m avx512fp16 +vfmaddsub213ph zmm,k,zmm,zmm avx512fp16 +vfmaddsub213ph zmm,zmm,m avx512fp16 +vfmaddsub213ph zmm,zmm,zmm avx512fp16 +vfmaddsub213ps xmm,k,xmm,m avx512f +vfmaddsub213ps xmm,k,xmm,xmm avx512f +vfmaddsub213ps xmm,xmm,m avx512f +vfmaddsub213ps xmm,xmm,m fma +vfmaddsub213ps xmm,xmm,xmm avx512f +vfmaddsub213ps xmm,xmm,xmm fma +vfmaddsub213ps ymm,k,ymm,m avx512f +vfmaddsub213ps ymm,k,ymm,ymm avx512f +vfmaddsub213ps ymm,ymm,m avx512f +vfmaddsub213ps ymm,ymm,m fma +vfmaddsub213ps ymm,ymm,ymm avx512f +vfmaddsub213ps ymm,ymm,ymm fma +vfmaddsub213ps zmm,k,zmm,m avx512f +vfmaddsub213ps zmm,k,zmm,zmm avx512f +vfmaddsub213ps zmm,zmm,m avx512f +vfmaddsub213ps zmm,zmm,zmm avx512f +vfmaddsub231pd xmm,k,xmm,m avx512f +vfmaddsub231pd xmm,k,xmm,xmm avx512f +vfmaddsub231pd xmm,xmm,m avx512f +vfmaddsub231pd xmm,xmm,m fma +vfmaddsub231pd xmm,xmm,xmm avx512f +vfmaddsub231pd xmm,xmm,xmm fma +vfmaddsub231pd ymm,k,ymm,m avx512f +vfmaddsub231pd ymm,k,ymm,ymm avx512f +vfmaddsub231pd ymm,ymm,m avx512f +vfmaddsub231pd ymm,ymm,m fma +vfmaddsub231pd ymm,ymm,ymm avx512f +vfmaddsub231pd ymm,ymm,ymm fma +vfmaddsub231pd zmm,k,zmm,m avx512f +vfmaddsub231pd zmm,k,zmm,zmm avx512f +vfmaddsub231pd zmm,zmm,m avx512f +vfmaddsub231pd zmm,zmm,zmm avx512f +vfmaddsub231ph xmm,k,xmm,m avx512fp16 +vfmaddsub231ph xmm,k,xmm,xmm avx512fp16 +vfmaddsub231ph xmm,xmm,m avx512fp16 +vfmaddsub231ph xmm,xmm,xmm avx512fp16 +vfmaddsub231ph ymm,k,ymm,m avx512fp16 +vfmaddsub231ph ymm,k,ymm,ymm avx512fp16 +vfmaddsub231ph ymm,ymm,m avx512fp16 +vfmaddsub231ph ymm,ymm,ymm avx512fp16 +vfmaddsub231ph zmm,k,zmm,m avx512fp16 +vfmaddsub231ph zmm,k,zmm,zmm avx512fp16 +vfmaddsub231ph zmm,zmm,m avx512fp16 +vfmaddsub231ph zmm,zmm,zmm avx512fp16 +vfmaddsub231ps xmm,k,xmm,m avx512f +vfmaddsub231ps xmm,k,xmm,xmm avx512f +vfmaddsub231ps xmm,xmm,m avx512f +vfmaddsub231ps xmm,xmm,m fma +vfmaddsub231ps xmm,xmm,xmm avx512f +vfmaddsub231ps xmm,xmm,xmm fma +vfmaddsub231ps ymm,k,ymm,m avx512f +vfmaddsub231ps ymm,k,ymm,ymm avx512f +vfmaddsub231ps ymm,ymm,m avx512f +vfmaddsub231ps ymm,ymm,m fma +vfmaddsub231ps ymm,ymm,ymm avx512f +vfmaddsub231ps ymm,ymm,ymm fma +vfmaddsub231ps zmm,k,zmm,m avx512f +vfmaddsub231ps zmm,k,zmm,zmm avx512f +vfmaddsub231ps zmm,zmm,m avx512f +vfmaddsub231ps zmm,zmm,zmm avx512f +vfmaddsubpd xmm,xmm,m,xmm fma4 +vfmaddsubpd xmm,xmm,xmm,m fma4 +vfmaddsubpd xmm,xmm,xmm,xmm fma4 +vfmaddsubpd ymm,ymm,m,ymm fma4 +vfmaddsubpd ymm,ymm,ymm,m fma4 +vfmaddsubpd ymm,ymm,ymm,ymm fma4 +vfmaddsubps xmm,xmm,m,xmm fma4 +vfmaddsubps xmm,xmm,xmm,m fma4 +vfmaddsubps xmm,xmm,xmm,xmm fma4 +vfmaddsubps ymm,ymm,m,ymm fma4 +vfmaddsubps ymm,ymm,ymm,m fma4 +vfmaddsubps ymm,ymm,ymm,ymm fma4 +vfmsub132pd xmm,k,xmm,m avx512f +vfmsub132pd xmm,k,xmm,xmm avx512f +vfmsub132pd xmm,xmm,m avx512f +vfmsub132pd xmm,xmm,m fma +vfmsub132pd xmm,xmm,xmm avx512f +vfmsub132pd xmm,xmm,xmm fma +vfmsub132pd ymm,k,ymm,m avx512f +vfmsub132pd ymm,k,ymm,ymm avx512f +vfmsub132pd ymm,ymm,m avx512f +vfmsub132pd ymm,ymm,m fma +vfmsub132pd ymm,ymm,ymm avx512f +vfmsub132pd ymm,ymm,ymm fma +vfmsub132pd zmm,k,zmm,m avx512f +vfmsub132pd zmm,k,zmm,m knce +vfmsub132pd zmm,k,zmm,zmm avx512f +vfmsub132pd zmm,k,zmm,zmm knce +vfmsub132pd zmm,zmm,m avx512f +vfmsub132pd zmm,zmm,m knce +vfmsub132pd zmm,zmm,zmm avx512f +vfmsub132pd zmm,zmm,zmm knce +vfmsub132ph xmm,k,xmm,m avx512fp16 +vfmsub132ph xmm,k,xmm,xmm avx512fp16 +vfmsub132ph xmm,xmm,m avx512fp16 +vfmsub132ph xmm,xmm,xmm avx512fp16 +vfmsub132ph ymm,k,ymm,m avx512fp16 +vfmsub132ph ymm,k,ymm,ymm avx512fp16 +vfmsub132ph ymm,ymm,m avx512fp16 +vfmsub132ph ymm,ymm,ymm avx512fp16 +vfmsub132ph zmm,k,zmm,m avx512fp16 +vfmsub132ph zmm,k,zmm,zmm avx512fp16 +vfmsub132ph zmm,zmm,m avx512fp16 +vfmsub132ph zmm,zmm,zmm avx512fp16 +vfmsub132ps xmm,k,xmm,m avx512f +vfmsub132ps xmm,k,xmm,xmm avx512f +vfmsub132ps xmm,xmm,m avx512f +vfmsub132ps xmm,xmm,m fma +vfmsub132ps xmm,xmm,xmm avx512f +vfmsub132ps xmm,xmm,xmm fma +vfmsub132ps ymm,k,ymm,m avx512f +vfmsub132ps ymm,k,ymm,ymm avx512f +vfmsub132ps ymm,ymm,m avx512f +vfmsub132ps ymm,ymm,m fma +vfmsub132ps ymm,ymm,ymm avx512f +vfmsub132ps ymm,ymm,ymm fma +vfmsub132ps zmm,k,zmm,m avx512f +vfmsub132ps zmm,k,zmm,m knce +vfmsub132ps zmm,k,zmm,zmm avx512f +vfmsub132ps zmm,k,zmm,zmm knce +vfmsub132ps zmm,zmm,m avx512f +vfmsub132ps zmm,zmm,m knce +vfmsub132ps zmm,zmm,zmm avx512f +vfmsub132ps zmm,zmm,zmm knce +vfmsub132sd xmm,k,xmm,m avx512f_scalar +vfmsub132sd xmm,k,xmm,xmm avx512f_scalar +vfmsub132sd xmm,xmm,m avx512f_scalar +vfmsub132sd xmm,xmm,m fma +vfmsub132sd xmm,xmm,xmm avx512f_scalar +vfmsub132sd xmm,xmm,xmm fma +vfmsub132sh xmm,k,xmm,m avx512fp16_scalar +vfmsub132sh xmm,k,xmm,xmm avx512fp16_scalar +vfmsub132sh xmm,xmm,m avx512fp16_scalar +vfmsub132sh xmm,xmm,xmm avx512fp16_scalar +vfmsub132ss xmm,k,xmm,m avx512f_scalar +vfmsub132ss xmm,k,xmm,xmm avx512f_scalar +vfmsub132ss xmm,xmm,m avx512f_scalar +vfmsub132ss xmm,xmm,m fma +vfmsub132ss xmm,xmm,xmm avx512f_scalar +vfmsub132ss xmm,xmm,xmm fma +vfmsub213pd xmm,k,xmm,m avx512f +vfmsub213pd xmm,k,xmm,xmm avx512f +vfmsub213pd xmm,xmm,m avx512f +vfmsub213pd xmm,xmm,m fma +vfmsub213pd xmm,xmm,xmm avx512f +vfmsub213pd xmm,xmm,xmm fma +vfmsub213pd ymm,k,ymm,m avx512f +vfmsub213pd ymm,k,ymm,ymm avx512f +vfmsub213pd ymm,ymm,m avx512f +vfmsub213pd ymm,ymm,m fma +vfmsub213pd ymm,ymm,ymm avx512f +vfmsub213pd ymm,ymm,ymm fma +vfmsub213pd zmm,k,zmm,m avx512f +vfmsub213pd zmm,k,zmm,m knce +vfmsub213pd zmm,k,zmm,zmm avx512f +vfmsub213pd zmm,k,zmm,zmm knce +vfmsub213pd zmm,zmm,m avx512f +vfmsub213pd zmm,zmm,m knce +vfmsub213pd zmm,zmm,zmm avx512f +vfmsub213pd zmm,zmm,zmm knce +vfmsub213ph xmm,k,xmm,m avx512fp16 +vfmsub213ph xmm,k,xmm,xmm avx512fp16 +vfmsub213ph xmm,xmm,m avx512fp16 +vfmsub213ph xmm,xmm,xmm avx512fp16 +vfmsub213ph ymm,k,ymm,m avx512fp16 +vfmsub213ph ymm,k,ymm,ymm avx512fp16 +vfmsub213ph ymm,ymm,m avx512fp16 +vfmsub213ph ymm,ymm,ymm avx512fp16 +vfmsub213ph zmm,k,zmm,m avx512fp16 +vfmsub213ph zmm,k,zmm,zmm avx512fp16 +vfmsub213ph zmm,zmm,m avx512fp16 +vfmsub213ph zmm,zmm,zmm avx512fp16 +vfmsub213ps xmm,k,xmm,m avx512f +vfmsub213ps xmm,k,xmm,xmm avx512f +vfmsub213ps xmm,xmm,m avx512f +vfmsub213ps xmm,xmm,m fma +vfmsub213ps xmm,xmm,xmm avx512f +vfmsub213ps xmm,xmm,xmm fma +vfmsub213ps ymm,k,ymm,m avx512f +vfmsub213ps ymm,k,ymm,ymm avx512f +vfmsub213ps ymm,ymm,m avx512f +vfmsub213ps ymm,ymm,m fma +vfmsub213ps ymm,ymm,ymm avx512f +vfmsub213ps ymm,ymm,ymm fma +vfmsub213ps zmm,k,zmm,m avx512f +vfmsub213ps zmm,k,zmm,m knce +vfmsub213ps zmm,k,zmm,zmm avx512f +vfmsub213ps zmm,k,zmm,zmm knce +vfmsub213ps zmm,zmm,m avx512f +vfmsub213ps zmm,zmm,m knce +vfmsub213ps zmm,zmm,zmm avx512f +vfmsub213ps zmm,zmm,zmm knce +vfmsub213sd xmm,k,xmm,m avx512f_scalar +vfmsub213sd xmm,k,xmm,xmm avx512f_scalar +vfmsub213sd xmm,xmm,m avx512f_scalar +vfmsub213sd xmm,xmm,m fma +vfmsub213sd xmm,xmm,xmm avx512f_scalar +vfmsub213sd xmm,xmm,xmm fma +vfmsub213sh xmm,k,xmm,m avx512fp16_scalar +vfmsub213sh xmm,k,xmm,xmm avx512fp16_scalar +vfmsub213sh xmm,xmm,m avx512fp16_scalar +vfmsub213sh xmm,xmm,xmm avx512fp16_scalar +vfmsub213ss xmm,k,xmm,m avx512f_scalar +vfmsub213ss xmm,k,xmm,xmm avx512f_scalar +vfmsub213ss xmm,xmm,m avx512f_scalar +vfmsub213ss xmm,xmm,m fma +vfmsub213ss xmm,xmm,xmm avx512f_scalar +vfmsub213ss xmm,xmm,xmm fma +vfmsub231pd xmm,k,xmm,m avx512f +vfmsub231pd xmm,k,xmm,xmm avx512f +vfmsub231pd xmm,xmm,m avx512f +vfmsub231pd xmm,xmm,m fma +vfmsub231pd xmm,xmm,xmm avx512f +vfmsub231pd xmm,xmm,xmm fma +vfmsub231pd ymm,k,ymm,m avx512f +vfmsub231pd ymm,k,ymm,ymm avx512f +vfmsub231pd ymm,ymm,m avx512f +vfmsub231pd ymm,ymm,m fma +vfmsub231pd ymm,ymm,ymm avx512f +vfmsub231pd ymm,ymm,ymm fma +vfmsub231pd zmm,k,zmm,m avx512f +vfmsub231pd zmm,k,zmm,m knce +vfmsub231pd zmm,k,zmm,zmm avx512f +vfmsub231pd zmm,k,zmm,zmm knce +vfmsub231pd zmm,zmm,m avx512f +vfmsub231pd zmm,zmm,m knce +vfmsub231pd zmm,zmm,zmm avx512f +vfmsub231pd zmm,zmm,zmm knce +vfmsub231ph xmm,k,xmm,m avx512fp16 +vfmsub231ph xmm,k,xmm,xmm avx512fp16 +vfmsub231ph xmm,xmm,m avx512fp16 +vfmsub231ph xmm,xmm,xmm avx512fp16 +vfmsub231ph ymm,k,ymm,m avx512fp16 +vfmsub231ph ymm,k,ymm,ymm avx512fp16 +vfmsub231ph ymm,ymm,m avx512fp16 +vfmsub231ph ymm,ymm,ymm avx512fp16 +vfmsub231ph zmm,k,zmm,m avx512fp16 +vfmsub231ph zmm,k,zmm,zmm avx512fp16 +vfmsub231ph zmm,zmm,m avx512fp16 +vfmsub231ph zmm,zmm,zmm avx512fp16 +vfmsub231ps xmm,k,xmm,m avx512f +vfmsub231ps xmm,k,xmm,xmm avx512f +vfmsub231ps xmm,xmm,m avx512f +vfmsub231ps xmm,xmm,m fma +vfmsub231ps xmm,xmm,xmm avx512f +vfmsub231ps xmm,xmm,xmm fma +vfmsub231ps ymm,k,ymm,m avx512f +vfmsub231ps ymm,k,ymm,ymm avx512f +vfmsub231ps ymm,ymm,m avx512f +vfmsub231ps ymm,ymm,m fma +vfmsub231ps ymm,ymm,ymm avx512f +vfmsub231ps ymm,ymm,ymm fma +vfmsub231ps zmm,k,zmm,m avx512f +vfmsub231ps zmm,k,zmm,m knce +vfmsub231ps zmm,k,zmm,zmm avx512f +vfmsub231ps zmm,k,zmm,zmm knce +vfmsub231ps zmm,zmm,m avx512f +vfmsub231ps zmm,zmm,m knce +vfmsub231ps zmm,zmm,zmm avx512f +vfmsub231ps zmm,zmm,zmm knce +vfmsub231sd xmm,k,xmm,m avx512f_scalar +vfmsub231sd xmm,k,xmm,xmm avx512f_scalar +vfmsub231sd xmm,xmm,m avx512f_scalar +vfmsub231sd xmm,xmm,m fma +vfmsub231sd xmm,xmm,xmm avx512f_scalar +vfmsub231sd xmm,xmm,xmm fma +vfmsub231sh xmm,k,xmm,m avx512fp16_scalar +vfmsub231sh xmm,k,xmm,xmm avx512fp16_scalar +vfmsub231sh xmm,xmm,m avx512fp16_scalar +vfmsub231sh xmm,xmm,xmm avx512fp16_scalar +vfmsub231ss xmm,k,xmm,m avx512f_scalar +vfmsub231ss xmm,k,xmm,xmm avx512f_scalar +vfmsub231ss xmm,xmm,m avx512f_scalar +vfmsub231ss xmm,xmm,m fma +vfmsub231ss xmm,xmm,xmm avx512f_scalar +vfmsub231ss xmm,xmm,xmm fma +vfmsubadd132pd xmm,k,xmm,m avx512f +vfmsubadd132pd xmm,k,xmm,xmm avx512f +vfmsubadd132pd xmm,xmm,m avx512f +vfmsubadd132pd xmm,xmm,m fma +vfmsubadd132pd xmm,xmm,xmm avx512f +vfmsubadd132pd xmm,xmm,xmm fma +vfmsubadd132pd ymm,k,ymm,m avx512f +vfmsubadd132pd ymm,k,ymm,ymm avx512f +vfmsubadd132pd ymm,ymm,m avx512f +vfmsubadd132pd ymm,ymm,m fma +vfmsubadd132pd ymm,ymm,ymm avx512f +vfmsubadd132pd ymm,ymm,ymm fma +vfmsubadd132pd zmm,k,zmm,m avx512f +vfmsubadd132pd zmm,k,zmm,zmm avx512f +vfmsubadd132pd zmm,zmm,m avx512f +vfmsubadd132pd zmm,zmm,zmm avx512f +vfmsubadd132ph xmm,k,xmm,m avx512fp16 +vfmsubadd132ph xmm,k,xmm,xmm avx512fp16 +vfmsubadd132ph xmm,xmm,m avx512fp16 +vfmsubadd132ph xmm,xmm,xmm avx512fp16 +vfmsubadd132ph ymm,k,ymm,m avx512fp16 +vfmsubadd132ph ymm,k,ymm,ymm avx512fp16 +vfmsubadd132ph ymm,ymm,m avx512fp16 +vfmsubadd132ph ymm,ymm,ymm avx512fp16 +vfmsubadd132ph zmm,k,zmm,m avx512fp16 +vfmsubadd132ph zmm,k,zmm,zmm avx512fp16 +vfmsubadd132ph zmm,zmm,m avx512fp16 +vfmsubadd132ph zmm,zmm,zmm avx512fp16 +vfmsubadd132ps xmm,k,xmm,m avx512f +vfmsubadd132ps xmm,k,xmm,xmm avx512f +vfmsubadd132ps xmm,xmm,m avx512f +vfmsubadd132ps xmm,xmm,m fma +vfmsubadd132ps xmm,xmm,xmm avx512f +vfmsubadd132ps xmm,xmm,xmm fma +vfmsubadd132ps ymm,k,ymm,m avx512f +vfmsubadd132ps ymm,k,ymm,ymm avx512f +vfmsubadd132ps ymm,ymm,m avx512f +vfmsubadd132ps ymm,ymm,m fma +vfmsubadd132ps ymm,ymm,ymm avx512f +vfmsubadd132ps ymm,ymm,ymm fma +vfmsubadd132ps zmm,k,zmm,m avx512f +vfmsubadd132ps zmm,k,zmm,zmm avx512f +vfmsubadd132ps zmm,zmm,m avx512f +vfmsubadd132ps zmm,zmm,zmm avx512f +vfmsubadd213pd xmm,k,xmm,m avx512f +vfmsubadd213pd xmm,k,xmm,xmm avx512f +vfmsubadd213pd xmm,xmm,m avx512f +vfmsubadd213pd xmm,xmm,m fma +vfmsubadd213pd xmm,xmm,xmm avx512f +vfmsubadd213pd xmm,xmm,xmm fma +vfmsubadd213pd ymm,k,ymm,m avx512f +vfmsubadd213pd ymm,k,ymm,ymm avx512f +vfmsubadd213pd ymm,ymm,m avx512f +vfmsubadd213pd ymm,ymm,m fma +vfmsubadd213pd ymm,ymm,ymm avx512f +vfmsubadd213pd ymm,ymm,ymm fma +vfmsubadd213pd zmm,k,zmm,m avx512f +vfmsubadd213pd zmm,k,zmm,zmm avx512f +vfmsubadd213pd zmm,zmm,m avx512f +vfmsubadd213pd zmm,zmm,zmm avx512f +vfmsubadd213ph xmm,k,xmm,m avx512fp16 +vfmsubadd213ph xmm,k,xmm,xmm avx512fp16 +vfmsubadd213ph xmm,xmm,m avx512fp16 +vfmsubadd213ph xmm,xmm,xmm avx512fp16 +vfmsubadd213ph ymm,k,ymm,m avx512fp16 +vfmsubadd213ph ymm,k,ymm,ymm avx512fp16 +vfmsubadd213ph ymm,ymm,m avx512fp16 +vfmsubadd213ph ymm,ymm,ymm avx512fp16 +vfmsubadd213ph zmm,k,zmm,m avx512fp16 +vfmsubadd213ph zmm,k,zmm,zmm avx512fp16 +vfmsubadd213ph zmm,zmm,m avx512fp16 +vfmsubadd213ph zmm,zmm,zmm avx512fp16 +vfmsubadd213ps xmm,k,xmm,m avx512f +vfmsubadd213ps xmm,k,xmm,xmm avx512f +vfmsubadd213ps xmm,xmm,m avx512f +vfmsubadd213ps xmm,xmm,m fma +vfmsubadd213ps xmm,xmm,xmm avx512f +vfmsubadd213ps xmm,xmm,xmm fma +vfmsubadd213ps ymm,k,ymm,m avx512f +vfmsubadd213ps ymm,k,ymm,ymm avx512f +vfmsubadd213ps ymm,ymm,m avx512f +vfmsubadd213ps ymm,ymm,m fma +vfmsubadd213ps ymm,ymm,ymm avx512f +vfmsubadd213ps ymm,ymm,ymm fma +vfmsubadd213ps zmm,k,zmm,m avx512f +vfmsubadd213ps zmm,k,zmm,zmm avx512f +vfmsubadd213ps zmm,zmm,m avx512f +vfmsubadd213ps zmm,zmm,zmm avx512f +vfmsubadd231pd xmm,k,xmm,m avx512f +vfmsubadd231pd xmm,k,xmm,xmm avx512f +vfmsubadd231pd xmm,xmm,m avx512f +vfmsubadd231pd xmm,xmm,m fma +vfmsubadd231pd xmm,xmm,xmm avx512f +vfmsubadd231pd xmm,xmm,xmm fma +vfmsubadd231pd ymm,k,ymm,m avx512f +vfmsubadd231pd ymm,k,ymm,ymm avx512f +vfmsubadd231pd ymm,ymm,m avx512f +vfmsubadd231pd ymm,ymm,m fma +vfmsubadd231pd ymm,ymm,ymm avx512f +vfmsubadd231pd ymm,ymm,ymm fma +vfmsubadd231pd zmm,k,zmm,m avx512f +vfmsubadd231pd zmm,k,zmm,zmm avx512f +vfmsubadd231pd zmm,zmm,m avx512f +vfmsubadd231pd zmm,zmm,zmm avx512f +vfmsubadd231ph xmm,k,xmm,m avx512fp16 +vfmsubadd231ph xmm,k,xmm,xmm avx512fp16 +vfmsubadd231ph xmm,xmm,m avx512fp16 +vfmsubadd231ph xmm,xmm,xmm avx512fp16 +vfmsubadd231ph ymm,k,ymm,m avx512fp16 +vfmsubadd231ph ymm,k,ymm,ymm avx512fp16 +vfmsubadd231ph ymm,ymm,m avx512fp16 +vfmsubadd231ph ymm,ymm,ymm avx512fp16 +vfmsubadd231ph zmm,k,zmm,m avx512fp16 +vfmsubadd231ph zmm,k,zmm,zmm avx512fp16 +vfmsubadd231ph zmm,zmm,m avx512fp16 +vfmsubadd231ph zmm,zmm,zmm avx512fp16 +vfmsubadd231ps xmm,k,xmm,m avx512f +vfmsubadd231ps xmm,k,xmm,xmm avx512f +vfmsubadd231ps xmm,xmm,m avx512f +vfmsubadd231ps xmm,xmm,m fma +vfmsubadd231ps xmm,xmm,xmm avx512f +vfmsubadd231ps xmm,xmm,xmm fma +vfmsubadd231ps ymm,k,ymm,m avx512f +vfmsubadd231ps ymm,k,ymm,ymm avx512f +vfmsubadd231ps ymm,ymm,m avx512f +vfmsubadd231ps ymm,ymm,m fma +vfmsubadd231ps ymm,ymm,ymm avx512f +vfmsubadd231ps ymm,ymm,ymm fma +vfmsubadd231ps zmm,k,zmm,m avx512f +vfmsubadd231ps zmm,k,zmm,zmm avx512f +vfmsubadd231ps zmm,zmm,m avx512f +vfmsubadd231ps zmm,zmm,zmm avx512f +vfmsubaddpd xmm,xmm,m,xmm fma4 +vfmsubaddpd xmm,xmm,xmm,m fma4 +vfmsubaddpd xmm,xmm,xmm,xmm fma4 +vfmsubaddpd ymm,ymm,m,ymm fma4 +vfmsubaddpd ymm,ymm,ymm,m fma4 +vfmsubaddpd ymm,ymm,ymm,ymm fma4 +vfmsubaddps xmm,xmm,m,xmm fma4 +vfmsubaddps xmm,xmm,xmm,m fma4 +vfmsubaddps xmm,xmm,xmm,xmm fma4 +vfmsubaddps ymm,ymm,m,ymm fma4 +vfmsubaddps ymm,ymm,ymm,m fma4 +vfmsubaddps ymm,ymm,ymm,ymm fma4 +vfmsubpd xmm,xmm,m,xmm fma4 +vfmsubpd xmm,xmm,xmm,m fma4 +vfmsubpd xmm,xmm,xmm,xmm fma4 +vfmsubpd ymm,ymm,m,ymm fma4 +vfmsubpd ymm,ymm,ymm,m fma4 +vfmsubpd ymm,ymm,ymm,ymm fma4 +vfmsubps xmm,xmm,m,xmm fma4 +vfmsubps xmm,xmm,xmm,m fma4 +vfmsubps xmm,xmm,xmm,xmm fma4 +vfmsubps ymm,ymm,m,ymm fma4 +vfmsubps ymm,ymm,ymm,m fma4 +vfmsubps ymm,ymm,ymm,ymm fma4 +vfmsubsd xmm,xmm,m,xmm fma4 +vfmsubsd xmm,xmm,xmm,m fma4 +vfmsubsd xmm,xmm,xmm,xmm fma4 +vfmsubss xmm,xmm,m,xmm fma4 +vfmsubss xmm,xmm,xmm,m fma4 +vfmsubss xmm,xmm,xmm,xmm fma4 +vfmulcph xmm,k,xmm,m avx512fp16 +vfmulcph xmm,k,xmm,xmm avx512fp16 +vfmulcph xmm,xmm,m avx512fp16 +vfmulcph xmm,xmm,xmm avx512fp16 +vfmulcph ymm,k,ymm,m avx512fp16 +vfmulcph ymm,k,ymm,ymm avx512fp16 +vfmulcph ymm,ymm,m avx512fp16 +vfmulcph ymm,ymm,ymm avx512fp16 +vfmulcph zmm,k,zmm,m avx512fp16 +vfmulcph zmm,k,zmm,zmm avx512fp16 +vfmulcph zmm,zmm,m avx512fp16 +vfmulcph zmm,zmm,zmm avx512fp16 +vfmulcsh xmm,k,xmm,m avx512fp16_scalar +vfmulcsh xmm,k,xmm,xmm avx512fp16_scalar +vfmulcsh xmm,xmm,m avx512fp16_scalar +vfmulcsh xmm,xmm,xmm avx512fp16_scalar +vfnmadd132pd xmm,k,xmm,m avx512f +vfnmadd132pd xmm,k,xmm,xmm avx512f +vfnmadd132pd xmm,xmm,m avx512f +vfnmadd132pd xmm,xmm,m fma +vfnmadd132pd xmm,xmm,xmm avx512f +vfnmadd132pd xmm,xmm,xmm fma +vfnmadd132pd ymm,k,ymm,m avx512f +vfnmadd132pd ymm,k,ymm,ymm avx512f +vfnmadd132pd ymm,ymm,m avx512f +vfnmadd132pd ymm,ymm,m fma +vfnmadd132pd ymm,ymm,ymm avx512f +vfnmadd132pd ymm,ymm,ymm fma +vfnmadd132pd zmm,k,zmm,m avx512f +vfnmadd132pd zmm,k,zmm,m knce +vfnmadd132pd zmm,k,zmm,zmm avx512f +vfnmadd132pd zmm,k,zmm,zmm knce +vfnmadd132pd zmm,zmm,m avx512f +vfnmadd132pd zmm,zmm,m knce +vfnmadd132pd zmm,zmm,zmm avx512f +vfnmadd132pd zmm,zmm,zmm knce +vfnmadd132ph xmm,k,xmm,m avx512fp16 +vfnmadd132ph xmm,k,xmm,xmm avx512fp16 +vfnmadd132ph xmm,xmm,m avx512fp16 +vfnmadd132ph xmm,xmm,xmm avx512fp16 +vfnmadd132ph ymm,k,ymm,m avx512fp16 +vfnmadd132ph ymm,k,ymm,ymm avx512fp16 +vfnmadd132ph ymm,ymm,m avx512fp16 +vfnmadd132ph ymm,ymm,ymm avx512fp16 +vfnmadd132ph zmm,k,zmm,m avx512fp16 +vfnmadd132ph zmm,k,zmm,zmm avx512fp16 +vfnmadd132ph zmm,zmm,m avx512fp16 +vfnmadd132ph zmm,zmm,zmm avx512fp16 +vfnmadd132ps xmm,k,xmm,m avx512f +vfnmadd132ps xmm,k,xmm,xmm avx512f +vfnmadd132ps xmm,xmm,m avx512f +vfnmadd132ps xmm,xmm,m fma +vfnmadd132ps xmm,xmm,xmm avx512f +vfnmadd132ps xmm,xmm,xmm fma +vfnmadd132ps ymm,k,ymm,m avx512f +vfnmadd132ps ymm,k,ymm,ymm avx512f +vfnmadd132ps ymm,ymm,m avx512f +vfnmadd132ps ymm,ymm,m fma +vfnmadd132ps ymm,ymm,ymm avx512f +vfnmadd132ps ymm,ymm,ymm fma +vfnmadd132ps zmm,k,zmm,m avx512f +vfnmadd132ps zmm,k,zmm,m knce +vfnmadd132ps zmm,k,zmm,zmm avx512f +vfnmadd132ps zmm,k,zmm,zmm knce +vfnmadd132ps zmm,zmm,m avx512f +vfnmadd132ps zmm,zmm,m knce +vfnmadd132ps zmm,zmm,zmm avx512f +vfnmadd132ps zmm,zmm,zmm knce +vfnmadd132sd xmm,k,xmm,m avx512f_scalar +vfnmadd132sd xmm,k,xmm,xmm avx512f_scalar +vfnmadd132sd xmm,xmm,m avx512f_scalar +vfnmadd132sd xmm,xmm,m fma +vfnmadd132sd xmm,xmm,xmm avx512f_scalar +vfnmadd132sd xmm,xmm,xmm fma +vfnmadd132sh xmm,k,xmm,m avx512fp16_scalar +vfnmadd132sh xmm,k,xmm,xmm avx512fp16_scalar +vfnmadd132sh xmm,xmm,m avx512fp16_scalar +vfnmadd132sh xmm,xmm,xmm avx512fp16_scalar +vfnmadd132ss xmm,k,xmm,m avx512f_scalar +vfnmadd132ss xmm,k,xmm,xmm avx512f_scalar +vfnmadd132ss xmm,xmm,m avx512f_scalar +vfnmadd132ss xmm,xmm,m fma +vfnmadd132ss xmm,xmm,xmm avx512f_scalar +vfnmadd132ss xmm,xmm,xmm fma +vfnmadd213pd xmm,k,xmm,m avx512f +vfnmadd213pd xmm,k,xmm,xmm avx512f +vfnmadd213pd xmm,xmm,m avx512f +vfnmadd213pd xmm,xmm,m fma +vfnmadd213pd xmm,xmm,xmm avx512f +vfnmadd213pd xmm,xmm,xmm fma +vfnmadd213pd ymm,k,ymm,m avx512f +vfnmadd213pd ymm,k,ymm,ymm avx512f +vfnmadd213pd ymm,ymm,m avx512f +vfnmadd213pd ymm,ymm,m fma +vfnmadd213pd ymm,ymm,ymm avx512f +vfnmadd213pd ymm,ymm,ymm fma +vfnmadd213pd zmm,k,zmm,m avx512f +vfnmadd213pd zmm,k,zmm,m knce +vfnmadd213pd zmm,k,zmm,zmm avx512f +vfnmadd213pd zmm,k,zmm,zmm knce +vfnmadd213pd zmm,zmm,m avx512f +vfnmadd213pd zmm,zmm,m knce +vfnmadd213pd zmm,zmm,zmm avx512f +vfnmadd213pd zmm,zmm,zmm knce +vfnmadd213ph xmm,k,xmm,m avx512fp16 +vfnmadd213ph xmm,k,xmm,xmm avx512fp16 +vfnmadd213ph xmm,xmm,m avx512fp16 +vfnmadd213ph xmm,xmm,xmm avx512fp16 +vfnmadd213ph ymm,k,ymm,m avx512fp16 +vfnmadd213ph ymm,k,ymm,ymm avx512fp16 +vfnmadd213ph ymm,ymm,m avx512fp16 +vfnmadd213ph ymm,ymm,ymm avx512fp16 +vfnmadd213ph zmm,k,zmm,m avx512fp16 +vfnmadd213ph zmm,k,zmm,zmm avx512fp16 +vfnmadd213ph zmm,zmm,m avx512fp16 +vfnmadd213ph zmm,zmm,zmm avx512fp16 +vfnmadd213ps xmm,k,xmm,m avx512f +vfnmadd213ps xmm,k,xmm,xmm avx512f +vfnmadd213ps xmm,xmm,m avx512f +vfnmadd213ps xmm,xmm,m fma +vfnmadd213ps xmm,xmm,xmm avx512f +vfnmadd213ps xmm,xmm,xmm fma +vfnmadd213ps ymm,k,ymm,m avx512f +vfnmadd213ps ymm,k,ymm,ymm avx512f +vfnmadd213ps ymm,ymm,m avx512f +vfnmadd213ps ymm,ymm,m fma +vfnmadd213ps ymm,ymm,ymm avx512f +vfnmadd213ps ymm,ymm,ymm fma +vfnmadd213ps zmm,k,zmm,m avx512f +vfnmadd213ps zmm,k,zmm,m knce +vfnmadd213ps zmm,k,zmm,zmm avx512f +vfnmadd213ps zmm,k,zmm,zmm knce +vfnmadd213ps zmm,zmm,m avx512f +vfnmadd213ps zmm,zmm,m knce +vfnmadd213ps zmm,zmm,zmm avx512f +vfnmadd213ps zmm,zmm,zmm knce +vfnmadd213sd xmm,k,xmm,m avx512f_scalar +vfnmadd213sd xmm,k,xmm,xmm avx512f_scalar +vfnmadd213sd xmm,xmm,m avx512f_scalar +vfnmadd213sd xmm,xmm,m fma +vfnmadd213sd xmm,xmm,xmm avx512f_scalar +vfnmadd213sd xmm,xmm,xmm fma +vfnmadd213sh xmm,k,xmm,m avx512fp16_scalar +vfnmadd213sh xmm,k,xmm,xmm avx512fp16_scalar +vfnmadd213sh xmm,xmm,m avx512fp16_scalar +vfnmadd213sh xmm,xmm,xmm avx512fp16_scalar +vfnmadd213ss xmm,k,xmm,m avx512f_scalar +vfnmadd213ss xmm,k,xmm,xmm avx512f_scalar +vfnmadd213ss xmm,xmm,m avx512f_scalar +vfnmadd213ss xmm,xmm,m fma +vfnmadd213ss xmm,xmm,xmm avx512f_scalar +vfnmadd213ss xmm,xmm,xmm fma +vfnmadd231pd xmm,k,xmm,m avx512f +vfnmadd231pd xmm,k,xmm,xmm avx512f +vfnmadd231pd xmm,xmm,m avx512f +vfnmadd231pd xmm,xmm,m fma +vfnmadd231pd xmm,xmm,xmm avx512f +vfnmadd231pd xmm,xmm,xmm fma +vfnmadd231pd ymm,k,ymm,m avx512f +vfnmadd231pd ymm,k,ymm,ymm avx512f +vfnmadd231pd ymm,ymm,m avx512f +vfnmadd231pd ymm,ymm,m fma +vfnmadd231pd ymm,ymm,ymm avx512f +vfnmadd231pd ymm,ymm,ymm fma +vfnmadd231pd zmm,k,zmm,m avx512f +vfnmadd231pd zmm,k,zmm,m knce +vfnmadd231pd zmm,k,zmm,zmm avx512f +vfnmadd231pd zmm,k,zmm,zmm knce +vfnmadd231pd zmm,zmm,m avx512f +vfnmadd231pd zmm,zmm,m knce +vfnmadd231pd zmm,zmm,zmm avx512f +vfnmadd231pd zmm,zmm,zmm knce +vfnmadd231ph xmm,k,xmm,m avx512fp16 +vfnmadd231ph xmm,k,xmm,xmm avx512fp16 +vfnmadd231ph xmm,xmm,m avx512fp16 +vfnmadd231ph xmm,xmm,xmm avx512fp16 +vfnmadd231ph ymm,k,ymm,m avx512fp16 +vfnmadd231ph ymm,k,ymm,ymm avx512fp16 +vfnmadd231ph ymm,ymm,m avx512fp16 +vfnmadd231ph ymm,ymm,ymm avx512fp16 +vfnmadd231ph zmm,k,zmm,m avx512fp16 +vfnmadd231ph zmm,k,zmm,zmm avx512fp16 +vfnmadd231ph zmm,zmm,m avx512fp16 +vfnmadd231ph zmm,zmm,zmm avx512fp16 +vfnmadd231ps xmm,k,xmm,m avx512f +vfnmadd231ps xmm,k,xmm,xmm avx512f +vfnmadd231ps xmm,xmm,m avx512f +vfnmadd231ps xmm,xmm,m fma +vfnmadd231ps xmm,xmm,xmm avx512f +vfnmadd231ps xmm,xmm,xmm fma +vfnmadd231ps ymm,k,ymm,m avx512f +vfnmadd231ps ymm,k,ymm,ymm avx512f +vfnmadd231ps ymm,ymm,m avx512f +vfnmadd231ps ymm,ymm,m fma +vfnmadd231ps ymm,ymm,ymm avx512f +vfnmadd231ps ymm,ymm,ymm fma +vfnmadd231ps zmm,k,zmm,m avx512f +vfnmadd231ps zmm,k,zmm,m knce +vfnmadd231ps zmm,k,zmm,zmm avx512f +vfnmadd231ps zmm,k,zmm,zmm knce +vfnmadd231ps zmm,zmm,m avx512f +vfnmadd231ps zmm,zmm,m knce +vfnmadd231ps zmm,zmm,zmm avx512f +vfnmadd231ps zmm,zmm,zmm knce +vfnmadd231sd xmm,k,xmm,m avx512f_scalar +vfnmadd231sd xmm,k,xmm,xmm avx512f_scalar +vfnmadd231sd xmm,xmm,m avx512f_scalar +vfnmadd231sd xmm,xmm,m fma +vfnmadd231sd xmm,xmm,xmm avx512f_scalar +vfnmadd231sd xmm,xmm,xmm fma +vfnmadd231sh xmm,k,xmm,m avx512fp16_scalar +vfnmadd231sh xmm,k,xmm,xmm avx512fp16_scalar +vfnmadd231sh xmm,xmm,m avx512fp16_scalar +vfnmadd231sh xmm,xmm,xmm avx512fp16_scalar +vfnmadd231ss xmm,k,xmm,m avx512f_scalar +vfnmadd231ss xmm,k,xmm,xmm avx512f_scalar +vfnmadd231ss xmm,xmm,m avx512f_scalar +vfnmadd231ss xmm,xmm,m fma +vfnmadd231ss xmm,xmm,xmm avx512f_scalar +vfnmadd231ss xmm,xmm,xmm fma +vfnmaddpd xmm,xmm,m,xmm fma4 +vfnmaddpd xmm,xmm,xmm,m fma4 +vfnmaddpd xmm,xmm,xmm,xmm fma4 +vfnmaddpd ymm,ymm,m,ymm fma4 +vfnmaddpd ymm,ymm,ymm,m fma4 +vfnmaddpd ymm,ymm,ymm,ymm fma4 +vfnmaddps xmm,xmm,m,xmm fma4 +vfnmaddps xmm,xmm,xmm,m fma4 +vfnmaddps xmm,xmm,xmm,xmm fma4 +vfnmaddps ymm,ymm,m,ymm fma4 +vfnmaddps ymm,ymm,ymm,m fma4 +vfnmaddps ymm,ymm,ymm,ymm fma4 +vfnmaddsd xmm,xmm,m,xmm fma4 +vfnmaddsd xmm,xmm,xmm,m fma4 +vfnmaddsd xmm,xmm,xmm,xmm fma4 +vfnmaddss xmm,xmm,m,xmm fma4 +vfnmaddss xmm,xmm,xmm,m fma4 +vfnmaddss xmm,xmm,xmm,xmm fma4 +vfnmsub132pd xmm,k,xmm,m avx512f +vfnmsub132pd xmm,k,xmm,xmm avx512f +vfnmsub132pd xmm,xmm,m avx512f +vfnmsub132pd xmm,xmm,m fma +vfnmsub132pd xmm,xmm,xmm avx512f +vfnmsub132pd xmm,xmm,xmm fma +vfnmsub132pd ymm,k,ymm,m avx512f +vfnmsub132pd ymm,k,ymm,ymm avx512f +vfnmsub132pd ymm,ymm,m avx512f +vfnmsub132pd ymm,ymm,m fma +vfnmsub132pd ymm,ymm,ymm avx512f +vfnmsub132pd ymm,ymm,ymm fma +vfnmsub132pd zmm,k,zmm,m avx512f +vfnmsub132pd zmm,k,zmm,m knce +vfnmsub132pd zmm,k,zmm,zmm avx512f +vfnmsub132pd zmm,k,zmm,zmm knce +vfnmsub132pd zmm,zmm,m avx512f +vfnmsub132pd zmm,zmm,m knce +vfnmsub132pd zmm,zmm,zmm avx512f +vfnmsub132pd zmm,zmm,zmm knce +vfnmsub132ph xmm,k,xmm,m avx512fp16 +vfnmsub132ph xmm,k,xmm,xmm avx512fp16 +vfnmsub132ph xmm,xmm,m avx512fp16 +vfnmsub132ph xmm,xmm,xmm avx512fp16 +vfnmsub132ph ymm,k,ymm,m avx512fp16 +vfnmsub132ph ymm,k,ymm,ymm avx512fp16 +vfnmsub132ph ymm,ymm,m avx512fp16 +vfnmsub132ph ymm,ymm,ymm avx512fp16 +vfnmsub132ph zmm,k,zmm,m avx512fp16 +vfnmsub132ph zmm,k,zmm,zmm avx512fp16 +vfnmsub132ph zmm,zmm,m avx512fp16 +vfnmsub132ph zmm,zmm,zmm avx512fp16 +vfnmsub132ps xmm,k,xmm,m avx512f +vfnmsub132ps xmm,k,xmm,xmm avx512f +vfnmsub132ps xmm,xmm,m avx512f +vfnmsub132ps xmm,xmm,m fma +vfnmsub132ps xmm,xmm,xmm avx512f +vfnmsub132ps xmm,xmm,xmm fma +vfnmsub132ps ymm,k,ymm,m avx512f +vfnmsub132ps ymm,k,ymm,ymm avx512f +vfnmsub132ps ymm,ymm,m avx512f +vfnmsub132ps ymm,ymm,m fma +vfnmsub132ps ymm,ymm,ymm avx512f +vfnmsub132ps ymm,ymm,ymm fma +vfnmsub132ps zmm,k,zmm,m avx512f +vfnmsub132ps zmm,k,zmm,m knce +vfnmsub132ps zmm,k,zmm,zmm avx512f +vfnmsub132ps zmm,k,zmm,zmm knce +vfnmsub132ps zmm,zmm,m avx512f +vfnmsub132ps zmm,zmm,m knce +vfnmsub132ps zmm,zmm,zmm avx512f +vfnmsub132ps zmm,zmm,zmm knce +vfnmsub132sd xmm,k,xmm,m avx512f_scalar +vfnmsub132sd xmm,k,xmm,xmm avx512f_scalar +vfnmsub132sd xmm,xmm,m avx512f_scalar +vfnmsub132sd xmm,xmm,m fma +vfnmsub132sd xmm,xmm,xmm avx512f_scalar +vfnmsub132sd xmm,xmm,xmm fma +vfnmsub132sh xmm,k,xmm,m avx512fp16_scalar +vfnmsub132sh xmm,k,xmm,xmm avx512fp16_scalar +vfnmsub132sh xmm,xmm,m avx512fp16_scalar +vfnmsub132sh xmm,xmm,xmm avx512fp16_scalar +vfnmsub132ss xmm,k,xmm,m avx512f_scalar +vfnmsub132ss xmm,k,xmm,xmm avx512f_scalar +vfnmsub132ss xmm,xmm,m avx512f_scalar +vfnmsub132ss xmm,xmm,m fma +vfnmsub132ss xmm,xmm,xmm avx512f_scalar +vfnmsub132ss xmm,xmm,xmm fma +vfnmsub213pd xmm,k,xmm,m avx512f +vfnmsub213pd xmm,k,xmm,xmm avx512f +vfnmsub213pd xmm,xmm,m avx512f +vfnmsub213pd xmm,xmm,m fma +vfnmsub213pd xmm,xmm,xmm avx512f +vfnmsub213pd xmm,xmm,xmm fma +vfnmsub213pd ymm,k,ymm,m avx512f +vfnmsub213pd ymm,k,ymm,ymm avx512f +vfnmsub213pd ymm,ymm,m avx512f +vfnmsub213pd ymm,ymm,m fma +vfnmsub213pd ymm,ymm,ymm avx512f +vfnmsub213pd ymm,ymm,ymm fma +vfnmsub213pd zmm,k,zmm,m avx512f +vfnmsub213pd zmm,k,zmm,m knce +vfnmsub213pd zmm,k,zmm,zmm avx512f +vfnmsub213pd zmm,k,zmm,zmm knce +vfnmsub213pd zmm,zmm,m avx512f +vfnmsub213pd zmm,zmm,m knce +vfnmsub213pd zmm,zmm,zmm avx512f +vfnmsub213pd zmm,zmm,zmm knce +vfnmsub213ph xmm,k,xmm,m avx512fp16 +vfnmsub213ph xmm,k,xmm,xmm avx512fp16 +vfnmsub213ph xmm,xmm,m avx512fp16 +vfnmsub213ph xmm,xmm,xmm avx512fp16 +vfnmsub213ph ymm,k,ymm,m avx512fp16 +vfnmsub213ph ymm,k,ymm,ymm avx512fp16 +vfnmsub213ph ymm,ymm,m avx512fp16 +vfnmsub213ph ymm,ymm,ymm avx512fp16 +vfnmsub213ph zmm,k,zmm,m avx512fp16 +vfnmsub213ph zmm,k,zmm,zmm avx512fp16 +vfnmsub213ph zmm,zmm,m avx512fp16 +vfnmsub213ph zmm,zmm,zmm avx512fp16 +vfnmsub213ps xmm,k,xmm,m avx512f +vfnmsub213ps xmm,k,xmm,xmm avx512f +vfnmsub213ps xmm,xmm,m avx512f +vfnmsub213ps xmm,xmm,m fma +vfnmsub213ps xmm,xmm,xmm avx512f +vfnmsub213ps xmm,xmm,xmm fma +vfnmsub213ps ymm,k,ymm,m avx512f +vfnmsub213ps ymm,k,ymm,ymm avx512f +vfnmsub213ps ymm,ymm,m avx512f +vfnmsub213ps ymm,ymm,m fma +vfnmsub213ps ymm,ymm,ymm avx512f +vfnmsub213ps ymm,ymm,ymm fma +vfnmsub213ps zmm,k,zmm,m avx512f +vfnmsub213ps zmm,k,zmm,m knce +vfnmsub213ps zmm,k,zmm,zmm avx512f +vfnmsub213ps zmm,k,zmm,zmm knce +vfnmsub213ps zmm,zmm,m avx512f +vfnmsub213ps zmm,zmm,m knce +vfnmsub213ps zmm,zmm,zmm avx512f +vfnmsub213ps zmm,zmm,zmm knce +vfnmsub213sd xmm,k,xmm,m avx512f_scalar +vfnmsub213sd xmm,k,xmm,xmm avx512f_scalar +vfnmsub213sd xmm,xmm,m avx512f_scalar +vfnmsub213sd xmm,xmm,m fma +vfnmsub213sd xmm,xmm,xmm avx512f_scalar +vfnmsub213sd xmm,xmm,xmm fma +vfnmsub213sh xmm,k,xmm,m avx512fp16_scalar +vfnmsub213sh xmm,k,xmm,xmm avx512fp16_scalar +vfnmsub213sh xmm,xmm,m avx512fp16_scalar +vfnmsub213sh xmm,xmm,xmm avx512fp16_scalar +vfnmsub213ss xmm,k,xmm,m avx512f_scalar +vfnmsub213ss xmm,k,xmm,xmm avx512f_scalar +vfnmsub213ss xmm,xmm,m avx512f_scalar +vfnmsub213ss xmm,xmm,m fma +vfnmsub213ss xmm,xmm,xmm avx512f_scalar +vfnmsub213ss xmm,xmm,xmm fma +vfnmsub231pd xmm,k,xmm,m avx512f +vfnmsub231pd xmm,k,xmm,xmm avx512f +vfnmsub231pd xmm,xmm,m avx512f +vfnmsub231pd xmm,xmm,m fma +vfnmsub231pd xmm,xmm,xmm avx512f +vfnmsub231pd xmm,xmm,xmm fma +vfnmsub231pd ymm,k,ymm,m avx512f +vfnmsub231pd ymm,k,ymm,ymm avx512f +vfnmsub231pd ymm,ymm,m avx512f +vfnmsub231pd ymm,ymm,m fma +vfnmsub231pd ymm,ymm,ymm avx512f +vfnmsub231pd ymm,ymm,ymm fma +vfnmsub231pd zmm,k,zmm,m avx512f +vfnmsub231pd zmm,k,zmm,m knce +vfnmsub231pd zmm,k,zmm,zmm avx512f +vfnmsub231pd zmm,k,zmm,zmm knce +vfnmsub231pd zmm,zmm,m avx512f +vfnmsub231pd zmm,zmm,m knce +vfnmsub231pd zmm,zmm,zmm avx512f +vfnmsub231pd zmm,zmm,zmm knce +vfnmsub231ph xmm,k,xmm,m avx512fp16 +vfnmsub231ph xmm,k,xmm,xmm avx512fp16 +vfnmsub231ph xmm,xmm,m avx512fp16 +vfnmsub231ph xmm,xmm,xmm avx512fp16 +vfnmsub231ph ymm,k,ymm,m avx512fp16 +vfnmsub231ph ymm,k,ymm,ymm avx512fp16 +vfnmsub231ph ymm,ymm,m avx512fp16 +vfnmsub231ph ymm,ymm,ymm avx512fp16 +vfnmsub231ph zmm,k,zmm,m avx512fp16 +vfnmsub231ph zmm,k,zmm,zmm avx512fp16 +vfnmsub231ph zmm,zmm,m avx512fp16 +vfnmsub231ph zmm,zmm,zmm avx512fp16 +vfnmsub231ps xmm,k,xmm,m avx512f +vfnmsub231ps xmm,k,xmm,xmm avx512f +vfnmsub231ps xmm,xmm,m avx512f +vfnmsub231ps xmm,xmm,m fma +vfnmsub231ps xmm,xmm,xmm avx512f +vfnmsub231ps xmm,xmm,xmm fma +vfnmsub231ps ymm,k,ymm,m avx512f +vfnmsub231ps ymm,k,ymm,ymm avx512f +vfnmsub231ps ymm,ymm,m avx512f +vfnmsub231ps ymm,ymm,m fma +vfnmsub231ps ymm,ymm,ymm avx512f +vfnmsub231ps ymm,ymm,ymm fma +vfnmsub231ps zmm,k,zmm,m avx512f +vfnmsub231ps zmm,k,zmm,m knce +vfnmsub231ps zmm,k,zmm,zmm avx512f +vfnmsub231ps zmm,k,zmm,zmm knce +vfnmsub231ps zmm,zmm,m avx512f +vfnmsub231ps zmm,zmm,m knce +vfnmsub231ps zmm,zmm,zmm avx512f +vfnmsub231ps zmm,zmm,zmm knce +vfnmsub231sd xmm,k,xmm,m avx512f_scalar +vfnmsub231sd xmm,k,xmm,xmm avx512f_scalar +vfnmsub231sd xmm,xmm,m avx512f_scalar +vfnmsub231sd xmm,xmm,m fma +vfnmsub231sd xmm,xmm,xmm avx512f_scalar +vfnmsub231sd xmm,xmm,xmm fma +vfnmsub231sh xmm,k,xmm,m avx512fp16_scalar +vfnmsub231sh xmm,k,xmm,xmm avx512fp16_scalar +vfnmsub231sh xmm,xmm,m avx512fp16_scalar +vfnmsub231sh xmm,xmm,xmm avx512fp16_scalar +vfnmsub231ss xmm,k,xmm,m avx512f_scalar +vfnmsub231ss xmm,k,xmm,xmm avx512f_scalar +vfnmsub231ss xmm,xmm,m avx512f_scalar +vfnmsub231ss xmm,xmm,m fma +vfnmsub231ss xmm,xmm,xmm avx512f_scalar +vfnmsub231ss xmm,xmm,xmm fma +vfnmsubpd xmm,xmm,m,xmm fma4 +vfnmsubpd xmm,xmm,xmm,m fma4 +vfnmsubpd xmm,xmm,xmm,xmm fma4 +vfnmsubpd ymm,ymm,m,ymm fma4 +vfnmsubpd ymm,ymm,ymm,m fma4 +vfnmsubpd ymm,ymm,ymm,ymm fma4 +vfnmsubps xmm,xmm,m,xmm fma4 +vfnmsubps xmm,xmm,xmm,m fma4 +vfnmsubps xmm,xmm,xmm,xmm fma4 +vfnmsubps ymm,ymm,m,ymm fma4 +vfnmsubps ymm,ymm,ymm,m fma4 +vfnmsubps ymm,ymm,ymm,ymm fma4 +vfnmsubsd xmm,xmm,m,xmm fma4 +vfnmsubsd xmm,xmm,xmm,m fma4 +vfnmsubsd xmm,xmm,xmm,xmm fma4 +vfnmsubss xmm,xmm,m,xmm fma4 +vfnmsubss xmm,xmm,xmm,m fma4 +vfnmsubss xmm,xmm,xmm,xmm fma4 +vfpclasspd k,k,m,imm avx512dq +vfpclasspd k,k,xmm,imm avx512dq +vfpclasspd k,k,ymm,imm avx512dq +vfpclasspd k,k,zmm,imm avx512dq +vfpclasspd k,m,imm avx512dq +vfpclasspd k,xmm,imm avx512dq +vfpclasspd k,ymm,imm avx512dq +vfpclasspd k,zmm,imm avx512dq +vfpclasspd m,imm avx512dq +vfpclasspd xmm,imm avx512dq +vfpclasspd ymm,imm avx512dq +vfpclasspd zmm,imm avx512dq +vfpclassph k,k,m,imm avx512fp16 +vfpclassph k,k,xmm,imm avx512fp16 +vfpclassph k,k,ymm,imm avx512fp16 +vfpclassph k,k,zmm,imm avx512fp16 +vfpclassph k,m,imm avx512fp16 +vfpclassph k,xmm,imm avx512fp16 +vfpclassph k,ymm,imm avx512fp16 +vfpclassph k,zmm,imm avx512fp16 +vfpclassph m,imm avx512fp16 +vfpclassph xmm,imm avx512fp16 +vfpclassph ymm,imm avx512fp16 +vfpclassph zmm,imm avx512fp16 +vfpclassps k,k,m,imm avx512dq +vfpclassps k,k,xmm,imm avx512dq +vfpclassps k,k,ymm,imm avx512dq +vfpclassps k,k,zmm,imm avx512dq +vfpclassps k,m,imm avx512dq +vfpclassps k,xmm,imm avx512dq +vfpclassps k,ymm,imm avx512dq +vfpclassps k,zmm,imm avx512dq +vfpclassps m,imm avx512dq +vfpclassps xmm,imm avx512dq +vfpclassps ymm,imm avx512dq +vfpclassps zmm,imm avx512dq +vfpclasssd k,k,m,imm avx512dq_scalar +vfpclasssd k,k,xmm,imm avx512dq_scalar +vfpclasssd k,m,imm avx512dq_scalar +vfpclasssd k,xmm,imm avx512dq_scalar +vfpclasssd m,imm avx512dq_scalar +vfpclasssd xmm,imm avx512dq_scalar +vfpclasssh k,k,m,imm avx512fp16_scalar +vfpclasssh k,k,xmm,imm avx512fp16_scalar +vfpclasssh k,m,imm avx512fp16_scalar +vfpclasssh k,xmm,imm avx512fp16_scalar +vfpclasssh m,imm avx512fp16_scalar +vfpclasssh xmm,imm avx512fp16_scalar +vfpclassss k,k,m,imm avx512dq_scalar +vfpclassss k,k,xmm,imm avx512dq_scalar +vfpclassss k,m,imm avx512dq_scalar +vfpclassss k,xmm,imm avx512dq_scalar +vfpclassss m,imm avx512dq_scalar +vfpclassss xmm,imm avx512dq_scalar +vfrczpd xmm,m xop +vfrczpd xmm,xmm xop +vfrczpd ymm,m xop +vfrczpd ymm,ymm xop +vfrczps xmm,m xop +vfrczps xmm,xmm xop +vfrczps ymm,m xop +vfrczps ymm,ymm xop +vfrczsd xmm,m xop +vfrczsd xmm,xmm xop +vfrczss xmm,m xop +vfrczss xmm,xmm xop +vgatherdpd xmm,k,m avx512f +vgatherdpd xmm,m avx512f +vgatherdpd xmm,m,xmm avx2 +vgatherdpd ymm,k,m avx512f +vgatherdpd ymm,m avx512f +vgatherdpd ymm,m,ymm avx2 +vgatherdpd zmm,k,m avx512f +vgatherdpd zmm,k,m knce +vgatherdpd zmm,m avx512f +vgatherdpd zmm,m knce +vgatherdps xmm,k,m avx512f +vgatherdps xmm,m avx512f +vgatherdps xmm,m,xmm avx2 +vgatherdps ymm,k,m avx512f +vgatherdps ymm,m avx512f +vgatherdps ymm,m,ymm avx2 +vgatherdps zmm,k,m avx512f +vgatherdps zmm,k,m knce +vgatherdps zmm,m avx512f +vgatherdps zmm,m knce +vgatherpf0dpd m avx512pf +vgatherpf0dpd m,k avx512pf +vgatherpf0dps m avx512pf +vgatherpf0dps m knce +vgatherpf0dps m,k avx512pf +vgatherpf0dps m,k knce +vgatherpf0hintdpd m knc_pf_hint +vgatherpf0hintdpd m,k knc_pf_hint +vgatherpf0hintdps m knc_pf_hint +vgatherpf0hintdps m,k knc_pf_hint +vgatherpf0qpd m avx512pf +vgatherpf0qpd m,k avx512pf +vgatherpf0qps m avx512pf +vgatherpf0qps m,k avx512pf +vgatherpf1dpd m avx512pf +vgatherpf1dpd m,k avx512pf +vgatherpf1dps m avx512pf +vgatherpf1dps m knce +vgatherpf1dps m,k avx512pf +vgatherpf1dps m,k knce +vgatherpf1qpd m avx512pf +vgatherpf1qpd m,k avx512pf +vgatherpf1qps m avx512pf +vgatherpf1qps m,k avx512pf +vgatherqpd xmm,k,m avx512f +vgatherqpd xmm,m avx512f +vgatherqpd xmm,m,xmm avx2 +vgatherqpd ymm,k,m avx512f +vgatherqpd ymm,m avx512f +vgatherqpd ymm,m,ymm avx2 +vgatherqpd zmm,k,m avx512f +vgatherqpd zmm,m avx512f +vgatherqps xmm,k,m avx512f +vgatherqps xmm,m avx512f +vgatherqps xmm,m,xmm avx2 +vgatherqps ymm,k,m avx512f +vgatherqps ymm,m avx512f +vgetexppd xmm,k,m avx512f +vgetexppd xmm,k,xmm avx512f +vgetexppd xmm,m avx512f +vgetexppd xmm,xmm avx512f +vgetexppd ymm,k,m avx512f +vgetexppd ymm,k,ymm avx512f +vgetexppd ymm,m avx512f +vgetexppd ymm,ymm avx512f +vgetexppd zmm,k,m avx512f +vgetexppd zmm,k,m knce +vgetexppd zmm,k,zmm avx512f +vgetexppd zmm,k,zmm knce +vgetexppd zmm,m avx512f +vgetexppd zmm,m knce +vgetexppd zmm,zmm avx512f +vgetexppd zmm,zmm knce +vgetexpph xmm,k,m avx512fp16 +vgetexpph xmm,k,xmm avx512fp16 +vgetexpph xmm,m avx512fp16 +vgetexpph xmm,xmm avx512fp16 +vgetexpph ymm,k,m avx512fp16 +vgetexpph ymm,k,ymm avx512fp16 +vgetexpph ymm,m avx512fp16 +vgetexpph ymm,ymm avx512fp16 +vgetexpph zmm,k,m avx512fp16 +vgetexpph zmm,k,zmm avx512fp16 +vgetexpph zmm,m avx512fp16 +vgetexpph zmm,zmm avx512fp16 +vgetexpps xmm,k,m avx512f +vgetexpps xmm,k,xmm avx512f +vgetexpps xmm,m avx512f +vgetexpps xmm,xmm avx512f +vgetexpps ymm,k,m avx512f +vgetexpps ymm,k,ymm avx512f +vgetexpps ymm,m avx512f +vgetexpps ymm,ymm avx512f +vgetexpps zmm,k,m avx512f +vgetexpps zmm,k,m knce +vgetexpps zmm,k,zmm avx512f +vgetexpps zmm,k,zmm knce +vgetexpps zmm,m avx512f +vgetexpps zmm,m knce +vgetexpps zmm,zmm avx512f +vgetexpps zmm,zmm knce +vgetexpsd xmm,k,xmm,m avx512f_scalar +vgetexpsd xmm,k,xmm,xmm avx512f_scalar +vgetexpsd xmm,xmm,m avx512f_scalar +vgetexpsd xmm,xmm,xmm avx512f_scalar +vgetexpsh xmm,k,xmm,m avx512fp16_scalar +vgetexpsh xmm,k,xmm,xmm avx512fp16_scalar +vgetexpsh xmm,xmm,m avx512fp16_scalar +vgetexpsh xmm,xmm,xmm avx512fp16_scalar +vgetexpss xmm,k,xmm,m avx512f_scalar +vgetexpss xmm,k,xmm,xmm avx512f_scalar +vgetexpss xmm,xmm,m avx512f_scalar +vgetexpss xmm,xmm,xmm avx512f_scalar +vgetmantpd xmm,k,m,imm avx512f +vgetmantpd xmm,k,xmm,imm avx512f +vgetmantpd xmm,m,imm avx512f +vgetmantpd xmm,xmm,imm avx512f +vgetmantpd ymm,k,m,imm avx512f +vgetmantpd ymm,k,ymm,imm avx512f +vgetmantpd ymm,m,imm avx512f +vgetmantpd ymm,ymm,imm avx512f +vgetmantpd zmm,k,m,imm avx512f +vgetmantpd zmm,k,m,imm knce +vgetmantpd zmm,k,zmm,imm avx512f +vgetmantpd zmm,k,zmm,imm knce +vgetmantpd zmm,m,imm avx512f +vgetmantpd zmm,m,imm knce +vgetmantpd zmm,zmm,imm avx512f +vgetmantpd zmm,zmm,imm knce +vgetmantph xmm,k,m,imm avx512fp16 +vgetmantph xmm,k,xmm,imm avx512fp16 +vgetmantph xmm,m,imm avx512fp16 +vgetmantph xmm,xmm,imm avx512fp16 +vgetmantph ymm,k,m,imm avx512fp16 +vgetmantph ymm,k,ymm,imm avx512fp16 +vgetmantph ymm,m,imm avx512fp16 +vgetmantph ymm,ymm,imm avx512fp16 +vgetmantph zmm,k,m,imm avx512fp16 +vgetmantph zmm,k,zmm,imm avx512fp16 +vgetmantph zmm,m,imm avx512fp16 +vgetmantph zmm,zmm,imm avx512fp16 +vgetmantps xmm,k,m,imm avx512f +vgetmantps xmm,k,xmm,imm avx512f +vgetmantps xmm,m,imm avx512f +vgetmantps xmm,xmm,imm avx512f +vgetmantps ymm,k,m,imm avx512f +vgetmantps ymm,k,ymm,imm avx512f +vgetmantps ymm,m,imm avx512f +vgetmantps ymm,ymm,imm avx512f +vgetmantps zmm,k,m,imm avx512f +vgetmantps zmm,k,m,imm knce +vgetmantps zmm,k,zmm,imm avx512f +vgetmantps zmm,k,zmm,imm knce +vgetmantps zmm,m,imm avx512f +vgetmantps zmm,m,imm knce +vgetmantps zmm,zmm,imm avx512f +vgetmantps zmm,zmm,imm knce +vgetmantsd xmm,k,xmm,m,imm avx512f_scalar +vgetmantsd xmm,k,xmm,xmm,imm avx512f_scalar +vgetmantsd xmm,xmm,m,imm avx512f_scalar +vgetmantsd xmm,xmm,xmm,imm avx512f_scalar +vgetmantsh xmm,k,xmm,m,imm avx512fp16_scalar +vgetmantsh xmm,k,xmm,xmm,imm avx512fp16_scalar +vgetmantsh xmm,xmm,m,imm avx512fp16_scalar +vgetmantsh xmm,xmm,xmm,imm avx512fp16_scalar +vgetmantss xmm,k,xmm,m,imm avx512f_scalar +vgetmantss xmm,k,xmm,xmm,imm avx512f_scalar +vgetmantss xmm,xmm,m,imm avx512f_scalar +vgetmantss xmm,xmm,xmm,imm avx512f_scalar +vgf2p8affineinvqb xmm,k,xmm,m,imm avx512gfni +vgf2p8affineinvqb xmm,k,xmm,xmm,imm avx512gfni +vgf2p8affineinvqb xmm,xmm,m,imm avx512gfni +vgf2p8affineinvqb xmm,xmm,m,imm avx_gfni +vgf2p8affineinvqb xmm,xmm,xmm,imm avx512gfni +vgf2p8affineinvqb xmm,xmm,xmm,imm avx_gfni +vgf2p8affineinvqb ymm,k,ymm,m,imm avx512gfni +vgf2p8affineinvqb ymm,k,ymm,ymm,imm avx512gfni +vgf2p8affineinvqb ymm,ymm,m,imm avx512gfni +vgf2p8affineinvqb ymm,ymm,m,imm avx_gfni +vgf2p8affineinvqb ymm,ymm,ymm,imm avx512gfni +vgf2p8affineinvqb ymm,ymm,ymm,imm avx_gfni +vgf2p8affineinvqb zmm,k,zmm,m,imm avx512gfni +vgf2p8affineinvqb zmm,k,zmm,zmm,imm avx512gfni +vgf2p8affineinvqb zmm,zmm,m,imm avx512gfni +vgf2p8affineinvqb zmm,zmm,zmm,imm avx512gfni +vgf2p8affineqb xmm,k,xmm,m,imm avx512gfni +vgf2p8affineqb xmm,k,xmm,xmm,imm avx512gfni +vgf2p8affineqb xmm,xmm,m,imm avx512gfni +vgf2p8affineqb xmm,xmm,m,imm avx_gfni +vgf2p8affineqb xmm,xmm,xmm,imm avx512gfni +vgf2p8affineqb xmm,xmm,xmm,imm avx_gfni +vgf2p8affineqb ymm,k,ymm,m,imm avx512gfni +vgf2p8affineqb ymm,k,ymm,ymm,imm avx512gfni +vgf2p8affineqb ymm,ymm,m,imm avx512gfni +vgf2p8affineqb ymm,ymm,m,imm avx_gfni +vgf2p8affineqb ymm,ymm,ymm,imm avx512gfni +vgf2p8affineqb ymm,ymm,ymm,imm avx_gfni +vgf2p8affineqb zmm,k,zmm,m,imm avx512gfni +vgf2p8affineqb zmm,k,zmm,zmm,imm avx512gfni +vgf2p8affineqb zmm,zmm,m,imm avx512gfni +vgf2p8affineqb zmm,zmm,zmm,imm avx512gfni +vgf2p8mulb xmm,k,xmm,m avx512gfni +vgf2p8mulb xmm,k,xmm,xmm avx512gfni +vgf2p8mulb xmm,xmm,m avx512gfni +vgf2p8mulb xmm,xmm,m avx_gfni +vgf2p8mulb xmm,xmm,xmm avx512gfni +vgf2p8mulb xmm,xmm,xmm avx_gfni +vgf2p8mulb ymm,k,ymm,m avx512gfni +vgf2p8mulb ymm,k,ymm,ymm avx512gfni +vgf2p8mulb ymm,ymm,m avx512gfni +vgf2p8mulb ymm,ymm,m avx_gfni +vgf2p8mulb ymm,ymm,ymm avx512gfni +vgf2p8mulb ymm,ymm,ymm avx_gfni +vgf2p8mulb zmm,k,zmm,m avx512gfni +vgf2p8mulb zmm,k,zmm,zmm avx512gfni +vgf2p8mulb zmm,zmm,m avx512gfni +vgf2p8mulb zmm,zmm,zmm avx512gfni +vgmaxabsps zmm,k,zmm,m knce +vgmaxabsps zmm,k,zmm,zmm knce +vgmaxabsps zmm,zmm,m knce +vgmaxabsps zmm,zmm,zmm knce +vgmaxpd zmm,k,zmm,m knce +vgmaxpd zmm,k,zmm,zmm knce +vgmaxpd zmm,zmm,m knce +vgmaxpd zmm,zmm,zmm knce +vgmaxps zmm,k,zmm,m knce +vgmaxps zmm,k,zmm,zmm knce +vgmaxps zmm,zmm,m knce +vgmaxps zmm,zmm,zmm knce +vgminpd zmm,k,zmm,m knce +vgminpd zmm,k,zmm,zmm knce +vgminpd zmm,zmm,m knce +vgminpd zmm,zmm,zmm knce +vgminps zmm,k,zmm,m knce +vgminps zmm,k,zmm,zmm knce +vgminps zmm,zmm,m knce +vgminps zmm,zmm,zmm knce +vhaddpd xmm,xmm,m avx +vhaddpd xmm,xmm,xmm avx +vhaddpd ymm,ymm,m avx +vhaddpd ymm,ymm,ymm avx +vhaddps xmm,xmm,m avx +vhaddps xmm,xmm,xmm avx +vhaddps ymm,ymm,m avx +vhaddps ymm,ymm,ymm avx +vhsubpd xmm,xmm,m avx +vhsubpd xmm,xmm,xmm avx +vhsubpd ymm,ymm,m avx +vhsubpd ymm,ymm,ymm avx +vhsubps xmm,xmm,m avx +vhsubps xmm,xmm,xmm avx +vhsubps ymm,ymm,m avx +vhsubps ymm,ymm,ymm avx +vinsertf128 ymm,ymm,m,imm avx +vinsertf128 ymm,ymm,xmm,imm avx +vinsertf32x4 ymm,k,ymm,m,imm avx512f +vinsertf32x4 ymm,k,ymm,xmm,imm avx512f +vinsertf32x4 ymm,ymm,m,imm avx512f +vinsertf32x4 ymm,ymm,xmm,imm avx512f +vinsertf32x4 zmm,k,zmm,m,imm avx512f +vinsertf32x4 zmm,k,zmm,xmm,imm avx512f +vinsertf32x4 zmm,zmm,m,imm avx512f +vinsertf32x4 zmm,zmm,xmm,imm avx512f +vinsertf32x8 zmm,k,zmm,m,imm avx512dq +vinsertf32x8 zmm,k,zmm,ymm,imm avx512dq +vinsertf32x8 zmm,zmm,m,imm avx512dq +vinsertf32x8 zmm,zmm,ymm,imm avx512dq +vinsertf64x2 ymm,k,ymm,m,imm avx512dq +vinsertf64x2 ymm,k,ymm,xmm,imm avx512dq +vinsertf64x2 ymm,ymm,m,imm avx512dq +vinsertf64x2 ymm,ymm,xmm,imm avx512dq +vinsertf64x2 zmm,k,zmm,m,imm avx512dq +vinsertf64x2 zmm,k,zmm,xmm,imm avx512dq +vinsertf64x2 zmm,zmm,m,imm avx512dq +vinsertf64x2 zmm,zmm,xmm,imm avx512dq +vinsertf64x4 zmm,k,zmm,m,imm avx512f +vinsertf64x4 zmm,k,zmm,ymm,imm avx512f +vinsertf64x4 zmm,zmm,m,imm avx512f +vinsertf64x4 zmm,zmm,ymm,imm avx512f +vinserti128 ymm,ymm,m,imm avx2 +vinserti128 ymm,ymm,xmm,imm avx2 +vinserti32x4 ymm,k,ymm,m,imm avx512f +vinserti32x4 ymm,k,ymm,xmm,imm avx512f +vinserti32x4 ymm,ymm,m,imm avx512f +vinserti32x4 ymm,ymm,xmm,imm avx512f +vinserti32x4 zmm,k,zmm,m,imm avx512f +vinserti32x4 zmm,k,zmm,xmm,imm avx512f +vinserti32x4 zmm,zmm,m,imm avx512f +vinserti32x4 zmm,zmm,xmm,imm avx512f +vinserti32x8 zmm,k,zmm,m,imm avx512dq +vinserti32x8 zmm,k,zmm,ymm,imm avx512dq +vinserti32x8 zmm,zmm,m,imm avx512dq +vinserti32x8 zmm,zmm,ymm,imm avx512dq +vinserti64x2 ymm,k,ymm,m,imm avx512dq +vinserti64x2 ymm,k,ymm,xmm,imm avx512dq +vinserti64x2 ymm,ymm,m,imm avx512dq +vinserti64x2 ymm,ymm,xmm,imm avx512dq +vinserti64x2 zmm,k,zmm,m,imm avx512dq +vinserti64x2 zmm,k,zmm,xmm,imm avx512dq +vinserti64x2 zmm,zmm,m,imm avx512dq +vinserti64x2 zmm,zmm,xmm,imm avx512dq +vinserti64x4 zmm,k,zmm,m,imm avx512f +vinserti64x4 zmm,k,zmm,ymm,imm avx512f +vinserti64x4 zmm,zmm,m,imm avx512f +vinserti64x4 zmm,zmm,ymm,imm avx512f +vinsertps xmm,xmm,m,imm avx +vinsertps xmm,xmm,m,imm avx512f +vinsertps xmm,xmm,xmm,imm avx +vinsertps xmm,xmm,xmm,imm avx512f +vlddqu xmm,m avx +vlddqu ymm,m avx +vldmxcsr m avx +vloadunpackhd zmm,k,m knce +vloadunpackhd zmm,m knce +vloadunpackhpd zmm,k,m knce +vloadunpackhpd zmm,m knce +vloadunpackhps zmm,k,m knce +vloadunpackhps zmm,m knce +vloadunpackhq zmm,k,m knce +vloadunpackhq zmm,m knce +vloadunpackld zmm,k,m knce +vloadunpackld zmm,m knce +vloadunpacklpd zmm,k,m knce +vloadunpacklpd zmm,m knce +vloadunpacklps zmm,k,m knce +vloadunpacklps zmm,m knce +vloadunpacklq zmm,k,m knce +vloadunpacklq zmm,m knce +vlog2ps zmm,k,m knce +vlog2ps zmm,k,zmm knce +vlog2ps zmm,m knce +vlog2ps zmm,zmm knce +vmaskmovdqu xmm,xmm avx +vmaskmovpd m,xmm,xmm avx +vmaskmovpd m,ymm,ymm avx +vmaskmovpd xmm,xmm,m avx +vmaskmovpd ymm,ymm,m avx +vmaskmovps m,xmm,xmm avx +vmaskmovps m,ymm,ymm avx +vmaskmovps xmm,xmm,m avx +vmaskmovps ymm,ymm,m avx +vmaxpd xmm,k,xmm,m avx512f +vmaxpd xmm,k,xmm,xmm avx512f +vmaxpd xmm,xmm,m avx +vmaxpd xmm,xmm,m avx512f +vmaxpd xmm,xmm,xmm avx +vmaxpd xmm,xmm,xmm avx512f +vmaxpd ymm,k,ymm,m avx512f +vmaxpd ymm,k,ymm,ymm avx512f +vmaxpd ymm,ymm,m avx +vmaxpd ymm,ymm,m avx512f +vmaxpd ymm,ymm,ymm avx +vmaxpd ymm,ymm,ymm avx512f +vmaxpd zmm,k,zmm,m avx512f +vmaxpd zmm,k,zmm,zmm avx512f +vmaxpd zmm,zmm,m avx512f +vmaxpd zmm,zmm,zmm avx512f +vmaxph xmm,k,xmm,m avx512fp16 +vmaxph xmm,k,xmm,xmm avx512fp16 +vmaxph xmm,xmm,m avx512fp16 +vmaxph xmm,xmm,xmm avx512fp16 +vmaxph ymm,k,ymm,m avx512fp16 +vmaxph ymm,k,ymm,ymm avx512fp16 +vmaxph ymm,ymm,m avx512fp16 +vmaxph ymm,ymm,ymm avx512fp16 +vmaxph zmm,k,zmm,m avx512fp16 +vmaxph zmm,k,zmm,zmm avx512fp16 +vmaxph zmm,zmm,m avx512fp16 +vmaxph zmm,zmm,zmm avx512fp16 +vmaxps xmm,k,xmm,m avx512f +vmaxps xmm,k,xmm,xmm avx512f +vmaxps xmm,xmm,m avx +vmaxps xmm,xmm,m avx512f +vmaxps xmm,xmm,xmm avx +vmaxps xmm,xmm,xmm avx512f +vmaxps ymm,k,ymm,m avx512f +vmaxps ymm,k,ymm,ymm avx512f +vmaxps ymm,ymm,m avx +vmaxps ymm,ymm,m avx512f +vmaxps ymm,ymm,ymm avx +vmaxps ymm,ymm,ymm avx512f +vmaxps zmm,k,zmm,m avx512f +vmaxps zmm,k,zmm,zmm avx512f +vmaxps zmm,zmm,m avx512f +vmaxps zmm,zmm,zmm avx512f +vmaxsd xmm,k,xmm,m avx512f_scalar +vmaxsd xmm,k,xmm,xmm avx512f_scalar +vmaxsd xmm,xmm,m avx +vmaxsd xmm,xmm,m avx512f_scalar +vmaxsd xmm,xmm,xmm avx +vmaxsd xmm,xmm,xmm avx512f_scalar +vmaxsh xmm,k,xmm,m avx512fp16_scalar +vmaxsh xmm,k,xmm,xmm avx512fp16_scalar +vmaxsh xmm,xmm,m avx512fp16_scalar +vmaxsh xmm,xmm,xmm avx512fp16_scalar +vmaxss xmm,k,xmm,m avx512f_scalar +vmaxss xmm,k,xmm,xmm avx512f_scalar +vmaxss xmm,xmm,m avx +vmaxss xmm,xmm,m avx512f_scalar +vmaxss xmm,xmm,xmm avx +vmaxss xmm,xmm,xmm avx512f_scalar +vmcall - vtx +vmclear m vtx +vmfunc - vmfunc +vminpd xmm,k,xmm,m avx512f +vminpd xmm,k,xmm,xmm avx512f +vminpd xmm,xmm,m avx +vminpd xmm,xmm,m avx512f +vminpd xmm,xmm,xmm avx +vminpd xmm,xmm,xmm avx512f +vminpd ymm,k,ymm,m avx512f +vminpd ymm,k,ymm,ymm avx512f +vminpd ymm,ymm,m avx +vminpd ymm,ymm,m avx512f +vminpd ymm,ymm,ymm avx +vminpd ymm,ymm,ymm avx512f +vminpd zmm,k,zmm,m avx512f +vminpd zmm,k,zmm,zmm avx512f +vminpd zmm,zmm,m avx512f +vminpd zmm,zmm,zmm avx512f +vminph xmm,k,xmm,m avx512fp16 +vminph xmm,k,xmm,xmm avx512fp16 +vminph xmm,xmm,m avx512fp16 +vminph xmm,xmm,xmm avx512fp16 +vminph ymm,k,ymm,m avx512fp16 +vminph ymm,k,ymm,ymm avx512fp16 +vminph ymm,ymm,m avx512fp16 +vminph ymm,ymm,ymm avx512fp16 +vminph zmm,k,zmm,m avx512fp16 +vminph zmm,k,zmm,zmm avx512fp16 +vminph zmm,zmm,m avx512fp16 +vminph zmm,zmm,zmm avx512fp16 +vminps xmm,k,xmm,m avx512f +vminps xmm,k,xmm,xmm avx512f +vminps xmm,xmm,m avx +vminps xmm,xmm,m avx512f +vminps xmm,xmm,xmm avx +vminps xmm,xmm,xmm avx512f +vminps ymm,k,ymm,m avx512f +vminps ymm,k,ymm,ymm avx512f +vminps ymm,ymm,m avx +vminps ymm,ymm,m avx512f +vminps ymm,ymm,ymm avx +vminps ymm,ymm,ymm avx512f +vminps zmm,k,zmm,m avx512f +vminps zmm,k,zmm,zmm avx512f +vminps zmm,zmm,m avx512f +vminps zmm,zmm,zmm avx512f +vminsd xmm,k,xmm,m avx512f_scalar +vminsd xmm,k,xmm,xmm avx512f_scalar +vminsd xmm,xmm,m avx +vminsd xmm,xmm,m avx512f_scalar +vminsd xmm,xmm,xmm avx +vminsd xmm,xmm,xmm avx512f_scalar +vminsh xmm,k,xmm,m avx512fp16_scalar +vminsh xmm,k,xmm,xmm avx512fp16_scalar +vminsh xmm,xmm,m avx512fp16_scalar +vminsh xmm,xmm,xmm avx512fp16_scalar +vminss xmm,k,xmm,m avx512f_scalar +vminss xmm,k,xmm,xmm avx512f_scalar +vminss xmm,xmm,m avx +vminss xmm,xmm,m avx512f_scalar +vminss xmm,xmm,xmm avx +vminss xmm,xmm,xmm avx512f_scalar +vmlaunch - vtx +vmload r svm +vmmcall - svm +vmovapd m,k,xmm avx512f +vmovapd m,k,ymm avx512f +vmovapd m,k,zmm avx512f +vmovapd m,k,zmm knce +vmovapd m,xmm avx +vmovapd m,xmm avx512f +vmovapd m,ymm avx +vmovapd m,ymm avx512f +vmovapd m,zmm avx512f +vmovapd m,zmm knce +vmovapd xmm,k,m avx512f +vmovapd xmm,k,xmm avx512f +vmovapd xmm,m avx +vmovapd xmm,m avx512f +vmovapd xmm,xmm avx +vmovapd xmm,xmm avx512f +vmovapd ymm,k,m avx512f +vmovapd ymm,k,ymm avx512f +vmovapd ymm,m avx +vmovapd ymm,m avx512f +vmovapd ymm,ymm avx +vmovapd ymm,ymm avx512f +vmovapd zmm,k,m avx512f +vmovapd zmm,k,m knce +vmovapd zmm,k,zmm avx512f +vmovapd zmm,k,zmm knce +vmovapd zmm,m avx512f +vmovapd zmm,m knce +vmovapd zmm,zmm avx512f +vmovapd zmm,zmm knce +vmovaps m,k,xmm avx512f +vmovaps m,k,ymm avx512f +vmovaps m,k,zmm avx512f +vmovaps m,k,zmm knce +vmovaps m,xmm avx +vmovaps m,xmm avx512f +vmovaps m,ymm avx +vmovaps m,ymm avx512f +vmovaps m,zmm avx512f +vmovaps m,zmm knce +vmovaps xmm,k,m avx512f +vmovaps xmm,k,xmm avx512f +vmovaps xmm,m avx +vmovaps xmm,m avx512f +vmovaps xmm,xmm avx +vmovaps xmm,xmm avx512f +vmovaps ymm,k,m avx512f +vmovaps ymm,k,ymm avx512f +vmovaps ymm,m avx +vmovaps ymm,m avx512f +vmovaps ymm,ymm avx +vmovaps ymm,ymm avx512f +vmovaps zmm,k,m avx512f +vmovaps zmm,k,m knce +vmovaps zmm,k,zmm avx512f +vmovaps zmm,k,zmm knce +vmovaps zmm,m avx512f +vmovaps zmm,m knce +vmovaps zmm,zmm avx512f +vmovaps zmm,zmm knce +vmovd m,xmm avx +vmovd m,xmm avx512f +vmovd r32,xmm avx +vmovd r32,xmm avx512f +vmovd xmm,m avx +vmovd xmm,m avx512f +vmovd xmm,r32 avx +vmovd xmm,r32 avx512f +vmovddup xmm,k,m avx512f +vmovddup xmm,k,xmm avx512f +vmovddup xmm,m avx +vmovddup xmm,m avx512f +vmovddup xmm,xmm avx +vmovddup xmm,xmm avx512f +vmovddup ymm,k,m avx512f +vmovddup ymm,k,ymm avx512f +vmovddup ymm,m avx +vmovddup ymm,m avx512f +vmovddup ymm,ymm avx +vmovddup ymm,ymm avx512f +vmovddup zmm,k,m avx512f +vmovddup zmm,k,zmm avx512f +vmovddup zmm,m avx512f +vmovddup zmm,zmm avx512f +vmovdqa m,xmm avx +vmovdqa m,ymm avx +vmovdqa xmm,m avx +vmovdqa xmm,xmm avx +vmovdqa ymm,m avx +vmovdqa ymm,ymm avx +vmovdqa32 m,k,xmm avx512f +vmovdqa32 m,k,ymm avx512f +vmovdqa32 m,k,zmm avx512f +vmovdqa32 m,k,zmm knce +vmovdqa32 m,xmm avx512f +vmovdqa32 m,ymm avx512f +vmovdqa32 m,zmm avx512f +vmovdqa32 m,zmm knce +vmovdqa32 xmm,k,m avx512f +vmovdqa32 xmm,k,xmm avx512f +vmovdqa32 xmm,m avx512f +vmovdqa32 xmm,xmm avx512f +vmovdqa32 ymm,k,m avx512f +vmovdqa32 ymm,k,ymm avx512f +vmovdqa32 ymm,m avx512f +vmovdqa32 ymm,ymm avx512f +vmovdqa32 zmm,k,m avx512f +vmovdqa32 zmm,k,m knce +vmovdqa32 zmm,k,zmm avx512f +vmovdqa32 zmm,k,zmm knce +vmovdqa32 zmm,m avx512f +vmovdqa32 zmm,m knce +vmovdqa32 zmm,zmm avx512f +vmovdqa32 zmm,zmm knce +vmovdqa64 m,k,xmm avx512f +vmovdqa64 m,k,ymm avx512f +vmovdqa64 m,k,zmm avx512f +vmovdqa64 m,k,zmm knce +vmovdqa64 m,xmm avx512f +vmovdqa64 m,ymm avx512f +vmovdqa64 m,zmm avx512f +vmovdqa64 m,zmm knce +vmovdqa64 xmm,k,m avx512f +vmovdqa64 xmm,k,xmm avx512f +vmovdqa64 xmm,m avx512f +vmovdqa64 xmm,xmm avx512f +vmovdqa64 ymm,k,m avx512f +vmovdqa64 ymm,k,ymm avx512f +vmovdqa64 ymm,m avx512f +vmovdqa64 ymm,ymm avx512f +vmovdqa64 zmm,k,m avx512f +vmovdqa64 zmm,k,m knce +vmovdqa64 zmm,k,zmm avx512f +vmovdqa64 zmm,k,zmm knce +vmovdqa64 zmm,m avx512f +vmovdqa64 zmm,m knce +vmovdqa64 zmm,zmm avx512f +vmovdqa64 zmm,zmm knce +vmovdqu m,xmm avx +vmovdqu m,ymm avx +vmovdqu xmm,m avx +vmovdqu xmm,xmm avx +vmovdqu ymm,m avx +vmovdqu ymm,ymm avx +vmovdqu16 m,k,xmm avx512bw +vmovdqu16 m,k,ymm avx512bw +vmovdqu16 m,k,zmm avx512bw +vmovdqu16 m,xmm avx512bw +vmovdqu16 m,ymm avx512bw +vmovdqu16 m,zmm avx512bw +vmovdqu16 xmm,k,m avx512bw +vmovdqu16 xmm,k,xmm avx512bw +vmovdqu16 xmm,m avx512bw +vmovdqu16 xmm,xmm avx512bw +vmovdqu16 ymm,k,m avx512bw +vmovdqu16 ymm,k,ymm avx512bw +vmovdqu16 ymm,m avx512bw +vmovdqu16 ymm,ymm avx512bw +vmovdqu16 zmm,k,m avx512bw +vmovdqu16 zmm,k,zmm avx512bw +vmovdqu16 zmm,m avx512bw +vmovdqu16 zmm,zmm avx512bw +vmovdqu32 m,k,xmm avx512f +vmovdqu32 m,k,ymm avx512f +vmovdqu32 m,k,zmm avx512f +vmovdqu32 m,xmm avx512f +vmovdqu32 m,ymm avx512f +vmovdqu32 m,zmm avx512f +vmovdqu32 xmm,k,m avx512f +vmovdqu32 xmm,k,xmm avx512f +vmovdqu32 xmm,m avx512f +vmovdqu32 xmm,xmm avx512f +vmovdqu32 ymm,k,m avx512f +vmovdqu32 ymm,k,ymm avx512f +vmovdqu32 ymm,m avx512f +vmovdqu32 ymm,ymm avx512f +vmovdqu32 zmm,k,m avx512f +vmovdqu32 zmm,k,zmm avx512f +vmovdqu32 zmm,m avx512f +vmovdqu32 zmm,zmm avx512f +vmovdqu64 m,k,xmm avx512f +vmovdqu64 m,k,ymm avx512f +vmovdqu64 m,k,zmm avx512f +vmovdqu64 m,xmm avx512f +vmovdqu64 m,ymm avx512f +vmovdqu64 m,zmm avx512f +vmovdqu64 xmm,k,m avx512f +vmovdqu64 xmm,k,xmm avx512f +vmovdqu64 xmm,m avx512f +vmovdqu64 xmm,xmm avx512f +vmovdqu64 ymm,k,m avx512f +vmovdqu64 ymm,k,ymm avx512f +vmovdqu64 ymm,m avx512f +vmovdqu64 ymm,ymm avx512f +vmovdqu64 zmm,k,m avx512f +vmovdqu64 zmm,k,zmm avx512f +vmovdqu64 zmm,m avx512f +vmovdqu64 zmm,zmm avx512f +vmovdqu8 m,k,xmm avx512bw +vmovdqu8 m,k,ymm avx512bw +vmovdqu8 m,k,zmm avx512bw +vmovdqu8 m,xmm avx512bw +vmovdqu8 m,ymm avx512bw +vmovdqu8 m,zmm avx512bw +vmovdqu8 xmm,k,m avx512bw +vmovdqu8 xmm,k,xmm avx512bw +vmovdqu8 xmm,m avx512bw +vmovdqu8 xmm,xmm avx512bw +vmovdqu8 ymm,k,m avx512bw +vmovdqu8 ymm,k,ymm avx512bw +vmovdqu8 ymm,m avx512bw +vmovdqu8 ymm,ymm avx512bw +vmovdqu8 zmm,k,m avx512bw +vmovdqu8 zmm,k,zmm avx512bw +vmovdqu8 zmm,m avx512bw +vmovdqu8 zmm,zmm avx512bw +vmovhlps xmm,xmm,xmm avx +vmovhlps xmm,xmm,xmm avx512f +vmovhpd m,xmm avx +vmovhpd m,xmm avx512f +vmovhpd xmm,xmm,m avx +vmovhpd xmm,xmm,m avx512f +vmovhps m,xmm avx +vmovhps m,xmm avx512f +vmovhps xmm,xmm,m avx +vmovhps xmm,xmm,m avx512f +vmovlhps xmm,xmm,xmm avx +vmovlhps xmm,xmm,xmm avx512f +vmovlpd m,xmm avx +vmovlpd m,xmm avx512f +vmovlpd xmm,xmm,m avx +vmovlpd xmm,xmm,m avx512f +vmovlps m,xmm avx +vmovlps m,xmm avx512f +vmovlps xmm,xmm,m avx +vmovlps xmm,xmm,m avx512f +vmovmskpd r32,xmm avx +vmovmskpd r32,ymm avx +vmovmskps r32,xmm avx +vmovmskps r32,ymm avx +vmovnrapd m,k,zmm kncstream +vmovnrapd m,zmm kncstream +vmovnraps m,k,zmm kncstream +vmovnraps m,zmm kncstream +vmovnrngoapd m,k,zmm kncstream +vmovnrngoapd m,zmm kncstream +vmovnrngoaps m,k,zmm kncstream +vmovnrngoaps m,zmm kncstream +vmovntdq m,xmm avx +vmovntdq m,xmm avx512f +vmovntdq m,ymm avx +vmovntdq m,ymm avx512f +vmovntdq m,zmm avx512f +vmovntdqa xmm,m avx +vmovntdqa xmm,m avx512f +vmovntdqa ymm,m avx2 +vmovntdqa ymm,m avx512f +vmovntdqa zmm,m avx512f +vmovntpd m,xmm avx +vmovntpd m,xmm avx512f +vmovntpd m,ymm avx +vmovntpd m,ymm avx512f +vmovntpd m,zmm avx512f +vmovntps m,xmm avx +vmovntps m,xmm avx512f +vmovntps m,ymm avx +vmovntps m,ymm avx512f +vmovntps m,zmm avx512f +vmovq m,xmm avx +vmovq m,xmm avx512f +vmovq r64,xmm avx +vmovq r64,xmm avx512f +vmovq xmm,m avx +vmovq xmm,m avx512f +vmovq xmm,r64 avx +vmovq xmm,r64 avx512f +vmovq xmm,xmm avx +vmovq xmm,xmm avx512f +vmovsd m,k,xmm avx512f_scalar +vmovsd m,xmm avx +vmovsd m,xmm avx512f_scalar +vmovsd xmm,k,m avx512f_scalar +vmovsd xmm,k,xmm,xmm avx512f_scalar +vmovsd xmm,m avx +vmovsd xmm,m avx512f_scalar +vmovsd xmm,xmm,xmm avx +vmovsd xmm,xmm,xmm avx512f_scalar +vmovsh m,k,xmm avx512fp16_scalar +vmovsh m,xmm avx512fp16_scalar +vmovsh xmm,k,m avx512fp16_scalar +vmovsh xmm,k,xmm,xmm avx512fp16_scalar +vmovsh xmm,m avx512fp16_scalar +vmovsh xmm,xmm,xmm avx512fp16_scalar +vmovshdup xmm,k,m avx512f +vmovshdup xmm,k,xmm avx512f +vmovshdup xmm,m avx +vmovshdup xmm,m avx512f +vmovshdup xmm,xmm avx +vmovshdup xmm,xmm avx512f +vmovshdup ymm,k,m avx512f +vmovshdup ymm,k,ymm avx512f +vmovshdup ymm,m avx +vmovshdup ymm,m avx512f +vmovshdup ymm,ymm avx +vmovshdup ymm,ymm avx512f +vmovshdup zmm,k,m avx512f +vmovshdup zmm,k,zmm avx512f +vmovshdup zmm,m avx512f +vmovshdup zmm,zmm avx512f +vmovsldup xmm,k,m avx512f +vmovsldup xmm,k,xmm avx512f +vmovsldup xmm,m avx +vmovsldup xmm,m avx512f +vmovsldup xmm,xmm avx +vmovsldup xmm,xmm avx512f +vmovsldup ymm,k,m avx512f +vmovsldup ymm,k,ymm avx512f +vmovsldup ymm,m avx +vmovsldup ymm,m avx512f +vmovsldup ymm,ymm avx +vmovsldup ymm,ymm avx512f +vmovsldup zmm,k,m avx512f +vmovsldup zmm,k,zmm avx512f +vmovsldup zmm,m avx512f +vmovsldup zmm,zmm avx512f +vmovss m,k,xmm avx512f_scalar +vmovss m,xmm avx +vmovss m,xmm avx512f_scalar +vmovss xmm,k,m avx512f_scalar +vmovss xmm,k,xmm,xmm avx512f_scalar +vmovss xmm,m avx +vmovss xmm,m avx512f_scalar +vmovss xmm,xmm,xmm avx +vmovss xmm,xmm,xmm avx512f_scalar +vmovupd m,k,xmm avx512f +vmovupd m,k,ymm avx512f +vmovupd m,k,zmm avx512f +vmovupd m,xmm avx +vmovupd m,xmm avx512f +vmovupd m,ymm avx +vmovupd m,ymm avx512f +vmovupd m,zmm avx512f +vmovupd xmm,k,m avx512f +vmovupd xmm,k,xmm avx512f +vmovupd xmm,m avx +vmovupd xmm,m avx512f +vmovupd xmm,xmm avx +vmovupd xmm,xmm avx512f +vmovupd ymm,k,m avx512f +vmovupd ymm,k,ymm avx512f +vmovupd ymm,m avx +vmovupd ymm,m avx512f +vmovupd ymm,ymm avx +vmovupd ymm,ymm avx512f +vmovupd zmm,k,m avx512f +vmovupd zmm,k,zmm avx512f +vmovupd zmm,m avx512f +vmovupd zmm,zmm avx512f +vmovups m,k,xmm avx512f +vmovups m,k,ymm avx512f +vmovups m,k,zmm avx512f +vmovups m,xmm avx +vmovups m,xmm avx512f +vmovups m,ymm avx +vmovups m,ymm avx512f +vmovups m,zmm avx512f +vmovups xmm,k,m avx512f +vmovups xmm,k,xmm avx512f +vmovups xmm,m avx +vmovups xmm,m avx512f +vmovups xmm,xmm avx +vmovups xmm,xmm avx512f +vmovups ymm,k,m avx512f +vmovups ymm,k,ymm avx512f +vmovups ymm,m avx +vmovups ymm,m avx512f +vmovups ymm,ymm avx +vmovups ymm,ymm avx512f +vmovups zmm,k,m avx512f +vmovups zmm,k,zmm avx512f +vmovups zmm,m avx512f +vmovups zmm,zmm avx512f +vmovw m,xmm avx512fp16 +vmovw r32,xmm avx512fp16 +vmovw xmm,m avx512fp16 +vmovw xmm,r32 avx512fp16 +vmpsadbw xmm,xmm,m,imm avx +vmpsadbw xmm,xmm,xmm,imm avx +vmpsadbw ymm,ymm,m,imm avx2 +vmpsadbw ymm,ymm,ymm,imm avx2 +vmptrld m vtx +vmptrst m vtx +vmread m,r32 vtx +vmread m,r64 vtx +vmread r32,r32 vtx +vmread r64,r64 vtx +vmresume - vtx +vmrun r svm +vmsave - svm +vmulpd xmm,k,xmm,m avx512f +vmulpd xmm,k,xmm,xmm avx512f +vmulpd xmm,xmm,m avx +vmulpd xmm,xmm,m avx512f +vmulpd xmm,xmm,xmm avx +vmulpd xmm,xmm,xmm avx512f +vmulpd ymm,k,ymm,m avx512f +vmulpd ymm,k,ymm,ymm avx512f +vmulpd ymm,ymm,m avx +vmulpd ymm,ymm,m avx512f +vmulpd ymm,ymm,ymm avx +vmulpd ymm,ymm,ymm avx512f +vmulpd zmm,k,zmm,m avx512f +vmulpd zmm,k,zmm,m knce +vmulpd zmm,k,zmm,zmm avx512f +vmulpd zmm,k,zmm,zmm knce +vmulpd zmm,zmm,m avx512f +vmulpd zmm,zmm,m knce +vmulpd zmm,zmm,zmm avx512f +vmulpd zmm,zmm,zmm knce +vmulph xmm,k,xmm,m avx512fp16 +vmulph xmm,k,xmm,xmm avx512fp16 +vmulph xmm,xmm,m avx512fp16 +vmulph xmm,xmm,xmm avx512fp16 +vmulph ymm,k,ymm,m avx512fp16 +vmulph ymm,k,ymm,ymm avx512fp16 +vmulph ymm,ymm,m avx512fp16 +vmulph ymm,ymm,ymm avx512fp16 +vmulph zmm,k,zmm,m avx512fp16 +vmulph zmm,k,zmm,zmm avx512fp16 +vmulph zmm,zmm,m avx512fp16 +vmulph zmm,zmm,zmm avx512fp16 +vmulps xmm,k,xmm,m avx512f +vmulps xmm,k,xmm,xmm avx512f +vmulps xmm,xmm,m avx +vmulps xmm,xmm,m avx512f +vmulps xmm,xmm,xmm avx +vmulps xmm,xmm,xmm avx512f +vmulps ymm,k,ymm,m avx512f +vmulps ymm,k,ymm,ymm avx512f +vmulps ymm,ymm,m avx +vmulps ymm,ymm,m avx512f +vmulps ymm,ymm,ymm avx +vmulps ymm,ymm,ymm avx512f +vmulps zmm,k,zmm,m avx512f +vmulps zmm,k,zmm,m knce +vmulps zmm,k,zmm,zmm avx512f +vmulps zmm,k,zmm,zmm knce +vmulps zmm,zmm,m avx512f +vmulps zmm,zmm,m knce +vmulps zmm,zmm,zmm avx512f +vmulps zmm,zmm,zmm knce +vmulsd xmm,k,xmm,m avx512f_scalar +vmulsd xmm,k,xmm,xmm avx512f_scalar +vmulsd xmm,xmm,m avx +vmulsd xmm,xmm,m avx512f_scalar +vmulsd xmm,xmm,xmm avx +vmulsd xmm,xmm,xmm avx512f_scalar +vmulsh xmm,k,xmm,m avx512fp16_scalar +vmulsh xmm,k,xmm,xmm avx512fp16_scalar +vmulsh xmm,xmm,m avx512fp16_scalar +vmulsh xmm,xmm,xmm avx512fp16_scalar +vmulss xmm,k,xmm,m avx512f_scalar +vmulss xmm,k,xmm,xmm avx512f_scalar +vmulss xmm,xmm,m avx +vmulss xmm,xmm,m avx512f_scalar +vmulss xmm,xmm,xmm avx +vmulss xmm,xmm,xmm avx512f_scalar +vmwrite r32,m vtx +vmwrite r32,r32 vtx +vmwrite r64,m vtx +vmwrite r64,r64 vtx +vmxoff - vtx +vmxon m vtx +vorpd xmm,k,xmm,m avx512dq +vorpd xmm,k,xmm,xmm avx512dq +vorpd xmm,xmm,m avx +vorpd xmm,xmm,m avx512dq +vorpd xmm,xmm,xmm avx +vorpd xmm,xmm,xmm avx512dq +vorpd ymm,k,ymm,m avx512dq +vorpd ymm,k,ymm,ymm avx512dq +vorpd ymm,ymm,m avx +vorpd ymm,ymm,m avx512dq +vorpd ymm,ymm,ymm avx +vorpd ymm,ymm,ymm avx512dq +vorpd zmm,k,zmm,m avx512dq +vorpd zmm,k,zmm,zmm avx512dq +vorpd zmm,zmm,m avx512dq +vorpd zmm,zmm,zmm avx512dq +vorps xmm,k,xmm,m avx512dq +vorps xmm,k,xmm,xmm avx512dq +vorps xmm,xmm,m avx +vorps xmm,xmm,m avx512dq +vorps xmm,xmm,xmm avx +vorps xmm,xmm,xmm avx512dq +vorps ymm,k,ymm,m avx512dq +vorps ymm,k,ymm,ymm avx512dq +vorps ymm,ymm,m avx +vorps ymm,ymm,m avx512dq +vorps ymm,ymm,ymm avx +vorps ymm,ymm,ymm avx512dq +vorps zmm,k,zmm,m avx512dq +vorps zmm,k,zmm,zmm avx512dq +vorps zmm,zmm,m avx512dq +vorps zmm,zmm,zmm avx512dq +vp2intersectd k,xmm,m avx512vp2intersect +vp2intersectd k,xmm,xmm avx512vp2intersect +vp2intersectd k,ymm,m avx512vp2intersect +vp2intersectd k,ymm,ymm avx512vp2intersect +vp2intersectd k,zmm,m avx512vp2intersect +vp2intersectd k,zmm,zmm avx512vp2intersect +vp2intersectd xmm,m avx512vp2intersect +vp2intersectd xmm,xmm avx512vp2intersect +vp2intersectd ymm,m avx512vp2intersect +vp2intersectd ymm,ymm avx512vp2intersect +vp2intersectd zmm,m avx512vp2intersect +vp2intersectd zmm,zmm avx512vp2intersect +vp2intersectq k,xmm,m avx512vp2intersect +vp2intersectq k,xmm,xmm avx512vp2intersect +vp2intersectq k,ymm,m avx512vp2intersect +vp2intersectq k,ymm,ymm avx512vp2intersect +vp2intersectq k,zmm,m avx512vp2intersect +vp2intersectq k,zmm,zmm avx512vp2intersect +vp2intersectq xmm,m avx512vp2intersect +vp2intersectq xmm,xmm avx512vp2intersect +vp2intersectq ymm,m avx512vp2intersect +vp2intersectq ymm,ymm avx512vp2intersect +vp2intersectq zmm,m avx512vp2intersect +vp2intersectq zmm,zmm avx512vp2intersect +vp4dpwssd zmm,k,zmm,m avx5124vnniw +vp4dpwssd zmm,zmm,m avx5124vnniw +vp4dpwssds zmm,k,zmm,m avx5124vnniw +vp4dpwssds zmm,zmm,m avx5124vnniw +vpabsb xmm,k,m avx512bw +vpabsb xmm,k,xmm avx512bw +vpabsb xmm,m avx +vpabsb xmm,m avx512bw +vpabsb xmm,xmm avx +vpabsb xmm,xmm avx512bw +vpabsb ymm,k,m avx512bw +vpabsb ymm,k,ymm avx512bw +vpabsb ymm,m avx2 +vpabsb ymm,m avx512bw +vpabsb ymm,ymm avx2 +vpabsb ymm,ymm avx512bw +vpabsb zmm,k,m avx512bw +vpabsb zmm,k,zmm avx512bw +vpabsb zmm,m avx512bw +vpabsb zmm,zmm avx512bw +vpabsd xmm,k,m avx512f +vpabsd xmm,k,xmm avx512f +vpabsd xmm,m avx +vpabsd xmm,m avx512f +vpabsd xmm,xmm avx +vpabsd xmm,xmm avx512f +vpabsd ymm,k,m avx512f +vpabsd ymm,k,ymm avx512f +vpabsd ymm,m avx2 +vpabsd ymm,m avx512f +vpabsd ymm,ymm avx2 +vpabsd ymm,ymm avx512f +vpabsd zmm,k,m avx512f +vpabsd zmm,k,zmm avx512f +vpabsd zmm,m avx512f +vpabsd zmm,zmm avx512f +vpabsq xmm,k,m avx512f +vpabsq xmm,k,xmm avx512f +vpabsq xmm,m avx512f +vpabsq xmm,xmm avx512f +vpabsq ymm,k,m avx512f +vpabsq ymm,k,ymm avx512f +vpabsq ymm,m avx512f +vpabsq ymm,ymm avx512f +vpabsq zmm,k,m avx512f +vpabsq zmm,k,zmm avx512f +vpabsq zmm,m avx512f +vpabsq zmm,zmm avx512f +vpabsw xmm,k,m avx512bw +vpabsw xmm,k,xmm avx512bw +vpabsw xmm,m avx +vpabsw xmm,m avx512bw +vpabsw xmm,xmm avx +vpabsw xmm,xmm avx512bw +vpabsw ymm,k,m avx512bw +vpabsw ymm,k,ymm avx512bw +vpabsw ymm,m avx2 +vpabsw ymm,m avx512bw +vpabsw ymm,ymm avx2 +vpabsw ymm,ymm avx512bw +vpabsw zmm,k,m avx512bw +vpabsw zmm,k,zmm avx512bw +vpabsw zmm,m avx512bw +vpabsw zmm,zmm avx512bw +vpackssdw xmm,k,xmm,m avx512bw +vpackssdw xmm,k,xmm,xmm avx512bw +vpackssdw xmm,xmm,m avx +vpackssdw xmm,xmm,m avx512bw +vpackssdw xmm,xmm,xmm avx +vpackssdw xmm,xmm,xmm avx512bw +vpackssdw ymm,k,ymm,m avx512bw +vpackssdw ymm,k,ymm,ymm avx512bw +vpackssdw ymm,ymm,m avx2 +vpackssdw ymm,ymm,m avx512bw +vpackssdw ymm,ymm,ymm avx2 +vpackssdw ymm,ymm,ymm avx512bw +vpackssdw zmm,k,zmm,m avx512bw +vpackssdw zmm,k,zmm,zmm avx512bw +vpackssdw zmm,zmm,m avx512bw +vpackssdw zmm,zmm,zmm avx512bw +vpacksswb xmm,k,xmm,m avx512bw +vpacksswb xmm,k,xmm,xmm avx512bw +vpacksswb xmm,xmm,m avx +vpacksswb xmm,xmm,m avx512bw +vpacksswb xmm,xmm,xmm avx +vpacksswb xmm,xmm,xmm avx512bw +vpacksswb ymm,k,ymm,m avx512bw +vpacksswb ymm,k,ymm,ymm avx512bw +vpacksswb ymm,ymm,m avx2 +vpacksswb ymm,ymm,m avx512bw +vpacksswb ymm,ymm,ymm avx2 +vpacksswb ymm,ymm,ymm avx512bw +vpacksswb zmm,k,zmm,m avx512bw +vpacksswb zmm,k,zmm,zmm avx512bw +vpacksswb zmm,zmm,m avx512bw +vpacksswb zmm,zmm,zmm avx512bw +vpackstorehd m,k,zmm knce +vpackstorehd m,zmm knce +vpackstorehpd m,k,zmm knce +vpackstorehpd m,zmm knce +vpackstorehps m,k,zmm knce +vpackstorehps m,zmm knce +vpackstorehq m,k,zmm knce +vpackstorehq m,zmm knce +vpackstoreld m,k,zmm knce +vpackstoreld m,zmm knce +vpackstorelpd m,k,zmm knce +vpackstorelpd m,zmm knce +vpackstorelps m,k,zmm knce +vpackstorelps m,zmm knce +vpackstorelq m,k,zmm knce +vpackstorelq m,zmm knce +vpackusdw xmm,k,xmm,m avx512bw +vpackusdw xmm,k,xmm,xmm avx512bw +vpackusdw xmm,xmm,m avx +vpackusdw xmm,xmm,m avx512bw +vpackusdw xmm,xmm,xmm avx +vpackusdw xmm,xmm,xmm avx512bw +vpackusdw ymm,k,ymm,m avx512bw +vpackusdw ymm,k,ymm,ymm avx512bw +vpackusdw ymm,ymm,m avx2 +vpackusdw ymm,ymm,m avx512bw +vpackusdw ymm,ymm,ymm avx2 +vpackusdw ymm,ymm,ymm avx512bw +vpackusdw zmm,k,zmm,m avx512bw +vpackusdw zmm,k,zmm,zmm avx512bw +vpackusdw zmm,zmm,m avx512bw +vpackusdw zmm,zmm,zmm avx512bw +vpackuswb xmm,k,xmm,m avx512bw +vpackuswb xmm,k,xmm,xmm avx512bw +vpackuswb xmm,xmm,m avx +vpackuswb xmm,xmm,m avx512bw +vpackuswb xmm,xmm,xmm avx +vpackuswb xmm,xmm,xmm avx512bw +vpackuswb ymm,k,ymm,m avx512bw +vpackuswb ymm,k,ymm,ymm avx512bw +vpackuswb ymm,ymm,m avx2 +vpackuswb ymm,ymm,m avx512bw +vpackuswb ymm,ymm,ymm avx2 +vpackuswb ymm,ymm,ymm avx512bw +vpackuswb zmm,k,zmm,m avx512bw +vpackuswb zmm,k,zmm,zmm avx512bw +vpackuswb zmm,zmm,m avx512bw +vpackuswb zmm,zmm,zmm avx512bw +vpadcd zmm,k,k,m knce +vpadcd zmm,k,k,zmm knce +vpadcd zmm,k,m knce +vpadcd zmm,k,zmm knce +vpadcd zmm,m knce +vpadcd zmm,zmm knce +vpaddb xmm,k,xmm,m avx512bw +vpaddb xmm,k,xmm,xmm avx512bw +vpaddb xmm,xmm,m avx +vpaddb xmm,xmm,m avx512bw +vpaddb xmm,xmm,xmm avx +vpaddb xmm,xmm,xmm avx512bw +vpaddb ymm,k,ymm,m avx512bw +vpaddb ymm,k,ymm,ymm avx512bw +vpaddb ymm,ymm,m avx2 +vpaddb ymm,ymm,m avx512bw +vpaddb ymm,ymm,ymm avx2 +vpaddb ymm,ymm,ymm avx512bw +vpaddb zmm,k,zmm,m avx512bw +vpaddb zmm,k,zmm,zmm avx512bw +vpaddb zmm,zmm,m avx512bw +vpaddb zmm,zmm,zmm avx512bw +vpaddd xmm,k,xmm,m avx512f +vpaddd xmm,k,xmm,xmm avx512f +vpaddd xmm,xmm,m avx +vpaddd xmm,xmm,m avx512f +vpaddd xmm,xmm,xmm avx +vpaddd xmm,xmm,xmm avx512f +vpaddd ymm,k,ymm,m avx512f +vpaddd ymm,k,ymm,ymm avx512f +vpaddd ymm,ymm,m avx2 +vpaddd ymm,ymm,m avx512f +vpaddd ymm,ymm,ymm avx2 +vpaddd ymm,ymm,ymm avx512f +vpaddd zmm,k,zmm,m avx512f +vpaddd zmm,k,zmm,m knce +vpaddd zmm,k,zmm,zmm avx512f +vpaddd zmm,k,zmm,zmm knce +vpaddd zmm,zmm,m avx512f +vpaddd zmm,zmm,m knce +vpaddd zmm,zmm,zmm avx512f +vpaddd zmm,zmm,zmm knce +vpaddq xmm,k,xmm,m avx512f +vpaddq xmm,k,xmm,xmm avx512f +vpaddq xmm,xmm,m avx +vpaddq xmm,xmm,m avx512f +vpaddq xmm,xmm,xmm avx +vpaddq xmm,xmm,xmm avx512f +vpaddq ymm,k,ymm,m avx512f +vpaddq ymm,k,ymm,ymm avx512f +vpaddq ymm,ymm,m avx2 +vpaddq ymm,ymm,m avx512f +vpaddq ymm,ymm,ymm avx2 +vpaddq ymm,ymm,ymm avx512f +vpaddq zmm,k,zmm,m avx512f +vpaddq zmm,k,zmm,zmm avx512f +vpaddq zmm,zmm,m avx512f +vpaddq zmm,zmm,zmm avx512f +vpaddsb xmm,k,xmm,m avx512bw +vpaddsb xmm,k,xmm,xmm avx512bw +vpaddsb xmm,xmm,m avx +vpaddsb xmm,xmm,m avx512bw +vpaddsb xmm,xmm,xmm avx +vpaddsb xmm,xmm,xmm avx512bw +vpaddsb ymm,k,ymm,m avx512bw +vpaddsb ymm,k,ymm,ymm avx512bw +vpaddsb ymm,ymm,m avx2 +vpaddsb ymm,ymm,m avx512bw +vpaddsb ymm,ymm,ymm avx2 +vpaddsb ymm,ymm,ymm avx512bw +vpaddsb zmm,k,zmm,m avx512bw +vpaddsb zmm,k,zmm,zmm avx512bw +vpaddsb zmm,zmm,m avx512bw +vpaddsb zmm,zmm,zmm avx512bw +vpaddsetcd zmm,k,k,m knce +vpaddsetcd zmm,k,k,zmm knce +vpaddsetcd zmm,k,m knce +vpaddsetcd zmm,k,zmm knce +vpaddsetcd zmm,m knce +vpaddsetcd zmm,zmm knce +vpaddsetsd zmm,k,zmm,m knce +vpaddsetsd zmm,k,zmm,zmm knce +vpaddsetsd zmm,zmm,m knce +vpaddsetsd zmm,zmm,zmm knce +vpaddsw xmm,k,xmm,m avx512bw +vpaddsw xmm,k,xmm,xmm avx512bw +vpaddsw xmm,xmm,m avx +vpaddsw xmm,xmm,m avx512bw +vpaddsw xmm,xmm,xmm avx +vpaddsw xmm,xmm,xmm avx512bw +vpaddsw ymm,k,ymm,m avx512bw +vpaddsw ymm,k,ymm,ymm avx512bw +vpaddsw ymm,ymm,m avx2 +vpaddsw ymm,ymm,m avx512bw +vpaddsw ymm,ymm,ymm avx2 +vpaddsw ymm,ymm,ymm avx512bw +vpaddsw zmm,k,zmm,m avx512bw +vpaddsw zmm,k,zmm,zmm avx512bw +vpaddsw zmm,zmm,m avx512bw +vpaddsw zmm,zmm,zmm avx512bw +vpaddusb xmm,k,xmm,m avx512bw +vpaddusb xmm,k,xmm,xmm avx512bw +vpaddusb xmm,xmm,m avx +vpaddusb xmm,xmm,m avx512bw +vpaddusb xmm,xmm,xmm avx +vpaddusb xmm,xmm,xmm avx512bw +vpaddusb ymm,k,ymm,m avx512bw +vpaddusb ymm,k,ymm,ymm avx512bw +vpaddusb ymm,ymm,m avx2 +vpaddusb ymm,ymm,m avx512bw +vpaddusb ymm,ymm,ymm avx2 +vpaddusb ymm,ymm,ymm avx512bw +vpaddusb zmm,k,zmm,m avx512bw +vpaddusb zmm,k,zmm,zmm avx512bw +vpaddusb zmm,zmm,m avx512bw +vpaddusb zmm,zmm,zmm avx512bw +vpaddusw xmm,k,xmm,m avx512bw +vpaddusw xmm,k,xmm,xmm avx512bw +vpaddusw xmm,xmm,m avx +vpaddusw xmm,xmm,m avx512bw +vpaddusw xmm,xmm,xmm avx +vpaddusw xmm,xmm,xmm avx512bw +vpaddusw ymm,k,ymm,m avx512bw +vpaddusw ymm,k,ymm,ymm avx512bw +vpaddusw ymm,ymm,m avx2 +vpaddusw ymm,ymm,m avx512bw +vpaddusw ymm,ymm,ymm avx2 +vpaddusw ymm,ymm,ymm avx512bw +vpaddusw zmm,k,zmm,m avx512bw +vpaddusw zmm,k,zmm,zmm avx512bw +vpaddusw zmm,zmm,m avx512bw +vpaddusw zmm,zmm,zmm avx512bw +vpaddw xmm,k,xmm,m avx512bw +vpaddw xmm,k,xmm,xmm avx512bw +vpaddw xmm,xmm,m avx +vpaddw xmm,xmm,m avx512bw +vpaddw xmm,xmm,xmm avx +vpaddw xmm,xmm,xmm avx512bw +vpaddw ymm,k,ymm,m avx512bw +vpaddw ymm,k,ymm,ymm avx512bw +vpaddw ymm,ymm,m avx2 +vpaddw ymm,ymm,m avx512bw +vpaddw ymm,ymm,ymm avx2 +vpaddw ymm,ymm,ymm avx512bw +vpaddw zmm,k,zmm,m avx512bw +vpaddw zmm,k,zmm,zmm avx512bw +vpaddw zmm,zmm,m avx512bw +vpaddw zmm,zmm,zmm avx512bw +vpalignr xmm,k,xmm,m,imm avx512bw +vpalignr xmm,k,xmm,xmm,imm avx512bw +vpalignr xmm,xmm,m,imm avx +vpalignr xmm,xmm,m,imm avx512bw +vpalignr xmm,xmm,xmm,imm avx +vpalignr xmm,xmm,xmm,imm avx512bw +vpalignr ymm,k,ymm,m,imm avx512bw +vpalignr ymm,k,ymm,ymm,imm avx512bw +vpalignr ymm,ymm,m,imm avx2 +vpalignr ymm,ymm,m,imm avx512bw +vpalignr ymm,ymm,ymm,imm avx2 +vpalignr ymm,ymm,ymm,imm avx512bw +vpalignr zmm,k,zmm,m,imm avx512bw +vpalignr zmm,k,zmm,zmm,imm avx512bw +vpalignr zmm,zmm,m,imm avx512bw +vpalignr zmm,zmm,zmm,imm avx512bw +vpand xmm,xmm,m avx +vpand xmm,xmm,xmm avx +vpand ymm,ymm,m avx2 +vpand ymm,ymm,ymm avx2 +vpandd xmm,k,xmm,m avx512f +vpandd xmm,k,xmm,xmm avx512f +vpandd xmm,xmm,m avx512f +vpandd xmm,xmm,xmm avx512f +vpandd ymm,k,ymm,m avx512f +vpandd ymm,k,ymm,ymm avx512f +vpandd ymm,ymm,m avx512f +vpandd ymm,ymm,ymm avx512f +vpandd zmm,k,zmm,m avx512f +vpandd zmm,k,zmm,m knce +vpandd zmm,k,zmm,zmm avx512f +vpandd zmm,k,zmm,zmm knce +vpandd zmm,zmm,m avx512f +vpandd zmm,zmm,m knce +vpandd zmm,zmm,zmm avx512f +vpandd zmm,zmm,zmm knce +vpandn xmm,xmm,m avx +vpandn xmm,xmm,xmm avx +vpandn ymm,ymm,m avx2 +vpandn ymm,ymm,ymm avx2 +vpandnd xmm,k,xmm,m avx512f +vpandnd xmm,k,xmm,xmm avx512f +vpandnd xmm,xmm,m avx512f +vpandnd xmm,xmm,xmm avx512f +vpandnd ymm,k,ymm,m avx512f +vpandnd ymm,k,ymm,ymm avx512f +vpandnd ymm,ymm,m avx512f +vpandnd ymm,ymm,ymm avx512f +vpandnd zmm,k,zmm,m avx512f +vpandnd zmm,k,zmm,m knce +vpandnd zmm,k,zmm,zmm avx512f +vpandnd zmm,k,zmm,zmm knce +vpandnd zmm,zmm,m avx512f +vpandnd zmm,zmm,m knce +vpandnd zmm,zmm,zmm avx512f +vpandnd zmm,zmm,zmm knce +vpandnq xmm,k,xmm,m avx512f +vpandnq xmm,k,xmm,xmm avx512f +vpandnq xmm,xmm,m avx512f +vpandnq xmm,xmm,xmm avx512f +vpandnq ymm,k,ymm,m avx512f +vpandnq ymm,k,ymm,ymm avx512f +vpandnq ymm,ymm,m avx512f +vpandnq ymm,ymm,ymm avx512f +vpandnq zmm,k,zmm,m avx512f +vpandnq zmm,k,zmm,m knce +vpandnq zmm,k,zmm,zmm avx512f +vpandnq zmm,k,zmm,zmm knce +vpandnq zmm,zmm,m avx512f +vpandnq zmm,zmm,m knce +vpandnq zmm,zmm,zmm avx512f +vpandnq zmm,zmm,zmm knce +vpandq xmm,k,xmm,m avx512f +vpandq xmm,k,xmm,xmm avx512f +vpandq xmm,xmm,m avx512f +vpandq xmm,xmm,xmm avx512f +vpandq ymm,k,ymm,m avx512f +vpandq ymm,k,ymm,ymm avx512f +vpandq ymm,ymm,m avx512f +vpandq ymm,ymm,ymm avx512f +vpandq zmm,k,zmm,m avx512f +vpandq zmm,k,zmm,m knce +vpandq zmm,k,zmm,zmm avx512f +vpandq zmm,k,zmm,zmm knce +vpandq zmm,zmm,m avx512f +vpandq zmm,zmm,m knce +vpandq zmm,zmm,zmm avx512f +vpandq zmm,zmm,zmm knce +vpavgb xmm,k,xmm,m avx512bw +vpavgb xmm,k,xmm,xmm avx512bw +vpavgb xmm,xmm,m avx +vpavgb xmm,xmm,m avx512bw +vpavgb xmm,xmm,xmm avx +vpavgb xmm,xmm,xmm avx512bw +vpavgb ymm,k,ymm,m avx512bw +vpavgb ymm,k,ymm,ymm avx512bw +vpavgb ymm,ymm,m avx2 +vpavgb ymm,ymm,m avx512bw +vpavgb ymm,ymm,ymm avx2 +vpavgb ymm,ymm,ymm avx512bw +vpavgb zmm,k,zmm,m avx512bw +vpavgb zmm,k,zmm,zmm avx512bw +vpavgb zmm,zmm,m avx512bw +vpavgb zmm,zmm,zmm avx512bw +vpavgw xmm,k,xmm,m avx512bw +vpavgw xmm,k,xmm,xmm avx512bw +vpavgw xmm,xmm,m avx +vpavgw xmm,xmm,m avx512bw +vpavgw xmm,xmm,xmm avx +vpavgw xmm,xmm,xmm avx512bw +vpavgw ymm,k,ymm,m avx512bw +vpavgw ymm,k,ymm,ymm avx512bw +vpavgw ymm,ymm,m avx2 +vpavgw ymm,ymm,m avx512bw +vpavgw ymm,ymm,ymm avx2 +vpavgw ymm,ymm,ymm avx512bw +vpavgw zmm,k,zmm,m avx512bw +vpavgw zmm,k,zmm,zmm avx512bw +vpavgw zmm,zmm,m avx512bw +vpavgw zmm,zmm,zmm avx512bw +vpblendd xmm,xmm,m,imm avx2 +vpblendd xmm,xmm,xmm,imm avx2 +vpblendd ymm,ymm,m,imm avx2 +vpblendd ymm,ymm,ymm,imm avx2 +vpblendmb xmm,k,xmm,m avx512bw +vpblendmb xmm,k,xmm,xmm avx512bw +vpblendmb xmm,xmm,m avx512bw +vpblendmb xmm,xmm,xmm avx512bw +vpblendmb ymm,k,ymm,m avx512bw +vpblendmb ymm,k,ymm,ymm avx512bw +vpblendmb ymm,ymm,m avx512bw +vpblendmb ymm,ymm,ymm avx512bw +vpblendmb zmm,k,zmm,m avx512bw +vpblendmb zmm,k,zmm,zmm avx512bw +vpblendmb zmm,zmm,m avx512bw +vpblendmb zmm,zmm,zmm avx512bw +vpblendmd xmm,k,xmm,m avx512f +vpblendmd xmm,k,xmm,xmm avx512f +vpblendmd xmm,xmm,m avx512f +vpblendmd xmm,xmm,xmm avx512f +vpblendmd ymm,k,ymm,m avx512f +vpblendmd ymm,k,ymm,ymm avx512f +vpblendmd ymm,ymm,m avx512f +vpblendmd ymm,ymm,ymm avx512f +vpblendmd zmm,k,zmm,m avx512f +vpblendmd zmm,k,zmm,m knce +vpblendmd zmm,k,zmm,zmm avx512f +vpblendmd zmm,k,zmm,zmm knce +vpblendmd zmm,zmm,m avx512f +vpblendmd zmm,zmm,m knce +vpblendmd zmm,zmm,zmm avx512f +vpblendmd zmm,zmm,zmm knce +vpblendmq xmm,k,xmm,m avx512f +vpblendmq xmm,k,xmm,xmm avx512f +vpblendmq xmm,xmm,m avx512f +vpblendmq xmm,xmm,xmm avx512f +vpblendmq ymm,k,ymm,m avx512f +vpblendmq ymm,k,ymm,ymm avx512f +vpblendmq ymm,ymm,m avx512f +vpblendmq ymm,ymm,ymm avx512f +vpblendmq zmm,k,zmm,m avx512f +vpblendmq zmm,k,zmm,m knce +vpblendmq zmm,k,zmm,zmm avx512f +vpblendmq zmm,k,zmm,zmm knce +vpblendmq zmm,zmm,m avx512f +vpblendmq zmm,zmm,m knce +vpblendmq zmm,zmm,zmm avx512f +vpblendmq zmm,zmm,zmm knce +vpblendmw xmm,k,xmm,m avx512bw +vpblendmw xmm,k,xmm,xmm avx512bw +vpblendmw xmm,xmm,m avx512bw +vpblendmw xmm,xmm,xmm avx512bw +vpblendmw ymm,k,ymm,m avx512bw +vpblendmw ymm,k,ymm,ymm avx512bw +vpblendmw ymm,ymm,m avx512bw +vpblendmw ymm,ymm,ymm avx512bw +vpblendmw zmm,k,zmm,m avx512bw +vpblendmw zmm,k,zmm,zmm avx512bw +vpblendmw zmm,zmm,m avx512bw +vpblendmw zmm,zmm,zmm avx512bw +vpblendvb xmm,xmm,m,xmm avx +vpblendvb xmm,xmm,xmm,xmm avx +vpblendvb ymm,ymm,m,ymm avx2 +vpblendvb ymm,ymm,ymm,ymm avx2 +vpblendw xmm,xmm,m,imm avx +vpblendw xmm,xmm,xmm,imm avx +vpblendw ymm,ymm,m,imm avx2 +vpblendw ymm,ymm,ymm,imm avx2 +vpbroadcastb xmm,k,m avx512bw +vpbroadcastb xmm,k,r32 avx512bw +vpbroadcastb xmm,k,xmm avx512bw +vpbroadcastb xmm,m avx2 +vpbroadcastb xmm,m avx512bw +vpbroadcastb xmm,r32 avx512bw +vpbroadcastb xmm,xmm avx2 +vpbroadcastb xmm,xmm avx512bw +vpbroadcastb ymm,k,m avx512bw +vpbroadcastb ymm,k,r32 avx512bw +vpbroadcastb ymm,k,xmm avx512bw +vpbroadcastb ymm,m avx2 +vpbroadcastb ymm,m avx512bw +vpbroadcastb ymm,r32 avx512bw +vpbroadcastb ymm,xmm avx2 +vpbroadcastb ymm,xmm avx512bw +vpbroadcastb zmm,k,m avx512bw +vpbroadcastb zmm,k,r32 avx512bw +vpbroadcastb zmm,k,xmm avx512bw +vpbroadcastb zmm,m avx512bw +vpbroadcastb zmm,r32 avx512bw +vpbroadcastb zmm,xmm avx512bw +vpbroadcastd xmm,k,m avx512f +vpbroadcastd xmm,k,r32 avx512f +vpbroadcastd xmm,k,xmm avx512f +vpbroadcastd xmm,m avx2 +vpbroadcastd xmm,m avx512f +vpbroadcastd xmm,r32 avx512f +vpbroadcastd xmm,xmm avx2 +vpbroadcastd xmm,xmm avx512f +vpbroadcastd ymm,k,m avx512f +vpbroadcastd ymm,k,r32 avx512f +vpbroadcastd ymm,k,xmm avx512f +vpbroadcastd ymm,m avx2 +vpbroadcastd ymm,m avx512f +vpbroadcastd ymm,r32 avx512f +vpbroadcastd ymm,xmm avx2 +vpbroadcastd ymm,xmm avx512f +vpbroadcastd zmm,k,m avx512f +vpbroadcastd zmm,k,m knce +vpbroadcastd zmm,k,r32 avx512f +vpbroadcastd zmm,k,xmm avx512f +vpbroadcastd zmm,m avx512f +vpbroadcastd zmm,m knce +vpbroadcastd zmm,r32 avx512f +vpbroadcastd zmm,xmm avx512f +vpbroadcastmb2q xmm avx512cd +vpbroadcastmb2q xmm,k avx512cd +vpbroadcastmb2q ymm avx512cd +vpbroadcastmb2q ymm,k avx512cd +vpbroadcastmb2q zmm avx512cd +vpbroadcastmb2q zmm,k avx512cd +vpbroadcastmw2d xmm avx512cd +vpbroadcastmw2d xmm,k avx512cd +vpbroadcastmw2d ymm avx512cd +vpbroadcastmw2d ymm,k avx512cd +vpbroadcastmw2d zmm avx512cd +vpbroadcastmw2d zmm,k avx512cd +vpbroadcastq xmm,k,m avx512f +vpbroadcastq xmm,k,r64 avx512f +vpbroadcastq xmm,k,xmm avx512f +vpbroadcastq xmm,m avx2 +vpbroadcastq xmm,m avx512f +vpbroadcastq xmm,r64 avx512f +vpbroadcastq xmm,xmm avx2 +vpbroadcastq xmm,xmm avx512f +vpbroadcastq ymm,k,m avx512f +vpbroadcastq ymm,k,r64 avx512f +vpbroadcastq ymm,k,xmm avx512f +vpbroadcastq ymm,m avx2 +vpbroadcastq ymm,m avx512f +vpbroadcastq ymm,r64 avx512f +vpbroadcastq ymm,xmm avx2 +vpbroadcastq ymm,xmm avx512f +vpbroadcastq zmm,k,m avx512f +vpbroadcastq zmm,k,m knce +vpbroadcastq zmm,k,r64 avx512f +vpbroadcastq zmm,k,xmm avx512f +vpbroadcastq zmm,m avx512f +vpbroadcastq zmm,m knce +vpbroadcastq zmm,r64 avx512f +vpbroadcastq zmm,xmm avx512f +vpbroadcastw xmm,k,m avx512bw +vpbroadcastw xmm,k,r32 avx512bw +vpbroadcastw xmm,k,xmm avx512bw +vpbroadcastw xmm,m avx2 +vpbroadcastw xmm,m avx512bw +vpbroadcastw xmm,r32 avx512bw +vpbroadcastw xmm,xmm avx2 +vpbroadcastw xmm,xmm avx512bw +vpbroadcastw ymm,k,m avx512bw +vpbroadcastw ymm,k,r32 avx512bw +vpbroadcastw ymm,k,xmm avx512bw +vpbroadcastw ymm,m avx2 +vpbroadcastw ymm,m avx512bw +vpbroadcastw ymm,r32 avx512bw +vpbroadcastw ymm,xmm avx2 +vpbroadcastw ymm,xmm avx512bw +vpbroadcastw zmm,k,m avx512bw +vpbroadcastw zmm,k,r32 avx512bw +vpbroadcastw zmm,k,xmm avx512bw +vpbroadcastw zmm,m avx512bw +vpbroadcastw zmm,r32 avx512bw +vpbroadcastw zmm,xmm avx512bw +vpclmulqdq xmm,xmm,m,imm avx +vpclmulqdq xmm,xmm,m,imm avx512vpclmulqdq +vpclmulqdq xmm,xmm,xmm,imm avx +vpclmulqdq xmm,xmm,xmm,imm avx512vpclmulqdq +vpclmulqdq ymm,ymm,m,imm avx512vpclmulqdq +vpclmulqdq ymm,ymm,m,imm vpclmulqdq +vpclmulqdq ymm,ymm,ymm,imm avx512vpclmulqdq +vpclmulqdq ymm,ymm,ymm,imm vpclmulqdq +vpclmulqdq zmm,zmm,m,imm avx512vpclmulqdq +vpclmulqdq zmm,zmm,zmm,imm avx512vpclmulqdq +vpcmov xmm,xmm,m,xmm xop +vpcmov xmm,xmm,xmm,m xop +vpcmov xmm,xmm,xmm,xmm xop +vpcmov ymm,ymm,m,ymm xop +vpcmov ymm,ymm,ymm,m xop +vpcmov ymm,ymm,ymm,ymm xop +vpcmpb k,k,xmm,m,imm avx512bw +vpcmpb k,k,xmm,xmm,imm avx512bw +vpcmpb k,k,ymm,m,imm avx512bw +vpcmpb k,k,ymm,ymm,imm avx512bw +vpcmpb k,k,zmm,m,imm avx512bw +vpcmpb k,k,zmm,zmm,imm avx512bw +vpcmpb k,xmm,m,imm avx512bw +vpcmpb k,xmm,xmm,imm avx512bw +vpcmpb k,ymm,m,imm avx512bw +vpcmpb k,ymm,ymm,imm avx512bw +vpcmpb k,zmm,m,imm avx512bw +vpcmpb k,zmm,zmm,imm avx512bw +vpcmpb xmm,m,imm avx512bw +vpcmpb xmm,xmm,imm avx512bw +vpcmpb ymm,m,imm avx512bw +vpcmpb ymm,ymm,imm avx512bw +vpcmpb zmm,m,imm avx512bw +vpcmpb zmm,zmm,imm avx512bw +vpcmpd k,k,xmm,m,imm avx512f +vpcmpd k,k,xmm,xmm,imm avx512f +vpcmpd k,k,ymm,m,imm avx512f +vpcmpd k,k,ymm,ymm,imm avx512f +vpcmpd k,k,zmm,m,imm avx512f +vpcmpd k,k,zmm,m,imm knce +vpcmpd k,k,zmm,zmm,imm avx512f +vpcmpd k,k,zmm,zmm,imm knce +vpcmpd k,xmm,m,imm avx512f +vpcmpd k,xmm,xmm,imm avx512f +vpcmpd k,ymm,m,imm avx512f +vpcmpd k,ymm,ymm,imm avx512f +vpcmpd k,zmm,m,imm avx512f +vpcmpd k,zmm,m,imm knce +vpcmpd k,zmm,zmm,imm avx512f +vpcmpd k,zmm,zmm,imm knce +vpcmpd xmm,m,imm avx512f +vpcmpd xmm,xmm,imm avx512f +vpcmpd ymm,m,imm avx512f +vpcmpd ymm,ymm,imm avx512f +vpcmpd zmm,m,imm avx512f +vpcmpd zmm,m,imm knce +vpcmpd zmm,zmm,imm avx512f +vpcmpd zmm,zmm,imm knce +vpcmpeqb k,k,xmm,m avx512bw +vpcmpeqb k,k,xmm,xmm avx512bw +vpcmpeqb k,k,ymm,m avx512bw +vpcmpeqb k,k,ymm,ymm avx512bw +vpcmpeqb k,k,zmm,m avx512bw +vpcmpeqb k,k,zmm,zmm avx512bw +vpcmpeqb k,xmm,m avx512bw +vpcmpeqb k,xmm,xmm avx512bw +vpcmpeqb k,ymm,m avx512bw +vpcmpeqb k,ymm,ymm avx512bw +vpcmpeqb k,zmm,m avx512bw +vpcmpeqb k,zmm,zmm avx512bw +vpcmpeqb xmm,m avx512bw +vpcmpeqb xmm,xmm avx512bw +vpcmpeqb xmm,xmm,m avx +vpcmpeqb xmm,xmm,xmm avx +vpcmpeqb ymm,m avx512bw +vpcmpeqb ymm,ymm avx512bw +vpcmpeqb ymm,ymm,m avx2 +vpcmpeqb ymm,ymm,ymm avx2 +vpcmpeqb zmm,m avx512bw +vpcmpeqb zmm,zmm avx512bw +vpcmpeqd k,k,xmm,m avx512f +vpcmpeqd k,k,xmm,xmm avx512f +vpcmpeqd k,k,ymm,m avx512f +vpcmpeqd k,k,ymm,ymm avx512f +vpcmpeqd k,k,zmm,m avx512f +vpcmpeqd k,k,zmm,m knce +vpcmpeqd k,k,zmm,zmm avx512f +vpcmpeqd k,k,zmm,zmm knce +vpcmpeqd k,xmm,m avx512f +vpcmpeqd k,xmm,xmm avx512f +vpcmpeqd k,ymm,m avx512f +vpcmpeqd k,ymm,ymm avx512f +vpcmpeqd k,zmm,m avx512f +vpcmpeqd k,zmm,m knce +vpcmpeqd k,zmm,zmm avx512f +vpcmpeqd k,zmm,zmm knce +vpcmpeqd xmm,m avx512f +vpcmpeqd xmm,xmm avx512f +vpcmpeqd xmm,xmm,m avx +vpcmpeqd xmm,xmm,xmm avx +vpcmpeqd ymm,m avx512f +vpcmpeqd ymm,ymm avx512f +vpcmpeqd ymm,ymm,m avx2 +vpcmpeqd ymm,ymm,ymm avx2 +vpcmpeqd zmm,m avx512f +vpcmpeqd zmm,m knce +vpcmpeqd zmm,zmm avx512f +vpcmpeqd zmm,zmm knce +vpcmpeqq k,k,xmm,m avx512f +vpcmpeqq k,k,xmm,xmm avx512f +vpcmpeqq k,k,ymm,m avx512f +vpcmpeqq k,k,ymm,ymm avx512f +vpcmpeqq k,k,zmm,m avx512f +vpcmpeqq k,k,zmm,zmm avx512f +vpcmpeqq k,xmm,m avx512f +vpcmpeqq k,xmm,xmm avx512f +vpcmpeqq k,ymm,m avx512f +vpcmpeqq k,ymm,ymm avx512f +vpcmpeqq k,zmm,m avx512f +vpcmpeqq k,zmm,zmm avx512f +vpcmpeqq xmm,m avx512f +vpcmpeqq xmm,xmm avx512f +vpcmpeqq xmm,xmm,m avx +vpcmpeqq xmm,xmm,xmm avx +vpcmpeqq ymm,m avx512f +vpcmpeqq ymm,ymm avx512f +vpcmpeqq ymm,ymm,m avx2 +vpcmpeqq ymm,ymm,ymm avx2 +vpcmpeqq zmm,m avx512f +vpcmpeqq zmm,zmm avx512f +vpcmpeqw k,k,xmm,m avx512bw +vpcmpeqw k,k,xmm,xmm avx512bw +vpcmpeqw k,k,ymm,m avx512bw +vpcmpeqw k,k,ymm,ymm avx512bw +vpcmpeqw k,k,zmm,m avx512bw +vpcmpeqw k,k,zmm,zmm avx512bw +vpcmpeqw k,xmm,m avx512bw +vpcmpeqw k,xmm,xmm avx512bw +vpcmpeqw k,ymm,m avx512bw +vpcmpeqw k,ymm,ymm avx512bw +vpcmpeqw k,zmm,m avx512bw +vpcmpeqw k,zmm,zmm avx512bw +vpcmpeqw xmm,m avx512bw +vpcmpeqw xmm,xmm avx512bw +vpcmpeqw xmm,xmm,m avx +vpcmpeqw xmm,xmm,xmm avx +vpcmpeqw ymm,m avx512bw +vpcmpeqw ymm,ymm avx512bw +vpcmpeqw ymm,ymm,m avx2 +vpcmpeqw ymm,ymm,ymm avx2 +vpcmpeqw zmm,m avx512bw +vpcmpeqw zmm,zmm avx512bw +vpcmpestri xmm,m,imm avx +vpcmpestri xmm,xmm,imm avx +vpcmpestri64 xmm,m,imm avx +vpcmpestri64 xmm,xmm,imm avx +vpcmpestrm xmm,m,imm avx +vpcmpestrm xmm,xmm,imm avx +vpcmpestrm64 xmm,m,imm avx +vpcmpestrm64 xmm,xmm,imm avx +vpcmpgtb k,k,xmm,m avx512bw +vpcmpgtb k,k,xmm,xmm avx512bw +vpcmpgtb k,k,ymm,m avx512bw +vpcmpgtb k,k,ymm,ymm avx512bw +vpcmpgtb k,k,zmm,m avx512bw +vpcmpgtb k,k,zmm,zmm avx512bw +vpcmpgtb k,xmm,m avx512bw +vpcmpgtb k,xmm,xmm avx512bw +vpcmpgtb k,ymm,m avx512bw +vpcmpgtb k,ymm,ymm avx512bw +vpcmpgtb k,zmm,m avx512bw +vpcmpgtb k,zmm,zmm avx512bw +vpcmpgtb xmm,m avx512bw +vpcmpgtb xmm,xmm avx512bw +vpcmpgtb xmm,xmm,m avx +vpcmpgtb xmm,xmm,xmm avx +vpcmpgtb ymm,m avx512bw +vpcmpgtb ymm,ymm avx512bw +vpcmpgtb ymm,ymm,m avx2 +vpcmpgtb ymm,ymm,ymm avx2 +vpcmpgtb zmm,m avx512bw +vpcmpgtb zmm,zmm avx512bw +vpcmpgtd k,k,xmm,m avx512f +vpcmpgtd k,k,xmm,xmm avx512f +vpcmpgtd k,k,ymm,m avx512f +vpcmpgtd k,k,ymm,ymm avx512f +vpcmpgtd k,k,zmm,m avx512f +vpcmpgtd k,k,zmm,m knce +vpcmpgtd k,k,zmm,zmm avx512f +vpcmpgtd k,k,zmm,zmm knce +vpcmpgtd k,xmm,m avx512f +vpcmpgtd k,xmm,xmm avx512f +vpcmpgtd k,ymm,m avx512f +vpcmpgtd k,ymm,ymm avx512f +vpcmpgtd k,zmm,m avx512f +vpcmpgtd k,zmm,m knce +vpcmpgtd k,zmm,zmm avx512f +vpcmpgtd k,zmm,zmm knce +vpcmpgtd xmm,m avx512f +vpcmpgtd xmm,xmm avx512f +vpcmpgtd xmm,xmm,m avx +vpcmpgtd xmm,xmm,xmm avx +vpcmpgtd ymm,m avx512f +vpcmpgtd ymm,ymm avx512f +vpcmpgtd ymm,ymm,m avx2 +vpcmpgtd ymm,ymm,ymm avx2 +vpcmpgtd zmm,m avx512f +vpcmpgtd zmm,m knce +vpcmpgtd zmm,zmm avx512f +vpcmpgtd zmm,zmm knce +vpcmpgtq k,k,xmm,m avx512f +vpcmpgtq k,k,xmm,xmm avx512f +vpcmpgtq k,k,ymm,m avx512f +vpcmpgtq k,k,ymm,ymm avx512f +vpcmpgtq k,k,zmm,m avx512f +vpcmpgtq k,k,zmm,zmm avx512f +vpcmpgtq k,xmm,m avx512f +vpcmpgtq k,xmm,xmm avx512f +vpcmpgtq k,ymm,m avx512f +vpcmpgtq k,ymm,ymm avx512f +vpcmpgtq k,zmm,m avx512f +vpcmpgtq k,zmm,zmm avx512f +vpcmpgtq xmm,m avx512f +vpcmpgtq xmm,xmm avx512f +vpcmpgtq xmm,xmm,m avx +vpcmpgtq xmm,xmm,xmm avx +vpcmpgtq ymm,m avx512f +vpcmpgtq ymm,ymm avx512f +vpcmpgtq ymm,ymm,m avx2 +vpcmpgtq ymm,ymm,ymm avx2 +vpcmpgtq zmm,m avx512f +vpcmpgtq zmm,zmm avx512f +vpcmpgtw k,k,xmm,m avx512bw +vpcmpgtw k,k,xmm,xmm avx512bw +vpcmpgtw k,k,ymm,m avx512bw +vpcmpgtw k,k,ymm,ymm avx512bw +vpcmpgtw k,k,zmm,m avx512bw +vpcmpgtw k,k,zmm,zmm avx512bw +vpcmpgtw k,xmm,m avx512bw +vpcmpgtw k,xmm,xmm avx512bw +vpcmpgtw k,ymm,m avx512bw +vpcmpgtw k,ymm,ymm avx512bw +vpcmpgtw k,zmm,m avx512bw +vpcmpgtw k,zmm,zmm avx512bw +vpcmpgtw xmm,m avx512bw +vpcmpgtw xmm,xmm avx512bw +vpcmpgtw xmm,xmm,m avx +vpcmpgtw xmm,xmm,xmm avx +vpcmpgtw ymm,m avx512bw +vpcmpgtw ymm,ymm avx512bw +vpcmpgtw ymm,ymm,m avx2 +vpcmpgtw ymm,ymm,ymm avx2 +vpcmpgtw zmm,m avx512bw +vpcmpgtw zmm,zmm avx512bw +vpcmpistri xmm,m,imm avx +vpcmpistri xmm,xmm,imm avx +vpcmpistri64 xmm,m,imm avx +vpcmpistri64 xmm,xmm,imm avx +vpcmpistrm xmm,m,imm avx +vpcmpistrm xmm,xmm,imm avx +vpcmpltd k,k,zmm,m knce +vpcmpltd k,k,zmm,zmm knce +vpcmpltd k,zmm,m knce +vpcmpltd k,zmm,zmm knce +vpcmpltd zmm,m knce +vpcmpltd zmm,zmm knce +vpcmpq k,k,xmm,m,imm avx512f +vpcmpq k,k,xmm,xmm,imm avx512f +vpcmpq k,k,ymm,m,imm avx512f +vpcmpq k,k,ymm,ymm,imm avx512f +vpcmpq k,k,zmm,m,imm avx512f +vpcmpq k,k,zmm,zmm,imm avx512f +vpcmpq k,xmm,m,imm avx512f +vpcmpq k,xmm,xmm,imm avx512f +vpcmpq k,ymm,m,imm avx512f +vpcmpq k,ymm,ymm,imm avx512f +vpcmpq k,zmm,m,imm avx512f +vpcmpq k,zmm,zmm,imm avx512f +vpcmpq xmm,m,imm avx512f +vpcmpq xmm,xmm,imm avx512f +vpcmpq ymm,m,imm avx512f +vpcmpq ymm,ymm,imm avx512f +vpcmpq zmm,m,imm avx512f +vpcmpq zmm,zmm,imm avx512f +vpcmpub k,k,xmm,m,imm avx512bw +vpcmpub k,k,xmm,xmm,imm avx512bw +vpcmpub k,k,ymm,m,imm avx512bw +vpcmpub k,k,ymm,ymm,imm avx512bw +vpcmpub k,k,zmm,m,imm avx512bw +vpcmpub k,k,zmm,zmm,imm avx512bw +vpcmpub k,xmm,m,imm avx512bw +vpcmpub k,xmm,xmm,imm avx512bw +vpcmpub k,ymm,m,imm avx512bw +vpcmpub k,ymm,ymm,imm avx512bw +vpcmpub k,zmm,m,imm avx512bw +vpcmpub k,zmm,zmm,imm avx512bw +vpcmpub xmm,m,imm avx512bw +vpcmpub xmm,xmm,imm avx512bw +vpcmpub ymm,m,imm avx512bw +vpcmpub ymm,ymm,imm avx512bw +vpcmpub zmm,m,imm avx512bw +vpcmpub zmm,zmm,imm avx512bw +vpcmpud k,k,xmm,m,imm avx512f +vpcmpud k,k,xmm,xmm,imm avx512f +vpcmpud k,k,ymm,m,imm avx512f +vpcmpud k,k,ymm,ymm,imm avx512f +vpcmpud k,k,zmm,m,imm avx512f +vpcmpud k,k,zmm,m,imm knce +vpcmpud k,k,zmm,zmm,imm avx512f +vpcmpud k,k,zmm,zmm,imm knce +vpcmpud k,xmm,m,imm avx512f +vpcmpud k,xmm,xmm,imm avx512f +vpcmpud k,ymm,m,imm avx512f +vpcmpud k,ymm,ymm,imm avx512f +vpcmpud k,zmm,m,imm avx512f +vpcmpud k,zmm,m,imm knce +vpcmpud k,zmm,zmm,imm avx512f +vpcmpud k,zmm,zmm,imm knce +vpcmpud xmm,m,imm avx512f +vpcmpud xmm,xmm,imm avx512f +vpcmpud ymm,m,imm avx512f +vpcmpud ymm,ymm,imm avx512f +vpcmpud zmm,m,imm avx512f +vpcmpud zmm,m,imm knce +vpcmpud zmm,zmm,imm avx512f +vpcmpud zmm,zmm,imm knce +vpcmpuq k,k,xmm,m,imm avx512f +vpcmpuq k,k,xmm,xmm,imm avx512f +vpcmpuq k,k,ymm,m,imm avx512f +vpcmpuq k,k,ymm,ymm,imm avx512f +vpcmpuq k,k,zmm,m,imm avx512f +vpcmpuq k,k,zmm,zmm,imm avx512f +vpcmpuq k,xmm,m,imm avx512f +vpcmpuq k,xmm,xmm,imm avx512f +vpcmpuq k,ymm,m,imm avx512f +vpcmpuq k,ymm,ymm,imm avx512f +vpcmpuq k,zmm,m,imm avx512f +vpcmpuq k,zmm,zmm,imm avx512f +vpcmpuq xmm,m,imm avx512f +vpcmpuq xmm,xmm,imm avx512f +vpcmpuq ymm,m,imm avx512f +vpcmpuq ymm,ymm,imm avx512f +vpcmpuq zmm,m,imm avx512f +vpcmpuq zmm,zmm,imm avx512f +vpcmpuw k,k,xmm,m,imm avx512bw +vpcmpuw k,k,xmm,xmm,imm avx512bw +vpcmpuw k,k,ymm,m,imm avx512bw +vpcmpuw k,k,ymm,ymm,imm avx512bw +vpcmpuw k,k,zmm,m,imm avx512bw +vpcmpuw k,k,zmm,zmm,imm avx512bw +vpcmpuw k,xmm,m,imm avx512bw +vpcmpuw k,xmm,xmm,imm avx512bw +vpcmpuw k,ymm,m,imm avx512bw +vpcmpuw k,ymm,ymm,imm avx512bw +vpcmpuw k,zmm,m,imm avx512bw +vpcmpuw k,zmm,zmm,imm avx512bw +vpcmpuw xmm,m,imm avx512bw +vpcmpuw xmm,xmm,imm avx512bw +vpcmpuw ymm,m,imm avx512bw +vpcmpuw ymm,ymm,imm avx512bw +vpcmpuw zmm,m,imm avx512bw +vpcmpuw zmm,zmm,imm avx512bw +vpcmpw k,k,xmm,m,imm avx512bw +vpcmpw k,k,xmm,xmm,imm avx512bw +vpcmpw k,k,ymm,m,imm avx512bw +vpcmpw k,k,ymm,ymm,imm avx512bw +vpcmpw k,k,zmm,m,imm avx512bw +vpcmpw k,k,zmm,zmm,imm avx512bw +vpcmpw k,xmm,m,imm avx512bw +vpcmpw k,xmm,xmm,imm avx512bw +vpcmpw k,ymm,m,imm avx512bw +vpcmpw k,ymm,ymm,imm avx512bw +vpcmpw k,zmm,m,imm avx512bw +vpcmpw k,zmm,zmm,imm avx512bw +vpcmpw xmm,m,imm avx512bw +vpcmpw xmm,xmm,imm avx512bw +vpcmpw ymm,m,imm avx512bw +vpcmpw ymm,ymm,imm avx512bw +vpcmpw zmm,m,imm avx512bw +vpcmpw zmm,zmm,imm avx512bw +vpcomb xmm,xmm,m,imm xop +vpcomb xmm,xmm,xmm,imm xop +vpcomd xmm,xmm,m,imm xop +vpcomd xmm,xmm,xmm,imm xop +vpcompressb m,k,xmm avx512vbmi2 +vpcompressb m,k,ymm avx512vbmi2 +vpcompressb m,k,zmm avx512vbmi2 +vpcompressb m,xmm avx512vbmi2 +vpcompressb m,ymm avx512vbmi2 +vpcompressb m,zmm avx512vbmi2 +vpcompressb xmm,k,xmm avx512vbmi2 +vpcompressb xmm,xmm avx512vbmi2 +vpcompressb ymm,k,ymm avx512vbmi2 +vpcompressb ymm,ymm avx512vbmi2 +vpcompressb zmm,k,zmm avx512vbmi2 +vpcompressb zmm,zmm avx512vbmi2 +vpcompressd m,k,xmm avx512f +vpcompressd m,k,ymm avx512f +vpcompressd m,k,zmm avx512f +vpcompressd m,xmm avx512f +vpcompressd m,ymm avx512f +vpcompressd m,zmm avx512f +vpcompressd xmm,k,xmm avx512f +vpcompressd xmm,xmm avx512f +vpcompressd ymm,k,ymm avx512f +vpcompressd ymm,ymm avx512f +vpcompressd zmm,k,zmm avx512f +vpcompressd zmm,zmm avx512f +vpcompressq m,k,xmm avx512f +vpcompressq m,k,ymm avx512f +vpcompressq m,k,zmm avx512f +vpcompressq m,xmm avx512f +vpcompressq m,ymm avx512f +vpcompressq m,zmm avx512f +vpcompressq xmm,k,xmm avx512f +vpcompressq xmm,xmm avx512f +vpcompressq ymm,k,ymm avx512f +vpcompressq ymm,ymm avx512f +vpcompressq zmm,k,zmm avx512f +vpcompressq zmm,zmm avx512f +vpcompressw m,k,xmm avx512vbmi2 +vpcompressw m,k,ymm avx512vbmi2 +vpcompressw m,k,zmm avx512vbmi2 +vpcompressw m,xmm avx512vbmi2 +vpcompressw m,ymm avx512vbmi2 +vpcompressw m,zmm avx512vbmi2 +vpcompressw xmm,k,xmm avx512vbmi2 +vpcompressw xmm,xmm avx512vbmi2 +vpcompressw ymm,k,ymm avx512vbmi2 +vpcompressw ymm,ymm avx512vbmi2 +vpcompressw zmm,k,zmm avx512vbmi2 +vpcompressw zmm,zmm avx512vbmi2 +vpcomq xmm,xmm,m,imm xop +vpcomq xmm,xmm,xmm,imm xop +vpcomub xmm,xmm,m,imm xop +vpcomub xmm,xmm,xmm,imm xop +vpcomud xmm,xmm,m,imm xop +vpcomud xmm,xmm,xmm,imm xop +vpcomuq xmm,xmm,m,imm xop +vpcomuq xmm,xmm,xmm,imm xop +vpcomuw xmm,xmm,m,imm xop +vpcomuw xmm,xmm,xmm,imm xop +vpcomw xmm,xmm,m,imm xop +vpcomw xmm,xmm,xmm,imm xop +vpconflictd xmm,k,m avx512cd +vpconflictd xmm,k,xmm avx512cd +vpconflictd xmm,m avx512cd +vpconflictd xmm,xmm avx512cd +vpconflictd ymm,k,m avx512cd +vpconflictd ymm,k,ymm avx512cd +vpconflictd ymm,m avx512cd +vpconflictd ymm,ymm avx512cd +vpconflictd zmm,k,m avx512cd +vpconflictd zmm,k,zmm avx512cd +vpconflictd zmm,m avx512cd +vpconflictd zmm,zmm avx512cd +vpconflictq xmm,k,m avx512cd +vpconflictq xmm,k,xmm avx512cd +vpconflictq xmm,m avx512cd +vpconflictq xmm,xmm avx512cd +vpconflictq ymm,k,m avx512cd +vpconflictq ymm,k,ymm avx512cd +vpconflictq ymm,m avx512cd +vpconflictq ymm,ymm avx512cd +vpconflictq zmm,k,m avx512cd +vpconflictq zmm,k,zmm avx512cd +vpconflictq zmm,m avx512cd +vpconflictq zmm,zmm avx512cd +vpdpbusd xmm,k,xmm,m avx512vnni +vpdpbusd xmm,k,xmm,xmm avx512vnni +vpdpbusd xmm,xmm,m avx512vnni +vpdpbusd xmm,xmm,m avx_vnni +vpdpbusd xmm,xmm,xmm avx512vnni +vpdpbusd xmm,xmm,xmm avx_vnni +vpdpbusd ymm,k,ymm,m avx512vnni +vpdpbusd ymm,k,ymm,ymm avx512vnni +vpdpbusd ymm,ymm,m avx512vnni +vpdpbusd ymm,ymm,m avx_vnni +vpdpbusd ymm,ymm,ymm avx512vnni +vpdpbusd ymm,ymm,ymm avx_vnni +vpdpbusd zmm,k,zmm,m avx512vnni +vpdpbusd zmm,k,zmm,zmm avx512vnni +vpdpbusd zmm,zmm,m avx512vnni +vpdpbusd zmm,zmm,zmm avx512vnni +vpdpbusds xmm,k,xmm,m avx512vnni +vpdpbusds xmm,k,xmm,xmm avx512vnni +vpdpbusds xmm,xmm,m avx512vnni +vpdpbusds xmm,xmm,m avx_vnni +vpdpbusds xmm,xmm,xmm avx512vnni +vpdpbusds xmm,xmm,xmm avx_vnni +vpdpbusds ymm,k,ymm,m avx512vnni +vpdpbusds ymm,k,ymm,ymm avx512vnni +vpdpbusds ymm,ymm,m avx512vnni +vpdpbusds ymm,ymm,m avx_vnni +vpdpbusds ymm,ymm,ymm avx512vnni +vpdpbusds ymm,ymm,ymm avx_vnni +vpdpbusds zmm,k,zmm,m avx512vnni +vpdpbusds zmm,k,zmm,zmm avx512vnni +vpdpbusds zmm,zmm,m avx512vnni +vpdpbusds zmm,zmm,zmm avx512vnni +vpdpwssd xmm,k,xmm,m avx512vnni +vpdpwssd xmm,k,xmm,xmm avx512vnni +vpdpwssd xmm,xmm,m avx512vnni +vpdpwssd xmm,xmm,m avx_vnni +vpdpwssd xmm,xmm,xmm avx512vnni +vpdpwssd xmm,xmm,xmm avx_vnni +vpdpwssd ymm,k,ymm,m avx512vnni +vpdpwssd ymm,k,ymm,ymm avx512vnni +vpdpwssd ymm,ymm,m avx512vnni +vpdpwssd ymm,ymm,m avx_vnni +vpdpwssd ymm,ymm,ymm avx512vnni +vpdpwssd ymm,ymm,ymm avx_vnni +vpdpwssd zmm,k,zmm,m avx512vnni +vpdpwssd zmm,k,zmm,zmm avx512vnni +vpdpwssd zmm,zmm,m avx512vnni +vpdpwssd zmm,zmm,zmm avx512vnni +vpdpwssds xmm,k,xmm,m avx512vnni +vpdpwssds xmm,k,xmm,xmm avx512vnni +vpdpwssds xmm,xmm,m avx512vnni +vpdpwssds xmm,xmm,m avx_vnni +vpdpwssds xmm,xmm,xmm avx512vnni +vpdpwssds xmm,xmm,xmm avx_vnni +vpdpwssds ymm,k,ymm,m avx512vnni +vpdpwssds ymm,k,ymm,ymm avx512vnni +vpdpwssds ymm,ymm,m avx512vnni +vpdpwssds ymm,ymm,m avx_vnni +vpdpwssds ymm,ymm,ymm avx512vnni +vpdpwssds ymm,ymm,ymm avx_vnni +vpdpwssds zmm,k,zmm,m avx512vnni +vpdpwssds zmm,k,zmm,zmm avx512vnni +vpdpwssds zmm,zmm,m avx512vnni +vpdpwssds zmm,zmm,zmm avx512vnni +vperm2f128 ymm,ymm,m,imm avx +vperm2f128 ymm,ymm,ymm,imm avx +vperm2i128 ymm,ymm,m,imm avx2 +vperm2i128 ymm,ymm,ymm,imm avx2 +vpermb xmm,k,xmm,m avx512vbmi +vpermb xmm,k,xmm,xmm avx512vbmi +vpermb xmm,xmm,m avx512vbmi +vpermb xmm,xmm,xmm avx512vbmi +vpermb ymm,k,ymm,m avx512vbmi +vpermb ymm,k,ymm,ymm avx512vbmi +vpermb ymm,ymm,m avx512vbmi +vpermb ymm,ymm,ymm avx512vbmi +vpermb zmm,k,zmm,m avx512vbmi +vpermb zmm,k,zmm,zmm avx512vbmi +vpermb zmm,zmm,m avx512vbmi +vpermb zmm,zmm,zmm avx512vbmi +vpermd ymm,k,ymm,m avx512f +vpermd ymm,k,ymm,ymm avx512f +vpermd ymm,ymm,m avx2 +vpermd ymm,ymm,m avx512f +vpermd ymm,ymm,ymm avx2 +vpermd ymm,ymm,ymm avx512f +vpermd zmm,k,zmm,m avx512f +vpermd zmm,k,zmm,m knce +vpermd zmm,k,zmm,zmm avx512f +vpermd zmm,k,zmm,zmm knce +vpermd zmm,zmm,m avx512f +vpermd zmm,zmm,m knce +vpermd zmm,zmm,zmm avx512f +vpermd zmm,zmm,zmm knce +vpermf32x4 zmm,k,m,imm knce +vpermf32x4 zmm,k,zmm,imm knce +vpermf32x4 zmm,m,imm knce +vpermf32x4 zmm,zmm,imm knce +vpermi2b xmm,k,xmm,m avx512vbmi +vpermi2b xmm,k,xmm,xmm avx512vbmi +vpermi2b xmm,xmm,m avx512vbmi +vpermi2b xmm,xmm,xmm avx512vbmi +vpermi2b ymm,k,ymm,m avx512vbmi +vpermi2b ymm,k,ymm,ymm avx512vbmi +vpermi2b ymm,ymm,m avx512vbmi +vpermi2b ymm,ymm,ymm avx512vbmi +vpermi2b zmm,k,zmm,m avx512vbmi +vpermi2b zmm,k,zmm,zmm avx512vbmi +vpermi2b zmm,zmm,m avx512vbmi +vpermi2b zmm,zmm,zmm avx512vbmi +vpermi2d xmm,k,xmm,m avx512f +vpermi2d xmm,k,xmm,xmm avx512f +vpermi2d xmm,xmm,m avx512f +vpermi2d xmm,xmm,xmm avx512f +vpermi2d ymm,k,ymm,m avx512f +vpermi2d ymm,k,ymm,ymm avx512f +vpermi2d ymm,ymm,m avx512f +vpermi2d ymm,ymm,ymm avx512f +vpermi2d zmm,k,zmm,m avx512f +vpermi2d zmm,k,zmm,zmm avx512f +vpermi2d zmm,zmm,m avx512f +vpermi2d zmm,zmm,zmm avx512f +vpermi2pd xmm,k,xmm,m avx512f +vpermi2pd xmm,k,xmm,xmm avx512f +vpermi2pd xmm,xmm,m avx512f +vpermi2pd xmm,xmm,xmm avx512f +vpermi2pd ymm,k,ymm,m avx512f +vpermi2pd ymm,k,ymm,ymm avx512f +vpermi2pd ymm,ymm,m avx512f +vpermi2pd ymm,ymm,ymm avx512f +vpermi2pd zmm,k,zmm,m avx512f +vpermi2pd zmm,k,zmm,zmm avx512f +vpermi2pd zmm,zmm,m avx512f +vpermi2pd zmm,zmm,zmm avx512f +vpermi2ps xmm,k,xmm,m avx512f +vpermi2ps xmm,k,xmm,xmm avx512f +vpermi2ps xmm,xmm,m avx512f +vpermi2ps xmm,xmm,xmm avx512f +vpermi2ps ymm,k,ymm,m avx512f +vpermi2ps ymm,k,ymm,ymm avx512f +vpermi2ps ymm,ymm,m avx512f +vpermi2ps ymm,ymm,ymm avx512f +vpermi2ps zmm,k,zmm,m avx512f +vpermi2ps zmm,k,zmm,zmm avx512f +vpermi2ps zmm,zmm,m avx512f +vpermi2ps zmm,zmm,zmm avx512f +vpermi2q xmm,k,xmm,m avx512f +vpermi2q xmm,k,xmm,xmm avx512f +vpermi2q xmm,xmm,m avx512f +vpermi2q xmm,xmm,xmm avx512f +vpermi2q ymm,k,ymm,m avx512f +vpermi2q ymm,k,ymm,ymm avx512f +vpermi2q ymm,ymm,m avx512f +vpermi2q ymm,ymm,ymm avx512f +vpermi2q zmm,k,zmm,m avx512f +vpermi2q zmm,k,zmm,zmm avx512f +vpermi2q zmm,zmm,m avx512f +vpermi2q zmm,zmm,zmm avx512f +vpermi2w xmm,k,xmm,m avx512bw +vpermi2w xmm,k,xmm,xmm avx512bw +vpermi2w xmm,xmm,m avx512bw +vpermi2w xmm,xmm,xmm avx512bw +vpermi2w ymm,k,ymm,m avx512bw +vpermi2w ymm,k,ymm,ymm avx512bw +vpermi2w ymm,ymm,m avx512bw +vpermi2w ymm,ymm,ymm avx512bw +vpermi2w zmm,k,zmm,m avx512bw +vpermi2w zmm,k,zmm,zmm avx512bw +vpermi2w zmm,zmm,m avx512bw +vpermi2w zmm,zmm,zmm avx512bw +vpermil2pd xmm,xmm,m,xmm,imm xop +vpermil2pd xmm,xmm,xmm,m,imm xop +vpermil2pd xmm,xmm,xmm,xmm,imm xop +vpermil2pd ymm,ymm,m,ymm,imm xop +vpermil2pd ymm,ymm,ymm,m,imm xop +vpermil2pd ymm,ymm,ymm,ymm,imm xop +vpermil2ps xmm,xmm,m,xmm,imm xop +vpermil2ps xmm,xmm,xmm,m,imm xop +vpermil2ps xmm,xmm,xmm,xmm,imm xop +vpermil2ps ymm,ymm,m,ymm,imm xop +vpermil2ps ymm,ymm,ymm,m,imm xop +vpermil2ps ymm,ymm,ymm,ymm,imm xop +vpermilpd xmm,k,m,imm avx512f +vpermilpd xmm,k,xmm,imm avx512f +vpermilpd xmm,k,xmm,m avx512f +vpermilpd xmm,k,xmm,xmm avx512f +vpermilpd xmm,m,imm avx +vpermilpd xmm,m,imm avx512f +vpermilpd xmm,xmm,imm avx +vpermilpd xmm,xmm,imm avx512f +vpermilpd xmm,xmm,m avx +vpermilpd xmm,xmm,m avx512f +vpermilpd xmm,xmm,xmm avx +vpermilpd xmm,xmm,xmm avx512f +vpermilpd ymm,k,m,imm avx512f +vpermilpd ymm,k,ymm,imm avx512f +vpermilpd ymm,k,ymm,m avx512f +vpermilpd ymm,k,ymm,ymm avx512f +vpermilpd ymm,m,imm avx +vpermilpd ymm,m,imm avx512f +vpermilpd ymm,ymm,imm avx +vpermilpd ymm,ymm,imm avx512f +vpermilpd ymm,ymm,m avx +vpermilpd ymm,ymm,m avx512f +vpermilpd ymm,ymm,ymm avx +vpermilpd ymm,ymm,ymm avx512f +vpermilpd zmm,k,m,imm avx512f +vpermilpd zmm,k,zmm,imm avx512f +vpermilpd zmm,k,zmm,m avx512f +vpermilpd zmm,k,zmm,zmm avx512f +vpermilpd zmm,m,imm avx512f +vpermilpd zmm,zmm,imm avx512f +vpermilpd zmm,zmm,m avx512f +vpermilpd zmm,zmm,zmm avx512f +vpermilps xmm,k,m,imm avx512f +vpermilps xmm,k,xmm,imm avx512f +vpermilps xmm,k,xmm,m avx512f +vpermilps xmm,k,xmm,xmm avx512f +vpermilps xmm,m,imm avx +vpermilps xmm,m,imm avx512f +vpermilps xmm,xmm,imm avx +vpermilps xmm,xmm,imm avx512f +vpermilps xmm,xmm,m avx +vpermilps xmm,xmm,m avx512f +vpermilps xmm,xmm,xmm avx +vpermilps xmm,xmm,xmm avx512f +vpermilps ymm,k,m,imm avx512f +vpermilps ymm,k,ymm,imm avx512f +vpermilps ymm,k,ymm,m avx512f +vpermilps ymm,k,ymm,ymm avx512f +vpermilps ymm,m,imm avx +vpermilps ymm,m,imm avx512f +vpermilps ymm,ymm,imm avx +vpermilps ymm,ymm,imm avx512f +vpermilps ymm,ymm,m avx +vpermilps ymm,ymm,m avx512f +vpermilps ymm,ymm,ymm avx +vpermilps ymm,ymm,ymm avx512f +vpermilps zmm,k,m,imm avx512f +vpermilps zmm,k,zmm,imm avx512f +vpermilps zmm,k,zmm,m avx512f +vpermilps zmm,k,zmm,zmm avx512f +vpermilps zmm,m,imm avx512f +vpermilps zmm,zmm,imm avx512f +vpermilps zmm,zmm,m avx512f +vpermilps zmm,zmm,zmm avx512f +vpermpd ymm,k,m,imm avx512f +vpermpd ymm,k,ymm,imm avx512f +vpermpd ymm,k,ymm,m avx512f +vpermpd ymm,k,ymm,ymm avx512f +vpermpd ymm,m,imm avx2 +vpermpd ymm,m,imm avx512f +vpermpd ymm,ymm,imm avx2 +vpermpd ymm,ymm,imm avx512f +vpermpd ymm,ymm,m avx512f +vpermpd ymm,ymm,ymm avx512f +vpermpd zmm,k,m,imm avx512f +vpermpd zmm,k,zmm,imm avx512f +vpermpd zmm,k,zmm,m avx512f +vpermpd zmm,k,zmm,zmm avx512f +vpermpd zmm,m,imm avx512f +vpermpd zmm,zmm,imm avx512f +vpermpd zmm,zmm,m avx512f +vpermpd zmm,zmm,zmm avx512f +vpermps ymm,k,ymm,m avx512f +vpermps ymm,k,ymm,ymm avx512f +vpermps ymm,ymm,m avx2 +vpermps ymm,ymm,m avx512f +vpermps ymm,ymm,ymm avx2 +vpermps ymm,ymm,ymm avx512f +vpermps zmm,k,zmm,m avx512f +vpermps zmm,k,zmm,zmm avx512f +vpermps zmm,zmm,m avx512f +vpermps zmm,zmm,zmm avx512f +vpermq ymm,k,m,imm avx512f +vpermq ymm,k,ymm,imm avx512f +vpermq ymm,k,ymm,m avx512f +vpermq ymm,k,ymm,ymm avx512f +vpermq ymm,m,imm avx2 +vpermq ymm,m,imm avx512f +vpermq ymm,ymm,imm avx2 +vpermq ymm,ymm,imm avx512f +vpermq ymm,ymm,m avx512f +vpermq ymm,ymm,ymm avx512f +vpermq zmm,k,m,imm avx512f +vpermq zmm,k,zmm,imm avx512f +vpermq zmm,k,zmm,m avx512f +vpermq zmm,k,zmm,zmm avx512f +vpermq zmm,m,imm avx512f +vpermq zmm,zmm,imm avx512f +vpermq zmm,zmm,m avx512f +vpermq zmm,zmm,zmm avx512f +vpermt2b xmm,k,xmm,m avx512vbmi +vpermt2b xmm,k,xmm,xmm avx512vbmi +vpermt2b xmm,xmm,m avx512vbmi +vpermt2b xmm,xmm,xmm avx512vbmi +vpermt2b ymm,k,ymm,m avx512vbmi +vpermt2b ymm,k,ymm,ymm avx512vbmi +vpermt2b ymm,ymm,m avx512vbmi +vpermt2b ymm,ymm,ymm avx512vbmi +vpermt2b zmm,k,zmm,m avx512vbmi +vpermt2b zmm,k,zmm,zmm avx512vbmi +vpermt2b zmm,zmm,m avx512vbmi +vpermt2b zmm,zmm,zmm avx512vbmi +vpermt2d xmm,k,xmm,m avx512f +vpermt2d xmm,k,xmm,xmm avx512f +vpermt2d xmm,xmm,m avx512f +vpermt2d xmm,xmm,xmm avx512f +vpermt2d ymm,k,ymm,m avx512f +vpermt2d ymm,k,ymm,ymm avx512f +vpermt2d ymm,ymm,m avx512f +vpermt2d ymm,ymm,ymm avx512f +vpermt2d zmm,k,zmm,m avx512f +vpermt2d zmm,k,zmm,zmm avx512f +vpermt2d zmm,zmm,m avx512f +vpermt2d zmm,zmm,zmm avx512f +vpermt2pd xmm,k,xmm,m avx512f +vpermt2pd xmm,k,xmm,xmm avx512f +vpermt2pd xmm,xmm,m avx512f +vpermt2pd xmm,xmm,xmm avx512f +vpermt2pd ymm,k,ymm,m avx512f +vpermt2pd ymm,k,ymm,ymm avx512f +vpermt2pd ymm,ymm,m avx512f +vpermt2pd ymm,ymm,ymm avx512f +vpermt2pd zmm,k,zmm,m avx512f +vpermt2pd zmm,k,zmm,zmm avx512f +vpermt2pd zmm,zmm,m avx512f +vpermt2pd zmm,zmm,zmm avx512f +vpermt2ps xmm,k,xmm,m avx512f +vpermt2ps xmm,k,xmm,xmm avx512f +vpermt2ps xmm,xmm,m avx512f +vpermt2ps xmm,xmm,xmm avx512f +vpermt2ps ymm,k,ymm,m avx512f +vpermt2ps ymm,k,ymm,ymm avx512f +vpermt2ps ymm,ymm,m avx512f +vpermt2ps ymm,ymm,ymm avx512f +vpermt2ps zmm,k,zmm,m avx512f +vpermt2ps zmm,k,zmm,zmm avx512f +vpermt2ps zmm,zmm,m avx512f +vpermt2ps zmm,zmm,zmm avx512f +vpermt2q xmm,k,xmm,m avx512f +vpermt2q xmm,k,xmm,xmm avx512f +vpermt2q xmm,xmm,m avx512f +vpermt2q xmm,xmm,xmm avx512f +vpermt2q ymm,k,ymm,m avx512f +vpermt2q ymm,k,ymm,ymm avx512f +vpermt2q ymm,ymm,m avx512f +vpermt2q ymm,ymm,ymm avx512f +vpermt2q zmm,k,zmm,m avx512f +vpermt2q zmm,k,zmm,zmm avx512f +vpermt2q zmm,zmm,m avx512f +vpermt2q zmm,zmm,zmm avx512f +vpermt2w xmm,k,xmm,m avx512bw +vpermt2w xmm,k,xmm,xmm avx512bw +vpermt2w xmm,xmm,m avx512bw +vpermt2w xmm,xmm,xmm avx512bw +vpermt2w ymm,k,ymm,m avx512bw +vpermt2w ymm,k,ymm,ymm avx512bw +vpermt2w ymm,ymm,m avx512bw +vpermt2w ymm,ymm,ymm avx512bw +vpermt2w zmm,k,zmm,m avx512bw +vpermt2w zmm,k,zmm,zmm avx512bw +vpermt2w zmm,zmm,m avx512bw +vpermt2w zmm,zmm,zmm avx512bw +vpermw xmm,k,xmm,m avx512bw +vpermw xmm,k,xmm,xmm avx512bw +vpermw xmm,xmm,m avx512bw +vpermw xmm,xmm,xmm avx512bw +vpermw ymm,k,ymm,m avx512bw +vpermw ymm,k,ymm,ymm avx512bw +vpermw ymm,ymm,m avx512bw +vpermw ymm,ymm,ymm avx512bw +vpermw zmm,k,zmm,m avx512bw +vpermw zmm,k,zmm,zmm avx512bw +vpermw zmm,zmm,m avx512bw +vpermw zmm,zmm,zmm avx512bw +vpexpandb xmm,k,m avx512vbmi2 +vpexpandb xmm,k,xmm avx512vbmi2 +vpexpandb xmm,m avx512vbmi2 +vpexpandb xmm,xmm avx512vbmi2 +vpexpandb ymm,k,m avx512vbmi2 +vpexpandb ymm,k,ymm avx512vbmi2 +vpexpandb ymm,m avx512vbmi2 +vpexpandb ymm,ymm avx512vbmi2 +vpexpandb zmm,k,m avx512vbmi2 +vpexpandb zmm,k,zmm avx512vbmi2 +vpexpandb zmm,m avx512vbmi2 +vpexpandb zmm,zmm avx512vbmi2 +vpexpandd xmm,k,m avx512f +vpexpandd xmm,k,xmm avx512f +vpexpandd xmm,m avx512f +vpexpandd xmm,xmm avx512f +vpexpandd ymm,k,m avx512f +vpexpandd ymm,k,ymm avx512f +vpexpandd ymm,m avx512f +vpexpandd ymm,ymm avx512f +vpexpandd zmm,k,m avx512f +vpexpandd zmm,k,zmm avx512f +vpexpandd zmm,m avx512f +vpexpandd zmm,zmm avx512f +vpexpandq xmm,k,m avx512f +vpexpandq xmm,k,xmm avx512f +vpexpandq xmm,m avx512f +vpexpandq xmm,xmm avx512f +vpexpandq ymm,k,m avx512f +vpexpandq ymm,k,ymm avx512f +vpexpandq ymm,m avx512f +vpexpandq ymm,ymm avx512f +vpexpandq zmm,k,m avx512f +vpexpandq zmm,k,zmm avx512f +vpexpandq zmm,m avx512f +vpexpandq zmm,zmm avx512f +vpexpandw xmm,k,m avx512vbmi2 +vpexpandw xmm,k,xmm avx512vbmi2 +vpexpandw xmm,m avx512vbmi2 +vpexpandw xmm,xmm avx512vbmi2 +vpexpandw ymm,k,m avx512vbmi2 +vpexpandw ymm,k,ymm avx512vbmi2 +vpexpandw ymm,m avx512vbmi2 +vpexpandw ymm,ymm avx512vbmi2 +vpexpandw zmm,k,m avx512vbmi2 +vpexpandw zmm,k,zmm avx512vbmi2 +vpexpandw zmm,m avx512vbmi2 +vpexpandw zmm,zmm avx512vbmi2 +vpextrb m,xmm,imm avx +vpextrb m,xmm,imm avx512bw +vpextrb r32,xmm,imm avx +vpextrb r32,xmm,imm avx512bw +vpextrd m,xmm,imm avx +vpextrd m,xmm,imm avx512dq +vpextrd r32,xmm,imm avx +vpextrd r32,xmm,imm avx512dq +vpextrq m,xmm,imm avx +vpextrq m,xmm,imm avx512dq +vpextrq r64,xmm,imm avx +vpextrq r64,xmm,imm avx512dq +vpextrw m,xmm,imm avx +vpextrw m,xmm,imm avx512bw +vpextrw r32,xmm,imm avx +vpextrw r32,xmm,imm avx512bw +vpgatherdd xmm,k,m avx512f +vpgatherdd xmm,m avx512f +vpgatherdd xmm,m,xmm avx2 +vpgatherdd ymm,k,m avx512f +vpgatherdd ymm,m avx512f +vpgatherdd ymm,m,ymm avx2 +vpgatherdd zmm,k,m avx512f +vpgatherdd zmm,k,m knce +vpgatherdd zmm,m avx512f +vpgatherdd zmm,m knce +vpgatherdq xmm,k,m avx512f +vpgatherdq xmm,m avx512f +vpgatherdq xmm,m,xmm avx2 +vpgatherdq ymm,k,m avx512f +vpgatherdq ymm,m avx512f +vpgatherdq ymm,m,ymm avx2 +vpgatherdq zmm,k,m avx512f +vpgatherdq zmm,k,m knce +vpgatherdq zmm,m avx512f +vpgatherdq zmm,m knce +vpgatherqd xmm,k,m avx512f +vpgatherqd xmm,m avx512f +vpgatherqd xmm,m,xmm avx2 +vpgatherqd ymm,k,m avx512f +vpgatherqd ymm,m avx512f +vpgatherqq xmm,k,m avx512f +vpgatherqq xmm,m avx512f +vpgatherqq xmm,m,xmm avx2 +vpgatherqq ymm,k,m avx512f +vpgatherqq ymm,m avx512f +vpgatherqq ymm,m,ymm avx2 +vpgatherqq zmm,k,m avx512f +vpgatherqq zmm,m avx512f +vphaddbd xmm,m xop +vphaddbd xmm,xmm xop +vphaddbq xmm,m xop +vphaddbq xmm,xmm xop +vphaddbw xmm,m xop +vphaddbw xmm,xmm xop +vphaddd xmm,xmm,m avx +vphaddd xmm,xmm,xmm avx +vphaddd ymm,ymm,m avx2 +vphaddd ymm,ymm,ymm avx2 +vphadddq xmm,m xop +vphadddq xmm,xmm xop +vphaddsw xmm,xmm,m avx +vphaddsw xmm,xmm,xmm avx +vphaddsw ymm,ymm,m avx2 +vphaddsw ymm,ymm,ymm avx2 +vphaddubd xmm,m xop +vphaddubd xmm,xmm xop +vphaddubq xmm,m xop +vphaddubq xmm,xmm xop +vphaddubw xmm,m xop +vphaddubw xmm,xmm xop +vphaddudq xmm,m xop +vphaddudq xmm,xmm xop +vphadduwd xmm,m xop +vphadduwd xmm,xmm xop +vphadduwq xmm,m xop +vphadduwq xmm,xmm xop +vphaddw xmm,xmm,m avx +vphaddw xmm,xmm,xmm avx +vphaddw ymm,ymm,m avx2 +vphaddw ymm,ymm,ymm avx2 +vphaddwd xmm,m xop +vphaddwd xmm,xmm xop +vphaddwq xmm,m xop +vphaddwq xmm,xmm xop +vphminposuw xmm,m avx +vphminposuw xmm,xmm avx +vphsubbw xmm,m xop +vphsubbw xmm,xmm xop +vphsubd xmm,xmm,m avx +vphsubd xmm,xmm,xmm avx +vphsubd ymm,ymm,m avx2 +vphsubd ymm,ymm,ymm avx2 +vphsubdq xmm,m xop +vphsubdq xmm,xmm xop +vphsubsw xmm,xmm,m avx +vphsubsw xmm,xmm,xmm avx +vphsubsw ymm,ymm,m avx2 +vphsubsw ymm,ymm,ymm avx2 +vphsubw xmm,xmm,m avx +vphsubw xmm,xmm,xmm avx +vphsubw ymm,ymm,m avx2 +vphsubw ymm,ymm,ymm avx2 +vphsubwd xmm,m xop +vphsubwd xmm,xmm xop +vpinsrb xmm,xmm,m,imm avx +vpinsrb xmm,xmm,m,imm avx512bw +vpinsrb xmm,xmm,r32,imm avx +vpinsrb xmm,xmm,r32,imm avx512bw +vpinsrd xmm,xmm,m,imm avx +vpinsrd xmm,xmm,m,imm avx512dq +vpinsrd xmm,xmm,r32,imm avx +vpinsrd xmm,xmm,r32,imm avx512dq +vpinsrq xmm,xmm,m,imm avx +vpinsrq xmm,xmm,m,imm avx512dq +vpinsrq xmm,xmm,r64,imm avx +vpinsrq xmm,xmm,r64,imm avx512dq +vpinsrw xmm,xmm,m,imm avx +vpinsrw xmm,xmm,m,imm avx512bw +vpinsrw xmm,xmm,r32,imm avx +vpinsrw xmm,xmm,r32,imm avx512bw +vplzcntd xmm,k,m avx512cd +vplzcntd xmm,k,xmm avx512cd +vplzcntd xmm,m avx512cd +vplzcntd xmm,xmm avx512cd +vplzcntd ymm,k,m avx512cd +vplzcntd ymm,k,ymm avx512cd +vplzcntd ymm,m avx512cd +vplzcntd ymm,ymm avx512cd +vplzcntd zmm,k,m avx512cd +vplzcntd zmm,k,zmm avx512cd +vplzcntd zmm,m avx512cd +vplzcntd zmm,zmm avx512cd +vplzcntq xmm,k,m avx512cd +vplzcntq xmm,k,xmm avx512cd +vplzcntq xmm,m avx512cd +vplzcntq xmm,xmm avx512cd +vplzcntq ymm,k,m avx512cd +vplzcntq ymm,k,ymm avx512cd +vplzcntq ymm,m avx512cd +vplzcntq ymm,ymm avx512cd +vplzcntq zmm,k,m avx512cd +vplzcntq zmm,k,zmm avx512cd +vplzcntq zmm,m avx512cd +vplzcntq zmm,zmm avx512cd +vpmacsdd xmm,xmm,m,xmm xop +vpmacsdd xmm,xmm,xmm,xmm xop +vpmacsdqh xmm,xmm,m,xmm xop +vpmacsdqh xmm,xmm,xmm,xmm xop +vpmacsdql xmm,xmm,m,xmm xop +vpmacsdql xmm,xmm,xmm,xmm xop +vpmacssdd xmm,xmm,m,xmm xop +vpmacssdd xmm,xmm,xmm,xmm xop +vpmacssdqh xmm,xmm,m,xmm xop +vpmacssdqh xmm,xmm,xmm,xmm xop +vpmacssdql xmm,xmm,m,xmm xop +vpmacssdql xmm,xmm,xmm,xmm xop +vpmacsswd xmm,xmm,m,xmm xop +vpmacsswd xmm,xmm,xmm,xmm xop +vpmacssww xmm,xmm,m,xmm xop +vpmacssww xmm,xmm,xmm,xmm xop +vpmacswd xmm,xmm,m,xmm xop +vpmacswd xmm,xmm,xmm,xmm xop +vpmacsww xmm,xmm,m,xmm xop +vpmacsww xmm,xmm,xmm,xmm xop +vpmadcsswd xmm,xmm,m,xmm xop +vpmadcsswd xmm,xmm,xmm,xmm xop +vpmadcswd xmm,xmm,m,xmm xop +vpmadcswd xmm,xmm,xmm,xmm xop +vpmadd231d zmm,k,zmm,m knce +vpmadd231d zmm,k,zmm,zmm knce +vpmadd231d zmm,zmm,m knce +vpmadd231d zmm,zmm,zmm knce +vpmadd233d zmm,k,zmm,m knce +vpmadd233d zmm,k,zmm,zmm knce +vpmadd233d zmm,zmm,m knce +vpmadd233d zmm,zmm,zmm knce +vpmadd52huq xmm,k,xmm,m avx512ifma +vpmadd52huq xmm,k,xmm,xmm avx512ifma +vpmadd52huq xmm,xmm,m avx512ifma +vpmadd52huq xmm,xmm,xmm avx512ifma +vpmadd52huq ymm,k,ymm,m avx512ifma +vpmadd52huq ymm,k,ymm,ymm avx512ifma +vpmadd52huq ymm,ymm,m avx512ifma +vpmadd52huq ymm,ymm,ymm avx512ifma +vpmadd52huq zmm,k,zmm,m avx512ifma +vpmadd52huq zmm,k,zmm,zmm avx512ifma +vpmadd52huq zmm,zmm,m avx512ifma +vpmadd52huq zmm,zmm,zmm avx512ifma +vpmadd52luq xmm,k,xmm,m avx512ifma +vpmadd52luq xmm,k,xmm,xmm avx512ifma +vpmadd52luq xmm,xmm,m avx512ifma +vpmadd52luq xmm,xmm,xmm avx512ifma +vpmadd52luq ymm,k,ymm,m avx512ifma +vpmadd52luq ymm,k,ymm,ymm avx512ifma +vpmadd52luq ymm,ymm,m avx512ifma +vpmadd52luq ymm,ymm,ymm avx512ifma +vpmadd52luq zmm,k,zmm,m avx512ifma +vpmadd52luq zmm,k,zmm,zmm avx512ifma +vpmadd52luq zmm,zmm,m avx512ifma +vpmadd52luq zmm,zmm,zmm avx512ifma +vpmaddubsw xmm,k,xmm,m avx512bw +vpmaddubsw xmm,k,xmm,xmm avx512bw +vpmaddubsw xmm,xmm,m avx +vpmaddubsw xmm,xmm,m avx512bw +vpmaddubsw xmm,xmm,xmm avx +vpmaddubsw xmm,xmm,xmm avx512bw +vpmaddubsw ymm,k,ymm,m avx512bw +vpmaddubsw ymm,k,ymm,ymm avx512bw +vpmaddubsw ymm,ymm,m avx2 +vpmaddubsw ymm,ymm,m avx512bw +vpmaddubsw ymm,ymm,ymm avx2 +vpmaddubsw ymm,ymm,ymm avx512bw +vpmaddubsw zmm,k,zmm,m avx512bw +vpmaddubsw zmm,k,zmm,zmm avx512bw +vpmaddubsw zmm,zmm,m avx512bw +vpmaddubsw zmm,zmm,zmm avx512bw +vpmaddwd xmm,k,xmm,m avx512bw +vpmaddwd xmm,k,xmm,xmm avx512bw +vpmaddwd xmm,xmm,m avx +vpmaddwd xmm,xmm,m avx512bw +vpmaddwd xmm,xmm,xmm avx +vpmaddwd xmm,xmm,xmm avx512bw +vpmaddwd ymm,k,ymm,m avx512bw +vpmaddwd ymm,k,ymm,ymm avx512bw +vpmaddwd ymm,ymm,m avx2 +vpmaddwd ymm,ymm,m avx512bw +vpmaddwd ymm,ymm,ymm avx2 +vpmaddwd ymm,ymm,ymm avx512bw +vpmaddwd zmm,k,zmm,m avx512bw +vpmaddwd zmm,k,zmm,zmm avx512bw +vpmaddwd zmm,zmm,m avx512bw +vpmaddwd zmm,zmm,zmm avx512bw +vpmaskmovd m,xmm,xmm avx2 +vpmaskmovd m,ymm,ymm avx2 +vpmaskmovd xmm,xmm,m avx2 +vpmaskmovd ymm,ymm,m avx2 +vpmaskmovq m,xmm,xmm avx2 +vpmaskmovq m,ymm,ymm avx2 +vpmaskmovq xmm,xmm,m avx2 +vpmaskmovq ymm,ymm,m avx2 +vpmaxsb xmm,k,xmm,m avx512bw +vpmaxsb xmm,k,xmm,xmm avx512bw +vpmaxsb xmm,xmm,m avx +vpmaxsb xmm,xmm,m avx512bw +vpmaxsb xmm,xmm,xmm avx +vpmaxsb xmm,xmm,xmm avx512bw +vpmaxsb ymm,k,ymm,m avx512bw +vpmaxsb ymm,k,ymm,ymm avx512bw +vpmaxsb ymm,ymm,m avx2 +vpmaxsb ymm,ymm,m avx512bw +vpmaxsb ymm,ymm,ymm avx2 +vpmaxsb ymm,ymm,ymm avx512bw +vpmaxsb zmm,k,zmm,m avx512bw +vpmaxsb zmm,k,zmm,zmm avx512bw +vpmaxsb zmm,zmm,m avx512bw +vpmaxsb zmm,zmm,zmm avx512bw +vpmaxsd xmm,k,xmm,m avx512f +vpmaxsd xmm,k,xmm,xmm avx512f +vpmaxsd xmm,xmm,m avx +vpmaxsd xmm,xmm,m avx512f +vpmaxsd xmm,xmm,xmm avx +vpmaxsd xmm,xmm,xmm avx512f +vpmaxsd ymm,k,ymm,m avx512f +vpmaxsd ymm,k,ymm,ymm avx512f +vpmaxsd ymm,ymm,m avx2 +vpmaxsd ymm,ymm,m avx512f +vpmaxsd ymm,ymm,ymm avx2 +vpmaxsd ymm,ymm,ymm avx512f +vpmaxsd zmm,k,zmm,m avx512f +vpmaxsd zmm,k,zmm,m knce +vpmaxsd zmm,k,zmm,zmm avx512f +vpmaxsd zmm,k,zmm,zmm knce +vpmaxsd zmm,zmm,m avx512f +vpmaxsd zmm,zmm,m knce +vpmaxsd zmm,zmm,zmm avx512f +vpmaxsd zmm,zmm,zmm knce +vpmaxsq xmm,k,xmm,m avx512f +vpmaxsq xmm,k,xmm,xmm avx512f +vpmaxsq xmm,xmm,m avx512f +vpmaxsq xmm,xmm,xmm avx512f +vpmaxsq ymm,k,ymm,m avx512f +vpmaxsq ymm,k,ymm,ymm avx512f +vpmaxsq ymm,ymm,m avx512f +vpmaxsq ymm,ymm,ymm avx512f +vpmaxsq zmm,k,zmm,m avx512f +vpmaxsq zmm,k,zmm,zmm avx512f +vpmaxsq zmm,zmm,m avx512f +vpmaxsq zmm,zmm,zmm avx512f +vpmaxsw xmm,k,xmm,m avx512bw +vpmaxsw xmm,k,xmm,xmm avx512bw +vpmaxsw xmm,xmm,m avx +vpmaxsw xmm,xmm,m avx512bw +vpmaxsw xmm,xmm,xmm avx +vpmaxsw xmm,xmm,xmm avx512bw +vpmaxsw ymm,k,ymm,m avx512bw +vpmaxsw ymm,k,ymm,ymm avx512bw +vpmaxsw ymm,ymm,m avx2 +vpmaxsw ymm,ymm,m avx512bw +vpmaxsw ymm,ymm,ymm avx2 +vpmaxsw ymm,ymm,ymm avx512bw +vpmaxsw zmm,k,zmm,m avx512bw +vpmaxsw zmm,k,zmm,zmm avx512bw +vpmaxsw zmm,zmm,m avx512bw +vpmaxsw zmm,zmm,zmm avx512bw +vpmaxub xmm,k,xmm,m avx512bw +vpmaxub xmm,k,xmm,xmm avx512bw +vpmaxub xmm,xmm,m avx +vpmaxub xmm,xmm,m avx512bw +vpmaxub xmm,xmm,xmm avx +vpmaxub xmm,xmm,xmm avx512bw +vpmaxub ymm,k,ymm,m avx512bw +vpmaxub ymm,k,ymm,ymm avx512bw +vpmaxub ymm,ymm,m avx2 +vpmaxub ymm,ymm,m avx512bw +vpmaxub ymm,ymm,ymm avx2 +vpmaxub ymm,ymm,ymm avx512bw +vpmaxub zmm,k,zmm,m avx512bw +vpmaxub zmm,k,zmm,zmm avx512bw +vpmaxub zmm,zmm,m avx512bw +vpmaxub zmm,zmm,zmm avx512bw +vpmaxud xmm,k,xmm,m avx512f +vpmaxud xmm,k,xmm,xmm avx512f +vpmaxud xmm,xmm,m avx +vpmaxud xmm,xmm,m avx512f +vpmaxud xmm,xmm,xmm avx +vpmaxud xmm,xmm,xmm avx512f +vpmaxud ymm,k,ymm,m avx512f +vpmaxud ymm,k,ymm,ymm avx512f +vpmaxud ymm,ymm,m avx2 +vpmaxud ymm,ymm,m avx512f +vpmaxud ymm,ymm,ymm avx2 +vpmaxud ymm,ymm,ymm avx512f +vpmaxud zmm,k,zmm,m avx512f +vpmaxud zmm,k,zmm,m knce +vpmaxud zmm,k,zmm,zmm avx512f +vpmaxud zmm,k,zmm,zmm knce +vpmaxud zmm,zmm,m avx512f +vpmaxud zmm,zmm,m knce +vpmaxud zmm,zmm,zmm avx512f +vpmaxud zmm,zmm,zmm knce +vpmaxuq xmm,k,xmm,m avx512f +vpmaxuq xmm,k,xmm,xmm avx512f +vpmaxuq xmm,xmm,m avx512f +vpmaxuq xmm,xmm,xmm avx512f +vpmaxuq ymm,k,ymm,m avx512f +vpmaxuq ymm,k,ymm,ymm avx512f +vpmaxuq ymm,ymm,m avx512f +vpmaxuq ymm,ymm,ymm avx512f +vpmaxuq zmm,k,zmm,m avx512f +vpmaxuq zmm,k,zmm,zmm avx512f +vpmaxuq zmm,zmm,m avx512f +vpmaxuq zmm,zmm,zmm avx512f +vpmaxuw xmm,k,xmm,m avx512bw +vpmaxuw xmm,k,xmm,xmm avx512bw +vpmaxuw xmm,xmm,m avx +vpmaxuw xmm,xmm,m avx512bw +vpmaxuw xmm,xmm,xmm avx +vpmaxuw xmm,xmm,xmm avx512bw +vpmaxuw ymm,k,ymm,m avx512bw +vpmaxuw ymm,k,ymm,ymm avx512bw +vpmaxuw ymm,ymm,m avx2 +vpmaxuw ymm,ymm,m avx512bw +vpmaxuw ymm,ymm,ymm avx2 +vpmaxuw ymm,ymm,ymm avx512bw +vpmaxuw zmm,k,zmm,m avx512bw +vpmaxuw zmm,k,zmm,zmm avx512bw +vpmaxuw zmm,zmm,m avx512bw +vpmaxuw zmm,zmm,zmm avx512bw +vpminsb xmm,k,xmm,m avx512bw +vpminsb xmm,k,xmm,xmm avx512bw +vpminsb xmm,xmm,m avx +vpminsb xmm,xmm,m avx512bw +vpminsb xmm,xmm,xmm avx +vpminsb xmm,xmm,xmm avx512bw +vpminsb ymm,k,ymm,m avx512bw +vpminsb ymm,k,ymm,ymm avx512bw +vpminsb ymm,ymm,m avx2 +vpminsb ymm,ymm,m avx512bw +vpminsb ymm,ymm,ymm avx2 +vpminsb ymm,ymm,ymm avx512bw +vpminsb zmm,k,zmm,m avx512bw +vpminsb zmm,k,zmm,zmm avx512bw +vpminsb zmm,zmm,m avx512bw +vpminsb zmm,zmm,zmm avx512bw +vpminsd xmm,k,xmm,m avx512f +vpminsd xmm,k,xmm,xmm avx512f +vpminsd xmm,xmm,m avx +vpminsd xmm,xmm,m avx512f +vpminsd xmm,xmm,xmm avx +vpminsd xmm,xmm,xmm avx512f +vpminsd ymm,k,ymm,m avx512f +vpminsd ymm,k,ymm,ymm avx512f +vpminsd ymm,ymm,m avx2 +vpminsd ymm,ymm,m avx512f +vpminsd ymm,ymm,ymm avx2 +vpminsd ymm,ymm,ymm avx512f +vpminsd zmm,k,zmm,m avx512f +vpminsd zmm,k,zmm,m knce +vpminsd zmm,k,zmm,zmm avx512f +vpminsd zmm,k,zmm,zmm knce +vpminsd zmm,zmm,m avx512f +vpminsd zmm,zmm,m knce +vpminsd zmm,zmm,zmm avx512f +vpminsd zmm,zmm,zmm knce +vpminsq xmm,k,xmm,m avx512f +vpminsq xmm,k,xmm,xmm avx512f +vpminsq xmm,xmm,m avx512f +vpminsq xmm,xmm,xmm avx512f +vpminsq ymm,k,ymm,m avx512f +vpminsq ymm,k,ymm,ymm avx512f +vpminsq ymm,ymm,m avx512f +vpminsq ymm,ymm,ymm avx512f +vpminsq zmm,k,zmm,m avx512f +vpminsq zmm,k,zmm,zmm avx512f +vpminsq zmm,zmm,m avx512f +vpminsq zmm,zmm,zmm avx512f +vpminsw xmm,k,xmm,m avx512bw +vpminsw xmm,k,xmm,xmm avx512bw +vpminsw xmm,xmm,m avx +vpminsw xmm,xmm,m avx512bw +vpminsw xmm,xmm,xmm avx +vpminsw xmm,xmm,xmm avx512bw +vpminsw ymm,k,ymm,m avx512bw +vpminsw ymm,k,ymm,ymm avx512bw +vpminsw ymm,ymm,m avx2 +vpminsw ymm,ymm,m avx512bw +vpminsw ymm,ymm,ymm avx2 +vpminsw ymm,ymm,ymm avx512bw +vpminsw zmm,k,zmm,m avx512bw +vpminsw zmm,k,zmm,zmm avx512bw +vpminsw zmm,zmm,m avx512bw +vpminsw zmm,zmm,zmm avx512bw +vpminub xmm,k,xmm,m avx512bw +vpminub xmm,k,xmm,xmm avx512bw +vpminub xmm,xmm,m avx +vpminub xmm,xmm,m avx512bw +vpminub xmm,xmm,xmm avx +vpminub xmm,xmm,xmm avx512bw +vpminub ymm,k,ymm,m avx512bw +vpminub ymm,k,ymm,ymm avx512bw +vpminub ymm,ymm,m avx2 +vpminub ymm,ymm,m avx512bw +vpminub ymm,ymm,ymm avx2 +vpminub ymm,ymm,ymm avx512bw +vpminub zmm,k,zmm,m avx512bw +vpminub zmm,k,zmm,zmm avx512bw +vpminub zmm,zmm,m avx512bw +vpminub zmm,zmm,zmm avx512bw +vpminud xmm,k,xmm,m avx512f +vpminud xmm,k,xmm,xmm avx512f +vpminud xmm,xmm,m avx +vpminud xmm,xmm,m avx512f +vpminud xmm,xmm,xmm avx +vpminud xmm,xmm,xmm avx512f +vpminud ymm,k,ymm,m avx512f +vpminud ymm,k,ymm,ymm avx512f +vpminud ymm,ymm,m avx2 +vpminud ymm,ymm,m avx512f +vpminud ymm,ymm,ymm avx2 +vpminud ymm,ymm,ymm avx512f +vpminud zmm,k,zmm,m avx512f +vpminud zmm,k,zmm,m knce +vpminud zmm,k,zmm,zmm avx512f +vpminud zmm,k,zmm,zmm knce +vpminud zmm,zmm,m avx512f +vpminud zmm,zmm,m knce +vpminud zmm,zmm,zmm avx512f +vpminud zmm,zmm,zmm knce +vpminuq xmm,k,xmm,m avx512f +vpminuq xmm,k,xmm,xmm avx512f +vpminuq xmm,xmm,m avx512f +vpminuq xmm,xmm,xmm avx512f +vpminuq ymm,k,ymm,m avx512f +vpminuq ymm,k,ymm,ymm avx512f +vpminuq ymm,ymm,m avx512f +vpminuq ymm,ymm,ymm avx512f +vpminuq zmm,k,zmm,m avx512f +vpminuq zmm,k,zmm,zmm avx512f +vpminuq zmm,zmm,m avx512f +vpminuq zmm,zmm,zmm avx512f +vpminuw xmm,k,xmm,m avx512bw +vpminuw xmm,k,xmm,xmm avx512bw +vpminuw xmm,xmm,m avx +vpminuw xmm,xmm,m avx512bw +vpminuw xmm,xmm,xmm avx +vpminuw xmm,xmm,xmm avx512bw +vpminuw ymm,k,ymm,m avx512bw +vpminuw ymm,k,ymm,ymm avx512bw +vpminuw ymm,ymm,m avx2 +vpminuw ymm,ymm,m avx512bw +vpminuw ymm,ymm,ymm avx2 +vpminuw ymm,ymm,ymm avx512bw +vpminuw zmm,k,zmm,m avx512bw +vpminuw zmm,k,zmm,zmm avx512bw +vpminuw zmm,zmm,m avx512bw +vpminuw zmm,zmm,zmm avx512bw +vpmovb2m k,xmm avx512bw +vpmovb2m k,ymm avx512bw +vpmovb2m k,zmm avx512bw +vpmovb2m xmm avx512bw +vpmovb2m ymm avx512bw +vpmovb2m zmm avx512bw +vpmovd2m k,xmm avx512dq +vpmovd2m k,ymm avx512dq +vpmovd2m k,zmm avx512dq +vpmovd2m xmm avx512dq +vpmovd2m ymm avx512dq +vpmovd2m zmm avx512dq +vpmovdb m,k,xmm avx512f +vpmovdb m,k,ymm avx512f +vpmovdb m,k,zmm avx512f +vpmovdb m,xmm avx512f +vpmovdb m,ymm avx512f +vpmovdb m,zmm avx512f +vpmovdb xmm,k,xmm avx512f +vpmovdb xmm,k,ymm avx512f +vpmovdb xmm,k,zmm avx512f +vpmovdb xmm,xmm avx512f +vpmovdb xmm,ymm avx512f +vpmovdb xmm,zmm avx512f +vpmovdw m,k,xmm avx512f +vpmovdw m,k,ymm avx512f +vpmovdw m,k,zmm avx512f +vpmovdw m,xmm avx512f +vpmovdw m,ymm avx512f +vpmovdw m,zmm avx512f +vpmovdw xmm,k,xmm avx512f +vpmovdw xmm,k,ymm avx512f +vpmovdw xmm,xmm avx512f +vpmovdw xmm,ymm avx512f +vpmovdw ymm,k,zmm avx512f +vpmovdw ymm,zmm avx512f +vpmovm2b xmm avx512bw +vpmovm2b xmm,k avx512bw +vpmovm2b ymm avx512bw +vpmovm2b ymm,k avx512bw +vpmovm2b zmm avx512bw +vpmovm2b zmm,k avx512bw +vpmovm2d xmm avx512dq +vpmovm2d xmm,k avx512dq +vpmovm2d ymm avx512dq +vpmovm2d ymm,k avx512dq +vpmovm2d zmm avx512dq +vpmovm2d zmm,k avx512dq +vpmovm2q xmm avx512dq +vpmovm2q xmm,k avx512dq +vpmovm2q ymm avx512dq +vpmovm2q ymm,k avx512dq +vpmovm2q zmm avx512dq +vpmovm2q zmm,k avx512dq +vpmovm2w xmm avx512bw +vpmovm2w xmm,k avx512bw +vpmovm2w ymm avx512bw +vpmovm2w ymm,k avx512bw +vpmovm2w zmm avx512bw +vpmovm2w zmm,k avx512bw +vpmovmskb r32,xmm avx +vpmovmskb r32,ymm avx2 +vpmovq2m k,xmm avx512dq +vpmovq2m k,ymm avx512dq +vpmovq2m k,zmm avx512dq +vpmovq2m xmm avx512dq +vpmovq2m ymm avx512dq +vpmovq2m zmm avx512dq +vpmovqb m,k,xmm avx512f +vpmovqb m,k,ymm avx512f +vpmovqb m,k,zmm avx512f +vpmovqb m,xmm avx512f +vpmovqb m,ymm avx512f +vpmovqb m,zmm avx512f +vpmovqb xmm,k,xmm avx512f +vpmovqb xmm,k,ymm avx512f +vpmovqb xmm,k,zmm avx512f +vpmovqb xmm,xmm avx512f +vpmovqb xmm,ymm avx512f +vpmovqb xmm,zmm avx512f +vpmovqd m,k,xmm avx512f +vpmovqd m,k,ymm avx512f +vpmovqd m,k,zmm avx512f +vpmovqd m,xmm avx512f +vpmovqd m,ymm avx512f +vpmovqd m,zmm avx512f +vpmovqd xmm,k,xmm avx512f +vpmovqd xmm,k,ymm avx512f +vpmovqd xmm,xmm avx512f +vpmovqd xmm,ymm avx512f +vpmovqd ymm,k,zmm avx512f +vpmovqd ymm,zmm avx512f +vpmovqw m,k,xmm avx512f +vpmovqw m,k,ymm avx512f +vpmovqw m,k,zmm avx512f +vpmovqw m,xmm avx512f +vpmovqw m,ymm avx512f +vpmovqw m,zmm avx512f +vpmovqw xmm,k,xmm avx512f +vpmovqw xmm,k,ymm avx512f +vpmovqw xmm,k,zmm avx512f +vpmovqw xmm,xmm avx512f +vpmovqw xmm,ymm avx512f +vpmovqw xmm,zmm avx512f +vpmovsdb m,k,xmm avx512f +vpmovsdb m,k,ymm avx512f +vpmovsdb m,k,zmm avx512f +vpmovsdb m,xmm avx512f +vpmovsdb m,ymm avx512f +vpmovsdb m,zmm avx512f +vpmovsdb xmm,k,xmm avx512f +vpmovsdb xmm,k,ymm avx512f +vpmovsdb xmm,k,zmm avx512f +vpmovsdb xmm,xmm avx512f +vpmovsdb xmm,ymm avx512f +vpmovsdb xmm,zmm avx512f +vpmovsdw m,k,xmm avx512f +vpmovsdw m,k,ymm avx512f +vpmovsdw m,k,zmm avx512f +vpmovsdw m,xmm avx512f +vpmovsdw m,ymm avx512f +vpmovsdw m,zmm avx512f +vpmovsdw xmm,k,xmm avx512f +vpmovsdw xmm,k,ymm avx512f +vpmovsdw xmm,xmm avx512f +vpmovsdw xmm,ymm avx512f +vpmovsdw ymm,k,zmm avx512f +vpmovsdw ymm,zmm avx512f +vpmovsqb m,k,xmm avx512f +vpmovsqb m,k,ymm avx512f +vpmovsqb m,k,zmm avx512f +vpmovsqb m,xmm avx512f +vpmovsqb m,ymm avx512f +vpmovsqb m,zmm avx512f +vpmovsqb xmm,k,xmm avx512f +vpmovsqb xmm,k,ymm avx512f +vpmovsqb xmm,k,zmm avx512f +vpmovsqb xmm,xmm avx512f +vpmovsqb xmm,ymm avx512f +vpmovsqb xmm,zmm avx512f +vpmovsqd m,k,xmm avx512f +vpmovsqd m,k,ymm avx512f +vpmovsqd m,k,zmm avx512f +vpmovsqd m,xmm avx512f +vpmovsqd m,ymm avx512f +vpmovsqd m,zmm avx512f +vpmovsqd xmm,k,xmm avx512f +vpmovsqd xmm,k,ymm avx512f +vpmovsqd xmm,xmm avx512f +vpmovsqd xmm,ymm avx512f +vpmovsqd ymm,k,zmm avx512f +vpmovsqd ymm,zmm avx512f +vpmovsqw m,k,xmm avx512f +vpmovsqw m,k,ymm avx512f +vpmovsqw m,k,zmm avx512f +vpmovsqw m,xmm avx512f +vpmovsqw m,ymm avx512f +vpmovsqw m,zmm avx512f +vpmovsqw xmm,k,xmm avx512f +vpmovsqw xmm,k,ymm avx512f +vpmovsqw xmm,k,zmm avx512f +vpmovsqw xmm,xmm avx512f +vpmovsqw xmm,ymm avx512f +vpmovsqw xmm,zmm avx512f +vpmovswb m,k,xmm avx512bw +vpmovswb m,k,ymm avx512bw +vpmovswb m,k,zmm avx512bw +vpmovswb m,xmm avx512bw +vpmovswb m,ymm avx512bw +vpmovswb m,zmm avx512bw +vpmovswb xmm,k,xmm avx512bw +vpmovswb xmm,k,ymm avx512bw +vpmovswb xmm,xmm avx512bw +vpmovswb xmm,ymm avx512bw +vpmovswb ymm,k,zmm avx512bw +vpmovswb ymm,zmm avx512bw +vpmovsxbd xmm,k,m avx512f +vpmovsxbd xmm,k,xmm avx512f +vpmovsxbd xmm,m avx +vpmovsxbd xmm,m avx512f +vpmovsxbd xmm,xmm avx +vpmovsxbd xmm,xmm avx512f +vpmovsxbd ymm,k,m avx512f +vpmovsxbd ymm,k,xmm avx512f +vpmovsxbd ymm,m avx2 +vpmovsxbd ymm,m avx512f +vpmovsxbd ymm,xmm avx2 +vpmovsxbd ymm,xmm avx512f +vpmovsxbd zmm,k,m avx512f +vpmovsxbd zmm,k,xmm avx512f +vpmovsxbd zmm,m avx512f +vpmovsxbd zmm,xmm avx512f +vpmovsxbq xmm,k,m avx512f +vpmovsxbq xmm,k,xmm avx512f +vpmovsxbq xmm,m avx +vpmovsxbq xmm,m avx512f +vpmovsxbq xmm,xmm avx +vpmovsxbq xmm,xmm avx512f +vpmovsxbq ymm,k,m avx512f +vpmovsxbq ymm,k,xmm avx512f +vpmovsxbq ymm,m avx2 +vpmovsxbq ymm,m avx512f +vpmovsxbq ymm,xmm avx2 +vpmovsxbq ymm,xmm avx512f +vpmovsxbq zmm,k,m avx512f +vpmovsxbq zmm,k,xmm avx512f +vpmovsxbq zmm,m avx512f +vpmovsxbq zmm,xmm avx512f +vpmovsxbw xmm,k,m avx512bw +vpmovsxbw xmm,k,xmm avx512bw +vpmovsxbw xmm,m avx +vpmovsxbw xmm,m avx512bw +vpmovsxbw xmm,xmm avx +vpmovsxbw xmm,xmm avx512bw +vpmovsxbw ymm,k,m avx512bw +vpmovsxbw ymm,k,xmm avx512bw +vpmovsxbw ymm,m avx2 +vpmovsxbw ymm,m avx512bw +vpmovsxbw ymm,xmm avx2 +vpmovsxbw ymm,xmm avx512bw +vpmovsxbw zmm,k,m avx512bw +vpmovsxbw zmm,k,ymm avx512bw +vpmovsxbw zmm,m avx512bw +vpmovsxbw zmm,ymm avx512bw +vpmovsxdq xmm,k,m avx512f +vpmovsxdq xmm,k,xmm avx512f +vpmovsxdq xmm,m avx +vpmovsxdq xmm,m avx512f +vpmovsxdq xmm,xmm avx +vpmovsxdq xmm,xmm avx512f +vpmovsxdq ymm,k,m avx512f +vpmovsxdq ymm,k,xmm avx512f +vpmovsxdq ymm,m avx2 +vpmovsxdq ymm,m avx512f +vpmovsxdq ymm,xmm avx2 +vpmovsxdq ymm,xmm avx512f +vpmovsxdq zmm,k,m avx512f +vpmovsxdq zmm,k,ymm avx512f +vpmovsxdq zmm,m avx512f +vpmovsxdq zmm,ymm avx512f +vpmovsxwd xmm,k,m avx512f +vpmovsxwd xmm,k,xmm avx512f +vpmovsxwd xmm,m avx +vpmovsxwd xmm,m avx512f +vpmovsxwd xmm,xmm avx +vpmovsxwd xmm,xmm avx512f +vpmovsxwd ymm,k,m avx512f +vpmovsxwd ymm,k,xmm avx512f +vpmovsxwd ymm,m avx2 +vpmovsxwd ymm,m avx512f +vpmovsxwd ymm,xmm avx2 +vpmovsxwd ymm,xmm avx512f +vpmovsxwd zmm,k,m avx512f +vpmovsxwd zmm,k,ymm avx512f +vpmovsxwd zmm,m avx512f +vpmovsxwd zmm,ymm avx512f +vpmovsxwq xmm,k,m avx512f +vpmovsxwq xmm,k,xmm avx512f +vpmovsxwq xmm,m avx +vpmovsxwq xmm,m avx512f +vpmovsxwq xmm,xmm avx +vpmovsxwq xmm,xmm avx512f +vpmovsxwq ymm,k,m avx512f +vpmovsxwq ymm,k,xmm avx512f +vpmovsxwq ymm,m avx2 +vpmovsxwq ymm,m avx512f +vpmovsxwq ymm,xmm avx2 +vpmovsxwq ymm,xmm avx512f +vpmovsxwq zmm,k,m avx512f +vpmovsxwq zmm,k,xmm avx512f +vpmovsxwq zmm,m avx512f +vpmovsxwq zmm,xmm avx512f +vpmovusdb m,k,xmm avx512f +vpmovusdb m,k,ymm avx512f +vpmovusdb m,k,zmm avx512f +vpmovusdb m,xmm avx512f +vpmovusdb m,ymm avx512f +vpmovusdb m,zmm avx512f +vpmovusdb xmm,k,xmm avx512f +vpmovusdb xmm,k,ymm avx512f +vpmovusdb xmm,k,zmm avx512f +vpmovusdb xmm,xmm avx512f +vpmovusdb xmm,ymm avx512f +vpmovusdb xmm,zmm avx512f +vpmovusdw m,k,xmm avx512f +vpmovusdw m,k,ymm avx512f +vpmovusdw m,k,zmm avx512f +vpmovusdw m,xmm avx512f +vpmovusdw m,ymm avx512f +vpmovusdw m,zmm avx512f +vpmovusdw xmm,k,xmm avx512f +vpmovusdw xmm,k,ymm avx512f +vpmovusdw xmm,xmm avx512f +vpmovusdw xmm,ymm avx512f +vpmovusdw ymm,k,zmm avx512f +vpmovusdw ymm,zmm avx512f +vpmovusqb m,k,xmm avx512f +vpmovusqb m,k,ymm avx512f +vpmovusqb m,k,zmm avx512f +vpmovusqb m,xmm avx512f +vpmovusqb m,ymm avx512f +vpmovusqb m,zmm avx512f +vpmovusqb xmm,k,xmm avx512f +vpmovusqb xmm,k,ymm avx512f +vpmovusqb xmm,k,zmm avx512f +vpmovusqb xmm,xmm avx512f +vpmovusqb xmm,ymm avx512f +vpmovusqb xmm,zmm avx512f +vpmovusqd m,k,xmm avx512f +vpmovusqd m,k,ymm avx512f +vpmovusqd m,k,zmm avx512f +vpmovusqd m,xmm avx512f +vpmovusqd m,ymm avx512f +vpmovusqd m,zmm avx512f +vpmovusqd xmm,k,xmm avx512f +vpmovusqd xmm,k,ymm avx512f +vpmovusqd xmm,xmm avx512f +vpmovusqd xmm,ymm avx512f +vpmovusqd ymm,k,zmm avx512f +vpmovusqd ymm,zmm avx512f +vpmovusqw m,k,xmm avx512f +vpmovusqw m,k,ymm avx512f +vpmovusqw m,k,zmm avx512f +vpmovusqw m,xmm avx512f +vpmovusqw m,ymm avx512f +vpmovusqw m,zmm avx512f +vpmovusqw xmm,k,xmm avx512f +vpmovusqw xmm,k,ymm avx512f +vpmovusqw xmm,k,zmm avx512f +vpmovusqw xmm,xmm avx512f +vpmovusqw xmm,ymm avx512f +vpmovusqw xmm,zmm avx512f +vpmovuswb m,k,xmm avx512bw +vpmovuswb m,k,ymm avx512bw +vpmovuswb m,k,zmm avx512bw +vpmovuswb m,xmm avx512bw +vpmovuswb m,ymm avx512bw +vpmovuswb m,zmm avx512bw +vpmovuswb xmm,k,xmm avx512bw +vpmovuswb xmm,k,ymm avx512bw +vpmovuswb xmm,xmm avx512bw +vpmovuswb xmm,ymm avx512bw +vpmovuswb ymm,k,zmm avx512bw +vpmovuswb ymm,zmm avx512bw +vpmovw2m k,xmm avx512bw +vpmovw2m k,ymm avx512bw +vpmovw2m k,zmm avx512bw +vpmovw2m xmm avx512bw +vpmovw2m ymm avx512bw +vpmovw2m zmm avx512bw +vpmovwb m,k,xmm avx512bw +vpmovwb m,k,ymm avx512bw +vpmovwb m,k,zmm avx512bw +vpmovwb m,xmm avx512bw +vpmovwb m,ymm avx512bw +vpmovwb m,zmm avx512bw +vpmovwb xmm,k,xmm avx512bw +vpmovwb xmm,k,ymm avx512bw +vpmovwb xmm,xmm avx512bw +vpmovwb xmm,ymm avx512bw +vpmovwb ymm,k,zmm avx512bw +vpmovwb ymm,zmm avx512bw +vpmovzxbd xmm,k,m avx512f +vpmovzxbd xmm,k,xmm avx512f +vpmovzxbd xmm,m avx +vpmovzxbd xmm,m avx512f +vpmovzxbd xmm,xmm avx +vpmovzxbd xmm,xmm avx512f +vpmovzxbd ymm,k,m avx512f +vpmovzxbd ymm,k,xmm avx512f +vpmovzxbd ymm,m avx2 +vpmovzxbd ymm,m avx512f +vpmovzxbd ymm,xmm avx2 +vpmovzxbd ymm,xmm avx512f +vpmovzxbd zmm,k,m avx512f +vpmovzxbd zmm,k,xmm avx512f +vpmovzxbd zmm,m avx512f +vpmovzxbd zmm,xmm avx512f +vpmovzxbq xmm,k,m avx512f +vpmovzxbq xmm,k,xmm avx512f +vpmovzxbq xmm,m avx +vpmovzxbq xmm,m avx512f +vpmovzxbq xmm,xmm avx +vpmovzxbq xmm,xmm avx512f +vpmovzxbq ymm,k,m avx512f +vpmovzxbq ymm,k,xmm avx512f +vpmovzxbq ymm,m avx2 +vpmovzxbq ymm,m avx512f +vpmovzxbq ymm,xmm avx2 +vpmovzxbq ymm,xmm avx512f +vpmovzxbq zmm,k,m avx512f +vpmovzxbq zmm,k,xmm avx512f +vpmovzxbq zmm,m avx512f +vpmovzxbq zmm,xmm avx512f +vpmovzxbw xmm,k,m avx512bw +vpmovzxbw xmm,k,xmm avx512bw +vpmovzxbw xmm,m avx +vpmovzxbw xmm,m avx512bw +vpmovzxbw xmm,xmm avx +vpmovzxbw xmm,xmm avx512bw +vpmovzxbw ymm,k,m avx512bw +vpmovzxbw ymm,k,xmm avx512bw +vpmovzxbw ymm,m avx2 +vpmovzxbw ymm,m avx512bw +vpmovzxbw ymm,xmm avx2 +vpmovzxbw ymm,xmm avx512bw +vpmovzxbw zmm,k,m avx512bw +vpmovzxbw zmm,k,ymm avx512bw +vpmovzxbw zmm,m avx512bw +vpmovzxbw zmm,ymm avx512bw +vpmovzxdq xmm,k,m avx512f +vpmovzxdq xmm,k,xmm avx512f +vpmovzxdq xmm,m avx +vpmovzxdq xmm,m avx512f +vpmovzxdq xmm,xmm avx +vpmovzxdq xmm,xmm avx512f +vpmovzxdq ymm,k,m avx512f +vpmovzxdq ymm,k,xmm avx512f +vpmovzxdq ymm,m avx2 +vpmovzxdq ymm,m avx512f +vpmovzxdq ymm,xmm avx2 +vpmovzxdq ymm,xmm avx512f +vpmovzxdq zmm,k,m avx512f +vpmovzxdq zmm,k,ymm avx512f +vpmovzxdq zmm,m avx512f +vpmovzxdq zmm,ymm avx512f +vpmovzxwd xmm,k,m avx512f +vpmovzxwd xmm,k,xmm avx512f +vpmovzxwd xmm,m avx +vpmovzxwd xmm,m avx512f +vpmovzxwd xmm,xmm avx +vpmovzxwd xmm,xmm avx512f +vpmovzxwd ymm,k,m avx512f +vpmovzxwd ymm,k,xmm avx512f +vpmovzxwd ymm,m avx2 +vpmovzxwd ymm,m avx512f +vpmovzxwd ymm,xmm avx2 +vpmovzxwd ymm,xmm avx512f +vpmovzxwd zmm,k,m avx512f +vpmovzxwd zmm,k,ymm avx512f +vpmovzxwd zmm,m avx512f +vpmovzxwd zmm,ymm avx512f +vpmovzxwq xmm,k,m avx512f +vpmovzxwq xmm,k,xmm avx512f +vpmovzxwq xmm,m avx +vpmovzxwq xmm,m avx512f +vpmovzxwq xmm,xmm avx +vpmovzxwq xmm,xmm avx512f +vpmovzxwq ymm,k,m avx512f +vpmovzxwq ymm,k,xmm avx512f +vpmovzxwq ymm,m avx2 +vpmovzxwq ymm,m avx512f +vpmovzxwq ymm,xmm avx2 +vpmovzxwq ymm,xmm avx512f +vpmovzxwq zmm,k,m avx512f +vpmovzxwq zmm,k,xmm avx512f +vpmovzxwq zmm,m avx512f +vpmovzxwq zmm,xmm avx512f +vpmuldq xmm,k,xmm,m avx512f +vpmuldq xmm,k,xmm,xmm avx512f +vpmuldq xmm,xmm,m avx +vpmuldq xmm,xmm,m avx512f +vpmuldq xmm,xmm,xmm avx +vpmuldq xmm,xmm,xmm avx512f +vpmuldq ymm,k,ymm,m avx512f +vpmuldq ymm,k,ymm,ymm avx512f +vpmuldq ymm,ymm,m avx2 +vpmuldq ymm,ymm,m avx512f +vpmuldq ymm,ymm,ymm avx2 +vpmuldq ymm,ymm,ymm avx512f +vpmuldq zmm,k,zmm,m avx512f +vpmuldq zmm,k,zmm,zmm avx512f +vpmuldq zmm,zmm,m avx512f +vpmuldq zmm,zmm,zmm avx512f +vpmulhd zmm,k,zmm,m knce +vpmulhd zmm,k,zmm,zmm knce +vpmulhd zmm,zmm,m knce +vpmulhd zmm,zmm,zmm knce +vpmulhrsw xmm,k,xmm,m avx512bw +vpmulhrsw xmm,k,xmm,xmm avx512bw +vpmulhrsw xmm,xmm,m avx +vpmulhrsw xmm,xmm,m avx512bw +vpmulhrsw xmm,xmm,xmm avx +vpmulhrsw xmm,xmm,xmm avx512bw +vpmulhrsw ymm,k,ymm,m avx512bw +vpmulhrsw ymm,k,ymm,ymm avx512bw +vpmulhrsw ymm,ymm,m avx2 +vpmulhrsw ymm,ymm,m avx512bw +vpmulhrsw ymm,ymm,ymm avx2 +vpmulhrsw ymm,ymm,ymm avx512bw +vpmulhrsw zmm,k,zmm,m avx512bw +vpmulhrsw zmm,k,zmm,zmm avx512bw +vpmulhrsw zmm,zmm,m avx512bw +vpmulhrsw zmm,zmm,zmm avx512bw +vpmulhud zmm,k,zmm,m knce +vpmulhud zmm,k,zmm,zmm knce +vpmulhud zmm,zmm,m knce +vpmulhud zmm,zmm,zmm knce +vpmulhuw xmm,k,xmm,m avx512bw +vpmulhuw xmm,k,xmm,xmm avx512bw +vpmulhuw xmm,xmm,m avx +vpmulhuw xmm,xmm,m avx512bw +vpmulhuw xmm,xmm,xmm avx +vpmulhuw xmm,xmm,xmm avx512bw +vpmulhuw ymm,k,ymm,m avx512bw +vpmulhuw ymm,k,ymm,ymm avx512bw +vpmulhuw ymm,ymm,m avx2 +vpmulhuw ymm,ymm,m avx512bw +vpmulhuw ymm,ymm,ymm avx2 +vpmulhuw ymm,ymm,ymm avx512bw +vpmulhuw zmm,k,zmm,m avx512bw +vpmulhuw zmm,k,zmm,zmm avx512bw +vpmulhuw zmm,zmm,m avx512bw +vpmulhuw zmm,zmm,zmm avx512bw +vpmulhw xmm,k,xmm,m avx512bw +vpmulhw xmm,k,xmm,xmm avx512bw +vpmulhw xmm,xmm,m avx +vpmulhw xmm,xmm,m avx512bw +vpmulhw xmm,xmm,xmm avx +vpmulhw xmm,xmm,xmm avx512bw +vpmulhw ymm,k,ymm,m avx512bw +vpmulhw ymm,k,ymm,ymm avx512bw +vpmulhw ymm,ymm,m avx2 +vpmulhw ymm,ymm,m avx512bw +vpmulhw ymm,ymm,ymm avx2 +vpmulhw ymm,ymm,ymm avx512bw +vpmulhw zmm,k,zmm,m avx512bw +vpmulhw zmm,k,zmm,zmm avx512bw +vpmulhw zmm,zmm,m avx512bw +vpmulhw zmm,zmm,zmm avx512bw +vpmulld xmm,k,xmm,m avx512f +vpmulld xmm,k,xmm,xmm avx512f +vpmulld xmm,xmm,m avx +vpmulld xmm,xmm,m avx512f +vpmulld xmm,xmm,xmm avx +vpmulld xmm,xmm,xmm avx512f +vpmulld ymm,k,ymm,m avx512f +vpmulld ymm,k,ymm,ymm avx512f +vpmulld ymm,ymm,m avx2 +vpmulld ymm,ymm,m avx512f +vpmulld ymm,ymm,ymm avx2 +vpmulld ymm,ymm,ymm avx512f +vpmulld zmm,k,zmm,m avx512f +vpmulld zmm,k,zmm,m knce +vpmulld zmm,k,zmm,zmm avx512f +vpmulld zmm,k,zmm,zmm knce +vpmulld zmm,zmm,m avx512f +vpmulld zmm,zmm,m knce +vpmulld zmm,zmm,zmm avx512f +vpmulld zmm,zmm,zmm knce +vpmullq xmm,k,xmm,m avx512dq +vpmullq xmm,k,xmm,xmm avx512dq +vpmullq xmm,xmm,m avx512dq +vpmullq xmm,xmm,xmm avx512dq +vpmullq ymm,k,ymm,m avx512dq +vpmullq ymm,k,ymm,ymm avx512dq +vpmullq ymm,ymm,m avx512dq +vpmullq ymm,ymm,ymm avx512dq +vpmullq zmm,k,zmm,m avx512dq +vpmullq zmm,k,zmm,zmm avx512dq +vpmullq zmm,zmm,m avx512dq +vpmullq zmm,zmm,zmm avx512dq +vpmullw xmm,k,xmm,m avx512bw +vpmullw xmm,k,xmm,xmm avx512bw +vpmullw xmm,xmm,m avx +vpmullw xmm,xmm,m avx512bw +vpmullw xmm,xmm,xmm avx +vpmullw xmm,xmm,xmm avx512bw +vpmullw ymm,k,ymm,m avx512bw +vpmullw ymm,k,ymm,ymm avx512bw +vpmullw ymm,ymm,m avx2 +vpmullw ymm,ymm,m avx512bw +vpmullw ymm,ymm,ymm avx2 +vpmullw ymm,ymm,ymm avx512bw +vpmullw zmm,k,zmm,m avx512bw +vpmullw zmm,k,zmm,zmm avx512bw +vpmullw zmm,zmm,m avx512bw +vpmullw zmm,zmm,zmm avx512bw +vpmultishiftqb xmm,k,xmm,m avx512vbmi +vpmultishiftqb xmm,k,xmm,xmm avx512vbmi +vpmultishiftqb xmm,xmm,m avx512vbmi +vpmultishiftqb xmm,xmm,xmm avx512vbmi +vpmultishiftqb ymm,k,ymm,m avx512vbmi +vpmultishiftqb ymm,k,ymm,ymm avx512vbmi +vpmultishiftqb ymm,ymm,m avx512vbmi +vpmultishiftqb ymm,ymm,ymm avx512vbmi +vpmultishiftqb zmm,k,zmm,m avx512vbmi +vpmultishiftqb zmm,k,zmm,zmm avx512vbmi +vpmultishiftqb zmm,zmm,m avx512vbmi +vpmultishiftqb zmm,zmm,zmm avx512vbmi +vpmuludq xmm,k,xmm,m avx512f +vpmuludq xmm,k,xmm,xmm avx512f +vpmuludq xmm,xmm,m avx +vpmuludq xmm,xmm,m avx512f +vpmuludq xmm,xmm,xmm avx +vpmuludq xmm,xmm,xmm avx512f +vpmuludq ymm,k,ymm,m avx512f +vpmuludq ymm,k,ymm,ymm avx512f +vpmuludq ymm,ymm,m avx2 +vpmuludq ymm,ymm,m avx512f +vpmuludq ymm,ymm,ymm avx2 +vpmuludq ymm,ymm,ymm avx512f +vpmuludq zmm,k,zmm,m avx512f +vpmuludq zmm,k,zmm,zmm avx512f +vpmuludq zmm,zmm,m avx512f +vpmuludq zmm,zmm,zmm avx512f +vpopcntb xmm,k,m avx512bitalg +vpopcntb xmm,k,xmm avx512bitalg +vpopcntb xmm,m avx512bitalg +vpopcntb xmm,xmm avx512bitalg +vpopcntb ymm,k,m avx512bitalg +vpopcntb ymm,k,ymm avx512bitalg +vpopcntb ymm,m avx512bitalg +vpopcntb ymm,ymm avx512bitalg +vpopcntb zmm,k,m avx512bitalg +vpopcntb zmm,k,zmm avx512bitalg +vpopcntb zmm,m avx512bitalg +vpopcntb zmm,zmm avx512bitalg +vpopcntd xmm,k,m avx512vpopcntdq +vpopcntd xmm,k,xmm avx512vpopcntdq +vpopcntd xmm,m avx512vpopcntdq +vpopcntd xmm,xmm avx512vpopcntdq +vpopcntd ymm,k,m avx512vpopcntdq +vpopcntd ymm,k,ymm avx512vpopcntdq +vpopcntd ymm,m avx512vpopcntdq +vpopcntd ymm,ymm avx512vpopcntdq +vpopcntd zmm,k,m avx512vpopcntdq +vpopcntd zmm,k,zmm avx512vpopcntdq +vpopcntd zmm,m avx512vpopcntdq +vpopcntd zmm,zmm avx512vpopcntdq +vpopcntq xmm,k,m avx512vpopcntdq +vpopcntq xmm,k,xmm avx512vpopcntdq +vpopcntq xmm,m avx512vpopcntdq +vpopcntq xmm,xmm avx512vpopcntdq +vpopcntq ymm,k,m avx512vpopcntdq +vpopcntq ymm,k,ymm avx512vpopcntdq +vpopcntq ymm,m avx512vpopcntdq +vpopcntq ymm,ymm avx512vpopcntdq +vpopcntq zmm,k,m avx512vpopcntdq +vpopcntq zmm,k,zmm avx512vpopcntdq +vpopcntq zmm,m avx512vpopcntdq +vpopcntq zmm,zmm avx512vpopcntdq +vpopcntw xmm,k,m avx512bitalg +vpopcntw xmm,k,xmm avx512bitalg +vpopcntw xmm,m avx512bitalg +vpopcntw xmm,xmm avx512bitalg +vpopcntw ymm,k,m avx512bitalg +vpopcntw ymm,k,ymm avx512bitalg +vpopcntw ymm,m avx512bitalg +vpopcntw ymm,ymm avx512bitalg +vpopcntw zmm,k,m avx512bitalg +vpopcntw zmm,k,zmm avx512bitalg +vpopcntw zmm,m avx512bitalg +vpopcntw zmm,zmm avx512bitalg +vpor xmm,xmm,m avx +vpor xmm,xmm,xmm avx +vpor ymm,ymm,m avx2 +vpor ymm,ymm,ymm avx2 +vpord xmm,k,xmm,m avx512f +vpord xmm,k,xmm,xmm avx512f +vpord xmm,xmm,m avx512f +vpord xmm,xmm,xmm avx512f +vpord ymm,k,ymm,m avx512f +vpord ymm,k,ymm,ymm avx512f +vpord ymm,ymm,m avx512f +vpord ymm,ymm,ymm avx512f +vpord zmm,k,zmm,m avx512f +vpord zmm,k,zmm,m knce +vpord zmm,k,zmm,zmm avx512f +vpord zmm,k,zmm,zmm knce +vpord zmm,zmm,m avx512f +vpord zmm,zmm,m knce +vpord zmm,zmm,zmm avx512f +vpord zmm,zmm,zmm knce +vporq xmm,k,xmm,m avx512f +vporq xmm,k,xmm,xmm avx512f +vporq xmm,xmm,m avx512f +vporq xmm,xmm,xmm avx512f +vporq ymm,k,ymm,m avx512f +vporq ymm,k,ymm,ymm avx512f +vporq ymm,ymm,m avx512f +vporq ymm,ymm,ymm avx512f +vporq zmm,k,zmm,m avx512f +vporq zmm,k,zmm,m knce +vporq zmm,k,zmm,zmm avx512f +vporq zmm,k,zmm,zmm knce +vporq zmm,zmm,m avx512f +vporq zmm,zmm,m knce +vporq zmm,zmm,zmm avx512f +vporq zmm,zmm,zmm knce +vpperm xmm,xmm,m,xmm xop +vpperm xmm,xmm,xmm,m xop +vpperm xmm,xmm,xmm,xmm xop +vprefetch0 m kncv +vprefetch1 m kncv +vprefetch2 m kncv +vprefetche0 m kncv +vprefetche1 m kncv +vprefetche2 m kncv +vprefetchenta m kncv +vprefetchnta m kncv +vprold xmm,k,m,imm avx512f +vprold xmm,k,xmm,imm avx512f +vprold xmm,m,imm avx512f +vprold xmm,xmm,imm avx512f +vprold ymm,k,m,imm avx512f +vprold ymm,k,ymm,imm avx512f +vprold ymm,m,imm avx512f +vprold ymm,ymm,imm avx512f +vprold zmm,k,m,imm avx512f +vprold zmm,k,zmm,imm avx512f +vprold zmm,m,imm avx512f +vprold zmm,zmm,imm avx512f +vprolq xmm,k,m,imm avx512f +vprolq xmm,k,xmm,imm avx512f +vprolq xmm,m,imm avx512f +vprolq xmm,xmm,imm avx512f +vprolq ymm,k,m,imm avx512f +vprolq ymm,k,ymm,imm avx512f +vprolq ymm,m,imm avx512f +vprolq ymm,ymm,imm avx512f +vprolq zmm,k,m,imm avx512f +vprolq zmm,k,zmm,imm avx512f +vprolq zmm,m,imm avx512f +vprolq zmm,zmm,imm avx512f +vprolvd xmm,k,xmm,m avx512f +vprolvd xmm,k,xmm,xmm avx512f +vprolvd xmm,xmm,m avx512f +vprolvd xmm,xmm,xmm avx512f +vprolvd ymm,k,ymm,m avx512f +vprolvd ymm,k,ymm,ymm avx512f +vprolvd ymm,ymm,m avx512f +vprolvd ymm,ymm,ymm avx512f +vprolvd zmm,k,zmm,m avx512f +vprolvd zmm,k,zmm,zmm avx512f +vprolvd zmm,zmm,m avx512f +vprolvd zmm,zmm,zmm avx512f +vprolvq xmm,k,xmm,m avx512f +vprolvq xmm,k,xmm,xmm avx512f +vprolvq xmm,xmm,m avx512f +vprolvq xmm,xmm,xmm avx512f +vprolvq ymm,k,ymm,m avx512f +vprolvq ymm,k,ymm,ymm avx512f +vprolvq ymm,ymm,m avx512f +vprolvq ymm,ymm,ymm avx512f +vprolvq zmm,k,zmm,m avx512f +vprolvq zmm,k,zmm,zmm avx512f +vprolvq zmm,zmm,m avx512f +vprolvq zmm,zmm,zmm avx512f +vprord xmm,k,m,imm avx512f +vprord xmm,k,xmm,imm avx512f +vprord xmm,m,imm avx512f +vprord xmm,xmm,imm avx512f +vprord ymm,k,m,imm avx512f +vprord ymm,k,ymm,imm avx512f +vprord ymm,m,imm avx512f +vprord ymm,ymm,imm avx512f +vprord zmm,k,m,imm avx512f +vprord zmm,k,zmm,imm avx512f +vprord zmm,m,imm avx512f +vprord zmm,zmm,imm avx512f +vprorq xmm,k,m,imm avx512f +vprorq xmm,k,xmm,imm avx512f +vprorq xmm,m,imm avx512f +vprorq xmm,xmm,imm avx512f +vprorq ymm,k,m,imm avx512f +vprorq ymm,k,ymm,imm avx512f +vprorq ymm,m,imm avx512f +vprorq ymm,ymm,imm avx512f +vprorq zmm,k,m,imm avx512f +vprorq zmm,k,zmm,imm avx512f +vprorq zmm,m,imm avx512f +vprorq zmm,zmm,imm avx512f +vprorvd xmm,k,xmm,m avx512f +vprorvd xmm,k,xmm,xmm avx512f +vprorvd xmm,xmm,m avx512f +vprorvd xmm,xmm,xmm avx512f +vprorvd ymm,k,ymm,m avx512f +vprorvd ymm,k,ymm,ymm avx512f +vprorvd ymm,ymm,m avx512f +vprorvd ymm,ymm,ymm avx512f +vprorvd zmm,k,zmm,m avx512f +vprorvd zmm,k,zmm,zmm avx512f +vprorvd zmm,zmm,m avx512f +vprorvd zmm,zmm,zmm avx512f +vprorvq xmm,k,xmm,m avx512f +vprorvq xmm,k,xmm,xmm avx512f +vprorvq xmm,xmm,m avx512f +vprorvq xmm,xmm,xmm avx512f +vprorvq ymm,k,ymm,m avx512f +vprorvq ymm,k,ymm,ymm avx512f +vprorvq ymm,ymm,m avx512f +vprorvq ymm,ymm,ymm avx512f +vprorvq zmm,k,zmm,m avx512f +vprorvq zmm,k,zmm,zmm avx512f +vprorvq zmm,zmm,m avx512f +vprorvq zmm,zmm,zmm avx512f +vprotb xmm,m,imm xop +vprotb xmm,m,xmm xop +vprotb xmm,xmm,imm xop +vprotb xmm,xmm,m xop +vprotb xmm,xmm,xmm xop +vprotd xmm,m,imm xop +vprotd xmm,m,xmm xop +vprotd xmm,xmm,imm xop +vprotd xmm,xmm,m xop +vprotd xmm,xmm,xmm xop +vprotq xmm,m,imm xop +vprotq xmm,m,xmm xop +vprotq xmm,xmm,imm xop +vprotq xmm,xmm,m xop +vprotq xmm,xmm,xmm xop +vprotw xmm,m,imm xop +vprotw xmm,m,xmm xop +vprotw xmm,xmm,imm xop +vprotw xmm,xmm,m xop +vprotw xmm,xmm,xmm xop +vpsadbw xmm,xmm,m avx +vpsadbw xmm,xmm,m avx512bw +vpsadbw xmm,xmm,xmm avx +vpsadbw xmm,xmm,xmm avx512bw +vpsadbw ymm,ymm,m avx2 +vpsadbw ymm,ymm,m avx512bw +vpsadbw ymm,ymm,ymm avx2 +vpsadbw ymm,ymm,ymm avx512bw +vpsadbw zmm,zmm,m avx512bw +vpsadbw zmm,zmm,zmm avx512bw +vpsbbd zmm,k,k,m knce +vpsbbd zmm,k,k,zmm knce +vpsbbd zmm,k,m knce +vpsbbd zmm,k,zmm knce +vpsbbd zmm,m knce +vpsbbd zmm,zmm knce +vpsbbrd zmm,k,k,m knce +vpsbbrd zmm,k,k,zmm knce +vpsbbrd zmm,k,m knce +vpsbbrd zmm,k,zmm knce +vpsbbrd zmm,m knce +vpsbbrd zmm,zmm knce +vpscatterdd m,k,xmm avx512f +vpscatterdd m,k,ymm avx512f +vpscatterdd m,k,zmm avx512f +vpscatterdd m,k,zmm knce +vpscatterdd m,xmm avx512f +vpscatterdd m,ymm avx512f +vpscatterdd m,zmm avx512f +vpscatterdd m,zmm knce +vpscatterdq m,k,xmm avx512f +vpscatterdq m,k,ymm avx512f +vpscatterdq m,k,zmm avx512f +vpscatterdq m,k,zmm knce +vpscatterdq m,xmm avx512f +vpscatterdq m,ymm avx512f +vpscatterdq m,zmm avx512f +vpscatterdq m,zmm knce +vpscatterqd m,k,xmm avx512f +vpscatterqd m,k,ymm avx512f +vpscatterqd m,xmm avx512f +vpscatterqd m,ymm avx512f +vpscatterqq m,k,xmm avx512f +vpscatterqq m,k,ymm avx512f +vpscatterqq m,k,zmm avx512f +vpscatterqq m,xmm avx512f +vpscatterqq m,ymm avx512f +vpscatterqq m,zmm avx512f +vpshab xmm,m,xmm xop +vpshab xmm,xmm,m xop +vpshab xmm,xmm,xmm xop +vpshad xmm,m,xmm xop +vpshad xmm,xmm,m xop +vpshad xmm,xmm,xmm xop +vpshaq xmm,m,xmm xop +vpshaq xmm,xmm,m xop +vpshaq xmm,xmm,xmm xop +vpshaw xmm,m,xmm xop +vpshaw xmm,xmm,m xop +vpshaw xmm,xmm,xmm xop +vpshlb xmm,m,xmm xop +vpshlb xmm,xmm,m xop +vpshlb xmm,xmm,xmm xop +vpshld xmm,m,xmm xop +vpshld xmm,xmm,m xop +vpshld xmm,xmm,xmm xop +vpshldd xmm,k,xmm,m,imm avx512vbmi2 +vpshldd xmm,k,xmm,xmm,imm avx512vbmi2 +vpshldd xmm,xmm,m,imm avx512vbmi2 +vpshldd xmm,xmm,xmm,imm avx512vbmi2 +vpshldd ymm,k,ymm,m,imm avx512vbmi2 +vpshldd ymm,k,ymm,ymm,imm avx512vbmi2 +vpshldd ymm,ymm,m,imm avx512vbmi2 +vpshldd ymm,ymm,ymm,imm avx512vbmi2 +vpshldd zmm,k,zmm,m,imm avx512vbmi2 +vpshldd zmm,k,zmm,zmm,imm avx512vbmi2 +vpshldd zmm,zmm,m,imm avx512vbmi2 +vpshldd zmm,zmm,zmm,imm avx512vbmi2 +vpshldq xmm,k,xmm,m,imm avx512vbmi2 +vpshldq xmm,k,xmm,xmm,imm avx512vbmi2 +vpshldq xmm,xmm,m,imm avx512vbmi2 +vpshldq xmm,xmm,xmm,imm avx512vbmi2 +vpshldq ymm,k,ymm,m,imm avx512vbmi2 +vpshldq ymm,k,ymm,ymm,imm avx512vbmi2 +vpshldq ymm,ymm,m,imm avx512vbmi2 +vpshldq ymm,ymm,ymm,imm avx512vbmi2 +vpshldq zmm,k,zmm,m,imm avx512vbmi2 +vpshldq zmm,k,zmm,zmm,imm avx512vbmi2 +vpshldq zmm,zmm,m,imm avx512vbmi2 +vpshldq zmm,zmm,zmm,imm avx512vbmi2 +vpshldvd xmm,k,xmm,m avx512vbmi2 +vpshldvd xmm,k,xmm,xmm avx512vbmi2 +vpshldvd xmm,xmm,m avx512vbmi2 +vpshldvd xmm,xmm,xmm avx512vbmi2 +vpshldvd ymm,k,ymm,m avx512vbmi2 +vpshldvd ymm,k,ymm,ymm avx512vbmi2 +vpshldvd ymm,ymm,m avx512vbmi2 +vpshldvd ymm,ymm,ymm avx512vbmi2 +vpshldvd zmm,k,zmm,m avx512vbmi2 +vpshldvd zmm,k,zmm,zmm avx512vbmi2 +vpshldvd zmm,zmm,m avx512vbmi2 +vpshldvd zmm,zmm,zmm avx512vbmi2 +vpshldvq xmm,k,xmm,m avx512vbmi2 +vpshldvq xmm,k,xmm,xmm avx512vbmi2 +vpshldvq xmm,xmm,m avx512vbmi2 +vpshldvq xmm,xmm,xmm avx512vbmi2 +vpshldvq ymm,k,ymm,m avx512vbmi2 +vpshldvq ymm,k,ymm,ymm avx512vbmi2 +vpshldvq ymm,ymm,m avx512vbmi2 +vpshldvq ymm,ymm,ymm avx512vbmi2 +vpshldvq zmm,k,zmm,m avx512vbmi2 +vpshldvq zmm,k,zmm,zmm avx512vbmi2 +vpshldvq zmm,zmm,m avx512vbmi2 +vpshldvq zmm,zmm,zmm avx512vbmi2 +vpshldvw xmm,k,xmm,m avx512vbmi2 +vpshldvw xmm,k,xmm,xmm avx512vbmi2 +vpshldvw xmm,xmm,m avx512vbmi2 +vpshldvw xmm,xmm,xmm avx512vbmi2 +vpshldvw ymm,k,ymm,m avx512vbmi2 +vpshldvw ymm,k,ymm,ymm avx512vbmi2 +vpshldvw ymm,ymm,m avx512vbmi2 +vpshldvw ymm,ymm,ymm avx512vbmi2 +vpshldvw zmm,k,zmm,m avx512vbmi2 +vpshldvw zmm,k,zmm,zmm avx512vbmi2 +vpshldvw zmm,zmm,m avx512vbmi2 +vpshldvw zmm,zmm,zmm avx512vbmi2 +vpshldw xmm,k,xmm,m,imm avx512vbmi2 +vpshldw xmm,k,xmm,xmm,imm avx512vbmi2 +vpshldw xmm,xmm,m,imm avx512vbmi2 +vpshldw xmm,xmm,xmm,imm avx512vbmi2 +vpshldw ymm,k,ymm,m,imm avx512vbmi2 +vpshldw ymm,k,ymm,ymm,imm avx512vbmi2 +vpshldw ymm,ymm,m,imm avx512vbmi2 +vpshldw ymm,ymm,ymm,imm avx512vbmi2 +vpshldw zmm,k,zmm,m,imm avx512vbmi2 +vpshldw zmm,k,zmm,zmm,imm avx512vbmi2 +vpshldw zmm,zmm,m,imm avx512vbmi2 +vpshldw zmm,zmm,zmm,imm avx512vbmi2 +vpshlq xmm,m,xmm xop +vpshlq xmm,xmm,m xop +vpshlq xmm,xmm,xmm xop +vpshlw xmm,m,xmm xop +vpshlw xmm,xmm,m xop +vpshlw xmm,xmm,xmm xop +vpshrdd xmm,k,xmm,m,imm avx512vbmi2 +vpshrdd xmm,k,xmm,xmm,imm avx512vbmi2 +vpshrdd xmm,xmm,m,imm avx512vbmi2 +vpshrdd xmm,xmm,xmm,imm avx512vbmi2 +vpshrdd ymm,k,ymm,m,imm avx512vbmi2 +vpshrdd ymm,k,ymm,ymm,imm avx512vbmi2 +vpshrdd ymm,ymm,m,imm avx512vbmi2 +vpshrdd ymm,ymm,ymm,imm avx512vbmi2 +vpshrdd zmm,k,zmm,m,imm avx512vbmi2 +vpshrdd zmm,k,zmm,zmm,imm avx512vbmi2 +vpshrdd zmm,zmm,m,imm avx512vbmi2 +vpshrdd zmm,zmm,zmm,imm avx512vbmi2 +vpshrdq xmm,k,xmm,m,imm avx512vbmi2 +vpshrdq xmm,k,xmm,xmm,imm avx512vbmi2 +vpshrdq xmm,xmm,m,imm avx512vbmi2 +vpshrdq xmm,xmm,xmm,imm avx512vbmi2 +vpshrdq ymm,k,ymm,m,imm avx512vbmi2 +vpshrdq ymm,k,ymm,ymm,imm avx512vbmi2 +vpshrdq ymm,ymm,m,imm avx512vbmi2 +vpshrdq ymm,ymm,ymm,imm avx512vbmi2 +vpshrdq zmm,k,zmm,m,imm avx512vbmi2 +vpshrdq zmm,k,zmm,zmm,imm avx512vbmi2 +vpshrdq zmm,zmm,m,imm avx512vbmi2 +vpshrdq zmm,zmm,zmm,imm avx512vbmi2 +vpshrdvd xmm,k,xmm,m avx512vbmi2 +vpshrdvd xmm,k,xmm,xmm avx512vbmi2 +vpshrdvd xmm,xmm,m avx512vbmi2 +vpshrdvd xmm,xmm,xmm avx512vbmi2 +vpshrdvd ymm,k,ymm,m avx512vbmi2 +vpshrdvd ymm,k,ymm,ymm avx512vbmi2 +vpshrdvd ymm,ymm,m avx512vbmi2 +vpshrdvd ymm,ymm,ymm avx512vbmi2 +vpshrdvd zmm,k,zmm,m avx512vbmi2 +vpshrdvd zmm,k,zmm,zmm avx512vbmi2 +vpshrdvd zmm,zmm,m avx512vbmi2 +vpshrdvd zmm,zmm,zmm avx512vbmi2 +vpshrdvq xmm,k,xmm,m avx512vbmi2 +vpshrdvq xmm,k,xmm,xmm avx512vbmi2 +vpshrdvq xmm,xmm,m avx512vbmi2 +vpshrdvq xmm,xmm,xmm avx512vbmi2 +vpshrdvq ymm,k,ymm,m avx512vbmi2 +vpshrdvq ymm,k,ymm,ymm avx512vbmi2 +vpshrdvq ymm,ymm,m avx512vbmi2 +vpshrdvq ymm,ymm,ymm avx512vbmi2 +vpshrdvq zmm,k,zmm,m avx512vbmi2 +vpshrdvq zmm,k,zmm,zmm avx512vbmi2 +vpshrdvq zmm,zmm,m avx512vbmi2 +vpshrdvq zmm,zmm,zmm avx512vbmi2 +vpshrdvw xmm,k,xmm,m avx512vbmi2 +vpshrdvw xmm,k,xmm,xmm avx512vbmi2 +vpshrdvw xmm,xmm,m avx512vbmi2 +vpshrdvw xmm,xmm,xmm avx512vbmi2 +vpshrdvw ymm,k,ymm,m avx512vbmi2 +vpshrdvw ymm,k,ymm,ymm avx512vbmi2 +vpshrdvw ymm,ymm,m avx512vbmi2 +vpshrdvw ymm,ymm,ymm avx512vbmi2 +vpshrdvw zmm,k,zmm,m avx512vbmi2 +vpshrdvw zmm,k,zmm,zmm avx512vbmi2 +vpshrdvw zmm,zmm,m avx512vbmi2 +vpshrdvw zmm,zmm,zmm avx512vbmi2 +vpshrdw xmm,k,xmm,m,imm avx512vbmi2 +vpshrdw xmm,k,xmm,xmm,imm avx512vbmi2 +vpshrdw xmm,xmm,m,imm avx512vbmi2 +vpshrdw xmm,xmm,xmm,imm avx512vbmi2 +vpshrdw ymm,k,ymm,m,imm avx512vbmi2 +vpshrdw ymm,k,ymm,ymm,imm avx512vbmi2 +vpshrdw ymm,ymm,m,imm avx512vbmi2 +vpshrdw ymm,ymm,ymm,imm avx512vbmi2 +vpshrdw zmm,k,zmm,m,imm avx512vbmi2 +vpshrdw zmm,k,zmm,zmm,imm avx512vbmi2 +vpshrdw zmm,zmm,m,imm avx512vbmi2 +vpshrdw zmm,zmm,zmm,imm avx512vbmi2 +vpshufb xmm,k,xmm,m avx512bw +vpshufb xmm,k,xmm,xmm avx512bw +vpshufb xmm,xmm,m avx +vpshufb xmm,xmm,m avx512bw +vpshufb xmm,xmm,xmm avx +vpshufb xmm,xmm,xmm avx512bw +vpshufb ymm,k,ymm,m avx512bw +vpshufb ymm,k,ymm,ymm avx512bw +vpshufb ymm,ymm,m avx2 +vpshufb ymm,ymm,m avx512bw +vpshufb ymm,ymm,ymm avx2 +vpshufb ymm,ymm,ymm avx512bw +vpshufb zmm,k,zmm,m avx512bw +vpshufb zmm,k,zmm,zmm avx512bw +vpshufb zmm,zmm,m avx512bw +vpshufb zmm,zmm,zmm avx512bw +vpshufbitqmb k,k,xmm,m avx512bitalg +vpshufbitqmb k,k,xmm,xmm avx512bitalg +vpshufbitqmb k,k,ymm,m avx512bitalg +vpshufbitqmb k,k,ymm,ymm avx512bitalg +vpshufbitqmb k,k,zmm,m avx512bitalg +vpshufbitqmb k,k,zmm,zmm avx512bitalg +vpshufbitqmb k,xmm,m avx512bitalg +vpshufbitqmb k,xmm,xmm avx512bitalg +vpshufbitqmb k,ymm,m avx512bitalg +vpshufbitqmb k,ymm,ymm avx512bitalg +vpshufbitqmb k,zmm,m avx512bitalg +vpshufbitqmb k,zmm,zmm avx512bitalg +vpshufbitqmb xmm,m avx512bitalg +vpshufbitqmb xmm,xmm avx512bitalg +vpshufbitqmb ymm,m avx512bitalg +vpshufbitqmb ymm,ymm avx512bitalg +vpshufbitqmb zmm,m avx512bitalg +vpshufbitqmb zmm,zmm avx512bitalg +vpshufd xmm,k,m,imm avx512f +vpshufd xmm,k,xmm,imm avx512f +vpshufd xmm,m,imm avx +vpshufd xmm,m,imm avx512f +vpshufd xmm,xmm,imm avx +vpshufd xmm,xmm,imm avx512f +vpshufd ymm,k,m,imm avx512f +vpshufd ymm,k,ymm,imm avx512f +vpshufd ymm,m,imm avx2 +vpshufd ymm,m,imm avx512f +vpshufd ymm,ymm,imm avx2 +vpshufd ymm,ymm,imm avx512f +vpshufd zmm,k,m,imm avx512f +vpshufd zmm,k,m,imm knce +vpshufd zmm,k,zmm,imm avx512f +vpshufd zmm,k,zmm,imm knce +vpshufd zmm,m,imm avx512f +vpshufd zmm,m,imm knce +vpshufd zmm,zmm,imm avx512f +vpshufd zmm,zmm,imm knce +vpshufhw xmm,k,m,imm avx512bw +vpshufhw xmm,k,xmm,imm avx512bw +vpshufhw xmm,m,imm avx +vpshufhw xmm,m,imm avx512bw +vpshufhw xmm,xmm,imm avx +vpshufhw xmm,xmm,imm avx512bw +vpshufhw ymm,k,m,imm avx512bw +vpshufhw ymm,k,ymm,imm avx512bw +vpshufhw ymm,m,imm avx2 +vpshufhw ymm,m,imm avx512bw +vpshufhw ymm,ymm,imm avx2 +vpshufhw ymm,ymm,imm avx512bw +vpshufhw zmm,k,m,imm avx512bw +vpshufhw zmm,k,zmm,imm avx512bw +vpshufhw zmm,m,imm avx512bw +vpshufhw zmm,zmm,imm avx512bw +vpshuflw xmm,k,m,imm avx512bw +vpshuflw xmm,k,xmm,imm avx512bw +vpshuflw xmm,m,imm avx +vpshuflw xmm,m,imm avx512bw +vpshuflw xmm,xmm,imm avx +vpshuflw xmm,xmm,imm avx512bw +vpshuflw ymm,k,m,imm avx512bw +vpshuflw ymm,k,ymm,imm avx512bw +vpshuflw ymm,m,imm avx2 +vpshuflw ymm,m,imm avx512bw +vpshuflw ymm,ymm,imm avx2 +vpshuflw ymm,ymm,imm avx512bw +vpshuflw zmm,k,m,imm avx512bw +vpshuflw zmm,k,zmm,imm avx512bw +vpshuflw zmm,m,imm avx512bw +vpshuflw zmm,zmm,imm avx512bw +vpsignb xmm,xmm,m avx +vpsignb xmm,xmm,xmm avx +vpsignb ymm,ymm,m avx2 +vpsignb ymm,ymm,ymm avx2 +vpsignd xmm,xmm,m avx +vpsignd xmm,xmm,xmm avx +vpsignd ymm,ymm,m avx2 +vpsignd ymm,ymm,ymm avx2 +vpsignw xmm,xmm,m avx +vpsignw xmm,xmm,xmm avx +vpsignw ymm,ymm,m avx2 +vpsignw ymm,ymm,ymm avx2 +vpslld xmm,k,m,imm avx512f +vpslld xmm,k,xmm,imm avx512f +vpslld xmm,k,xmm,m avx512f +vpslld xmm,k,xmm,xmm avx512f +vpslld xmm,m,imm avx512f +vpslld xmm,xmm,imm avx +vpslld xmm,xmm,imm avx512f +vpslld xmm,xmm,m avx +vpslld xmm,xmm,m avx512f +vpslld xmm,xmm,xmm avx +vpslld xmm,xmm,xmm avx512f +vpslld ymm,k,m,imm avx512f +vpslld ymm,k,ymm,imm avx512f +vpslld ymm,k,ymm,m avx512f +vpslld ymm,k,ymm,xmm avx512f +vpslld ymm,m,imm avx512f +vpslld ymm,ymm,imm avx2 +vpslld ymm,ymm,imm avx512f +vpslld ymm,ymm,m avx2 +vpslld ymm,ymm,m avx512f +vpslld ymm,ymm,xmm avx2 +vpslld ymm,ymm,xmm avx512f +vpslld zmm,k,m,imm avx512f +vpslld zmm,k,m,imm knce +vpslld zmm,k,zmm,imm avx512f +vpslld zmm,k,zmm,imm knce +vpslld zmm,k,zmm,m avx512f +vpslld zmm,k,zmm,xmm avx512f +vpslld zmm,m,imm avx512f +vpslld zmm,m,imm knce +vpslld zmm,zmm,imm avx512f +vpslld zmm,zmm,imm knce +vpslld zmm,zmm,m avx512f +vpslld zmm,zmm,xmm avx512f +vpslldq xmm,m,imm avx512bw +vpslldq xmm,xmm,imm avx +vpslldq xmm,xmm,imm avx512bw +vpslldq ymm,m,imm avx512bw +vpslldq ymm,ymm,imm avx2 +vpslldq ymm,ymm,imm avx512bw +vpslldq zmm,m,imm avx512bw +vpslldq zmm,zmm,imm avx512bw +vpsllq xmm,k,m,imm avx512f +vpsllq xmm,k,xmm,imm avx512f +vpsllq xmm,k,xmm,m avx512f +vpsllq xmm,k,xmm,xmm avx512f +vpsllq xmm,m,imm avx512f +vpsllq xmm,xmm,imm avx +vpsllq xmm,xmm,imm avx512f +vpsllq xmm,xmm,m avx +vpsllq xmm,xmm,m avx512f +vpsllq xmm,xmm,xmm avx +vpsllq xmm,xmm,xmm avx512f +vpsllq ymm,k,m,imm avx512f +vpsllq ymm,k,ymm,imm avx512f +vpsllq ymm,k,ymm,m avx512f +vpsllq ymm,k,ymm,xmm avx512f +vpsllq ymm,m,imm avx512f +vpsllq ymm,ymm,imm avx2 +vpsllq ymm,ymm,imm avx512f +vpsllq ymm,ymm,m avx2 +vpsllq ymm,ymm,m avx512f +vpsllq ymm,ymm,xmm avx2 +vpsllq ymm,ymm,xmm avx512f +vpsllq zmm,k,m,imm avx512f +vpsllq zmm,k,zmm,imm avx512f +vpsllq zmm,k,zmm,m avx512f +vpsllq zmm,k,zmm,xmm avx512f +vpsllq zmm,m,imm avx512f +vpsllq zmm,zmm,imm avx512f +vpsllq zmm,zmm,m avx512f +vpsllq zmm,zmm,xmm avx512f +vpsllvd xmm,k,xmm,m avx512f +vpsllvd xmm,k,xmm,xmm avx512f +vpsllvd xmm,xmm,m avx2 +vpsllvd xmm,xmm,m avx512f +vpsllvd xmm,xmm,xmm avx2 +vpsllvd xmm,xmm,xmm avx512f +vpsllvd ymm,k,ymm,m avx512f +vpsllvd ymm,k,ymm,ymm avx512f +vpsllvd ymm,ymm,m avx2 +vpsllvd ymm,ymm,m avx512f +vpsllvd ymm,ymm,ymm avx2 +vpsllvd ymm,ymm,ymm avx512f +vpsllvd zmm,k,zmm,m avx512f +vpsllvd zmm,k,zmm,m knce +vpsllvd zmm,k,zmm,zmm avx512f +vpsllvd zmm,k,zmm,zmm knce +vpsllvd zmm,zmm,m avx512f +vpsllvd zmm,zmm,m knce +vpsllvd zmm,zmm,zmm avx512f +vpsllvd zmm,zmm,zmm knce +vpsllvq xmm,k,xmm,m avx512f +vpsllvq xmm,k,xmm,xmm avx512f +vpsllvq xmm,xmm,m avx2 +vpsllvq xmm,xmm,m avx512f +vpsllvq xmm,xmm,xmm avx2 +vpsllvq xmm,xmm,xmm avx512f +vpsllvq ymm,k,ymm,m avx512f +vpsllvq ymm,k,ymm,ymm avx512f +vpsllvq ymm,ymm,m avx2 +vpsllvq ymm,ymm,m avx512f +vpsllvq ymm,ymm,ymm avx2 +vpsllvq ymm,ymm,ymm avx512f +vpsllvq zmm,k,zmm,m avx512f +vpsllvq zmm,k,zmm,zmm avx512f +vpsllvq zmm,zmm,m avx512f +vpsllvq zmm,zmm,zmm avx512f +vpsllvw xmm,k,xmm,m avx512bw +vpsllvw xmm,k,xmm,xmm avx512bw +vpsllvw xmm,xmm,m avx512bw +vpsllvw xmm,xmm,xmm avx512bw +vpsllvw ymm,k,ymm,m avx512bw +vpsllvw ymm,k,ymm,ymm avx512bw +vpsllvw ymm,ymm,m avx512bw +vpsllvw ymm,ymm,ymm avx512bw +vpsllvw zmm,k,zmm,m avx512bw +vpsllvw zmm,k,zmm,zmm avx512bw +vpsllvw zmm,zmm,m avx512bw +vpsllvw zmm,zmm,zmm avx512bw +vpsllw xmm,k,m,imm avx512bw +vpsllw xmm,k,xmm,imm avx512bw +vpsllw xmm,k,xmm,m avx512bw +vpsllw xmm,k,xmm,xmm avx512bw +vpsllw xmm,m,imm avx512bw +vpsllw xmm,xmm,imm avx +vpsllw xmm,xmm,imm avx512bw +vpsllw xmm,xmm,m avx +vpsllw xmm,xmm,m avx512bw +vpsllw xmm,xmm,xmm avx +vpsllw xmm,xmm,xmm avx512bw +vpsllw ymm,k,m,imm avx512bw +vpsllw ymm,k,ymm,imm avx512bw +vpsllw ymm,k,ymm,m avx512bw +vpsllw ymm,k,ymm,xmm avx512bw +vpsllw ymm,m,imm avx512bw +vpsllw ymm,ymm,imm avx2 +vpsllw ymm,ymm,imm avx512bw +vpsllw ymm,ymm,m avx2 +vpsllw ymm,ymm,m avx512bw +vpsllw ymm,ymm,xmm avx2 +vpsllw ymm,ymm,xmm avx512bw +vpsllw zmm,k,m,imm avx512bw +vpsllw zmm,k,zmm,imm avx512bw +vpsllw zmm,k,zmm,m avx512bw +vpsllw zmm,k,zmm,xmm avx512bw +vpsllw zmm,m,imm avx512bw +vpsllw zmm,zmm,imm avx512bw +vpsllw zmm,zmm,m avx512bw +vpsllw zmm,zmm,xmm avx512bw +vpsrad xmm,k,m,imm avx512f +vpsrad xmm,k,xmm,imm avx512f +vpsrad xmm,k,xmm,m avx512f +vpsrad xmm,k,xmm,xmm avx512f +vpsrad xmm,m,imm avx512f +vpsrad xmm,xmm,imm avx +vpsrad xmm,xmm,imm avx512f +vpsrad xmm,xmm,m avx +vpsrad xmm,xmm,m avx512f +vpsrad xmm,xmm,xmm avx +vpsrad xmm,xmm,xmm avx512f +vpsrad ymm,k,m,imm avx512f +vpsrad ymm,k,ymm,imm avx512f +vpsrad ymm,k,ymm,m avx512f +vpsrad ymm,k,ymm,xmm avx512f +vpsrad ymm,m,imm avx512f +vpsrad ymm,ymm,imm avx2 +vpsrad ymm,ymm,imm avx512f +vpsrad ymm,ymm,m avx2 +vpsrad ymm,ymm,m avx512f +vpsrad ymm,ymm,xmm avx2 +vpsrad ymm,ymm,xmm avx512f +vpsrad zmm,k,m,imm avx512f +vpsrad zmm,k,m,imm knce +vpsrad zmm,k,zmm,imm avx512f +vpsrad zmm,k,zmm,imm knce +vpsrad zmm,k,zmm,m avx512f +vpsrad zmm,k,zmm,xmm avx512f +vpsrad zmm,m,imm avx512f +vpsrad zmm,m,imm knce +vpsrad zmm,zmm,imm avx512f +vpsrad zmm,zmm,imm knce +vpsrad zmm,zmm,m avx512f +vpsrad zmm,zmm,xmm avx512f +vpsraq xmm,k,m,imm avx512f +vpsraq xmm,k,xmm,imm avx512f +vpsraq xmm,k,xmm,m avx512f +vpsraq xmm,k,xmm,xmm avx512f +vpsraq xmm,m,imm avx512f +vpsraq xmm,xmm,imm avx512f +vpsraq xmm,xmm,m avx512f +vpsraq xmm,xmm,xmm avx512f +vpsraq ymm,k,m,imm avx512f +vpsraq ymm,k,ymm,imm avx512f +vpsraq ymm,k,ymm,m avx512f +vpsraq ymm,k,ymm,xmm avx512f +vpsraq ymm,m,imm avx512f +vpsraq ymm,ymm,imm avx512f +vpsraq ymm,ymm,m avx512f +vpsraq ymm,ymm,xmm avx512f +vpsraq zmm,k,m,imm avx512f +vpsraq zmm,k,zmm,imm avx512f +vpsraq zmm,k,zmm,m avx512f +vpsraq zmm,k,zmm,xmm avx512f +vpsraq zmm,m,imm avx512f +vpsraq zmm,zmm,imm avx512f +vpsraq zmm,zmm,m avx512f +vpsraq zmm,zmm,xmm avx512f +vpsravd xmm,k,xmm,m avx512f +vpsravd xmm,k,xmm,xmm avx512f +vpsravd xmm,xmm,m avx2 +vpsravd xmm,xmm,m avx512f +vpsravd xmm,xmm,xmm avx2 +vpsravd xmm,xmm,xmm avx512f +vpsravd ymm,k,ymm,m avx512f +vpsravd ymm,k,ymm,ymm avx512f +vpsravd ymm,ymm,m avx2 +vpsravd ymm,ymm,m avx512f +vpsravd ymm,ymm,ymm avx2 +vpsravd ymm,ymm,ymm avx512f +vpsravd zmm,k,zmm,m avx512f +vpsravd zmm,k,zmm,m knce +vpsravd zmm,k,zmm,zmm avx512f +vpsravd zmm,k,zmm,zmm knce +vpsravd zmm,zmm,m avx512f +vpsravd zmm,zmm,m knce +vpsravd zmm,zmm,zmm avx512f +vpsravd zmm,zmm,zmm knce +vpsravq xmm,k,xmm,m avx512f +vpsravq xmm,k,xmm,xmm avx512f +vpsravq xmm,xmm,m avx512f +vpsravq xmm,xmm,xmm avx512f +vpsravq ymm,k,ymm,m avx512f +vpsravq ymm,k,ymm,ymm avx512f +vpsravq ymm,ymm,m avx512f +vpsravq ymm,ymm,ymm avx512f +vpsravq zmm,k,zmm,m avx512f +vpsravq zmm,k,zmm,zmm avx512f +vpsravq zmm,zmm,m avx512f +vpsravq zmm,zmm,zmm avx512f +vpsravw xmm,k,xmm,m avx512bw +vpsravw xmm,k,xmm,xmm avx512bw +vpsravw xmm,xmm,m avx512bw +vpsravw xmm,xmm,xmm avx512bw +vpsravw ymm,k,ymm,m avx512bw +vpsravw ymm,k,ymm,ymm avx512bw +vpsravw ymm,ymm,m avx512bw +vpsravw ymm,ymm,ymm avx512bw +vpsravw zmm,k,zmm,m avx512bw +vpsravw zmm,k,zmm,zmm avx512bw +vpsravw zmm,zmm,m avx512bw +vpsravw zmm,zmm,zmm avx512bw +vpsraw xmm,k,m,imm avx512bw +vpsraw xmm,k,xmm,imm avx512bw +vpsraw xmm,k,xmm,m avx512bw +vpsraw xmm,k,xmm,xmm avx512bw +vpsraw xmm,m,imm avx512bw +vpsraw xmm,xmm,imm avx +vpsraw xmm,xmm,imm avx512bw +vpsraw xmm,xmm,m avx +vpsraw xmm,xmm,m avx512bw +vpsraw xmm,xmm,xmm avx +vpsraw xmm,xmm,xmm avx512bw +vpsraw ymm,k,m,imm avx512bw +vpsraw ymm,k,ymm,imm avx512bw +vpsraw ymm,k,ymm,m avx512bw +vpsraw ymm,k,ymm,xmm avx512bw +vpsraw ymm,m,imm avx512bw +vpsraw ymm,ymm,imm avx2 +vpsraw ymm,ymm,imm avx512bw +vpsraw ymm,ymm,m avx2 +vpsraw ymm,ymm,m avx512bw +vpsraw ymm,ymm,xmm avx2 +vpsraw ymm,ymm,xmm avx512bw +vpsraw zmm,k,m,imm avx512bw +vpsraw zmm,k,zmm,imm avx512bw +vpsraw zmm,k,zmm,m avx512bw +vpsraw zmm,k,zmm,xmm avx512bw +vpsraw zmm,m,imm avx512bw +vpsraw zmm,zmm,imm avx512bw +vpsraw zmm,zmm,m avx512bw +vpsraw zmm,zmm,xmm avx512bw +vpsrld xmm,k,m,imm avx512f +vpsrld xmm,k,xmm,imm avx512f +vpsrld xmm,k,xmm,m avx512f +vpsrld xmm,k,xmm,xmm avx512f +vpsrld xmm,m,imm avx512f +vpsrld xmm,xmm,imm avx +vpsrld xmm,xmm,imm avx512f +vpsrld xmm,xmm,m avx +vpsrld xmm,xmm,m avx512f +vpsrld xmm,xmm,xmm avx +vpsrld xmm,xmm,xmm avx512f +vpsrld ymm,k,m,imm avx512f +vpsrld ymm,k,ymm,imm avx512f +vpsrld ymm,k,ymm,m avx512f +vpsrld ymm,k,ymm,xmm avx512f +vpsrld ymm,m,imm avx512f +vpsrld ymm,ymm,imm avx2 +vpsrld ymm,ymm,imm avx512f +vpsrld ymm,ymm,m avx2 +vpsrld ymm,ymm,m avx512f +vpsrld ymm,ymm,xmm avx2 +vpsrld ymm,ymm,xmm avx512f +vpsrld zmm,k,m,imm avx512f +vpsrld zmm,k,m,imm knce +vpsrld zmm,k,zmm,imm avx512f +vpsrld zmm,k,zmm,imm knce +vpsrld zmm,k,zmm,m avx512f +vpsrld zmm,k,zmm,xmm avx512f +vpsrld zmm,m,imm avx512f +vpsrld zmm,m,imm knce +vpsrld zmm,zmm,imm avx512f +vpsrld zmm,zmm,imm knce +vpsrld zmm,zmm,m avx512f +vpsrld zmm,zmm,xmm avx512f +vpsrldq xmm,m,imm avx512bw +vpsrldq xmm,xmm,imm avx +vpsrldq xmm,xmm,imm avx512bw +vpsrldq ymm,m,imm avx512bw +vpsrldq ymm,ymm,imm avx2 +vpsrldq ymm,ymm,imm avx512bw +vpsrldq zmm,m,imm avx512bw +vpsrldq zmm,zmm,imm avx512bw +vpsrlq xmm,k,m,imm avx512f +vpsrlq xmm,k,xmm,imm avx512f +vpsrlq xmm,k,xmm,m avx512f +vpsrlq xmm,k,xmm,xmm avx512f +vpsrlq xmm,m,imm avx512f +vpsrlq xmm,xmm,imm avx +vpsrlq xmm,xmm,imm avx512f +vpsrlq xmm,xmm,m avx +vpsrlq xmm,xmm,m avx512f +vpsrlq xmm,xmm,xmm avx +vpsrlq xmm,xmm,xmm avx512f +vpsrlq ymm,k,m,imm avx512f +vpsrlq ymm,k,ymm,imm avx512f +vpsrlq ymm,k,ymm,m avx512f +vpsrlq ymm,k,ymm,xmm avx512f +vpsrlq ymm,m,imm avx512f +vpsrlq ymm,ymm,imm avx2 +vpsrlq ymm,ymm,imm avx512f +vpsrlq ymm,ymm,m avx2 +vpsrlq ymm,ymm,m avx512f +vpsrlq ymm,ymm,xmm avx2 +vpsrlq ymm,ymm,xmm avx512f +vpsrlq zmm,k,m,imm avx512f +vpsrlq zmm,k,zmm,imm avx512f +vpsrlq zmm,k,zmm,m avx512f +vpsrlq zmm,k,zmm,xmm avx512f +vpsrlq zmm,m,imm avx512f +vpsrlq zmm,zmm,imm avx512f +vpsrlq zmm,zmm,m avx512f +vpsrlq zmm,zmm,xmm avx512f +vpsrlvd xmm,k,xmm,m avx512f +vpsrlvd xmm,k,xmm,xmm avx512f +vpsrlvd xmm,xmm,m avx2 +vpsrlvd xmm,xmm,m avx512f +vpsrlvd xmm,xmm,xmm avx2 +vpsrlvd xmm,xmm,xmm avx512f +vpsrlvd ymm,k,ymm,m avx512f +vpsrlvd ymm,k,ymm,ymm avx512f +vpsrlvd ymm,ymm,m avx2 +vpsrlvd ymm,ymm,m avx512f +vpsrlvd ymm,ymm,ymm avx2 +vpsrlvd ymm,ymm,ymm avx512f +vpsrlvd zmm,k,zmm,m avx512f +vpsrlvd zmm,k,zmm,m knce +vpsrlvd zmm,k,zmm,zmm avx512f +vpsrlvd zmm,k,zmm,zmm knce +vpsrlvd zmm,zmm,m avx512f +vpsrlvd zmm,zmm,m knce +vpsrlvd zmm,zmm,zmm avx512f +vpsrlvd zmm,zmm,zmm knce +vpsrlvq xmm,k,xmm,m avx512f +vpsrlvq xmm,k,xmm,xmm avx512f +vpsrlvq xmm,xmm,m avx2 +vpsrlvq xmm,xmm,m avx512f +vpsrlvq xmm,xmm,xmm avx2 +vpsrlvq xmm,xmm,xmm avx512f +vpsrlvq ymm,k,ymm,m avx512f +vpsrlvq ymm,k,ymm,ymm avx512f +vpsrlvq ymm,ymm,m avx2 +vpsrlvq ymm,ymm,m avx512f +vpsrlvq ymm,ymm,ymm avx2 +vpsrlvq ymm,ymm,ymm avx512f +vpsrlvq zmm,k,zmm,m avx512f +vpsrlvq zmm,k,zmm,zmm avx512f +vpsrlvq zmm,zmm,m avx512f +vpsrlvq zmm,zmm,zmm avx512f +vpsrlvw xmm,k,xmm,m avx512bw +vpsrlvw xmm,k,xmm,xmm avx512bw +vpsrlvw xmm,xmm,m avx512bw +vpsrlvw xmm,xmm,xmm avx512bw +vpsrlvw ymm,k,ymm,m avx512bw +vpsrlvw ymm,k,ymm,ymm avx512bw +vpsrlvw ymm,ymm,m avx512bw +vpsrlvw ymm,ymm,ymm avx512bw +vpsrlvw zmm,k,zmm,m avx512bw +vpsrlvw zmm,k,zmm,zmm avx512bw +vpsrlvw zmm,zmm,m avx512bw +vpsrlvw zmm,zmm,zmm avx512bw +vpsrlw xmm,k,m,imm avx512bw +vpsrlw xmm,k,xmm,imm avx512bw +vpsrlw xmm,k,xmm,m avx512bw +vpsrlw xmm,k,xmm,xmm avx512bw +vpsrlw xmm,m,imm avx512bw +vpsrlw xmm,xmm,imm avx +vpsrlw xmm,xmm,imm avx512bw +vpsrlw xmm,xmm,m avx +vpsrlw xmm,xmm,m avx512bw +vpsrlw xmm,xmm,xmm avx +vpsrlw xmm,xmm,xmm avx512bw +vpsrlw ymm,k,m,imm avx512bw +vpsrlw ymm,k,ymm,imm avx512bw +vpsrlw ymm,k,ymm,m avx512bw +vpsrlw ymm,k,ymm,xmm avx512bw +vpsrlw ymm,m,imm avx512bw +vpsrlw ymm,ymm,imm avx2 +vpsrlw ymm,ymm,imm avx512bw +vpsrlw ymm,ymm,m avx2 +vpsrlw ymm,ymm,m avx512bw +vpsrlw ymm,ymm,xmm avx2 +vpsrlw ymm,ymm,xmm avx512bw +vpsrlw zmm,k,m,imm avx512bw +vpsrlw zmm,k,zmm,imm avx512bw +vpsrlw zmm,k,zmm,m avx512bw +vpsrlw zmm,k,zmm,xmm avx512bw +vpsrlw zmm,m,imm avx512bw +vpsrlw zmm,zmm,imm avx512bw +vpsrlw zmm,zmm,m avx512bw +vpsrlw zmm,zmm,xmm avx512bw +vpsubb xmm,k,xmm,m avx512bw +vpsubb xmm,k,xmm,xmm avx512bw +vpsubb xmm,xmm,m avx +vpsubb xmm,xmm,m avx512bw +vpsubb xmm,xmm,xmm avx +vpsubb xmm,xmm,xmm avx512bw +vpsubb ymm,k,ymm,m avx512bw +vpsubb ymm,k,ymm,ymm avx512bw +vpsubb ymm,ymm,m avx2 +vpsubb ymm,ymm,m avx512bw +vpsubb ymm,ymm,ymm avx2 +vpsubb ymm,ymm,ymm avx512bw +vpsubb zmm,k,zmm,m avx512bw +vpsubb zmm,k,zmm,zmm avx512bw +vpsubb zmm,zmm,m avx512bw +vpsubb zmm,zmm,zmm avx512bw +vpsubd xmm,k,xmm,m avx512f +vpsubd xmm,k,xmm,xmm avx512f +vpsubd xmm,xmm,m avx +vpsubd xmm,xmm,m avx512f +vpsubd xmm,xmm,xmm avx +vpsubd xmm,xmm,xmm avx512f +vpsubd ymm,k,ymm,m avx512f +vpsubd ymm,k,ymm,ymm avx512f +vpsubd ymm,ymm,m avx2 +vpsubd ymm,ymm,m avx512f +vpsubd ymm,ymm,ymm avx2 +vpsubd ymm,ymm,ymm avx512f +vpsubd zmm,k,zmm,m avx512f +vpsubd zmm,k,zmm,m knce +vpsubd zmm,k,zmm,zmm avx512f +vpsubd zmm,k,zmm,zmm knce +vpsubd zmm,zmm,m avx512f +vpsubd zmm,zmm,m knce +vpsubd zmm,zmm,zmm avx512f +vpsubd zmm,zmm,zmm knce +vpsubq xmm,k,xmm,m avx512f +vpsubq xmm,k,xmm,xmm avx512f +vpsubq xmm,xmm,m avx +vpsubq xmm,xmm,m avx512f +vpsubq xmm,xmm,xmm avx +vpsubq xmm,xmm,xmm avx512f +vpsubq ymm,k,ymm,m avx512f +vpsubq ymm,k,ymm,ymm avx512f +vpsubq ymm,ymm,m avx2 +vpsubq ymm,ymm,m avx512f +vpsubq ymm,ymm,ymm avx2 +vpsubq ymm,ymm,ymm avx512f +vpsubq zmm,k,zmm,m avx512f +vpsubq zmm,k,zmm,zmm avx512f +vpsubq zmm,zmm,m avx512f +vpsubq zmm,zmm,zmm avx512f +vpsubrd zmm,k,zmm,m knce +vpsubrd zmm,k,zmm,zmm knce +vpsubrd zmm,zmm,m knce +vpsubrd zmm,zmm,zmm knce +vpsubrsetbd zmm,k,k,m knce +vpsubrsetbd zmm,k,k,zmm knce +vpsubrsetbd zmm,k,m knce +vpsubrsetbd zmm,k,zmm knce +vpsubrsetbd zmm,m knce +vpsubrsetbd zmm,zmm knce +vpsubsb xmm,k,xmm,m avx512bw +vpsubsb xmm,k,xmm,xmm avx512bw +vpsubsb xmm,xmm,m avx +vpsubsb xmm,xmm,m avx512bw +vpsubsb xmm,xmm,xmm avx +vpsubsb xmm,xmm,xmm avx512bw +vpsubsb ymm,k,ymm,m avx512bw +vpsubsb ymm,k,ymm,ymm avx512bw +vpsubsb ymm,ymm,m avx2 +vpsubsb ymm,ymm,m avx512bw +vpsubsb ymm,ymm,ymm avx2 +vpsubsb ymm,ymm,ymm avx512bw +vpsubsb zmm,k,zmm,m avx512bw +vpsubsb zmm,k,zmm,zmm avx512bw +vpsubsb zmm,zmm,m avx512bw +vpsubsb zmm,zmm,zmm avx512bw +vpsubsetbd zmm,k,k,m knce +vpsubsetbd zmm,k,k,zmm knce +vpsubsetbd zmm,k,m knce +vpsubsetbd zmm,k,zmm knce +vpsubsetbd zmm,m knce +vpsubsetbd zmm,zmm knce +vpsubsw xmm,k,xmm,m avx512bw +vpsubsw xmm,k,xmm,xmm avx512bw +vpsubsw xmm,xmm,m avx +vpsubsw xmm,xmm,m avx512bw +vpsubsw xmm,xmm,xmm avx +vpsubsw xmm,xmm,xmm avx512bw +vpsubsw ymm,k,ymm,m avx512bw +vpsubsw ymm,k,ymm,ymm avx512bw +vpsubsw ymm,ymm,m avx2 +vpsubsw ymm,ymm,m avx512bw +vpsubsw ymm,ymm,ymm avx2 +vpsubsw ymm,ymm,ymm avx512bw +vpsubsw zmm,k,zmm,m avx512bw +vpsubsw zmm,k,zmm,zmm avx512bw +vpsubsw zmm,zmm,m avx512bw +vpsubsw zmm,zmm,zmm avx512bw +vpsubusb xmm,k,xmm,m avx512bw +vpsubusb xmm,k,xmm,xmm avx512bw +vpsubusb xmm,xmm,m avx +vpsubusb xmm,xmm,m avx512bw +vpsubusb xmm,xmm,xmm avx +vpsubusb xmm,xmm,xmm avx512bw +vpsubusb ymm,k,ymm,m avx512bw +vpsubusb ymm,k,ymm,ymm avx512bw +vpsubusb ymm,ymm,m avx2 +vpsubusb ymm,ymm,m avx512bw +vpsubusb ymm,ymm,ymm avx2 +vpsubusb ymm,ymm,ymm avx512bw +vpsubusb zmm,k,zmm,m avx512bw +vpsubusb zmm,k,zmm,zmm avx512bw +vpsubusb zmm,zmm,m avx512bw +vpsubusb zmm,zmm,zmm avx512bw +vpsubusw xmm,k,xmm,m avx512bw +vpsubusw xmm,k,xmm,xmm avx512bw +vpsubusw xmm,xmm,m avx +vpsubusw xmm,xmm,m avx512bw +vpsubusw xmm,xmm,xmm avx +vpsubusw xmm,xmm,xmm avx512bw +vpsubusw ymm,k,ymm,m avx512bw +vpsubusw ymm,k,ymm,ymm avx512bw +vpsubusw ymm,ymm,m avx2 +vpsubusw ymm,ymm,m avx512bw +vpsubusw ymm,ymm,ymm avx2 +vpsubusw ymm,ymm,ymm avx512bw +vpsubusw zmm,k,zmm,m avx512bw +vpsubusw zmm,k,zmm,zmm avx512bw +vpsubusw zmm,zmm,m avx512bw +vpsubusw zmm,zmm,zmm avx512bw +vpsubw xmm,k,xmm,m avx512bw +vpsubw xmm,k,xmm,xmm avx512bw +vpsubw xmm,xmm,m avx +vpsubw xmm,xmm,m avx512bw +vpsubw xmm,xmm,xmm avx +vpsubw xmm,xmm,xmm avx512bw +vpsubw ymm,k,ymm,m avx512bw +vpsubw ymm,k,ymm,ymm avx512bw +vpsubw ymm,ymm,m avx2 +vpsubw ymm,ymm,m avx512bw +vpsubw ymm,ymm,ymm avx2 +vpsubw ymm,ymm,ymm avx512bw +vpsubw zmm,k,zmm,m avx512bw +vpsubw zmm,k,zmm,zmm avx512bw +vpsubw zmm,zmm,m avx512bw +vpsubw zmm,zmm,zmm avx512bw +vpternlogd xmm,k,xmm,m,imm avx512f +vpternlogd xmm,k,xmm,xmm,imm avx512f +vpternlogd xmm,xmm,m,imm avx512f +vpternlogd xmm,xmm,xmm,imm avx512f +vpternlogd ymm,k,ymm,m,imm avx512f +vpternlogd ymm,k,ymm,ymm,imm avx512f +vpternlogd ymm,ymm,m,imm avx512f +vpternlogd ymm,ymm,ymm,imm avx512f +vpternlogd zmm,k,zmm,m,imm avx512f +vpternlogd zmm,k,zmm,zmm,imm avx512f +vpternlogd zmm,zmm,m,imm avx512f +vpternlogd zmm,zmm,zmm,imm avx512f +vpternlogq xmm,k,xmm,m,imm avx512f +vpternlogq xmm,k,xmm,xmm,imm avx512f +vpternlogq xmm,xmm,m,imm avx512f +vpternlogq xmm,xmm,xmm,imm avx512f +vpternlogq ymm,k,ymm,m,imm avx512f +vpternlogq ymm,k,ymm,ymm,imm avx512f +vpternlogq ymm,ymm,m,imm avx512f +vpternlogq ymm,ymm,ymm,imm avx512f +vpternlogq zmm,k,zmm,m,imm avx512f +vpternlogq zmm,k,zmm,zmm,imm avx512f +vpternlogq zmm,zmm,m,imm avx512f +vpternlogq zmm,zmm,zmm,imm avx512f +vptest xmm,m avx +vptest xmm,xmm avx +vptest ymm,m avx +vptest ymm,ymm avx +vptestmb k,k,xmm,m avx512bw +vptestmb k,k,xmm,xmm avx512bw +vptestmb k,k,ymm,m avx512bw +vptestmb k,k,ymm,ymm avx512bw +vptestmb k,k,zmm,m avx512bw +vptestmb k,k,zmm,zmm avx512bw +vptestmb k,xmm,m avx512bw +vptestmb k,xmm,xmm avx512bw +vptestmb k,ymm,m avx512bw +vptestmb k,ymm,ymm avx512bw +vptestmb k,zmm,m avx512bw +vptestmb k,zmm,zmm avx512bw +vptestmb xmm,m avx512bw +vptestmb xmm,xmm avx512bw +vptestmb ymm,m avx512bw +vptestmb ymm,ymm avx512bw +vptestmb zmm,m avx512bw +vptestmb zmm,zmm avx512bw +vptestmd k,k,xmm,m avx512f +vptestmd k,k,xmm,xmm avx512f +vptestmd k,k,ymm,m avx512f +vptestmd k,k,ymm,ymm avx512f +vptestmd k,k,zmm,m avx512f +vptestmd k,k,zmm,m knce +vptestmd k,k,zmm,zmm avx512f +vptestmd k,k,zmm,zmm knce +vptestmd k,xmm,m avx512f +vptestmd k,xmm,xmm avx512f +vptestmd k,ymm,m avx512f +vptestmd k,ymm,ymm avx512f +vptestmd k,zmm,m avx512f +vptestmd k,zmm,m knce +vptestmd k,zmm,zmm avx512f +vptestmd k,zmm,zmm knce +vptestmd xmm,m avx512f +vptestmd xmm,xmm avx512f +vptestmd ymm,m avx512f +vptestmd ymm,ymm avx512f +vptestmd zmm,m avx512f +vptestmd zmm,m knce +vptestmd zmm,zmm avx512f +vptestmd zmm,zmm knce +vptestmq k,k,xmm,m avx512f +vptestmq k,k,xmm,xmm avx512f +vptestmq k,k,ymm,m avx512f +vptestmq k,k,ymm,ymm avx512f +vptestmq k,k,zmm,m avx512f +vptestmq k,k,zmm,zmm avx512f +vptestmq k,xmm,m avx512f +vptestmq k,xmm,xmm avx512f +vptestmq k,ymm,m avx512f +vptestmq k,ymm,ymm avx512f +vptestmq k,zmm,m avx512f +vptestmq k,zmm,zmm avx512f +vptestmq xmm,m avx512f +vptestmq xmm,xmm avx512f +vptestmq ymm,m avx512f +vptestmq ymm,ymm avx512f +vptestmq zmm,m avx512f +vptestmq zmm,zmm avx512f +vptestmw k,k,xmm,m avx512bw +vptestmw k,k,xmm,xmm avx512bw +vptestmw k,k,ymm,m avx512bw +vptestmw k,k,ymm,ymm avx512bw +vptestmw k,k,zmm,m avx512bw +vptestmw k,k,zmm,zmm avx512bw +vptestmw k,xmm,m avx512bw +vptestmw k,xmm,xmm avx512bw +vptestmw k,ymm,m avx512bw +vptestmw k,ymm,ymm avx512bw +vptestmw k,zmm,m avx512bw +vptestmw k,zmm,zmm avx512bw +vptestmw xmm,m avx512bw +vptestmw xmm,xmm avx512bw +vptestmw ymm,m avx512bw +vptestmw ymm,ymm avx512bw +vptestmw zmm,m avx512bw +vptestmw zmm,zmm avx512bw +vptestnmb k,k,xmm,m avx512bw +vptestnmb k,k,xmm,xmm avx512bw +vptestnmb k,k,ymm,m avx512bw +vptestnmb k,k,ymm,ymm avx512bw +vptestnmb k,k,zmm,m avx512bw +vptestnmb k,k,zmm,zmm avx512bw +vptestnmb k,xmm,m avx512bw +vptestnmb k,xmm,xmm avx512bw +vptestnmb k,ymm,m avx512bw +vptestnmb k,ymm,ymm avx512bw +vptestnmb k,zmm,m avx512bw +vptestnmb k,zmm,zmm avx512bw +vptestnmb xmm,m avx512bw +vptestnmb xmm,xmm avx512bw +vptestnmb ymm,m avx512bw +vptestnmb ymm,ymm avx512bw +vptestnmb zmm,m avx512bw +vptestnmb zmm,zmm avx512bw +vptestnmd k,k,xmm,m avx512f +vptestnmd k,k,xmm,xmm avx512f +vptestnmd k,k,ymm,m avx512f +vptestnmd k,k,ymm,ymm avx512f +vptestnmd k,k,zmm,m avx512f +vptestnmd k,k,zmm,zmm avx512f +vptestnmd k,xmm,m avx512f +vptestnmd k,xmm,xmm avx512f +vptestnmd k,ymm,m avx512f +vptestnmd k,ymm,ymm avx512f +vptestnmd k,zmm,m avx512f +vptestnmd k,zmm,zmm avx512f +vptestnmd xmm,m avx512f +vptestnmd xmm,xmm avx512f +vptestnmd ymm,m avx512f +vptestnmd ymm,ymm avx512f +vptestnmd zmm,m avx512f +vptestnmd zmm,zmm avx512f +vptestnmq k,k,xmm,m avx512f +vptestnmq k,k,xmm,xmm avx512f +vptestnmq k,k,ymm,m avx512f +vptestnmq k,k,ymm,ymm avx512f +vptestnmq k,k,zmm,m avx512f +vptestnmq k,k,zmm,zmm avx512f +vptestnmq k,xmm,m avx512f +vptestnmq k,xmm,xmm avx512f +vptestnmq k,ymm,m avx512f +vptestnmq k,ymm,ymm avx512f +vptestnmq k,zmm,m avx512f +vptestnmq k,zmm,zmm avx512f +vptestnmq xmm,m avx512f +vptestnmq xmm,xmm avx512f +vptestnmq ymm,m avx512f +vptestnmq ymm,ymm avx512f +vptestnmq zmm,m avx512f +vptestnmq zmm,zmm avx512f +vptestnmw k,k,xmm,m avx512bw +vptestnmw k,k,xmm,xmm avx512bw +vptestnmw k,k,ymm,m avx512bw +vptestnmw k,k,ymm,ymm avx512bw +vptestnmw k,k,zmm,m avx512bw +vptestnmw k,k,zmm,zmm avx512bw +vptestnmw k,xmm,m avx512bw +vptestnmw k,xmm,xmm avx512bw +vptestnmw k,ymm,m avx512bw +vptestnmw k,ymm,ymm avx512bw +vptestnmw k,zmm,m avx512bw +vptestnmw k,zmm,zmm avx512bw +vptestnmw xmm,m avx512bw +vptestnmw xmm,xmm avx512bw +vptestnmw ymm,m avx512bw +vptestnmw ymm,ymm avx512bw +vptestnmw zmm,m avx512bw +vptestnmw zmm,zmm avx512bw +vpunpckhbw xmm,k,xmm,m avx512bw +vpunpckhbw xmm,k,xmm,xmm avx512bw +vpunpckhbw xmm,xmm,m avx +vpunpckhbw xmm,xmm,m avx512bw +vpunpckhbw xmm,xmm,xmm avx +vpunpckhbw xmm,xmm,xmm avx512bw +vpunpckhbw ymm,k,ymm,m avx512bw +vpunpckhbw ymm,k,ymm,ymm avx512bw +vpunpckhbw ymm,ymm,m avx2 +vpunpckhbw ymm,ymm,m avx512bw +vpunpckhbw ymm,ymm,ymm avx2 +vpunpckhbw ymm,ymm,ymm avx512bw +vpunpckhbw zmm,k,zmm,m avx512bw +vpunpckhbw zmm,k,zmm,zmm avx512bw +vpunpckhbw zmm,zmm,m avx512bw +vpunpckhbw zmm,zmm,zmm avx512bw +vpunpckhdq xmm,k,xmm,m avx512f +vpunpckhdq xmm,k,xmm,xmm avx512f +vpunpckhdq xmm,xmm,m avx +vpunpckhdq xmm,xmm,m avx512f +vpunpckhdq xmm,xmm,xmm avx +vpunpckhdq xmm,xmm,xmm avx512f +vpunpckhdq ymm,k,ymm,m avx512f +vpunpckhdq ymm,k,ymm,ymm avx512f +vpunpckhdq ymm,ymm,m avx2 +vpunpckhdq ymm,ymm,m avx512f +vpunpckhdq ymm,ymm,ymm avx2 +vpunpckhdq ymm,ymm,ymm avx512f +vpunpckhdq zmm,k,zmm,m avx512f +vpunpckhdq zmm,k,zmm,zmm avx512f +vpunpckhdq zmm,zmm,m avx512f +vpunpckhdq zmm,zmm,zmm avx512f +vpunpckhqdq xmm,k,xmm,m avx512f +vpunpckhqdq xmm,k,xmm,xmm avx512f +vpunpckhqdq xmm,xmm,m avx +vpunpckhqdq xmm,xmm,m avx512f +vpunpckhqdq xmm,xmm,xmm avx +vpunpckhqdq xmm,xmm,xmm avx512f +vpunpckhqdq ymm,k,ymm,m avx512f +vpunpckhqdq ymm,k,ymm,ymm avx512f +vpunpckhqdq ymm,ymm,m avx2 +vpunpckhqdq ymm,ymm,m avx512f +vpunpckhqdq ymm,ymm,ymm avx2 +vpunpckhqdq ymm,ymm,ymm avx512f +vpunpckhqdq zmm,k,zmm,m avx512f +vpunpckhqdq zmm,k,zmm,zmm avx512f +vpunpckhqdq zmm,zmm,m avx512f +vpunpckhqdq zmm,zmm,zmm avx512f +vpunpckhwd xmm,k,xmm,m avx512bw +vpunpckhwd xmm,k,xmm,xmm avx512bw +vpunpckhwd xmm,xmm,m avx +vpunpckhwd xmm,xmm,m avx512bw +vpunpckhwd xmm,xmm,xmm avx +vpunpckhwd xmm,xmm,xmm avx512bw +vpunpckhwd ymm,k,ymm,m avx512bw +vpunpckhwd ymm,k,ymm,ymm avx512bw +vpunpckhwd ymm,ymm,m avx2 +vpunpckhwd ymm,ymm,m avx512bw +vpunpckhwd ymm,ymm,ymm avx2 +vpunpckhwd ymm,ymm,ymm avx512bw +vpunpckhwd zmm,k,zmm,m avx512bw +vpunpckhwd zmm,k,zmm,zmm avx512bw +vpunpckhwd zmm,zmm,m avx512bw +vpunpckhwd zmm,zmm,zmm avx512bw +vpunpcklbw xmm,k,xmm,m avx512bw +vpunpcklbw xmm,k,xmm,xmm avx512bw +vpunpcklbw xmm,xmm,m avx +vpunpcklbw xmm,xmm,m avx512bw +vpunpcklbw xmm,xmm,xmm avx +vpunpcklbw xmm,xmm,xmm avx512bw +vpunpcklbw ymm,k,ymm,m avx512bw +vpunpcklbw ymm,k,ymm,ymm avx512bw +vpunpcklbw ymm,ymm,m avx2 +vpunpcklbw ymm,ymm,m avx512bw +vpunpcklbw ymm,ymm,ymm avx2 +vpunpcklbw ymm,ymm,ymm avx512bw +vpunpcklbw zmm,k,zmm,m avx512bw +vpunpcklbw zmm,k,zmm,zmm avx512bw +vpunpcklbw zmm,zmm,m avx512bw +vpunpcklbw zmm,zmm,zmm avx512bw +vpunpckldq xmm,k,xmm,m avx512f +vpunpckldq xmm,k,xmm,xmm avx512f +vpunpckldq xmm,xmm,m avx +vpunpckldq xmm,xmm,m avx512f +vpunpckldq xmm,xmm,xmm avx +vpunpckldq xmm,xmm,xmm avx512f +vpunpckldq ymm,k,ymm,m avx512f +vpunpckldq ymm,k,ymm,ymm avx512f +vpunpckldq ymm,ymm,m avx2 +vpunpckldq ymm,ymm,m avx512f +vpunpckldq ymm,ymm,ymm avx2 +vpunpckldq ymm,ymm,ymm avx512f +vpunpckldq zmm,k,zmm,m avx512f +vpunpckldq zmm,k,zmm,zmm avx512f +vpunpckldq zmm,zmm,m avx512f +vpunpckldq zmm,zmm,zmm avx512f +vpunpcklqdq xmm,k,xmm,m avx512f +vpunpcklqdq xmm,k,xmm,xmm avx512f +vpunpcklqdq xmm,xmm,m avx +vpunpcklqdq xmm,xmm,m avx512f +vpunpcklqdq xmm,xmm,xmm avx +vpunpcklqdq xmm,xmm,xmm avx512f +vpunpcklqdq ymm,k,ymm,m avx512f +vpunpcklqdq ymm,k,ymm,ymm avx512f +vpunpcklqdq ymm,ymm,m avx2 +vpunpcklqdq ymm,ymm,m avx512f +vpunpcklqdq ymm,ymm,ymm avx2 +vpunpcklqdq ymm,ymm,ymm avx512f +vpunpcklqdq zmm,k,zmm,m avx512f +vpunpcklqdq zmm,k,zmm,zmm avx512f +vpunpcklqdq zmm,zmm,m avx512f +vpunpcklqdq zmm,zmm,zmm avx512f +vpunpcklwd xmm,k,xmm,m avx512bw +vpunpcklwd xmm,k,xmm,xmm avx512bw +vpunpcklwd xmm,xmm,m avx +vpunpcklwd xmm,xmm,m avx512bw +vpunpcklwd xmm,xmm,xmm avx +vpunpcklwd xmm,xmm,xmm avx512bw +vpunpcklwd ymm,k,ymm,m avx512bw +vpunpcklwd ymm,k,ymm,ymm avx512bw +vpunpcklwd ymm,ymm,m avx2 +vpunpcklwd ymm,ymm,m avx512bw +vpunpcklwd ymm,ymm,ymm avx2 +vpunpcklwd ymm,ymm,ymm avx512bw +vpunpcklwd zmm,k,zmm,m avx512bw +vpunpcklwd zmm,k,zmm,zmm avx512bw +vpunpcklwd zmm,zmm,m avx512bw +vpunpcklwd zmm,zmm,zmm avx512bw +vpxor xmm,xmm,m avx +vpxor xmm,xmm,xmm avx +vpxor ymm,ymm,m avx2 +vpxor ymm,ymm,ymm avx2 +vpxord xmm,k,xmm,m avx512f +vpxord xmm,k,xmm,xmm avx512f +vpxord xmm,xmm,m avx512f +vpxord xmm,xmm,xmm avx512f +vpxord ymm,k,ymm,m avx512f +vpxord ymm,k,ymm,ymm avx512f +vpxord ymm,ymm,m avx512f +vpxord ymm,ymm,ymm avx512f +vpxord zmm,k,zmm,m avx512f +vpxord zmm,k,zmm,m knce +vpxord zmm,k,zmm,zmm avx512f +vpxord zmm,k,zmm,zmm knce +vpxord zmm,zmm,m avx512f +vpxord zmm,zmm,m knce +vpxord zmm,zmm,zmm avx512f +vpxord zmm,zmm,zmm knce +vpxorq xmm,k,xmm,m avx512f +vpxorq xmm,k,xmm,xmm avx512f +vpxorq xmm,xmm,m avx512f +vpxorq xmm,xmm,xmm avx512f +vpxorq ymm,k,ymm,m avx512f +vpxorq ymm,k,ymm,ymm avx512f +vpxorq ymm,ymm,m avx512f +vpxorq ymm,ymm,ymm avx512f +vpxorq zmm,k,zmm,m avx512f +vpxorq zmm,k,zmm,m knce +vpxorq zmm,k,zmm,zmm avx512f +vpxorq zmm,k,zmm,zmm knce +vpxorq zmm,zmm,m avx512f +vpxorq zmm,zmm,m knce +vpxorq zmm,zmm,zmm avx512f +vpxorq zmm,zmm,zmm knce +vrangepd xmm,k,xmm,m,imm avx512dq +vrangepd xmm,k,xmm,xmm,imm avx512dq +vrangepd xmm,xmm,m,imm avx512dq +vrangepd xmm,xmm,xmm,imm avx512dq +vrangepd ymm,k,ymm,m,imm avx512dq +vrangepd ymm,k,ymm,ymm,imm avx512dq +vrangepd ymm,ymm,m,imm avx512dq +vrangepd ymm,ymm,ymm,imm avx512dq +vrangepd zmm,k,zmm,m,imm avx512dq +vrangepd zmm,k,zmm,zmm,imm avx512dq +vrangepd zmm,zmm,m,imm avx512dq +vrangepd zmm,zmm,zmm,imm avx512dq +vrangeps xmm,k,xmm,m,imm avx512dq +vrangeps xmm,k,xmm,xmm,imm avx512dq +vrangeps xmm,xmm,m,imm avx512dq +vrangeps xmm,xmm,xmm,imm avx512dq +vrangeps ymm,k,ymm,m,imm avx512dq +vrangeps ymm,k,ymm,ymm,imm avx512dq +vrangeps ymm,ymm,m,imm avx512dq +vrangeps ymm,ymm,ymm,imm avx512dq +vrangeps zmm,k,zmm,m,imm avx512dq +vrangeps zmm,k,zmm,zmm,imm avx512dq +vrangeps zmm,zmm,m,imm avx512dq +vrangeps zmm,zmm,zmm,imm avx512dq +vrangesd xmm,k,xmm,m,imm avx512dq_scalar +vrangesd xmm,k,xmm,xmm,imm avx512dq_scalar +vrangesd xmm,xmm,m,imm avx512dq_scalar +vrangesd xmm,xmm,xmm,imm avx512dq_scalar +vrangess xmm,k,xmm,m,imm avx512dq_scalar +vrangess xmm,k,xmm,xmm,imm avx512dq_scalar +vrangess xmm,xmm,m,imm avx512dq_scalar +vrangess xmm,xmm,xmm,imm avx512dq_scalar +vrcp14pd xmm,k,m avx512f +vrcp14pd xmm,k,xmm avx512f +vrcp14pd xmm,m avx512f +vrcp14pd xmm,xmm avx512f +vrcp14pd ymm,k,m avx512f +vrcp14pd ymm,k,ymm avx512f +vrcp14pd ymm,m avx512f +vrcp14pd ymm,ymm avx512f +vrcp14pd zmm,k,m avx512f +vrcp14pd zmm,k,zmm avx512f +vrcp14pd zmm,m avx512f +vrcp14pd zmm,zmm avx512f +vrcp14ps xmm,k,m avx512f +vrcp14ps xmm,k,xmm avx512f +vrcp14ps xmm,m avx512f +vrcp14ps xmm,xmm avx512f +vrcp14ps ymm,k,m avx512f +vrcp14ps ymm,k,ymm avx512f +vrcp14ps ymm,m avx512f +vrcp14ps ymm,ymm avx512f +vrcp14ps zmm,k,m avx512f +vrcp14ps zmm,k,zmm avx512f +vrcp14ps zmm,m avx512f +vrcp14ps zmm,zmm avx512f +vrcp14sd xmm,k,xmm,m avx512f_scalar +vrcp14sd xmm,k,xmm,xmm avx512f_scalar +vrcp14sd xmm,xmm,m avx512f_scalar +vrcp14sd xmm,xmm,xmm avx512f_scalar +vrcp14ss xmm,k,xmm,m avx512f_scalar +vrcp14ss xmm,k,xmm,xmm avx512f_scalar +vrcp14ss xmm,xmm,m avx512f_scalar +vrcp14ss xmm,xmm,xmm avx512f_scalar +vrcp23ps zmm,k,m knce +vrcp23ps zmm,k,zmm knce +vrcp23ps zmm,m knce +vrcp23ps zmm,zmm knce +vrcp28pd zmm,k,m avx512er +vrcp28pd zmm,k,zmm avx512er +vrcp28pd zmm,m avx512er +vrcp28pd zmm,zmm avx512er +vrcp28ps zmm,k,m avx512er +vrcp28ps zmm,k,zmm avx512er +vrcp28ps zmm,m avx512er +vrcp28ps zmm,zmm avx512er +vrcp28sd xmm,k,xmm,m avx512er_scalar +vrcp28sd xmm,k,xmm,xmm avx512er_scalar +vrcp28sd xmm,xmm,m avx512er_scalar +vrcp28sd xmm,xmm,xmm avx512er_scalar +vrcp28ss xmm,k,xmm,m avx512er_scalar +vrcp28ss xmm,k,xmm,xmm avx512er_scalar +vrcp28ss xmm,xmm,m avx512er_scalar +vrcp28ss xmm,xmm,xmm avx512er_scalar +vrcpph xmm,k,m avx512fp16 +vrcpph xmm,k,xmm avx512fp16 +vrcpph xmm,m avx512fp16 +vrcpph xmm,xmm avx512fp16 +vrcpph ymm,k,m avx512fp16 +vrcpph ymm,k,ymm avx512fp16 +vrcpph ymm,m avx512fp16 +vrcpph ymm,ymm avx512fp16 +vrcpph zmm,k,m avx512fp16 +vrcpph zmm,k,zmm avx512fp16 +vrcpph zmm,m avx512fp16 +vrcpph zmm,zmm avx512fp16 +vrcpps xmm,m avx +vrcpps xmm,xmm avx +vrcpps ymm,m avx +vrcpps ymm,ymm avx +vrcpsh xmm,k,xmm,m avx512fp16_scalar +vrcpsh xmm,k,xmm,xmm avx512fp16_scalar +vrcpsh xmm,xmm,m avx512fp16_scalar +vrcpsh xmm,xmm,xmm avx512fp16_scalar +vrcpss xmm,xmm,m avx +vrcpss xmm,xmm,xmm avx +vreducepd xmm,k,m,imm avx512dq +vreducepd xmm,k,xmm,imm avx512dq +vreducepd xmm,m,imm avx512dq +vreducepd xmm,xmm,imm avx512dq +vreducepd ymm,k,m,imm avx512dq +vreducepd ymm,k,ymm,imm avx512dq +vreducepd ymm,m,imm avx512dq +vreducepd ymm,ymm,imm avx512dq +vreducepd zmm,k,m,imm avx512dq +vreducepd zmm,k,zmm,imm avx512dq +vreducepd zmm,m,imm avx512dq +vreducepd zmm,zmm,imm avx512dq +vreduceph xmm,k,m,imm avx512fp16 +vreduceph xmm,k,xmm,imm avx512fp16 +vreduceph xmm,m,imm avx512fp16 +vreduceph xmm,xmm,imm avx512fp16 +vreduceph ymm,k,m,imm avx512fp16 +vreduceph ymm,k,ymm,imm avx512fp16 +vreduceph ymm,m,imm avx512fp16 +vreduceph ymm,ymm,imm avx512fp16 +vreduceph zmm,k,m,imm avx512fp16 +vreduceph zmm,k,zmm,imm avx512fp16 +vreduceph zmm,m,imm avx512fp16 +vreduceph zmm,zmm,imm avx512fp16 +vreduceps xmm,k,m,imm avx512dq +vreduceps xmm,k,xmm,imm avx512dq +vreduceps xmm,m,imm avx512dq +vreduceps xmm,xmm,imm avx512dq +vreduceps ymm,k,m,imm avx512dq +vreduceps ymm,k,ymm,imm avx512dq +vreduceps ymm,m,imm avx512dq +vreduceps ymm,ymm,imm avx512dq +vreduceps zmm,k,m,imm avx512dq +vreduceps zmm,k,zmm,imm avx512dq +vreduceps zmm,m,imm avx512dq +vreduceps zmm,zmm,imm avx512dq +vreducesd xmm,k,xmm,m,imm avx512dq_scalar +vreducesd xmm,k,xmm,xmm,imm avx512dq_scalar +vreducesd xmm,xmm,m,imm avx512dq_scalar +vreducesd xmm,xmm,xmm,imm avx512dq_scalar +vreducesh xmm,k,xmm,m,imm avx512fp16_scalar +vreducesh xmm,k,xmm,xmm,imm avx512fp16_scalar +vreducesh xmm,xmm,m,imm avx512fp16_scalar +vreducesh xmm,xmm,xmm,imm avx512fp16_scalar +vreducess xmm,k,xmm,m,imm avx512dq_scalar +vreducess xmm,k,xmm,xmm,imm avx512dq_scalar +vreducess xmm,xmm,m,imm avx512dq_scalar +vreducess xmm,xmm,xmm,imm avx512dq_scalar +vrndfxpntpd zmm,k,m,imm knce +vrndfxpntpd zmm,k,zmm,imm knce +vrndfxpntpd zmm,m,imm knce +vrndfxpntpd zmm,zmm,imm knce +vrndfxpntps zmm,k,m,imm knce +vrndfxpntps zmm,k,zmm,imm knce +vrndfxpntps zmm,m,imm knce +vrndfxpntps zmm,zmm,imm knce +vrndscalepd xmm,k,m,imm avx512f +vrndscalepd xmm,k,xmm,imm avx512f +vrndscalepd xmm,m,imm avx512f +vrndscalepd xmm,xmm,imm avx512f +vrndscalepd ymm,k,m,imm avx512f +vrndscalepd ymm,k,ymm,imm avx512f +vrndscalepd ymm,m,imm avx512f +vrndscalepd ymm,ymm,imm avx512f +vrndscalepd zmm,k,m,imm avx512f +vrndscalepd zmm,k,zmm,imm avx512f +vrndscalepd zmm,m,imm avx512f +vrndscalepd zmm,zmm,imm avx512f +vrndscaleph xmm,k,m,imm avx512fp16 +vrndscaleph xmm,k,xmm,imm avx512fp16 +vrndscaleph xmm,m,imm avx512fp16 +vrndscaleph xmm,xmm,imm avx512fp16 +vrndscaleph ymm,k,m,imm avx512fp16 +vrndscaleph ymm,k,ymm,imm avx512fp16 +vrndscaleph ymm,m,imm avx512fp16 +vrndscaleph ymm,ymm,imm avx512fp16 +vrndscaleph zmm,k,m,imm avx512fp16 +vrndscaleph zmm,k,zmm,imm avx512fp16 +vrndscaleph zmm,m,imm avx512fp16 +vrndscaleph zmm,zmm,imm avx512fp16 +vrndscaleps xmm,k,m,imm avx512f +vrndscaleps xmm,k,xmm,imm avx512f +vrndscaleps xmm,m,imm avx512f +vrndscaleps xmm,xmm,imm avx512f +vrndscaleps ymm,k,m,imm avx512f +vrndscaleps ymm,k,ymm,imm avx512f +vrndscaleps ymm,m,imm avx512f +vrndscaleps ymm,ymm,imm avx512f +vrndscaleps zmm,k,m,imm avx512f +vrndscaleps zmm,k,zmm,imm avx512f +vrndscaleps zmm,m,imm avx512f +vrndscaleps zmm,zmm,imm avx512f +vrndscalesd xmm,k,xmm,m,imm avx512f_scalar +vrndscalesd xmm,k,xmm,xmm,imm avx512f_scalar +vrndscalesd xmm,xmm,m,imm avx512f_scalar +vrndscalesd xmm,xmm,xmm,imm avx512f_scalar +vrndscalesh xmm,k,xmm,m,imm avx512fp16_scalar +vrndscalesh xmm,k,xmm,xmm,imm avx512fp16_scalar +vrndscalesh xmm,xmm,m,imm avx512fp16_scalar +vrndscalesh xmm,xmm,xmm,imm avx512fp16_scalar +vrndscaless xmm,k,xmm,m,imm avx512f_scalar +vrndscaless xmm,k,xmm,xmm,imm avx512f_scalar +vrndscaless xmm,xmm,m,imm avx512f_scalar +vrndscaless xmm,xmm,xmm,imm avx512f_scalar +vroundpd xmm,m,imm avx +vroundpd xmm,xmm,imm avx +vroundpd ymm,m,imm avx +vroundpd ymm,ymm,imm avx +vroundps xmm,m,imm avx +vroundps xmm,xmm,imm avx +vroundps ymm,m,imm avx +vroundps ymm,ymm,imm avx +vroundsd xmm,xmm,m,imm avx +vroundsd xmm,xmm,xmm,imm avx +vroundss xmm,xmm,m,imm avx +vroundss xmm,xmm,xmm,imm avx +vrsqrt14pd xmm,k,m avx512f +vrsqrt14pd xmm,k,xmm avx512f +vrsqrt14pd xmm,m avx512f +vrsqrt14pd xmm,xmm avx512f +vrsqrt14pd ymm,k,m avx512f +vrsqrt14pd ymm,k,ymm avx512f +vrsqrt14pd ymm,m avx512f +vrsqrt14pd ymm,ymm avx512f +vrsqrt14pd zmm,k,m avx512f +vrsqrt14pd zmm,k,zmm avx512f +vrsqrt14pd zmm,m avx512f +vrsqrt14pd zmm,zmm avx512f +vrsqrt14ps xmm,k,m avx512f +vrsqrt14ps xmm,k,xmm avx512f +vrsqrt14ps xmm,m avx512f +vrsqrt14ps xmm,xmm avx512f +vrsqrt14ps ymm,k,m avx512f +vrsqrt14ps ymm,k,ymm avx512f +vrsqrt14ps ymm,m avx512f +vrsqrt14ps ymm,ymm avx512f +vrsqrt14ps zmm,k,m avx512f +vrsqrt14ps zmm,k,zmm avx512f +vrsqrt14ps zmm,m avx512f +vrsqrt14ps zmm,zmm avx512f +vrsqrt14sd xmm,k,xmm,m avx512f_scalar +vrsqrt14sd xmm,k,xmm,xmm avx512f_scalar +vrsqrt14sd xmm,xmm,m avx512f_scalar +vrsqrt14sd xmm,xmm,xmm avx512f_scalar +vrsqrt14ss xmm,k,xmm,m avx512f_scalar +vrsqrt14ss xmm,k,xmm,xmm avx512f_scalar +vrsqrt14ss xmm,xmm,m avx512f_scalar +vrsqrt14ss xmm,xmm,xmm avx512f_scalar +vrsqrt23ps zmm,k,m knce +vrsqrt23ps zmm,k,zmm knce +vrsqrt23ps zmm,m knce +vrsqrt23ps zmm,zmm knce +vrsqrt28pd zmm,k,m avx512er +vrsqrt28pd zmm,k,zmm avx512er +vrsqrt28pd zmm,m avx512er +vrsqrt28pd zmm,zmm avx512er +vrsqrt28ps zmm,k,m avx512er +vrsqrt28ps zmm,k,zmm avx512er +vrsqrt28ps zmm,m avx512er +vrsqrt28ps zmm,zmm avx512er +vrsqrt28sd xmm,k,xmm,m avx512er_scalar +vrsqrt28sd xmm,k,xmm,xmm avx512er_scalar +vrsqrt28sd xmm,xmm,m avx512er_scalar +vrsqrt28sd xmm,xmm,xmm avx512er_scalar +vrsqrt28ss xmm,k,xmm,m avx512er_scalar +vrsqrt28ss xmm,k,xmm,xmm avx512er_scalar +vrsqrt28ss xmm,xmm,m avx512er_scalar +vrsqrt28ss xmm,xmm,xmm avx512er_scalar +vrsqrtph xmm,k,m avx512fp16 +vrsqrtph xmm,k,xmm avx512fp16 +vrsqrtph xmm,m avx512fp16 +vrsqrtph xmm,xmm avx512fp16 +vrsqrtph ymm,k,m avx512fp16 +vrsqrtph ymm,k,ymm avx512fp16 +vrsqrtph ymm,m avx512fp16 +vrsqrtph ymm,ymm avx512fp16 +vrsqrtph zmm,k,m avx512fp16 +vrsqrtph zmm,k,zmm avx512fp16 +vrsqrtph zmm,m avx512fp16 +vrsqrtph zmm,zmm avx512fp16 +vrsqrtps xmm,m avx +vrsqrtps xmm,xmm avx +vrsqrtps ymm,m avx +vrsqrtps ymm,ymm avx +vrsqrtsh xmm,k,xmm,m avx512fp16_scalar +vrsqrtsh xmm,k,xmm,xmm avx512fp16_scalar +vrsqrtsh xmm,xmm,m avx512fp16_scalar +vrsqrtsh xmm,xmm,xmm avx512fp16_scalar +vrsqrtss xmm,xmm,m avx +vrsqrtss xmm,xmm,xmm avx +vscalefpd xmm,k,xmm,m avx512f +vscalefpd xmm,k,xmm,xmm avx512f +vscalefpd xmm,xmm,m avx512f +vscalefpd xmm,xmm,xmm avx512f +vscalefpd ymm,k,ymm,m avx512f +vscalefpd ymm,k,ymm,ymm avx512f +vscalefpd ymm,ymm,m avx512f +vscalefpd ymm,ymm,ymm avx512f +vscalefpd zmm,k,zmm,m avx512f +vscalefpd zmm,k,zmm,zmm avx512f +vscalefpd zmm,zmm,m avx512f +vscalefpd zmm,zmm,zmm avx512f +vscalefph xmm,k,xmm,m avx512fp16 +vscalefph xmm,k,xmm,xmm avx512fp16 +vscalefph xmm,xmm,m avx512fp16 +vscalefph xmm,xmm,xmm avx512fp16 +vscalefph ymm,k,ymm,m avx512fp16 +vscalefph ymm,k,ymm,ymm avx512fp16 +vscalefph ymm,ymm,m avx512fp16 +vscalefph ymm,ymm,ymm avx512fp16 +vscalefph zmm,k,zmm,m avx512fp16 +vscalefph zmm,k,zmm,zmm avx512fp16 +vscalefph zmm,zmm,m avx512fp16 +vscalefph zmm,zmm,zmm avx512fp16 +vscalefps xmm,k,xmm,m avx512f +vscalefps xmm,k,xmm,xmm avx512f +vscalefps xmm,xmm,m avx512f +vscalefps xmm,xmm,xmm avx512f +vscalefps ymm,k,ymm,m avx512f +vscalefps ymm,k,ymm,ymm avx512f +vscalefps ymm,ymm,m avx512f +vscalefps ymm,ymm,ymm avx512f +vscalefps zmm,k,zmm,m avx512f +vscalefps zmm,k,zmm,zmm avx512f +vscalefps zmm,zmm,m avx512f +vscalefps zmm,zmm,zmm avx512f +vscalefsd xmm,k,xmm,m avx512f_scalar +vscalefsd xmm,k,xmm,xmm avx512f_scalar +vscalefsd xmm,xmm,m avx512f_scalar +vscalefsd xmm,xmm,xmm avx512f_scalar +vscalefsh xmm,k,xmm,m avx512fp16_scalar +vscalefsh xmm,k,xmm,xmm avx512fp16_scalar +vscalefsh xmm,xmm,m avx512fp16_scalar +vscalefsh xmm,xmm,xmm avx512fp16_scalar +vscalefss xmm,k,xmm,m avx512f_scalar +vscalefss xmm,k,xmm,xmm avx512f_scalar +vscalefss xmm,xmm,m avx512f_scalar +vscalefss xmm,xmm,xmm avx512f_scalar +vscaleps zmm,k,zmm,m knce +vscaleps zmm,k,zmm,zmm knce +vscaleps zmm,zmm,m knce +vscaleps zmm,zmm,zmm knce +vscatterdpd m,k,xmm avx512f +vscatterdpd m,k,ymm avx512f +vscatterdpd m,k,zmm avx512f +vscatterdpd m,k,zmm knce +vscatterdpd m,xmm avx512f +vscatterdpd m,ymm avx512f +vscatterdpd m,zmm avx512f +vscatterdpd m,zmm knce +vscatterdps m,k,xmm avx512f +vscatterdps m,k,ymm avx512f +vscatterdps m,k,zmm avx512f +vscatterdps m,k,zmm knce +vscatterdps m,xmm avx512f +vscatterdps m,ymm avx512f +vscatterdps m,zmm avx512f +vscatterdps m,zmm knce +vscatterpf0dpd m avx512pf +vscatterpf0dpd m,k avx512pf +vscatterpf0dps m avx512pf +vscatterpf0dps m knce +vscatterpf0dps m,k avx512pf +vscatterpf0dps m,k knce +vscatterpf0hintdpd m knc_pf_hint +vscatterpf0hintdpd m,k knc_pf_hint +vscatterpf0hintdps m knc_pf_hint +vscatterpf0hintdps m,k knc_pf_hint +vscatterpf0qpd m avx512pf +vscatterpf0qpd m,k avx512pf +vscatterpf0qps m avx512pf +vscatterpf0qps m,k avx512pf +vscatterpf1dpd m avx512pf +vscatterpf1dpd m,k avx512pf +vscatterpf1dps m avx512pf +vscatterpf1dps m knce +vscatterpf1dps m,k avx512pf +vscatterpf1dps m,k knce +vscatterpf1qpd m avx512pf +vscatterpf1qpd m,k avx512pf +vscatterpf1qps m avx512pf +vscatterpf1qps m,k avx512pf +vscatterqpd m,k,xmm avx512f +vscatterqpd m,k,ymm avx512f +vscatterqpd m,k,zmm avx512f +vscatterqpd m,xmm avx512f +vscatterqpd m,ymm avx512f +vscatterqpd m,zmm avx512f +vscatterqps m,k,xmm avx512f +vscatterqps m,k,ymm avx512f +vscatterqps m,xmm avx512f +vscatterqps m,ymm avx512f +vshuff32x4 ymm,k,ymm,m,imm avx512f +vshuff32x4 ymm,k,ymm,ymm,imm avx512f +vshuff32x4 ymm,ymm,m,imm avx512f +vshuff32x4 ymm,ymm,ymm,imm avx512f +vshuff32x4 zmm,k,zmm,m,imm avx512f +vshuff32x4 zmm,k,zmm,zmm,imm avx512f +vshuff32x4 zmm,zmm,m,imm avx512f +vshuff32x4 zmm,zmm,zmm,imm avx512f +vshuff64x2 ymm,k,ymm,m,imm avx512f +vshuff64x2 ymm,k,ymm,ymm,imm avx512f +vshuff64x2 ymm,ymm,m,imm avx512f +vshuff64x2 ymm,ymm,ymm,imm avx512f +vshuff64x2 zmm,k,zmm,m,imm avx512f +vshuff64x2 zmm,k,zmm,zmm,imm avx512f +vshuff64x2 zmm,zmm,m,imm avx512f +vshuff64x2 zmm,zmm,zmm,imm avx512f +vshufi32x4 ymm,k,ymm,m,imm avx512f +vshufi32x4 ymm,k,ymm,ymm,imm avx512f +vshufi32x4 ymm,ymm,m,imm avx512f +vshufi32x4 ymm,ymm,ymm,imm avx512f +vshufi32x4 zmm,k,zmm,m,imm avx512f +vshufi32x4 zmm,k,zmm,zmm,imm avx512f +vshufi32x4 zmm,zmm,m,imm avx512f +vshufi32x4 zmm,zmm,zmm,imm avx512f +vshufi64x2 ymm,k,ymm,m,imm avx512f +vshufi64x2 ymm,k,ymm,ymm,imm avx512f +vshufi64x2 ymm,ymm,m,imm avx512f +vshufi64x2 ymm,ymm,ymm,imm avx512f +vshufi64x2 zmm,k,zmm,m,imm avx512f +vshufi64x2 zmm,k,zmm,zmm,imm avx512f +vshufi64x2 zmm,zmm,m,imm avx512f +vshufi64x2 zmm,zmm,zmm,imm avx512f +vshufpd xmm,k,xmm,m,imm avx512f +vshufpd xmm,k,xmm,xmm,imm avx512f +vshufpd xmm,xmm,m,imm avx +vshufpd xmm,xmm,m,imm avx512f +vshufpd xmm,xmm,xmm,imm avx +vshufpd xmm,xmm,xmm,imm avx512f +vshufpd ymm,k,ymm,m,imm avx512f +vshufpd ymm,k,ymm,ymm,imm avx512f +vshufpd ymm,ymm,m,imm avx +vshufpd ymm,ymm,m,imm avx512f +vshufpd ymm,ymm,ymm,imm avx +vshufpd ymm,ymm,ymm,imm avx512f +vshufpd zmm,k,zmm,m,imm avx512f +vshufpd zmm,k,zmm,zmm,imm avx512f +vshufpd zmm,zmm,m,imm avx512f +vshufpd zmm,zmm,zmm,imm avx512f +vshufps xmm,k,xmm,m,imm avx512f +vshufps xmm,k,xmm,xmm,imm avx512f +vshufps xmm,xmm,m,imm avx +vshufps xmm,xmm,m,imm avx512f +vshufps xmm,xmm,xmm,imm avx +vshufps xmm,xmm,xmm,imm avx512f +vshufps ymm,k,ymm,m,imm avx512f +vshufps ymm,k,ymm,ymm,imm avx512f +vshufps ymm,ymm,m,imm avx +vshufps ymm,ymm,m,imm avx512f +vshufps ymm,ymm,ymm,imm avx +vshufps ymm,ymm,ymm,imm avx512f +vshufps zmm,k,zmm,m,imm avx512f +vshufps zmm,k,zmm,zmm,imm avx512f +vshufps zmm,zmm,m,imm avx512f +vshufps zmm,zmm,zmm,imm avx512f +vsqrtpd xmm,k,m avx512f +vsqrtpd xmm,k,xmm avx512f +vsqrtpd xmm,m avx +vsqrtpd xmm,m avx512f +vsqrtpd xmm,xmm avx +vsqrtpd xmm,xmm avx512f +vsqrtpd ymm,k,m avx512f +vsqrtpd ymm,k,ymm avx512f +vsqrtpd ymm,m avx +vsqrtpd ymm,m avx512f +vsqrtpd ymm,ymm avx +vsqrtpd ymm,ymm avx512f +vsqrtpd zmm,k,m avx512f +vsqrtpd zmm,k,zmm avx512f +vsqrtpd zmm,m avx512f +vsqrtpd zmm,zmm avx512f +vsqrtph xmm,k,m avx512fp16 +vsqrtph xmm,k,xmm avx512fp16 +vsqrtph xmm,m avx512fp16 +vsqrtph xmm,xmm avx512fp16 +vsqrtph ymm,k,m avx512fp16 +vsqrtph ymm,k,ymm avx512fp16 +vsqrtph ymm,m avx512fp16 +vsqrtph ymm,ymm avx512fp16 +vsqrtph zmm,k,m avx512fp16 +vsqrtph zmm,k,zmm avx512fp16 +vsqrtph zmm,m avx512fp16 +vsqrtph zmm,zmm avx512fp16 +vsqrtps xmm,k,m avx512f +vsqrtps xmm,k,xmm avx512f +vsqrtps xmm,m avx +vsqrtps xmm,m avx512f +vsqrtps xmm,xmm avx +vsqrtps xmm,xmm avx512f +vsqrtps ymm,k,m avx512f +vsqrtps ymm,k,ymm avx512f +vsqrtps ymm,m avx +vsqrtps ymm,m avx512f +vsqrtps ymm,ymm avx +vsqrtps ymm,ymm avx512f +vsqrtps zmm,k,m avx512f +vsqrtps zmm,k,zmm avx512f +vsqrtps zmm,m avx512f +vsqrtps zmm,zmm avx512f +vsqrtsd xmm,k,xmm,m avx512f_scalar +vsqrtsd xmm,k,xmm,xmm avx512f_scalar +vsqrtsd xmm,xmm,m avx +vsqrtsd xmm,xmm,m avx512f_scalar +vsqrtsd xmm,xmm,xmm avx +vsqrtsd xmm,xmm,xmm avx512f_scalar +vsqrtsh xmm,k,xmm,m avx512fp16_scalar +vsqrtsh xmm,k,xmm,xmm avx512fp16_scalar +vsqrtsh xmm,xmm,m avx512fp16_scalar +vsqrtsh xmm,xmm,xmm avx512fp16_scalar +vsqrtss xmm,k,xmm,m avx512f_scalar +vsqrtss xmm,k,xmm,xmm avx512f_scalar +vsqrtss xmm,xmm,m avx +vsqrtss xmm,xmm,m avx512f_scalar +vsqrtss xmm,xmm,xmm avx +vsqrtss xmm,xmm,xmm avx512f_scalar +vstmxcsr m avx +vsubpd xmm,k,xmm,m avx512f +vsubpd xmm,k,xmm,xmm avx512f +vsubpd xmm,xmm,m avx +vsubpd xmm,xmm,m avx512f +vsubpd xmm,xmm,xmm avx +vsubpd xmm,xmm,xmm avx512f +vsubpd ymm,k,ymm,m avx512f +vsubpd ymm,k,ymm,ymm avx512f +vsubpd ymm,ymm,m avx +vsubpd ymm,ymm,m avx512f +vsubpd ymm,ymm,ymm avx +vsubpd ymm,ymm,ymm avx512f +vsubpd zmm,k,zmm,m avx512f +vsubpd zmm,k,zmm,m knce +vsubpd zmm,k,zmm,zmm avx512f +vsubpd zmm,k,zmm,zmm knce +vsubpd zmm,zmm,m avx512f +vsubpd zmm,zmm,m knce +vsubpd zmm,zmm,zmm avx512f +vsubpd zmm,zmm,zmm knce +vsubph xmm,k,xmm,m avx512fp16 +vsubph xmm,k,xmm,xmm avx512fp16 +vsubph xmm,xmm,m avx512fp16 +vsubph xmm,xmm,xmm avx512fp16 +vsubph ymm,k,ymm,m avx512fp16 +vsubph ymm,k,ymm,ymm avx512fp16 +vsubph ymm,ymm,m avx512fp16 +vsubph ymm,ymm,ymm avx512fp16 +vsubph zmm,k,zmm,m avx512fp16 +vsubph zmm,k,zmm,zmm avx512fp16 +vsubph zmm,zmm,m avx512fp16 +vsubph zmm,zmm,zmm avx512fp16 +vsubps xmm,k,xmm,m avx512f +vsubps xmm,k,xmm,xmm avx512f +vsubps xmm,xmm,m avx +vsubps xmm,xmm,m avx512f +vsubps xmm,xmm,xmm avx +vsubps xmm,xmm,xmm avx512f +vsubps ymm,k,ymm,m avx512f +vsubps ymm,k,ymm,ymm avx512f +vsubps ymm,ymm,m avx +vsubps ymm,ymm,m avx512f +vsubps ymm,ymm,ymm avx +vsubps ymm,ymm,ymm avx512f +vsubps zmm,k,zmm,m avx512f +vsubps zmm,k,zmm,m knce +vsubps zmm,k,zmm,zmm avx512f +vsubps zmm,k,zmm,zmm knce +vsubps zmm,zmm,m avx512f +vsubps zmm,zmm,m knce +vsubps zmm,zmm,zmm avx512f +vsubps zmm,zmm,zmm knce +vsubrpd zmm,k,zmm,m knce +vsubrpd zmm,k,zmm,zmm knce +vsubrpd zmm,zmm,m knce +vsubrpd zmm,zmm,zmm knce +vsubrps zmm,k,zmm,m knce +vsubrps zmm,k,zmm,zmm knce +vsubrps zmm,zmm,m knce +vsubrps zmm,zmm,zmm knce +vsubsd xmm,k,xmm,m avx512f_scalar +vsubsd xmm,k,xmm,xmm avx512f_scalar +vsubsd xmm,xmm,m avx +vsubsd xmm,xmm,m avx512f_scalar +vsubsd xmm,xmm,xmm avx +vsubsd xmm,xmm,xmm avx512f_scalar +vsubsh xmm,k,xmm,m avx512fp16_scalar +vsubsh xmm,k,xmm,xmm avx512fp16_scalar +vsubsh xmm,xmm,m avx512fp16_scalar +vsubsh xmm,xmm,xmm avx512fp16_scalar +vsubss xmm,k,xmm,m avx512f_scalar +vsubss xmm,k,xmm,xmm avx512f_scalar +vsubss xmm,xmm,m avx +vsubss xmm,xmm,m avx512f_scalar +vsubss xmm,xmm,xmm avx +vsubss xmm,xmm,xmm avx512f_scalar +vtestpd xmm,m avx +vtestpd xmm,xmm avx +vtestpd ymm,m avx +vtestpd ymm,ymm avx +vtestps xmm,m avx +vtestps xmm,xmm avx +vtestps ymm,m avx +vtestps ymm,ymm avx +vucomisd xmm,m avx +vucomisd xmm,m avx512f_scalar +vucomisd xmm,xmm avx +vucomisd xmm,xmm avx512f_scalar +vucomish xmm,m avx512fp16_scalar +vucomish xmm,xmm avx512fp16_scalar +vucomiss xmm,m avx +vucomiss xmm,m avx512f_scalar +vucomiss xmm,xmm avx +vucomiss xmm,xmm avx512f_scalar +vunpckhpd xmm,k,xmm,m avx512f +vunpckhpd xmm,k,xmm,xmm avx512f +vunpckhpd xmm,xmm,m avx +vunpckhpd xmm,xmm,m avx512f +vunpckhpd xmm,xmm,xmm avx +vunpckhpd xmm,xmm,xmm avx512f +vunpckhpd ymm,k,ymm,m avx512f +vunpckhpd ymm,k,ymm,ymm avx512f +vunpckhpd ymm,ymm,m avx +vunpckhpd ymm,ymm,m avx512f +vunpckhpd ymm,ymm,ymm avx +vunpckhpd ymm,ymm,ymm avx512f +vunpckhpd zmm,k,zmm,m avx512f +vunpckhpd zmm,k,zmm,zmm avx512f +vunpckhpd zmm,zmm,m avx512f +vunpckhpd zmm,zmm,zmm avx512f +vunpckhps xmm,k,xmm,m avx512f +vunpckhps xmm,k,xmm,xmm avx512f +vunpckhps xmm,xmm,m avx +vunpckhps xmm,xmm,m avx512f +vunpckhps xmm,xmm,xmm avx +vunpckhps xmm,xmm,xmm avx512f +vunpckhps ymm,k,ymm,m avx512f +vunpckhps ymm,k,ymm,ymm avx512f +vunpckhps ymm,ymm,m avx +vunpckhps ymm,ymm,m avx512f +vunpckhps ymm,ymm,ymm avx +vunpckhps ymm,ymm,ymm avx512f +vunpckhps zmm,k,zmm,m avx512f +vunpckhps zmm,k,zmm,zmm avx512f +vunpckhps zmm,zmm,m avx512f +vunpckhps zmm,zmm,zmm avx512f +vunpcklpd xmm,k,xmm,m avx512f +vunpcklpd xmm,k,xmm,xmm avx512f +vunpcklpd xmm,xmm,m avx +vunpcklpd xmm,xmm,m avx512f +vunpcklpd xmm,xmm,xmm avx +vunpcklpd xmm,xmm,xmm avx512f +vunpcklpd ymm,k,ymm,m avx512f +vunpcklpd ymm,k,ymm,ymm avx512f +vunpcklpd ymm,ymm,m avx +vunpcklpd ymm,ymm,m avx512f +vunpcklpd ymm,ymm,ymm avx +vunpcklpd ymm,ymm,ymm avx512f +vunpcklpd zmm,k,zmm,m avx512f +vunpcklpd zmm,k,zmm,zmm avx512f +vunpcklpd zmm,zmm,m avx512f +vunpcklpd zmm,zmm,zmm avx512f +vunpcklps xmm,k,xmm,m avx512f +vunpcklps xmm,k,xmm,xmm avx512f +vunpcklps xmm,xmm,m avx +vunpcklps xmm,xmm,m avx512f +vunpcklps xmm,xmm,xmm avx +vunpcklps xmm,xmm,xmm avx512f +vunpcklps ymm,k,ymm,m avx512f +vunpcklps ymm,k,ymm,ymm avx512f +vunpcklps ymm,ymm,m avx +vunpcklps ymm,ymm,m avx512f +vunpcklps ymm,ymm,ymm avx +vunpcklps ymm,ymm,ymm avx512f +vunpcklps zmm,k,zmm,m avx512f +vunpcklps zmm,k,zmm,zmm avx512f +vunpcklps zmm,zmm,m avx512f +vunpcklps zmm,zmm,zmm avx512f +vxorpd xmm,k,xmm,m avx512dq +vxorpd xmm,k,xmm,xmm avx512dq +vxorpd xmm,xmm,m avx +vxorpd xmm,xmm,m avx512dq +vxorpd xmm,xmm,xmm avx +vxorpd xmm,xmm,xmm avx512dq +vxorpd ymm,k,ymm,m avx512dq +vxorpd ymm,k,ymm,ymm avx512dq +vxorpd ymm,ymm,m avx +vxorpd ymm,ymm,m avx512dq +vxorpd ymm,ymm,ymm avx +vxorpd ymm,ymm,ymm avx512dq +vxorpd zmm,k,zmm,m avx512dq +vxorpd zmm,k,zmm,zmm avx512dq +vxorpd zmm,zmm,m avx512dq +vxorpd zmm,zmm,zmm avx512dq +vxorps xmm,k,xmm,m avx512dq +vxorps xmm,k,xmm,xmm avx512dq +vxorps xmm,xmm,m avx +vxorps xmm,xmm,m avx512dq +vxorps xmm,xmm,xmm avx +vxorps xmm,xmm,xmm avx512dq +vxorps ymm,k,ymm,m avx512dq +vxorps ymm,k,ymm,ymm avx512dq +vxorps ymm,ymm,m avx +vxorps ymm,ymm,m avx512dq +vxorps ymm,ymm,ymm avx +vxorps ymm,ymm,ymm avx512dq +vxorps zmm,k,zmm,m avx512dq +vxorps zmm,k,zmm,zmm avx512dq +vxorps zmm,zmm,m avx512dq +vxorps zmm,zmm,zmm avx512dq +vzeroall - avx +vzeroupper - avx +wbinvd - i486real +wbnoinvd - wbnoinvd +wrfsbase r rdwrfsgs +wrgsbase r rdwrfsgs +wrmsr - pentiumreal +wrpkru - pku +wrssd m,r32 cet +wrssq m,r64 cet +wrussd m,r32 cet +wrussq m,r64 cet +xabort imm rtm +xadd m,r i486real +xadd m,r8 i486real +xadd r,r i486real +xadd r8,r8 i486real +xbegin relbr rtm +xchg m,r i86 +xchg m,r8 i86 +xchg r,r i86 +xchg r8,r8 i86 +xend - rtm +xgetbv - xsave +xlat - i86 +xor m,imm i86 +xor m,r i86 +xor m,r8 i86 +xor r,imm i86 +xor r,m i86 +xor r,r i86 +xor r8,imm i86 +xor r8,m i86 +xor r8,r8 i86 +xorpd xmm,m sse2 +xorpd xmm,xmm sse2 +xorps xmm,m sse +xorps xmm,xmm sse +xresldtrk - tsx_ldtrk +xrstor m xsave +xrstor64 m xsave +xrstors m xsaves +xrstors64 m xsaves +xsave m xsave +xsave64 m xsave +xsavec m xsavec +xsavec64 m xsavec +xsaveopt m xsaveopt +xsaveopt64 m xsaveopt +xsaves m xsaves +xsaves64 m xsaves +xsetbv - xsave +xstore - via_padlock_rng +xsusldtrk - tsx_ldtrk +xtest - rtm diff --git a/lib-25519/lib25519/scripts-build/ofiles b/lib-25519/lib25519/scripts-build/ofiles new file mode 100755 index 0000000000..f280d1c0ad --- /dev/null +++ b/lib-25519/lib25519/scripts-build/ofiles @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 + +import os +import sys +import shutil + +shutil.rmtree('ofiles',ignore_errors=True) +os.makedirs('ofiles',exist_ok=True) + +done = set() + +i = 0 + +def doit(d): + global i + if d in done: return + done.add(d) + for fn in os.listdir(d): + if fn.endswith('.o'): + shutil.copy2('%s/%s' % (d,fn),'ofiles/%d-%s-%s' % (i,d.replace('/','_').replace('-','_'),fn)) + i += 1 + if os.path.exists(d+'/dependencies'): + with open(d+'/dependencies') as f: + for line in f: + doit(line.strip()) + +for d in sys.stdin: + d = d.strip() + doit(d) diff --git a/lib-25519/lib25519/scripts-build/selected b/lib-25519/lib25519/scripts-build/selected new file mode 100755 index 0000000000..09a781bd11 --- /dev/null +++ b/lib-25519/lib25519/scripts-build/selected @@ -0,0 +1,175 @@ +#!/usr/bin/env python3 + +import os +import sys + +o,p,host,trim = sys.argv[1:5] + +impls = [] + +for line in sys.stdin: + line = line.strip().split('/') + if line[0] != o: continue + if line[1] != p: continue + impls += [line[2:]] + +print('operation %s' % o) +print('primitive %s' % p) + +icarch = {} +iccompiler = {} + +for i,c in impls: + with open('compilerarch/%s' % c) as f: + icarch[i,c] = f.read().strip() + with open('compilerversion/%s' % c) as f: + iccompiler[i,c] = f.read().strip() + +def archkey(a): + if a == 'default': return 1,a # put default last + return -a.count('+'),a + +allimpls = sorted(set(i for i,c in impls)) +allarches = sorted(set(icarch[i,c] for i,c in impls),key=archkey) + +prioritydata = [] + +for i in allimpls: + priorityfn = 'priority/%s-%s-%s' % (o,p,i) + if not os.path.exists(priorityfn): continue + + with open(priorityfn) as f: + for line in f: + line = line.split() + if len(line) < 7: continue + prio,score,priohost,cpuid,version,machine = line[:6] + c = ' '.join(line[6:]) + prio = float(prio) + prioritydata += [(i,prio,score,priohost,cpuid,machine,c)] + +def asupportsic(a,i,c): + a = a.split('+')[1:] + ica = icarch[i,c] + ica = ica.split('+')[1:] + return all(icapart in a for icapart in ica) + +def cpuidsupports(cpuid,a): + a = a.split('+') + cpuid = [int('0x'+cpuid[8*j:8*j+8],16) for j in range(32)] + mmx = cpuid[18] & (1<<23) + sse = cpuid[18] & (1<<25) + sse2 = cpuid[18] & (1<<26) + sse3 = cpuid[17] & (1<<0) + ssse3 = cpuid[17] & (1<<9) + sse41 = cpuid[17] & (1<<19) + sse42 = cpuid[17] & (1<<20) + osxsave = cpuid[17] & (1<<27) + avx = cpuid[17] & (1<<28) + bmi1 = cpuid[20] & (1<<3) + avx2 = cpuid[20] & (1<<5) + bmi2 = cpuid[20] & (1<<8) + avx512f = cpuid[20] & (1<<16) + adx = cpuid[20] & (1<<19) + avx512ifma = cpuid[20] & (1<<21) + avx512vl = cpuid[20] & (1<<31) + xmmsaved = cpuid[27] & (1<<1) + ymmsaved = cpuid[27] & (1<<2) + for apart in a[1:]: + if apart not in ('adx','avx','bmi2','avx2','avx512f','avx512vl','avx512ifma'): + raise ValueError('cpuidsupports does not understand %s' % apart) + if apart == 'avx512f': + if not avx512f: return False + if apart == 'avx512vl': + if not avx512vl: return False + if apart == 'avx512ifma': + if not avx512ifma: return False + if apart == 'bmi2': + if not bmi1: return False + if not bmi2: return False + if apart == 'adx': + if not adx: return False + if apart == 'avx2': + if not avx2: return False + if apart in ('avx','avx2'): + if not avx: return False + if not mmx: return False + if not sse: return False + if not sse2: return False + if not sse3: return False + if not ssse3: return False + if not sse41: return False + if not sse42: return False + if not osxsave: return False + if not xmmsaved: return False + if not ymmsaved: return False + return True + +def selectic(a,aexclude): + if len(aexclude) > 0: + print('note: considering other machines supporting %s' % a) + else: + print('note: considering machines supporting %s' % a) + + # requirement: icarch[i,c] is a subset of a + compatibleimpls = [(i,c) for i,c in impls if asupportsic(a,i,c)] + assert len(compatibleimpls) > 0 + + # desideratum: good performance based on prioritydata + + directmatches = any( + priohost == host + and cpuidsupports(cpuid,a) + and all(not cpuidsupports(cpuid,b) for b in aexclude) + for i,prio,score,priohost,cpuid,machine,c in prioritydata + ) + + if not directmatches: + print('note: no direct matches, so extrapolating from all machines') + + totalprio = {(i,c):0 for i,c in compatibleimpls} + totalweight = {(i,c):0 for i,c in compatibleimpls} + + for prioi,prio,score,priohost,cpuid,machine,prioc in prioritydata: + if directmatches: + if priohost != host: continue + if any(cpuidsupports(cpuid,b) for b in aexclude): continue + if not cpuidsupports(cpuid,a): continue + + for i,c in compatibleimpls: + if i != prioi: continue + + # XXX: use more serious machine learning here + weight = 1.0 + if priohost == host: weight *= 10 + if cpuidsupports(cpuid,a): weight *= 10 + if all(not cpuidsupports(cpuid,b) for b in aexclude): weight *= 10 + weight *= 1+len(os.path.commonprefix([iccompiler[i,c],prioc])) + if iccompiler[i,c] == prioc: weight *= 10 + + # print('note: weight %s from %s %s %s %s for %s %s' % (weight,prio,machine,prioi,prioc,i,c)) + + totalprio[i,c] += prio*weight + totalweight[i,c] += weight + + # note that implementations without priority data are excluded from ranking + ranking = [(totalprio[i,c]/totalweight[i,c],i,c) for i,c in compatibleimpls if totalweight[i,c] > 0] + ranking.sort() + + for prio,i,c in ranking: + print('note: priority %s for %s %s' % (prio,i,c)) + + if len(ranking) == 0: + return compatibleimpls[0] + return ranking[0][1:] + +usedimpls = set() +handledarches = set() +for a in allarches: + i,c = selectic(a,handledarches) + usedimpls.add((i,c)) + print('selected %s %s %s' % (a,i,c)) + handledarches.add(a) + +for i,c in impls: + if (i,c) in usedimpls or trim == 'False': + print('impl %s %s' % (i,c)) diff --git a/lib-25519/lib25519/scripts-build/usedimplementations b/lib-25519/lib25519/scripts-build/usedimplementations new file mode 100755 index 0000000000..1695a8f482 --- /dev/null +++ b/lib-25519/lib25519/scripts-build/usedimplementations @@ -0,0 +1,13 @@ +#!/usr/bin/env python3 + +import sys + +for fn in sys.argv[1:]: + with open(fn) as f: + for line in f: + line = line.split() + if line[0] == 'operation': o = line[1] + if line[0] == 'primitive': p = line[1] + if line[0] == 'impl': + i,c = line[1:] + print('%s/%s/%s/%s' % (o,p,i,c)) diff --git a/lib-25519/lib25519/version b/lib-25519/lib25519/version new file mode 100644 index 0000000000..4bbb3ed7e3 --- /dev/null +++ b/lib-25519/lib25519/version @@ -0,0 +1 @@ +20221222 diff --git a/lib-25519/src/bindings.rs b/lib-25519/src/bindings.rs new file mode 100644 index 0000000000..bab1cdfff7 --- /dev/null +++ b/lib-25519/src/bindings.rs @@ -0,0 +1,38 @@ +pub const LIB25519_DH_PUBLICKEYBYTES: usize = 32; +pub const LIB25519_DH_SECRETKEYBYTES: usize = 32; +pub const LIB25519_DH_BYTES: usize = 32; + +pub const LIB25519_SIGN_SECRETKEYBYTES: usize = 64; +pub const LIB25519_SIGN_PUBLICKEYBYTES: usize = 32; +pub const LIB25519_SIGN_BYTES: usize = 64; + +#[link(name = "25519", kind = "static")] +extern "C" { + pub fn lib25519_dh_x25519_keypair( + arg1: *mut ::std::os::raw::c_uchar, + arg2: *mut ::std::os::raw::c_uchar, + ); + pub fn lib25519_dh_x25519( + arg1: *mut ::std::os::raw::c_uchar, + arg2: *const ::std::os::raw::c_uchar, + arg3: *const ::std::os::raw::c_uchar, + ); + pub fn lib25519_sign_ed25519_keypair( + arg1: *mut ::std::os::raw::c_uchar, + arg2: *mut ::std::os::raw::c_uchar, + ); + pub fn lib25519_sign_ed25519( + arg1: *mut ::std::os::raw::c_uchar, + arg2: *mut ::std::os::raw::c_longlong, + arg3: *const ::std::os::raw::c_uchar, + arg4: ::std::os::raw::c_longlong, + arg5: *const ::std::os::raw::c_uchar, + ); + pub fn lib25519_sign_ed25519_open( + arg1: *mut ::std::os::raw::c_uchar, + arg2: *mut ::std::os::raw::c_longlong, + arg3: *const ::std::os::raw::c_uchar, + arg4: ::std::os::raw::c_longlong, + arg5: *const ::std::os::raw::c_uchar, + ) -> ::std::os::raw::c_int; +} diff --git a/lib-25519/src/lib.rs b/lib-25519/src/lib.rs new file mode 100644 index 0000000000..5f0229a26d --- /dev/null +++ b/lib-25519/src/lib.rs @@ -0,0 +1,276 @@ +mod bindings; +use std::str::FromStr; + +use bindings::*; + +#[derive(Debug)] +pub struct PublicKeyDh([u8; LIB25519_DH_PUBLICKEYBYTES]); +impl PublicKeyDh { + pub fn new(k: [u8; LIB25519_DH_PUBLICKEYBYTES]) -> Self { + Self(k) + } + + pub fn bytes(&self) -> [u8; LIB25519_DH_PUBLICKEYBYTES] { + self.0 + } +} + +#[derive(Debug)] +pub struct PublicKeySign([u8; LIB25519_SIGN_PUBLICKEYBYTES]); +impl PublicKeySign { + pub fn new(k: [u8; LIB25519_SIGN_PUBLICKEYBYTES]) -> Self { + Self(k) + } + + pub fn bytes(&self) -> [u8; LIB25519_SIGN_PUBLICKEYBYTES] { + self.0 + } +} + +#[derive(Debug)] +pub struct SecretKeyDh([u8; LIB25519_DH_SECRETKEYBYTES]); +impl SecretKeyDh { + pub fn new(k: [u8; LIB25519_DH_SECRETKEYBYTES]) -> Self { + Self(k) + } + + pub fn bytes(&self) -> [u8; LIB25519_DH_SECRETKEYBYTES] { + self.0 + } +} + +#[derive(Debug)] +pub struct SecretKeySign([u8; LIB25519_SIGN_SECRETKEYBYTES]); +impl SecretKeySign { + pub fn new(k: [u8; LIB25519_SIGN_SECRETKEYBYTES]) -> Self { + Self(k) + } + + pub fn bytes(&self) -> [u8; LIB25519_SIGN_SECRETKEYBYTES] { + self.0 + } +} + +#[derive(Debug)] +pub struct SharedSecret([u8; LIB25519_DH_BYTES]); +impl SharedSecret { + pub fn new(k: [u8; LIB25519_DH_BYTES]) -> Self { + Self(k) + } + + pub fn bytes(&self) -> [u8; LIB25519_DH_BYTES] { + self.0 + } +} + +#[derive(Debug)] +pub struct SignedMsg(Vec); +impl SignedMsg { + pub fn new(k: Vec) -> Self { + Self(k) + } + + pub fn bytes(&self) -> &[u8] { + self.0.as_slice() + } + + pub fn len(&self) -> usize { + self.bytes().len() + } + + pub fn is_empty(&self) -> bool { + self.len() == 0 + } +} + +#[derive(Debug)] +pub struct Msg(Vec); +impl Msg { + pub fn new(k: Vec) -> Self { + Self(k) + } + + pub fn bytes(&self) -> &[u8] { + self.0.as_slice() + } + + pub fn len(&self) -> usize { + self.bytes().len() + } + + pub fn is_empty(&self) -> bool { + self.len() == 0 + } +} + +impl FromStr for Msg { + type Err = Box; + + fn from_str(s: &str) -> Result { + Ok(Msg::new(s.as_bytes().to_vec())) + } +} + +impl PartialEq for Msg { + fn eq(&self, other: &Msg) -> bool { + self.bytes() == other.bytes() + } +} + +/// 1. X25519 key generation: +/// +/// This function randomly generates Alice's secret key sk[0], sk[1], ..., +/// sk[lib25519_dh_SECRETKEYBYTES-1] and Alice's corresponding public key +/// pk[0], pk[1], ..., pk[lib25519_dh_PUBLICKEYBYTES-1]. +pub fn lib25519_dh_keypair() -> (PublicKeyDh, SecretKeyDh) { + let mut pk = [0u8; LIB25519_DH_PUBLICKEYBYTES]; + let mut sk = [0u8; LIB25519_DH_SECRETKEYBYTES]; + + unsafe { lib25519_dh_x25519_keypair(pk.as_mut_ptr(), sk.as_mut_ptr()) } + + (PublicKeyDh::new(pk), SecretKeyDh::new(sk)) +} + +/// 2. X25519 shared-secret generation: +/// +/// This function computes the X25519 secret k[0], k[1], ..., +/// k[lib25519_dh_BYTES-1] shared between Alice and Bob, given Bob's public +/// key pk[0], pk[1], ..., pk[lib25519_dh_PUBLICKEYBYTES-1] and Alice's +/// secret key sk[0], sk[1], ..., sk[lib25519_dh_SECRETKEYBYTES-1]. +/// +/// lib25519_dh_PUBLICKEYBYTES, lib25519_dh_SECRETKEYBYTES, and +/// lib25519_dh_BYTES are guaranteed to be 32, but callers wishing to allow +/// easy substitution of other DH systems should not rely on this guarantee. +pub fn lib25519_dh(pk: &PublicKeyDh, sk: &SecretKeyDh) -> SharedSecret { + let mut s = [0u8; LIB25519_DH_SECRETKEYBYTES]; + unsafe { lib25519_dh_x25519(s.as_mut_ptr(), pk.bytes().as_ptr(), sk.bytes().as_ptr()) } + SharedSecret::new(s) +} + +/// 3. Ed25519 key generation: +/// +/// This function randomly generates a secret key sk[0], sk[1], ..., +/// sk[lib25519_sign_SECRETKEYBYTES-1] and a corresponding public key +/// pk[0], pk[1], ..., pk[lib25519_sign_PUBLICKEYBYTES-1]. +/// +/// lib25519_sign_PUBLICKEYBYTES is guaranteed to be 32, and +/// lib25519_sign_SECRETKEYBYTES is guaranteed to be 64, but callers wishing +/// to allow easy substitution of other signature systems should not rely on +/// these guarantees. +pub fn lib25519_sign_keypair() -> (PublicKeySign, SecretKeySign) { + let mut pk = [0u8; LIB25519_SIGN_PUBLICKEYBYTES]; + let mut sk = [0u8; LIB25519_SIGN_SECRETKEYBYTES]; + + unsafe { lib25519_sign_ed25519_keypair(pk.as_mut_ptr(), sk.as_mut_ptr()) } + + (PublicKeySign::new(pk), SecretKeySign::new(sk)) +} + +/// 4. Ed25519 signing: +/// +/// This function signs a message m[0], ..., m[mlen-1] using the signer's +/// secret key sk[0], sk[1], ..., sk[lib25519_sign_SECRETKEYBYTES-1], puts +/// the length of the signed message into smlen, and puts the signed message +/// into sm[0], sm[1], ..., sm[smlen-1]. +/// +/// The maximum possible length smlen is mlen+lib25519_sign_BYTES. The caller +/// must allocate at least mlen+lib25519_sign_BYTES for sm. +/// +/// lib25519_sign_SECRETKEYBYTES is guaranteed to be 64, lib25519_sign_BYTES +/// is guaranteed to be 64, and signed messages are always exactly 64 bytes +/// longer than messages, but callers wishing to allow easy substitution of +/// other signature systems should not rely on these guarantees. +pub fn lib25519_sign(sk: &SecretKeySign, msg: &Msg) -> SignedMsg { + let mut sm = vec![0u8; msg.len() + LIB25519_SIGN_BYTES]; + let mut smlen = sm.len() as i64; + let mlen = msg.len() as i64; + unsafe { + lib25519_sign_ed25519( + sm.as_mut_ptr(), + &mut smlen, + msg.bytes().as_ptr(), + mlen, + sk.bytes().as_ptr(), + ) + } + SignedMsg::new(sm) +} + +/// 5. Ed25519 signature verification and message recovery: +/// +/// This function verifies the signed message in sm[0], ..., sm[smlen-1] +/// using the signer's public key pk[0], pk[1], ..., +/// pk[lib25519_sign_PUBLICKEYBYTES-1]. This function puts the length of the +/// message into mlen and puts the message into m[0], m[1], ..., m[mlen-1]. +/// It then returns 0. +/// +/// The maximum possible length mlen is smlen. The caller must allocate at +/// least smlen bytes for m (not just some guess for the number of bytes +/// expected in m). +/// +/// If the signature fails verification, lib25519_sign_open instead returns +/// -1. It also sets mlen to -1 and clears m[0], m[1], ..., m[smlen-1], but +/// callers should note that other signature software does not necessarily +/// do this; callers should always check the return value. +/// +/// lib25519_sign_PUBLICKEYBYTES is guaranteed to be 32, but callers wishing +/// to allow easy substitution of other signature systems should not rely on +/// this guarantee. +pub fn lib25519_sign_open(pk: &PublicKeySign, sm: &SignedMsg) -> Msg { + let mut m = vec![0u8; sm.len()]; + let mut mlen = 0; + let smlen = sm.len() as i64; + + let result = unsafe { + lib25519_sign_ed25519_open( + m.as_mut_ptr(), + &mut mlen, + sm.bytes().as_ptr(), + smlen, + pk.bytes().as_ptr(), + ) + }; + + debug_assert!(result == 0); + + m.truncate(mlen as usize); + + Msg::new(m) +} + +#[cfg(test)] +mod test { + use crate::bindings::*; + use std::str::FromStr; + + #[test] + fn lib25519_dh_keypair() { + let (pk, _sk) = crate::lib25519_dh_keypair(); + assert_ne!(pk.bytes(), [0u8; LIB25519_DH_PUBLICKEYBYTES]) + } + + #[test] + fn lib25519_dh() { + let (pk, sk) = crate::lib25519_dh_keypair(); + let s = crate::lib25519_dh(&pk, &sk); + assert_ne!(s.bytes(), [0u8; LIB25519_DH_PUBLICKEYBYTES]) + } + + #[test] + fn lib25519_sign_keypair() { + let (pk, _sk) = crate::lib25519_sign_keypair(); + assert_ne!(pk.bytes(), [0u8; LIB25519_DH_PUBLICKEYBYTES]) + } + + #[test] + fn lib25519_sign_open() { + let (pk, sk) = crate::lib25519_sign_keypair(); + let msg = crate::Msg::from_str("super secret message").unwrap(); + let sm = crate::lib25519_sign(&sk, &msg); + assert_eq!(sm.bytes().len(), msg.len() + LIB25519_SIGN_BYTES); + assert_ne!(sm.bytes(), vec![0u8; msg.len() + LIB25519_SIGN_BYTES]); + + let omsg = crate::lib25519_sign_open(&pk, &sm); + assert_eq!(omsg, msg) + } +}